c語言剛學習入門,什么都不懂,如果問題太蠢,大家不要建議
我寫了一個輸入一串數字,排序后輸出的代碼,編譯成功但我自己用數字試卻沒辦法得到正確結果,不知道哪里除了問題,另外for回圈賦值陣列時不知道鍵盤要怎么操作,就是空格和回車需不需要呢
#include <stdio.h>
int main()
{
int m,i,j;
scanf("%d",&m);
int a[m];
for(i=0;i<m;i++);
{
scanf ("%d",&a[i]);
}
for(j=m-1;j>0;j--);
{
if(a[j]<a[j-1])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
for(j=0;j<m;++j)
printf("%d ",a[j]);
return 0;
}



uj5u.com熱心網友回復:
要用兩個回圈排序,可以單補除錯一下應該可以發現問題
uj5u.com熱心網友回復:
程式有兩個scanf,之間應該加一個讀取回車的操作。比如:getchar()
或者:
char c;
scanf("%c",&c);
uj5u.com熱心網友回復:
#include <stdio.h>
int main()
{
int m, i, j;
scanf("%d", &m);
int *a = new int[m];//-------做好使用動態分配空間-----------
for (i = 0; i<m; i++)//-------分號去掉---------
{
scanf("%d", &a[i]);
}
for (i = 0; i < m - 1; ++i)//--------------分號去掉----------
{
for (j =0; j <m-1-i; ++j)//------------回圈修改--------
{
if (a[j] < a[j +1])//--------實際上就是冒泡排序-----------
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (j = 0; j<m; ++j)
printf("%d ", a[j]);
delete[] a;//------------釋放記憶體--------------
return 0;
}
VS2015 C++環境
uj5u.com熱心網友回復:
對于您提到的“for回圈賦值陣列時不知道鍵盤要怎么操作,就是空格和回車需不需要呢”
這個問題,實際上空格和回車都是可以的


對于scanf()的使用方法,請參考《scanf()函式的用法》
希望能夠幫到您!
uj5u.com熱心網友回復:
感謝你的耐心解答!uj5u.com熱心網友回復:
感謝你的耐心解答!
uj5u.com熱心網友回復:
scanf("%d",&m);int a[m];
C語言不支持這種陣列定義,
int *a = new int[m]; 這是c++的寫法,c用malloc
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64582.html
標籤:C語言
上一篇:C++鏈表問題,輸出是亂碼
下一篇:用戶需要錄入每名同學的三門成績和該同學姓名存盤在陣列中,最終按照平均成績從高到底排列,并將包括姓名,每門成績和平均成績等情況,按照排列順序輸出。
