西安石油大学历年C语言程序设计期末题库

本试卷为西安石油大学历年C语言程序设计期末题库,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计期末题库

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

(  A  )
1、以下关于typedef的叙述错误的是________。
A、用typedef可以增加新类型
B、typedef只是将已存在的类型用一个新的名字来代表
C、用typede{可以为各种类型说明一个新名,但不能用来为变量说明一个新名
D、用typedef为类型说明一个新名,通常可以增加程序的可读性
(  C  )
2、下列叙述中正确的是________。
A、break语句只能用于switch语句体中
B、continue语句的作用是使程序的执行流程跳出包含它的所有循环
C、break语句只能用在循环体内和switch语句体内
D、在循环体内使用break语句和continue语句的作用相同
(  D  )
3、vc 6.0中int类型变量所占字节数是________。
A、1
B、2
C、3
D、4
(  D  )
4、若变量c为char类型,能正确判断出c为小写字母的表达式是________。
A、'a'<=c<='2'
B、(c>='a')||(c<='z')
C、('a'<=c)and('z'>c)
D、(c>='a')&&(c<='Z')
(  D  )
5、三种基本结构中,能简化大量程序代码的是________。
A、顺序结构
B、分支结构
C、选择结构
D、重复结构
(  C  )
6、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
B、y=0,a
y=1,a≥b y一1,a≥b且c≠d
C、y=0,a
D、y=0,a
y=1,a<B且C≠D y="1,c≠d
(  C  )
7、下面程序段的运行结果是________. int n=0; while(n++<=2); printf("%d",n);
A、2
B、3
C、4
D、有语法错
(  C  )
8、计算机内部运算使用的数是________。
A、十进制数
B、十六进制数
C、二进制数
D、八进制数
(  D  )
9、在下列选项中,没有构成死循环的程序段是________。
A、int i=100;
while (1)
{
i=i%100+1;
if (i>100) break;
}
B、for( ; ; );
C、int k=1000;
do {++k;} while (k>=1000);
D、int s=36;
while (s) --s;
(  C  )
10、c语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符:
A、必须为字母
B、必须为下划线
C、必须为字母或下划线
D、可以是字母,数字或下划线中的任意一种
(  B  )
11、有以下程序
main( )
{
int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是________。
A、3,2,0
B、3,2,-1
C、4,3,-1
D、5,-2,-5
(  C  )
12、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是________。
A、char s[10]=”abcdefg”;
B、char t[]=”abcdefg”,*s=t;
C、char s[10];s=”abcdefg”;
D、char s[10];strcpy(s,”abcdefg”);
(  B  )
13、以下程序的输出结果是
#include <stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0) break;
else i--;
}
i+=11;
a+=i;
}
printh("%d\n",a);
}
A、21
B、32
C、33
D、11
(  A  )
14、c 语言的基本构成单位是: 。
A、函数
B、函数和过程
C、超文本过程
D、子程序
(  A  )
15、以下不能正确赋值的是______。
A、char s1[10];s1="test";
B、char s2[]={ ’ t ’ , ’ e ’ , ’ s ’ , ’ t ’ }
C、char s3[20]= "test";
D、char s4[4]={ ’ t ’ , ’ e ’ , ’ s ’ , ’ t ’ }
(  C  )
16、如有说明 : char s1[5],s2[7]; 要给数组 s1 和 s2 整体赋值 , 下列语句中正确的是 __________.
A、s1=getchar(); s2=getchar();
B、scanf("%s%s",s1,s2);
C、scanf("%c%c",s1,s2);
D、gets(s1,s2);
(  D  )
17、以下数组定义中不正确的是 __________.
A、int a[2][3];
B、int b[][3]={0,1,2,3};
C、int c[100][100]={0};
D、int a[3][]={{1,2},{1,2,3},{1,2,3,4}};
(  A  )
18、以下叙述中正确的是________。
A、C程序中注释部分可以出现在程序中任意合适的地方
B、花括号“{”和“}”只能作为函数体的定界符
C、构成C程序的基本单位是函数,所有函数名都可以由用户命名
D、分号是C语句之间的分隔符,不是语句的一部分
(  D  )
19、设int a=0; 错误的语句是________。
A、++a;
B、a++;
C、a=-a;
D、(-++a);
(  A  )
20、若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为 int s[2][3]=0,( *p)[3]; p=s;
A、*(*(p+i)+j)
B、*(p[i]+j)
C、(p+i)+j
D、(*(p+i))[j]
(  B  )
21、下列语句序列执行后,x的值是________。 int a=3,b=4,x=5; if (++ a==b)x=++a*x;
A、35
B、25
C、20
D、5
(  D  )
22、下面对二维数组array的定义,正确的是________。
A、int array[][4];
B、char array[3,4];
C、float array(3)(4);
D、float array[3][4];
(  D  )
23、下列关于标识符的说法中错误的是________。
A、合法的标识符是由字母、数字和下划线组成
B、C语言的标识符中,大写字母和小写字母被认为是两个不同的字符
C、C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符
D、用户标识符与关键字不同时,程序在执行时将给出出错信息
(  D  )
24、能正确表示逻辑关系"a>=10或a<=0"的c语言表达式是________。
A、a>=10ora=10
B、a>=0|a<=10
C、a>=10&&a<=0
D、a>=10||a<=0
(  A  )
25、下列属于条件运算符的是________。
A、:
B、&&
C、>>
D、+
(  B  )
26、下列不属于简单数据类型的是________。
A、整数类型
B、类
C、浮点数类型
D、布尔类型
(  C  )
27、若有说明语句:int i,x[3][4]; 则不能将x[1][1]的值赋给变量i的语句是______。
A、i=*(*(x+1)+1)
B、i=x[1][1]
C、i=*(*(x+1))
D、i=*(x[1]+1)
(  D  )
28、下列字符串中,不可以用作c标识符的是________。
A、y_2006
B、_FEST_H
C、Return
D、switch
(  C  )
29、下列程序执行后的输出结果是
void func1(int i);
void func2(int i);
char st[]="hello,friend!";
void func1(int i)
{
printf("%c",st[i]);
if(i<3)
{
i+=2;
func2(i);
}
}
void func2(int i)
{
printf("%c",st[i]);
if(i<3)
{
i+=2;
func1(i);
}
}
{
int i=0;
func1(i);
printf("\n");
}
A、hello
B、hel
C、hlo
D、hlm
(  D  )
30、以下程序的输出结果是________。
#include<stdio.h>
void main( )
{
int k=17;
printf("%d,%o,%x\n",k,k,k);
}
A、17,021,0x11
B、17,17,17
C、17,0x11,021
D、17,21,11
(  D  )
31、判断字符串s1是否大于字符串s2,应当使用 。
A、if (s1>s2)
B、if (strcmp(s1,s2))
C、if (strcmp(s2,s1)>0)
D、if (strcmp(s1,s2)>0)
(  B  )
32、有如下程序
#define N 3
#define M N+2
#define NUM 2*M+1
main()
{
int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
}
该程序中的for循环执行的次数是______。
A、5
B、9
C、7
D、8
(  B  )
33、若有说明:inta,b=2,*p=&a; 则能完成a=b赋值功能的语句是______。
A、a=*p;
B、*p=*&b;
C、a=&b;
D、a=**p;
(  D  )
34、有以下程序
main()
{
int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2)
{
k=k+p[i];
i++;
}
printf("%d\n",k);
}
执行后输出的结果是______。
A、58
B、56
C、45
D、24
(  D  )
35、假定int类型变量占用4个字节,若有定义:int x[10]= {0,2,4}则数组x在内存中所占字节数是______。
A、4
B、12
C、20
D、40
(  D  )
36、有以下程序
main(int argc,char *argv[])
{
int n=0,i;
for(i=1;i<argc;i++) n=n*10+*argv[i]-'0';
printf("%d\n",n);
}
编译连接后生成可执行文件tt.exe。若运行时输入以下命令行tt 12 345 678程序运行后的输出结果是______。
A、12
B、12345
C、12345678
D、136
(  D  )
37、有以下程序
typedef struct
{
int b,p;
}
a;
void f(a c)            /* 注意:c是结构变量名 */
{
int j;
c.b+=1;
c.p+=2;
}
main()
{
int i;
a a={1,2};
f(a);
printf("%d,%d\n",a.b,a.p);
}
程序运行后的输出结果是______。
A、2,3
B、2,4
C、1,4
D、1,2
(  C  )
38、使下列程序段输出"123,456,78",键盘输入数据,正确的输入是________ 。 int i,j,k scanf("%d,%3d%d",&i,&j,&k);
printf("%d,%d,%d\n",i,j,k);
A、12345678
B、123,456,78
C、123,45678
D、123,*45678
(  C  )
39、流程图中判断框是用( )图形来表示的
A、椭圆
B、矩形
C、菱形
D、平行四边形
(  D  )
40、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
A、大写字母
B、下划线
C、数字字符
D、连接符
(  B  )
41、关于循环体while的说法下列正确的是________。
A、循环体的执行次数总比条件表达式多一次
B、循环体的执行次数总比条件表达式少一次
C、循环体的执行次数与条件表达式无关
D、循环体的执行次数与条件表达式相等
(  C  )
42、在c语言的函数中,下列正确的说法是________。
A、必须有形参
B、形参必须是变量名
C、可以有也可以没有形参
D、数组名不能作形参
(  D  )
43、在c语言中,char型数据在内存中的存储形式是________。
A、补码
B、反码
C、原码
D、ASCII码
(  C  )
44、设 char *s="\ta\017bc";
则指针变量s指向的字符串所占的字节数 是________。
A、9
B、5
C、6
D、7
(  A  )
45、设变量定义为"int x, *p=&x;
",则&(*p)相当于
A、p
B、*p
C、x
D、*(&x)
(  C  )
46、定义结构体的关键字是________。
A、union
B、enum
C、struct
D、typedef
(  A  )
47、下面叙述中错误的是________。
A、主函数中定义的变量在整个程序中都是有效的
B、在其它函数中定义的变量在主函数中也不能使用
C、形式参数也是局部变量
D、复合语句中定义的函数只在该复合语句中有效
(  C  )
48、关于return语句,下列正确的说法是________。
A、不能在主函数中出现且在其他函数中均可出现
B、必须在每个函数中出现
C、可以在同一个函数中出现多次
D、只能在除主函数之外的函数中出现一次
(  D  )
49、以下可作为函数fopen中第一个参数的正确格式是________。
A、c:user\text.txt
B、c:\user\text.txt
C、"c:\user\text.txt"
D、"c:\\user\\text.txt"
(  A  )
50、在C语言中,下面那种数据类型不属于构造类型____
A、枚举类型
B、数组类型
C、结构体类型
D、共用体类型