
附件上传失败
C语言期末考试题及答案(1)
1、构成C语言的基本单位是___B____。
过程
语句
命令
2、设x为整型变量,不能正确表达数学关系:5<x<10的c语言表达式是__B___。
5
x>5&&x<10
x==6||x==7||x==8||x==9
!(x<=5)&&(x<10)
3、在C语言中,逻辑运算符的优先级从高到低的排列顺序为__D___。
&&、||、!
||、&&、!
&&、!、||
!、&&、||
4、下面语句中,正确的是__D___。
printf("%c\n","student");
printf("%c\n","c");
printf("%s\n",&a);
printf("%s\n","hello");
5、对于for(表达式1;;表达式3)可以理解为__B___。
for(表达式1;0;表达式3)
for(表达式1;1;表达式3)
for(表达式1;表达式1;表达式3)
for(表达式1;表达式3;表达式3)
6、执行下面程序段的结果是__B___。 main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d",a,b); }
a=1,b=1
a=2,b=1
a=1,b=0
a=2,b=2
7、执行下面程序段的结果是__D___。 int x=0; do { printf(“%2d”,x--); }while(x);
打印出321
打印出23
不打印任何结果
陷入死循环
8、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___。 If(x>y) if(y>z)x=y; else z=y;
7
6
5
4
9、如果一个函数被说明为static,那么__B___。
该函数只能被main函数调用
该函数能被当前文件的函数调用,但不能被其他文件的函数调用
该函数不能被当前文件的函数调用,可以被其他文件的函数调用
任何文件的函数都可以调用该函数
10、下面关于局部变量的描述中,错误的是__D___。
函数的局部变量的有效范围只能在本函数
函数的形式参数也是局部变量
局部变量的名称不能和函数同名称
不同的函数中不能定义相同名称的局部变量
11、下列初始化字符数组的语句中,错误的是__A___。
char str[5]="hello";
char str[]={'h','e','l','l','o','\0'};
char str[5]={"hi"};
char str[100]="";
12、引用数组元素时,数组下标可以是__D___。
整型常量
整型变量
整型表达式
以上均可
13、 已知:char str[10],p=str; 下面的语句中正确的是__B___。
str="ABC";
p="ABC";
str="ABC";
p="ABC";
14、下面语句中,错误的是___D__。
int i;int p;p=&i;
int i,p;p=&a;
int i,p=&a;
int i,p;p=i;
15、下面对于结构体类型的描述正确的是__A___。
结构体类型的大小为各成员变量所占内存的总和
结构体类型变量与简单数据类型变量的引用规则一致。
结构体类型的大小为其成员中所占内存空间最大的变量的大小
结构体类型的大小为其最后一个成员中所占内存空间的大小
16、C语言规定:在一个源程序中,main函数的位置____C____。
必须在最开始
必须在系统调用的库函数的后面
可以任意
必须在最后
17、表达式18/4sqrt(40)/8值的数据类型是 ___C____。
int
float
double
不确定
18、在c语言中,char型数据在内存中的存储形式是 ___D___。
补码
反码
原码
ASCII码
19、阅读以下程序,当输入的数据形式为:25,13,10<CR>时,正确的输出结果为___D___。 main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("x+y+z=%d\n",x+y+z); }
x+y+z=48
x+y+z=35
x+z=35
不能确定
20、有如下程序 void main() { float x=20,y; if(x<00) y=00; else if(x<100) y=10/x; else y=10; printf(“%f\n”,y); } 该程序的输出结果是( C )。
0000000
0250000
0500000
1000000
21、判断char型变量s是否为小写字母的正确表达式是__C____。
'a'<=s<='z'
(s>='a')&(s<='z')
(s>='a')&&(s<='z')
('a'<=s)and('z'>=s)
22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y && ++z;
0
1
2
不确定值
23、有如下程序段: int number=0; while(number++<=3) printf(“%d\n”,number++); 则正确的执行结果是___C___。
2 3 4
0 1 2
1 3
2 4
24、有如下程序 void main() { int n=9; while(n>6) { n--; printf(“%d”,n); } } 该程序段的输出结果是__B___。
987
876
8765
9876
25、要使以下程序段输出10个整数,请在空格中填入一个整数。 for(i=0;i<=___B___;printf("%d\n",i+=2));
15
18
20
10
26、设函数fun的定义形式为: fun(char ch,float x){…} 则以下对函数fun的调用语句中正确的是___B___。
fun(“abc”,3)
t=fun(‘D’,5)
fun(‘ab’,3)
fun(‘78’,1)
27、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 Main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。
s=s+n;return s;
s=s+i;return s;
return s;
return s+=I;
28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;i<n;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(&a[2],2)); } 则程序的运行结果为___C___。
3
5
7
9
29、若有说明:int a[10];则对数组元素的正确引用是___D____。
a[10]
a[3,5]
a(5)
a[10-10]
30、以下不正确的定义语句是___B___。
double x[5]={20,4,0,6,0,8,0,100};
int y[5]={0,1,3,5,7,9};
char c1[]={'1','2','3','4','5'};
char c2[]={'\x10','\xa','\x8'};
31、下面程序的运行结果是___B____。 #include "stdioh" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c
SWA
SW
SWA
SW
32、以下能正确进行字符串赋值 *** 作的是___D___。
char s[5]={"12345"};
char s[5]={'1','2','3','4','5',‘6’};
char s;s="12345";
char s="12345";
33、以下程序段的运行结果是___C___。 Char a[ ]="program", p; p=a; while (p!='g') { printf("%c", p-32); p++; }
PROgram
PROGRAM
PRO
proGRAM
34、若有说明:char pc[ ]={"aaa", "bbb", "ccc", "ddd"};,则以下叙述正确的是__C____。
pc[0]代表的是字符串"aaa"的首地址
pc[0]代表的是字符'a'的首地址
pc[0]代表的是字符串"aaa"的首地址
pc[0]代表的是字符'a'的首地址
35、下列程序的运行结果是___B___。 #include <stdioh> #include <stringh> void f (char s, int n) { char a,q1,q2; q1=s;q2=s+n-1; while(q1<q2) { a=q1++; q1=q2--; q2=a;} } main() { char b[]="ABCDEFG"; f(b, s
GAGGAGA
AGAAGAG
GFEDCBA
AGADAGA
36、定义如下的结构体描述同学信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假设此同学的序号为1002,姓名为黎明,班级为冶金3班,则描述正确的为___C__。
id=1002; name=黎明; class=冶金3班;
id=1002; name=”黎明”; class=”冶金3班”;
sid=1002; sname=”黎明”; sclass=”冶金3班”;
sid=1002; sname=黎明; sclass=冶金3班;
37、用来描述C程序中注释的是__C___。
//
38、下列变量中合法的定义是__A___。
short _a=2-1
long if=0xabcL
double 1_d=15e2
float a=15e27
39、当c的值不为0时,能够将c的值赋给变量a和b的是__C___
c=b=a
(a=c)||(b=c)
(a=c)&&(b=c)
a=c=b
40、设有以下程序段,执行后的输出结果是___B__ int x=100,y=200; printf("%d",(x,y));
100
200
100,200
编译出错
C语言期末考试题及答案(2)
1、若执行下面的程序时从键盘输入10,则输出是__B__ main( ) { int a; scanf(“%d”,&a); if(a++>10) printf(“%d\n”,++a); else printf("%d\n",a--); }
12
11
10
9
2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);
打印出321
打印出23
不打印任何结果
陷入死循环
3、执行与句:for(n=0;n++<4; ); 后,变量n的值是__C__。
3
4
5
不定
4、以下关于循环的描述中,错误的是__D___。
可以用for语句实现的循环一定可以用while语句实现
可以用while语句实现的循环一定可以用for语句实现
可以用do…while语句实现的循环一定可以用while语句实现
do…while语句与while语句的区别仅仅是关键字while的位置不同
5、下面的描述错误的是__C__。
函数可以有多个形式参数
函数可以没有返回值
函数内可以嵌套定义函数
函数可以被其他函数调用
6、函数返回值的类型是由__A__决定的。
定义函数时指定的返回类型
函数中return语句的表达式类型
主调函数的实际参数类型
主调函数的返回值类型
7、定义了一维int型数组a[10]后,下面错误的引用是__B__。
a[0]=1;
a[10]=2;
a[0]=52;
a[1]=a[2]a[0];
8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。
24
25
18
17
9、下面语句中,错误的是__D__。
int i; int p; p=&i;
int i,p; p=&a;
int i,p=&a;
int i,p; p=i;
10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。
&a[1][2]
a[1]+2
a[1]+2
(a+1)+2
11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。
char
char=int
char
char=int=long int<=float
12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。
7
8
6
2
13、若有说明语句:char c='\72';则变量c ___A___。
包含1个字符
包含2个字符
包含3个字符
说明不合法,c的值不确定
14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。
scanf("%d%lx,%le",&x,&y,&z);
scanf("%2d %d%lf",&x,&y,&z);
scanf("%x%d%o",&x,&y,&z);
scanf("%x%o%62f",&x,&y,&z);
15、若输入字符串:abcde<回车>,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("");
1次
死循环
0次
5次
16、执行下面的程序段后,k的值是___C___。 k=1;n=263; do{k=n%10;n/=10;}while(n);
3
63
36
2
17、下面程序段中循环的执行次数是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0);
10
3
5
4
18、下面程序段的运行结果是__D____。 x=2; do{printf("");x--;}while(!x==0);
没有输出
19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+si;s=-s;i++;}while(i<=10); printf("%d",a);
2
-2
3
0
20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b<0) c=0; else c++; printf("%d\n",c); } 该程序的输出结果是___A___。
0
1
2
3
21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。
fun函数无返回值
fun函数的返回值可以是任意的数据类型
fun函数没有形式参数
void 可以省略
22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。
s=s+n; return s;
s=s+i; return s;
return s;
return s+=i;
23、 有以下程序 int f1(int x,int y){return x>yx:y;} int f2(int x,int y){return x>yy:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___
4,3,7
3,4,7
5,2,7
2,5,7
24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。
2
3
4
无确定值
25、判断字符串s1是否大于字符串s2,应当使用___D____。
if(s1>s2)
if(strcmp(s1,s2))
if(strcmp(s2,s1)>0)
if(strcmp(s1,s2)>0)
26、当运行以下程序时,从键盘输入:AhaMA Aha<CR> <CR>表示回车,则下面程序的运行结果是___A____。 #include "stdioh" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)
ahAMa
AhAMa
AhAMa ahA
ahAMa ahA
27、以下程序执行后a的值为___C____。main( ) { int a,m=2, k=1, p=&k; a=p!=&m; printf("%d\n",a); }
-1
0
1
2
28、以下能正确读入字符串的程序段是____C___。
char p;scanf("%s", p);
char str[10];scanf("%s", &str);
char str[10], p;p=str; scanf("%s", p);
char str[10], p=str;scanf("%s", p[1]);
29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。
i=x[1][1]
i=((x+1))
i=((x+1)+1)
i=(x[1]+1)
30、下面程序的运行结果是____A___。 # include <stdioh> # include <stringh> fun(char s) { char t,a,z; a=s; z=s+strlen(s)-1; while(a++<z--) { t=a++; a=z--; z=t;} } main() { char p; p="a
abdddfg
afcdebg
gbedcfa
gfedcba
31、用来描述C程序中注释的是__C___
/ /
32、对于"xy\n\102\\\'"字符串的长度是__B___
7
6
12
13
33、已知:int x=10;执行语句x-=x+x;后x的值是__A___
-10
10
-20
20
34、下列描述中,正确的是__A___
所有的输入/输出都是通过调用库函数处理的
所有的输入/输出都是通过输入/输出语句实现的
getchar和putchar可以省略#include
在输入/输出格式中的表示跳过数据的含义
35、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___ if(x>y) if(y>z)x=y; else z=y;
7
6
5
4
36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x);
打印出321
打印出23
不打印任何结果
陷入死循环
37、以下关于switch语句和break语句的描述正确的是__D___
在switch语句中必须使用break语句
break语句只能用于switch语句体中
break语句只能用于循环语句中
在switch语句中可以使用break语句
38、与语句while(!x)等价的语句是__A___
while(x==0)
while(x!=0)
while(x!=1)
while(~x)
39、下面的描述错误的是__C___
函数可以有多个形式参数
函数可以没有返回值
函数内可以嵌套定义函数
函数可以被其他函数调用
40、 下面关于局部变量的描述中,错误的是__D___
函数的局部变量的有效范围只能在本函数
函数的形式参数也是局部变量
局部变量的名称不能和函数同名称
不同的函数中不能定义相同名称的局部变
2009年3月全国计算机等级考试二级C语言笔试卷
核心提示:
2009年3月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)选择题(1)下列叙述中正确的是 A) 栈是“先进先出”的线性表B) 队列是“先进先出”的线性表C) 循环队列是非线性结构D
2009年3月全国计算机等级考试二级笔试试卷C语言程序设计
(考试时间90分钟,满分100分)
选择题
(1)下列叙述中正确的是
A) 栈是“先进先出”的线性表
B) 队列是“先进先出”的线性表
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)程序调试通常也称为Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(8)数据库应用系统中的核心问题是
A)数据库设计 B)数据库系统设计
C)数据库维护 D) 数据库管理员培训
(9)有两个关系R,S如下:
R S
A B C A B
a 3 2 a 3
b 0 1 b 0
c 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)15e15 D) 115L
(14)设有定义:int x=2; ,以下表达式中,值不为6的是
A) x=x+1 B) x++,2x C)x=(1+x) D)2x,x+=2
(15)程序段:int x=12; double y=3141593; printf(“%d%86f”,x,y);的输出结果是
A)123141593 B)12 3141593 C)12,3141593 D)123141593
(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 <stdioh>
main()
{int x;
scanf(“%d”,&x);
if(x<=3); else
if(x!=10) printf(“%d\n”,x);
}
程序运行时,输入的值在哪个范围才会有输出结果
A)不等于10的整数 B)大于3且不等于10的整数
C) 大于3或等于10的整数 D)小于3的整数
(19)有以下程序
#include<stdioh>
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<stdioh>
main()
{char s=(“ABC);
do
{printf(“%d”,s%10);s++;
}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<stdioh>
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<stdioh>
int f(int x,int y)
{return()y-x)x);}
main()
{int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf(“%d\n”,d);
}
程序运行后的输出结果是
A)10 B)9 C)8 D)7
(25)有以下程序
#include<stdioh>
void fun(char s)
{while(s)
{ if(s%2==0) printf(“%c”,s);
s++;
}
}
main()
{ char a[]={“good”};
fun(a);printf(“\n”);
}
注意:字母a的ASCⅡ码值为97,程序运行后的输出结果是
A)d B)go C)god D)good
(26)有以下程序
#include <stdioh>
void fun( int a,int b)
{int c;
c=a;a=b;b=c;
}
main()
{int x=3,y-5,P=&x,q=&y;
fun(p,q);printf(“%d,%d,”,p,q);
fun(&x,&y);printf(“%d,%d\n”,p,q);
}
程序运行后的输出结果是
A)3,5,5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3
(27)有以下程序
#include <stdioh>
viod 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++)
{_________________
printf(“%d”,w);
}
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 <stdioh>
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 <stdioh>
int fun{int x,int y}
{ if(x==y) return(x);
else returen((x+y)/2)
}
main()
{ int a=4,b=5,c=6;
printf(“%d\n”,fun(2a,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 <stdioh>
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 <stdioh>
#define PT 35;
#define S(x) PTxx;
mian()
{ int a=1, b=2; printf(“%41f\n”,S(a+b));}
程序运行后输出的结果是
A)140 B)315 C)75 D)程序有错无输出结果
(37)有以下程序
#include <stdioh>
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整除是否余1
D)判断m被5和7整除是否余1
(39)有以下程序
#include <stdioh>
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 <stdioh>
main()
{ EILE f;
f=fopen(“fileatxt”,”w”);
fprintf(f,”abc”);
fclose(f);
}
若文本文件fileatxt中原有内容为:hello,则运行以上程序后,文件fileatxt中的内容为
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)+25)的值是6
(7)若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(7,x/y);补充完整,使其输出的计算结果形式为:x/y=11
(8)有以下程序
#include <stdioh>
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 <stdioh>
main( )
{int k=1,s=0;
do{
if{((k&2)!=0)continue;
s+=k;k++;
}while(k)10);
printf(“s=&d/n”,s);
}
(10)下列程序运行时,若输入labced12df<回车> 输出结果为10
#include <stdioh>
main( )
{char a =0,ch;
while((ch=getchar())!=’\n’)
{if(a&2!=0&&(ch>’a’&&ch<=’z’)) ch=ch-‘a’+’A’;
a++;putchar(ch);
}
printf(“\n”);
}
(11)有以下程序,程序执行后,输出结果是11
#include <stdioh>
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 <stdioh>
int12 ;
main( )
{int x,y,(p)();
p=max;
printf(“&d\n”,&x,&y);
}
Int max(int a,int b)
{return (a>b/a:b);}
(13)以下程序用来判断指定文件是否能正常打开,请填空
#include <stdioh>
main( )
{FILE fp;
if (((fp=fopen(“testtxt”,”r”))==13))
printf(“未能打开文件!\n”);
else
printf(“文件打开成功!\n”);
(14)下列程序的运行结果为14
#include <stdioh>
#include <stringh>
struct A
{int a;char b[10];double c;};
void f (struct A t);
main()
{struct A a=(1001,”ZhangDa”,1098,0);
f(&a);printf(“&d,&s,&6,if\n”,aa,ab,ac);
}
void f(struct A t)
{strcpy(t->b,”ChangRong”); }
(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空
#include <stdioh>
struct node
{int data; struct node next;};
typedef struct node NODETYPE;
main()
{NODETYPE a,b,c,h,p;
a data=10;bdata=20;cdata=30;h=&a;
b next=&b;bnext=&c;cnext=’\0’;
p=h;
while(p){printf(“&d”,p->data);15;}
}
2009年4月二级C参考答案
选择题:
1~10: DACDC ABABC
11~20:CBDDA CDBCB
21~30:CDABA BACBC
31~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,10980
(15)p=p—>next
1 C 2 C 3 B 4 D
1
这是一个if else 语句,首先你要明白,if的内嵌语句 是第一个分号之前的,因为在C语言中分号是一个分号 就是一个语句.第一个if 的内嵌语句是(y!=10)if(!ok1)a=1;因为X<Y成立,所以与这个if配对的else不必再做,接着做这个if的内嵌语句,Y不等于10成立,接着做!ok1,因为ok1值为5所以!ok1为假,跳出做a=1做完以后接着输出a=1既可选C
2
第一句定x=1
做if语句,x=2不成立,所以不做if的内嵌语句printf("ok");而是做与if相应的else语句if(x<2)printf("%
d\n",x);else printf("Quit");x<2成立,所以做这个if 语句,输出x,x的值为1,选C
3
条件运算符的做法是括号内为真执行逗号前的,为假执行逗号后的.所以exp意思是如果exp不等于0(为真)执行表达式1,否则执行表达式2
4
首先要知道条件运算符是自右至左的结合方式,所以可以理解为k<ak:(c<bc:a),从右往左算,先算括号内的,结果为C.再算k<ak:c得出结果为C
好好算下,不要心急,我是大一刚学过C语言,这些题都做过的.南大题库里就有.
1.一个C程序的执行是从( A )。
A) 本程序的main函数开始,到main函数结束
B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C) 本程序的main函数开始,到本程序文件的最后一个函数结束
D) 本程序文件的第一个函数开始,到本程序的main函数结束
2.以下叙述正确的是( C )。
A) 在C程序中,main函数必须位于程序的最前面
B) C程序的每行中只能写一条语句
C) C语言本身没有输入输出语句
D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误
3.以下叙述不正确的是( D )。
A) 一个C源程序可由一个或多个函数组成
B) 一个C源程序必须包含一个main函数
C) C程序的基本组成单位是函数
D) 在C程序中,注释说明只能位于一条语句的后面
4.C语言规定,在一个源程序中,main函数的位置( C )。
A) 必须在最开始 B) 必须在系统调用的库函数的后面
C) 可以任意 D) 必须在最后
5.一个C语言源程序是由( B )。
A) 一个主程序和若干子程序组成 B) 函数组成
C) 若干过程组成 D) 若干子程序组成
二 填空题
1.C源程序的基本单位是 函数 。
2.一个C源程序中至少应包括一个 main函数 。
3.在一个C源程序中,注释部分两侧的分界符分别为 / 和 / 。
4.一个函数是由两部分组成的,它们分别是 函数名 和 函数体 。
5.在C语言中,一个函数的函数体一般包括 声明部分 和 执行部分 。
第三章 数据类型、运算符与表达式
一 单项选择题
1.下面四个选项中,均不是c语言关键字的选项是( A )。
A) define IF Type B) getc char printf
C) include scanf case D) while go pow
2.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( C )。
A) 必须为字母 B) 必须为下划线
C) 必须为字母或下划线 D) 可以是字母、数字和下划线中任一种字符
3.下列四个选项中,均是C语言关键字的选项是( B )。
A) auto enum include B) switch typedef continue
C) signed union scanf D) if struct type
4.下面四个选项中,均是不合法的用户标识符的选项是( C )。
A) A P_0 do B) float la0 _A
C) b-a goto int D) _123 temp int
5.以下有4组用户标识符,其中合法的一组是( C )。
A) For -sub Case B) 4d DO Size
C) f2_G3 IF abc D) WORD void define
二 填空题
1.若x和a均是int型变量,则计算表达式(1)后的x值为 12 ,计算表达式(2)后的x值为 4 。
(1) x=(a=4, 62)
(2) x=a=4, 62
2.若a是int型变量,则表达式(a=45, a2), a+6的值为 26 。
3.若b是int型变量,则表达式b=25/3%3的值为 2 。
4.若s是int型变量,且s=6 则下面表达式s%2+(s+1)%2的值为 1 。
5.若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 6 ,b值为 4 ,c值为 2 。
6.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为 10 ,n的值为 6 。
7.若有定义:int b=7;float a=25,c=47;则表达式a+(int)(b/3(int)(a+c)/2)%4的值为 45 。
8.若有定义:int a=2,b=3;float x=35,y=25;则表达式(float)(a+b)/2+(int)x%(int)y的值为 35 。
9.若有定义:int x=3,y=2;float a=25,b=35;则表达式(x+y)%2+(int)a/(int)b的值为 1 。
10.若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 0 。
第四章 最简单的C程序设计——顺序程序设计
一 单项选择题 1~5 BDDAB
1.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式( B )。
A) 从左起输出该字符串,右补空格
B) 按原字符长从左向右全部输出
C) 右对齐输出该字串,左补空格
D) 输出错误信息
2.已有定义int a= -2; 和输出语句 printf(“%8x”,a); 以下正确的叙述是( D )。
A) 整型变量的输出形式只有%d一种
B) %x是格式符的一种,它可以适用于任何一种类型的数据
C) %x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的
D) %8x不是错误的格式符,其中数字8规定了输出字段的宽度
3.若x, y均定义成int型,z定义为double型,以下不合法的scanf函数调用语句是
( D )。
A) scanf(“%d %x, %le”, &x, &y, &z);
B) scanf(“%2d %d, %lf”, &x, &y, &z);
C) scanf(“%x %d %o”, &x, &y);
D) scanf(“%x %o%62f”, &x, &y, &z);
4.以下程序的输出结果是( D )。
main( )
{ int k=17;
printf("%d,%o,%x\n",k,k,k);
}
A)17,021,0x11 B)17,17,17
B)17,0x11,021 D)17,21,11
5.下列程序的运行结果是( B )。
#include <stdioh>
main()
{ int a=2,c=5;
printf("a=%d,b=%d\n",a,c);
}
A) a=%2,b=%5 B) a=2,b=5
C) a=d,b=d D) a=2,c=5
二 填空题
1.下面程序的运行结果是 i:dec=4,oct=4,hex=4,unsigned=65531 。
main()
{
short i;
i= -4;
printf(“\ni: dec=%d, oct=%o, hex=%x, unsigned=%u\n”, i, i, i, i);
}
2.若想通过以下输入语句使a=50,b=4,c=3,则输入数据的形式应该是 50,4,c=3 。
int b,c; float a;
scanf("%f,%d,c=%d",&a,&b,&c);
3.下列程序的输出结果是1600,请填空。
main()
{ int a=9, b=2;
float x= 66 , y=11,z;
z=a/2+bx/y+1/2;
printf("%52f\n", z );
}
4.在printf格式字符中,只能输出一个字符的格式字符是 c ;用于输出字符串的格式字符是 s ;以小数形式输出实数的格式字符是 f ;以标准指数形式输出实数的格式字符是 e 。
三 编程题
1 若a=3, b=4, c=5, x=12, y=24, z= -36, u=51274, n=128765, c1=’a’, c2=’b’。想得到以下的输出格式和结果,请写出完整的程序(包括定义变量类型和设计输出)。
要求输出的结果如下:
a= <空格>3 <空格><空格> b= <空格> 4<空格><空格> c= <空格>5
x=1200000, y=2400000, z= -3600000
x+y=<空格>360<空格><空格> y+z = -120<空格><空格>z+x= -240
u=<空格>51274<空格><空格>n=<空格><空格><空格>128756
c1= a <空格>or<空格>97(ASCII)
c2= B <空格>or<空格>98(ASCII)
/
void main()
{
int a, b, c;
unsigned u;
long int n;
float x, y, z;
char c1,c2;
a=3, b=4, c=5, x=12, y=24, z= -36, u=51274, n=128765, c1='a', c2='b';
printf("a=%2d b=%2d c=%2d\n", a, b, c);
printf("x=%f, y=%f, z=%+f\n");
printf("x+y=%52f y+z =%+52f z+x=%+52f\n", x+y, y+z, z+x);
printf("u=%6d n=%9d\n");
printf("c1=%c or %d(ASCII)\n", c1, c1);
printf("c2=%c or %d(ASCII)\n", c2-32, c2);
}
/
2 输入一个华氏温度,要求输出摄氏温度。公式为
输出要有文字说明,取2位小数。
/
void main()
{
float c, f;
printf("输入一个华氏温度:\n");
scanf("%f", &f);
c = 50/90(f-32);
printf("\n输入的华氏温度 %2f,摄氏温度为: %2f\n", f, c);
}
/
3 编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
/
void main()
{
char c1, c2;
c1 = getchar();
c2 = getchar();
putchar(c1);
putchar(c2);
printf("\nc1 = %c; c2 = %c\n", c1, c2);
}
/
第五章 选择结构程序设计
一 单项选择题
1.逻辑运算符两侧运算对象的数据类型是( D )。
A) 只能是0或1
B) 只能是0或非0正数
C) 只能是整型或字符型数据
D) 可以是任何类型的数据
2.已知x=43, ch='A', y=0;则表达式(x>=y&&ch<'B'&&!y)的值是( C )。
A) 0 B) 语法错 C) 1 D) “假”
3.已知 int x=10, y=20, z=30; 以下语句执行后x, y, z的值是( B )。
if(x>y)
z=x;x=y;y=z;
A) x=10,y=20,z=30 B) x=20,y=30,z=30
C) x=20,y=30,z=10 D) x=20,y=30,z=20
4.执行下列语句后a的值为( 2 ),b的值为( 1 )。( C )
int a, b, c;
a=b=c=1;
++a|| ++b && ++c;
A) 错误 1 B) 2 2 C) 2 1 D) 1 1
5.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是( C )。
A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2
二 填空题
1.若从键盘输入58,则以下程序输出的结果是 585858 。
main()
{ int a;
scanf(“%d”,&a);
if(a>50) printf(“%d”,a);
if(a>40) printf(“%d”,a);
if(a>30) printf(“%d”,a);
}
2.下面程序的运行结果是 -1 。
main()
{
int a=2, b=3, c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
printf(“%d\n”,c);
}
3.以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。
main()
{
int x, y, z, c;
scanf(“%d %d %d”, &x, &y, &z);
if( x<y )
if( x<z )
if( y<z )
printf(“ %d %d %d”, x, y, z);
}
4.如果运行时输入字符Q,则下面程序的运行结果是 Q 。
main()
{
char ch;
scanf(“%c”, &ch);
ch=(ch>=‘A’&& ch<=‘Z’) (ch+32):ch;
ch=(ch>=‘a’&& ch<=‘z’) (ch-32):ch;
printf(“%c”, ch);
}
5.若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 x==0 。
第六章 循环控制
一 单项选择题
1.下面程序段的运行结果是( C )。
int n=0;
while(n++<=2);
printf(“%d”,n);
A) 2 B) 3 C) 4 D) 有语法错
2.设有程序段:
t=0;
while(printf(“”))
{t++;
if(t<3) break;
}
下面描述正确的是( D )。
A) 其中循环控制表达式与0等价
B) 其中循环控制表达式与'0'等价
C) 其中循环控制表达式是不合法的
D) 以上说法都不对
3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空( B )。
#include <stdioh>
main()
{int a,b,t;
scanf(“%d%d”,&a,&b);
while( ___________ )
{if(a>b)
printf(“%d,%d\n”,a,b);
scanf("%d%d",&a,&b);
}
}
A) !a=b B) a!=b C) a==b D) a=b
4.C语言中,while和do-while循环的主要区别是( A )。
A) do-while的循环体至少无条件执行一次
B) while的循环控制条件比do-while的循环控制条件更严格
C) do-while允许从外部转到循环体内
D) do-while的循环体不能是复合语句
5.对以下程序段描述正确的是( C )。
x=-1;
do
while(!x);
A) 是死循环 B) 循环执行二次
C) 循环执行一次 D) 有语法错误
二 填空题
1.以下程序运行后的输出结果是 52 。
main()
{ int i=10, j=0;
do
while(i>2);
printf("%d\n",j);
}
2.设有以下程序:
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298,则输出结果为 8921 。
3.若输入字母b,程序输出结果为 b, B ;若输入字符,程序将怎样 等待重新输入 。
#include<stdioh>
main()
{char c1, c2;
c1=getchar();
while(c1<97||c1>122)
c1=getchar();
c2=c1-32;
printf("%c, %c\n",c1, c2);
}
4.用以下程序计算1到100的整数的累加和。
main()
{ int i=1, sum= 0 ;
for( ; i<=100 ; )
{sum+=i;
i++;
}
printf("sum=%d\n", sum );
}
5.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请填空。
main()
{ float x, amax, amin;
scanf(“%f”,&x);
amax=x;
amin=x;
while( x>=0 )
{if(x>amax) amax=x;
if( x<amin ) amin=x;
scanf(“%f”,&x);
}
printf("amax=%f\namin=%f\n",amax, amin);
}
流程图我就不画了,大致流程:开始-> 定义商店结构变量->调用入库函数录入库存商品信息->循环调用打印商品信息的函数及购买函数,显示库存商品菜单,用户输入购买信息完成购买
->单个水果购买数量不足,购买失败重新选择。
->总水果数量不足,提示关店结束程序。
#include <stdioh>#include <stringh>
#define goodsNum 10//商品总类最大个数
struct shop
{
char goodsName[goodsNum][11];
int goods[goodsNum];
int sum;
}sp;
int gn=0;//实际入库的商品总类个数
void storage();//入库函数
void updateSum();//更新总数
void printfGoods();//展示库存信息
int buy();//购买函数,返回1购买成功,返回0超出商品库存
int main()
{
storage();
while(1)
{
printfGoods();
if(spsum==0)
{
printf("所有水果已售空,关店休息!\n");
return 0;
}
if(buy())
printf("购买成功!\n");
}
return 0;
}
void printfGoods()
{
int i;
printf("--当前库存信息--\n");
printf("编号 名称 个数个\n");
for(i=0;i<gn;i++)
printf("%d、 %s %d个\n",i+1,spgoodsName[i],spgoods[i]);
}
void updateSum()
{
int i;
spsum=0;
for(i=0;i<gn;i++)
spsum=spsum+spgoods[i];
}
void storage()
{
char name[10];
int n;
printf("--商品入库--\n");
while(1)
{
printf("请录入商品%d的名称及个数(名称不超10个字符,输入0结束录入):",gn+1);
scanf("%s",name);
if(name[0]=='0' && name[1]==0)
break;
scanf("%d",&n);
strcpy(spgoodsName[gn],name);
spgoods[gn]=n;
gn++;
}
updateSum();
}
int buy()
{
int id,n;
printf("请输入要购买的商品编号及数量:\n");
scanf("%d%d",&id,&n);
if(n>spgoods[id-1])
{
printf("购买失败,数量超出库存!\n");
return 0;
}
spgoods[id-1]=spgoods[id-1]-n;
updateSum();
return 1;
}
以上就是关于求一份大一c语言考试试卷,加答案全部的内容,包括:求一份大一c语言考试试卷,加答案、求全国二级C语言3月份题库、C语言的题目等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)