有沒有大佬幫忙看一下為什么改了這個(定義陣列)和(回圈條件)的順序就導致了程式錯誤啊

#include<stdio.h>
int main()
{
int a[]={0},n=0,i,c; //問題出處
printf("請輸入陣列長度:\n");
scanf("%d",&n);
printf("請依次輸入數字:\n");
for(i=1;i<=n;i++)
{
printf("\na[%d]=",i);
scanf("%d",&a[i]);
}
for(c=1;c<=n;c++)
{
for(i=1;i<n;i++)
{
if(a[i]<=a[i+1])
{
a[i]+=a[i+1];
a[i+1]=a[i]-a[i+1];
a[i]-=a[i+1];
}
}
}
for(i=1;i<=n;i++)
{
printf("%d\n",a[i]);
}
return 0;
}



uj5u.com熱心網友回復:
#include<stdio.h>
int main() {
int a[100+1]={0},n=0,i,c,t;
printf("請輸入陣列長度:\n");
scanf("%d",&n);
if (n<1 || 100<n) {
printf("陣列長度必須在1~100之間\n");
return -1;
}
printf("請依次輸入數字:\n");
for(i=1;i<=n;i++) {
printf("\na[%d]=",i);fflush(stdout);
scanf("%d",&a[i]);
}
for(c=1;c<n;c++) {
for(i=c+1;i<=n;i++) {
if(a[i]<=a[i+1]) {
t=a[i]; a[i]=a[i+1]; a[i+1]=t;
}
}
}
for(i=1;i<=n;i++) {
printf("%d\n",a[i]);
}
return 0;
}
uj5u.com熱心網友回復:
這個數值陣列不應該是可以不定義長度的嗎

這個會不會是系統不檢查溢位的問題?
uj5u.com熱心網友回復:
int a[]={0} 不能這樣定義陣列哦 陣列必須要有固定的長度uj5u.com熱心網友回復:
#include<stdio.h>
int main() {
int *a,n=0,i,c,t;
printf("請輸入陣列長度:\n");
scanf("%d",&n);
if (n<1 || 100000<n) {
printf("陣列長度必須在1~100000之間\n");
return -1;
}
a=new int[n+1];
printf("請依次輸入數字:\n");
for(i=1;i<=n;i++) {
printf("a[%d]=",i);fflush(stdout);
scanf("%d",&a[i]);
}
for(c=1;c<n;c++) {
for(i=c+1;i<=n;i++) {
if(a[c]<=a[i]) {
t=a[c]; a[c]=a[i]; a[i]=t;
}
}
}
for(i=1;i<=n;i++) {
printf("%d\n",a[i]);
}
delete[] a;
return 0;
}
// 請輸入陣列長度:
// 4
// 請依次輸入數字:
// a[1]=3
// a[2]=9
// a[3]=5
// a[4]=2
// 9
// 5
// 3
// 2
//
uj5u.com熱心網友回復:
大概看懂了,感謝!??
uj5u.com熱心網友回復:
但是數值陣列不是不一定要定義長度嗎?
uj5u.com熱心網友回復:
這個代碼寫的方式不敢茍同uj5u.com熱心網友回復:
哈哈萌新剛剛入門??
uj5u.com熱心網友回復:
你這種寫法陣列長度就只有1 只能存1個資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/229594.html
標籤:新手樂園
上一篇:求大佬幫忙
下一篇:GPS手機號定位JAVA代碼
