09年秋江苏省二级考试C语言真题及答案

合集下载

2009计算机二级c语言考试真题及答案

2009计算机二级c语言考试真题及答案

2009计算机二级c语言考试真题及答案一、选择题(每题1分,共40分)1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. _variableD. variable-2答案:C2. 若有定义:int a=3, b=4, c=5;,则表达式a+b+c的值是:A. 12B. 9C. 15D. 3答案:C3. C语言中,以下哪个选项是正确的整型常量?A. 0x12B. 0x12.0C. 0x12LD. 0x12.0L答案:A4. 在C语言中,以下哪个选项是正确的字符常量?A. 'ab'B. '65'C. '\n'D. "A"答案:C5. 若有定义:int a=5, b=10;,则执行语句a=b后,变量a的值是:A. 5B. 10C. 15D. 0答案:B6. 在C语言中,以下哪个选项是正确的字符串常量?A. "Hello, World!"B. 'Hello, World!'C. "Hello World!"D. 'Hello World!'答案:A7. 若有定义:int a=5;,则执行语句a+=3后,变量a的值是:A. 5B. 8C. 3D. 2答案:B8. 在C语言中,以下哪个选项是正确的数组定义?A. int a[5] = {1, 2, 3, 4, 5};B. int a[5] = {1, 2, 3};C. int a[] = {1, 2, 3, 4, 5};D. int a[5] = {1, 2, 3, 4};答案:C9. 若有定义:int a[5] = {1, 2, 3, 4, 5};,则执行语句a[2]=6后,数组元素a[2]的值是:A. 1B. 2C. 6D. 5答案:C10. 在C语言中,以下哪个选项是正确的函数定义?A. int max(int x, int y) { return x > y ? x : y; }B. int max(int x, int y) { if(x > y) return x; else returny; }C. int max(int x, int y) { return x > y ? y : x; }D. int max(int x, int y) { if(x > y) return y; else returnx; }答案:A二、填空题(每题2分,共20分)1. 在C语言中,若要定义一个整型变量x并初始化为10,应使用语句:________。

历年江苏省计算机二级C语言历年真题及答案(笔试).docx

历年江苏省计算机二级C语言历年真题及答案(笔试).docx

2009年春季江苏省高校计算机等级考试考试试题第一部分计算机基础知识1. 在下列有关现代信息技术的一些叙述中,正确的是 1 。

A.集成电路是20世纪90年代初出现的,它的出现直接导致了微型计算机的诞生B.集成电路的集成度越来越高,目前集成度最高的已包含几百个电子元件C.目前所有数字通信均不再需要使用调制解调技术和载波技术D.光纤主要用于数字通信,它采用波分多路复用技术以增大信道容量‘.2. 最大的10位无符号二进制整数转换成八进制数是 2 .。

A.1023B.1777C.1000D.10243. 在下列有关目前PC机CPU的叙述中,错误的是 3 。

A.CPU芯片主要是由Intel公司和AMD公司提供的B."双核"是指PC机主板上含有两个独立的CPU芯片C.Pentium 4微处理器的指令系统由数百条指令组成D.Pentium 4微处理器中包含一定容量的Cache存储器4. 在下列有关当前PC机主板和内存的叙述中,正确的是 4 。

A.主板上的BIOS芯片是一种只读存储器,其内容不可在线改写B.绝大多数主板上仅有一个内存插座,因此PC机只能安装一根内存条C.内存条上的存储器芯片属于SRAM(静态随机存取存储器)D.目前内存的存取时间大多在几个到十几个ns(纳秒)之间5. 在下列有关PC机辅助存储器的叙述中,正确的是 5 。

A.硬盘的内部传输速率远远大于外部传输速率B.对于光盘刻录机来说,其刻录信息的速度一般小于读取信息的速度C.使用USB 2.0接口的移动硬盘,其数据传输速率大约为每秒数百兆字节D.CD-ROM的数据传输速率一般比USB 2.0还快6. 在下列PC机I/O接口中,数据传输速率最快的是 6 。

B 2.0B.IEEE-1394C.IrDA (红外)D.SATA7. 计算机软件可以分为商品软件、共享软件和自由软件等类型。

在下列相关叙述中,错误的是7 。

A.通常用户需要付费才能得到商品软件的使用权,但这类软件的升级总是免费的B.共享软件通常是一种"买前免费试用"的具有版权的软件C.自由软件的原则是用户可共享,并允许拷贝和自由传播D.软件许可证是一种法律合同,它确定了用户对软件的使用权限8. 人们通常将计算机软件划分为系统软件和应用软件。

2009年秋江苏省二级考试C语言真题(答案)

2009年秋江苏省二级考试C语言真题(答案)

2009年秋江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试第二部分C语言程序设计参考答案一、选择题1、C2、C3、B4、D5、C6、C7、B8、A9、D 10、D二、填空题1、!2、8 解析:sizeof指数据或变量占的内存(字节),C编译系统将浮点型常量作为双精度来处理3、sqrt(abs(x))!=(4*a)/(b*c)4、1,25、auto阅读程序6、123,456解析:第一个fprintf将123作为一个整数写到文件中,第二个fprintf将456作为一个整数写到文件中7、2解析:本题switch中没有break,所以当i=1,case1,2,3依次执行,m初值为0,自增两次,值为28、15 232解析:本题的含义是当a数组元素下标为奇数而且元素值大于10,将元素值赋给数组b,x 用来记录b中数组元素个数,要注意的是打印b[i]时格式是\t制表符,要隔8位。

9、6解析:本题为递归,解决递归分两步递推+回推递推:fun(a,2)a[0]+fun(a+1,1)a[1]+fun(a+1+1,0) 注意此时指针的地址不a,而是a+1,返回的是a[1]+fun(a+1+1,0)而不是a[0]+fun(a+1+1,0) ,当n=0时fun(a+1+1,0)值为a[2],再依次回推a[2]+a[1]+a[0]=610、9解析:本题考点static,s为静态局部变量,函数调用结束后不消失保留原值,第一次f(1),s值为2,第二次f(2),s=3,第三次f(3),s=3,sum=2+3+4=911、4解析:f(a,b)为宏替换,b值为4,g(c,d)为函数调用,但是函数中没有返回值,所以d 保持原值012、 2 5 104 8 1213、4解析:本题功能是求一句英文中单词的个数。

当i=0,表示新单词开始,同时i变为1,n来统计单词个数,遇到空格表示单词结束,又表示下一个单词的开始,i置0。

全国计算机等年级考试二级C语言真题优选

全国计算机等年级考试二级C语言真题优选

2009 年 9 月全国计算机等级考试二级笔试考试C 语言程序设计考试(考试时间 90 分钟,满分 100 分)一、 选择题((1-10)、(21-40)每题 2 分,(11)-(20)每题 1 分,共 70 分) 下列各题 A )、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确填涂在答案卡相应位置上,答在试卷上不得分。

(1) 下列数据结构中,属于非线性结构的是 A) 循环结构 B )带练队列 C)二叉树 D )带 链栈(2) 下列数据结构中,能够按照“先进后出”原则存取数据 的是A) 循环队列 B)栈 C )队列 D)二叉 树(3) 对于循环队列,下列叙述中正确的 A )队头指针是固定不变的 B )队头指针一定不大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针(4) 算法的空间复杂度是指A) 算法在执行过程中所需要的计算机存储空间B )算法所处理的数据量C)算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数(5) 软件设计中划分模块的一个准则是A )低内聚低耦合B )高内聚低耦合C )低内聚高耦合 D)高内聚高耦合(6) 下列选项中不属于结构化程序设计原则的是A )可封装 B)自顶向下 C )模块化 D )逐步求精7、软件详细设计的图如下:该图是:A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图8、数据库管理系统是:A )操作系统的一部分B )在操作系统支持下的系统软件C )一种编译系统 D )一种操作系统9、在 E-R 图型中,用来表示两个实体联系的图型的是:A) 矩形 B) 椭圆 C )菱形 D )三角形10、有三个关系 R 、S 和 T 如下:R S TA B Ca 1 2b 2 1c 3 1A B Ca 1 2b 2 1c 3 1d 3 2A B Cd 3 2其中关系T 由关系R 和关系S 通过某种操作得到:该操作为:A) 选择B) 投影C)交D)并11、一下叙述中正确的是:A)程序设计的任务是编写程序代码并上机调试。

国家计算机二级考试《C语言程序设计》历年真题及答案

国家计算机二级考试《C语言程序设计》历年真题及答案

2009年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B) 带链队列C) 二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A) 循环队列B) 栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合D) 高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A) 可封装D) 自顶向下C) 模块化D) 逐步求精(7)软件详细设计产生的图如下:该图是A) N-S图B) PAD图C) 程序流程图D) E-R图(8)数据库管理系统是A)操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统D) 一种操作系统(9)在E-R图中,用来表示实体联系的图形是A) 椭圆图B) 矩形C) 菱形D) 三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A) 选择B) 投影C) 交D) 并(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A)0,0C)3,2D)1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c;D)if(a>b) {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,c);}程序运行后的输出结果是A)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c)) k=1;else k=0;B)if((a>b)||(b>c) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;20)有以下程序#include{ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运行后的输出结果是A)0B)2C)3D)5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A)0 2B)1 3C)5 7D)1 2(22)有以下定义语句,编译时会出现编译错误的是A)char a=’a’;B)char a=’\n’;C)char a=’aa’;D)char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68C)E,DD)输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i<N;I++)< p="" />{ max=MIN;if(maxreturn max;}造成错误的原因是A)定义语句int i,max;中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A)3 3 4 4B)2 0 5 0C)3 0 4 0D)0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A)void (*pf)(); pf=fun;B)viod *pf(); pf=fun;C)void *pf(); *pf=fun;D)void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A)7B)8C)9D)10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A)char str[ ]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

国家计算机二级C语言历年真题及答案

国家计算机二级C语言历年真题及答案

2009年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B) 带链队列C) 二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A) 循环队列B) 栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合D) 高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A) 可封装D) 自顶向下C) 模块化D) 逐步求精(7)软件详细设计产生的图如下:该图是A) N-S图B) PAD图C) 程序流程图D) E-R图(8)数据库管理系统是A)操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统D) 一种操作系统(9)在E-R图中,用来表示实体联系的图形是A) 椭圆图B) 矩形C) 菱形D) 三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A) 选择B) 投影C) 交D) 并(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A)0,0C)3,2D)1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c;D)if(a>b) {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,c);}程序运行后的输出结果是A)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c)) k=1;else k=0;B)if((a>b)||(b>c) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;20)有以下程序#include{ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运行后的输出结果是A)0B)2C)3D)5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A)0 2B)1 3C)5 7D)1 2(22)有以下定义语句,编译时会出现编译错误的是A)char a=’a’;B)char a=’\n’;C)char a=’aa’;D)char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68C)E,DD)输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -int findmax (int x[],int n){ int i,max;for(i=0;i<N;I++)< p="" />{ max=MIN;if(maxreturn max;}造成错误的原因是A)定义语句int i,max;中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A)3 3 4 4B)2 0 5 0C)3 0 4 0D)0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A)void (*pf)(); pf=fun;B)viod *pf(); pf=fun;C)void *pf(); *pf=fun;D)void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A)7B)8C)9D)10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A)char str[ ]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

国家计算机二级C语言历年真题及答案解析

国家计算机二级C语言历年真题及答案解析

2009年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(1)下列数据结构中,属于非线性结构的是A)循环队列B) 带链队列C) 二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A) 循环队列B) 栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合D) 高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A) 可封装D) 自顶向下C) 模块化D) 逐步求精(7)软件详细设计产生的图如下:该图是A) N-S图B) PAD图C) 程序流程图D) E-R图(8)数据库管理系统是A)操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统D) 一种操作系统(9)在E-R图中,用来表示实体联系的图形是A) 椭圆图B) 矩形C) 菱形D) 三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A) 选择B) 投影C) 交D) 并(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A)0,0C)3,2D)1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c;D)if(a>b) {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,c);}程序运行后的输出结果是A)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c)) k=1;else k=0;B)if((a>b)||(b>c) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;20)有以下程序#include{ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运行后的输出结果是A)0B)2C)3D)5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A)0 2B)1 3C)5 7D)1 2(22)有以下定义语句,编译时会出现编译错误的是A)char a=’a’;B)char a=’\n’;C)char a=’aa’;D)char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68C)E,DD)输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i<N;I++)< p="" />{ max=MIN;if(maxreturn max;}造成错误的原因是A)定义语句int i,max;中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A)3 3 4 4B)2 0 5 0C)3 0 4 0D)0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A)void (*pf)(); pf=fun;B)viod *pf(); pf=fun;C)void *pf(); *pf=fun;D)void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A)7B)8C)9D)10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A)char str[ ]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

2009年9月二级C语言笔试真题及答案

2009年9月二级C语言笔试真题及答案

2009年9月二级C语言笔试真题及答案一、选择题(每题2分,共计70分)1.(1)下列数据结构中,属于非线性结构的是A)循环队列B)带链队列C)二叉树D)带链栈(2)下列数据结构中,能够按照“先进后出”原则存取数据的是A)循环队列B)栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)件设计中划分模块的一个准则是A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A)可封装B)自顶向下C)模块化D)逐步求精(7)软件详细设计产生的图如下:该图是A)N-S图B)PAD图C)程序流程图D)E-R图8.(8)数据库管理系统是A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统9.(9)在E-R图中,用来表示实体联系的图形是A)椭圆形B)矩形C)菱形D)三角形10.(10)有三个关系R,S,和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A)选择B)投影C)交D)并11.(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用的数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整12.(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned13.(13)阅读以下程序#includemain(){int case;float printF;printf("请输入2个数:");scanf("%d%f",&case,&printF);printf("%d%f\n",case,printf);}该程序在编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无措,printf不能输出case的值14.(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)515.(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)1016.(16)有以下程序#includemain(){int a=1,b=0;printf("%d,",b=a+b);printf("%d",a=2*b);}程序运行后的输出结果是A)0,0B)1,0C)3,2D)1,217.(17)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}C)if(a>b)c=a;a=b;b=c;D)if(a>b){c=a;a=b;b=c;}18.(18)有以下程序#includemain(){int c=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf("%d\n",c);}程序运行后的输出结果是A)3B)5C)7D)919.(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c))k=1;else k=0;B)if((a>b)||(b>c))k=1;else k=0;C)if(a<=b)k=0;else if(b<=c)k=1;D)if(a>b)k=1;else if(b>c)k=1;else k=0;20.(20)有以下程序#includemain(){char s[]={"012xy"};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>'a'&&s[i]<='z')n++;printf("%d\n",n);}程序运行后的输出结果是A)0B)2C)3D)521.(21)有以下程序#includemain(){int n=2,k=0;while(k++&&n++>2);printf("%d%d\n",k,n);}程序运行后的输出结果是A)0 2B)1 3C)57D)1 222.(22)有以下定义语句,编译时会出现编译错误的是A)char a='a';B)char a='\n';C)char a='aa';D)char a='\x2d';23.(23)有以下程序#includemain(){char c1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68B)D,69C)E,DD)输出无定值24.(24)有以下程序#includevoid fun(int p){int d=2;p=d++;printf("%d",p);}main(){int a=1;fun(a);printf("%d\n",a);}程序运行后的输出结果是A)32B)12C)21D)2225.(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回, 但程序中有错导致不能实现预定功能#define MIN-2147463647int findmax(int x[],int n){int i,max;for(i=0;i{max=MIN;if(max}return max;}造成错误的原因是A)定义语句int i,max中max未赋值B)赋值语句max=MIN;中,不应该给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置26.(26)有以下程序#includemain(){int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,227.(27)若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][128.(28)有以下程序#include#includemain(){char str[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序运行后的输出结果是A)9,One*WorldB)9,One*Dream!C)10,One*Dream!D)10,One*Wor29.(29)有以下程序#includemain(){int a[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是A)3344B)2050C)3040D)030 430.(30)有以下程序#include#includemain(){char a[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,1031.(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串32.(32)下列函数的功能是fun(char*a,char*b){while((*b=*a)!='\0'){a++;b++;}}A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有'\0'33.(33)设有以下函数:void fun(int n,char*s){……}则下面对函数指针的定义和赋值均正确的是A)void(*pf)();pf=fun;B)void*pf();pf=fun;C)void*pf();*pf=fun;D)void(*pf)(int,char);pf=&fun;34.(34)有以下程序#includeint f(int n);main(){int a=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}int f(int n){static int a=1;n+=a++;return n;}程序运行后的输出结果是A)7B)8C)9D)1035.(35)有以下程序#include#define f(x)x*x*xmain(){int a=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64A B C D36.(36)下面结构体的定义语句中,错误的是A)struct ord{int x;int y;int z;};struct ord a;B)struct ord{int x;int y;int z;}struct ord a;C)struct ord{int x;int y;int z;}n;D)struct{int x;int y;int z;}a;37.(37)设有定义:char*c;以下选项中能够使字符型指针C正确指向一个字符串的是A)char str[]="string";c=str;B)scanf("%s",c);C)c=getchar();D)*c="string";38.(38)有以下程序#include#includestruct A{int a;char b[10];double c;};struct A f(struct A t);main(){struct A a={1001,"ZhangDa",1098.0};a=f(a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}struct A f(struct A t){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;return t;}程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1002,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1002,ChangRong,1202.039.(39)有以下程序int r=8;printf("%d\n",r>>1);输出结果是A)16B)8C)4D)240.(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据一次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,只能是文本文件二、填空题(每空2分,共计30分)1.(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本文由施子轶贡献 doc文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

2009 年 秋季度 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试 第二部分 C 语言程序设计 一、选择题 1、 以下叙述中正确的是( ) A. C 语言系统以函数为单位编译源程序 B. main 函数必须放在程序开始 C. 用户定义的函数可以被一个或多个函数调用任意多次 D. 在一个函数体内可以定义另外一个函数 2、 以下选项中,不能用作 C 语言标识符的是( ) A.print B.FOR C.&a D._00 3、 已知 int 类型数据在内存中存储长度为 2 个字节,以下语句中能正确输出整数 32768 的 是( ) A.printf(“%d”,32768); B.printf(“%ld”,32768); C.printf(“%f ”,32768); D.printf(“%c ”,32768); 4、 已知有声明”int a=3,b=4,c=5;”,以下表达式中值为 0 的是( ) A.a&&b B.a<=b C.a||b&&c D.!(!c||1) 5、 已知有声明”long x,y;”且 x 中整数的十进制表示有 n 位数字(4<n<10=,若要求去掉整数 x 十进制表示中的最高位,用剩下的数字组成一个新的整数并保存到 y 中,则以下表达 式中能正确实现这一功能的是( ) A.y=x/(10*(n-1)) B.y=x%(10*(n-1)) C.y=x%(long)pow(10,n-1) D.y=x%(10^(n-1)) 6、 已知有声明”long x,y;”,若要求编写一段程序实现“当 x 大于等于 0 时 y 取值 1,否则 y 取值-1” ,则以下程序段中错误的是( ) A.if(x>=0)y=1;else y=-1; B.y=x>=0? 1:-1; C.switch() D.switch(x-abs(x)) { case x>=0:y=1; break; { case 0:y=1; break; default: y=-1; default: y=-1; } } 7、 已知有声明”int m[]={5,4,3,2,1}, i=0;”, 下列对 m 数组元素的引用中, 错误的是 ( ) A.m[++i] B.m[5] C.m[2*2] D.m[m[4]] 8、 已知有声明”char s[80];”,若需要将键盘输入的一个不含空格的字符串保存到 s 数组中, 则下列语句中正确的是( ) A.scanf(“%s”,s); B.scanf(“%s”, s[0]); C.s=gets(); D.s=getchar(); 9、 若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是( ) A. 实参和其对应的形参占用同一个存储单元 B. 形参不占用存储单元 C. 同名的实参和形参占用同一存储单元 D. 形参和实参占用不同的存储单元 10、已知有声明”int i, a[10], *p=a;”,现需要将 1 ̄10 保存到 a[0] ̄a[9]中,以下程序段中不能 实现这一功能的是( ) A.for (i=0;i<10;i++) a[i]=i+1; B.for(i=0;i<10;i++) p[i]=i+1; C.i=1; while(p void main() { FILE *fp; int k,n,a[6]={1,2,3,4,5,6}; fp=fopen(“d2.dat”, “w”); fprintf(fp,”%d%d%d\n”, a[0],a[1],a[2]); fprintf(fp,”%d%d%d\n”, a[3],a[4],a[5]); fclose(fp); fp=fopen(“d2.dat”, “r”); fscanf(fp, “%d%d”, &k,&n); printf(“%d,%d\n”, k,n); fclose(fp); } 7、以下程序运算时输出到屏幕的结果是 。

 #include void main() { int i=1,m=0; switch(i) { case 1: case 2: m++; case 3: m++; } printf(“%d”, m); 。

} 8、以下程序运算时输出到屏幕的结果中第一行是 #include void fun(int a[], int b[], int *x) { int i,j=0; for(i=0;a[i];i++) { if(i%2==0) continue; if(a[i]>10) b[j++]=a[i]; } *x=j; } void main() { int a[10]={3,15,32,23,11,4,5,9}, b[10]; int i=0,x=0; fun(a,b,&x); for(i=0;i<x;i++) printf(“%d\t”,b[i]); printf(“\n%d”,x); } 9、以下程序运算时输出到屏幕的结果是 #include int fun(int *x,int n) { if(n==0) return x[0]; else return x[0]+fun(x+1,n-1); } void main() { int a[]={1,2,3,4,5,6,7}; printf(“%d\n”,fun(a,2)); } 10、以下程序运算时输出到屏幕的结果是 #include long f(int n) { static long s; if(n==1) return s=2; else return ++s; } void main() { long i,sum=0; for(i=1;i<4;i++) sum+=f(i); printf(“%ld”, sum); } 11、以下程序运算时输出到屏幕的结果中第一行是 #include ,第二行是 。

,第二行是 。

#define f(x,y) y=x*x void g(int x, int y) { y=x*x; } void main() { int a=2,b=0,c=2,d=0; f(a,b); g(c,d); printf(“%d\n%d”,b,d); } 12、以下程序运算时输出到屏幕的结果中第一行是 #include void main() { int a[3][3]={{3,8,12},{4,7,10},{2,5,11}},i,j,k,t; for(j=0;j<3;j++) for(k=0;k<2;k++) for(i=0;i<2-k;i++) if(a[i][j]>a[i+1][j]) t=a[i][j],a[i][j]=a[i+1][j],a[i+1][j]=t; for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%3d”,a[i][j]); printf(“\n”); } } 13、以下程序运算时输出到屏幕的结果是 。

 #include #include void main() { int i=0,n=0;char s[80],*p; strcpy(s,”It is a book.”); for(p=s;*p!=’\0’;p++) if(*p==’ ’) i=0; else if(i==0) { n++;i=1; } printf(“%d\n”,n); } 14、以下程序运算时输出到屏幕的结果中第一行是 #include typedef struct fact { int m,z; }FACT; FACT fun1(FACT t1, FACT t2) ,第二行是 。

,第二行是 。

{ FACT t3; t3.m=t1.m*t2.m; t3.z=t1.z*t2.m+t2.z*t1.m; return t3; } FACT fun2(FACT t) { int m,n,k; m=t.m; n=t.z; while(k=m%n) { m=n; n=k; } t.m=t.m/n ; t.z=t.z/n ; return t; } void main() { FACT s,s1={8,4},s2={6,5}; s=fun1(s1,s2); printf(“%d,%d\n”,s.z,s.m); s=fun2(s); printf(“%d,%d”,s.z,s.m); } 完善程序 15、以下程序求方程的一个近似根。

root 函数采用二分法计算并返回方程 f(x)=0 在[a,b]内的 一个近似根,main 函数调用 root 函数求方程 cos(x)=0 在[0,3.14]内的一个近似根。

试完善程 序以达到要求的功能。

 #include #include<math.h> double root(double a, double b, double (*f)(double)) { double x,y; ) if( { printf(“There is no root between %f and %f”, a,b); return 0; } do { x= ; y=f(x); if(fabs(y)<1e-6||fabs(b-a)<1e-6) break; if( <0) b=x; else a=x; }while(1); return x; } void main() { printf(“\n x=%f”, root(0,3.14, )); } 16、 以下程序在 3 ̄50 范围内验证: 大于等于 3 的两个相邻素数的平方之间至少有 4 个素数。

 2 2 例如,3 和 5 是相邻素数,3  ̄5 之间有素数 11、13、17、19、23。

试完善程序以达到要求 的功能。

 #include #include #include<math.h> int prime(int n) { int i; for(i=2;i<=sqrt(n);i++) if( )return 0; return 1; } void main() { int i,j,k=0,m,n,c,a[30]={0}; for(i=3;i<50;i++) if(prime(i)) ; for(i=0;i<k-1;i++) { m=a[i]*a[i]; n=a[i+1]*a[i+1]; c= ; for(j=m+1;j<n;j++) if( ) c++; if(c>=4) printf(“\n %d*%d-%d*%d: %d”,a[i],a[i],a[i+1],a[i+1],c); else {printf(“Error”);exit(0);} } } 17、fun 函数的功能是删除 s 指向的链表中满足以下条件的结点:该结点的编号值是奇数且 存放的字母 ASCII 编码值也为奇数(提示:a 的 ASCII 编码是 97) ;将删除的结点添加到 t 所指向的链表尾部。

相关文档
最新文档