C程序设计复习 if(isupper(c)) num[ c-‘A’ ]+=1; for(i=0;i<26;i++) if(num[i]) printf(“%c: %d\\n”,i+‘A’,num[i]); }
㈡.选择题:
1.以下程序的输出结果是( B )。
A.不确定的值 B.3 C.2 D.1 main()
{ int n[2]={0},i,j,k=2; for(i=0;i for(j=0;j 2.以下对一维数组a的正确说明是( D )。 A.char a(10); B.int a[ ]; C.int k=5,a[k]; D.char a[ ]={‘a’,‘b’,‘c’}; 3.若有说明语句:int a[2][4];则对a数组元素的正确引用是( A )。 A.a[0]3] B.a[0][4] C.a[2][2] D.a[2][2+1] 4.以下能对二维数组y进行正确初始化的语句是( D )。 A.int y[2][ ]={{ 1,0,1 },{ 5,2,3 }}; B.int y[ ][3]={{1,2,3},{4,5,6}}; C.int y[2][4]={1,2,3},{4,5},{6}; D.int y[ ][3]={{1,0,1,0},{ },{1,1}}; 5.若有说明语句:int y[ ][4]={0,0};则下面不正确的叙述是( C )。 A.数组y的每个元素都可以得到初值0; B.二维数组y的行数为1; C.该说明等价于int y[ ][4]={0}; D.只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0; 6.若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8};则a数组的行数为( 3 )。 A.3 B.2 C.无确定值 D.1 7.若二维数组y有m列,则在y[i][j]前的元素个数为( C )。 A.j*m+i B.i*m+j C.i*m+j-1 D.i*m+j+1 8.若有以下语句,则正确的描述是( B )。 char x[ ]=“12345”;char y[ ]={‘1’,‘2’,‘3’,‘4’,‘5’}; A.x数组与y数组的长度相同 B.x数组长度大于y数组长度 C.x数组长度小于y数组长度 D.x数组等价于y数组 9.下面程序段的运行结果是( B )。 A.‘a’‘b’ B.ab C.ab c D.abc char c[5]={‘a’,‘b’,‘\\0’,‘c’,‘\\0’};printf(“%s”,x); 10.有两个字符数组a、b,则以下能正确为a、b进行赋值的语句是( D )。 第 29 页 共 43 页 C程序设计复习 A.gets(a,b); B.scanf(“%s%s”,&a,&b); C.getchar(a);getchar(b); D.gets(a);gets(b); 11.有字符数组s1[80]和s2[80],则以下能正确对s1、s2进行输出的语句是( B )。 A.puts(s1,s2); B.printf(“%s,%s\\n”,s1,s2); C.putchar(s1,s2); D.puts(s1),puts(s2); 12.下面描述正确的是( D )。 A.两个字符串所包含的字符个数相同时,才能比较字符串; B.字符个数多的字符串比字符个数少的字符串大 C.字符串“STOP ”与“STOP”相等 D.字符串“That”小于字符串“The” 13.以下对字符数组的描述中错误的是( C )。 A.字符数组中可以存放字符串 B.字符数组中的字符串可以整体输入、输出 C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较 14.语句printf(“%d\\n”,strlen(“school”));的输出结果是( B )。 A.7 B.6 C.存在语法错误 D.不定值 15.有语句char s1[10],s2[10]={“books”};则能将s2的值正确赋给s1的语句是( B )。 A.s1={“books”}; B.strcpy(s1,s2); C.s1=s2; D.strcpy(s2,s1); ㈢.程序设计题: 1.编写程序打印九九乘法表。 2.用随机函数产生20个100以内的整数,用选择法对它们排序。 3.用随机函数产生50个200以内的整数,用冒泡法对它们排序。 4.打印杨辉三角形的前10行。 5.有一篇文章,共有3行文字,每行有80个字符。要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。 6.输入一行数字字符,请用数组元素作为计数器来统计每个字符的个数。用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,依次类推。 第 30 页 共 43 页 C程序设计复习 第八章 预处理命令 一.知识点 1.宏定义:注意带参宏定义 2.文件包含:注意两种书写方式的区别 二.练习 (1).选择题: 1.以下程序的输出结果是( B )。 A.15 B.100 C.10 D.150 #define MIN(x,y) (x)<(y)?(x):(y) main() { int i,j,k;i=10;j=15;k=10*MIN(i,j); printf(“%d\\n”,k);} 2.以下程序中的for循环执行的次数是( C )。 A.5 B.6 C.8 D.9 #define N 2 第 31 页 共 43 页 C程序设计复习 #define M N+1 #define NUM (M+1)*M/2 main() { int i;for(i=1;i<=NUM;i++); printf(“%d\\n”,i);} 3.以下程序的输出结果是( B )。 A.11 B.12 C.13 D.15 #include “stdio.h” #define FUDGF(y) 2.84+y #define PR(a) printf(“%d”,(int)(a)) #define PRINT1(a) PR(a);putchar(‘\\n’) main() { int x=2;PRINT1(FUDGF(5)*x); } 4.以下叙述正确的是( D )。 A.用#include包含的头文件的后缀不可以是“.a” B.若一些源程序中包含某个头文件;当该头文件有错时,只需对该头文件进行修改,包含此头文件所有源程序不必重新进行编译 C.宏命令可以看做是一行C语句 D.C编译中的预处理是在编译之前进行的。 5.以下有关宏替换的叙述不正确的是( D )。 A.宏替换不占用运行时间 B.宏名无类型 C.宏替换只是字符替换 D.宏名必须用大写字母表示 第 32 页 共 43 页