C语言程序设计习题2
- 格式:doc
- 大小:57.50 KB
- 文档页数:8
第 1 页 共 8 页 《C语言程序设计》习题2
一、单项选择题
1. 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是( )。
A. c=b=a;
B. (a=c)‖(b=c);
C. (a=c)&&(b=c);
D. a=c=b;
2. 以下定义语句中错误的是( )。
A. int a[]={1,2};
B. char *a[3];
C. char s[10]=”test”;
D. int n=5,a[n];
3. 临时存储频繁使用的信息以加快访问速度,通常用在处理器和主存储器之间一种计算机存储器是( )。
A. 高速缓存(Cache)
B. 辅助存储器
C. 随机访问存储器
D. 只读存储器
4. 下列运算符中优先级最低的是( )。
A. ?:
B. +=
C. >=
D. ==
5. 以下程序的运行结果是( )。
main( )
{int k=4,a=3,b=2,c=1;
Printf(“\n%d\n”,k<a? k:c<b? c:a);
} 第 2 页 共 8 页 A. 4
B. 3
C. 2
D. 1
6. 设有程序段:
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是( )。
A. while循环执行10次
B. 循环是无限循环
C. 循环体语句一次也不执行
D. 循环体语句执行一次
7. 设有以下程序段:
int x=0,s=0;
while(! x!=0) s+=++x;
printf(“%d”,s);
则( )。
A. 运行程序段后输出0
B. 运行程序段后输出1
C. 程序段中的控制表达式是非法的
D. 程序段执行无限次
8. 下面程序段的运行结果是( )。
int n=0;
while(n++<=2); printf(“%d”,n);
A. 2
B. 3
C. 4
D. 有语法错
9. 若有说明:int a[10];则对a数组元素的正确引用是( )。 第 3 页 共 8 页 A. a[10]
B. a[3.5]
C. a(5)
D. a[10 -10]
10. 下面描述正确的是( )。
A. 两个字符串所包含的字符个数相同时,才能比较字符串
B. 字符个数多的字符串比字符个数少的字符串大
C. 字符串“STOP ”与“STOP”相等
D. 字符串“That”小于字符串“The”
二、 填空题
1. int *a()返回值为一个整型的_______变量。
2. 预处理命令行都必须以_______号开始。
3. 若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为_______,n的值为_______。
4. 结构体用_______关键字定义。
5. 结构体数组的每个元素都是_______型变量。
6. 设c语言中,int类型数据占2个字节,则long类型数据占_______个字节,short类型数据占_______个字节。
7. C语言源程序文件的后缀是.C,经过编译之后,生成后缀为.OBJ的_______文件,经连接生成后缀.EXE的可执行文件。
8. 以下程序的输出结果是______。
# include
main( )
{int a=325;double x=3.1415926;
printf(“a=%+06d x=%+e\n”,a,x);
}
9. 以下程序的运行结果是______。
# include 第 4 页 共 8 页 main( )
{int n=0;
n+=(n=10);
printf(“%d\n”,n);
}
三、判断题
1. 调用数学库函数,必须在程序的开头加一条#include命令,并把头文件“math.h”包含到程序中来。( )
2.若有宏定义:#define PI 3.1415926,则系统预编译时会报错。( )
3. if-else与局不能操作多个操作语句。( )
4. 主函数和被调函数之间没有数据传递关系。( )
5. C语言的函数定义是相互平行独立的。( )
6. 可以将一个结构体变量作为整体输入输出。( )
四、简答题
1. 写出文件打开函数的意义和用法。
2. 写一个函数,将两个字符串连接。
3. 阐述指针变量的概念。
4. 用数组名作函数参数与用数组元素作实参有几点不同?
5. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上再吃时,见只剩一个桃子了。求第一天共摘多少桃子?
6. 请根据自己的认识,写出C语言的主要特点。
第 5 页 共 8 页 C语言程序设计习题2答案
一、单项选择题
题号 1 2 3 4 5 6 7 8 9 10
答案 C D A B D C B C D D
二、填空题
题号 答案
1 入口地址
2 #
3 10,6
4 Struct
5 结构体
6 4,2
7 目标
8 a=+00325□□□x=+3.14159e+00
9
20
三、判断题
题号 1 2 3 4 5 6
答案 T T F × √ ×
四、简答题
1. 答:fopen
打开一个文件调用标准I/O库函数fopen,它使打开文件与一个流相关联,返回一个指向该流的文件类型指针,用于后续的文件操作。具体操作如下:
FILE *fopen (const char *filename, const char *mode); 第 6 页 共 8 页
2. 答:
Char concatenate(char string1[],char string2[],char string[])
{
Inti,j;
For(i=0;string1[i]!=’\0’;i++)
String[i]=string1[i];
For(j=0;string2[j] !=’\0’;j++)
String[i+j]=string2[j];
String[i+j]=’\0’;
}
Main()
{
Char s1[100],s2[100],s3[100];
Printf(“\nInput string1:”);
Scanf(“%s”,s1);
Printf(“\Input string2:”);
Scanf(“%s”,s2);
Concatenate(s1,s2,s);
Printf(“The new string is%s\n”,s);
}
3. 答:所谓指针变量就是变量的地址。在C语言中地址也是一种数据类型,它可以存放在一种特殊的变量中,这种变量称之为“指针变量”。C语言规定,当一个变量占用一个字节时,该字节的地址就是该变量的地址,如果变量占用连续的多个字节,那么第一个字节的地址就是该变量的地址。在C程序中,变量的地址可以通过运算符&来得到,该运算符成为取地址运算符,它的运输对象是变量或数组元素,得到的结果是变量或数组元素的地址。 第 7 页 共 8 页
4. 答:
(1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参二者不一致时,即会发生错误。
(2)在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作函数参数时,不是进行值的传送,即不是把实参数组的每一个元素的值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。那么,数据的传送是如何实现的呢?在我们曾介绍过,数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。
5. 答: Main ()
{
int day, x1,x2;
day=9;
x2=1;
while (day>0)
{
X1=(x2+1)*2;/*第1天的桃子数是第2天的桃子数加1后的2倍*/
X2=x1;
Day - -;
}
Printf(“桃子的总数是:%d\n”,x1); 第 8 页 共 8 页 }
6. 答:
1) 语言简洁、紧凑,使用方便、灵活。
2) 运算符丰富。
3) 数据类型丰富。
4) 具有结构化的控制语句。
5) 语法限制不太严格。
6) C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能。
7) 生成目标代码质量高,程序执行效率高。
8) 用C语言编写的程序可移植性好。