青岛理工大学C语言程序设计题库

本试卷为青岛理工大学C语言程序设计题库,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计题库

一、单项选择题 (共20题,每题2分,共计40分)

(  A  )
1、要求通过while循环不断读人字符,当读入字母n时结束循环,若变量已正确定义,下列正确的程序段是________。
A、while((ch=getchar())!='N')printf(”%c”,ch);
B、while(ch=getchar()!='N')printf(”%c”,ch);
C、while(ch=getchar()=='N')printf(”%c”,ch);
D、while((ch getchar())=='N')printf(”%c”,ch);
(  D  )
2、有以下程序
void fun(int*a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{
int t,i,j;
for(i=0;i<n一1;j++) for(j=i+1;j<n;j++) if(a[i]
}
main()
{
int c[10]={1,2,3,4,5.6,7,8,9,0 },i;
fun(c+4.6): for(i=0;i<10;i++)printf("%d,",c[i]);
printf("n"):
}
}
程序运行的结果是________。
A、1,2,3,4,5,6,7,8,9,0,
B、0,9,8,7,6,5,1,2,3,4,
C、0,9.8,7.6,5,4,3,2,1.
D、1,2,3,4,9,8,7,6,5,0,
(  C  )
3、在c语言的循环语句for,while,do-while语句中,用于直接中断最内层循环的语句是:________。
A、switch
B、continue
C、break
D、if
(  D  )
4、以下能正确定义数组并正确赋初值的语句是______。
A、int n=5,b[n][n];
B、int a[1][2]={{1},{3}};
C、int c[2][]={{1,2},{3,4}}
D、int a[3][2]={{1,2},{3,4}}
(  B  )
5、以下叙述中 , 不正确的是 __________.
A、使用 static float a 定义的外部变量存放在内存中的静态存储区
B、使用 float b 定义的外部变量存放在内存中的动态存储区
C、使用 static float c 定义的内部变量存放在内存中的静态存储区
D、使用 float d 定义的内部变量存放在内存中的动态存储区
(  D  )
6、关于for(表达式1;表达式2;表达式3),叙述正确的是________。
A、表达式1不可以缺省
B、表达式2不可以缺省
C、表达式3不可以缺省
D、三个表达式都可以缺省
(  C  )
7、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  C  )
8、有定义语句:int*p[4]; 以下选项中与此语句等价的是________。
A、int p[4];
B、int **p;
C、int*(p[4]);
D、int(*p)[4];
(  D  )
9、有以下程序:
main( )
{
char a[ ]={‘a',‘b',‘c',‘d',‘e',‘f',‘g',‘h',‘\0'};
int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d,%d\n",i,j);
}
程序运行后的输出结果是________。
A、9,9
B、8,9
C、1,8
D、9,8
(  B  )
10、有以下程序
main()
{
char s[]={"aeiou"},*ps;
ps=s;
prinff("%c\n",*ps+4);
}
程序运行后的输出结果是________。
A、a
B、e
C、U
D、元素s[4]的地址
(  B  )
11、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若有p=&data;
则对data中成员a的引用正确的是________。
A、(*p).data.a
B、(*p).a
C、p->data.a
D、p.data.a
(  A  )
12、以下程序的输出结果是_______。
main()
{
char s[]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
}
A、15
B、16
C、26
D、59
(  A  )
13、以下答案中不是c语言最基本数据类型的是________。
A、逻辑型
B、整型
C、字符型
D、指针型
(  D  )
14、已定义以下函数int fun( int *p)
{
return *p;
}
则fun函数返回值足
A、不确定的值
B、一个整数
C、形参p中存放的值
D、形参p的地址值
(  D  )
15、非法的字符常量是________。
A、' \101 '
B、' \65 '
C、' \xff '
D、' \019 '
(  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
(  D  )
17、若int类型占两个字节,则以下语句输出为________。 int k=-1;
printf("%d,%u\n",k,k);
A、-1,-1
B、-1,65536
C、-1,32768
D、-1,65535
(  A  )
18、以下叙述正确的是________。
A、C程序中各函数之间既允许直接递归调用,也允许间接递归调用
B、C程序中各函数之间不允许直接递归调用,也不允许间接递归调用
C、C程序中各函数允许直接递归调用,不允许间接递归调用
D、C程序中各函数之间不允许直接递归调用,允许间接递归调用
(  D  )
19、执行下列程序段后,m 的值是________.
int w=2,x=3,y=4,z=5,m;
m=(w
A、4
B、3
C、5
D、2
(  A  )
20、从键盘上输入某字符串时,不可使用的函数是()。
A、getchar()
B、gets()
C、scanf()
D、fread()

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、c语言中字符串的结束符是’\0’。 ( ) 
(   T  )
2、条件语句中,if的个数一定不小于else的个数,因为每个else的前面必须有一个if与之相对应。 
(   F  )
3、c语言中不允许嵌套调用函数。 
(   T  )
4、函数的实参传递到形参有两种方式:值传递和地址传递。 
(   F  )
5、调用strcmp函数比较字符串大小时,通常较长的字符串会较大。 
(   T  )
6、用指针变量可以指向一维数组,也可以指向多维数组。 
(   T  )
7、函数的实参可以是常量,变量或表达式 
(   T  )
8、静态外部变量只在本文件内可用. 
(   F  )
9、在switch 语句中必须使用break 语句 
(   F  )
10、for 语句只能用于循环次数已经确定的情况 

三、填空题 (共5题,每题4分,共计20分)

1、现有两个c程序文件t18.c和myfun.c同在tc系统目录(文件夹)下,其中t18.c文件如下:
#include <stdio.h>
#include "myfun.c"
main()
{
fun();
printf("\n");
}
myfun.c文件如下:
void fun()
{
char s[80],c;
int n=0;
while((c=getchar())!=′\n′) s[n++]=c;
n--;
while(n>=0) printf("%c",s[n--]);
}
当编译连接通过后,运行程序t18时,输入thank!则输出结果是:________。
2、局部变量又称内部变量,是在函数( )定义的变量。
3、for (a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
程序的输出结果a的值为________ 。
4、c 语言规定,可执行程序的开始执行点是________。
5、定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 ______。

四、程序分析题 (共4题,每题5分,共计20分)

1、有以下程序
#include <stdio.h>
main ()
{
int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for (i=1;i<3;i++) for(j=i;j<3;j++) printtf("%d",a[i][j]);
printf("\n");
}
程序运行后的输出结果是________。
2、下列程序段的运行结果是_____。
char s1[20]="abcdef", s2[5]="abc";
strcpy(s1,s2);
printf("%c", s1[5]);
3、已知t=5,则表达式"t-=t+=3"的值是______。
4、以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。
#include <stdio.h>
main()
{
int a[10],*p,*s;
for(p=a;p-a<10;p++) scanf("%d",p);
for(p=a,s=a;p-a<10;p++) if(*p>*s) s=________;
printf("index=%d\n",s-a);
}

五、编程题 (共3题,每题0分,共计50分)

1、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。
2、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
3、任意输入两行字符串,把第二行字符串连接到第一行字符串末尾(不用strcat函数)。