永发信息网

大家看看c程序那这个错了吧?

答案:5  悬赏:20  手机版
解决时间 2021-07-20 05:21
  • 提问者网友:萌卜娃娃
  • 2021-07-19 21:27

main ( )

{ int a [11];

int i, j, t,n;

printf (" please input 11 n~:\n ");

for (i=1; i<=n; i++)

scanf(" %d ", &a[i]);

printf(" \n ");

for (i=1; i<=9; i++)

for (j=i+1; j<=10; j++)

if (a[i]>a[j])

{ t=a[i]; a[i]=a[j]; a[j]=t;}

printf (" the sorted numbers: \n ");

for (i=1; i<=10; i++)

printf(" %d ", a[i];

}

上面那个程序中第五行怎么确定n的值啊,还有第8行为什么是i《=9啊?

最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-07-19 22:50

#include<stdio.h>


int main ( )


{ int a [11];


int i, j, t,n;


printf (" please input 11 n~:\n ");


scanf("%d",&n);//注意n的大小


for (i=1; i<=n; i++)


scanf(" %d ", &a[i]);


printf(" \n ");


for (i=1; i<=9; i++)


for (j=i+1; j<=10; j++)


if (a[i]>a[j])



{ t=a[i]; a[i]=a[j]; a[j]=t;}


printf (" the sorted numbers: \n ");


for (i=1; i<=10; i++)


printf(" %d ", a[i];)


return 0;


}


这样保证行了。

全部回答
  • 1楼网友:轮獄道
  • 2021-07-20 02:42

您既然定义a[11],那么最大的a[n]=a[10],a[11]无意义。

所以n=10。

程序的后半部分是排序,所以,i=9时,表示的是倒数第二个数。

  • 2楼网友:逐風
  • 2021-07-20 01:41

//5行

for (i=1; i<=n; i++)

应该改为

for (i=0; i<11; i++)

----------

//8行

for (i=1; i<=9; i++)

应该改为

for (i=0; i<=9; i++)

第八行开始是选择排序的算法

//14行

printf(" %d ", a[i];

少个右括号

  • 3楼网友:毛毛
  • 2021-07-20 00:14

以下程序通过测试.

#include <stdio.h>

int main() { int a[11]; int i, j, t, n; //要用英文半角标点.. 注意t后面的那个逗号. printf (" please input 11 n~:\n ");

for (i=1; i<=10; i++) //数组长度为11. 所以最大下标为10. scanf("%d", &a[i]); printf(" \n "); for (i=1; i<=9; i++) // 冒泡法比较a[i]和a[j]. 最后只要比较a[9]和a[10]. for (j=i+1; j<=10; j++) if (a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } printf (" the sorted numbers: \n "); for (i=1; i<=10; i++) printf(" %d ", a[i]); //缺少右); return 0; }

  • 4楼网友:西岸风
  • 2021-07-19 23:51

n=10( i=1,数组有10个数啊,之所以a【11】是习惯,键盘输入10数即可,按回车键)

i<=9,因为i=9时,j=i+1=10是极限了

还有你的程序n=10要先赋值才行,要不然程序出错

int i, j, t,n=10;这样就行了

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯