习 题 内 容 * *** ***** ******* #include “stdio.h” void disp(int i) { int j,k; for(j=0;j<=8-i;j++) printf(“ “); for(k=0;k< ;k++) printf(“*”); ; } main( ) { int i; for(i=0;i<4;i++) ; } 36、下面是一个计算阶乘的程序,请填空。 #include “stdio.h” double factorial(int); main( ) { int n; printf(“Enter an integer:”); scanf(“%d”,&n); printf(“\\n%d!=%lg\\n”, , ); } double factorial(int i) 答 案 35、2*i-1 printf(“\\n”) disp(i) 36、n factoria(n) return result
26
习 题 内 容 { double result=1.0; int j; for(j=1;j<=i;j++) result*=j; ; } 答 案
27
5 数组习题 一、在以下每一题的四个选项中,请选择一个正确的答案。 答 案 1、C 1、在C语言中,引用数组元素时,其数组下标的数据类型允许是 。 A、整型常量 B、整型表达式 C、整型常量或整型表达式 D、任何类型的表达式 2、D 2、以下对一维数组a中的所有元素进行正确初始化的是 。 A、int a[10]=(0,0,0,0); B、int a[10]={ }; C、int a[ ]={0}; D、int a[10]={10*2}; 3、对于所定义的二维数组a[2][3],元素a[1][2]是数组的第 个元素。 3、D A、3 B、4 C、5 D、6 4、D 4、若有说明:int a[20];,则对a数组元素的正确引用是 。 A、a[20] B、a[3.5] C、a(5) D、a[10-10] 5、C 5、若有说明:int a[3][4];,则对a数组元素的正确引用是 。 A、a[2][4] B、a[1,3] C、a[1+1][0] D、a(2)(1) 6、C 6、以下关于数组的描述正确的是 。 A、数组的大小是固定的,但可以有不同类型的数组元素。 B、数组的大小是可变的,但所有数组元素的类型必须相同。 C、数组的大小是固定的,所有数组元素的类型必须相同。 D、数组的大小是可变的,可以有不同类型的数组元素。 7、C 7、字符串”I am a student.”在存储单元中占 个字节。 A、14 B、15 C、16 D、17 8、在执行int a[ ][3]={{1,2},{3,4}};语句后,a[1][2]的值是 。 8、C A、3 B、4 C、0 D、2 9、下面程序段的运行结果是 。 9、B char c[5]={‘a’,’b’,’\\0’,’c’,’\\0’}; printf(“%s”,c); A、’a’’b’ B、ab C、ab c D、a,b 10、B 10、下面程序段的运行结果是 。 char c[ ]=”\\t\\v\\\\\\0will\\n”;
28
习 题 内 容 printf(“%d”,strlen(c)); A、14 B、3 C、9 D、字符串中有非法字符,输出值不确定 二、判断下列各叙述的正确性。 11、( )字符’\\0’是字符串的结束标记,其ASCII代码值为0。 12、( )若有说明:int a[3][4]={0};,则数组a中每个元素均可得到初值0。 13、( )若有说明:int a[ ][4]={0,0};,则二维数组a的第一维大小为0。 14、( )若有说明:int a[ ][4]={0,0};,则只有a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0。 15、( )若有说明:static int a[3][4];,则数组a中各元素在程序的编译阶段可得到初值0。 16、( )若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的第一个元素的值。 17、( )调用strlen(“abc\\0ef\\0g”)的返回值为8。 18、( )在两个字符串的比较中,字符个数多的字符串比字符个数少的字符串大。 19、( )已知:int a[ ][3]={1,2,3,4,5};,则数组a的第一维的大小是不确定的。 20、( )在C语言中,二维数组元素在内存中的存放顺序由用户自己确定。 三、填空。 21、在C语言中,字符串不存放在一个变量中,而是存放在一个 中。 22、设有“int a[3][4]={{1},{2},{3}};”,则a[1][1]的值为 。 23、若有定义:double x[3][5];,则x数组中行下标的下限是0,列下标的上限是 。 24、在C语言中,二维数组元素在内存中的存放顺序是 。 答 案 11、√ 12、√ 13、× 14、× 15、√ 16、× 17、× 18、× 19、√ 20、× 21、字符数组 22、0 23、4 24、 按行优先存放
29
习 题 内 容 25、字符’0’的ASCII码值为 (十进制形式)。 26、要将两个字符串连接成一个字符串,使用的函数是 。 27、设有定义:char s[12]=”string”;,则printf(“%d\\n”,strlen(s));的输出是 。 28、字符串”chen jing”占 字节的存储空间。 29、如果要比较两个字符串中的字符是否相同,可使用的库函数是 。 30、若在程序中用到“putchar()”函数时,应在程序开头写上文件包含命令 。 四、阅读下面的程序,写出程序运行结果。 31、#include “stdio.h” void wr(char *st,int i) { st[i]=’\\0’; puts(st); if(i>1) wr(st,i-1); } main( ) { char st[ ]=”abcdefg”; wr(st,7); } 32、#include “stdio.h” main( ) 32、 答 案 25、48 26、strcat() 27、6 28、10 29、strcmp() 30、 #include
30