请大家帮我看下下面的C语言怎么出错啊!!

来源:百度知道 编辑:UC知道 时间:2024/05/16 00:54:16
#include <stdio.h>
#define MAX 5
int a[MAX]={2468,9875,8440,2842,6894}, b[MAX], cnt = 0;
main()
{
int i,q,b,s,g,k;
for(i=0;i<5;i++)
{
q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if(q%2==0&&b%2==0&&s%2==0&&g%2==0)
{
b[cnt]=a[i];//为什么这里错了呢?

cnt++;
}
}
printf("%d",cnt);

}

main()函数外的int b[MAX]和main()函数内的int b使用了相同的变量名,所以在main()函数中的b一律代表此函数内定义的整型变量,而不是外部的整型数组。

作如下修改:

#include <stdio.h>
#define MAX 5
int a[MAX]={2468,9875,8440,2842,6894}, p[MAX], cnt=0;/*将原来的b[MAX]改为p[MAX]*/
main()
{
int i,q,b,s,g,k;
for(i=0;i<5;i++)
{
q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10;
if(q%2==0&&b%2==0&&s%2==0&&g%2==0)
{
p[cnt]=a[i];/*做相应更改*/
cnt++;
}
}
printf("%d",cnt);

}

b[cnt]=a[i];//为什么这里错了呢?

你这里的b是你声明的int i,q,b,s,g,k; 中的b,这里的b不是数组,所以出错

改正:
1.把b[MAX]改为bArr[MAX];
2.把b[cnt]=a[i];改为bArr[cnt]=a[i];

改好的程序如下:

#include <stdio.h>
#define MAX 5
int a[MAX]={2468,9875,8440,2842,6894}, bArr[MAX], cnt = 0;
main()
{
int i,q,b,s,g,k;
for(i=0;i<5;i++)
{
q=a[i]/1000;
b=a[i]/100%10;
s=a[i]/10%10;
g=a[i]%10; <