问题 问答题

试题要求如图10.8所示。

部分源程序内容如下:

#include<stdio.h>

#define MAX 200

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

void jsVal()

void readDat()

int i;

FILE *fp;

fp=fopen("K:\\k06\\35010008\\in.dat", "r");

for(i=0; i<MAX; i++) fscanf(fp, "%d", &a[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();

WriteDat()

FILE *fp;

int i;

fp=fopen("K:\\k06\\35010008\\out.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, gw, sw, be, qw, temp, j;

int a, b;

for(i=0; i<B00; i++)

{

gw=a[i]%A0;

sw=a[i]%A00/A0;

bw=a[i]%A000/A00;

qw=a[i]/A000;

a=A0 *gw+qw;

b=A0 *bw+sw;

if(a%B==A&&b%B==0)&&(a%I==0||b%I==0)&&(gw!=0&&bw!=0))

{

b[cnt]=a[i];

cnt++;

}

}

for(i=0;i<cnt-A; i++)

for(j=i+A; j<cnt; j++)

if(b[i]<b[j])

{

temp=b[i];

b[i]=b[j];

b[j]=temp;

}

}

解析:

此题先要求出每个四位数的个位、十位、百位、千位并按题目进行选择,满足要求的四位数将其放入b数组中,并对b数组进行排序,在此是用冒泡排序的思想进行排序的。注意在判断至少有一个能被9整除时的括号是不能少的,因为||的优先级比&&低。

单项选择题
单项选择题