c教材习题 下载本文

三、编程题

1. 编写函数求两个整数的最小值。在主函数中通过键盘输入x和y的值,调用该

函数,输出其中的最小值。

2. 编写函数对x进行判断,如果x的值大于0,返回1;否则返回0,在主函数中

通过键盘输入x的值,调用该函数,输出返回值。

3. 写一个判别素数的函数,在主函数中调用该函数,求出100~300之间所有的素

数。

4. 写一个判别水仙花数的函数,在主函数中调用该函数,求出所有水仙花数。 5. 写一个判别完数的函数,在主函数中调用该函数,求出1000以内所有的完数。 6. 写一个函数,求正整数n从右边开始数的第k个数字。并设计一个主程序测试

这个函数。

7. 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数分别调用

这两个函数,并输出结果,两个整数由键盘输入。

8. 金字塔图形问题:编写一个函数,其函数原型声明为“void draw(int n);”。函

数功能是根据n的个数(0

A

ABC ABCDE ABCDEFG ABCDEFGHI ABCDEFGHIJK

第7章 编译预处理 选择题

1.下列叙述中错误的是 。 A) 预处理命令必须以#号开头 B) 预处理命令可以写成多行 C) 预处理命令必须置于源文件的开始处 D) 预处理命令以回车结束

2.C语言编译系统对宏替换的处理是在 进行的。 A) 源程序编译前 B) 源程序编译时 C) 程序连接时 D) 程序运行时

3.在宏定义“#define PI 3.14159”中,3.14159是 。 A) 单精度数 B) 双精度数 C) 字符串 D) 由PI位置确定其类型

4.设有宏定义 “#define A B abcd” ,则宏替换时, 。 A) 宏名A用 B abcd 替换 B) 宏名A B用abcd 替换 C) 宏名A 和宏名B都用abcd 替换 D) 语法错误,无法替换

5.下列有关宏的叙述中错误的是 。 A) 宏名必须使用大写英文字母 B) 宏替换不占用程序的运行时间

C) 宏参数没有数据类型 D) 宏名没有数据类型

6.下列宏定义,最不会引起二义性的是 。 A) #define ADD(a,b) a+b B) #define ADD(a,b) (a)+(b) C) #define ADD(a,b) (a+b) D) #define ADD(a,b) ((a)+(b)) 7.设有宏定义“#define M 3+2”,则表达式 2 * M * 3 的值为 。

A) 30 B) 12 C) 10 D) 13

8.设有宏定义“ #define Y(n) (4*n) ”, 则表达式 3+Y(5+1)的值为 。

A) 21 B) 24 C) 27 D) 30 9.设有宏定义:

#define N 3 #define M N+2

则表达式 2*M/N的值为 。

A) 6 B) 3 C) 3.333 D) 错误

10.在#include命令中,#include后面的文件名用双引号定界,则系统寻找被包含文件的方式是 。

A) 在C系统的include文件夹查找 B) 在源程序所在文件夹查找 C) 先在C系统的include文件夹查找,查找失败后再到源程序所在文件夹查找 D) 先在源程序所在文件夹查找,查找失败后再到C系统的include文件夹查找 11.设有以下A、B两个程序段,则说法正确的是 。

//A程序段 //B程序段 #define N 3 #define N 3 void main() void main() { {

if(N>0) #if(N>0)

printf(\ printf(\

else #else

printf(\ printf(\

#endif } } A) 两个程序目标代码相同,运行结果也相同 B) 两个程序目标代码不同,但运行结果相同 C) 两个程序目标代码相同,但运行结果不同 D) 两个程序目标代码不同,运行结果也不同 12.执行以下程序,结果为 。

#define DEBUG void main() {

编程题

1. 编写一个计算圆的面积程序,将π的值定义为符号常量。

2. 将求圆柱体的体积写成带参数的宏定义,并使用该宏定义计算圆柱体的体积。 3. 定义一个带有三个参数的宏MAX,求三个参数中的最大值。

第8章 数组 一、选择题

1.以下数组定义中,错误的是 。 A) int a[]={1,2,3}; B) int a[5]={1,2,3};

C) int a[3]={1,2,3,4}; D) int a[5],b;

2.设有定义 int a[10]={0}; 则说法正确的是 。 A) 数组a有10个元素,各元素的值为0 B) 数组a有10个元素,其中a[0]的值为0,其他元素的值不确定 C) 数组a有1个元素,其值为0 D) 数组初始化错误,初值个数少于数组元素个数 3.以下数组定义中,正确的是 。 A) int n=4 , a[n]={1,2,3,4}; B) int a[][2]={1,2,3,4};

C) int a[2][]={1,2,3,4}; D) int a[][]={{1,2},{3,4}};

4.设有如下定义:int a[8][10];在VC中一个整数占用4字节,设a的起始地址为1000,则a[1][1]的地址是 。 A) 1000 B) 1004

C) 1036 D) 1044

5.已知有数组定义: int a[ ][3]={1,2,3,4,5,6,7,8,9},则a[1][2]的值是 。 A) 2 B) 5 C) 6 D) 8

6.在以下字符串定义、初始化和赋值运算中,错误的是 。 A) char str[10]; str= \

B) char str[10]= \\ C) char str[10]= { 'S' ,'t', 'r' ,'i','n', 'g'};

D) char str[]= { 'S' ,'t', 'r' ,'i','n', 'g',0};

7.设有以下字符串定义,则s1和s2 。 char s1[]={ 'S' ,'t', 'r' ,'i','n', 'g'}; char s2[]= \

A) 长度相同,内容也相同 B) 长度不同,但内容相同 C) 长度不同,但内容相同 D) 长度不同,内容也不同

8.设已定义 char str[6]= { 'a','b','\\0','c','d','\\0'}; 执行语句 printf((\后,输出结果为 。

#ifdef DEBUG printf(\#endif

printf(\}

A) DEBUG OK C) 宏定义错误

B) OK

D) #ifdef命令错误

A) a B) ab C) abcd D) ab\\0cd\\0 9.引用数组元素时,数组元素下标不可以是 。 A) 字符常量 B) 整型变量 C) 字符串 D) 算术表达式

10.已定义字符数组s1和s2,以下错误的输入语句是 。

A) scanf(\B) scanf(\ C) gets(s1,s2) ; D) gets(s1) ; gets(s2) ; 11.下面程序段的运行结果是 。

void main() {

char a[]=\

strcpy(a,b); printf(\

}

A) 123 B) 123d C) abcd D) abcd123 12. 下面程序段的运行结果是 。

void main()

{char a[]=\ if(a>b) printf(\ else printf(\

}

A) 123 B) 编译时出错 C) abcd D) 运行时出错

二、程序设计题

1. 一维整型数组a的值已知,求一维数组中最小元素的值及其在数组中的位置。

2. 一维整型数组a有20个元素,各元素的值已知,求一维数组中所有元素之和及其平均

值。

3. 一维数组a的值已知,请把数组中的值按逆序存放,然后输出数组。例如数组中原来的

值为:3,4,2,1,6。颠倒后变成6,1,2,4,3。 4. 输入一个整数(位数不确定),从高位到底位依次输出各位数字,其间用逗号分隔。例

如输入整数为2345,则输出应为:2,3,4,5。

5. 输入一个由大写字母组成的字符串,求字符串中包含了几个不同的字母。 6. 用选择排序法对整型数组排序。

7. 请找出1~999中的所有平方为回文数的数,并输出这些数。例如11的平方为121,11

为要找的数。

8. 找出二维数组的所有鞍点。所谓鞍点就是在该位置上的元素在该行上最大,而在该列上

最小。数组元素由随机函数自动产生。

9. 输入一个5*5的整数矩阵,计算对角线以上所有元素之和。

10.文本加密。输入一字符串,将其中所有的大写英文字母+3,小写英文字母-3,然后再输

出加密后的字符串。

11.输入一字符串,统计出某指定字符在字符串中出现的次数。

12.输入一个英文句子,如果两单词之间多于一个空格,则删除多余的空格。然后输出处理

前后该句子的长度。

13.不要调用strcpy函数,把字符数组str2中的字符串复制到字符数组str1中。 14.输入一组英文单词,按字典顺序排序后输出。

第9章 结构体、共用体和枚举类型 一、选择题

1. 若已经定义 struct stu { int a, b; } student ; ,则下列输入语句中正确的是 。

A) scanf(\ B) scanf(\C) scanf(\ D) scanf(\

2. 若已有以下结构体定义和初始化,则值为2的表达式是 。

struct cmplx{

int x ;

int y; } c[]={1,2,3,4}; A) c[0].y B) y C) c.y[0] D) c.y[1] 3. 设有如下程序段,则vu.a 的值为 。

union u{ int a,b; float c; } vu; vu.a=1; vu.b=2; vu.c=3;

A) 1 B) 2 C) 3 D) A、B、C都不是

4. 设已经定义union u{ char a; int b;} vu; 在VC中存储char 型数据需要1个字节,存储int型数据需要4个字节,则存储变量vu需要 个字节。

A) 1 B) 4 C) 5 D) 8 5. 设有定义 enum date {year,month,day} d ;则下列叙述中正确的是 。

A) date是类型、d是变量、year是常量 B) date是类型、d和year是变量 C) date和d是类型、year是常量 D) date和d是变量、year是常量 6. 设有定义 enum date {year,month,day} d ;则正确的表达式是 。

A) year=1 B) d=year C) d=\ D) date=\

7. 若已经定义 typedef struct stu { int a, b; } student ; ,则下列叙述中正确的是 。

A) stu 是结构体变量 B) student 是结构体变量 C) student 是结构体类型 D) a和b是结构型体变量 8. 下面有关typedef语句的叙述中,正确的是 。

A) typedef语句用于定义新类型 B) typedef语句用于定义新变量

C) typedef语句用于给已定义类型取别名 D) typedef语句用于给已定义变量取别名

二、程序设计题

1. 设计一个通信录的结构体类型,并画出该结构体变量在内存的存储形式。