c语言历年真题及答案
❶ 2011年三月全国计算机二级c真题及答案
2011年3月计算机二级c真题
一、 选择题
(1)下列关于栈叙述正确的是
A)栈顶元素最先能被删除
B)栈顶元素最后才能被删除
C)栈底元素永远不能被删除
D)以上三种说法都不对
(2)下列叙述中正确的是
A)有一个以上根结点的数据结构不一定是非线性结构
B)只有一个根结点的数据结构不一定是线性结构
C)循环链表是非线性结构
D)双向链表是非线性结构
(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)
A)3 B)4 C)6 D)7
(4)在软件开发中,需求分析阶段产生的主要文档是
A)软件集成测试计划 B)软件详细设计说明书
C)用户手册 D)软件需求规格说明书
(5)结构化程序所要求的基本结构不包括
A)顺序结构 B)GOTO跳转
C)选择(分支)结构 D)重复(循环)结构
(6)下面描述中错误的是
A)系统总体结构图支持软件系统的详细设计
B)软件设计是将软件需求转换为软件表示的过程
C)数据结构与数据库设计是软件设计的任务之一
D)PAD图是软件详细设计的表示工具
(7)负责数据库中查询操作的数据库语言是
A)数据定义语言
B)数据管理语言
C)数据操纵语言
D)数据控制语言
(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是
A)1:1联系 B)1:m联系
C)m:1联系 D)m:n联系
(9)有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是
A)自然连接 B)交 C)除 D)并
(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是
A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}
(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是
A)c语言程序仅可以编译执行
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对
(12)以下叙述中错误的是
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能直接在计算机上运行
C)通过编译得到的二进制目标程序需要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
> (13)以下选项中不能用作C程序合法常量的是
A)1,234 B)'123'
C)123 D)"\x7G"
(14)以下选项中可用作C程序合法实数的是
A).1e0 B)3.0e0.2
C)E9 D)9.12E
(15)若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是
A)a=(b=4)=3; B)a=b=c+1;
C)a=(b=4)+c; D)a=1+(b=c=4);
(16)有以下程序段
char name[20];
int num;
scanf("name=%s num=%d",name;&num);
当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为
A)Lili
B)name=Lili
C)Lili num=
D)name=Lili num=1001
(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是
A)必须是逻辑值 B)必须是整数值
C)必须是正数 D)可以是任意合法的数值
(18)有以下程序
#include
main()
{ int x=011;
printf("%d\n",++x);
}
程序运行后的输出结果是
A)12 B)11 C)10 D)9
(19)有以下程序
#include
main()
{ int s;
scanf("%d",&s);
while(s>0)
{ switch(s)
{ case1:printf("%d",s+5);
case2:printf("%d",s+4); break;
case3:printf("%d",s+3);
default:printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
运行时,若输入1 2 3 4 5 0<回车>,则输出结果是
A)6566456 B)66656 C)66666 D)6666656
(20)有以下程序段
int i,n;
for(i=0;i<8;i++)
{ n=rand()%5;
switch (n)
{ case 1:
case 3:printf("%d\n",n); break;
case 2:
case 4:printf("%d\n",n); continue;
case 0:exit(0);
}
printf("%d\n",n);
}
以下关于程序段执行情况的叙述,正确的是
A)for循环语句固定执行8次
B)当产生的随机数n为4时结束循环操作
C)当产生的随机数n为1和2时不做任何操作
D)当产生的随机数n为0时结束程序运行
(21)有以下程序
#include
main()
{ char s[]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n",n);
}
程序运行后的输出结果是
A)0 B)3 C)7 D)8
(22)若i和k都是int类型变量,有以下for语句
for(i=0,k=-1;k=1;k++) printf("*****\n");
下面关于语句执行情况的叙述中正确的是
A)循环体执行两次
B)循环体执行一次
C)循环体一次也不执行
D)构成无限循环
(23)有以下程序
#include
main()
{ char b,c; int i;
b='a'; c='A';
for(i=0;i<6;i++)
{ if(i%2) putchar(i+b);
else putchar(i+c);
} printf("\n");
}
程序运行后的输出结果是
A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef
(24)设有定义:double x[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是
A)scanf("%f",&x[6]); B)scanf("%lf",*(x+6));
C)scanf("%lf",p+6); D)scanf("%lf",p[6]);
(25)有以下程序(说明:字母A的ASCII码值是65)
#include
void fun(char *s)
{ while(*s)
{ if(*s%2) printf("%c",*s);
s++;
}
}
main()
{ char a[]="BYTE";
fun(a); printf("\n");
}
程序运行后的输出结果是
A)BY B)BT C)YT D) YE
(26)有以下程序段
#include
main()
{ …
while( getchar()
!='\n');
…
}
以下叙述中正确的是
A)此while语句将无限循环
B) getchar()不可以出现在while语句的条件表达式中
C)当执行此while语句时,只有按回车键程序才能继续执行
D)当执行此while语句时,按任意键程序就能继续执行
(27)有以下程序
#include
main()
{ int x=1,y=0;
if(!x) y++;
else if(x==0)
if (x) y+=2;
else y+=3;
printf("%d\n",y);
}
程序运行后的输出结果是
A)3 B)2 C)1 D) 0
(28)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是
A)p=s; B)p=k; C)p=s[0]; D)k=s;
(29)有以下程序
#include
void fun(char *c)
{ while(*c)
{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
c++;
}
}
main()
{ char s[81];
gets(s); fun(s); puts(s):
}
当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是
A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing
(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
#include
#define N 10
void fun(int x[N])
{ int i=0;
while(i
}
在程序中下划线处应填入的是
A)x+i B)&x[i+1]
C)x+(i++) D)&x[++i]
(31)有以下程序
#include
main()
{ char a[30],b[30];
scanf("%s",a);
gets(b);
printf("%s\n %s\n",a,b);
}
程序运行时若输入:
how are you? I am fine<回车>
则输出结果是
A)how are you? B)how
I am fine are you? I am fine
C)how are you? I am fine
D)row are you?
(32)设有如下函数定义
int fun(int k)
{ if (k<1) return 0;
else if(k==1) return 1;
else return fun(k-1)+1;
}
若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是
A)2 B)3 C)4 D)5
(33)有以下程序
#include
int fun (int x,int y)
{ if (x!=y) return ((x+y);2);
else return (x);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是
A)3 B)6 C)8 D)12
(34)有以下程序
#include
int fun()
{ static int x=1;
x*=2;
return x;
}
main()
{ int i,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是
A)0 B)10 C)30 D)64
(35)有以下程序
#include
#define S(x) 4*(x)*x+1
main()
{ int k=5,j=2;
printf("%d\n",S(k+j));
}
程序运行后的输出结果是
A)197 B)143 C)33 D)28
(36)设有定义:struct {char mark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是
A)t1=t2; B)t2.num1=t1.num1;
C)t2.mark=t1.mark; D)t2.num2=t1.num2;
(37)有以下程序
#include
struct ord
{ int x,y;}dt[2]={1,2,3,4};
main()
{
struct ord *p=dt;
printf("%d,",++(p->x)); printf("%d\n",++(p->y));
}
程序运行后的输出结果是
A)1,2 B)4,1 C)3,4 D)2,3
(38)有以下程序
#i
nclude
struct S
{ int a,b;}data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf("%d\n",++(p.a));
}
程序运行后的输出结果是
A)10 B)11 C)20 D)21
(39)有以下程序
#include
main()
{ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程序运行后的输出结果是
A)32 B)16 C)1 D)0
(40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是
A)写操作结束后可以从头开始读 B)只能写不能读
C)可以在原有内容后追加写 D)可以随意读和写
二、填空题
(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。
(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。
(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为 【3】测试。
(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。
(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】是关系A的外码。
(6)以下程序运行后的输出结果是 【6】 。
#include
main()
{ int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}
(7)有以下程序
#include
main()
{ int x;
scanf("%d",&x);
if(x>15) printf("%d",x-5);
if(x>10) printf("%d",x);
if(x>5) printf("%d\n",x+5);
}
若程序运行时从键盘输入12<回车>,则输出结果为 【7】 。
(8)有以下程序(说明:字符0的ASCII码值为48)
#include
main()
{ char c1,c2;
scanf("%d",&c1);
c2=c1+9;
printf("%c%c\n",c1,c2);
}
若程序运行时从键盘输入48<回车>,则输出结果为 【8】 。
(9)有以下函数
void prt(char ch,int n)
{ int i;
for(i=1;i<=n;i++)
printf(i%6!=0?"%c":"%c\n",ch);
}
执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。
(10)以下程序运行后的输出结果是 【10】 。
#include
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d %d\n",x,y);
}
(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。
void fun(int a[N],int k)
{ int i;
for(i=k;i
}
(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。
#include
【12】 ;
main()
{ double x,y,(*p)();
scanf("%lf%lf",&x,&y);
p=avg;
printf("%f\n",(*p)(x,y));
}
double avg(double a,double b)
{ return((a+b)/2);}
(13)以下程序运行后的输出结果是 【13】 。
#include
main()
{ int i,n[5]={0};
for(i=1;i<=4;i++)
{ n[i]==n[i-1]*2+1; printf("%d",n[i]); }
printf("\n");
}
(14)以下程序运行后的输出结果是 【14】 。
#include
#include
#include
main()
{ char *p; int i;
p=(char *)malloc(sizeof(char)*20);
strcpy(p,"welcome");
for(i=6;i>=0;i--) putchar(*(p+i));
printf("\n-"); free(p);
}
(15)以下程序运行后的输出结果是 【15】 。
#include
main()
{ FILE *fp; int x[6]={1,2,3,4,5,6},i;
fp=fopen("test.dat","wb");
fwrite(x,sizeof(int),3,fp);
rewind(fp);
fread(x,sizeof(int),3,fp);
for(i=0;i<6;i++) printf("%d",x[i]);
printf("\n");
fclose(fp);
}
2011年3月计算机二级c答案:
一、选择题
01-10:ABDDB ACDCB
11-20:ADBAA ADCAD
21-30:BDBCD CDCCC
31-40:BBBDB CDDCB
二、填空题
1.有序 2.DEBFCA 3.单元 4.主 5.D 6.3 7.1217 8.09 9.4 10.20 0
11.i-1 12.double avg(double a, double b); 13.13715 14.emoclew 15.123456
❷ 国二C语言到底考什么
国家二级C语言的考纲分两部分:公共基础知识和C语言。
具体内容如下:
公共基础知识 考试大纲
◆ 基本要求
1.掌握算法的基本概念。
2.掌握基本数据结构及其操作。
3.掌握基本排序和查找算法。
4.掌握逐步求精的结构化程序设计方法。
5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。
6.掌握数据库的基本知识,了解关系数据库的设计。
◆ 考试内容
一、基本数据结构与算法
1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。
2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。
3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。
4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。
5.线性单链表、双向链表与循环链表的结构及其基本运算。
6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。
7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。
二、程序设计基础
1.程序设计方法与风格。
2.结构化程序设计。
3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。
三、软件工程基础
1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。
2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。
3.结构化设计方法,总体设计与详细设计。
4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。
5.程序的调试,静态调试与动态调试。
四、数据库设计基础
1.数据库的基本概念:数据库,数据库管理系统,数据库系统。
2.数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型。
3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。
4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。
◆ 考试方式
公共基础知识有10道选择题和5道填空题共三十分
C语言 考试大纲
◆ 基本要求
1.熟悉 Visual C++ 6.0 集成开发环境。
2.掌握结构化程序设计的方法,具有良好的程序设计风格。
3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。
4.在 Visual C++ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力
◆ 考试内容
一、C语言程序的结构
1.程序的构成,main函数和其他函数。
2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。
3.源程序的书写格式。
4.C语言的风格。
二、数据类型及其运算
1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。
2.C运算符的种类、运算优先级和结合性。
3.不同类型数据间的转换与运算。
4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
三、基本语句
1.表达式语句,空语句,复合语句。
2.输入输出函数的调用,正确输入数据并正确设计输出格式。
四、选择结构程序设计
1.用if语句实现选择结构。
2.用switch语句实现多分支选择结构。
3.选择结构的嵌套。
五、循环结构程序设计
1.for循环结构。
2.while和do-while循环结构。
3.continue语句和break语句。
4.循环的嵌套。
六、数组的定义和引用
1.一维数组和二维数组的定义、初始化和数组元素的引用。
2.字符串与字符数组。
七、函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。
4.形式参数与实在参数,参数值传递。
5.函数的正确调用,嵌套调用,递归调用。
6.局部变量和全局变量。
7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
八、编译预处理
1.宏定义和调用(不带参数的宏,带参数的宏)。
2.“文件包含”处理。
九、指针
1.地址与指针变量的概念,地址运算符与间址运算符。
2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。
❸ 全国计算机等级考试二级C语言考试内容有些什么
分笔试和上机考:
一、笔试 选择40题,前10题为公共基础知识
(1)、填空15题,前5题为公共基础知识
(2)、只有C部分的前10题(即11~20)每题1分,其余填空选择都是2分,满分100分,时间90分钟。
二、上机 填空、改错和程序设计题
(1)填空题一般有2到3个空,需要删除对应的空后,在删除的位置填上正确的答案。(30分)
(2)、改错题的错误在/********found******/下面,不要改动其它的地方。(2~3个,30分)。
(3)、然后就是程序设计题啦,40分,考试时间90分钟,上机考试每题完成后一定记得运行。
(3)c语言历年真题及答案扩展阅读
1、熟悉Visual C++6. 0集成开发环境。
2、掌握结构化程序设计的方法,具有良好的程序设计风格。
3、掌握程序设计中简单的数据结构和算法并能阅读简单的程序。
4、在Visual C++6. 0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。
❹ 2020计算机二级c语言考试真题
如何获取计算机C语言考试资料呢?也就是往年的考试真题的资料。
2020C语言考点的话。可以去买未来教育的书考试真题的所有类型里面都有的,这个我不是很推荐买,看个人需求。2020年的C语言考试真题也在里面。或者官网上可查询题目。如果是视频的话,自己去搜索。如果是软件的话,我也推荐买个未来教育的,单买个软件也不贵,需橡晌要的话自己去搜,我只是推荐你们可以买,这个软件当时我也用过,是挺不错的。里面有各个知识点的题目,也有整套的题目,也有答案解析,也有模拟考试的,不过有的功能好像是要另外付费的,你们可以自己去了解一下。以下是其中的部分真题衫伍。
计算机二级C语言考公共基础知识部分10%,C语言部分90%。参照复习的话,我推荐你们最好去搜一下计算机二级C语言的网课,去看网课,如果说你们不想做笔记的话可以到购买C语言考试笔记的奥。如果你有心准备,二级C语言只需要一个月的时间就可以搞定!当然有基础的话肯定不需要这么多时间。如果你有基础的话,我推荐你先去看公共基础知识的网课用1.5倍速,甚至2倍速,重点是把里面的知识点理清,靠看网课完全背不下来的,大部分题都是从题库里面抽出来的,我们的目的并不是说只为了抽中你会的题目而去刷,而是这就是真题。最后,祝愿小或如或伙伴们考试顺利。
❺ 求09年3月份全国计算机等级考试二级c语言笔试试题的详细讲解
09年3月全国计算机等级考试二级C笔试真题(附答案)(考试时间90分钟,满分100分)一、选择题(1)下列叙述中正确的是 A) 栈是先进先出(FIFO)的线性表B) 队列是先进先出(FIFO)的线性表C) 循环队列是非线性结构D) 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是 A) 栈 B) 树 C) 队列 D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10 B)8 C)6 D)4(4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计 B)数据库系统设计C)数据库维护 D) 数据库管理员培训(9)有两个关系R,S如下:R SA B C A Ba 3 2 a 3b 0 1 b 0c 2 1 c 2 由关系R通过运算得到关系S,则所使用的运算为A) 选择 B)投影 C) 插入 D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A) 属性 B)键 C) 关系 D) 域(11)以下选项中合法的标识符是 A) 1-1 B)1—1 C)-11 D)1--(12)若函数中有定义语句:int k;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值(13)以下选项中,能用作数据常量的是 A)o115 B) 0118 C)1.5e1.5 D) 115L(14)设有定义:int x=2; ,以下表达式中,值不为6的是A) x*=x+1 B) x++,2*x C)x*=(1+x) D)2*x,x+=2(15)程序段:int x=12; double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是A)123.141593 B)12 3.141593 C)12,3.141593 D)123.141593(16)若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是 A)scanf(“%f%f”,x,y); B) scanf(“%f%f”,&x,&y); C) scanf(“%lf%le”,px,py); D) scanf(“%lf%lf”,x,y);(17)以下是if语句的基本形式:if (表达式) 语句,其中表达式A)必须是逻辑表达式 B)必须是关系表达式C)必须是逻辑表达式或关系表达式 D)可以是任意合法的表达式(18)有以下程序#include <stdio.h>main(){int x;</p><p>scanf(“%d”,&x);</p><p>if(x<=3); else</p><p>if(x!=10) printf(“%d\n”,x);</p><p>}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数 B)大于3且不等于10的整数C) 大于3或等于10的整数 D)小于3的整数(19)有以下程序#include<stdio.h>Main(){ int a=1,b=2,c=3,d=0;if(a= =1 &&b++= =2)if(b!=2 || c--!=3) printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);else printf(“%d,%d,%d\n”,a,b,c);}程序运行后的输出结果是A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1(20)以下程序中的变量已正确定义for(i=0;i<4;i++,i++for(k=1;k<3;k++);printf(“*”);程序段的输出结果是A)******** B)**** C)** D)*(21)有以下程序#include<stdio.h>main(){char *s=(“ABC);</p><p>do</p><p>{printf(“%d”,*s%10);s++;</p><p>}while(*s);}注意,字母A的ASCII码值为65。程序运行后的输出结果是A)5670 B)656667 C)567 D)ABC(22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!=’\n’)n++; B) n=0;while(getchar()!=’\n’)n++;C)for(n=0; getchar()!=’\n’;n++); D)n=0;for(ch=getchar();ch!=’\n’;n++);(23)有以下程序#include<stdio.h>main(){ int a1,a2;char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);printf(“%d,%c,%d,%c”,&1,c1,a2,c2);}若想通过键盘输入,使得a1的值为12,a2的是为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下 代表空格,<CR>代表回车)A)12a34b<CR> B)12 a 34 b<CR>C)12,a,34,b<CR> D)12 a34 b<CR>(24)有以下程序#include<stdio.h>int f(int x,int y){return()y-x)*x);}main(){int a=3,b=4,c=5,d;</p><p>d=f(f(a,b),f(a,c));</p><p>printf(“%d\n”,d);</p><p>}程序运行后的输出结果是A)10 B)9 C)8 D)7(25)有以下程序#include<stdio.h>void fun(char *s){while(*s)</p><p> { if(*s%2==0) printf(“%c”,*s);</p><p>s++;</p><p> }}main(){ char a[]={“good”}; fun(a);printf(“\n”);}注意:字母a的ASCII码值为97,程序运行后的输出结果是A)d B)go C)god D)good(26)有以下程序#include <stdio.h>void fun( int *a,int *b){int *c;</p><p>c=a;a=b;b=c;</p><p>}main(){int x=3,y-5,*P=&x,*q=&y;</p><p> fun(p,q);printf(“%d,%d,”,*p,*q);</p><p>fun(&x,&y);printf(“%d,%d\n”,*p,*q);</p><p>}程序运行后的输出结果是A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3(27)有以下程序#include <stdio.h>void f(int *p,int *q );main(){ int m=1,n=2,*r=&m; f(r,&n);printf(“%d,%d”,m,n);}void f(int *p,int *q){p=p+1;*q=*q+1;}程序运行后输出的结果是A)1,3 B)2,3 C)1,4 D)1,2(28)以下函数按每行8个输出数组中的数据void fun( int *w,int n){ int i; for(i=0;i<n;i++) {________</p><p> printf(“%d”,w);</p><p> } printf(“\n”);}下划线处应填入的语句是A)if(i/8==0)print(“\n”); B) if(i/8==0)continue;C) if(i%8==0)print(“\n”); D) if(i%8==0)continue;(29)若有以下定义 int x[10],*pt=x;则对x数组元素的正确应用是A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3 (30)设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是A gets(s) B)while((s[i++]=getchar())!=”\n”;s=”\0”;C)scanf(“%s”,s);D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;(31)有以下程序#include <stdio.h>main(){ char *a[ ]={“abcd”,”ef”,”gh”,”ijk”};int I; for (i=0;i<4;i++) printf(“%c”,*a);}程序运行后输出的结果是A)aegi B)dfhk C)abcd D)abcdefghijk(32)以下选项中正确的语句组是A)char s[];s=”BOOK!”; B) char *s;s={”BOOK!”};C)char s[10];s=”BOOK!”; D) char *s;s=”BOOK!”;(33)有以下程序#include <stdio.h>int fun{int x,int y}{ if(x==y) return(x); else return((x+y)/2)}main(){ int a=4,b=5,c=6; printf(“%d\n”,fun(2*a,fun(b,c)))}程序运行后的输出结果是A)3 B)6 C)8 D)12(34)设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是A)auto B) register C)static D)auto或register(35)有以下程序#include <stdio.h>int b=2;int fun(int *k){ b=*k+b;return(b);}main(){ int a[10]={1,2,3,4,5,6,7,8},I; for(i=2;i<4;i++) {b=fun(&a)+b;printf(“%d”,b);} printf(“\n”);}程序运行后输出的结果是A)10 12 B)8 10 C)10 28 D)10 16(36)有以下程序#include <stdio.h>#define PT 3.5;#define S(x) PT*x*x;main(){ int a=1, b=2; printf(“%4.1f\n”,S(a+b));}程序运行后输出的结果是A)14.0 B)31.5 C)7.5 D)程序有错无输出结果(37)有以下程序#include <stdio.h>struct ord{ int x,y;} dt[2]={1,2,3,4};main(){ struct ord *p=dt; printf (“%d,”,++p->x); printf(“%d\n”,++p->y);}程序的运行结果是A)1,2 B)2,3 C)3,4 D)4,1(38)设有宏定义:#include IsDIV(k,n) ((k%n==1)?1:0且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&& IsDIV(m,7)为真时所要表达的是A)判断m是否能被5或者7整除B)判断m是否能被5和7整除C)判断m被5或者7整除是否余1D)判断m被5和7整除是否余1(39)有以下程序#include <stdio.h>main(){ int a=5,b=1,t; t=(a<<2|b); printf(“%d\n”,t) }程序运行后的输出结果是A)21 B)11 C)6 D)1(40)有以下程序#include <stdio.h>main(){ FILE *f; f=fopen(“filea.txt”,”w”); fprintf(f,”abc”); fclose(f);}若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为A) helloabc B)abclo C)abc D)abchello 二、填空题(每空2分,共30分) 请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有 【1】 个元素。(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于 【2】 测试。(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和 【3】 。(4)数据库系统的核心是 【4】(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 【5 】框。(6)表达式(int)((double)(5/2)+2.5)的值是【6】(7)若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(【7】,x/y);补充完整,使其输出的计算结果形式为:x/y=11(8)有以下程序#include <stdio.h>main( ){ char c1,c2; scanf(“&c”,&c1); while(c1<65||c1>90) scanf(“&c”,&c1); c2=c1+32; printf(“&c, &c\n”,c1,c2);}程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8】 。 (9)以下程序运行后的输出结果是【9】#include <stdio.h>main( ){int k=1,s=0;</p><p>do{</p><p>if{((k&2)!=0)continue;</p><p>s+=k;k++;</p><p>}while(k)10);printf(“s=&d/n”,s);} (10)下列程序运行时,若输入labced12df<回车> 输出结果为【10】 #include <stdio.h>main( ){char a =0,ch;</p><p>while((ch=getchar())!=’\n’)</p><p>{if(a&2!=0&&(ch>’a’&&ch<=’z’)) ch=ch-‘a’+’A’;</p><p>a++;putchar(ch);</p><p>}printf(“\n”);}(11)有以下程序,程序执行后,输出结果是【11】#include <stdio.h>void fun (int *a){a[0=a[1];]}main(){int a[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--) fun{&a};for(i=0;i<10;i++) printf(“&d”,a);printf(“\n”);}(12)请将以下程序中的函数声明语句补充完整#include <stdio.h>int【12】 ;main( ){int x,y,(*p)();</p><p>p=max;</p><p>printf(“&d\n”,&x,&y);</p><p>}Int max(int a,int b){return (a>b/a:b);}(13)以下程序用来判断指定文件是否能正常打开,请填空#include <stdio.h>main( ){FILE *fp;</p><p>if (((fp=fopen(“test.txt”,”r”))==【13】))</p><p>printf(“未能打开文件!\n”);</p><p>else</p><p>printf(“文件打开成功!\n”);</p><p>(14)下列程序的运行结果为【14】</p><p>#include <stdio.h></p><p>#include <string.h></p><p>struct A</p><p>{int a;char b[10];double c;};void f (struct A *t);main(){struct A a=(1001,”ZhangDa”,1098,0);</p><p>f(&a);printf(“&d,&s,&6,if\n”,a.a,a.b,a.c);</p><p>}void f(struct A *t){strcpy(t->b,”ChangRong”); }(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空#include <stdio.h>struct node{int data; struct node *next;};typedef struct node NODETYPE;main(){NODETYPE a,b,c,*h,*p;</p><p>a. data=10;b.data=20;c.data=30;h=&a;</p><p>b. next=&b;b.next=&c;c.next=’\0’;</p><p>p=h;</p><p>while(p){printf(“&d”,p->data);【15】;}} 2009年4月NCRE二级C参考答案选择题:1~10: DACDC ABABC11~20:CBDDA CDBCB21~30:CDABA BACBC31~40:ADBCC CBDAC 填空题:(1)19(2)白盒(3)顺序结构(4)数据库管理系统(DBMS)(5)菱形(6)4(7)"x/y=%d"(8)能(9)s=0(10)1AbCeDf2dF(11)7777654321(12)max(int a,int b)(13)NULL(14)1001,ChangRong,1098.0(15)p=p—>next