詹建俊风景:C语言问题

来源:百度文库 编辑:高校问答 时间:2024/04/28 15:37:05
jsval函数的功能是:
如果4位数的各位上的数字均是2或4或6或8或0,
统计出满足此条件的数的个数cnt
并把这些数按照大到小的顺序存入数组B中
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt=0 ;
void jsVal()
{int i,j,q,b,s,g,k;
for(i=0;i<200;i++)
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]%100/10;
g=a[i]%10;
if(q==b&&b==s&&s==g&&g==q&&q%2==0)
b[cnt++]=a[i];
}
for(i=0,i<cnt-1;i++)
for(j=1;j<cnt;j++)
{k=b[i];
b[i]=b[j];
b[j]=k;
}
}
void readDat()
{
int i ;
FILE *fp ;
fp = fopen("IN1.DAT", "r") ;
for(i = 0 ; i <MAX ; i++) fscanf(fp, "%d", &a[i]) ;
fclose(fp) ;
}
main()
{
int i ;
readDat() ;
jsVal() ;
printf("满足条件的数=%d\n", cnt) ;
for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]);
printf("\n") ;
writeDat() ;
}
writeDat()
{
FILE *fp ;
int i ;
fp = fopen("OUT1.DAT", "w") ;
fprintf(fp, "%d\n", cnt) ;
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ;
fclose(fp);
}

jsbal函数是我编的
void jsVal()
{int i,j,q,b,s,g,k;
for(i=0;i<200;i++)
{q=a[i]/1000;
b=a[i]/100%10;
s=a[i]%100/10;
g=a[i]%10;
if(q==b&&b==s&&s==g&&g==q&&q%2==0)
b[cnt++]=a[i];
}
for(i=0,i<cnt-1;i++)
for(j=1;j<cnt;j++)
{k=b[i];
b[i]=b[j];
b[j]=k;
}
}
帮我看看是哪错了
谢谢了

没怎么看你的程序
觉得第二句
for(i=0,i<cnt-1;i++)
for(j=i+1;j<cnt-1;j++)
{k=b[i];
b[i]=b[j];
b[j]=k;

稍微看了下:

if(q==b&&b==s&&s==g&&g==q&&q%2==0)
建议改成 if(q % 2 == 0 && q == b && b == s && s == g)
可以少比较一些,不过这个小程序应该每太大关系:)

for语句有一个语法错误“,->;”

s = a[i] / 10 % 10;