2018.3 江苏省计算机等级考试 C语言 编程题答案

时间:2022-05-05 07:49:50

题目要求:给定一个数字范围,输出满足这些条件:

1.能被3整除;

2.包含数字5,

将满足的数字放在特定的数组里输出、输出这些数里5出现的个数、数字的个数。

想起来有点伤心,本来很简单的题,考试的时候程序写错一行,结果成了死循环,最后还没找出来错,下来以后才想起来。以后必须长点心。

代码:

#include<stdio.h>
int flag(int x0,int x1,int b[],int *p);
int main(){
int i,intnumber,fivenumber;//数字的个数、5的个数
int b[301];//b存放满足的数字
FILE *fp;
fp=fopen("myfile.out","w"); intnumber=flag(200,300,b,&fivenumber);
for(i=0;i<intnumber;i++){
printf("%d ",b[i]);//具体的输出要求忘了,大致是这样
fprintf(fp,"%d ",b[i]);
}
printf("5的个数:%d\n",fivenumber);
fprintf(fp,"%d\n",fivenumber);
fprintf(fp,"考号");
fclose(fp);

return 0;
}
int flag(int x0,int x1,int b[],int *p){
int intnumber,wei,flg,i,j,temp;
intnumber=*p=flg=0;
for(i=x0;i<=x1;i++){
flg=0;
if(i%3==0){
temp=i;
wei=temp%10;
temp=temp/10;//当时写成了i/10,所以成了死循环
for(j=0;wei>0;j++){
if(wei==5){
flg=1;
(*p)++;
}
wei=temp%10;
temp=temp/10;//同上面一样
}
}
if(flg==1) {//这段代码不要写错层,要写在遍历数字的这层
b[intnumber]=i;
intnumber++;
}
}
return intnumber;
}