欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    国家开放大学《C语言程序设计》综合测试题参考答案.docx

    • 资源ID:67375444       资源大小:56KB        全文页数:36页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    国家开放大学《C语言程序设计》综合测试题参考答案.docx

    国家开放大学C语言程序设计综合测试题参考答案综合测试1一、单选题(每小题2分,共20分)1在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( )。a. functionb. namec. maind. MAIN2.每个C语言程序文件的编译错误分为( )类。a. 2b. 4c. 1d. 33.字符串"a+b=12n"的长度为( )。a. 7b. 9c. 6d. 84.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为( )语句。a. forb. whilec. ifd. do5.在下面的do-while循环语句中,其循环体语句被执行的次数为( )。 int i=0; do i+; while(i<10);a. 4b. 3c. 10d. 56.将两个字符串连接起来组成一个字符串时,选用的函数为( )。 a. strcap()b. strcmp()c. strlen()d. strcat()7.若用数组名作为函数调用的实参,传递给形参的是( )。a. 数组的首地址b. 数组元素的个数c. 数组中全部元素的值d. 数组中第一个元素的值8.假定a为一个整数类型的数组名,整数类型的长度为4,则元素a4的地址比a数组的首地址大( )个字节。a. 16b. 32c. 4d. 89.假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为( )。a. char *p;p=*s;b. char *p; p=&s;c. char *p=&s;d. char *p=s;10.从一个数据文件中读入以换行符结束的一行字符串的函数为( )。a. fgetc()b. fgets()c. getc()d. gets()二、填空题(每小题2分,共26分)11.C语言中的每条简单语句以(分号)作为结束符。12.C程序中的所有预处理命令均以(#)字符开头。13.当不需要函数返回任何值时,则应使用(void)标识符来定义函数类型。14.十进制数25表示成符合C语言规则的十六进制数为(0x19)。15.假定不允许使用逻辑非操作符,则逻辑表达式a>b | b=5的相反表达式为(a<=b && b!=5)。16.执行“typedef int DataType;”语句后,在使用int定义整型变量的地方也可以使用(DataType)来定义整型变量。17.假定一维数组的定义语句为“char* a8;”,则该数组a所占存储空间的字节数为(32)。18.假定二维数组的定义语句为“double aMN;”,则该数组a的列下标的取值范围在0到(N-1)之间。19.存储一个空字符串需要占用(1)个字节。20.strcpy函数用于把一个字符串(拷贝)到另一个字符数组空间中。21.程序的编译单位是一个(程序文件)。22.假定a是一个一维数组,则ai的指针访问方式为((a+i))。 23.执行int *p=malloc(sizeof(int)操作得到的一个动态分配的整型对象为(p)。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#include<stdio.h> void main() int x=5; switch(2*x) case 4: printf("%d ",x); break; case 7: printf("%d ",2*x); break; case 10: printf("%d ",3*x); break; default: printf("%s ","default"); printf("%dn",4*x); 运行结果:15 2025.#include<stdio.h> void main() int f1,f2,i; f1=1; printf("%d ",f1); for(i=2;i<5;i+) f2=3*f1+i; printf("%d ",f2); f1=f2; printf("n"); 运行结果:1 5 18 5826.#include<stdio.h> #define N 8 void main() int aN=12,39,26,41,55,63,72,40; int i, i1=0, i2=0; for(i=0;i<N;i+) if(ai%2=1) i1+; else i2+; printf("%d %dn",i1,i2); 运行结果:4 427.#include<stdio.h> #include<string.h> void main( ) char s15="5678912340" int i, n=strlen(s) ; for(i=0; i<n/2; i+) char c=si; si=sn-1-i; sn-1-i=c; printf("%sn",s); 运行结果:043219876528.#include<stdio.h> int LB(int *a, int n) int i,s=1; for(i=0;i<n;i+) s*=*a+; return s; void main() int a=1,2,3,4,2,2,5,8; int b=LB(a,4)+LB(a+3,4); printf("b=%dn",b); 运行结果:b=104四、根据下列每个函数回答相应问题(每小题6分,共12分)29.void SF(int x) /n为大于等于0的整数 int i=2; while(x>i) if(x%i=0) printf("%d ",i); i+; printf("n"); 假定使用SF(70)调用该函数,则输出的所有整数依次为(2 5 7 10 14 35)。30.void QC(struct IntNode* f) /f为一个单链表的表头指针 while(f) printf("%d ",f->data); f=f->next; 假定结构类型IntNode的定义为: struct IntNode int data; struct IntNode *next; 该函数的功能为:(遍历并输出由表头指针f所指向的单链表中每个结点的data域的值。)五、按题目要求编写程序(每小题6分,共12分)31.编写一个程序,首先从键盘上输入10个整数到一维数组a10中,然后按照下标从大到小的次序输出数组a10中的所有元素值。假定数组a10和循环变量i均在主函数中定义。参考答案:#include<stdio.h>voidmain()inta10,i; printf("从键盘输入10个整数:n");for(i=0;i<10;i+)scanf("%d",&ai);for(i=9;i>=0;i-)printf("%d",ai);printf("n");32.编写一个程序,已知6a50,10b30,求出满足不定方程3a+2b=120的全部整数组解。如(20,30)就是其中的一组解。参考答案: #include<stdio.h>voidmain()inta,b;for(a=6;a<=50;a+)for(b=10;b<=30;b+)if(3*a+2*b=120)printf("(%d,%d)n",a,b);综合测试2一、单选题(每小题2分,共20分)1.C语言源程序文件的缺省扩展名为( )。a. Cb. exec. cppd. obj2.设x和y均为逻辑值,则x && y为真的条件是x和y( )。a. 均为真b. 其中一个为真c. 均为假d. 其中一个为假3.在下列的符号常量定义中,正确的定义格式为( )。a. const int M2 20b. #define M3 10c. #define M1d. const char mark4.for循环语句能够被改写为( )语句。a. switchb. whilec. 复合d. if5.在下面的一维数组定义中,错误的定义格式为( )。a. int a5;b. int a=1,2,3;c. int a;d. int a10=0;6.下面的函数原型声明中存在语法错误的是( )。a. void AA(int a, int b);b. void AA(int, int);c. void AA(int a; int b;);d. void AA(int a, int);7.假定a为一个数组名,则下面存在错误的表达式为( )。a. *ab. aic. *a+d. *(a+1)8.假定有定义为“int a10, x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为( )。a. x=a3b. x=*(a+3)c. x=pa3d. x=*pa+39.char类型的长度为_个字节。a. 2b. 4c. 1d. 310.向一个二进制文件中写入信息的函数为( )。a. fgets()b. fread()c. fwrite()d. fputs()二、填空题(每小题2分,共26分)11.C语言中的每条复合语句以()作为结束符。12.在#include命令中所包含的文件,可以是头文件,也可以是(程序)文件。13.十进制数56对应的八进制数为(070)。14.假定x=5,则表达式12+x+的值为(17)。15.增量表达式+y表示成赋值表达式为(y=y+1)。16.若x=5,y=6,则x>y的值为(0)。17.假定二维数组的定义为“int a45;”,则该数组所含元素的个数为(20)。18.执行“typedef int ABC20;”语句把ABC定义为具有20个整型元素的(数组)类型。19.strcat()函数用于(连接)两个字符串。20.假定p所指对象的值为30,p+1所指对象的值为24,则*p+的值为(30)。21.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为((char )p)。22.NULL是一个符号常量,通常作为空指针值,它对应的值为(0)。23.假定要动态分配一个类型为struct Worker的对象,并由r指针指向这个对象,则使用的表达式为(struct Worker r)=malloc(sizeof(struct Worker)。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#include<stdio.h> void main() int i,s=0; for(i=1;i<7;i+) s+=i*i; printf(“s=%dn”,s); 输出结果:s=9125.#include<stdio.h> #define N 6 void main() int i,aN=2,5,8,10,15,20; for(i=0; i<N; i+) if(ai%4=0) printf("%d ",ai); printf("n"); 输出结果:8 2026.#include<stdio.h> #include<string.h> void main() int i; unsigned int len; char* a5="stud","work","cadre","soldier","zan123" len=strlen(a0); for(i=1; i<5; i+) if(strlen(ai)>len) len=strlen(ai); printf("%dn",len); 输出结果:727.#include<stdio.h> void main() int a,b; for(a=2,b=3; b<30;) printf("%d %d ",a,b); a=a+b; b=a+b; 输出结果:2 3 5 8 13 2128.#include<stdio.h> void LE(int* a, int* b) int x=*a; *a=*b; *b=x; void main() int x=5, y=8; printf("%d %d ",x,y); LE(&x,&y); printf("%d %dn",x,y); 输出结果:5 8 8 5四、写出下列每个函数的功能(每小题6分,共12分)29.#include<math.h> int SG(int x) /x为大于等于2的整数 int a=(int)sqrt(x); /sqrt(x)取x的平方根 int i=2; while(i<=a) if(x%i=0) break; i+; if(i<=a)return 0; else return 1; 函数功能:判断x是否为一个素数,若是则返回1,否则返回0。30.int FindMax(struct IntNode *f) /f为一个单链表的表头指针 int x; if(!f) printf("单链表为空n"),exit(1); x=f->data; f=f->next; while(f) if(f->data>x) x=f->data; f=f->next; return x; 假定struct IntNode的类型定义为: struct IntNode int data; struct IntNode* next;函数功能:求出由f所指向的单链表中所有结点的最大值。五、按题目要求编写程序或函数(每小题6分,共12分)31.编写一个程序,输出35以内(含35)的、能够被4或者7整除的所有整数。参考答案: #include<stdio.h>Void main()int i;for (i = 1; i <=35; i+)if(i%4=0|i%7=0)printf(“%d”,i);printf(“n”);32.编写一个递归函数“int FF(int a, int n)”,求出数组a中所有n个元素之积并返回。参考答案: int FF(int a, int n) if(n<=0) printf(“n值非法n”),exit(1); If(n=1) return an-1; else return an-1* FF(a, n-1);综合测试3一、单选题(每小题2分,共20分)1.由C语言源程序文件编译而成的目标文件的默认扩展名为( )。a. exeb. cppc. cd. obj2.设x和y均为逻辑值,则x | y为假的条件是( )。a. 它们均为假b. 其中一个为假c. 其中一个为真d. 它们均为真3.枚举类型中的每个枚举常量的值都是一个( )。a. 字符b. 整数c. 浮点数d. 记录4.循环语句“for(i=0; i<=n; i+) S;”中循环体S被执行的次数为( )。a. nb. n+1c. n-1d. 15.假定有定义为“int a45=1,3,5,2,8;”,则a11的值为( )。a. 3b. 8c. 5d. 26.在下面的选项中,不能作为函数值返回类型的是( )。a. intb. longc. newd. void7.假定x的值为4,y的值为6,则表达式x+*+y的值为( )。a. 24b. 35c. 30d. 288.用calloc函数创建具有10个整型元素的动态存储空间的正确调用是( )。a. calloc(sizeof(int),10,)b. calloc(10,sizeof(int)c. calloc(10)d. calloc(10,sizeof(char)9.假定有定义“int b10, *pb;”,则不正确的赋值为( )。a. pb=b+4b. pb=bc. pb=&b0d. pb=b510.标准输入设备的文件流标识符是( )。a. stderrb. stdioc. stdind. stdout二、填空题(每小题2分,共26分)11.执行“printf("%c",'A'+3);”语句后得到的输出结果为(D)。12.short int类型的长度为(2)。13.用类型关键字表示十进制常数3.26f的类型为(float)。14.假定y=5,则表达式-y*3的值为(12)。15.逻辑表达式(x=0 && y>5)的相反表达式为((x!=0 | y<=5) 或:(x | y<=5))。16.若x=5,y=10,则x!=y的逻辑值为(1)。17.假定二维数组的定义为“int a36;”,则该数组所占存储空间的字节数为(72)。18.使用“typedef char BBMN;”语句定义(BB)为含有M行N列的二维字符数组类型。19.字符串"a:xxk数据"的长度为(11)。20.假定p所指对象的值为20,p+1所指对象的值为30,则*+p的值为(30)。21.假定一个数据对象为int*类型,则指向该对象的指针类型为(int)。22.假定一个结构类型的定义为 “struct Aint a,b; A* c;”,则该类型的长度为(12)。23.假定要访问一个结构对象x中的数据成员a,则表示方式为(x.a)。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#include<stdio.h> void main() int i, s=0; for(i=1;i+) if(s>20) break; if(i%2) s+=i; printf("s=%dn",s); 输出结果:s=2525.#include<stdio.h> void main() int a9=36,25,48,24,55,40,18,30,20; int i, b1, b2; b1=b2=a0; for(i=1; i<9; i+) if(ai>b1) b1=ai; if(ai<b2) b2=ai; printf("%d %dn",b1,b2); 输出结果:55 1826.#include<stdio.h> void SB(char ch) switch(ch) case 'A': case 'a': printf("WW "); break; case 'B': case 'b': printf("GG "); break; default: printf("BB "); break; void main() char a1='a',a2='B',a3='f' SB(a1);SB(a2);SB(a3); printf("n"); 输出结果:WW GG BB27.#include<stdio.h> #define M 6 void main() int i,x; int aM=10,15,22,37,46,58; for(i=0; i<M/2; i+) x=ai; ai=aM-1-i; aM-1-i=x; printf("%d %dn",a2,a4); 输出结果:37 1528.#include<stdio.h> struct Worker char name15; int age; float pay; ; void main() struct Worker x="wanghua",34,4250; struct Worker y, *p; y=x; p=&x; printf("%d %7.2fn", y.age+p->age, p->pay+300); 输出结果:68 4550.00四、写出下列每个函数的功能(每小题6分,共12分)29.int FH() int x,y=0; scanf("%d",&x); while(x!=-1) y+=x; scanf("%d",&x); return y; 函数功能:求出从键盘上输入的一批整数的总和,以-1作为结束数据输入的标志。30.int FF(struct IntNode *f) /f为指向一个单链表的表头指针 int n=0; if(!f) return 0; while(f) n+; f=f->next; return n; 假定struct IntNode的类型定义为: struct IntNode int data; struct IntNode* next; ; 函数功能:求出并返回由f所指向的单链表中所有结点的个数。五、按题目要求编写程序或函数(每小题6分,共12分)31.编写一个程序,利用while循环,计算并打印输出1+12+13+1n的值,其中正整数n值由键盘输入。假定求和变量用sum表示,计数变量用i表示,sum、i和n均定义为全局变量,sum和i的初值分别被赋予0和1。参考答案: #include<stdio.h> int n,i=1; double sum=0;void main() scanf(“%d”,&n); while(i<=n) sum+=(double)1/i+; printf(“sum=%1fn”,sum);32.根据函数原型“void DD(int a, int n, int MM)”编写函数定义,利用双重循环查找并打印输出数组an中任何两个元素的值等于MM值的元素值。假定ai+aj等于MM,则输出格式为:(ai,aj)。参考答案:void DD(int a,int n,int MM) int I,j; for(i=0;i<n;i+) for(j=i+1;j<n;j+) if(ai+aj=MM) printf(“%d,%dn”,ai,aj);综合测试4一、单选题(每小题2分,共20分)1.由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。a. objb. cppc. exed. c2.设有两条语句为“int a=10; a+=a*a;”,则执行结束后,a的值为( )。a. 110b. 20c. 100d. 103.带有随机函数调用的表达式rand()%50的值在( )区间内。a. 049b. 050c. 150d. 1494.for循环语句“for(i=0; i<n; i+=2) S;”中循环体S语句被执行的次数为( )。a. n/2+1b. n-1c. (n+1)/2d. n/2-15.在下列的字符数组定义中,存在语法错误的是( )。a. char a20="abcdefg"b. char a="x+y=55."c. char a10='5'd. char a15='1','2'6.若有一个函数原型为“double *function()”,则它的返回值类型为( )。a. 函数指针型b. 数组型c. 实数型d. 实数指针型7.在C语言中,所有预处理命令都是以( )符号开头的。a. #b. &c. d. *8.假定整数指针p所指数据单元的值为30,p+1所指数据单元的值为40,则执行*p+后,p所指数据单元的值为( )。a. 40b. 30c. 10d. 709.若要使p指向二维整型数组a1020,则p的类型为( )。a. int(*)20b. int *c. int *d. int *2010.表示文件结束符的符号常量为( )a. feofb. EOFc. eofd. Eof二、填空题(每小题2分,共26分)11.一个函数定义由(函数头)和函数体两部分组成。12.执行“printf("%c",'F'-3);”语句后得到的输出结果为(C)。13.int类型的长度为(4)。14.表达式(float)25/4的值为(6.25)。15.若x=5,y=10,则x<=y的逻辑值为(1)。16.作为语句标号使用的case和default只能用于(switch)语句的定义体中。17.在程序中执行到(return)语句时,将结束所在函数的执行过程,返回到调用该函数的位置。18.假定二维数组的定义为“char aMN;”,则该数组所含元素的个数为(M N)。19.存储字符'a'需要占用存储器的(1)个字节空间。20.用于存储一个长度为n的字符串,需要的字符数组的长度至少为(n+1)。21.假定p所指对象的值为30,p+1所指对象的值为46,则执行表达式(*p)+后,p所指对象的值为(31)反馈22.假定p是一个指向整数对象的指针,则用(p)表示该整数对象。23.假定一个结构类型的定义为“struct Bint a5; char* b;”,则该类型的理论长度为(24)。三、写出下列每个程序运行后的输出结果(每小题6分,共30分)24.#include<stdio.h> void main() int i, s1=0, s2=0; for(i=0;i<=10;i+) if(i%2) s1+=i; else s2+=i; printf("%d %dn",s1,s2); 输出结果:25 3025.#include<stdio.h> const int M=20; void main() int i=2; while(1) if(i>M/2) break; if(M%i=0) printf("%d ",i); i+; printf("n"); 输出结果:2 4 5 1026.#include<stdio.h> int a7=4,5,6,15,20,12,9; void main() int i,s1,s2; s1=s2=0; for(i=0; i<7; i+) switch(ai%2) case 0: s2+=ai;break; case 1: s1+=ai;break; printf("%d %dn",s1,s2); 输出结果:29 4227.#include<stdio.h> void main() int a33=3,15,7,9,11,10,6,8,20; int i,*p=&a00; for(i=0;i<9;i+) if(*p>10) printf("%d ",*p); p+; printf("n"); 输出结果:15 11 2028.#include<stdio.h> #include<string.h>

    注意事项

    本文(国家开放大学《C语言程序设计》综合测试题参考答案.docx)为本站会员(国****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开