三、编程题
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. 设计一个通信录的结构体类型,并画出该结构体变量在内存的存储形式。