1、第 2 章 C 语言基础二、选择题1下列合法的字符常量是_。A) “c“ B) c C) char D) n2. 下列合法的字符串常量是_。A) 56 B) 56 C) “56“ D) t3.合法的 C 语言标识符是 。A)2a B) sum C) default D) a*b4不合法的 C 语言标识符是 。A) _8_ B) j2_KEY C) 4d D) Double 5. 以下语句的输出结果是。printf(“%d“, strlen(“t065xffn“);A) 6 B) 14 C) 8 D) 输出项不合法 ,无正常输出6.在 C 语言中,要求运算数必须是整型的运算符是 。A) % B)
2、 / C) =a)|(c=c) D) (c=a)for(i=1;i2+3。14. 输入一个整数,计算该整数的位数及各位之和。15. 一个正整数如果恰好等于它的因子之和,这个数就称为“完数” 。例如,6 的因子为 1、2、3,且 6=1+2+3,因此 6 是“完数” 。输入一个数,判断该数是否为完数。16. 输出“九九乘法表” 。17. 输出如下图形:ABBBCCCCCDDDDDDD18. 输出如下图案:* * * * * * * * * * * * * * * * * * *19. 找出 10000 之内的所有完数。20. 找出 500 内的所有素数。21. 有一分数序列 2/1,3/2,5/
3、3,8/5,13/8,21/13, 求出这个数列的前 20 项之和。22. 计算 100 至 999 之间有多少个数其各位数字之和是 5。23. 编写程序,输出 1500 至 3000 年间的所有闰年,要求每行输出 8 个数据。24. 求一个二位整数 AB(其中 AB 分别为两位整数的十位和个位), 使 AB-BA=45 成立。25. 36 块砖,36 人搬。男搬 4,女搬 3,两个小孩抬一砖。一次刚好搬完,问男、女、小孩各多少人?26. 编程求解马克思手稿中的数学题:有 30 个人,在一家饭馆里吃饭共花了 50 先令,每个男人各花 3 先令,每个女人各花 2 先令,每个小孩各花 1 先令,问
4、男人、女人和小孩各有几人?第 6 章 函数二、选择题1C 语言程序由函数组成。正确的说法是_。A) 主函数写在必须写在其他函数之前,函数内可以嵌套定义函数B) 主函数可以写在其他函数之后,函数内不可以嵌套定义函数C) 主函数必须写在其他函数之前,函数内不可以嵌套定义函数D) 主函数必须在写其他函数之后,函数内可以嵌套定义函数2 一个 C 语言程序的基本组成单位是 _。A)主程序 B)子程序 C)函数 D)过程3 以下说法正确的是_。A) C 语言程序总是从第一个定义的函数开始执行B) C 语言程序中,被调用的函数必须在 main()函数中定义C) C 语言程序总是从主函数 main()开始执行
5、。D) C 程序中的 main()函数必须放在程序的开始处4 已知函数 fun 类型为 void,则 void 的含义是_。A)执行函数 fun 后,函数没有返回值 B)执行函数 fun 后,可以返回任意类型的值C)执行函数 fun 后,函数不再返回 D)以上三个答案都是错误的5 下列对 C 语言函数的描述中,正确的是 _。A)在 C 语言中,调用函数时只能将实参的值传递给形参,形参的值不能传递给实参B)函数必须有返回值C)C 语言函数既可以嵌套定义又可以递归调用D)C 程序中有调用关系的所有函数都必须放在同一源程序文件中6 以下叙述中错误的是_。A) 函数形参是存储类型为自动类型的局部变量B
6、) 外部变量的缺省存储类别是自动的。C) 在调用函数时,实参和对应形参在类型上只需赋值兼容D) 函数中的自动变量可以赋初值,每调用一次赋一次初值7 C 语言中的函数_ 。A)不可以嵌套调用 B)可以嵌套调用,但不能递归调用C)可以嵌套定义 D)嵌套调用和递归调用均可8 C 语言中函数返回值类型由 _决定。A)调用该函数的主调函数类型 B)函数参数类型C)return 语句中的表达式类型 D)定义函数时指定的函数类型9 C 语言规定,调用一个函数,实参与形参之间的数据传递方式是_。A)由实参传给形参,并由形参传回来给实参 B)按地址传递C)由用户指定方式传递 D)按值传递10 下列叙述错误的是_
7、。A) 形参是局部变量B) 复合语句中定义的变量只在该复合语句中有效C) 主函数中定义的变量在整个程序中都有效D) 其他函数中定义的变量在主函数中不能使用11 若函数类型和 return 语句中的表达式类型不一致,则 _。A)运行时出现不确定结果 B)返回值的类型以函数类型为准C)编译时出错 D)返回值的类型以 return 语句中表达式的类型为准12 下面函数定义正确的是_。A)double fun(double u,v) B)double fun(double u;double v) return u+v; return u+v;C)double fun(float u,float v)
8、D)double fun( u,v)return u+v; float u,v ;return u+v;13 以下函数 fun 的返回值类型为 _。fun(double x) A)double B)void C)int D)无法确定类型三、编程题1. 编写函数求两个整数的最小值。在主函数中通过键盘输入 x 和 y 的值,调用该函数,输出其中的最小值。2. 编写函数对 x 进行判断,如果 x 的值大于 0,返回 1;否则返回 0,在主函数中通过键盘输入 x 的值,调用该函数,输出返回值。3. 写一个判别素数的函数,在主函数中调用该函数,求出 100300 之间所有的素数。4. 写一个判别水仙花数
9、的函数,在主函数中调用该函数,求出所有水仙花数。5. 写一个判别完数的函数,在主函数中调用该函数,求出 1000 以内所有的完数。6. 写一个函数,求正整数 n 从右边开始数的第 k 个数字。并设计一个主程序测试这个函数。7. 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数分别调用这两个函数,并输出结果,两个整数由键盘输入。8. 金字塔图形问题:编写一个函数,其函数原型声明为“void draw(int n);”。函数功能是根据 n 的个数(00) #if(N0)printf(“N=%dn“,N); printf(“N=%dn“,N);else #elseprintf(“Nb)
10、printf(“%sn“,a);else printf(“%sn“,b);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 输
11、入一个由大写字母组成的字符串,求字符串中包含了几个不同的字母。6 用选择排序法对整型数组排序。7 请找出 1999 中的所有平方为回文数的数,并输出这些数。例如 11 的平方为 121,11为要找的数。8 找出二维数组的所有鞍点。所谓鞍点就是在该位置上的元素在该行上最大,而在该列上最小。数组元素由随机函数自动产生。9 输入一个 5*5 的整数矩阵,计算对角线以上所有元素之和。10文本加密。输入一字符串,将其中所有的大写英文字母+3,小写英文字母-3,然后再输出加密后的字符串。11输入一字符串,统计出某指定字符在字符串中出现的次数。12输入一个英文句子,如果两单词之间多于一个空格,则删除多余的空
12、格。然后输出处理前后该句子的长度。13不要调用 strcpy 函数,把字符数组 str2 中的字符串复制到字符数组 str1 中。14输入一组英文单词,按字典顺序排序后输出。第 9 章 结构体、共用体和枚举类型一、选择题1. 若已经定义 struct stu int a, b; student ; ,则下列输入语句中正确的是 。A) scanf(“%d“, B) scanf(“%d“,C) scanf(“%d“, D) scanf(“%d“,2. 若已有以下结构体定义和初始化,则值为 2 的表达式是 。 struct cmplxint x ; int y; c=1,2,3,4;A) c0.y
13、B) y C) c.y0 D) c.y13. 设有如下程序段,则 vu.a 的值为 。union uint 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) 85. 设有定义 enum date year,month,day d ;则下列叙述中正确的是 。A) date 是类型、d
14、是变量、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=yearC) d=“year“ D) date=“year“7. 若已经定义 typedef struct stu int a, b; student ; ,则下列叙述中正确的是 。A) stu 是结构体变量 B) student 是结构体变量 C) student 是结构体类型 D) a 和 b 是结构型体
15、变量8. 下面有关 typedef 语句的叙述中,正确的是 。A) typedef 语句用于定义新类型B) typedef 语句用于定义新变量C) typedef 语句用于给已定义类型取别名D) typedef 语句用于给已定义变量取别名二、程序设计题1. 设计一个通信录的结构体类型,并画出该结构体变量在内存的存储形式。2. 用结构体变量表示平面上的一个点(横坐标和纵坐标) ,输入两个点,求两点之间的距离。3. 用结构体变量表示复数(实部和虚部) ,输入两个复数,求两复数之积。第 10 章 指针一、选择题1. 设已定义 int a, *p; 下列赋值表达式中正确的是 。A) *p=a B) p
16、=*a C) p= 则下列表达式中错误的是 。 A) * , 则 printf(“%dn“,*b);的输出结果为 。A) a 的值 B) a 的地址 C) b 的值 D) b 的地址4. 设已定义 int x, *p ,*p1= 则下列表达式中错误的是 。 A) x=*p1+*P2 B) p=p1 C) p =p1+p2 D) x=p1-p25. 设有函数定义 void p(int *x)printf(“%dn“,*x) ; 和变量定义 a=3; 则正确的函数调用是 。A) p(a) B) p(*a) C) p ( while(*y)y+; return(y-x);A) 求字符串的长度 B)
17、比较两个字符串的大小C) 将字符串 x 复制到字符串 y D) 将字符串 x 连接到字符串 y 后面7. 运行以下程序,输出结果为 。int fun(int a,int *b) a+; (*b)+;return a+*b;void main() int x=1,y=2;printf(“%d “,fun(x,printf(“%d “,fun(x,A) 5 5 B) 5 6 C)6 5 D) 6 68. 运行以下程序,输出结果为 。#include int* fun(int a,int *b)a+; (*b)+;*b=a+*b;return b;void main()int x=1,y=2,*z;
18、z=fun(x,printf(“%d “,*z);z=fun(x,printf(“%d “,*z);A) 5 6 B) 5 7 C)5 8 D) 6 89. 若已定义 int a=1,2,3,4,*p=a; 则下面表达式中值不等于 2 的是 。A) *(a+1) B) *(p+1) C) *(+a) D) *(+p)10. 若已定义 int a=1,2,3,4,*p=a+1; 则 p2的值是 。A) 2 B) 3 C) 4 D) 无意义11. 设已定义 char s = “ABCD“; printf(“%s“,s+1)的值为 。A) ABCD1 B) BC) BCD D) ABCD12. 设已
19、定义 char str=“abcd“ , *ptr=str;,则 *(ptr+5)的值为 。A) d B) 0 C) 0 D) 字符 d 的地址13. 下面对字符串变量的初始化或赋值操作中,错误的是 。A) char a=“OK“; B) char *a=“OK“;C) char a10; a=“OK“; D) char *a; a=“OK“;14. 设已定义 char *ps2= “abc“,“1234“; 则以下叙述中错误的是 。A) ps 为指针变量,它指向一个长度为 2 的字符串数组B) ps 为指针数组,其两个元素分别存储字符串 “abc“和“1234“ 的地址C) ps12的值为3
20、D) *(ps0+1) 的值为b15.设已定义 struct int a,b; s,*ps= 则错误的结构体成员引用是 。A) s.a B) ps-a C)*ps.a D) (*ps).a二、程序设计题1输入 3 个字符串,输出其中最大的字符串(用字符指针) 。2定义一个函数,函数的功能求已知半径的圆的周长和面积。要求把半径、周长和面积设置成函数参数。3定义函数 max ,函数参数为 3 个字符串,函数返回值最大的字符串。4自己定义字符串复制函数 strcpy,然后调用之。5定义一个函数,函数参数为一维数组(用指针表示) ,函数返回数组元素的平均值。6定义一个函数,删除字符串中第 k 个字符开始的 m 个字符,例如删除字符串 abcde第 2 个字符开始的 3 个字符,则删除后结果为 ae;又如删除字符串 abcde 第 4 个字符开始的 5 个字符,则删除后结果为 abc;7在字符串中删除所有指定字符(如把字符串 teacher 中的 e 字符删除,得到 tachr) ,使用子函数和字符指针。