试卷3(第1-8章)
一. 单选题(共10 题,30.0分)
1. (单选题,3.0分) 变量s的定义为“char *s= "Hello world!";”,要使变量p指向s所指向的同一个字符串,则应选取( )。
- A. char *p;p=*s;
- B. char *p=&s;
- C. char *p=s;
- D. char *p; p=&s;
正确答案: C
2. (单选题,3.0分) 在 C 程序中,用( )表示逻辑值 “ 真 ” 。
- A. 非 1 的数
- B. 大于 0 的数
- C. 非 0 的数
- D. 1
正确答案: C
3. (单选题,3.0分)
若有以下数组定义,则数值为4的表达式是( )。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='b',d,g;
- A. a[7-4]
- B. a[4]
- C. a[g-c]
- D. a['d'-c]
正确答案: A
4. (单选题,3.0分) 设有定义“int a=3,b,*p=&a;”,则下列语句中使b不为3的语句是( )。
- A. b=&a;
- B. b=a;
- C. b=*&a
- D. b=*p;
正确答案: A
5. (单选题,3.0分)
设有如下定义,则对data中的a成员的正确引用是( )。
struct sk {int a; float b; } data;
- A. data->a
- B. data=a
- C. data.a
- D. a
正确答案: C
6. (单选题,3.0分) 假定整数指针p所指数据单元的值为30,p+1所指数据单元的值为40,则执行*p++后, p所指数据单元的值为( )。
- A. 70
- B. 40
- C. 10
- D. 30
正确答案: B
7. (单选题,3.0分) 在#include命令中不可以包含( )。
- A. 头文件
- B. 目标文件
- C. 用户头文件
- D. 程序文件
正确答案: B
8. (单选题,3.0分) 表示文件结束符的符号常量为( )。
- A. Eof
- B. eof
- C. feof
- D. EOF
正确答案: D
9. (单选题,3.0分)
以下程序段中,for循环语句的循环执行( )。
int a=1,x=1;
for (;a<10;a++)
x++;
a++;
- A. 9次
- B. 无限次
- C. 不确定次
- D. 10次
正确答案: A
10. (单选题,3.0分) 假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为( )。
- A. 42
- B. 43
- C. 26
- D. 25
正确答案: D
二. 填空题(共6 题,30.0分)
11. (填空题,10.0分)
程序填空题(按预定功能在空缺处填上代码):从键盘上输入若干个字符(以回车键作为结束)组成一个字符串存入一个字符数组,然后输出该字符数组中的字符串。
#include "stdio.h"
main()
{ char str[81],*sptr;
_____[1]_____;
for(i=0;i<80;i++)
{ str[i]=_____[2]_____;
if (str[i]=='\n')
_____[3]_____;
}
str[i]=_____[4]_____;
sptr=str;
printf("_____[5]_____\n",sptr);
}
正确答案:
(1) int i
(2) getchar()
(3) break
(4) '\0'
(5) %s
12. (填空题,4.0分) 设有定义语句“static int a[3][4]={1,2,3,4,5,6,7};”,则a[1][1] 值为( )。
正确答案:
(1) 6
13. (填空题,4.0分) 若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符( )。
正确答案:
(1) void
14. (填空题,4.0分) 从一个数据文件中读入以换行符结束的一行字符串的函数为( )。
正确答案:
(1) fgets()
15. (填空题,4.0分) 在switch语句中的循环语句内的break语句只跳出( )语句。
正确答案:
(1) 循环
16. (填空题,4.0分) C语言中,数组元素的下标下限为( )。
正确答案:
(1) 0
三. 判断题(共5 题,20.0分)
17. (判断题,4.0分) 一个C语言程序可以没有main()函数。
- A. 对
- B. 错
正确答案: 错
18. (判断题,4.0分) while(1);是一条非法语句。
- A. 对
- B. 错
正确答案: 错
19. (判断题,4.0分) 在C语言程序中,while (a!=0)可用while (a)来代替。
- A. 对
- B. 错
正确答案: 对
20. (判断题,4.0分) “#define N 100”所定义的N为整型的常量。
- A. 对
- B. 错
正确答案: 错
21. (判断题,4.0分) 要判断x与y是否相等,可使用关系表达式x=y。
- A. 对
- B. 错
正确答案: 错
四. 简答题(共3 题,20.0分)
22. (简答题,10.0分)
编程题:对以下3x3矩阵进行转置,然后输出之。
1 2 3
4 5 6
7 8 9
正确答案:
#include <stdio.h>
void main( )
{
int i,j,x;
int a[][3]={1,2,3,4,5,6,7,8,9};
for (i=0;i<3;i++)
for (j=i+1;j<3;j++)
{ x=a[i][j];a[i][j]=a[j][i];a[j][i]=x;}
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
23. (简答题,5.0分)
程序分析题:分析程序,写出其运行结果。
#include<stdio.h>
void main()
{
int a=10,b=20;
printf("%d %d\n",a,b);
{
int b=a+25;
a*=4;
printf("%d %d\n",a,b);
}
printf("%d %d\n",a,b);
}
正确答案:
10 20
40 35
40 20
24. (简答题,5.0分)
程序分析题:分析程序,写出其运行结果。
#include<stdio.h>
void main()
{
int a[6]={76,100,59,62,50,75};
int b[4]={50,70,90,101};
int c[4]={0};
int i,j;
for(i=0; i<6; i++) {
j=0;
while(a[i]>=b[j]) j++;
c[j]++;
}
for(i=0;i<4;i++)
printf("%d ",c[i]);
printf("\n");
}
正确答案:
0 3 2 1