五邑大学历年C语言程序设计期末复习题

本试卷为五邑大学历年C语言程序设计期末复习题,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。

C语言程序设计期末复习题

一、理论基础 (共20题,每题1分,共计10分)

(  D  )
1、下列叙述中正确的是________。
A、在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式
B、实型变量中允许存放整型数
C、若a和b类型相同,在执行赋值a=b后,b中的值将放入a中,但b中的值不变
D、在C程序中,求取余运算符“%”两边的类型相同时才能进行运算
(  D  )
2、下列选项中不会引起二义性的宏定义是________。
A、#define S(x)X*x
B、#define S(x) (x)*(x)
C、#define S(x) (x*x)
D、#define S(x) ((x)*(x))
(  A  )
3、执行语句"for(i=1;i++<4;); "后,变量i的值是________。
A、3
B、4
C、5
D、不定
(  B  )
4、将二进制数101101101111转换成十六进制数是________。
A、5557
B、B6F
C、7555
D、F6B
(  B  )
5、将十进制数0.625转换成二进制数是________。
A、0.111
B、0.101
C、0.5
D、0.A
(  A  )
6、a,b均为整数,且b!=0,则表达式a/b*b+a%b的值是________。
A、a
B、b
C、a被b除的整数部分
D、a被b除的商的整数部分
(  A  )
7、以下不合法的字符常量是________。
A、′\018′
B、′\"′
C、′\\′
D、′\xcc′
(  C  )
8、若以下选项中的变量已正确定义,则正确的赋值语句是________。
A、x1=26.8%3;
B、1+2=x2;
C、x3=0x12;
D、x4=1+2=3;
(  C  )
9、若有说明 char c[7]= { 's','t','r','i','n','g' } ; 则对元素的非法引用是 __________.
A、c[0]
B、c[9-6]
C、c[4*2]
D、c[2*3]
(  C  )
10、下列属于不合法的c语言整型常量的选项是________。
A、-32679
B、0Xabc
C、069
D、3e2
(  A  )
11、59,73,83,94,( )
A、107
B、101
C、105
D、113
(  B  )
12、若有定义int a=2; 则执行完语句a/=a*a; 后,a的值是________。
A、0.5
B、0
C、1/2
D、1/4
(  C  )
13、流程图里面的开始和结束用( )表示。
A、矩形
B、圆
C、椭圆
D、菱形
(  B  )
14、数值型数据包括( )两种。
A、整型和长整型
B、整型和浮点型
C、单精度型和双精度型
D、整型实型和货币型
(  C  )
15、下列叙述中不正确的是________。
A、变量名的第一个字符必须是字母
B、变量名的长度不超过255个字符
C、变量名可以包含小数点或者内嵌的类型声明字符
D、变量名不能使用关键字
(  A  )
16、设有声明语句:char a='\72'; 则变量a________。
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、声明不合法
(  C  )
17、执行以下语句后a 的值为________。
int a,b,c;
a=b=c=1;
++a||++b&&++c;
A、错误
B、0
C、2
D、1
(  C  )
18、以下不能定义为用户标识符的是________。
A、yy318
B、_ wan
C、319jing
D、If
(  B  )
19、若有以下定义:char s='\092'; 则该语句________。
A、使s的值包含1个字符
B、定义不合法,s的值不确定
C、使s的值包含4个字符
D、使s的值包含3个字符
(  B  )
20、已有定义int k=2;
int *p1,*p2;
且p1,p2 均指向变量k,下面不能正确执行的赋值语句是________。
A、k=*p1+*p2;
B、p2=k;
C、p1=p2;
D、k=*p1*(*p2);

二、控制结构 (共10题,每题1分,共计10分)

(  A  )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
A、if (x>0) y=1;
else if(x<0)y=-1;
else y=0;
B、if(x)
if(x>0)y=1;
else if(x<0)y=-1;
else y=0;
C、y=-1
if(x)
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
else y=-1;
(  B  )
2、与"y=(x>0?1:x<0?-1:0)";的功能相同的if语句是________。
A、if(x>0)y=1;
B、if(x)
else if(x>0)y=1;
else y=0; else if(x%0)y=-1;
else y=0;
C、y=-1
D、y=0;
if(x) if(x>=0)
if(x>O)y=1; if(xi>=O)y=1;
else if(x==0)y=0; else y=-1;
else y=-1;
(  D  )
3、c语言对嵌套的if语句的规定是:else总是与 配对。
A、与之前最近的if
B、第一个if
C、缩进位置相同的if
D、与之前最近的且尚未配对的if
(  C  )
4、有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是________。
A、a=a+b=b++
B、w%((int)a+b)
C、(c+w)%(int)a
D、w=a==b
(  C  )
5、执行以下程序段后,w的值为________。
int w='a',x=14,y=15; w=((x||y)&&(w<'a'));
A、-1
B、NULL
C、1
D、0
(  C  )
6、下列程序的输出结果是________。
main ()
{
int a = 4, b = 5, c;
if (a < b)
{
c = a * b;
printf ("%d,%d,%d\n", b, a, c);
}
else
{
c = b / a;
printf ("%d,%d,%d\n", b, a, c);
}
}
A、4,5,12
B、20
C、5,4,20
D、12
(  C  )
7、c语言中下面哪个不是条件语句?
A、if
B、if else
C、NSLog
D、switch
(  D  )
8、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=3则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A、0
B、1
C、2
D、3
(  C  )
9、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
A、if(x++);
B、if(x>y && y!=0);
C、if(x>0) x--
D、if(y<0) {;}
(  D  )
10、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
A、只能用逻辑表达式
B、只能用关系表达式
C、只能用逻辑表达式或关系表达式
D、可用任意表达式

三、循环结构 (共10题,每题1分,共计10分)

(  A  )
1、有以下程序:
main()
{
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、3
B、5
C、7
D、9
(  B  )
2、若变量已正确定义,有以下程序段 i—o;
do printf("%d,",i);
while(i++);
printf("%d",i) 其输出结果是________。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
(  B  )
3、以下描述错误的是_________。
A、break语句可用于switch语句和循环语句
B、break语句和continue语句的作用是一样的,都是提前结束整个循环
C、在循环语句中使用break语句是为了跳出循环,提前结束循环
D、在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环
(  D  )
4、若a、b为int型变量,则执行以下语句后a的值为( )
a=1;
b=10;
do
{
b-=a;
a++;
}
while(b-->0);
A、1
B、3
C、4
D、5
(  C  )
5、有以下程序:
main() {
int k=4,n=0;
for(; n<k;) {
n++;
if(n%3!=o) continue;
k--;
}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是________。
A、1,1
B、2,2
C、3,3
D、4,4
(  D  )
6、有以下程序:
#include<stdio.h>
main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
continue;
}
printf("%d,",--x);
}
}
程序的运行结果是______。
A、7,4,2
B、8,7,5,2
C、9,7,6,4
D、8,5,4,2
(  C  )
7、运行下面程序时,从键盘输入字母h,则输出结果是
#include<stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch) {
case ’h’: printf("hello!\n");
case ’g’: printf("good morning!\n");
default : printf("bye_bye!\n");
}
}
A、Hello!
B、Hello!
GoodMoring!
C、Hello!
Goodmorning!
Bye_Bye!
D、Hello!
Bye_Bye!
(  A  )
8、以下选项中哪些描述是不正确的?
A、循环语句必须要有终止条件否则不能编译
B、break关键字用于跳出当前循环
C、continue用于终止本次循环,执行下一次循环
D、switch条件语句中可以使用break
(  A  )
9、下列c语言程序段中关于while循环体正确的说法是inti=1;
while(5)
{
i++;
if(i>3)break;
}
A、三次循环
B、四次循环
C、五次循环
D、六次循环
(  C  )
10、以下是死循环的程序段是________。
A、for(i=1; ; )if(++i%2==0) continue;if(++i%3==0) break;}
B、i=32767;do{if(i<0) break;}while(++i);
C、for(i=1; ; ) if(++i<10) continue;
D、i=1;while(i--);

四、数组/指针数组 (共10题,每题1分,共计10分)

(  B  )
1、若有定义"int b[8],*p=b;",则p+6表示( )。
A、数组元素b[6]的值
B、数组元素b[6]的地址
C、数组元素bE73的地址
D、数组元素hEo]的值加上6
(  D  )
2、设有如下定义 : char aa[2][20]={ "abcd", "abcd" }; 则以下说法中错误的是 __________.
A、aa 是个二维数组,可以存放 2 个 19 个字符以下的 字符串
B、aa 是个二维数组,每行中分别存放了字符串 "abcd" 和 "ABCD"
C、aa[0] 可以看作是一维数组名
D、aa[0][0] 可以看作是一维数组名
(  B  )
3、以下能对二维数组a进行正确初始化的语句是________。
A、int a[2][]={{(1,0,1},{5,2,3}};
B、int a[][3]={{1,2,3},{ 4,5,6}};
C、int a[2][4]={{ 1,2,3},{ 4,5},{6}};
D、int a[][3]={{1,0,1},{},{1,1}};
(  A  )
4、下列定义数组的语句中,正确的是______。
A、#define N 10
int x[N];
B、int N=10;
int x[N];
C、int x[0...10];
D、int x[];
(  D  )
5、二维数组a的成员是6个字符组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放a至少需要 (44) 个字节。
A、90
B、180
C、240
D、540
(  B  )
6、下列二维数组初始化语句中,正确且与语句int a[][3]= { 1,2,3,4,5 }等价的是________。
A、int a[2][]={{1,2,3},{4,5}};
B、int a[][3]={1,2,3,4,5,0};
C、int a[][3]={{1,0},{2,0},{3,0}};
D、int a[2][]={{1,2,3},{4,5,6}};
(  B  )
7、以下不正确的定义语句是________。
A、double x[5]=1.0,2.0,3.0,4.0,5.0;
B、int y[5]=0,1,2,3,4,5;
C、char c1[]='1','2','3','4','5';
D、char c2[]='a','b','c';
(  C  )
8、下面程序的输出结果是
#include<stdio.h>
main()
{
int a[]=1,2,3,4,5,6,7,8,9,0,*p;
p=a;
printf("%d\n",*p+9);
}
A、0
B、1
C、10
D、9
(  C  )
9、有以下程序
#include <string.h>
void f(char p[][10],int n) /* 字符串从小到大排序 */
{
char t[10];
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(p[i],p[j])>0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
main()
{
char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
程序运行后的输出结果是______。
A、2
B、4
C、6
D、3
(  A  )
10、有说明语句int a[4][5]; 则a[2]+3表示__。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址

五、字符串/字符串指针 (共10题,每题1分,共计10分)

(  C  )
1、以下叙述中不正确的是________。
A、空字符串(即两个双引号连写)只占一个存储单元
B、字符型常量可以放在字符型变量中
C、字符型常量可以放在字符串变量中
D、字符型常量可以与整数混合运算,而字符串常量不可以
(  A  )
2、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  D  )
3、下列关于boolean类型的叙述中,正确的是________。
A、可以将boolean类型的数值转换为int类型的数值
B、可以将boolean类型的数值转换为字符串
C、可以将boolean类型的数值转换为char类型的数值
D、不能将boolean类型的数值转换为其他基本数据类型
(  B  )
4、下列选项中,值为1的表达式是________。
A、1-'0'
B、1-'\0'
C、'1'-0
D、'\0','0'
(  D  )
5、下列字符串中可以用作c标识符的是________。
A、2009var
B、goto
C、test-2009
D、-123
(  C  )
6、下列选项中,表示字符串末尾的结束标志是________。
A、'\n'
B、'\r'
C、'\0'
D、NULL
(  D  )
7、有以下程序
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i<N-1;I++)
for(j=i+1,j<N;J++)}
/*比较字符串的首字符大小,并交换字符
串的首字符*/
if(s[i][0])>s[j][0]){
t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;
}
main()
{
char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};
fun(ss,5);printf(”%s,%s”,ss[0],ss[4]);
}
程序运行结果是________。
A、xy,aaaacc
B、aaaacc,xy
C、XCC,aabcc
D、ace,xabcc
(  A  )
8、以下选项中关于 c 语言常量的叙述错误的是________。
A、经常被使用的变量可以定义成常量
B、常量分为整型常量、实型常量、字符常量和字符串常量
C、所谓常量,是指在程序运行过程中,其值不能被改变的量
D、常量可分为数值型常量和非数值型常量
(  D  )
9、判断字符串a 和b 是否相等,应当使用。
A、if(a==b)
B、if(a=b)
C、if(strcmp(a,b))
D、if(strcmp(a,b)==0)
(  A  )
10、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。
char x[]="programming";
char y[]="fortran";
int i=0;
while (x[i]!='\0'&&y[i]!='\0')
if (x[i]==y[i]) printf("%c", _____);
else i++;
A、x[i++]
B、y[++i]
C、x[i]
D、y[i]

六、函数/函数指针 (共10题,每题1分,共计10分)

(  A  )
1、是构成c语言程序的基本单位。
A、函数
B、过程
C、子程序
D、子例程
(  B  )
2、在 c 语言程序中,以下描述正确的是______。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用均不可以嵌套
D、函数的定义和函数的调用均可以嵌套
(  C  )
3、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是________。
A、abs(x-y)<10
B、x-y>-10&&x-y<10
C、!(x-y)<-10||!(y-x)>10
D、(x-y)*(x-y)<100
(  C  )
4、有以下函数
int fun(char *s) {
char *t=s;
while(*t++);
return(t-s)
}
该函数的功能是______。
A、比较两个字符串的大小
B、计算s所指字符串占用内存字节个数
C、计算s所指字符串的长度
D、将s所指字符串复制到字符串t中
(  B  )
5、以下程序的运行结果是________。
#include <stdio.h>
#define MIN(x,y) (x)<(y) ? (x):(y)
main() {
int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A、10
B、15
C、100
D、150
(  C  )
6、当输入数据:27 63 时,下面程序的运行结果是________。
A、a=30 b=63 gbs=189 gys=9
B、a=27 b=63 gbs=190 gys=10
C、a=27 b=63 gbs=189 gys=9
D、a=27 b=63 gbs=188 gys=10
(  C  )
7、下列选项中,关于main()函数叙述不正确的是________。
A、一个完整的C语言程序中,有且只能有一个main()函数
B、main()函数是程序的主入口,程序总是从main()函数开始执行
C、如果没有声明main()函数,程序将从第1行开始执行
D、main()函数可以有返回值,也可以没有返回值
(  D  )
8、以下错误的描述是:函数调用可以________。
A、出现在执行语句中
B、出现在一个表达式中
C、做为一个函数的实参
D、做为一个函数的形参
(  C  )
9、以下函数的返回类型是______。 fff(float x)
{
return 5.86;
}
A、与参数x的类型相同
B、void 类型
C、int类型
D、无法确定
(  C  )
10、语句int (*ptr)();
的含义是______。
A、ptr 是指向一维数组的指针变量
B、ptr 是指向int 型数据的指针变量
C、ptr 是指向函数的指针,该函数返回一个int 型数据
D、ptr 是一个函数名,该函数的返回值是指向int 型数据的指针

七、指针 (共10题,每题1分,共计10分)

(  A  )
1、已定义以下函数 fun(char *p2, char *p1)
{
while((*p2=*p1)!='\0')
{
p1++;
p2++;
}
}
函数的功能是________。
A、将p1所指字符串复制到p2所指内存空间
B、将p1所指字符串的地址赋给指针p2
C、对p1和p2两个指针所指字符串进行比较
D、检查p1和p2两个指针所指字符串中是否有'\0'
(  B  )
2、有如下程序 int a[10]={ 1,2,3,4,5,6,7,8,9,10 },*p=a; 则数值为9的表达式是________。
A、*P+9
B、*(P+8)
C、*P+=9
D、P+8
(  D  )
3、vb的3种结构化程序设计的3种基本结构是________。
A、选择结构、过程结构、顺序结构
B、递归结构、选择结构、循环结构
C、过程结构、转向结构、递归结构
D、选择结构、顺序结构、循环结构
(  B  )
4、若有以下说明和定义 fun(int*c)
{
...
}
main()
{
int(*a)()=fun,(*b)(),w[10],c;
}
在必要的赋值之后,对fun()函数的正确调用语句是______。
A、a=a(w)
B、(*a) (&c)
C、b=*b(w);
D、fun(b) ;
(  A  )
5、有以下程序
#include<stdio.h>
void fun(int n,int*s) {
int f;
if(n==1)*s=n+1;
else fun(n-1,&f);
*s=f;
}
main() {
int x=0;
fun(4,&x);
printf("%d\n",x);
}
程序运行后的输出结果是______。
A、2
B、1
C、3
D、4
(  B  )
6、定义如下变量和数组: int k; int a[3][3]= {9,8,7,6,5,4,3,2,1}; 则下面语句的输出结果是________。
for(k=0;k<3;k++) printf("%d",a[k][k]);
A、7 5 3
B、9 5 1
C、9 6 3
D、7 4 1
(  D  )
7、以下能正确定义数组并正确赋初值的选项是______。
A、int N=5,a[N][N];
B、int b[1][2]={{1},{2}};
C、int c[2][]={{1,2},{3,4}};
D、int d[3][2]={{1,2},{3,4}};
(  A  )
8、下列关于strstr()函数的描述,错误的是________。
A、用于在指定的字符串中查找指定的字符
B、用于在指定的字符串中查找指定的子字符串
C、该函数接收两个字符指针类型的参数
D、该函数若查找到子字符串则返回子字符串的指针,否则返回空指针
(  C  )
9、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#define N 10
void arrin(int x[N])
{
int i=0;
while(i<N)scanf("%d",______);
}
在下划线处应填入的是______。
A、x+i
B、&x[i+1]
C、&x[i++]
D、&x[++i]
(  A  )
10、下列字符数组长度为5的是________。
A、char a[]={'h', 'a', 'b', 'c', 'd'};
B、char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};
C、char c[10]= {'h', 'a', 'b', 'c', 'd'};
D、char d[6]= {'h', 'a', 'b', 'c', '\0' };

八、结构体 (共10题,每题1分,共计10分)

(  B  )
1、下列程序的输出结果是________。
main()
{
struct st
{
int y,x,z;
}
;
union
{
long i;
int j;
char k;
}
un;
printf("%d,%d\n",sizeof(struct st),sizeof(un))
}
A、6,2
B、6,4
C、8,4
D、8,6
(  B  )
2、设有以下说明语句
typedef struct
{
int n;
char ch[8];
}
per;
则下面叙述中正确的是________。
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名
(  B  )
3、有以下程序
#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
(  C  )
4、设有以下说明语句:
typedef struct stu
{
int a;
float b;
} stutype;
则下面叙述中错误的是________。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
(  B  )
5、有以下定义和语句:
struct students {
int num;
char name[20];
char c;
struct {
int grade1;
int grade2;
} s;
};
struct students w,*pw;
*pw=w;
下列赋值语句不正确的是________。
A、num=1002;
B、w.grade1=85;
C、pw->num=1002;
D、w.s.grade2=85;
(  B  )
6、下面赋值表达式不正确的是__________________.
struct student
{
long num;
char name[20];
} st1, st2={101, "tom"}, *p=&st1;
A、st1 = st2
B、p->name = st2.name
C、p->num = st2.num
D、*p=st2
(  B  )
7、定义file *fp; 则文件指针fp 指向的是________。
A、文件在磁盘上的读写位置
B、文件在缓冲区上的读写位置
C、整个磁盘文件
D、文件类型结构体
(  D  )
8、以下叙述中正确的是________。
A、即使是同类型的结构体变量,也不能进行整体赋值
B、结构体变量的地址不能作为实参传给函数
C、结构体数组名不能作为实参传给函数
D、结构体中可以含有指向本结构体的指针成员
(  A  )
9、以下叙述中正确的是________。
A、使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
(  D  )
10、以下对结构体变量stu1中成员age的非法引用是________。
struct student
{
char name[10];
int age ;
}
stu1 ,*p;
p=&stu1;
A、stu1.age
B、p->age
C、(*p).age
D、student.age

九、程序题 (共10题,每题1分,共计10分)

(  D  )
1、以下程序的输出结果是________。 char str[15]="hello!"; printf("%d\n",strlen(str));
A、15
B、14
C、7
D、6
(  D  )
2、阅读下面的程序
main()
{
int i,j;
char ch;
scanf("%d%c%f",&i,&ch,&j);
printf("%d%2c%7.2f",i,ch,j);
}
如果从键盘上输入 123a123x.12<回车> 则程序的运行结果是________。
A、123a123.00
B、123 a 123.12
C、123a123.12
D、123 a 123.00
(  B  )
3、下面程序段的运行结果是 ____________.
int n=0;
while (n++<=2) printf("%d",n);
A、012
B、123
C、234
D、错误信息
(  C  )
4、以下程序的输出结果是 ____________.
#include <stdio.h>
fun(int x,int y,int z)
{
z=x*x+y*y;
}
void main()
{
int a=31;
fun(5,2,a);
printf("%d",a);
}
A、0
B、29
C、31
D、无定值
(  D  )
5、有如下程序
main()
{
int y=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
运行该程序的输出结果是______。
A、3 4
B、4 2
C、4 3
D、3 3
(  B  )
6、以下程序的输出结果是
fun(int x, int y) return(x+y);
main()
{
int a=1, b=2, c=3, sum;
sum=fun((a++, b++, a+b), c++);
printf("%d", sum);
}
A、9
B、8
C、7
D、6
(  C  )
7、下面程序段的输出为
#include"stdio.h"
main()
{
printf("%d\n",12<<2);
}
A、0
B、47
C、48
D、24
(  C  )
8、设有如下程序段:
union
{
int i;
char c;
} a;
a.i=12;
a.c='a';
printf("\n%d",a.i);
这段程序执行后,屏幕输出的结果是………………………………………( )
A、12
B、97
C、65
D、A
(  D  )
9、下面程序的输出结果是_______。
main( )
{
extern int m;
m+=2;
f( );
printf("%d\n",m);
}
int m=7;
f( )
{
printf("%d&",m*m);
m+=m;
}
A、8118
B、81&81
C、18&18
D、81&18
(  D  )
10、如下程序,输入错误的为:
void main()
{
int a;
int b;
scanf("%d%d",&a,&b);
printf("%d %d",a,b);
}
A、1【空格】2【回车】
B、1【 Tab】2【回车】
C、1【回车】2【回车】
D、1【分号】2【回车】