山东建筑大学C语言程序设计题库

本试卷为山东建筑大学C语言程序设计题库,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计题库

一、单项选择题 (共50题,每题2分,共计100分)

(  B  )
1、c语言中的简单数据类型有( )。
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型
(  A  )
2、a,b均为整数,且b!=0,则表达式a/b*b+a%b的值是________。
A、a
B、b
C、a被b除的整数部分
D、a被b除的商的整数部分
(  D  )
3、下列选项中,能够正确定义数组的语句是________。
A、int num[0..2008];
B、int num[];
C、int N=2008;
D、#define N 2008
int num[N]; int num[N]
(  B  )
4、以下能正确定义一维数组的选项是________。
A、int num[];
B、#define N 100
int num[N];
C、int num[0..100];
D、int N=100;
int num[N];
(  B  )
5、设有条件表达式:(exp)? i++ ; j—,则以下表达式中与(exp)完全等价的是________。
A、(EXP=0)
B、(EXP!=0)
C、(EXP=1)
D、(EXP!=1)
(  C  )
6、有以下程序
#include <stdio.h>
main()
{
int a[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{
case 0: switch(a[i]%2)
{
case 0:a[i]++;
break;
case 1:a[i]--;
}
break;
case 1:a[i]=0;
}
for(i=0;i<4;i++) printf("%d ",a[i]);
printf("\n");
}
程序运行后的输出结果是________。
A、3 3 4 4
B、2 0 5 0
C、3 0 4 0
D、0 3 0 4
(  D  )
7、在c语言中对一维整型数组的正确定义为 。
A、int a(10);
B、int n=10,a[n];
C、int n;a[n];
D、#define N 10 int a[N];
(  A  )
8、在c语言中,函数的数据类型是指( )
A、函数返回值的数据类型
B、函数形参的数据类型
C、调用该函数时的实参的数据类型
D、任意指定的数据类型
(  C  )
9、c 语言的程序一行写不下时,可以 。
A、用逗号换行
B、用分号换行
C、在任意一空格处换行
D、用回车符换行
(  C  )
10、若 a 为整型变量,则以下语句 。 a=-2l; printf("%d\n",a);
A、赋值不合法
B、输出为不确定的值
C、输出值为 -2
D、输出值为 2
(  B  )
11、以下程序的运行结果是:
main()
{
int w=5 ;
fun(w) ;
printf( "\ n " ) ;
}
fun(int k)
{
if(k>o) fun(k-1) ;
printf( " %d ", k) ;
}
A、5 4 3 2 l
B、0 1 2 3 4 5
C、1 2 3 4 5
D、5 4 3 2 1 0
(  D  )
12、下面程序的输出是______。
main ()
{
struct cmplx
{
int x ;
int y ;
}
cnum[2]={1 , 3 , 2 , 7};
printf ( "%d\n" , cnum[0].y/cnum[0].x*cnum[1].x );
}
A、0
B、1
C、3
D、6
(  B  )
13、下面程序的输出结果是 __________.
#include<stdio.h>
void main( )
{
int x=3;
do
{
printf("%d ",x-=2);
}
while(!(--x));
}
A、1
B、1 -2
C、3 0
D、是死循环
(  C  )
14、下列说法中不正确的是________。
A、switch语句功能可以由if-else语句实现
B、若用于比较的数据类型为double,则不能用switch语句来实现
C、if-else语句的执行效率总是比switch语句高
D、case子句可以有多个语句,并且不需要用大括号””括起来
(  B  )
15、下面程序段的功能是________。
…… int a[]= {4,0,2,3,1},i,j,t;
for(i=0;<5;i++)
{
t=a[i];
j=i;
j--;
}
while(j>=0&&t>a[j])
{
a[j+1]=a[j];
j--;
a[j+1] =t;
}
……
A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)
(  A  )
16、c语言中,系统的标准输入文件是指
A、键盘
B、显示器
C、软盘
D、硬盘
(  C  )
17、若有以下调用语句,则不正确的fun函数的首部是________。
main() {
…
int a[50],n;
…
fun(n, &a[9]);
…
}
A、void fun(int m,int x[])
B、void fun(int s,int h[4])
C、void fun(int p, int *s)
D、void fun(int n,int x)
(  C  )
18、程序中对fun函数有如下说明 void*fun(); 此说明的含义是________。
A、fun函数无返回值
B、fun函数的返回值可以是任意的数据类型
C、fun函数的返回值是无值型的指针类型
D、指针fun指向一个函数、该函数无返回值
(  A  )
19、以下程序段中与语句k=a>b ? (b>c ? 1:0):0; 功能等价的是________。
A、if((a>b)&&(b>c))
k=1;
B、if((a>b)||(b>c)) k=1;
else k=0;
else k=0;
C、if(a<=b) k=0;
D、if(a>b) k=1;
else if(b<=c) k=1;
else if(b>c) k=1;
else k=0;
(  D  )
20、下列关于单目运算符++、--的叙述中正确的是________。
A、它们的运算对象可以是任何变量和常量
B、它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C、它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D、它们的运算对象可以是char型变量、int型变量和float型变量
(  B  )
21、下列for循环的次数为________。
for( int i=0,x=0;!x&&i<=5;i++)
A、5
B、6
C、1
D、无限
(  B  )
22、若变量已正确定义并赋值,下面符合c语言语法的表达式是________。
A、m:=5
B、c=b=a=l
C、float 8%5
D、x+5=y+2
(  D  )
23、表达式x+1>x是________。
A、算术表达式
B、非法表达式
C、字符串表达式
D、关系表达式
(  A  )
24、表示关系a≤b≤c的c语言表达式为________。
A、(a<=b)&&(b<=c)
B、(a<=b)and(b<=c)
C、(a<=b<=c)
D、(a<=b)&(b<=
(  C  )
25、各种运算符间的优先顺序从高到低是________。
A、比较运算符→算术运算符→逻辑运算符
B、比较运算符→逻辑运算符→算术运算符
C、算术运算符→比较运算符→逻辑运算符
D、算术运算符→逻辑运算符→比较运算符
(  B  )
26、以下叙述中正确的是________。
A、在函数中必须要有return语句
B、在函数中可以有多个return语句,但只执行其中的一个
C、return语句中必须要有一个表达式
D、函数值并不总是通过return语句传回调用处
(  C  )
27、以下选项中属于c语言数据类型的是________。
A、复数型
B、逻辑型
C、双精度型
D、集合型
(  B  )
28、int a[5],*p=a; 对a数组元素地址的正确引用是________。
A、p+5
B、&a[0]
C、&a+1
D、*a+1
(  C  )
29、有以下程序
main() {
int i;
for(i=0;i<3;i++)
switch(i) {
case 0: prinft("%d",i);
case 2: prinft("%d",i);
default:prinft("%d",i);
}
}
程序运行后的输出结果是________。
A、022111
B、021021
C、000122
D、012
(  C  )
30、以下程序输出的结果为 ______。
main()
{
char *alpha[6]={"abcd","efgh","ijkl","mnop","qrst","uvwx"};
char **p;
int i;
p=alpha;
for(i=0;i<4;i++) printf("%s",p[i]);
}
A、ABCDEFGHIJKL
B、ABCD
C、ABCDEFGHIJKLMNOP
D、AEIM
(  C  )
31、有以下程序
#include<stdio.h>
main ()
{
int i, j, x = 0;
for (i = 0; i < 2; i++)
x++;
for (j = 0; j <= 3; j++)
{
if (j % 2)
continue;
x++;
x++;
}
printf ("x=%d\n", x);
}
程序执行后的输出结果是______。
A、x=8
B、x=4
C、x=6
D、x=12
(  A  )
32、下列语句中,正确的是______。
A、static char str[]="China";
B、static char str[];str="China";
C、static char str1[5],str2[]="China";strl=str2;
D、static char str1[],str2[];str2="China";strcpy(str1,str2);
(  A  )
33、分析下列程序:
#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
(  B  )
34、以下关系表达式中,其值为true的是________。
A、"XYZ">"XYz"
B、"VisualBasic"<>"visualbasie"
C、"the"="there"
D、"Integer"<"Int\
(  C  )
35、顺序执行下列程序语句后,则b的值是 string a="hello"; string b=a.substring(0,2);
A、Hello
B、hello
C、He
D、null
(  D  )
36、下面叙述正确的是________。
A、只要是简单算法,它的操作步骤都不会超过 20 步
B、任何算法需要包含三种基本结构中的两种以上
C、复杂算法是不能用三种基本结构来表达的
D、C 语言程序的语句经过编译和链接转换成二进制机器指令后才能执行
(  A  )
37、以下是正确 c 语言标识符的是________。
A、_3
B、#3
C、&3
D、-3
(  A  )
38、若有下面的说明和定义:
struct test
{
int m1;
char m2;
float m3;
union uu
{
char u1[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test)的值是________。
A、20
B、16
C、14
D、9
(  C  )
39、以下程序的输出结果是______。
main()
{
int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2) printf("%d",p[i]);
}
A、52
B、51
C、53
D、97
(  D  )
40、下列关于函数的调用方式,说法不正确的是________?
A、可以将函数作为表达式调用
B、可以将函数作为语句调用
C、可以将函数作为实参调用
D、以上选项都错误
(  C  )
41、下列程序段的功能是________。计算数组x中相邻两个元素的和,依次存放到 a 数组中,然后输出a数组。程序段中待填空的(1)和(2)的正确选项是________。int i;
int a[9], x[10];
for(i = 0; i < 10; i++)
{
scanf("%d", &x[i]);
}
for( (1) ; i < 10; i++ )
{
/* 此处待填空(1) */ a[i-1] = x[i] + (2) ;
/* 此处待填空(2) */
}
for(i = 0; i < 9; i++)
{
printf("%d ",a[i]);
}
printf("\n");
A、(1) i = 1 (2) x[i+1]
B、(1) i = 0 (2) x[i-1]
C、(1) i = 1 (2) x[i-1]
D、(1) i = 0 (2) x[i+1]
(  B  )
42、c 语言 double 中类型数据占字节数为________。
A、4
B、8
C、12
D、16
(  B  )
43、以下叙述中正确的是________。
A、用户自己定义的函数只能调用库函数
B、实用的 C 语言源程序总是由一个或多个函数组成
C、不同函数的形式参数不能使用相同名称的标识符
D、在 C 语言的函数内部,可以定义局部嵌套函数
(  D  )
44、以下不符合c语言语法的赋值语句是________。
A、j++;
B、j=j=5;
C、k=2*4,k*4;
D、y=float(j);
(  B  )
45、以下程序的输出结果为________。
main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
int func(int x,int y)
{
return(x+y);
}
A、15
B、13
C、9
D、函数调用出错
(  B  )
46、有以下程序
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
(  C  )
47、fgets(str,n,fp) 函数从文件中读入一个字符串, 以下正确的叙述是________。
A、字符串读入后不会自动加入'\0'
B、fp 是file 类型的指针
C、fgets 函数将从文件中最多读入n-1 个字符
D、fgets 函数将从文件中最多读入n 个字符
(  C  )
48、语句int *p;说明了 ____ 。
A、p是指向一维数组的指针
B、p是指向函数的指针,该函数返回一int型数据
C、p是指向int型数据的指针 // 指针的定义教材P223
D、p是函数名,该函数返回一指向int型数据的指针
(  B  )
49、若 k 为 int 型变量,则以下程序段的执行结果是()。k=-8567; printf("|%06D|\n",k);
A、格式描述符不合法,输出无定值
B、输出为|%06D|
C、输出为|0-8567|
D、输出为|-8567|
(  D  )
50、static char str[10]="China";数组元素个数为()。
A、5
B、6
C、9
D、10