试题1:
机试时间:9月23日15:30
机试试题:南开67(整数各位数字运算题)
下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT13.DAT中。
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输出数据函数writeDat()的内容。
答案内容:
void countValue()
{int i,thou,hun,ten,data;
for(i=1000;i<5000;i++)
{ thou=i/1000; hun=i%1000/100;
ten=i%100/10; data=i%10;
if(thou+hun==ten+data&&thou+hun==(data-thou)*10) {cnt++;sum+=i;}
}
}
试题2:
在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的组数作为函数jsSort() 的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
答案是
int jsSort()
{int i, j, cnt=0;
data ch;
for(i=0;i<200;i++)
if(aa.x2>aa.x1+aa.x3) bb[cnt++]=aa;
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(bb.x2+bb.x3<bb[j].x2+bb[j].x3) { ch=bb;bb=bb[j];bb[j]=ch;}
return cnt;
}
试题3:
请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:若输入17 5 则应输出:19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。
void num(int m,int k,int xx[])
{ int i,s=0;
for(i=m+1;k>0;i++)
if(isP(i)) { xx[s++]=i; k--;}
}