湖北工业大学计算机C语言期末

本试卷为湖北工业大学计算机C语言期末,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。

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

计算机C语言期末

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

(  D  )
1、合法的c语言赋值语句是________。
A、a=b=58
B、k=int(a+b);
C、a=58,b=58
D、--i;
(  A  )
2、设int x=7,则~x的值是________。
A、-8
B、7
C、-1
D、1
(  D  )
3、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是________。
A、x&&Y
B、x<=Y
C、x‖y+z&&y-z
D、!((x<Y)&&!Z‖1)
(  A  )
4、阅读以下程序,则执行下面语句后m 的值是________。
int w=1,x=2,y=3,z=4,m;
m=w<x?w:x;
m=m<y?m:y;
m=m<z?m:z;
A、1
B、2
C、3
D、4
(  B  )
5、下列能正确定义且赋初值的语句是________。
A、int n1=n2=1;
B、char C=99;
C、float f=f+1;
D、double x=1.2E5.6;
(  C  )
6、若以下选项中的变量已正确定义,则正确的赋值语句是________。
A、x1=26.8%3;
B、1+2=x2;
C、x3=0x12;
D、x4=1+2=3;
(  D  )
7、设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是________。
A、10101001
B、10101000
C、11111101
D、01010101
(  D  )
8、在c语言中,下列运算符优先级最高的是________。
A、>=
B、==
C、!=
D、&&
(  A  )
9、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的c语言表达式是 ______ 。
A、x/y*z
B、x*(1/(y*z))
C、x/y*1/z
D、x/y/z
(  B  )
10、串是任意有限个 (46) 。
A、符号构成的集合
B、字符构成的序列
C、字符构成的集合
D、符号构成的序列
(  A  )
11、十六进制数100转换为十进制数为
A、256
B、512
C、1024
D、64
(  C  )
12、若已定义x和y是整型变量,x=2; 则表达式y=2.75+x/2的值是________.
A、5.5
B、5
C、3
D、4
(  B  )
13、某学校有1500名学生,若用二进制来编学号,需要多少位来表示。
A、10
B、11
C、12
D、13
(  C  )
14、以下不合法的用户标识符是________。
A、j2_KEY
B、Double
C、4D.
D、_8_
(  C  )
15、该语句打印结果为(每个d后都有空格)printf("%d ", printf("%d ", printf("%d ", 43)));
A、4321
B、43 43 43
C、43 3 2
D、4 3 2 1
(  C  )
16、以下叙述中错误的是________。
A、算法正确的程序对于相同的输入一定有相同的结果
B、算法正确的程序可以有零个输入
C、算法正确的程序可以有零个输出
D、算法正确的程序最终一定会结束
(  B  )
17、以下标识符中,不能作为合法的c用户定义标识符的是________。
A、a3_b3
B、void
C、_123
D、IF
(  C  )
18、以下叙述中不正确的是________。
A、预处理命令行都必须以#号开始
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令行进行处理
D、以下是正确的宏定义 #define IBM_PC
(  D  )
19、在c 语言中,退格符是________。
A、\n
B、\t
C、\v
D、\b
(  C  )
20、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为____
A、算术运算、赋值运算、关系运算
B、关系运算、赋值运算、算术运算
C、算术运算、关系运算、赋值运算
D、关系运算、算术运算、赋值运算

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

(  C  )
1、在嵌套使用if语句时,c语言规定else总是________。
A、和之前与其具有相同缩进位置的if配对
B、和之前与其最近的if配对
C、和之前与其最近的且不带else的if配对
D、和之前的第一个if配对
(  C  )
2、若a的值为3时,下列程序段被执行后,c的值是________。
int c = 1;
if (a>0) if (a>3) c = 2;
else c = 3;
else c = 4;
A、1
B、2
C、3
D、4
(  C  )
3、执行以下程序段后,w的值为________。
int w='a',x=14,y=15; w=((x||y)&&(w<'a'));
A、-1
B、NULL
C、1
D、0
(  A  )
4、有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出的结果是________。
A、011122
B、012
C、012020
D、120
(  A  )
5、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=4,b=3,c=2,d=1;
printf("%d",a<b?a:d<c?d:b);
}
A、1
B、3
C、2
D、4
(  C  )
6、若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是________。
A、switch(x) {
case 1.0 : printf("*\n");
case 2.0 : printf("**\n");
}
B、switch((int)x); {
case 1 : printf("*\n");
case 2 : printf("**\n");
}
C、switch(a+b) {
case 1: printf("*\n");
case 2+1: printf("**\n");
}
D、switch(a+b) {
case 1 : printf("*\n");
case c : printf("**\n");
}
(  C  )
7、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=1,b=3;
if((++a<0)&&!(b--<=0)) printf("%d,%d\n",a,b);
else printf("%d,%d\n",b,a);
}
A、2,2
B、1,3
C、3,2
D、3,1
(  B  )
8、以下if语句书写正确的是________。
A、if(x=0;)
printf("%f",x);
elseprintf("%f",-x);
B、if(x>0)
x=x+1;printf("%f",x);
else printf("%f",-x);
C、if(x>0);
x=x+1;printf("%f",x);
else printf("%f",-x);
D、if(x>0)
x=x+1;printf("%f",x)
else printf("%f",-x);
(  C  )
9、c语言中下面哪个不是条件语句?
A、if
B、if else
C、NSLog
D、switch
(  A  )
10、c语言的if语句嵌套时,if与else的配对关系是________。
A、每个else总是与它上面的最近的并且尚未与其他else匹配的if配对
B、每个else总是与最外层的if配对
C、每个else与if的配对是任意的
D、每个else总是与它上面的if配对

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

(  A  )
1、下列叙述中正确的是________。
A、只能在循环体内和switch语句体内使用break语句
B、continue语句的作用是结束整个循环的执行
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用got0语句
(  A  )
2、下列while循环的次数是________。 while (int i=0)i--;
A、0
B、1
C、5
D、无限
(  D  )
3、现有以下语句: i=1; for (;i<=100;i++) sum+=i;
A、for(i-1;;i++)
sum+--i;
if(i==100) break;
B、for(i=1;i<=100;)
sum+=i;
i++;
C、i=1;
for(;i<=100;)
sum+=-i;
D、i=1;
for(;;)
sum+=i;
if(i==100) break;
i++;
(  B  )
4、以下选项中与if(a==1)a++; else a=b; 语句功能不同的语句是________。
A、switch(a)
ease 0:a=b;break;
default:a++;
B、switch(a==1)
case 0:a++:
default:a=b;
C、switch(a)
default:a=b;break;
case 1:a++;
D、a=(a==1)(a++):b
(  D  )
5、分析下列程序,其最终执行结果是______。
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++)n[i]=o;
k=2;
for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1;
printf("%d\n",n[0]);
}
A、-2
B、-1
C、0
D、-3
(  A  )
6、下面程序的运行结果是________。
#include <stdio.h>
void main()
{
int y=10;
do
{
y--;
}
while(--y);
printf("%d\n",y--);
}
A、-1
B、1
C、8
D、0
(  B  )
7、下面程序
main()
{
int y=9;
for(;y>0;y--)
{
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
}
的输出是______。
A、741
B、852
C、963
D、875421
(  C  )
8、下面的代码int i=10; 之后的for循环语句,语法正确,不会编译出错的是________。
A、for(i=0,i<10,i++)
B、for{
i=0;i<10;i++}
C、for( ;i>5;i--)
D、for(i=0;i<10;i++;)
(  A  )
9、定义如下变量:int n=10;
则下列循环的输出结果是________。
while(n>7)
{
n--;
printf(''%d'',n);
}
A、1098
B、987
C、10987
D、9876
(  B  )
10、设 j 和 k 都是 int 类型,则 for 循环语句
for(j=0,k=-1;k=1;j++,k++) printf("****\n");()。
A、循环结束的条件不合法
B、是无限循环
C、循环体一次也不执行
D、循环体只执行一次

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

(  C  )
1、下列描述中不正确的是________。
A、字符型数组中可能存放字符串。
B、可以对字符型数组进行整体输入、输出。
C、可以对整型数组进行整体输入、输出。
D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
(  B  )
2、以下对二维数组a进行正确初始化的是________。
A、int a[2][3]={{1,2},{3,4},{5,6}};
B、int a[ ][3]={1,2,3,4,5,6};
C、int a[2][ ]={1,2,3,4,5,6};
D、int a[2][ ]={{1,2},{3,4}};
(  B  )
3、有以下程序
main()
{
char p[]={'a', 'b', 'c'} , q[10]={'a', 'b', 'c'} ;
printf("%d %d\n", strlen(p), strlen(q));
}
以下叙述中正确的是________。
A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B、由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C、由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D、由于p和q数组中都没有字符串结束符,故长度都不能确定
(  B  )
4、若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为: ( )
A、2
B、3
C、4
D、无确定值
(  B  )
5、当调用函数时,实参是一个数组名,则向函数传送的是 _______ 。
A、数组的长度
B、数组的首地址
C、数组每一个元素的地址
D、数组每个元素中的值
(  D  )
6、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
A、p=100;
B、p=a[5]
C、p=a[2]+2
D、p=a+2;
(  C  )
7、有定义语句:int*p[4]; 以下选项中与此语句等价的是________。
A、int p[4];
B、int **p;
C、int*(p[4]);
D、int(*p)[4];
(  D  )
8、合法的数组定义是________。
A、int a[ ]="string";
B、int a[5]=0,1,2,3,4,5;
C、char a="string";
D、char a=0,1,2,3,4,5;
(  C  )
9、下面程序的运行结果是
#include<stdio.h>
main()
{
int a=28,b;
char s[10],*p;
p=s;
do
{
b=a%16;
if(b<10) *p=b+48;
else *p=b+55;
p++;
a=a/5;
}
while(a>0);
*p='\0';
puts(s);
}
A、10
B、C2
C、C51
D、\0
(  A  )
10、设有数组定义:char array[]="china"; 则数组array所占的空间为________。
A、6字节
B、5字节
C、4字节
D、7字节

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

(  A  )
1、下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是________。
main()
{
char s1[]="chinese",s2[]="japanese";
int i;
for(i=0;s1[i]='\0'&&s2[i]!='\0';i++) if(s1[i]==s2[i]&&i<7) ________;
}
A、putchar(s2[i]);putchar(i)
B、puts(s1[i],i)
C、printf("%c%d\n",s2[i]。i)
D、printf("%C",s1[]);printf("%d\n",i)
(  B  )
2、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while((ch=getchar())!='e') printf("*");
A、5
B、4
C、6
D、1
(  D  )
3、如果在一个运算表达式中包含有逻辑运算、关系运算和算术运算,并且其中未用圆括号规定这些运算的先后顺序,那么这样的综合型表达式的运算顺序是______。
A、逻辑→算术→关系
B、关系→逻辑→算术
C、算术→逻辑→关系
D、算术→关系→逻辑
(  A  )
4、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  B  )
5、下列关于串的叙述中,哪一条是正确的( )
A、串是由至少1个字符组成的有限序列
B、串中字符的数目就是串的长度
C、空串就是由空格构成的串
D、串只能顺序存储
(  D  )
6、下列字符串中可以用作c标识符的是________。
A、2009var
B、goto
C、test-2009
D、-123
(  D  )
7、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
A、单精度数
B、双精度数
C、常量
D、字符串
(  B  )
8、下列数据中属于"字符串常量"的是________。
A、ABC
B、"ABC"
C、'ABC'
D、'A'
(  B  )
9、字符串指针变量中存入的是________。
A、字符串
B、字符串的首地址
C、第一个字符
D、字符串变量
(  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分)

(  B  )
1、若函数中有定义语句:int k; 则
A、系统将自动给k赋初值0
B、这时k中的值无定义
C、系统将自动给k赋初值-1
D、这时k中无任何值
(  A  )
2、假设有语句sizeof(double),则它是________。
A、一个整型表达式
B、一个双精度浮点型表达式
C、一种函数调用
D、一种函数定义
(  B  )
3、在下列叙述中,错误的一条是________。
A、scanf()函数可以用来输入任何类型的多个数据
B、数组名作函数参数时,也采用“值传递”方式
C、如果形参发生改变,不会改变主调函数的实参值
D、函数的实参与形参的类型应一致
(  C  )
4、下列关于形参的说法,正确的是________。
A、函数的形参是必须的
B、函数的形参可以是表达式
C、函数在定义时,形参是不占用存储空间的,只是在被调用时才会占,调用完毕也就被释放了
D、形参的名称、类型、数量、顺序必须与实参都相同,否则实参不会把信息正确地传递给形参
(  B  )
5、在函数说明时,下列不必要的是________项。
A、函数参数的类型
B、函数参数名字
C、函数的名字
D、返回值表达式
(  A  )
6、通常适用于从被调用函数中将一个值传回主调函数的参数传递方式是________。
A、利用返回值数据传递方式
B、利用形参与实参传递数据的方式
C、利用全局变量传递数据的方式
D、以上都不对
(  D  )
7、c语言程序的三种基本结构是________。
A、循环结构转移结构顺序结构
B、递归结构循环结构转移结构
C、嵌套结构递归结构顺序结构
D、顺序结构选择结构循环结构
(  C  )
8、下面说法正确的是________。
A、任何包含数学运算的函数都只能使用单一的基本结构
B、每个 C 语言程序 MAIN()必须定义函数,否则编译失败
C、无论什么样的复杂算法,都可以使用三种基本结构来实现
D、只要程序是使用基本结构编写的,就不会出现算法错误
(  D  )
9、对于 if(表达式)语句,以下说法正确的是________。
A、“表达式”的值只能是整数值
B、在“表达式”中不能调用返回整数的函数
C、在“表达式”中不能含有函数调用
D、“表达式”可以是算术表达式
(  D  )
10、下列叙述中正确的是________。
A、C语言编译时不检查语法
B、C语言的子程序有过程和函数两种
C、C语言的函数可以嵌套定义
D、C语言所有函数都是外部函数

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

(  D  )
1、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是________。
A、函数的实参和其对应的形参共占同一存储单元
B、形参只是形式上的存在,不占用具体存储单元
C、同名的实参和形参占同一存储单元
D、函数的形参和实参分别占用不同的存储单元
(  B  )
2、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为________.
A、地址传递
B、单向值传递
C、由实参传给形参,再由形参传回给实参
D、由用户指定传递方式
(  B  )
3、有以下定义 char a[10],*b=a; 不能给数组a输入字符串的语句是________。
A、gets(a);
B、gets(a[0]);
C、gets(&a[0]);
D、gets(b);
(  C  )
4、已知int a[3][4]; 则对数组元素引用正确的是____
A、a[2][4]
B、a[1,3]
C、a[2][0]
D、a(2)(1)
(  B  )
5、下面程序输出数组中的最大值,由 s 指针指向该元素 .
void main ()
{
int a[10]={6 , 7 , 2 , 9 , 1 , 10 , 5 , 8 , 4 , 3 , } , *p , *s ;
for ( p=a , s=a ; p-a<10 ; p++ )
if (________) s=p ;
printf ( "the max : %d" , *s ):
}
则在 if 语句中的判断表达式应该是______。
A、p>s
B、*p>*s
C、a[p]>a[s]
D、p-a>p-s
(  C  )
6、定义如下变量和数组 : int i;
int x[4][4]= { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
则下面语句的输出结果是 __________.
for(i=0;i<4;i++)
printf("%3d",x[i][3-i]);
A、1 5 9 13
B、1 6 11 16
C、4 7 10 13
D、4 8 12 16
(  B  )
7、设矩阵a是一个n×n对称矩阵.即a[i,j]=a[i,j],为了节省存储空间,将其下三角部分按行序为主序存放在一维数b[1...n(n+1)/2]中,对任一下三角元素aij(i≥j),在一维数组b的下标位置k的值是______。
A、(i+(i-1))/2+j-1
B、i(i-1)/2+j
C、i(i+1)/2+j-1
D、i(i+1)/2+j
(  B  )
8、有以下程序: int*f(int*x,int*y)
{
if(*x<*y) return x;
else return y;
}
main()
{
int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
print("% d,% d,% d\n",*p,*q,*r);
}
执行后的输出结果是 ______。
A、7,8,8
B、7,8,7
C、8,7,7
D、8,7,8
(  B  )
9、若有说明:inta,b=2,*p=&a; 则能完成a=b赋值功能的语句是______。
A、a=*p;
B、*p=*&b;
C、a=&b;
D、a=**p;
(  D  )
10、以下对一维整型数组a的正确说明是________。
A、int a(10);
B、int n=10,a[n];
C、int n; scanf("%d",&n); int a[n];
D、#define SIZE 10 (换行) int a[SIZE];

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

(  B  )
1、有以下结构体说明和变量的定义,且指针p指向变量a’指针q指向变量b,则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node*next;
}
a,b,*p=&a,*q=&b;
A、a.next=q;
B、P.next=&b:
C、p—>next=&b;
D、(*p).next=q;
(  A  )
2、有以下程序
struct stu
{
char name[10];
int num;
};
void f(char *name, int num)
{
struct stu s[2]={{"sundan",20044},{"penghua",20045}};
num = s[0].num;
strcpy(name, s[0].name);
}
main()
{
struct stu s[2]={{"yangsan",20041},{"lisiguo",20042}},*p;
p=&s[1];
f(p->name, p->num);
printf("%s %d\n", p->name, p->num);
}
程序运行后的输出结果是________。
A、SunDan 20042
B、SunDan 20044
C、LiSiGuo 20042
D、YangSan 20041
(  A  )
3、有以下程序 struc stu
{
char name[10];
int num;
};
void f1(struct stu c)
{
struct stu b={"lisiguo",2042};
c=b;
}
void f2(struct stu *c)
{
struct stu b={"sundan",2044} ;
*c=b;
}
main( )
{
struct stu a={"yangsan",2041},b={"wangyin",2043} ;
f1(a);
f2(&b);
printf("%d %d\n",a.num,b.num);
}
执行后的输出结果是________。
A、2041 2044
B、2041 2043
C、2042 2044
D、2042 2043
(  C  )
4、以下对 c 语言中共用体类型数据的叙述正确的是______。
A、可以对共用体变量名直接赋值
B、一个共用体变量中可以同时存放其所有成员
C、一个共用体变量中不可以同时存放其所有成员
D、共用体类型定义中不能出现结构体类型的成员
(  D  )
5、设有下面的定义:
struct st
{
int a;
float b;
} d;
int*p;
要使p指向结构变量d中的a成员,正确的赋值语句是________。
A、*p=d.a;
B、p=&a;
C、p=d.a;
D、p=&d.a;
(  C  )
6、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  D  )
7、若有以下定义的语句
struct student
{
int age;
int num;
};
struct student stu[3]={{1001,20},{1002,19},{1003,21}};
main()
{
struct student *p;
p=stu;
…
}则以下不正确的引用是________。
A、(p++)->num
B、p++
C、(*p).num
D、p=&stu.age
(  C  )
8、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
A、x=1987
B、birth.x=1987;
C、p.birth.x=1987;
D、x=1987;
(  B  )
9、有如下定义
struct person
{
char name[9];
int age;
}
;
struct person class[10] = {"john",17, "paul",19, "mary",18, "adam",16};
根据上述定义,能输出字母a的语句是______。
A、printf("%c\n",class[3].name);
B、printf("%c\n",class[3].name[0]);
C、printf("%c\n",class[4].name[1]);
D、printf("%c\n",class[4].name[0]);
(  C  )
10、在c语言中,系统为一个结构体变量分配的内存是________。
A、各成员所需内存量的总和
B、结构体第一个成员所需的内存量
C、成员中占内存量最大者所需的容量的整数倍
D、结构体中最后一个成员所需的内存量

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

(  B  )
1、下列程序的运行结果是________。
#define ADD(x)X+X
main()
{
int m=1,n=2,k=3: int s=ADD(m+n)*k;
printf("s=%d",s):
}
A、sum=18
B、sum=10
C、sum=9
D、sum=25
(  A  )
2、有以下程序
#include<stdio.h>
void fun (char*c,int d)
{
*c=*c+1;
d=d+1;
printf("%c,%c,",*c,d);
}
main()
{
char b=’a’,a=’a’;
fun(&b,a);
printf("%c,%c\n",b,a);
}
程序运行后的输出结果是________。
A、b,B,b,A
B、b,B,B,A
C、a,B,B,a
D、a,B,a,B
(  D  )
3、有以下程序 fun(int a, int b)
{
if(a>b) return(a);
else return(b);
}
main()
{
int x=3, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf("%d\n", r);
}
程序运行后的输出结果是________。
A、3
B、6
C、8
D、12
(  C  )
4、有以下程序
#include <stdio.h>
int f(int x)
{
int y;
if(x==0||x==1) return (3);
y=x*x-f(x-2);
return y;
}
main()
{
int z;
z=f(3);
printf("%d\n",z);
}
程序的运行结果是________。
A、0
B、9
C、6
D、8
(  B  )
5、执行下面的一段c程序后,变量sum的值应为______。
char chr=127; int sum=300; chr +=1; sum +=chr;
A、428
B、172
C、300
D、427
(  C  )
6、有以下程序
main()
{
int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
程序运行后的输出结果是______。
A、2,3,3
B、2,3,2
C、2,3,1
D、2,2,1
(  D  )
7、有以下程序
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i;
for(i=0;i<3;i++) printf("%d",a[1][i]);
}
程序运行后的输出结果是______。
A、012
B、123
C、234
D、345
(  C  )
8、有以下程序
#include <stdio.h>
#include <stdlib.h>
int fun(int n)
{
int *p;
p=(int*)malloc(sizeof(int));
*p=n;
return *p;
}
main()
{
int a;
a=fun(10);
printf("%d\n",a+fun(10));
}
程序的运行结果是______。
A、0
B、10
C、20
D、出错
(  C  )
9、有以下程序
#include <string.h>
main()
{
char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde";
strcpy(p+strlen(q),r);
strcat(p,q);
printf("%d\n", strlen(p));
}
程序运行后的输出结果是______。
A、9
B、8
C、11
D、12
(  B  )
10、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。请分析程序填空。
#include<stdio.h>
main()
{
char s[80],c1,c2=' ';
int i=0,num=0;
gets(s);
while(s[i]!='\0')
{
c1=s[i];
if( ) num++;
i++;
c2=c1;
}
printf("there are %d words.\n",num);
}
A、c1==' '&&c2==' '
B、c1!=' '&&c2==' '
C、c1==' '&&c2!=' '
D、c1!=' '&&c2!=' '