#include<stdio.h>
#define N 100
void main(void)
{
int i=0,j=0,n=0,t=0;
int a[N];
printf("請輸入要輸入數字的個數 \n\r");
scanf("%d",&n);
do
{
printf("請輸入數字: \n");
scanf("%d",&a[i]);
i++;
}
while(a[i-1]>=0) ;
for(i=1;i<n;i++) //變數i代表比較的趟數
for(j=1;j<n+1-i;j++)//變最j代表每趟兩兩比較的次數
if(a[j]>a[j+1])
{
t=a[j]; //產利用中間變童實作兩值互換
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后的順序是:\n");
for(i=3;i<=n;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
這個是一個陣列中的元素排序輸出的問題 輸出結果時第一個字符總是消失不見
結果:
請輸入要輸入數字的個數
5
請輸入數字:
5
請輸入數字:
4
請輸入數字:
3
請輸入數字:
2
請輸入數字:
-1
排序后的順序是:
2 3 4
Press any key to continue
uj5u.com熱心網友回復:
for(i=3;i<=n;i++)為什么要從3開始?不從0開始uj5u.com熱心網友回復:
#include<stdio.h>
#define N 100
//void main(void)
int main(void)
{
int i=0,j=0,n=0,t=0;
int a[N];
printf("請輸入要輸入數字的個數 \n\r");
scanf("%d",&n);
#if 1
while (i < n) {
printf("請輸入數字: \n");
scanf("%d",&a[i]);
if (a[i] < 0)
break;
i++;
}
for (i = 0; i < n; i++)
for (j = 0; j < n - i -1; j++)
if (a[j] > a[j+1]) {
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
printf("排序后的順序是:\n");
for (i = 0; i < n; i++)
printf("%5d",a[i]);
#else
/*
do
{
printf("請輸入數字: \n");
scanf("%d",&a[i]);
i++;
}
while(a[i-1]>=0) ;
*/
for(i=1;i<n;i++) //變數i代表比較的趟數
for(j=1;j<n+1-i;j++)//變最j代表每趟兩兩比較的次數
if(a[j]>a[j+1])
{
t=a[j]; //產利用中間變童實作兩值互換
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后的順序是:\n");
for(i=3;i<=n;i++)
printf("%5d",a[i]);
#endif
printf("\n");
return 0;
}
供參考~
建議用while代替do ... while,因為如果n輸入的是0,那么會是什么結果?
排序也有問題,
輸出也有問題,對比代碼找出自己的問題吧
uj5u.com熱心網友回復:
程式員數數要從0開始不是1
uj5u.com熱心網友回復:
謝謝uj5u.com熱心網友回復:
大一剛剛學 有點懵逼
uj5u.com熱心網友回復:
當時從0開始結果更不靠譜 索性找了個相對靠譜的數字3哈哈哈轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/54997.html
標籤:C語言
下一篇:大佬們求助,使用C語言做出這道題
