
下面一道C语言题有错误,不知道哪错了,请教高手
#include<stdio.h>inta[300],b[300],cnt=0;voidreaddat();voidwritedat();voidjsvalue(){in...
#include<stdio.h>
int a[300],b[300],cnt=0;
void readdat();
void writedat();
void jsvalue()
{
int temp,a,b,c,d,i,j;
for(i=0;i<6;i++)
{
a=a[i]/1000;
b=(a[i]-1000*a)/100;
c=(a[i]-1000*a-100*b)/10;
d=a[i]%10;
if(a+d==b+c)
{
b[cnt]=a[i];
cnt=cnt+1;
}
}
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 main()
{
int i;
readdat();
jsvalue();
writedat();
printf("cnt=%d\n",cnt);
for(i=0;i<cnt;i++)
printf("b[%d]=%d\n",i,b[i]);
}
void readdat()
{
FILE*fp;
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<6;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);
}
现在编译成功了,但运行不了,怎么回事 展开
int a[300],b[300],cnt=0;
void readdat();
void writedat();
void jsvalue()
{
int temp,a,b,c,d,i,j;
for(i=0;i<6;i++)
{
a=a[i]/1000;
b=(a[i]-1000*a)/100;
c=(a[i]-1000*a-100*b)/10;
d=a[i]%10;
if(a+d==b+c)
{
b[cnt]=a[i];
cnt=cnt+1;
}
}
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 main()
{
int i;
readdat();
jsvalue();
writedat();
printf("cnt=%d\n",cnt);
for(i=0;i<cnt;i++)
printf("b[%d]=%d\n",i,b[i]);
}
void readdat()
{
FILE*fp;
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<6;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);
}
现在编译成功了,但运行不了,怎么回事 展开
4个回答
展开全部
#include<stdio.h>
int a[300],b[300],cnt=0;
void readdat();
void writedat();
void jsvalue()
{
int temp,ac,bc,cc,dc,i,j;//这里的定义与全局变量中的定义重名了,改掉就可以编译成功了,但是有内存泄露哦
for(i=0;i<6;i++)
{
ac=a[i]/1000;
bc=(a[i]-1000*ac)/100;
cc=(a[i]-1000*ac-100*bc)/10;
dc=a[i]%10;
if(ac+dc==bc+cc)
{
b[cnt]=a[i];
cnt=cnt+1;
}
}
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 main()
{
int i;
readdat();
jsvalue();
writedat();
printf("cnt=%d\n",cnt);
for(i=0;i<cnt;i++)
printf("b[%d]=%d\n",i,b[i]);
}
void readdat()
{
FILE*fp;
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<6;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);
}
int a[300],b[300],cnt=0;
void readdat();
void writedat();
void jsvalue()
{
int temp,ac,bc,cc,dc,i,j;//这里的定义与全局变量中的定义重名了,改掉就可以编译成功了,但是有内存泄露哦
for(i=0;i<6;i++)
{
ac=a[i]/1000;
bc=(a[i]-1000*ac)/100;
cc=(a[i]-1000*ac-100*bc)/10;
dc=a[i]%10;
if(ac+dc==bc+cc)
{
b[cnt]=a[i];
cnt=cnt+1;
}
}
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 main()
{
int i;
readdat();
jsvalue();
writedat();
printf("cnt=%d\n",cnt);
for(i=0;i<cnt;i++)
printf("b[%d]=%d\n",i,b[i]);
}
void readdat()
{
FILE*fp;
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<6;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);
}
展开全部
printf("c=%d,z=%ld\n".c.z);改为printf("c=%d,z=%ld\n",c,z);后面是用逗号 还有直接用main()系统认为是返回int型,就缺少一个return语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
H VRA VYRV ,AR V
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询