2009年秋 二级 C语言 上机试卷(试卷代号C04) 答案
一、改错题(16分) 【程序功能】
将一个实数转换为二进制科学计数法表示并输出。
二进制科学记数法是指将一个绝对值大于2或小于1的实数记为a×2?n形式,其中尾数a是用二进制表示的实数且1≤|a|? 2,指数中的n是用二进制表示的整数。例如:0.125的二进制科学计数法表示是1.0?2 ? 11 。
若用B代表基数2,则a×2?n可表示为aB?n的形式。例如,1.0?2?11表示为1.0 B?11。 【测试数据与运行结果】
第一次运行时输入:0
输出:0.0B0
第二次运行时输入:0.125
输出:1.0B-11
第三次运行时输入:315
输出:1.00111011B+1000
【含有错误的源程序】 #include
void outFloatBinary(float x) { int e=0; if(x==0)
{ puts(0.0B0); /* 语法错,中,改为 puts(“0.0B0”); */ return; }
if(x<0){ putchar('-'); x=-x; } while(x>=2.0) { e++; x/=2; } while(x<1.0)
{ e++; x*=2; } /*算法错,中,改为 { e--; x*=2; } */ printf(\ x=(x-(int)x)*2; do
{ printf(\ /* 语义错, 偏难,改为 printf(\ x=(x-(int)x)*2;
}while(x!=0);
if(e=0) printf(\ /*语义错,易,改为 if(e==0) printf(\ */ else if(e>0)
{ printf(\ else
{ printf(\ } printf(\
C语言 2009年秋C04 答案 第1页
}
void main( ) { float a;
scanf(\ outFloatBinary(a); getch(); }
二、编程题(24分) 【程序功能】
求3000以内的亲密数对。
如果A的全部真因子(包括1,不包括A自身)之和等于B;B的全部真因子之和等于A,则称整数A和B为一对亲密数。 【编程要求】
1. 编写函数int frinum(long s[][2],long n)实现以下功能:找到2?n范围内的所有亲密数对,将这些亲密数对保存到s指向的二维数组中。函数返回s数组中存储的亲密数对的对数。 2. 编写函数main实现以下功能:声明二维数组s和变量n,输入一个正整数并保存到n中,用二维数组s和变量n作为实参调用frinum函数,将n以内的所有亲密数对输出到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。 【测试数据与运行结果】
输入:n=3000 输出:
( 220,284 ) ( 1184,1210 ) ( 2620,2924 ) 【参考答案】 #include
int frinum(long s[][2],long n) { long a,b,m,i,k=0; for(a=2;a<=n;a++)
{ for(b=0,i=1;i<=a/2;i++) if(!(a%i)) b+=i;
for(m=0,i=1;i<=b/2;i++) if(!(b%i)) m+=i; if(m==a&&b>m)
{ s[k][0]=a; s[k][1]=b; k++; } }
return k; }
void main()
{ int i,j; long n,s[20][2]; FILE *fp;
if ((fp=fopen(\
{ printf(\ exit(1); } scanf(\
C语言 2009年秋C04 答案 第2页
j=frinum(s,n); for(i=0;i { printf(\ fprintf(fp,\ } fprintf(fp,\ fclose(fp); getch(); } C语言 2009年秋C04 答案 第3页 搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新小学教育2009秋C语言上机试卷C04答案 全文阅读和word下载服务。
相关推荐: