吉林师范大学往年C语言程序设计题目

本试卷为吉林师范大学往年C语言程序设计题目,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计题目

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

(  B  )
1、以下能正确定义一维数组的选项是________。
A、int a[5]={
0.1,2.3.4,5);
B、char a[]={
0,1,2,3,4,5);
C、char a={'A’,'B','C');
D、int a[5]=”0123”;
(  C  )
2、设整型变量n的值为2,执行语句"n+=n-=n*n; "后,n的值是________。
A、0
B、4
C、- 4
D、2
(  B  )
3、有以下程序:
main()
{
int x=4,y;
do
{
y=x;
if(!y)printf("x");
else printf("y"); x--;
}
while(x);
}
程序的输出结果是________。
A、xyyx
B、yyyy
C、yyxx
D、yxyx
(  B  )
4、与"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=-l;
else y=0;
C、y=-l
if(x)
if(x>O)y=1;
else if(x=-0)y=0;
else y=-l;
D、y=0;
if(x>=0)
if(x>=0)y=1;
else y=-l;
(  B  )
5、以下正确的描述是________.
A、continue语句的作用是结束整个循环的执行
B、只能在循环体内和switch语句体内使用break语句
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用goto语句
(  A  )
6、在c语言中,存储一个字符型、整型、双精度实型变量所需的字节数是________。
A、1、2、8
B、1、4、4
C、4、1、4
D、2、2、8
(  C  )
7、下面程序的输出是________。("□"表示一个空格) int a=3366; printf("|%-08d|",a);
A、|-0003366|
B、|00003366|
C、|3366□□□□|
D、输出格式非法
(  D  )
8、设变量已正确定义,则以下能正确计算f = n!的程序段是________。
A、f=0;
B、f=1;
for(i=1;i<=n;i++) f*=i; for(i=1;i>=2;i--)
C、f=1;
D、f=1;
for(i=n;i>1;i++) f*=i; for(i=n;i>=2;i--)
(  A  )
9、以下程序的功能是进行位运算
main()
{
unsigned char a, b;
a=7^3;
b= ~4 & 3;
printf("%d %d\n",a,b);
}
程序运行后的输出结果是________。
A、4 3
B、7 3
C、7 0
D、4 0
(  A  )
10、设有如下程序段 char s[20]= "bejing",*p; p=s; 则执行p=s; 语句后,以下叙述正确的是________。
A、可以用*p表示s[0]
B、s数组中元素的个数和p所指字符串长度相等
C、s和p都是指针变量
D、数组s中的内容和指针变量p中的内容相等
(  D  )
11、以下数组定义中不正确的是 __________.
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}};
(  D  )
12、若有以下定义: int a[]= {1,2,3,4,5,6,7 }; char c1='b',c2='2'; 则数值不为2的表达式是________。
A、a[1]
B、'd'-c1
C、a['3'-c2]
D、c2-0
(  A  )
13、下列while循环的次数是________。 while (int i=0)i--;
A、0
B、1
C、5
D、无限
(  B  )
14、下列定义数组的语句,正确的是________。
A、int N=10; int x[N];
B、#define N 10; int x[N];
C、int x[0..10];
D、int x[];
(  D  )
15、若有语句int*point,a=4; 和point=&a; 下面均代表地址的一组选项是________。
A、a,point,*&a
B、&*a,&a,*point
C、*&point,*point,&a
D、&a,&*point,point
(  B  )
16、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu
{
int i;
int name;
} st,*p;
p=&st;
A、si
B、*i
C、(*.i
D、p->i
(  A  )
17、在c语言中,main函数默认返回一个( )类型的值。
A、int
B、float
C、char
D、void
(  A  )
18、若定义static int a[2][2]={1,2,3,4 },则a数组的各数组元素分别为______。
A、a[0][0]=1、a[0][1]=2、at[1][0]=3、a[1][1]=4
B、a[0][0]=1、a[0][1]=3、a[1][0]=2、a[1][1]=4
C、a[0][0]=4、a[0][1]=3、a[1][0]=2、s[1][1]=1
D、a[0][0]=4、a[0][1]=2、a[1][0]=3、a[1][1]=1
(  C  )
19、关于数组的叙述中,下列说法不正确的是________。
A、数组是最简单的复合数据类型,是有限元素的有序集合
B、数组的元素可以是值(基本数据类型)、对象或其他数组
C、定义数组时,必须分配内存
D、一个数组中的元素都必须是相同的类型
(  A  )
20、表示关系x<=y<=z的c语言表达式为______。
A、(x<=y)&&(y<=z)
B、(x<=y)and(y<=z)
C、(x<=y<=z)
D、(x<=y)&(y<=z)
(  D  )
21、结构化程序设计方法的结构不包括________。
A、顺序结构
B、分支结构
C、循环结构
D、跳转结构
(  D  )
22、决定c语言中函数的返回值类型的是________。
A、return语句中的表达式类型
B、调用该函数时系统随机产生的类型
C、调用该函数时的主调用函数类型
D、在定义该函数时所指定的数据类型
(  C  )
23、若一个外部变量的定义形式为static int x; 那么,其中static的作用应该是______。
A、将变量存储在静态存储区
B、使变量x可以由系统自动初始化
C、使x只能在本文件内引用
D、使x的值可以永久保留
(  C  )
24、已知三个用不同数制表示的整数a=00111101b,b=3ch,c=64d,则能成立的比较关系式______。
A、A<B<C
B、B<C<A
C、B<A<C
D、C<B<A
(  A  )
25、已知字母a的ascii码为十进制数65,下面程序的输出结果是________。
main( ) {
char ch1,ch2;
ch1=a+5-3;
ch2=a+6-3;
printf("%d,%c\n",ch1,ch2);
}
A、67,D
B、B,C
C、C,D
D、不正确定的值
(  C  )
26、下列属于c语言合法的字符常数是______。
A、’\97’
B、"A"
C、’\t’
D、"\0\
(  A  )
27、以下不合法的字符常量是________。
A、'\018'
B、'\'"
C、'\\'
D、'\xcc'
(  A  )
28、有以下的程序
#include<stdio.h>
void fun(char *fname,char *st)
{
file *myf;
int i;
myf=fopen(fname,"w");
for(i=0;i<strlen(st);i++)fputc(st[i],myf);
fclose(myf);
}
main()
{
fun("test.t","new world");
fun("test.t","hello,");
}
程序执行后,文件test.t中的内容是________。
A、hello,
B、new worldhello,
C、new world
D、hello,rld
(  D  )
29、设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2); 语句为变量a1和a2赋数值 10和20,为变量c1和c2赋字符x和y。以下所示的输入形式中正确的是(注:口代表空格字符)
A、10口X口20口Y<回车>
B、10口X20口Y<回车>
C、10口X<回车> 20口Y<回车>
D、10X<回车> 20Y<回车>
(  D  )
30、以下程序运行后的输出结果是
main( )
{
char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);
}
A、ABCD
BCD
CD
D
B、A
B
C
D
C、B
C
D
D、BCD
CD
D
(  A  )
31、以下选项中,合法的数值型常量是________。
A、3.2
B、'X'
C、099
D、0xEH
(  C  )
32、结构化程序由三种基本结构组成,三种基本结构组成的算法______。
A、可以完成任何复杂的任务
B、只能完成部分复杂的任务
C、只能完成符合结构化的任务
D、只能完成一些简单的任务
(  A  )
33、有说明语句int a[4][5]; 则a[2]+3表示__。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址
(  A  )
34、若有数组名作为函数调用的实参,传递给形参的是________。
A、数组的首地址
B、数组第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
(  A  )
35、以下描述错误的是________。
A、实参数可以与形参个数不一致。
B、C程序中,函数可以直接或间接地调用自己。
C、函数调用时,函数名必须与所调用的函数名字完全一致
D、函数声明语句中的类型必须与函数返回值得类型一致。
(  D  )
36、有如下定义: struct student
{
char name[10];
int age;
char gender;
}
std[3], *p=std;
则以下各输入语句中错误的是________。
A、scanf("%d",&(*p).age);
B、scanf("%c",&std[0].gender);
C、scanf("%c",&(p->gender));
D、scanf("%s",&std.name);
(  A  )
37、下面选项中表示主函数的是?
A、main()
B、int
C、printf()
D、return
(  C  )
38、设n为整型变量,则for(n = 10; n >= 0; n--)循环的次数为________。
A、9
B、10
C、11
D、12
(  D  )
39、关于标识符,下列选项中描述错误的是________。
A、标识符只能由字母、数字和下划线组成
B、标识符不能以下划线作为第一个字符
C、标识符不能以数字作为第一个字符
D、标识符不区分大小写字母
(  D  )
40、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
A、只能用逻辑表达式
B、只能用关系表达式
C、只能用逻辑表达式或关系表达式
D、可用任意表达式
(  A  )
41、已定义两个字符数组a,b,则以下正确的输入格式 是________。
A、scanf("%s%s", a, b);
B、get(a, b);
C、scanf("%s%s", &a, &b);
D、gets("a"),gets("b");
(  B  )
42、c语言源程序名的后缀是________。
A、exe
B、c
C、obj
D、cp
(  B  )
43、c语言的switch语句中case后____
A、只能为常量
B、只能为常量或常量表达式
C、可为常量或表达式或有确定值的变量及表达式
D、可为任何量或表达式
(  B  )
44、下面程序输出的结果为________。
#include <stdio.h>
int main()
{
int  s=3;
switch(s)
{
case  5: printf("我");
break;
    case  4: printf("是");
    case  3: printf("好");
    case  2: printf("学");
break;
    default: printf("生");
}
}
A、好
B、好学
C、好学生
D、我是好学生
(  A  )
45、下面不能正确进行字符串赋值操作的语句是________。
A、char s[5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s;s="ABCDEF";
D、char *s; scanf("%s",s);
(  A  )
46、下面程序的功能是将字符串s 中所有的字符'c'删除。
#include "stdio.h"
main()
{
char s[80];
int i,j;
gets(s);
for (i=j=0;s[i]!='\0';i++)if (s[i]!='c') ;
s[j]='\0';
puts(s);
}
A、s[j++]=s[i]
B、s[++j]=s[i]
C、s[j]=s[i];j++
D、s[j]=s[i]
(  C  )
47、下面叙述中正确的是
A、对于用户自己定义的函数,在使用前必须加以声明
B、声明函数时必须明确其参数类型和返回类型
C、函数可以返回一个值,也可以什么值也不返回
D、空函数在不完成任何操作,所以在程序设计中没有用处
(  D  )
48、在 C语言中,能代表逻辑值“真”的是()。
A、TRUE
B、大于 0 的数
C、非 0 整数
D、非 0 的数
(  A  )
49、下列程序的输出结果是()。
main()
{int a=7,b=5;
printf("%d\n",b=b/a);
}
A、0
B、5
C、1
D、不确定值
(  A  )
50、结构体类型的定义允许嵌套是指()。
A、成员是已经或正在定义的结构体型
B、成员可以重名
C、结构体型可以派生
D、定义多个结构体型