吉林化工学院C语言期末

本试卷为吉林化工学院C语言期末,题目包括:单项选择题,填空题,编程题。

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

C语言期末

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

(  D  )
1、设变量已正确定义,则以下能正确计算f=n!的程序是________。
A、f=0;
for(i=1;i<=n:i+十)f*=i;
B、f=1
for(i=1:i
C、f=l:
for(i=n;i>1;i十+)f*=i;
D、f=1:
for(i=n;j>=2;j--)f*=i;
(  D  )
2、以下选项中能表示合法常量的是________。
A、整数:1,200
B、实数:1.5E2.0
C、字符斜杠:"\"
D、字符串:"\007"
(  C  )
3、设有定义:"double x[10],*p=x; ",以下能给数组x下标为6的元素读人数据的正确语句是________。
A、scanf("%f",&x[6]);
B、scanf("%If",*(x+6));
C、scanf("%if",p+6);
D、scanf("%if",p[6]);
(  D  )
4、有以下程序 char fun(char x , char y)
{
if(x<y) return x;
return y;
}
main( )
{
int a=’9’,b=’8’,c=’7’;
printf("%c\n",fun(fun(a,b),fun(b,c)));
}
程序的执行结果是________。
A、函数调用出错
B、8
C、9
D、7
(  B  )
5、当调用函数时,实参是一个数组名,则向函数传送的是 _______ 。
A、数组的长度
B、数组的首地址
C、数组每一个元素的地址
D、数组每个元素中的值
(  B  )
6、设有如下定义:
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
(  B  )
7、若有定义:int a[4][10]; 则以下选项中对数组元素a[i][j]引用错误的是______。 (0<=i<4,0<=j<10)
A、*(&a[0][0]+10*i+j)
B、*(a+i)+j
C、*(*(a+i)+j)
D、*(a[i]+
(  A  )
8、有以下程序
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
(  A  )
9、下述程序执行的输出结果是________。
#include<stdio.h>
main() {
char a[2][4];
strcpy(a,"are");
strcpy(a[1], "you");
a[0][3]='&';
printf("%s\n",a);
}
A、are&you
B、you
C、are
D、&
(  D  )
10、已有定义int a= -2; 和输出语句 printf("%8x",a); 以下正确的叙述是________。
A、整型变量的输出形式只有%d一种
B、%x是格式符的一种,它可以适用于任何一种类型的数据
C、%x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的
D、%8x不是错误的格式符,其中数字8规定了输出字段的宽度
(  A  )
11、有以下程序
#include <stdio.h>
main( )
{
int x = 0x13;
printf("int:%d\n", x+1);
}
程序运行后的输出结果是________。
A、INT:20
B、INT:13
C、INT:12
D、INT:14
(  C  )
12、以下各语句或语句组中,正确的操作是______。
A、char s[3]="abcde";
B、char *s; gets(s);
C、char *s; s="abcde";
D、char s[5]; scanf("%s", &s);
(  A  )
13、有以下程序
main()
{
int a=15,b=21,m=0;
switch(a%3)
{
case 0:m++;
break;
case 1:m++;
switch(b%2)
{
default:m++;
case 0:m++;
break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是______。
A、1
B、2
C、3
D、4
(  B  )
14、已有定义:char c; 不能用于判断c中的字符是否为大写字母的表达式是______。
A、c>='A'&&c<='Z'
B、'A'<=c<='Z'
C、'A'<=c&&c<='Z'
D、c<=('z'-32)&&('a'-32)<=c
(  A  )
15、以下选项中不能作为c语言合法常量的是______。
A、'cd'
B、0.1e+6
C、"\a"
D、'\011'
(  A  )
16、若变量已正确定义,对以下while循环结束条件的准确描述是________。
flag = 1;
denominator = 1;
item = 1.0;
pi = 0;
while(fabs(item) >= 0.0001)
{
item = flag * 1.0 / denominator;
pi = pi + item;
flag = -flag;
denominator = denominator + 2;
}
A、item的绝对值小于0.0001
B、item的绝对值大于0.0001
C、item的绝对值等于0.0001
D、item的绝对值不等于0.0001
(  C  )
17、如下程序段运行输出的结果为________。 int a=5,b=6,c; c=++a+b--; printf("%d,%d,%d%\n",a,b,c);
A、5,6,11
B、6,5,11
C、6,5,12
D、6,6,12
(  A  )
18、在C语言中,下面那种数据类型不属于构造类型____
A、枚举类型
B、数组类型
C、结构体类型
D、共用体类型
(  A  )
19、结构体类型的定义允许嵌套是指()。
A、成员是已经或正在定义的结构体型
B、成员可以重名
C、结构体型可以派生
D、定义多个结构体型
(  A  )
20、C语言程序中,当调用函数时()。
A、实参和形参各占一个独立的存储单元
B、实参和形参可以共用存储单元
C、可以由用户指定是否共用存储单元
D、计算机系统自动确定是否共用存储单元

二、填空题 (共10题,每题2分,共计20分)

1、有以下程序
main( )
{
int n=0,m=1,x=2;
if(!n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf("%d\n",x);
}
执行后输出结果是 ________。
2、已有定义int a;
floatb,x;
char c1,c2;
为使a=3,b=6.5,x=12.6,c1=’a’,c2=’a’正确的函数调用语句是______________,输入数据的方式是_________________。
3、以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。
void sstrcpy(char *s,char *t)
{
while(*s++= ________);
}
main( )
{
char str1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);
}
4、字母'a'的ascii码值为多少()
5、在c语言中,标识符是由英文字母、( )、下划线组成的。
6、若有int a[3]={1,2,3}; 则*(a+1)+1=________。
7、若int a=5,b=4,c=2; 表达式a>b!=c 的值是________。
8、对于文件末尾检测函数feof(),如果文件指针未到文件末尾,则函数返回值是________。
9、main()
{
int a,b;
for (a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
}
程序的输出结果a的值为________。
10、要调用数学处理函数时,在
#include命令中应包含()头文件。

三、编程题 (共3题,每题0分,共计40分)

1、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。
2、输入一个正整数n(n<=6),再输入n×n的矩阵,求其主对角线元素之和及副对角线元素之和并输出。
3、输入一个字符串和一个特定字符,在字符串中删除从该特定字符开始的所有字符。例如输入字符串为"abcdefg",特定字符为'd',删除后的字符串为"abc";输入字符串为"abcdefg",特定字符为'x',则输出“特定字符不存在”。