急!编的程序总是错误,看不懂什么意思
#include<stdio.h>#defineMAX200inta[MAX],b[MAX],cnt=0;voidjsVal(){inti,g,s,b,q,j;intab...
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
int i,g,s,b,q,j;
int ab,cd;
for(i=0;i<200;i++)
{
g=a[i]%10;
s=a[i]%100/10;
b= a[i]/100%10;
q =a[i]/1000;
if(q==0 || b==0)
continue;
ab= q*10+g;
cd=b*10+s;
if(ab%2==1&&cd%2==1&&(ab%5==0 || cd%5==0))
{b[cnt]=a[i];cnt++;}
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]<b[j])
{data=b[i];b[i]=b[j];b[j]=data;}
}
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 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);
}
void main()
{
int i;
readDat();
jsVal();
printf("满足条件的数=%d\n", cnt);
for (i=0; i<cnt; i++)
printf("%d ", b[i]);
printf("\n");
writeDat();
}
显示错误信息是:
--------------------Configuration: prog - Win32 Debug--------------------
Compiling...
prog.c
C:\WEXAM\35010001\prog.c(19) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(19) : error C2106: '=' : left operand must be l-value
C:\WEXAM\35010001\prog.c(24) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(24) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2065: 'data' : undeclared identifier
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2106: '=' : left operand must be l-value
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.
prog.obj - 11 error(s), 0 warning(s) 展开
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
int i,g,s,b,q,j;
int ab,cd;
for(i=0;i<200;i++)
{
g=a[i]%10;
s=a[i]%100/10;
b= a[i]/100%10;
q =a[i]/1000;
if(q==0 || b==0)
continue;
ab= q*10+g;
cd=b*10+s;
if(ab%2==1&&cd%2==1&&(ab%5==0 || cd%5==0))
{b[cnt]=a[i];cnt++;}
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]<b[j])
{data=b[i];b[i]=b[j];b[j]=data;}
}
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 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);
}
void main()
{
int i;
readDat();
jsVal();
printf("满足条件的数=%d\n", cnt);
for (i=0; i<cnt; i++)
printf("%d ", b[i]);
printf("\n");
writeDat();
}
显示错误信息是:
--------------------Configuration: prog - Win32 Debug--------------------
Compiling...
prog.c
C:\WEXAM\35010001\prog.c(19) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(19) : error C2106: '=' : left operand must be l-value
C:\WEXAM\35010001\prog.c(24) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(24) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2065: 'data' : undeclared identifier
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2106: '=' : left operand must be l-value
C:\WEXAM\35010001\prog.c(25) : error C2109: subscript requires array or pointer type
C:\WEXAM\35010001\prog.c(25) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.
prog.obj - 11 error(s), 0 warning(s) 展开
展开全部
主要有两个错误:
1. {data=b[i];b[i]=b[j];b[j]=data;}
变量data没有定义。
2. int a[MAX], b[MAX], cnt = 0;
定义了全局变量b[MAX].
int i,g,s,b,q,j;
在函数jsVal()里又定义了局部变量b;
全局变量b[MAX]被局部变量b覆盖。
if(b[i]<b[j])
{data=b[i];b[i]=b[j];b[j]=data;}
所以在jsVal()函数里的上面两句错误。b是int变量,而不是int数组。
应该给整形变量b,或者整形数组b[MAX]另起一个名子,同时为临时变量 data给出声明。
1. {data=b[i];b[i]=b[j];b[j]=data;}
变量data没有定义。
2. int a[MAX], b[MAX], cnt = 0;
定义了全局变量b[MAX].
int i,g,s,b,q,j;
在函数jsVal()里又定义了局部变量b;
全局变量b[MAX]被局部变量b覆盖。
if(b[i]<b[j])
{data=b[i];b[i]=b[j];b[j]=data;}
所以在jsVal()函数里的上面两句错误。b是int变量,而不是int数组。
应该给整形变量b,或者整形数组b[MAX]另起一个名子,同时为临时变量 data给出声明。
中智咨询
2024-08-28 广告
2024-08-28 广告
在当今竞争激烈的商业环境中,企业需要不断提高自身的竞争力,以保持市场份额和增加利润。通过人效提升,企业可以更有效地利用有限的资源,提高生产力和效益,从而实现盈利目标。中智咨询提供全方位的组织人效评价与诊断、人效提升方案等数据和管理咨询服务。...
点击进入详情页
本回答由中智咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询