c语言题,求解

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:27:45
#define SIZE 4
main()
{ int n[SIZE]={8,3,4,1};
int i,j;
for (i=0;i<SIZE;i++);

{printf("%d",n[i]);
for (j=1;j<=n[i];j++) printf("*");
printf("*");
}
}
这是个程序怎么编译不过去,并且总是一直显示*
原来的例子是:
#define SIZE 4
main()
{ int n[SIZE]={8,3,4,1};
int i,j;
for (i=0;i<SIZE;i++);

{printf{"%d",n[i]};
for (j=1;j<=n[i];j++) printf("*");
printf("*");
}
}
就是第8行括弧改为大括号。
多了个;为什么就一直显示*
是什么原因

。。。。。。
“for (i=0;i<SIZE;i++);”
末尾加了个分号,怎么过得了

一直显示*,说明程序已经运行了啊,不是编译不过,而是程序逻辑有问题。
#define SIZE 4
main()
{ int n[SIZE]={8,3,4,1};
int i,j;
for (i=0;i<SIZE;i++); /* 这里这个分号应该是多余的,删掉 */
{printf("%d",n[i]);
for (j=1;j<=n[i];j++) printf("*");
printf("*"); /*这里我猜想你是想换行吧,用printf("\n");*/
}
}
--------------
多了分号
for (i=0;i<SIZE;i++);
就是
for (i=0;i<SIZE;i++)
{
;
}
循环结束之后i=4,后面那个printf("%d",n[i]); 就只执行一次了,不属于循环语句了

这个程序不是因为多了一个 ; 就一直显示*
而是n[4] 这个数组越界了,这个n[4] 的值很大的,你可以把
for (j=1;j<=n[i];j++) printf("*");
printf("*");
注释了,看看输出的n[4] 是多少
所以这个时候 j 就一直 ++ ,所以就会一直打印*