黄建的二级C语言课后题_05_整型数组
- 格式:doc
- 大小:81.00 KB
- 文档页数:2
二级C语言-205(总分:100.00,做题时间:90分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充函数proc(),该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组str中。
例如,当n=12345时,str="54021"。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#define M 100char str[M];void proc(long int n){int i=0;while( 1){str[i]= 2;n/=10;i++;}3;}void main(){long int n=12345;system("CLS");printf("***the origial data***/n");printf("n=%1d",n);proc(n);printf("/n%s",str);}(分数:30.00)解析:n>0 n%10+"0" str[]="/0"[解析] 按照题目中要求将一个整数转化成字符串,需要把整数每一位上的数字变为字符。
因此,第一处处填“n>0”;依次将整数从低位到高位的数字转化为字符,因此,第二处处填“n%10+"0"”。
最后为新的字符串添加结束符,因此,第三处处填“str[i]="/0"”。
二、程序改错题(总题数:1,分数:30.00)2.数列中,第一项为3,后一项都比前一项的值增5。
下列给定程序中,函数proc()的功能是:计算前n(4≤n≤50)项的累计和。
在累加过程中把那些被4除后余2的当前累加值放入数组中,符合此条件的累加值作为函数值返回主函数。
c语言二级考试试题答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable-2D. variable2!答案:B2. 在C语言中,用于定义一个整型变量的关键字是?A. intB. floatC. doubleD. char答案:A3. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. A、B和C都是答案:D4. C语言中,用于计算两个整数的乘积的运算符是?A. /B. *C. %D. ^5. 下列哪个选项是C语言中正确的字符串定义方式?A. char str[10] = "Hello";B. char str = "Hello";C. char str[10] = 'Hello';D. char str = 'Hello';答案:A6. 在C语言中,哪个函数用于计算数组中元素的数量?A. sizeofB. countC. lengthD. size答案:A7. 下列哪个选项是C语言中的条件语句?A. ifB. whenC. switchD. case答案:A8. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:C9. 下列哪个选项是C语言中用于循环的关键字?B. whileC. do-whileD. A、B和C都是答案:D10. 在C语言中,哪个函数用于输出字符串到控制台?A. printfB. scanfC. coutD. endl答案:A二、填空题(每题2分,共20分)1. C语言中,用于声明一个整型数组的语句是:int array[10];2. C语言中,用于声明一个字符数组的语句是:char array[10];3. C语言中,用于声明一个浮点型变量的语句是:float variable;4. C语言中,用于声明一个双精度浮点型变量的语句是:double variable;5. C语言中,用于声明一个字符型变量的语句是:char variable;6. C语言中,用于声明一个指针变量的语句是:int *pointer;7. C语言中,用于声明一个结构体的语句是:struct struct_name { ... };8. C语言中,用于声明一个联合体的语句是:union union_name { ... };9. C语言中,用于声明一个枚举类型的语句是:enum enum_name { ... };10. C语言中,用于声明一个函数的语句是:返回类型函数名(参数列表) { ... };三、编程题(每题10分,共60分)1. 编写一个C语言程序,计算并输出100以内所有奇数的和。
全国计算机等级考试二级C语言考前辅导位运算与文件Page 27(1)[2010.9.13]以下叙述错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(2)[2004.4.18]程序运行结果是int x = 102,y = 012;printf("%2d,%2d", x, y);(3)[2004.9.7]程序运行结果是int a = 25, b = 025, c = 0x25; printf("%d,%d,%d", a, b, c); (4)[2010.3.22][2011.3.18]程序运行结果是int k = 011; printf("%d", k++);(5)[2010.9.6]程序运行结果是int a = 200, b = 010;printf("%d%d", a, b);(6)[2005.4.36]程序运行结果是int c = 35; printf("%d", c & c);(7)[2005.9.49]程序运行结果是char a = 7 ^ 3, b = ~4 & 3; printf("%d,%d", a, b);(8)[2006.4.28]运行后,c的值是int a = 1, b = 2, c = a^(b << 2);(9)[2006.9.48]程序运行结果是int s = 32;s ^= 32; printf("%d", s); (10)[2007.4.48]运行后,d的值是char a = 2, b = 4, c = 5, d;d = a | b; d &= c;(11)[2007.9.48]运行后,x的值是int x = (1 ^ 2) & 3;(12)[2008.4.38]a数据二进制表示形式是01011101,b的二进制形式是11110000,要将a的高4位取反,低4位不变,需执行A)a ^ b B)a | bC)a & b D)a << 4(13)[2008.9.39]程序运行结果是char a = 4;printf("%d", a = a << 1); (14)[2009.3.39]运行后,t的值是int a = 5, b = 1, t = (a << 2) | b;(15)[2009.9.39]程序运行结果是int r = 8; printf("%d", r >> 1);(16)[2010.3.39]程序运行结果是int a = 2;printf("%d", a / a & a);(17)[2010.9.40]填空,使程序运行结果为248short c = 124;printf("%d", c );A)>> 2 B)| 248C)& 0248 D)<< 1(18)[2011.3.39]程序运行结果是unsigned char a = 8, c;c = a >> 3; printf("%d", c);(19)[2011.9.38]程序运行结果是int a = 2, b;b = a << 2; printf("%d", b);(20)[2012.3.39]程序运行结果是int a = 12, c;c = (a << 2) << 1;printf("%d", c);(21)[2004.9.47][2009.3.40][2012.3.15]文件f1.txt中原内容为:good,则运行下面程序后,文件f1.txt内容为FILE *fp = fopen("f1.txt", "w+");fprintf(fp, "abc");fclose(fp);(22)[2011.3.40]执行FILE *fp =fopen("file","w");后,以下针对文本文件file操作叙述正确的是A)写操作结束后可以从头读B)只能写不能读C)可以在原有内容后追加写D)可以随意读和写(23)[2005.4.50]运行后,t1.dat的内容是void WriteStr(char *fn, char *s){FILE *fp;fp = fopen(fn, "w");fputs(s, fp);fclose(fp);}main(){WriteStr("t1.dat", "start");WriteStr("t1.dat", "end");}(24)[2007.4.49]程序运行结果是FILE *fp;int k, n, a[6] = {1,2,3,4,5,6};fp = fopen("d2.dat", "w");fprintf(fp, "%d%d%d\n",a[0],a[1],a[2]);fprintf(fp, "%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp = fopen("d2.dat", "r");fscanf(fp, "%d%d", &k, &n);printf("%d,%d\n", k, n);fclose(fp);(25)[2004.4.49]程序运行结果是FILE *fp;int i, k = 0, n = 0;fp = fopen("d1.dat", "w");for (i = 1; i < 4; i++)fprintf(fp, "%d ", i);fclose(fp);fp = fopen("d1.dat", "r");fscanf(fp, "%d%d", &k, &n);printf("%d,%d\n", k, n);fclose(fp);(26)[2005.9.50]程序运行结果是FILE *fp;int i, k, n;fp = fopen("data.dat", "w+");for (i = 1; i < 6; i++){fprintf(fp, "%d", i);if (i % 3 == 0)fprintf(fp, "\n");}rewind(fp);fscanf(fp, "%d%d", &k, &n);printf("%d,%d", k, n);fclose(fp);(27)[2011.9.40]程序运行结果是int k, n, i, a[6] = {1,2,3,4,5,6};FILE *fp = fopen("d2.dat","w");for (i = 0; i < 6; i++)fprintf(fp, "%d\n", a[i]);fclose(fp);fp = fopen("d2.dat","r");for (i = 0; i < 3; i++)Page 28辽宁科技大学黄建公共信箱: v.c.6@密码: 123.456fscanf(fp, "%d%d", &k, &n); fclose(fp);printf("%d,%d", k, n);(28)[2006.9.50]程序运行结果是FILE *fp;int i;char ch[ ] = "abcd", t;fp = fopen("abc.dat", "wb+"); for (i = 0; i < 4; i++)fwrite(&ch[i], 1, 1, fp); fseek(fp, -2L, SEEK_END); fread(&t, 1, 1, fp);fclose(fp);printf("%c", t);(29)[2004.4.50]程序运行结果是FILE *fp;int i, a[4] = {1,2,3,4}, b;fp = fopen("data.dat", "wb"); for (i = 0; i < 4; i++)fwrite(&a[i],sizeof(int),1,fp); fclose(fp);fp = fopen("data.dat", "rb"); fseek(fp, -2L*sizeof(int),SEEK_END); fread(&b, sizeof(int), 1, fp); fclose(fp);printf("%d", b);(30)[2007.4.50]程序运行结果是FILE *fp;int i, a[6] = {1,2,3,4,5,6};fp = fopen("d3.dat", "w+b"); fwrite(a, sizeof(int), 6, fp); fseek(fp, sizeof(int)*3,SEEK_SET); fread(a, sizeof(int), 3, fp); fclose(fp);for (i = 0; i < 6; i++)printf("%d", a[i]);(31)[2011.3.15]程序运行结果是FILE *fp;int x[6] = {1,2,3,4,5,6}, i;fp = fopen("test.dat", "wb+"); fwrite(x, sizeof(int), 3, fp);rewind(fp);fread(x, sizeof(int), 3, fp);for (i = 0; i < 6; i++)printf("%d", x[i]);fclose(fp);(32)[2007.9.50]程序运行结果是FILE *fp;int a[6] = {1,2,0}, i;fp = fopen("d2.dat", "wb");fwrite(a, sizeof(int), 3, fp);fwrite(a, sizeof(int), 3, fp);fclose(fp);fp = fopen("d2.dat", "rb");fread(a, sizeof(int), 6, fp);fclose(fp);for (i = 0; i < 6; i++)printf("%d", a[i])(33)[2006.4.43]运行后,t.txt的内容是FILE *fp;char *s1 = "Fortran";char *s2 = "Basic";if ((fp = fopen("t.txt","wb"))== NULL){printf("不能打开该文件.");exit(1);}fwrite(s1, 7, 1, fp);fseek(fp, 0L, SEEK_SET);fwrite(s2, 5, 1, fp);fclose(fp);(34)[2008.9.40]程序运行后,abc.dat文件的内容是FILE *fp;char *s1 = "China";char *s2 = "Beijing";fp = fopen("abc.dat", "wb+");fwrite(s2, 7, 1, fp);rewind(fp);fwrite(s1, 5, 1, fp);fclose(fp);(35)[2010.3.40]程序运行结果是FILE *fp;char str[10];fp = fopen("myfile.dat", "w");fputs("abc", fp);fclose(fp);fp = fopen("myfile.dat", "a+");fprintf(fp, "%d", 28);rewind(fp);fscanf(fp, "%s", str);puts(str);fclose(fp);(36)[2007.4.19]填空,实现向文本文件续写内容FILE *fw;fw = fopen("text.txt", );(37)[2006.4.27]fp为指向某二进制文件的指针,且已读到文件末尾,则函数feof(fp)的返回值为A)EOF B)非0值C)0 D)NULL(38)[2009.3.13]填空,实现判断文件能否正常打开FILE *fp;if ((fp = fopen("a.txt", "r"))== )printf("未能打开文件!");(39)[2006.9.49]以下选项叙述正确的是A)C语言中的文件是流式文件,因此只能顺序存取数据B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C)在程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失- - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(1)B(2)102,10(3)25,21,37(4)9(5)2008 (6)35(7)4,3(8)9(9)0(10)4(11)3(12)A(13)8(14)21(15)4(16)0(17)D(18)1(19)8(20)96(21)abc(22)B(23)end(24)123,456(25)1,2(26)1,2(27)5,6(28)c(29)3(30)456456(31)123456(32)120120(33)Basican(34)Chinang(35)abc28(36)"a"或"at"(37)B(38)NULL(39)D。
全国计算机等级考试二级C语言考前辅导字符串与字符指针Page 19(1)[2009.9.23]'A'的ASCII码为65,则程序输出char c1 = 'A' + '8' - '4', c2 = 'A' + '8' - '5';printf("%c,%d", c1, c2);(2)[2005.4.16]'0'的ASCII值为48,则程序输出char a = '1', b = '2';printf("%c,", b++);printf("%d", b - a);(3)[2011.9.21]以下不能输出字符A的语句是A)printf("%c", 'a' - 32); B)printf("%d", 'A');C)printf("%c", 65); D)printf("%c", 'B' - 1);(4)[2007.4.27]不能将c中大写字母转换为小写的是A)c = (c - 'A') % 26 + 'a' B)c = c + 32C)c = c - 'A' + 'a' D)c = ('A'+c) % 26 - 'a'(5)[2011.9.10]以下程序的运行结果是char a;for (a = 0; a < 15; a += 5)putchar(a + 'A');(6)[2011.3.23][2012.3.23]以下程序的运行结果是char a, b = '1', c = 'A';for (a = 0; a < 6; a++)if (a % 2) putchar(b + a);else putchar(c + a);(7)[2011.9.14]若有定义语句:double a = 3.14; int b = 10; 则表达式'A' + a + b值的类型是A)char B)int C)double D)float(8)[2011.3.9]若有以下函数,执行语句fun('*', 24); 后,函数共输出了多少行*号?void fun(char ch, int n){int i;for (i = 1; i <= n; i++)printf(i%6 != 0 ? "%c" : "%c\n", ch);}(9)[2008.9.18]以下程序运行后,w的值是int w = 'A';char x = '0', y = '\0';w = ((x || y) && (w < 'a'));(10)[2006.9.24]以下选项中,值为1的表达式是A)1-'\0' B)1-'0' C)'1'-0 D)'\0'-'0'(11)[2008.9.13]以下不能作为C合法常量的是A)'cd' B)0.1e+6 C)"\a" D)"\011"(12)[2012.3.16]以下选项中非法的字符常量是A)'\101' B)'\65' C)'\xff' D)'\019'(13)[2011.3.13]以下不能用作C合法常量的是A)1,234 B)'\123' C)123 D)"\x7G"(14)[2005.4.25]以下能正确定义一维数组的选项是A)int a[5] = {0,1,2,3,4,5};B)int a[5] = "0123";C)char a = {'A','B','C'};D)char a[ ] = {0,1,2,3,4,5};(15)[2005.4.27]char a[ ] = "xyz", b[ ] = {'x','y','z'};,则以下选项正确的是A)数组a和b的长度相同B)a数组长度小于bC)a数组长度大于b D)上述说法都不对(16)[2006.4.17][2007.9.36]若要求从键盘读入含有空格字符的字符串,应使用函数A)getc() B)gets() C)getchar() D)scanf()(17)[2011.3.31]有以下程序,当执行时从键盘输入:How are you? I am fine<回车>,则输出结果是char a[30], b[30];scanf("%s", a);gets(b);printf("%s\n%s\n", a, b);A)How are you? B)HowI am fine are you? I am fineC)How are you? D)How are you? I am fine(18)[2012.3.31]若输入:This is a cat!<回车>,则以下程序的输出结果是char a[20], b[20], c[20];scanf("%s%s", a, b);gets(c);printf("%s%s%s", a, b, c);A)Thisisacat! B)Thisis aC)Thisis a cat! D)Thisisa cat!(19)[2011.3.16]有以下程序,当执行时从键盘输入:name=Lili num=1001<回车>后,name的值为:char name[20]; int num;scanf("name=%s num=%d", name, &num); (20)[2004.4.35]若有:char a[10], *p = a;,则以下不能给数组a输入字符串的语句是A)gets(a); B)gets(a[0]);C)gets(&a[0]); D)gets(p);(21)[2009.9.31]以下叙述中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(22)[2011.9.34]以下程序的运行结果是char s[3][5] = {"AAAA","BBB","CC"};printf("%s", s[1]);(23)[2004.4.31]以下程序的运行结果是char a[ ] = "abcdefg", b[10] = "abcdefg";printf("%d,%d", sizeof(a), sizeof(b));(24)[2005.4.24]以下程序的运行结果是char a[7] = "a0\0a0\0";printf("%d,%d", sizeof(a), strlen(a));(25)[2007.4.12]以下程序的运行结果是char a[ ] = {'\1','\2','\3','\4','\0'};printf("%d,%d", sizeof(a), strlen(a));(26)[2007.4.10][2012.3.30]以下程序的运行结果是printf("%d", strlen("IBM\n012\1\\"));(27)[2010.3.31]以下程序的运行结果是char s1[10] = "abcd!", *s2 = "\n123\\";Page 20辽宁科技大学黄建公共信箱: v.c.6@密码: 123.456printf("%d,%d", strlen(s1), strlen(s2));(28)[2010.9.23]以下程序的运行结果是char x[ ] = "STRING";x[0] = 0; x[1] = '\0'; x[2] = '0';printf("%d,%d", sizeof(x), strlen(x));(29)若有以下定义,则叙述正确的是char sa[ ]={'a','b'}, sb[10]={'a','b'};printf("%d,%d", strlen(sa), strlen(sb));A)在给sa和sb数组置初值时,系统会自动添加字符串结束符,故输出的长度都为2B)由于sa数组中没有字符串结束符,长度不能确定;但sb数组中字符串长度为2C)由于sb数组中没有字符串结束符,长度不能确定;但sa数组中字符串长度为2D)由于sa和sb数组中都没有字符串结束符,故长度都不能确定(30)[2005.3.15]以下程序的运行结果是char s[ ] = "abc", t[3][4];for (i = 0; i < 3; i++) strcpy(t[i], s);for (i = 0; i < 3; i++) printf("%s", &t[i][i]); (31)[2006.9.39]有定义:char *p = "abcdefghi"; 以下选项中正确运用了strcpy函数的是A)char s[10]; strcpy(s, p[4]);B)char s[10]; strcpy(++s, &p[1]);C)char s[10], *w; strcpy(w=s+5, p);D)char s[10], *w; strcpy(w=s+1, p+1);(32)[2007.4.37]以下程序的运行结果是char p[20] = {'a','b','c','d'};char q[ ] = "abc", r[ ] = "abcde";strcpy(p + strlen(q), r); strcat(p, q);printf("%d%d", sizeof(p), strlen(p));(33)[2007.4.38]以下程序的运行结果是char p[20] = {'a','b','c','d'};char q[ ] = "abc", r[ ] = "abcde";strcat(p, r); strcpy(p + strlen(q), q);printf("%d%d", sizeof(p), strlen(p));(34)[2001.4.43]运行时输入:ABC<回车>,则输出char s[10] = "1,2,3,4,5";gets(s); strcat(s, "67");printf("%s", s);(35)[2010.9.33]以下程序的运行结果是char a[20] = "ABC\0DEFG\0";char b[ ] = "JK";strcat(a, b);printf("%s", a); (36)[2004.9.31]能实现s1串大于s2时执行S的是A)if (s1 > s2) S;B)if (strcmp(s1, s2)) S;C)if (strcmp(s2, s1) > 0) S;D)if (strcmp(s1, s2) > 0) S;(37)[2010.9.31]下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是A)if (strcmp(s2, s1) == 0) ST;B)if (s1 == s2) ST;C)if (strcpy(s1, s2) == 1) ST;D)if (s1-s2 == 0) ST;(38)[2011.9.30]若有定义语句:char *s1 = "OK", *s2 = "ok"; 以下选项中能够输出OK的语句是A)if (strcmp(s1,s2) == 0) puts(s1);B)if (strcmp(s1,s2) != 0) puts(s2);C)if (strcmp(s1,s2) == 1) puts(s1);D)if (strcmp(s1,s2) != 0) puts(s1);(39)[2010.3.23]以下能正确进行字符串赋值的是A)char *s; s = "Olympic";B)char s[8]; s = "Olympic";C)char *s; s = {"Olympic"};D)char s[8]; s = {"Olympic"};(40)[2005.4.39]以下能正确进行字符串赋值的是A)char *p; *p = "right!";B)char s[10]; s = "right!";C)char s[10]; *s = "right!";D)char *p = "right!";(41)[2004.4.44]以下错误的程序段是A)char s[6] = "abcd";B)char t[ ] = "abcd", *s = t;C)char s[6]; s = "abcd";D)char s[6]; strcpy(s, "abcd");(42)以下能正确进行字符串赋值的是A)char st[4] = "Good";B)char st[5]; st[0] = 'G';C)char *st; *st = "Good";D)char st[5] = {'G','o','o','d'};(43)[2009.9.37]若有:char *p;,则以下正确的是A)char st[ ] = "string"; p = st;B)scanf("%s", p);C)p = getchar();D)*p = "string";(44)[2006.4.15]以下能正确进行字符串赋值的是A)char st[ ] = {'\064'}; B)char st = "kx43"; C)char st = ''; D)char st[ ] = "\0";- - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(1)E,68(2)2,2(3)B(4)D(5)AFK(6)A2C4E6 (7)C(8)4(9)1(10)A(11)A(12)D(13)A(14)D(15)C(16)B(17)B(18)C(19)Lili(20)B(21)D(22)BBB(23)8,10(24)7,2(25)5,4(26)9(27)5,5(28)7,0(29)B(30)abcbcc(31)D(32)2011(33)206(34)ABC67(35)ABCJK(36)D(37)A(38)D(39)A(40)D(41)C(42)D(43)A(44)D。
二级C语言-5-2(总分:100.00,做题时间:90分钟)一、选择题(总题数:40,分数:40.00)1.下列叙述中正确的是______。
(分数:1.00)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对√解析:[解析] 算法是指解题方案的准确而完整的描述,算法既不等于程序,也不等于计算方法,因此A错误。
设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构,因此B和C错误。
2.下列叙述中正确的是______。
(分数:1.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构√C.循环链表是非线性结构D.双向链表是非线性结构解析:[解析] 线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,因此B正确。
因为有一个以上根结点的数据结构一定是非线性结构,所以A错误。
循环链表和双向链表都是线性结构的数据结构。
3.下列关于二叉树的叙述中,正确的是______。
(分数:1.00)A.叶子结点总是比度为2的结点少一个B.叶子结点总是比度为2的结点多一个√C.叶子结点数是度为2的结点数的两倍D.度为2的结点数是度为1的结点数的两倍解析:[解析] 根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个,因此答案为B。
4.软件生命周期中的活动不包括______。
(分数:1.00)A.市场调研√B.需求分析C.软件测试D.软件维护解析:[解析] 软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。
主要活动包括:可行性研究与计划、需求分析、软件设计、软件实现、软件测试、运行和维护,因此本题答案为A。
5.某系统总体结构图如下图所示:该系统总体结构图的深度是______。
(分数:1.00)A.7B.6C.3 √D.2解析:[解析] 根据总体结构图可以看出该树的深度为3,比如:XT系统——功能2——功能2.1,就是最深的度数的一个表现,因此本题答案为C。
计算机二级考试C语言编程题练习题及答案2017年计算机二级考试C语言编程题练习题及答案计算机二级考试是全国计算机等级考试(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机基础知识和使用一种高级计算机语言编写程序以及上机调试的基本技能。
下面是2017年计算机二级考试C语言编程题练习题及答案。
欢迎阅读。
2017年计算机二级考试C语言编程题练习题及答案1.3程序编程题请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
【参考答案】int fun (int a[][M]){int i,j,max=a[0][0];for(i=0;i<2;i++)fr(j=0;jif(maxmax=a[i][j];return max;}2.3程序编程题编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
程序运行后,若输入精度0.0005,则程序应输出为3.14…。
【参考答案】double fun ( double eps){double s=1.0,s1=1.0;int n=1;while(s1>=eps){s1=s1*n/(2*n+1);s=s+s1;n++;}return 2*s;}3.3程序编程题编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
【参考答案】void fun (int *a, int *n){int i,j=0;for(i=1;i<=1000;i++)if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;}4.3程序设计题规定输入的字符串中只包含字母和*号。
编写函数fun,其功能是:删除字符串中所有的*号。
全国计算机等级考试二级C语言考前辅导循环语句嵌套Page 7(1)[2009.3.6]以下表达式的值是(int)((double)(5/2) + 2.5)(2)[2009.9.14]以下表达式的值是((double)9/2 + 0.7) - 9%2(3)[2011.3.6]以下表达式的值是(int)((double)(3/2) + 0.5 + (int)1.99 * 2)(4)[2005.4.15]以下不合法的数值常量是A)1.234e04 B)1.234e0.4C)1.234e+4 D)1.234e0(5)[2004.4.13][2011.3.14]以下合法的实型常量是A)1.2E0.5 B)3.14E C).5E-3 D)E5(6)填空,输入一个实型数,保留该数小数点后两位,对小数点后第3位四舍五入double x;scanf(“%lf”, &x);x = (int)(x * 100 + 0.5) / ;printf(“%f”, x);(7)[2008.9.27]以下程序的运行结果是int i, j;for (i = 3; i >= 1; i--){for (j = 1; j <= 2; j++)printf("%d", i + j);printf("\n");}A)234 B)432 C)23 D)45345 543 34 3445 23(8)[2007.4.24]以下程序的运行结果是for (i = 1; i < 3; i++){for (j = i; j < 3; j++)printf("%d*%d=%d ", i, j, i*j);printf("\n");}A)1*1=1 1*2=2 B)1*1=1 1*2=22*1=2 2*2=4C)1*1=1 D)1*1=11*2=2 2*2=4 2*1=2 2*2=4(9)[2007.9.24]以下程序运行后,m的值是int i, j, m = 55;for (i = 1; i <= 3; i++)for (j = 3; j <= i; j++)m = m % j; (10)填空,使程序输出如下数字方阵1 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 45 5 5 5 5#define N 5int a, b;for (a = 1; a <= N; a++){for (b = 1; b <= N; b++)printf("%d ", );printf("\n");}(11)[2010.3.20]以下程序运行后,m的值是int i, j, m = 1;for (i = 1; i < 3; i++){for (j = 3; j > 0; j--){if (i*j > 3) break;m *= i*j;}}(12)以下程序运行后,s的值是int i, j, s;for (i = 3; i >= 1; i--){s = 0;for (j = 1; j <= i; j++)s += i * j;}(13)[2006.4.15]以下程序的运行结果是int i, j, n = 4, t = 1;for (i = 1; i <= n; i++){for (j = 1; j <= n-i+1; j++){printf("%2d", t);t++;}printf("\n");}(14)[2009.3.20]以下程序的运行结果是Page 8辽宁科技大学黄建公共信箱: v.c.6@密码: 123.456for (i = 0; i < 4; i++, i++)for (k = 1; k < 3; k++);printf("*");(15)[2004.4.25]以下程序运行后,n的值是int i, n = 0;for (i = 2; i < 5; i++){do{if (i % 3) continue;n++;} while (!i);n++;}(16)[2006.4.32]以下程序运行后,x的值是int i, j, x = 0;for (i = 0; i < 2; i++){x++;for (j = 0; j <= 3; j++){if (j % 2) continue;x++;}x++;}(17)填空,输出100以内所有的素数(质数)int i, a;for (a = 2; a <= 100; a++){for (i = 2; i < a; i++)if (a % i == 0) ;if (i == a) printf("%d,", a);}(18)填空:删除整数尾部的0。
第九章数组一、选择题[9。
1]若已定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0<=i〈=9,则对a数组元素的引用不正确的是A)a[p-a] B) *(&a[i]) C)p[i] D) *(*(a+i))【解析】A:p开始是数组a首地址,只要p++则再减去a的首地址a[p—a]就能取到所有元素,B:&a[i]循环取其地址,*(&a[i])是该地址中所存储的元素C:p就是指针变量,相当于a[i],D:*(a+i) 则正确[9.2]以下程序段数组所有元素输入数据,应在下划线填入的是A)a+(i++) B) &a[i+1] C) a+i D)&a[++i]main(){ int a[10],i=0;while(i〈10) scanf(”%d",_);}【解析】因为要遍历,所以排除B。
C,因为D先加1再取值,丢了a[0][9。
3]以下程序的输出结果是A)3 B) 4 C)1 D)2main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf(”%d\n",*(p+2));}【解析】*p=a;p指向首地址,*(p+2))往后移动两个元素,指向3[9.4]以下程序的输出结果是A) 不确定的值 B) 3 C) 2 D)1main(){ int n[2]={0},i,j,k=2;for(i=0;i〈k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n”,n[k]);}[9。
5] 以下程序的输出结果是A)17 B)18 C)19 D)20main(){int a[]={2,4,6,8,10},y=1,x,*p;p=&a[1];for(x=0;x<3;x++)y+=*(p+x);printf("%d\n”,y);}【解析】p=&a[1]则p指向元素为4,y+=*(p+x);相当于y=1+4+6+8=19[9.6]以下程序的输出结果是A)6 B)8 C) 4 D) 2main(){int a[]={2,4,6,8},*p=a,i;for(i=0;i<4;i++) a[i]=*p++;printf("%d\n",a[2]);}【解析】p=a,相当于重新把a中的内容赋给a本身,所以a[2]=6[9.7] 以下程序的输出结果是A) 720 B) 120 C) 24 D)6f(int b[],int n){ int i,r=1;for(i=0;i〈=n;i++)r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n”,x);}【解析】调用x=f(a,3);for循环4次,将前四个元素相乘,即得r=2*3*4*5;[9.8]以下程序中若第一个printf语句输出的是194,则第二个printf语句的输出结果是A) 212 B) 204 C) 1a4 D) 1a6 12main(){ int a[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf(”%x\n",p);printf(”%x\n”,p+9); }【解析】因为开始p的地址为194,p+9是指指针向后移动9个元素,而不是9个字节,每个int占2个字节,所以共移动18个字节,1个字节占一个存储单位,%x\n”是16进制,将18转化成16进制是12,所以194+12=2a6[9。
二级C语言-5-1(总分:79.00,做题时间:90分钟)一、{{B}}选择题{{/B}}(总题数:35,分数:45.00)1.有下列程序:main(){ int x=5;do{printf("%d",x-=4);}while(!(--x));}程序的输出结果是( )。
∙ A. 1∙ B. 20∙ C. 1 4∙ D. 死循环(分数:1.00)A.B.C. √D.解析:[解析] 本题考查do…while循环。
①执行printf语句,x=x-4 1,输出1,判断while循环的控制条件,--x=0,则(!(--x))非零,循环条件成立,执行下一次循环;②执行printf语句,x=x-4=-4,输出-4,判断while循环的控制条件,--x=-5,则(!(--x))为零,循环条件不成立,结束循环。
2.设有如下关系表:则下列操作中正确的是∙ A. T=R∩S∙ B. T=R∪S∙ C. T=R×S∙ D.T=R/S(分数:1.00)A.B. √C.D.解析:[解析] 选项A、B、C分别进行交运算、并运算,笛卡尔积运算,选项D不是关系运算。
T由属于关系R以及关系S的元组组成,简单来说,就是s和R的元组之和,是并运算,选项B正确。
3.有以下程序:#include <stdio.h>main(){ char a='a', b;printf("%c,", ++a);printf(1%c/n", b=a++);}程序运行后的输出结果是( )。
∙ A. b,b∙ B. b,c∙ C. a,b∙ D. a,c(分数:1.00)A. √B.C.D.解析:[解析] 本题考核的知识点是运算符++的用法。
程序中的第一个输出语句输出表达式++a的值,该++a 是在使用a之前,先使a的值加1,即a加1为字符b,此时a的值为b,所以第一个输出语句输出的值为b,第二个输出语句中输出的b的值,这时b的值为表达式a++的值,a++是在使用a之后(此时a的值为b,所以赋给b的值为b),使a的值加一,因此第二个输出的值也为b。
全国计算机等级考试二级C语言考前辅导 用数组存储信息 Page 9 (1)[2006.9.35][2010.3.25]若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是 A)#define N 10 B)#define n 5 int a[N]; int a[2*n]; C)int a[5+5]; D)int n = 10, a[n]; (2)[2010.9.27]下列定义数组的语句中,正确的是 A)int N = 10; B)#define N 10 int x[N]; int x[N]; C)int x[0..10]; D)int x[ ]; (3)[2010.9.28]要定义有5个元素的数组,错误的是 A)int i = 5, a[i]; B)int b[5] = {0}; C)int c[ ] = {0,0,0,0,0}; D)int d[2+3]; (4)[2008.9.21]以下选项对m数组,引用错误的是 int m[ ] = {5,4,3,2,1}, i = 4; A)m[m[0]] B)m[--i] C)m[2*2] D)m[m[i]] (5)[2007.9.14][2010.9.9][2011.3.13][2011.9.9]以下程序的运行结果是 int i, a[5] = {0}; for (i = 1; i <= 4; i++) { a[i] = a[i-1] * 2 + 1; printf("%d", a[i]); } (6)[2012.3.12]运行时输入10,输出结果为 int a[ ] = {1,3,5,7,2,4,6,8}, i, n; scanf("%d", &n); for (i = 0; i < 3; i++) printf("%d", a[(n+i)%8]); (7)[2007.4.14]以下程序的运行结果是 int x[6] = {1,2,3,4,5}, a[5], i; for (i = 0; i < 5; i++) { a[i] = x[i] + x[i+1]; printf("%d", a[i]); } (8)[2005.4.23]以下程序运行后,j的值是 int p[8] = {11,12,13,14,15,16,17,18}; int i = 0, j = 0; while (i++ < 7) if (p[i] % 2) j += p[i]; (9)[2010.3.29]以下程序运行后s的值是 int a[5] = {1,2,3,4,5}, i, s = 0, b[5] = {0,2,1,3}; for (i = 0; i < 5; i++) s = s + a[b[i]]; (10)[2008.4.31]以下程序的运行结果是 int s[12] = {1,2,3,4,4,3,2,1,1,1,2,3}, c[5] = {0}, i; for (i = 0; i < 12; i++) c[s[i]]++; for (i = 1; i < 5; i++) printf("%d", c[i]); (11)[2010.9.13][2011.9.13]以下程序的运行结果是 int a[2] = {0}, i, j; for (i = 0; i < 2; i++) for (j = 0; j < 2; j++) a[j] = a[i] + 1; printf("%d", a[1]); (12)[2009.9.29]程序运行后a数组的内容是
int a[ ] = {2,3,4,5}, i; for (i = 0; i < 4; i++) switch (i % 2) { case 0: switch (a[i] % 2) { case 0: a[i]++; break; case 1: a[i]--; } break; case 1: a[i] = 0; } (13)[2010.9.10]输出一维数组N个元素中的最小值 for (i = 0, k = 0; i < N; i++) if (x[i] < x[k]) k = ; printf("%d", x[k]); (14)[2007.4.14]求数组x中各相邻两个元素的和,依次存放到a数组中,并输出。 int x[10], a[9], i; for (i = 0; i < 10; i++) scanf("%d", &x[i]); for (i = 1; i < 10; i++) a[i-1] = x[i] + ; for (i = 0; i < 9; i++) printf("%d,", a[i]); (15)填空:输出数组中低于平均分的学生的成绩。 int a[10], i; double s = 0; for (i = 0; i < 10; i++) scanf("%d", &a[i]); for (i = 0; i < 10; i++) s += a[i] / 10.0; for (i = 0; i < 10; i++) if ( ) printf("%d,", a[i]); (16)[2006.4.16][2011.9.26]以下数组定义错误的是 A)int x[ ][3] = {0}; B)int x[2][3] = {{1,2},{3,4},{5,6}}; C)int x[ ][3] = {{1,2,3},{4,5,6}}; D)int x[2][3] = {1,2,3,4,5,6}; (17)以下数组定义中正确的是 A)int n = 5, x[ ][n] = {0}; B)int x[3][ ] = {{1},{2},{3}}; C)int x[ ][3] = {{1,2,3},4,{5,6}}; D)int x[ ][3] = {{1,2,3},{4,5},6}; (18)[2008.4.24]以下数组定义中错误的是 A)int x[ ][3] = {{0},{1},{1,2,3}}; B)int x[4][3] = {{1,2,3},1,2,3,1,2,3,1}; C)int x[4][ ] = {{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[ ][3] = {1,2,3,4}; (19)[2007.4.13]以下数组元素a[1][2]的值为 int a[ ][3] = {{0},{1},{2}}; (20)[2007.9.31]若有定义语句:int a[3][6]; 按在内存中的存放顺序,a数组的第10个元素是 Page 10 辽宁科技大学 黄建 公共信箱: v.c.6@163.com 密码: 123.456
A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4] (21)[2008.4.26]设有:int a[2][3]; double i = 1; 则以下选项对a数组元素正确引用的是 A)a[2][!1] B)a[i][i] C)a[1.2][2.1] D)a[1>2][!1] (22)[2004.9.27]以下能正确定义二维数组的是 A)int a[ ][3]; B)int a[2][3] = {{1},{2},{3,4}}; C)int a[ ][3] = { }; D)int a[ ][3] = {2*3}; (23)[2006.4.8]以下程序运行后,s的值是 int a[3][3] = {{1,2,9},{3,4,8},{5,6,7}}, i, s = 0; for (i = 0; i < 3; i++) s += a[i][i] + a[i][3-i-1]; (24)[2010.3.11]以下程序的运行结果是 int a[3][3] = {1,2,3,4,5,6,7,8,9}, b[3], i; for (i = 0; i < 3; i++) printf("%d", b[i] = a[i][2] + a[2][i]); (25)[2011.9.28]以下程序的运行结果是 #define N 4 int y[N], i, x[N][N] = {{1,2,3,4},{5,6,7,8}, {9,10,11,12},{13,14,15,16}}; for (i = 0; i < N; i++) y[i] = x[i][i] - x[i][N-1-i]; for (i = 0; i < N; i++) printf("%d", y[i]); (26)[2010.3.9]以下程序的运行结果是 int i, j, a[ ][3] = {1,2,3,4,5,6,7,8,9}; for (i = 0; i < 3; i++) for (j = i; j < 3; j++) printf("%d", a[i][j]); (27)[2006.4.34]以下程序的运行结果是 int i, t[ ][3] = {9,8,7,6,5,4,3,2,1}; for (i = 0; i < 3; i++) printf("%d", t[2-i][i]); (28)[2010.3.30]以下程序运行后,t的值是 int a[3][3] = {0,1,2,0,1,2,0,1,2}, t = 1; for (i = 0; i < 3; i++) for (j = 1; j <= i; j++) t *= a[i][a[j][i]]; (29)[2008.9.36]以下程序运行后,m的值是 int a[4][4] = {{1,2,3,4},{11,12,13,14}, {21,22,23,24},{31,32,33,34}}; int i, m = a[0][0]; for (i = 1; i < 4; i++) if (a[i][i] > m) m = a[i][i]; (30)[2008.9.35]以下程序的运行结果是 int y[4], i, x[ ][4] = {{1,2,3},{4},{5,6,7,8},{9,10}}; for (i = 0; i < 4; i++) { y[i] = x[i][i]; printf("%d", y[i]); } (31)[2008.9.12]以下程序的运行结果是 int a[4][4], n = 0, i, j; for (j = 0; j < 4; j++) for (i = 3; i >= j; i--) { n++; a[i][j] = n; } for (i = 0; i < 4; i++) { for (j = 0; j <= i; j++) printf("%2d", a[i][j]); printf("\n"); } (32)[2007.4.35]以下程序的运行结果是 int a[4][4] = {{1,4,3,2},{8,6,5,7}, {3,7,2,5}, {4,8,6,1}}, i, k, t; for (i = 0; i < 3; i++) for (k = i+i; k < 4; k++) if (a[i][i] < a[k][k]) { t = a[i][i]; a[i][i] = a[k][k]; a[k][k] = t; } for (i = 0; i < 4; i++) printf("%d", a[0][i]); (33)[2010.9.12]输出N行M列二维数组中的最大值 int i, j, r = 0, c = 0; for (i = 0; i < N; i++) for (j = 0; j < M; j++) if (a[i][j] > a[r][c]) { r = i; c = j; } printf("%d", ); (34)[2004.9.10]以下程序运行后,s的值是 int a[][4]={{1,2,3,4},{2,3,1,0},{5,7,4,2},{3,9,1,7}}; int i = 0, j = 0, s = 0; while (i++ < 4) { if (i==2 || i==4) continue; j = 0; do { s += a[i][j]; j++; } while (j<4); }