甘肃农业大学C语言程序设计测试卷

本试卷为甘肃农业大学C语言程序设计测试卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。

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

C语言程序设计测试卷

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

(  C  )
1、c语言用________表示逻辑"真"值。
A、true
B、t或y
C、非零整型值
D、整型值0
(  C  )
2、设有int x=11;则表达式(x+1/3)的值是________。
A、3
B、4
C、11
D、12
(  D  )
3、表达式5!=3的值是________。
A、T
B、非零值
C、0
D、1
(  C  )
4、设x,y,z,s均为int型变量,且初值均为1,则执行语句s=++x||++y&&++z后,则s的值为:
A、不定值
B、2
C、1
D、0
(  D  )
5、设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是________。
A、p=1;
B、*q=2;
C、q=p;
D、*p=5;
(  A  )
6、下列表示引用的方法中,( )是正确的。 已知:int m=10:
A、int &x=m;
B、int &y=10;
C、int &Z
D、float &t=&m;
(  D  )
7、设int b=2; 表达式(b<<2)/(b>>1)的值是________。
A、2
B、4
C、6
D、8
(  C  )
8、以下选项中合法的实型常数是________。
A、5E2.0
B、E-3
C、2E0
D、1.3E
(  B  )
9、下列关于c语言用户标识符的叙述中正确的是________。
A、用户标识符中可以出现下划线和中划线(减号)
B、用户标识符中不可以出现中划线,但可以出现下划线
C、用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D、用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
(  D  )
10、按照运算符功能的划分,运算符==属于________。
A、扩展赋值运算符
B、二元运算符
C、算术运算符
D、关系运算符
(  C  )
11、以下4个选项中,不能看作一条语句的是________。
A、;
B、a=5,b=2.5,c=3.6;
C、if(b!=5)x=2;y=6;
D、return j;
(  B  )
12、若题中各变量已正确定义并赋值,下面符合c语法的表达式是________。
A、a%=7.6;
B、a++,a=7+b+c
C、int(12.3)%4
D、a=c+b=a+7
(  D  )
13、与二进制数100101等值的十进制数是________。
A、34
B、35
C、36
D、37
(  B  )
14、下列语句合法的是________。
A、4+c=b=0 ;
B、a=++c;
C、a=2=b=6;
D、a=4++;
(  C  )
15、以下数值中,不正确的八进制数或十六进制数是________。
A、0x16
B、016
C、-16
D、0xaaaa
(  C  )
16、若ch为char型变量,k为int型变量(已知字符a的ascii十进制代码为97), 则以下程序段的执行结果是________。 ch='a';
k=12;
printf("%x,%o,",ch,ch,k);
printf("k=%%d\n",k);
A、因变量类型与格式描述符的类型不匹配,输出无定值
B、输出项与格式描述符个数不符,输出为零值或不定值
C、61,141,k=%d
D、61,141,k=%12
(  C  )
17、以下常量中, 能够代表逻辑" 真" 值的常量是________。
A、\0'
B、0
C、'0'
D、NULL
(  D  )
18、以下不正确的说法是____
A、在不同的函数中可以使用相同名字的变量
B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有效
D、在函数内的复合语句中定义的变量在本函数范围内有效
(  C  )
19、下面叙述中正确的是
A、对于用户自己定义的函数,在使用前必须加以声明
B、声明函数时必须明确其参数类型和返回类型
C、函数可以返回一个值,也可以什么值也不返回
D、空函数在不完成任何操作,所以在程序设计中没有用处
(  A  )
20、以下叙述中错误的是
A、用户所定义的标识符允许使用关键字
B、用户所定义的标识符应尽量做到"见名知意"
C、用户所定义的标识符必须以字母或下划线开头
D、用户定义的标识符中,大、小写字母代表不同标识

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

(  C  )
1、设a、b、e、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值是________。
A、0
B、1
C、2
D、3
(  A  )
2、下列程序的输出结果是________。
main()
{
int a=0,i;
for(i=1;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=1;
case 1;
case 2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
A、19
B、1
C、6
D、8
(  B  )
3、下列表达式为关系表达式的为_________。(其中a为一整型变量)
A、3+4*5
B、a==10
C、a>0a:-a
D、a=1
(  A  )
4、下列程序的运行结果是________。
main()
{
int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0)x=x+ y;
if(a<=0)
{
if(b>0) if(c<=0)y=x-y;
}
else if(c>0)y=x-y;
else z=y;
printf("%d,%d,%d\n",x,y,z);
}
A、2,2,0
B、2,2,2
C、0,2,0
D、2,0,2
(  A  )
5、有以下程序
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
(  C  )
6、下列程序的输出结果是______。
#include<stdio.h>
main()
{
int a=0,b=1,c=2;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
A、0,1,2
B、1,2,3
C、1,1,3
D、1,2,2
(  A  )
7、分析下列程序:
#include<stdio.h>
main()
{
int*p1,*p2,*p;
int a=6,b=9;
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
printf("%d,%d",*p1,*p2);
printf("%d,%d",a,b);
}
程序的输出结果为________。
A、9,66,9
B、6,99,6
C、6,96,9
D、9,69,6
(  A  )
8、有如下程序
main()
{
int x=1,a=5,b=5;
switch(x)
{
case 0: b--;
case 1: a--;
case 2: a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
A、a=3,b=4
B、a=3,b=3
C、a=4,b=5
D、a=4,b=4
(  B  )
9、能正确表示a≥10或a≤0的关系表达式是________。
A、a>=10 or a<=0
B、a>=10 || a<=0
C、a>=10 | a<=0
D、a>=10 && a<=0
(  A  )
10、c语言的if语句中,用作判断的表达式为____
A、任意表达式
B、逻辑表达式
C、关系表达式
D、算术表达式

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

(  D  )
1、以下叙述中正确的是________。
A、do-while语句构成的循环不能用其他语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用do-while语句构成循环时,只有在while后的表达式为非零时结束循环
D、用do-while语句构成循环时,只有在while后的表达式为零时结束循环
(  B  )
2、以下正确的描述是________.
A、continue语句的作用是结束整个循环的执行
B、只能在循环体内和switch语句体内使用break语句
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用goto语句
(  B  )
3、若变量已正确定义,有以下程序段
i=0;
do printf("%d,"i);
while(i++);
printf("%d\n",i);
其输出结果是________。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
(  D  )
4、程序段如下:则以下说法中不正确的是: 。
#include <stdio.h>
main()
{
int k=2,;
while(k<7)
{
if(k%2)
{
k=k+3;
printf( " k=%d\n " ,k);
continue;
}
k=k+1;
printf( " k=%d\n " ,k);
}
}
A、k=k+3; 执行一次
B、k=k+1; 执行 2 次
C、执行后 k 值为 7
D、循环体只执行一次
(  B  )
5、执行下列语句后,r的值是
char ch='a';
int r=6;
switch(ch+5) {
case'a':r=r+3;
case'b':r=r+5;
case'c':r=r+5;
break;
default:r/=2;
}
A、19
B、3
C、11
D、7
(  B  )
6、已知 #int t=0; while(t=1) {...} 则以下叙述正确的是________。
A、循环控制表达式的值为0
B、循环控制表达式的值为1
C、循环控制表达式不合法
D、以上说法都不对
(  A  )
7、有以下程序:
#include<stdio.h>
main() {
int c;
while((c=getchar())!=’\n’)
switch(c-’3’) {
case 0: case 1:putchar(c+4);
case 2:putchar(c+4);
break;
case 3:putchar(c+3);
case 4:putchar(c+3);
break;
}
printf("\n");
}
从第一列开始输入数据(<cr>代表一个回车符):3845<cr>,则程序输出结果为________。
A、77889
B、77868
C、776810
D、77886610
(  B  )
8、若变量已正确定义:for(x=0,y=0;(y!=99&&x<4);x++) 则以上 for 循环()
A、执行 3 次
B、执行 4 次
C、执行无限次
D、执行次数不定
(  A  )
9、以下关于continue语句的描述中正确的是________。
A、continue语句只能用于循环中
B、continue语句只能用于switch语句中
C、continue语句可用于循环和switch语句中
D、以上说法都不正确
(  D  )
10、以下程序段的输出结果为()。
char c[]="abc";
int i=0;
do ;while(c[i++]!='\0');printf("%d",i-1);
A、abc
B、ab
C、2
D、3

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

(  D  )
1、若已定义: int a[4][3]=(1,2,3,4,5,6,7,8,9,10,1i,12),(*prt) [3]=a,*p=a[0];则能够正确表示数组元素a[1][2]的表达式是________。
A、*((+prt+1)[2])
B、*(*(p+5))
C、(+prt+1)+2
D、*(*(a+1)+2)
(  B  )
2、若有定义"int b[8],*p=b;",则p+6表示( )。
A、数组元素b[6]的值
B、数组元素b[6]的地址
C、数组元素bE73的地址
D、数组元素hEo]的值加上6
(  D  )
3、若有定义:int a[10],则对数组a元素的正确引用是________。
A、a[10]
B、a[3.5]
C、a(5)
D、a[0]
(  C  )
4、若有说明语句"int a[5],*p=a; ",则对数组元素的正确引用是________。
A、a[p]
B、p[a]
C、*(p+2)
D、p+2
(  D  )
5、设有以下语句,对a数组元素的引用中(其中0<=i<10)不正确的是 int a[10]= {0,1,2,3,4,5,6,7,8,9 },*p=a;
A、a[p-a]
B、*(&
C、p
D、*(*(a +)
(  B  )
6、在一个应用程序中有如下定义:int a[]= {1,2,3,4,5,6,7,8,9,10 },为了打印输出数组a的最后一个元素,下面正确的代码是________。
A、printf("%d",a[10];)
B、printf("%d",a[9]);
C、printf("%d",a[a.length]);
D、printf("%d",a[8]);
(  C  )
7、若已定义: int a[]= { 0,1,2,3,4,5,6,7,8,9 },*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是________。
A、int
B、double
C、float
D、不确定
(  D  )
8、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是________。
A、int x[3]=0,0,0;
B、int x[]=0;
C、static int x[3]=0;
D、int x[]=
(  C  )
9、设有如下定义:char*aa[2]="abcd","abcd",则以下说法中正确的是________。
A、aa数组中元素的值分别是"abcd","ABCD";
B、aa是指针变量,它指向含有两个数组元素的字符型一维数组
C、aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D、aa数组的两个元素中各自存放了字符‘a’和‘A’的地址
(  C  )
10、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#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]

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

(  C  )
1、以下不能将s所指字符串正确复制到t所指存储空间的是________。
A、while(*t=*s){t++;s++;)
B、for(i=0;t[i]=s[i];i++);
C、do {*t++=*s++;)while(*s);
D、for(i=0,j=o;t[i++]=s[j++];);
(  B  )
2、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while((ch=getchar())!='e') printf("*");
A、5
B、4
C、6
D、1
(  A  )
3、下列四组字符串中都可以用作c语言程序中的标识符的是________。
A、print _3d db8 aBc
B、I\am one_half start$it 3pai
C、str_1 Cpp pow while
D、Pxq My->book line# His.age
(  A  )
4、下列字符串是标识符的是: 。
A、_HJ
B、9_student
C、long
D、LINE 1
(  C  )
5、下面程序段的运行结果是 char *s="abcde"; s+=2; printf("%d",s);
A、cde
B、字符'c'
C、字符'c'的地址
D、无确定的输出结果
(  C  )
6、以下能将字符串,you are luck!正确读入的语句组是________。
A、char s[80]; scanf("%s",s);
B、char *s: scanf("%s",s);
C、char s[80]; gets(s);
D、char *s; gets(3);
(  A  )
7、以下正确的字符串常量是________。
A、"\\"
B、'abc'
C、OlympicGames
D、'A'
(  D  )
8、判断字符串a 和b 是否相等,应当使用。
A、if(a==b)
B、if(a=b)
C、if(strcmp(a,b))
D、if(strcmp(a,b)==0)
(  C  )
9、判断两个字符串是否相等,正确的表达方式是
A、s1==s2
B、s1=s2
C、strcmp(s1,s2)==0
D、strcmp(s1,s2)=0
(  A  )
10、char a[]="This is a program.";输出前 5 个字符的语句是()。
A、printf("%.5s",a);
B、puts(a);
C、printf("%s",a);
D、a[5*2]=0;puts(a);

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

(  C  )
1、以下正确的叙述是______。
A、C 语言允许 main 函数带形数,且形参个数和形参名均可由用户指定
B、C 语言允许 main 函数带形参,形参名只能是 argc 和 argv
C、当 main 函数带有形参时,传给形参的值只能从命令行中得到
D、有说明 : main ( int argc,char *argv ),则形参 argc 的值必须大于 1
(  C  )
2、以下正确的说法是________。
A、定义函数时,形参的类型说明可以放在函数体内
B、return后边的值不能为表达式
C、如果函数值的类型与返回值类型不一致,以函数值类型为准
D、如果形参与实参类型不一致,以实参类型为准
(  D  )
3、在c 语言程序中,在函数内部定义的变量称为________。
A、全局变量
B、外部变量
C、全程变量
D、内部变量
(  A  )
4、有以下程序:
void fun(int*a,int i,int j) {
int t;
if(i<j) t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
}
main() {
int a[]=1,2,3,4,5,6,i;
fun(a,0,5);
for(i=0;i<6;i++) printf("%d",a[i]);
}
执行后的输出结果是 ______。
A、6 5 4 3 2 1
B、4 3 2 1 5 6
C、4 5 6 1 2 3
D、1 2 3 4 5 6
(  C  )
5、函数调用时,基本的参数传递方式有传值与传地址两种, (23) 。
A、在传值方式下,形参将值传给实参
B、在传值方式下,实参不能是数组元素
C、在传地址方式下,形参和实参间可以实现数据的双向传递
D、在传地址方式下,实参可以是任意的变量和表达式
(  A  )
6、以下关于字符串的叙述中正确的是________。
A、空串比空格打头的字符串小
B、两个字符串中的字符个数相同时才能进行字符串大小的比较
C、可以用关系运算符对字符串的大小进行比较
D、C 语言中有字符串类型的常量和变量
(  A  )
7、对于函数声明 void fun(int a[1],int*b); 以下叙述中正确的是________。
A、函数参数A,b 都是指针变量
B、有语法错误,数组 a 的大小不能为 1
C、调用该函数后,实参变量所指向的内存单元的值肯定不会受影响
D、调用该函数时,a 的值是从对应实参复制过来的,b 的值是对应实参变量的地址
(  B  )
8、以下叙述中正确的是________。
A、用户自己定义的函数只能调用库函数
B、实用的 C 语言源程序总是由一个或多个函数组成
C、不同函数的形式参数不能使用相同名称的标识符
D、在 C 语言的函数内部,可以定义局部嵌套函数
(  D  )
9、以下叙述中正确的是________。
A、局部变量不能被说明为 static
B、只有全局变量才有自己的作用域,函数中的局部变量没有作用域
C、只有在函数内部定义的变量才是局部变量
D、只要是用户定义的标识符,都有一个有效的作用域
(  B  )
10、c语言源程序的基本单位是________。
A、过程
B、函数
C、子程序
D、标识符

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

(  C  )
1、以下叙述中不正确的是________。
A、空字符串(即两个双引号连写)只占一个存储单元
B、字符型常量可以放在字符型变量中
C、字符型常量可以放在字符串变量中
D、字符型常量可以与整数混合运算,而字符串常量不可以
(  B  )
2、若有以下数组说明,则i=10; a[a[i]]元素数值是________。 int a[12]= { 1,4,7,10,2,5,8,11,3,6,9,12 } ;
A、10
B、9
C、6
D、5
(  A  )
3、若 x 是 int 型变量 ,y 是 float 型变量 , 所用的 scanf 调用语句格式为 : scanf("x=%d,y=%f",&x,&y); 则为了将数据 10 和 66.6 分别赋给 x 和 y, 正确的输入应是 : 。
A、x=10,y=66.6< 回车 >
B、10 66.6< 回车 >
C、10< 回车 >66.6< 回车 >
D、x=10< 回车 >y=66.6< 回车
(  C  )
4、定义如下变量和数组 : 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
(  A  )
5、对于 c 语言的函数,下列叙述中正确的是 ______ __.
A、函数的定义不能嵌套,但函数调用可以嵌套
B、函数的定义可以嵌套,但函数调用不能嵌套
C、函数的定义和调用都不能嵌套
D、函数的定义和调用都可以嵌套
(  A  )
6、如果用数组名作为实参,则传递给形参的是________。
A、数组的首地址
B、第一个元素的值
C、数组元素的个数
D、数组中全部元素的值
(  C  )
7、以下叙述中错误的是________。
A、局部变量的定义可以在函数体和复合语句的内部
B、全局变量的定义可以在函数以外的任何部位
C、同一程序内局部变量和全局变量不允许同名
D、函数的形参属于局部变量
(  C  )
8、若有定义语句:int m[ ]= {5,4,3,2,1},i=4; 则下面对m数组元素的引用中错误的是______。
A、m[--i]
B、m[2*2]
C、m[m[0]]
D、m[m[i]]
(  B  )
9、c语言中数组下标的下限是________。
A、1
B、0
C、视具体情况而定
D、无固定下限
(  A  )
10、以下叙述中错误的是________。
A、将函数内的局部变量说明为 static 存储类是为了限制其他编译单位的引用
B、一个变量作用域的开始位置完全取决于变量定义语句的位置
C、全局变量可以在函数以外的任何部位进行定义
D、局部变量的“生存期”只限于本次函数调用,因此不能将局部变量的运算结果保存至下一次调用

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

(  D  )
1、有以下程序
struct stu
{
int num;
float totalscore;
};
void f(struct stu p)
{
struct stu s[2]= {{20044,550}, {20045,537}};
p.num = s[1].num;
p.totalscore = s[1].totalscore;
}
main()
{
struct stu s[2]= {{20041,703} ,{20042,580}};
f(s[0]);
printf("%d %3.0f\n", s[0].num, s[0].totalscore);
}
程序运行后的输出结果是________。
A、20045 537
B、20044 550
C、20042 580
D、20041 703
(  A  )
2、程序中有下面的说明和定义
struct abc
{
int x ;
char y ;
}
struct abc s1 , s2 ;
则会发生的情况是______。
A、编译出错
B、程序将顺利编译、连接、执行
C、能顺利通过编译、连接、但不能执行
D、能顺利通过编译、但连接出错
(  D  )
3、在16位pc机上使用c语言,若有如下定义
struct data {
int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是________。
A、1
B、2
C、7
D、11
(  B  )
4、下面关于主程序的说法,错误的是________。
A、a.next=q;
B、p.next=&b;
C、p->next=&b;
D、(*p).next=q;
(  A  )
5、有以下程序
struct s
{
int n;
int a[20];
}
;
void f(int *a, int n)
{
int i;
for(i=0;i<n-1;i++) a[i]+=i;
}
main()
{
int i;
struct s s={10,
{
2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0;i<s.n;i++) printf("%d,",s.a[i]);
}
程序运行后的输出结果是______。
A、2,4,3,9,12,12,11,11,18,9,
B、3,4,2,7,9,8,6,5,11,10,
C、2,3,1,6,8,7,5,4,10,9,
D、1,2,3,6,8,7,5,4,10,9,
(  D  )
6、有以下程序
#include <stdio.h>
main()
{
struct stu
{
char name[9];
char sex;
double score[2];
}
;
struct stu a={"zhao",'m',85.0,90.0},b={"qian",'f',95.0,92.0};
b=a;
printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是______。
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90
(  A  )
7、设有结构体的定义如下:
struct data
{
char c1;
char c2;
}
;
则sizeof(struct data)的值是________。
A、2
B、3
C、4
D、5
(  B  )
8、定义file *fp; 则文件指针fp 指向的是________。
A、文件在磁盘上的读写位置
B、文件在缓冲区上的读写位置
C、整个磁盘文件
D、文件类型结构体
(  A  )
9、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若要使p指向data中的a域,正确的赋值语句是________。
A、p=(struct sk*)&data.a;
B、p=(struct sk*) data.a;
C、p=&data.a;
D、*p=data.a;
(  B  )
10、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.2f\n",sum);
}
程序运行后的输出结果是________。
A、270
B、270.00
C、285.00
D、285

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

(  D  )
1、有以下程序:
main()
{
char ch[3][5]={"aaaa","bbb","cc"};
printf("%s\n",ch[l]);
}
程序运行后的输出结果是________。
A、AAA
B、CC
C、BBBCC
D、BBB
(  D  )
2、阅读下面的程序
main()
{
int i,j;
scanf("%3d%2d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
如果从键盘上输入1234567<回车>,则程序的运行结果是________。
A、i=123,j=4567
B、i=1234,j=567
C、i=1,j=2
D、i=123,j=45
(  B  )
3、有以下程序
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;
printf("%d\n", *p + *q);
}
程序运行后的输出结果是________。
A、16
B、10
C、8
D、6
(  A  )
4、有以下程序 float f1(float n)
{
return n*n;
}
float f2(float n)
{
return 2*n;
}
main()
{
float (*p1)(float),(*p2)(float),(*t)(float), y1, y2;
p1=f1;
p2=f2;
y1=p2( p1(2.0) );
t = p1;
p1=p2;
p2 = t;
y2=p2( p1(2.0) );
printf("%3.0f, %3.0f\n",y1,y2);
}
程序运行后的输出结果是________。
A、8, 16
B、8, 8
C、16, 16
D、4, 8
(  C  )
5、有以下程序
#include<stdio.h>
main()
{
int a[5]={1,2,3,4,5}, b[5]={0,2,1,3,0}, i, s=0;
for(i=0;i<5;i++) s=s+a[b[i]];
printf("%d\n",s);
}
程序运行后的输出结果是________。
A、6
B、10
C、11
D、15
(  A  )
6、有以下程序
main( )
{
char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"} ;
printf("%d\n",strlen(p[4]));
}
执行后输出结果是________。
A、2
B、3
C、4
D、5
(  C  )
7、分析以下程序 , 下列说法正确的是______。
main()
{
int x=5,a=0,b=3;
if(x=a+b) printf("* * * *\n");
else printf("# # # #\n");
}
A、有语法错,不能通过编译
B、通过编译,但不能连接
C、输出 * * * *
D、输出 # # # #
(  D  )
8、下列语句的结果是________。
main()
{
int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A、3,3
B、3,4
C、4,3
D、4,4
(  C  )
9、下列程序段的运行结果是________ int x=10,y=20,z=30;
if(x>y) z=x;
x=y;
y=z;
printf("%d,%d,%d\n",x,y,z);
A、10,20,30
B、20,30,10
C、20,30,30
D、20,30,20
(  B  )
10、下面程序段的运行结果是________。char c[5]={'a','b','\0','c','\0'}; printf("%s",c);
A、'a''b'
B、ab
C、ab c
D、ab ▄( ▄表示空格)