C语言代码错误分析:数组下标和作用域问题
#include <stdio.h> int main() { int a[100],n,i,num=0;
for (i=0;i<=99;i++)
{
a[i]=i+1;
}
printf('Please select I number to be printed:');
scanf('%d',&n);
for (i=0;i<=n-1;i++)
{
num=num+a[i];
}
printf('The number is %d',num);
return 0;
}
这段代码有两个错误:
- 第一个错误是多了一个闭合的大括号 '}', 导致最后一个 printf 语句不在任何一个循环或条件语句的作用域内,会导致编译错误。正确的代码应该是:
#include <stdio.h>
int main()
{
int a[100],n,i,num=0;
for (i=0;i<=99;i++)
{
a[i]=i+1;
}
printf('Please select I number to be printed:');
scanf('%d',&n);
for (i=0;i<=n-1;i++)
{
num=num+a[i];
}
printf('The number is %d',num);
return 0;
}
- 第二个错误是在第一个 for 循环中,数组
a
的下标应该从 0 开始,而不是从 1 开始。所以在赋值语句a[i]=i+1;
中,应该将i+1
改为i
。正确的代码应该是:
#include <stdio.h>
int main()
{
int a[100],n,i,num=0;
for (i=0;i<=99;i++)
{
a[i]=i;
}
printf('Please select I number to be printed:');
scanf('%d',&n);
for (i=0;i<=n-1;i++)
{
num=num+a[i];
}
printf('The number is %d',num);
return 0;
}

原文地址: http://www.cveoy.top/t/topic/86 著作权归作者所有。请勿转载和采集!