请帮我看看以下程序错误在哪,老是出现相同的错误。。不知道问题出在哪里。。
#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidwriteDat();voidjsVal(){inti,...
#include<stdio.h>
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat();
void jsVal()
{
int i,j,b,c,d,e,temp;
for(i=0;i<200;i++)
{b=a[i]/1000;
c=a[i]%1000/100;
d=a[i]%100/10;
e=a[i]%10;
if(b%2==1 && c%2==1 && d%2==1 && e%2==1)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]<b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
void readDat()
{
int i;
FILE *fp;
fp=fopen("IN.DAT","r");
for(i=0;i<MAX;i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();
printf("满足条件的数=%d\n",cnt);
for(i=0;i<cnt;i++)
printf("%d\n",b[i]);
printf("\n");
writeDat();
}
void writeDat()
{
FILE *fp;
int i;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n",cnt);
for(i=0;i<cnt;i++)
fprintf(fp,"%d\n",b[i]);
fclose(fp);
}
F:\WEXAM\35000001\PROG1.C(15) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(15) : error C2106: '=' : left operand must be l-value
F:\WEXAM\35000001\PROG1.C(21) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(21) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(22) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(23) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(23) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(23) : error C2106: '=' : left operand must be l-value
F:\WEXAM\35000001\PROG1.C(24) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(24) : error C2106: '=' : left operand must be l-value
执行 cl.exe 时出错.
题目。 展开
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void writeDat();
void jsVal()
{
int i,j,b,c,d,e,temp;
for(i=0;i<200;i++)
{b=a[i]/1000;
c=a[i]%1000/100;
d=a[i]%100/10;
e=a[i]%10;
if(b%2==1 && c%2==1 && d%2==1 && e%2==1)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]<b[j])
{temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
void readDat()
{
int i;
FILE *fp;
fp=fopen("IN.DAT","r");
for(i=0;i<MAX;i++)
fscanf(fp,"%d",&a[i]);
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();
printf("满足条件的数=%d\n",cnt);
for(i=0;i<cnt;i++)
printf("%d\n",b[i]);
printf("\n");
writeDat();
}
void writeDat()
{
FILE *fp;
int i;
fp=fopen("out.dat","w");
fprintf(fp,"%d\n",cnt);
for(i=0;i<cnt;i++)
fprintf(fp,"%d\n",b[i]);
fclose(fp);
}
F:\WEXAM\35000001\PROG1.C(15) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(15) : error C2106: '=' : left operand must be l-value
F:\WEXAM\35000001\PROG1.C(21) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(21) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(22) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(23) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(23) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(23) : error C2106: '=' : left operand must be l-value
F:\WEXAM\35000001\PROG1.C(24) : error C2109: subscript requires array or pointer type
F:\WEXAM\35000001\PROG1.C(24) : error C2106: '=' : left operand must be l-value
执行 cl.exe 时出错.
题目。 展开
4个回答
2012-02-16
展开全部
在主函数中b定义的是int,在函数外b定义为数组,
换一个变量名就可以了
换一个变量名就可以了
展开全部
你在jsVal()里面重新声明了 int b,这时候 jsVal()里面的b就不是数组了,你还用b[cnt]=a[i];这种当然错啦。 你把数组名改一下吧,不建议用a阿b阿这种,用点有明确意义的阿,比如apple[]。。。举个例子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第6、14、17、18花括号配对后,i、j没有定义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
b不是数组, 你当成数组来用了.
追问
b是数组啊。一开始就定义了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询