一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1.对C语言程序,以下说法正确的是()
A.main函数是主函数,一定要写在最前面。
B.所有的自定义函数,都必须先声明。
C.程序总是从main函数开始执行的。
D.程序中只能调用库函数,不能自己定义函数。
2. 以下()不是合法的C语言标识符。
A. main
B._a
C. printf
D. 4ever
3.C语言程序中,要使用数学库函数(例sqrt、sin等),需要在程序最前面加上包含文件的预处理命令()
A. #include
B. #include
C. #include
D.不需要加什么
4.()不是合法的常量。
A.38
B.038
C. 3E8
D. "38"
5.为表示关系x2y3z,应使用C语言表达式()
A. (x>=y)&&(y>=z)
B. (x>=y)AND(y>=z)
C. (x>=y>=z)
D. (x>=y)&(y>=z)
6. 表达式()的值是0。
A.3/5
B.3<5
C.3%5
D. 3/5.0
7.设有整型变量a、b、c,其中a,b的值分别为10与20,计算表达式c=(a%2==0)?a:b后,c的值为()
A.0
B.5
C. 10
D.20
8.若有说明语句:char c='\72';则变量c()
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法,e的值不确定
9.假设字符变量ch中存放有小写英文字母,将其转换为相应的大写英文字母的表达式是()。
A. ch= ch-'a'+'A'
B. ch= ch+32
C. tolower(ch)
D. ch-='a'+'A'
10.若a是基本整型变量,。是单精度实型变量,输入语句()是错误的。
A. scanf("%d,%f", &a, &c);
B. scanf("d=%d, c=%f", &a, &c);
C. scanf("%d%f", &a, &c);
D. scanf("%d%f", a, c);
11.下列程序段的输出结果是( )。
#include
int main()
{
int m, k = 0, s = 0;
for (m = 1; m <= 4; m++){
switch (m % 4) {
case 0:
case 1: s += m; break;
case 2:
case 3:s-= m; break;
}
k += s;
}
printf("%d\n", k);
return 0;
}
A. 10
B.-2
C.-4
D.-12
12. int a=1,b=2,c=3,t; while(a
A. 1,2,0 B.2,1,0 C.1,2,1 D.2,1,1
13,以下能对一维数组a进行正确初始化的语句是()
A. int a[10]=(0,0,0,0,0)
B. int a[2]=(0,1,2}
C. int a]=(0)
D. int a={{}}
14,以下能正确定义数组并正确赋初值的语句是()
A. int n=5,b[n][n];
B. int a[1][2]={{1},{3}};
C. int c[2]D={{1,2},{3,4}}
D. int a[3][2]={[1,2},(3,4}
15. 有以下定义:char x[ ]="abedefg"; char y[ ]=('a','b','c','d','e','f,'g);则正确的叙述为()。
A.数组 x 和数组y等价
B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度
16.在一个被调用函数中,关于return 语句使用的描述,错误的是()。
A.被调用函数中可以不用return语句
B.被调用函数中可以使用多个return语句
C.被调用函数中,如果有返回值,就一定要有return语句
D.被调用函数中,一个return语句可以返回多个值给调用函数
17. 若要使函数不带回任何值,可以()。
A.使用return 语句
B.不定义函数类型
C.把函数定义为void类型
D.不返回main()函数
18.根据声明int a[10],*p=a;,下列表达式错误的是( )。
A. a[9]
B. p[5]
C. a++
D. *p++
19.下面程序段的运行结果是()。
char a[]="language", "p;
p=a;
while(*p != 'u) {printf("%c", *p-32); p++;}
A. LANGUAGE
B. language
C. LANG
D. langUAGE
20.设有以下语句
Yypedef struct S
{int a; char c;}T;
则下面叙述正确的是
A.可用S定义结构体变量
B.可用T定义结构体变量
C.S 是struct类型变量
D.T是struct S类型变量
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。
1_______
#include "stdio.h"
int main ()
{
int a=2,b=7,c=5;
switch (a>0)
{case 1:switch (b<0)
{
case 1:
printf("@") ;
break;
case 2:
printf("!");
break;
}
case 0:
switch (c==5) {
case 0:
printf("*");
break;
case 1:
printf("*");
break;
default:
printf("#");
break;
}
default:
printf("&");
}
printf("\n");
return 0;
}
2_______
#include
struct n
{int x; char c;};
void func(struct n b)
{ b.x=20; b.c='y';}
void main() {
struct n a = {10, 'x'};
func(a);
printf("%d,%c", a.x, a.c);
}
3_______
#include
int w=3;
int fun(int k)
{
if(k==0) return w;
return(fun(k-1)*k);
}
int main() {
int w = 10;
printf("%d\n", fun(5) * w);
return 0;
}
4______
#include
long fun(int n)
{
long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s;
}
int main()
{
printf("%ld\n",fun(4));
return 0;
}
5_______
#include "stdio.h"
int func(int a,int b)
{
int c;
c=a+b;
return c;
}
int main()
{
int x=6,y=7,z=8,r;
r= func((x--,y--,x+y),z--);
printf("%d\n",r);
return 0;
}
三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)
1,本题要求采用选择法排序,将给定的n个整数从大到小排序后输出。
#include "stdio.h"
# define MAXN 10
void main()
{
int i,index,k,n,temp;
int a[MAXN];
scanf("%d",&n);
for (int i = 0; i < n; i++) {
scanf("%d",&a[i]);
}
for (int k = 0; k < a-i; k++) {
______________
for(i=_________;ia[index])
{
______;
}
lemp=a[index];
a[index]=a[k];
a[k]=temp;
}
for (int i = 0; i < n; i++) {
printf("%d",a[i]);
}
}
}
2. 本题要求逆序输出一个字符串,要求用递归方式完成。
#include
_____________
int main() {
char str[80];
gets(str);
_____________
return 0;
}
void reverse_str(char *p)
{
if(*p)
{
reverse_str(_____________);
putchar(__________);
}
}
四、编程题(本大题共 3小题,每小题 15分,共45分。请在答题纸的相应位置上作答。)
1. 中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
2,编写程序输出杨辉三角形(要求输出10行如下图)
1
11
121
1331
14 6 4 1
15 10105 1
3.编写程序:输入多个字符串,输出其中最短的字符串。