1:小白鼠排隊
- 2022-12-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,你的本意是想定義幾個字元陣列,來裝這幾個老鼠的名字。但是,你只定義了一個字元陣列,說明只能裝一個名字,所以是不行的。建議定義成二維的字元,如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——) {
上一篇:圓環鴿與元寶鴿可以配對嗎?
下一篇:訴說算是嘮叨的近義詞嗎