1:小白鼠排隊

  • 作者:由 匿名使用者 發表于 遊戲
  • 2022-12-22

1:小白鼠排隊匿名2016.10.22 回答

定義  輸入 排序 都有些問題

尤其是排序 你的做法是交換帽子 不是排老鼠

修改後如下

可以看註釋

#include #include int main() { struct shu { int t; char y[11]; }shus[1000],t;//最多1000 int N,i; scanf(“%d\n”,&N); for(i=0;i scanf(“%d %s”,&shus[i]。t,shus[i]。y);//scanf中不需要\n int j,k; for(j=N-1;j>0;j——) { for(k=0;k { if(shus[k]。t { t=shus[k];//整個結構體整體排序 shus[k]=shus[k+1]; shus[k+1]=t; } } } int n; for(n=0;n printf(“%s\n”,shus[n]。y); return 0; }

1:小白鼠排隊匿名2013.12.25 回答

我發現了以下幾個問題:

1,你的本意是想定義幾個字元陣列,來裝這幾個老鼠的名字。但是,你只定義了一個字元陣列,說明只能裝一個名字,所以是不行的。建議定義成二維的字元,如a[100][100],這樣你就能裝最多100個老鼠的名字了。

2,字串的末尾是需要有‘\0’作為結束標誌的,而你的程式沒有這一項,這也是不可以的,建議在定義的時候就初始化成0。

3,q=color[i];

color[i]=color[i+1];

color[i+1]=q;

這個地方,說明你對字串這一塊還不是很瞭解,建議找相關書籍看一下。字串是不能直接這樣相互複製的,需要呼叫strcpy函式。而且,你定義的q只是一個簡單的字元,不是字串,字串是不能直接賦值給字元的,所以這個地方不對。q要定義字串,比如q[100]。

由於我是定義了二維陣列,所以此時color[i]不是第i個老鼠的名字,而是這個存放老鼠名字的首地址。

4,建議在輸入前輸入提示符,這樣便於別人閱讀和執行。我把我改的給你,你看看,也許還有問題,請你自己完善吧。。。

有什麼不懂的,請追問。

#include

#include

#include

int main()

{ int a[100],p;

char color[10][100]={0},q[100]={0};

int n,i,k;

printf(“how many numbers do you want to put in?\n”);

scanf(“%d”,&n);

printf(“please input the numbers and names:\n”);

for(i=0;i

{

scanf(“%d %s”,&a[i],color[i]);

//gets(color[i]);

}

for(k=n-1;k>0;k——)

{

for(i=0;i

{

if(a[i]

{ p=a[i];

a[i]=a[i+1];

a[i+1]=p;

strcpy(q,color[i]);

strcpy(color[i],color[i+1]);

strcpy(color[i+1],q);

}

}

}

for(i=0;i

{

printf(“%d %s\n”,a[i],color[i]);

}

return 0;

}

Top