国土安全第二季床:C语言问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 17:51:53
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt=0 ;
void jsVal()
{int i,j,q;
int 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=i+1;j<cnt;j++)
if(b[i]<b[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);
}

这个是我自己编的
帮我看看是哪错了
谢谢了
并且写一下改正的方法
void jsVal()
{int i,j,q;
int 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=i+1;j<cnt;j++)
if(b[i]<b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;
}
}

你这个程序代码中,变量名起的有点混乱啊!
在void jsVal()函数中,整型变量名b与全局变量数组b[],在名称上有冲突.
希望在以后的编程中,你能好好地给变量命名.
这是我稍做改动的程序(我试过了,可以运行了):
#include <stdio.h>

#define MAX 200

int a[MAX], b[MAX], cnt=0 ;

void readDat()
{
int i ;
FILE *fp ;
if((fp = fopen("IN1.DAT", "r"))==NULL)
{
printf("Cannot open file.");
return;
}
for(i = 0 ; i <MAX ; i++) fscanf(fp, "%d", &a[i]) ;
fclose(fp) ;
}
void jsVal()
{int i,j,q;
int c,s,g,k;
for(i=0;i<MAX;i++)
{q=a[i]/1000;
c=a[i]/100%10;
s=a[i]%100/10;
g=a[i]%10;
if(q==c&&c==s&&s==g&&g==q&&q%2==0)
b[cnt++]=a[i];
}
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]<b[j])
{k=b[i];
b[i]=b[j];
b[j]=k;
}
}
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 ;
if((fp = fopen("OUT1.DAT", "w"))==NULL)
{
printf("Cannot open file.");
return;
}
fprintf(fp, "%d\n", cnt) ;
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ;
fclose(fp);
}

晕了,你哪里改了!~