1、第 3 次作业一、填空题(本大题共 20 分,共 10 小题,每小题 2 分)1. 函数 reverse 的原型为:void reverse(char *s);,其功能是颠倒存放字符串s,函数定义代码已经写入到源程序问文件 myfuns.cpp。下面程序利用函数reverse 将键盘上输入的字符串进行颠倒并输出。请选择合适选项填空完成程序。#include #include int main()char s200;printf(“?s: “);gets(s);reverse(s);puts(s);return 0;A “void reverse(char *s);“B void reverse
2、(char *s);C myfuns.cppD “myfuns.cpp“2. 下面程序的功能是:通过宏定义 MOD 求 4 个实型数据 a+b 与 c+d 的余数。请选择合适选项填空完成程序。#include #include #define MOD(x,y) int main() double a,b,c,d,e;printf(“?ascanf(“%lf,%lf,%lf,%lf“,e=MOD( );printf(“e=%lfn“,e);return 0;A a,b,c,dB a+b,c+dC MOD(x),(y)D fmod(x),(y)3. 下面程序的功能是:随机产生 20 个实数存放到一
3、维数组 a 中,并通过指向数组a 的指针移动的方式输出所有数组元素值。请选择合适选项填空完成程序。#include #include #include #define N 20int main()double aN,*p;int i;srand(time(NULL);for(i=0;i struct man char name20; int age; person=“li=ming“,18,“wang-hua“,19,“zhang-ping“,20; int main() struct man *p,*q; int old=0; p=person; while(page; p+; printf
4、(“%s %dn“, ); return 0; A q-name,q-age B *q-name,q-age C oldage 5. 下面程序的功能是:求实型变量 b 的小数部分,请选择合适选项填空完成程序。#include int main() double b;scanf(“%lf“,printf(“%lfn“, );return 0;A b%(int)bB (int)b/bC (int)b-bD b-(int)b6. 下面程序的功能是:求从键盘输入的 3 个整数之和。请选择合适选项填空完成程序。 #include int add( ); int main() int a,b,c,sum;
5、 printf(“?a,b,c: “); scanf(“%d,%d,%d“, sum=add( ); printf(“sum=%dn“,sum); return 0; int add(int a,int b) return a+b; A add(a,b),c B a,b,c C int a;int b D int,int 7. 下面程序运行时,若输入数据为:123456789,则输出结果为:a=123,b=89,请选择合适选项填空完成程序。#include int main() int a,b;scanf(“ “,printf(“a=%d,b=%dn“,a,b);return 0;A %3d%
6、2dB %3d%*d%2dC %3d%*4d%2dD %3d%4d%2d8. #include #include double sincos(double x,double *co);int main()double x,sinv,cosv;printf(“?x: “);scanf(“%lf“,sinv=sincos( );printf(“sinv=%lf,cosv=%lfn“,sinv,cosv);return 0;double sincos(double x,double *co)x=x*3.1415926/180; =cos(x);return sin(x);A x,cosvB x, i
7、nt y; ; int main() FILE *f; a3; int i; f=fopen(“mydata.txt“,“rb“); if(f=NULL) printf(“Cant create file.n“); return -1; for(i=0;i#include #include #define M 3#define N 5int main()int aMN,*p;int i,j;srand(time(NULL);for(i=0;i#include #define N 0int main()char s100=“abcdefg“;#if Nprintf(“字符串 s 的长度为:%dn
8、“,strlen(s);#elseprintf(“字符串 s 占据的空间长度为:%dn“,sizeof(s);#endifreturn 0;2. (写出下面程序执行的结果) #include int main() int x,b1,b2,b3; x=300; b3=x/100; b2=(x-b3)/100; b1=x%10; x=b1+b2+b3; printf(“%dn“,x); return 0; 3. (写出下面程序执行的结果) #include int main() int i,j,k;char ch=1; for(i=0;iint main() union int a;char c4
9、;s;s.a=0x46474849;for(int i=0;i int main() int i,j,m=3; for(i=0;i=0;j-) printf(“%1d%c“, i+j,j ? H : $ ); printf(“n“); return 0; 三、程序设计题(本大题共 40 分,共 4 小题,每小题 10 分)1. 从键盘输入一个指定金额(单位:元,例如 345),然后存储显示支付该金额需要的各种面额钞票的数目。2. 编程序求出 1001000 之间的每一个整数各自的各位数字之和,要求求每个整数各位数字之和的函数单独编写。3. 函数 r_getbits 的原型为:int r_get
10、bits(unsigned x,unsigned pos,unsigned n);,其功能是返回变量 x 从 pos 位置开始从右向左计数的 n 位值。请编制函数 r_getbits 并用相应的主函数进行测试。4. 编程序实现功能:利用一维数组,判定从键盘输入的任意正整数是否“回文数”,所谓“回文数”是指正读反读都相同的数,如:123454321。答案:一、填空题(20 分,共 10 题,每小题 2 分)1. 参考答案:D解题方案:评分标准:2. 参考答案: D B解题方案:评分标准:3. 参考答案: B D解题方案:评分标准:4. 参考答案: D A解题方案:评分标准:5. 参考答案:D解题
11、方案:评分标准:6. 参考答案: D A解题方案:评分标准:7. 参考答案:C解题方案:评分标准:8. 参考答案: B C解题方案:评分标准:9. 参考答案: A C解题方案:评分标准:10. 参考答案: C D解题方案:评分标准:二、程序阅读题(40 分,共 5 题,每小题 8 分)1. 参考答案:字符串 s 占据的空间长度为:100解题方案:评分标准:2. 参考答案:5解题方案:评分标准:3. 参考答案:1222333334444444555554443 解题方案:评分标准:4. 参考答案:IHGF解题方案:评分标准:5. 参考答案:2H1H0$4H3H2$解题方案:评分标准:三、程序设计
12、题(40 分,共 4 题,每小题 10 分)1. 参考答案:#includetypedef struct Currency char Denomination10;int Value;int Num;CUR;int main()CUR Currencys=“佰元“,100,0,“伍拾元“,50,0,“贰拾元“,20,0,“拾元“,10,0,“伍元“,5,0,“贰元“,2,0,“壹元“,1,0;int Money;scanf(“%d“,for(int i=0;i#define N 1000int main() int sum(int x);int n;for(n=100;nint main()i
13、nt r_getbits(unsigned x,unsigned pos,unsigned n);unsigned num,pos,n;printf(“Input num,pos and n: “);scanf(“%u,%u,%u“,printf(“%dn“,r_getbits(num,pos,n);return 0;int r_getbits(unsigned x,unsigned pos,unsigned n)int len;len=(x(pos+1-n)printf(“?n: “);scanf(“%d“,nt=n;for(j=0;n!=0;j+)/将 n 分解成数字依次放入数组naj=n%10;n/=10;for(i=0,j=j-1;i=j)printf(“%d 是回文数!n“,nt);elseprintf(“%d 不是回文数!n“,nt);return 0;解题方案:评分标准: