2005年4月三级网络技术上机试题汇总
下列程序prog1.c的功能是:计算出自然数six和nine,它们满足的条件是six+six+six=nine+nine的个数cnt以及满足此条件所有的six与nine的和sum。请编写函数countvalue()实现程序的要求,最后调用函数writedat()把结果cnt和sum,输出到文件out15.dat中。
其中的s,i,x,n,e各代表一个十进制数字。
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输出数据函数writedat()的内容。
#include <stdio.h>
int cnt,sum;
void countvalue()
{ int s,i,x,n,e,six,nine;
for(s=1;s<10;s++)
for(i=0;i<10;i++)
for(x=0;x<10;x++)
for(n=1;n<10;n++)
for(e=0;e<10;e++)
{ six=s*100+i*10+x;
nine=n*1000+i*100+n*10+e;
if(3*six==2*nine)
{ cnt++;sum+=six+nine;}
}
}
void main()
{
cnt=sum=0;
countvalue();
printf('满足条件的个数=%d\n',cnt);
printf('满足条件所有的six与nine的和=%d\n',sum);
writedat();
}
writedat()
{
file *fp;
fp=fopen('out15.dat','w');
fprintf(fp,'%d\n%d\n',cnt,sum);
fclose(fp);
}
另一种经典解法:
void countvalue()
{ int i;
for(i=666;i<=999;i=i+2)
if((i/10%10==(3*i/2)/100%10)&&((3*i/2)/1000==(3*i/2)%100/10))
{cnt++;sum+=i+3*i/2;}
}
运算结果为:
满足条件的个数=4
满足条件所有的six与nine的和=9430
某网友:
抽到第一题
题目1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。请编写函数num(int m,int k,int xx[])实现函数的要求 ,最后调用函数readwritedat()把结果输出到文件out.dat中。
例如:若输入17,5,则应输出:19,23,29,31,37。
注意:部分源程序已给出。
请勿改动主函数main()和函数readwritedat()的内容void num(int m,int k,int xx[])
{int data=m+1;
int half,n=0,i;
while(1)
{half=data/2;for(i=2;i<=half;i++)
if(data%i==0)break;
if(i>half)
{xx[n]=data;n++;}
if(n>=k)break;
data++;
}
}