首页 金陵科技学院c语言

金陵科技学院c语言

举报
开通vip

金陵科技学院c语言试卷编号:647 所属语言:C语言 试卷方案:1 试卷总分:9分 共有题型:2种 一、填空共5题(共计5分) 第1题(1.0分)题号:521 结构化程序中,有三种结构:顺序结构,【1】, 循环结构. 答案: =======(答案1)======= 条件选择结构 =========或========= 选择结构 =========或========= 分支结构 =========或========= 选择 =========或========= 分支 第2题(1.0分)题号:...

金陵科技学院c语言
试卷编号:647 所属语言:C语言 试卷 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 :1 试卷总分:9分 共有题型:2种 一、填空共5题(共计5分) 第1题(1.0分)题号:521 结构化程序中,有三种结构:顺序结构,【1】, 循环结构. 答案: =======(答案1)======= 条件选择结构 =========或========= 选择结构 =========或========= 分支结构 =========或========= 选择 =========或========= 分支 第2题(1.0分)题号:522 一个用C语言编写的程序在运行时,如果没有发生任何异常情况,则只有在执行了【1】函数的最后一条语句或该函数中的return语句后,程序才会终止运行. 答案: =======(答案1)======= 主 =========或========= main =========或========= main() 第3题(1.0分)题号:518 C程序中有且仅有一个【1】函数. 答案: =======(答案1)======= 主 =========或========= main =========或========= main() 第4题(1.0分)题号:519 C语言程序由【1】组成. 答案: =======(答案1)======= 函数 第5题(1.0分)题号:165 程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图只有一个起点和【1】个终点. 答案: =======(答案1)======= 1 =========或========= 一 =========或========= 1个 =========或========= 一个 二、单项选择共4题(共计4分) 第1题(1.0分)题号:20 要调用文件处理函数时,在#include 命令行中应包含( ). A:"ctype.h" B:"string.h" C:"stdio.h" D:"math.h" 答案:C 第2题(1.0分)题号:30 在C语言中,错误的语句是( ). A:a=b=c; B:; C:break D:b=3*5,a*=4; 答案:C 第3题(1.0分)题号:206 完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( ). A:连接、编译 B:编译、连接 C:连接、运行 D:运行 答案:B 第4题(1.0分)题号:208 C语言程序从main()函数开始执行,所以这个函数要写在( ). A:程序文件的开始 B:程序文件的最后 C:程序文件的任何位置(除别的函数体内) D:它所调用的函数的前面 答案:C 试卷编号:648 所属语言:C语言 试卷方案:2 试卷总分:38分 共有题型:2种 一、填空共15题(共计15分) 第1题(1.0分)题号:525 C语言中一个单精度浮点型数据占【1】个字节. 答案: =======(答案1)======= 4 =========或========= 四 第2题(1.0分)题号:202 在C语言的源程序中若出现常量"1L",则该常量 的类型是【1】. 答案: =======(答案1)======= 长整型 =========或========= long int 第3题(1.0分)题号:317 在TC中,语句序列int k=-1;printf("%u",k); 的输出结果为【1】. 答案: =======(答案1)======= 65535 第4题(1.0分)题号:200 C语言中为整型数据(int)分配【1】个字节的存储空间. 答案: =======(答案1)======= 2 =========或========= 两 =========或========= 二 第5题(1.0分)题号:316 已知有声明float d=1;double f=1;long g;和语 句printf(" ",g=10+'i'+(int)d*f);, 为了正确地以十进制形式输出printf参数表中 第二个参数(表达式)的值,则在第一个参数 中的下划线位置处应填写的格式转换说明符是 【1】. 答案: =======(答案1)======= 第6题(1.0分)题号:203 在C语言中,字符型数据在内存中以【1】码形式存放. 答案: =======(答案1)======= ASCII =========或========= 美国 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 信息交换 第7题(1.0分)题号:264 只有在程序运行时才为【1】存储类型和register 存储类型变量分配内存. 答案: =======(答案1)======= auto =========或========= 自动 第8题(1.0分)题号:318 现有语句#define a 5+3,则表达式2*a的结果为【1】. 答案: =======(答案1)======= 13 第9题(1.0分)题号:248 C语言中,逻辑值"真"用【1】表示. 答案: =======(答案1)======= 1 第10题(1.0分)题号:238 执行"printf("%d,%d",i,j,k,m);"后将在 屏幕上输出【1】个整数. 答案: =======(答案1)======= 2 =========或========= 二 =========或========= 两 第11题(1.0分)题号:201 在Turbo C2.0系统中,若将实型常数1.5存储 在内存中,它占用【1】个字节. 答案: =======(答案1)======= 8 =========或========= 第12题(1.0分)题号:523 整型变量x的值为23,语句"printf (″%o\\n″,x);"的输出结果为【1】. 答案: =======(答案1)======= 27\n 第13题(1.0分)题号:315 从变量的作用域角度分有全局变量和【1】. 答案: =======(答案1)======= 局部变量 =========或========= 局部 第14题(1.0分)题号:176 已知字母a的ASCII码为十进制数97,且设ch为字 符型变量,则表达式ch='a'+'8'-'3'的值为【1】. 答案: =======(答案1)======= 'f' =========或========= 102 第15题(1.0分)题号:533 变量从存储的时间来分可分为【1】和动态变量. 答案: =======(答案1)======= 静态变量 =========或========= 静态 二、单项选择共23题(共计23分) 第1题(1.0分)题号:590 若有宏定义"#define p(x,y,z) x=y*z;",则宏替换"p(a,x+5,y-3.1);"应为语句( )。A:a=x+5*y-3.1; B:a=(x+5)*(y-3.1); C:a=x+5*y-3.1 D:a=(x+5)*(y-3.1) 答案:A 第2题(1.0分)题号:216 下列程序的输出是( ). #include main() { printf("%d",NULL); } A:0 B:变量无定义 C:-1 D:1 答案:A 第3题(1.0分)题号:215 在main函数体内部和外部均允许出现的实体是( ). A:预处理命令 B:语句 C:另一函数的定义 D:函数形式参数声明 答案:A 第4题(1.0分)题号:222 下面正确的字符常量是 ( ). A:"c" B:'\\'' C:'W' D:'ab' 答案:C 第5题(1.0分)题号:39 若变量都已正确说明,则以下程序段( ). a=2;b=3; printf(a>b?"***a=%d":"###b=%d",a,b); A:没有正确的输出格式控制 B:输出为:***a=2 C:输出为:###b=2 D:输出为: ***a=2###b=3 答案:C 第6题(1.0分)题号:71 以下所列的C语言常量中,错误的是( ). A:0Xff B:1.2e0.5 C:2L D:'\72' 答案:B 第7题(1.0分)题号:211 已知宏定义 #define N 3 #define Y(n) ((N+1)*n) 执行语句z=2*(N+Y(5+1));变量z的值为( ). A:42 B:48 C:54 D:出错 答案:B 第8题(1.0分)题号:218 下列选项中,合法的C语言 关键字是( ). A:VAR B:cher C:integer D:default 答案:D 第9题(1.0分)题号:226 若x,y 均定义为 int 型,z 为 double 型 ,以下不合法的 scanf 函数调用语句是( )。A:scanf("%d%d,%lf",&x,&y,&z); B:scanf("%x,%d,%lf",&x,&y,&z); C:scanf("%d,%x,%lf",&x,&y,&z); D:scanf("%d,%d,%x",&x,&y,&z); 答案:D 第10题(1.0分)题号:152 正确的自定义标识符是( ). B:a*b C:iF D:8pq 答案:C 第11题(1.0分)题号:228 在C程序中,1如果用来表示逻辑值时, 应代表( ). A:真 B:假 C:整数1 D:长整型数1 答案:A 第12题(1.0分)题号:586 以下所列字符常量中,不合法的是( ). A:'\0xa2' B:'\65' C:'$' D:'\x2a' 答案:A 第13题(1.0分)题号:221 下列格式符中,可以用于以8进制形式输出整数的是( ). A:%d B:%8d C:%o D:%1d 答案:C 第14题(1.0分)题号:165 以下不正确的C语言标识符是( ). A:2y B:a_1_2 C:ablexe 答案:A 第15题(1.0分)题号:193 以下答案中不是C语言最基本数据类型的是( ). A:逻辑型 B:整型 C:字符型 D:实型 答案:A 第16题(1.0分)题号:227 以下四个字符序列中,能用作用户自定义的标识符是( ). A:Putchar B:-double C:A123- D:int 答案:A 第17题(1.0分)题号:234 以下叙述中正确的是( ). A:输入项可以是一个 实型常量,如: scanf("%f",3.5); B:只有格式控制,没有 输入项,也能正确输 入数据到内存,例如: scanf("a=%d ,b=%d"); C:当输入一个实型数据 时,格式控制部分可以 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 小数点后的位数, 例如: scanf("%4.2f",&d); D:当输入数据时,必须指 明变量地址,例如: scanf("%f",&f); 答案:D 第18题(1.0分)题号:220 常数的 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写格式决定了常数的类型 和值,0x1011是( ). A:8进制整型 常量 B:字符常量 C:16进制整型常 数 D:2进制整型常数 答案:C 第19题(1.0分)题号:78 使用语句scanf("x=%f,y=%f",&x,&y);输入变量x,y的值([]代表空格),正确的输入是( ). A:1.25,2.4 B:1.25[]2.4 C:x=1.25,y=2.4 D:x=1.25[]y=2.4 答案:C 第20题(1.0分)题号:77 若变量已正确说明为float类型,要通过语句scanf("%f %f %f ",&a,&b,&c);给a赋于10.0, b赋予22.0,c赋予33.0,不正确的输入形式是( ). A:10<回车>22<回车>33<回车> B:10.0,22.0,33.0<回车> C:10.0<回车>22.0 33.0<回车> D:10 22<回车>33<回车> 答案:B 第21题(1.0分)题号:587 ( )是C语言提供的合法数据类型 关键字. A:Float B:signed C:integer D:Char 答案:B 第22题(1.0分)题号:232 设有说明语句 char a='\101'; , 则变量a( ). A:包含4个字符 B:包含2个字符 C:包含3个字符 D:包含1个字符 答案:D 第23题(1.0分)题号:217 下述程序段的输出结果是( ). int x=10; int y=x++; printf("%d,%d",(x++,y),y++); A:11,10 B:11,11 C:10,10 D:10,11 答案:A 试卷编号:649 所属语言:C语言 试卷方案:3 试卷总分:58分 共有题型:2种 一、填空共32题(共计32分) 第1题(1.0分)题号:978 若x为int型,请以最简单的形式写出与逻辑表达 式!x等价的C语言关系表达式【1】. 答案: =======(答案1)======= x==0 第2题(1.0分)题号:989 若有定义:int b=7;float a=2.5,c=4.7; 则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为【1】. 答案: =======(答案1)======= 5.5 第3题(1.0分)题号:334 计算a、b中最小值的条件表达式为【1】. 答案: =======(答案1)======= ab?a++:++b的值为【1】. 答案: =======(答案1)======= 4 第13题(1.0分)题号:332 以下十个运算符+ ! << != , ?: && = || %中优先级别最高和最低的分别是【1】和【2】. 答案: =======(答案1)======= ! =======(答案2)======= , 第14题(1.0分)题号:335 已知:a=1,b=2,表达式a>b?a:b+1的值是【1】. 答案: =======(答案1)======= 3 第15题(1.0分)题号:329 若a=1,b=4,c=3,则表达式a&&b+c||b-c的值 为【1】. 答案: =======(答案1)======= 1 第16题(1.0分)题号:347 若x为int型变量,执行以下语句后x值是【1】. x=3; x+=x-=x+x; 答案: =======(答案1)======= -6 第17题(1.0分)题号:325 关系、算术、赋值三种运算符的运算优先顺序 由高到低为【1】、【2】、【3】. 答案: =======(答案1)======= 算术 =======(答案2)======= 关系 赋值 第18题(1.0分)题号:1001 表达式 a=3,a++,--a的值为【1】. 答案: =======(答案1)======= 3 第19题(1.0分)题号:326 执行语句"a=5+(c=6);"后,变量a、c的值依次为【1】、【2】。答案: =======(答案1)======= 11 =========或========= a=11 =======(答案2)======= 6 =========或========= c=6 第20题(1.0分)题号:982 已知char w; int x; float y; double z; 则表达式:w*x+z-y所求得的数据类型为【1】. 答案: =======(答案1)======= double =========或========= 双精度浮点型 =========或========= double型 =========或========= double类型 双精度型 =========或========= 双精度类型 第21题(1.0分)题号:336 表达式3>2>1的值是【1】. 答案: =======(答案1)======= 第22题(1.0分)题号:999 s=3,s++,s; 这个语句执行完后,s的值为【1】. 答案: =======(答案1)======= 4 第23题(1.0分)题号:344 执行语句序列"char x=3,y=6,z;z=x^y<<2;" 后,z的二进制值为【1】. 答案: =======(答案1)======= 00011011 =========或========= 11011 第24题(1.0分)题号:349 设x,y,z均为int 型变量,请写出描述"x或y中有一个小于z"的表达式【1】. 答案: =======(答案1)======= xx||z>y =========或========= z>y||z>x =========或========= (xx)||(z>y) =========或========= (z>y)||(z>x) 第25题(1.0分)题号:351 表达式 !10! = 1的值是【1】. 答案: =======(答案1)======= 1 第26题(1.0分)题号:328 若有定义:int a=2,b=3; float x=3.5,y=2.5; 则表达式(float)(a+b)/2+(int)x%(int)y的 值为【1】. 答案: =======(答案1)======= 3.5 第27题(1.0分)题号:991 C语言中的表达式只能由三种字符组成,他们是字母、数字和【1】. 答案: =======(答案1)======= =========或========= _ 第28题(1.0分)题号:980 设有程序段 int x= 4,y=4; t=++x||++y; 执行语句后y的值为【1】. 答案: =======(答案1)======= 4 第29题(1.0分)题号:996 条件"2020)&&(x<30))||(x<-100) =========或========= x>20&&x<30||x<-100 =========或========= (x>20)&&(x<30)||(x<-100) 第30题(1.0分)题号:981 如果a=1,b=2,c=3,d=4,则表达式 a>b?c:d的值为【1】. 答案: =======(答案1)======= 4 第31题(1.0分)题号:319 判断变量a、b的值均不为0的C表达式为【1】. 答案: =======(答案1)======= a*b!=0 =========或========= a*b =========或========= a!=0&&b!=0 第32题(1.0分)题号:1008 设有下面的程序段 int x= 0,y=0,t; t=x&&++y; 执行语句后y的值为【1】. 答案: =======(答案1)======= 二、单项选择共26题(共计26分) 第1题(1.0分)题号:602 下面程序的输出是( ). main() { int x=10,y=3; printf("%d\n",x/y);} A:0 B:1 C:3 D:不确定的值 答案:C 第2题(1.0分)题号:375 下列关于C语言的叙述,错误的是( ). A:大写字母和小写字母的意义相同 B:不同类型的变量可以在一个表达式中 C:在赋值表达式中等号(=)左边的变量和右边的值可以是不同的类型D:同一个运算符号在不同的场合可以有不同的含义 答案:A 第3题(1.0分)题号:246 若x、i、j和k都是int型变量,由x=(i=4,j=16,k=32)得x的值( ). A:4 B:16 C:32 D:52 答案:C 第4题(1.0分)题号:596 设有说明"int x=3,y=4;",则"++x>y--?x:y"的值为( ). A:4 B:1 C:2 D:3 答案:D 第5题(1.0分)题号:609 执行语句"k=5|3;"后,变量k的当前 值是( ). A:1 B:8 C:7 D:2 答案:C 第6题(1.0分)题号:257 设 int x=1, y=1; 表达式(!x||y- -)的值是( ). A:0 B:1 C:2 D:-1 答案:B 第7题(1.0分)题号:326 已知int i=10;执行表达式"i||(i=12)"后i的值是( ). A:10 B:1 C:12 D:0 答案:A 第8题(1.0分)题号:240 设有说明"int x=1,y=1,z=1,c;", 执行语句"c=--x&&--y||--z;"后, x、y、z的值分别为( ). A:0、1、1 B:0、0、1 C:1、0、1 D:0、1、0 答案:D 第9题(1.0分)题号:617 已知int a =15; 执行语句a<<2;以后, 变量a的值是( ). A:20 B:40 C:60 D:80 答案:C 第10题(1.0分)题号:593 以下程序的输出结果是( ). main() { int x=0.5; char z='a'; printf("%d\n", (x&1)&&(z<'z') ); } A:0 B:1 C:2 D:3 答案:A 第11题(1.0分)题号:615 逗号表达式 " (a=3*5,a*4),a+15 "的值是( ). A:15 B:60 C:30 D:不确定 答案:C 第12题(1.0分)题号:235 若a为int类型,且其值为3,则执行 完表达式a+=a-=a*a后,a的值是( ). A:-3 B:9 C:-12 D:6 答案:C 第13题(1.0分)题号:255 设x、y、t均为int型变量,则执 行语句:x=y=3;t=++x||++y;后, y的值为( ). A:不定值 B:4 C:3 D:1 答案:C 第14题(1.0分)题号:620 C语句"x/=y-2;"还可以写作( ). A:x=x/y-2; B:x=2-y/x; C:x=x/(y-2); D:x=y-2/x; 答案:C 第15题(1.0分)题号:247 将字符g赋给字符变量c,正确的表 达式是( ). A:c=\147 B:c="\147" C:c='\147' D:c='0147' 答案:C 第16题(1.0分)题号:237 若w=1,x=2,y=3,z=4,条件表达式 w=2) 且 (x<=5) B:(x>=2) AND (x<=5) C:(x>=2)&&(x<=5) D:(2≤x) AND (x≤5) 答案:C 第19题(1.0分)题号:605 若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c结果值的类型为( ). A:float B:int C:char D:double 答案:D 第20题(1.0分)题号:600 已知有声明int x=2;,以下表达式中值 不等于8的是( ). A:x+=2,x*2 B:x+=x*=x C:(x+7)/2*((x+1)%2+1) D:x*7.2/x+1 答案:D 第21题(1.0分)题号:595 设ch是char型变量,其值为A,且有下 面的表达式: ch=(ch>='A'&&ch<='Z')?(ch+32):ch 上面表达式的值是( ). A:A B:a C:Z D:z 答案:B 第22题(1.0分)题号:613 设int a=3,b=4;执行 printf("%d,%d",(a,b),(b,a));后 的输出结果是( ). A:3,4 B:4,3 C:3,3 D:4,4 答案:B 第23题(1.0分)题号:608 在C语言中,要求运算数必须是整 型的运算符是( ). A:% B:/ C:+ D:! 答案:A 第24题(1.0分)题号:621 设有如下的变量定义: int i =10 ,a,b ; double x=4.12,y=8.2; 则以下符合C语言语法的表达式是( ). A:a+=a-=(b=4)*(a=3) B:x%(-3.0); C:a=a*3=2 D:y=float(i) 答案:A 第25题(1.0分)题号:241 设有定义"float y=3.45678;int x; ",则以下表达式中能实现将y中数值保 留小数点后2位,第3位四舍五入的表达式是( ). A:y=(y*100+0.5)/100.0 B:y=(y/100+0.5)*100.0 C:y=y*100+0.5/100.0 D:x=y*100+0.5,y=x/100.0 答案:D 第26题(1.0分)题号:618 表达式sizeof(double)的值是( ). A:16 B:2 C:4 D:8 答案:D 试卷编号:650 所属语言:C语言 试卷方案:4 试卷总分:37分 共有题型:2种 一、填空共19题(共计19分) 第1题(1.0分)题号:366 以下程序运行后的输出结果是【1】 . main() { int a=1, b=3; if (a+b) printf("yes\n"); else printf("no\n"); } 答案: =======(答案1)======= yes 第2题(1.0分)题号:370 以下程序输出的结果是【1】 . main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\n",d); } 答案: =======(答案1)======= 第3题(1.0分)题号:356 下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空. main() {int i, x, y=1; scanf("%d", &x); for(i=2; i<=x/2; i++) if【1】{ y=0; break;} printf("%d\n", y); } 答案: =======(答案1)======= (x%i==0) =========或========= ((x%i==0)) =========或========= !(x%i) =========或========= !(x%i!=0) 第4题(1.0分)题号:368 以下程序运行后的输出结果是【1】 . main() { int x=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf("%d,%d \n",x,y); } 答案: =======(答案1)======= 20,0 第5题(1.0分)题号:355 在下述程序中,判断i>j共执行的次数是【1】main() {int i=0, j=10, k=2, s=0; for (;;) {i+=k; if(i>j) {printf("%d",s); break; }s+=i; } } 答案: =======(答案1)======= 6 =========或========= 6次 =========或========= 六 =========或========= 六次 第6题(1.0分)题号:369 若从键盘输入58,则以下程序输出的结果是【1】。main() { int a; scanf("%d",&a); if(a>50) printf("%d",a); if(a>40) printf("%d",a); if(a>30) printf("%d",a); } 答案: =======(答案1)======= 585858 第7题(1.0分)题号:371 有如下程序 main() { float x=2.0,y; if(x<0.0)y=0.0; else if(x>10.0)y=1.0/x; else y=1.0; printf("%f\n",y);} 该程序的输出结果是【1】. 答案: =======(答案1)======= 1.000000 第8题(1.0分)题号:360 假定所有变量均已正确说明,下列程序段运行后x的值是【1】a=b=c=0;x=35; if(!a)x--; else if(b); if(c)x=3; else x=4; 答案: =======(答案1)======= 4 =========或========= 四 第9题(1.0分)题号:357 有以下程序 main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf("%d\n",d); else if((c-1>=d)==1) printf("%d\n",d+1); else printf("%d\n",d+2); } 执行后输出结果是【1】。 答案: =======(答案1)======= 3 第10题(1.0分)题号:358 阅读以下程序: main() { int x; scanf("%d",&x); if(x--<5) printf("%d"'x); else printf("%d",x++); } 程序运行后,如果从键盘上输人5,则输出结果是【1】答案: =======(答案1)======= 4 第11题(1.0分)题号:352 执行语句"n=1; if(n=5) n++;"后,变量n值为【1】. 答案: =======(答案1)======= 6 =========或========= 六 第12题(1.0分)题号:363 以下程序运行后的输出结果是【1】 main() { int a,b,c a=10;b=20;c=(a%b<1)||(a/b>1); printf("%d %d %d\n",a,b,c); } 答案: =======(答案1)======= 10 20 0 第13题(1.0分)题号:362 以下程序运行后的输出结果是【1】 . main() { int a=1,b=2,c=3; if(c=a) printf("%d\n",c); else printf("%d\n",b); } 答案: =======(答案1)======= 1 第14题(1.0分)题号:367 若有以下程序 main() { int p,a=5; if(p=a!=0) printf("%d\n",p); else printf("%d\n",p+2); } 执行后输出结果是【1】。 答案: =======(答案1)======= 1 第15题(1.0分)题号:359 以下程序输出结果是【1】 main() { int m=5; if(m++>5) printf("%d\n",m); esle printf("%d\n",- -m); } 答案: =======(答案1)======= 5 第16题(1.0分)题号:365 以下程序运行后的输出结果是【1】 . main() { int p=30; printf ("%d\n",(p/3>0 ? p/10 : p%3)); } 答案: =======(答案1)======= 3 第17题(1.0分)题号:1029 有如下程序 main() { float x=2.0,y; if(x<0.0)y=0.0; else if(x>10.0)y=1.0/x; else y=1.0; printf("%.2f\n",y);} 该程序的输出结果是【1】. 答案: =======(答案1)======= 1.00 第18题(1.0分)题号:364 有以下程序 main( ) { int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf("%d\n",x); } 执行后输出结果是【1】 答案: =======(答案1)======= -4 第19题(1.0分)题号:354 若执行以下程序时从键盘上输入9,则输出结果是【1】 main() { int n; scanf("%d",&n); if(n++<10)printf("%d",n); else printf("%d",n--); } 答案: =======(答案1)======= 10 二、单项选择共18题(共计18分) 第1题(1.0分)题号:378 下列________结构不是C程序的结构? A:顺序结构 B:循环结构 C:程序结构 D:选择结构 答案:C 第2题(1.0分)题号:385 以下程序段中,与语句: k=a>b?(b>c?1:0):0;功能相同的是() A:if((a>b)&&(b>c)) k=1; else k=0; B:if((a>b)||(b>c)) k=1; else k=0; C:if(a<=b) k=0; else if(b<=c) k=1; D:if(a>b) k=1; else if(b>c) k=1; else k=0; 答案:A 第3题(1.0分)题号:397 若k是int型变量,且有下面的程序片段: k=-3; if(k<=0) printf("####") else printf("&&&&"); 上面程序片段的输出结果是() A:#### B:&&&& C:####&&&& D:有语法错误,无输出结果 答案:D 第4题(1.0分)题号:623 C语言的if语句中用作判断的表达式为________. A:关系表达式 B:逻辑表达式 C:算术表达式 D:任意表达式 答案:D 第5题(1.0分)题号:638 下列条件语句中,功能与其他语句不同的是 () A:if(a) printf("%d\n",x); else printf("%d\n",y); B:if(a==0) printf("%d\n",y); else printf("%d\n",x); C:if (a!=0) printf("%d\n",x); else printf("%d\n",y); D:if(a==0) printf("%d\n",x); else printf("%d\n",y); 答案:D 第6题(1.0分)题号:381 若执行下面的程序时,从键盘上输入3和4, 则输出结果是________. main() {int a,b,s; scanf("%d%d",&a,&b); s=a; if(a>b) s=b;s=s*s; printf("%d\n",s); } A:9 B:16 C:3 D:4 答案:A 第7题(1.0分)题号:639 有以下程序 #include main() { int a,b,c=246; a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } 输出结果是 () A:2,1 B:3,2 C:4,3 D:2,-1 答案:A 第8题(1.0分)题号:392 有以下程序 main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); } 程序运行后的输出结果是 () A:1 2 3 B:2 3 4 C:2 2 3 D:2 3 3 答案:D 第9题(1.0分)题号:628 注意:此题已被删除! 第10题(1.0分)题号:383 下列程序段中,能将变量x、y中值较大的数 保存到变量a,值较小的数保存到变量b的 程序段是______. A:if(x>y) a=x;b=y; else a=y;b=x; B:if(x>y) {a=x;b=y;} else a=y;b=x; C:if(x>y) {a=x;b=y;} else {a=y;b=x;} D:if(x>y) {a=x;b=y;} else (xb) c=a,a=b,b=c; B:if(a>b) {c=a,a=b,b=c;} C:if(a>b) c=a;a=b;b=c; D:if(a>b) {c=a;a=b;b=c;} 答案:C 第12题(1.0分)题号:635 有以下程序 main() { int a,b,d=25; a=d/10%9; b=a&&(-1); printf("%d,%d\n",a,b); } 程序运行后的输出结果是() A:6,1 B:2,1 C:6,0 D:2,0 答案:B 第13题(1.0分)题号:393 有以下程序 main() { int a=3,b=4,c=5,d=2; if(a>b) if(b>c) printf("%d",d++ +1); else printf("%d",++d +1); printf("%d\n",d); } 程序运行后的输出结果是 () A:2 B:3 C:43 D:44 答案:A 第14题(1.0分)题号:386 有如下程序 main() { int a=2,b=-1,c=2; if(a5) printf("%d\n",a); else printf("%d\n",--a); } A:6 B:7 C:5 D:4 答案:C 第16题(1.0分)题号:384 与语句 if(a>b)if(c>d)x = 1;else x = 2; 等价的是 () A:if(a>b) {if(c>d) x = 1; else x = 2;} B:if(a>b) {if(c>d) x = 1;} else x = 2; C:if((a>b) && (c>d)) x = 1; else x = 2; D:if(a< =b) x = 2; else if (c>d) x = 1; 答案:A 第17题(1.0分)题号:380 下列程序段执行后输出结果为( ) int i=-1; if(i<=0)printf("****\n"); else printf("%%%%\n"); A:****C B:%%%% C:%%%%C D:**** 答案:D 第18题(1.0分)题号:396 以下程序的输出结果是 () main( ) { int a=-1,b=4,k; k=(+ +a〈0)&&!(b - -〈=0); printf("%d%d%d\n",k,a,b); } A:104 B:103 C:003 D:004 答案:D 试卷编号:651 所属语言:C语言 试卷方案:5 试卷总分:55分 共有题型:2种 一、填空共18题(共计18分)第1题(1.0分)题号:1037 有以下程序 #include main() {int c=0,k; for(k=1;k<3;k++) switch(k) {default:c+=k; case 2:c++;break; case 4:c+=2;break; } printf("%d\n",c); } 程序运行后的输出结果是【1】. 答案: =======(答案1)======= 3 第2题(1.0分)题号:1041 下面程序段的执行结果是【1】. int x=3; do {printf("%d",x--); }while (!x); 答案: =======(答案1)======= 3 第3题(1.0分)题号:374 break语句除了可以用于循环语句的循环体中,还可以用于【1】 _语句中. 答案: =======(答案1)======= switch =========或========= switch语句 =========或========= switch-case语句 =========或========= switch-case =========或========= 多分支选择 第4题(1.0分)题号:378 设int i = 5;则循环语句while (i > = 1) i - -;执行后,i的值为【1】. 答案: =======(答案1)======= 第5题(1.0分)题号:377 执行语句段 for(s=0,i=1;i<11;i++) {if(i==6) continue; s+=i; } 后,s值为【1】. 答案: =======(答案1)======= 49 第6题(1.0分)题号:1030 【1】语句,只能用在循环中,以中断某次循环,继续下一次循环. 答案: =======(答案1)======= continue =========或========= continue语句 第7题(1.0分)题号:373 只能在循环体中使用的语句是【1】. 答案: =======(答案1)======= continue语句 =========或========= continue 第8题(1.0分)题号:384 有以下程序 #include main() {int n=2,k=0; while (k++&&n++>2); printf("%d%d\n",k,n); } 程序运行后的输出结果是【1】. 答案: =======(答案1)======= 12 第9题(1.0分)题号:1034 执行语句"s=0;n=5; while(--n) s+=n;"后,变量s 的值为【1】. 答案: =======(答案1)======= 10 第10题(1.0分)题号:380 有如下程序 main() { int a=2,b=-1,c=2; if(a6){n--;printf("%d",n);} } 该程序的输出结果是【1】. 答案: =======(答案1)======= 876 第15题(1.0分)题号:388 下面程序的运行结果是【1】. #include main() { int a=1,b=10; do { b-=a;a++; }while(b--<0); printf("a=%d,b=%d″,a,b); } 答案: =======(答案1)======= a=2,b=8 第16题(1.0分)题号:382 有如下程序 main() {intx=l,a=0,b=0; switch(x){ case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d\n",a,b); ) 该程序的输出结果是【1】. 答案: =======(答案1)======= a=2,b=1 第17题(1.0分)题号:1047 有如下程序 main() { int x=23; do { printf("%d″,x--); } while(!x); } 该程序的执行结果是【1】. 答案: =======(答案1)======= 23 第18题(1.0分)题号:381 若int k=8;则执行下列程序后,变量k的正确结果是【1】. main() { int k=8; switch(k) { case 9:k+=1; case 10:k+=1; case 11:k+=1;break; default:k+=1; } printf(″%d\n″,k); } 答案: =======(答案1)======= 9 二、单项选择共37题(共计37分) 第1题(1.0分)题号:424 有以下程序段 int n=0,p; do {scanf("%d",&p);n++;} while(p!=12345&&n<3); 此处do-while循环的结束条件是( ). A:p的值不等 于12345并 且n的值小 于3 B:p的值等 于12345并 且n的值大 于等于3 C:p的值不等 于12345或 者n的值小 于3 D:p的值等于 12345或者 n的值大于 等于3 答案:D 第2题(1.0分)题号:1613 如果程序中想跳出循环体继续往下执行, 则执行( )语句. A:break B:continue C:switch D:return 答案:A 第3题(1.0分)题号:1644 下面有关for循环的正确描述是( ) A:for循环只能 用于循环次 数已经确定 的情况 B:for循环是先 执行循环体 语句,后判 断表达式 C:在for循环中, 不能用break 语句跳出循环 体 D:for循环的循 环体语句中, 可以包含多 条语句,但必 须用花括号 括起来 答案:D 第4题(1.0分)题号:421 有以下程序 main() { int k=4,n=0; for( ; n;) { n++; if(n%3!=0) continue; k--; } printf("%d,%d\n",k,n); } 程序运行后的输出结果是( ). A:1,1 B:2,2 C:3,3 D:4,0 答案:D 第5题(1.0分)题号:422 读下列程序: main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; } printf("a=%d, b=%d\n",a,b); } 输出结果是( ). A:a=2,b=1 B:a=1,b=1 C:a=1,b=0 D:a=2,b=2 答案:A 第6题(1.0分)题号:1621 下述循环的循环次数是( ) int k=2; while(k=0) printf("%d",k); k--;printf("\n"); A:0次 B:1次 C:2次 D:无限次 答案:A 第7题(1.0分)题号:1624 执行下列程序段后,变量i的值是( ) int i=10; switch(i) { case 9:i+=1; case 10:i+=1; case 11:i+=1; default:i+=1; } A:13 B:12 C:11 D:14 答案:A 第8题(1.0分)题号:1627 以下关于语句的说法中正确的是: A:do-while 语 句的循环体 至少会被执 行1次 B:while语句的 循环体至少会被执行1次 C:for语句的 循环体至少会被执行1次 D:在C语言中 只能用do, do-while,for 语句实现循环 答案:A 第9题(1.0分)题号:1617 设I和k都是int类型,则for循环语句( ). for(I=0,k=-1;k=1;I++,k++) printf("****\n"); A:判断循环结 束的条件不 合法 B:是无限循环 C:循环体一次 也不执行 D:循环体只执 行一次 答案:B 第10题(1.0分)题号:1643 C语言中用于结构化程序设计的3种基本结构是( ) A:顺序结构、选择结构、循环结构 B:if,switch,break C:for,while,do-while D:if,for,continue 答案:A 第11题(1.0分)题号:425 有以下程序 main() {int a=15,b=21,m=0; switch(a%3) {case 0:m++;break; case 1:m++; switch(b%2) {default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是( ). A:1 B:2 C:3 D:4 答案:A 第12题(1.0分)题号:404 执行语句: for (i=1;i++<4;);后, 变量i的值是( ). A:3 B:4 C:5 D:不定 答案:C 第13题(1.0分)题号:1631 有如下程序 main() {int i,sum; for(i=l;i<=3;sum++)sum+=i; printf("%d\n",sum); } 该程序的执行结果是( ) A:6 B:3 C:死循环 D:0 答案:C 第14题(1.0分)题号:1616 要求以下程序的功能是计算: s= 1+1/2+1/3+……+1/10 main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误, 导致错误结果的程序行是( ) A:s=1.0; B:for(n=10; n>1;n--) C:s=s+1/n; D:printf( "%6.4f\n", s); 答案:C 第15题(1.0分)题号:1620 以下循环体的执行次数是______. main() { int i, j; for(i=0,j=1; ij共执行的次数是( ) main() { int i=0,j=10,k=2,s=0; for(;;) { i+=k; if(i>j) { printf(″%d″,s); break; }s+=i; } } A:4 B:7 C:5 D:6 答案:D 第18题(1.0分)题号:1622 下列循环语句中有语法错误的是( ) A:while(x=y) 5; B:while(0); C:do 2; while(x=0); D:do x++ while(x= =10) 答案:D 第19题(1.0分)题号:1630 已知int t=0; while (t=1) {…} 则以下叙述正确的是( ). A:循环控制表达式的值为0 B:循环控制表达式的值为1 C:循环控制表达式不合法 D:以上说法都不对 答案:B 第20题(1.0分)题号:399 当处理特定问题,循环次数已知时, 通常采用( )解决. A:for循环 B:while循环 C:do循环 D:switch语句 答案:A 第21题(1.0分)题号:427 以下程序段的描述,正确的是( ) x=-1; do {x=x*x;}while(!x); A:是死循环 B:循环执行两次 C:循环执行一次 D:有语法错误 D:14 答案:A 第8题(1.0分)题号:1627 以下关于语句的说法中正确的是: A:do-while 语 句的循环体 至少会被执 行1次 B:while语句的 循环体至少会被执行1次 C:for语句的 循环体至少会被执行1次 D:在C语言中 只能用do, do-while,for 语句实现循环 答案:A 第9题(1.0分)题号:1617 设I和k都是int类型,则for循环语句( ). for(I=0,k=-1;k=1;I++,k++) printf("****\n"); A:判断循环结 束的条件不 合法 B:是无限循环 C:循环体一次 也不执行 D:循环体只执 行一次 答案:B 第10题(1.0分)题号:1643 C语言中用于结构化程序设计的3种基本结构是( ) A:顺序结构、选择结构、循环结构 B:if,switch,break C:for,while,do-while D:if,for,continue 答案:A 第11题(1.0分)题号:425 有以下程序 main() {int a=15,b=21,m=0; switch(a%3) {case 0:m++;break; case 1:m++; switch(b%2) {default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是( ). A:1 B:2 C:3 D:4 答案:A 第12题(1.0分)题号:404 执行语句: for (i=1;i++<4;);后, 变量i的值是( ). A:3 B:4 C:5 D:不定 答案:C 第13题(1.0分)题号:1631 有如下程序 main() {int i,sum; for(i=l;i<=3;sum++)sum+=i; printf("%d\n",sum); } 该程序的执行结果是( ) A:6 B:3 C:死循环 D:0 答案:C 第14题(1.0分)题号:1616 要求以下程序的功能是计算: s= 1+1/2+1/3+……+1/10 main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误, 导致错误结果的程序行是( ) A:s=1.0; B:for(n=10; n>1;n--) C:s=s+1/n; D:printf( "%6.4f\n", s); 答案:C 第15题(1.0分)题号:1620 以下循环体的执行次数是______. main() { int i, j; for(i=0,j=1; ij共执行的次数是( ) main() { int i=0,j=10,k=2,s=0; for(;;) { i+=k; if(i>j) { printf(″%d″,s); break; }s+=i; } } A:4 B:7 C:5 D:6 答案:D 第18题(1.0分)题号:1622 下列循环语句中有语法错误的是( ) A:while(x=y) 5; B:while(0); C:do 2; while(x=0); D:do x++ while(x= =10) 答案:D 第19题(1.0分)题号:1630 已知int t=0; while (t=1) {…} 则以下叙述正确的是( ). A:循环控制表达式的值为0 B:循环控制表达式的值为1 C:循环控制表达式不合法 D:以上说法都不对 答案:B 第20题(1.0分)题号:399 当处理特定问题,循环次数已知时, 通常采用( )解决. A:for循环 B:while循环 C:do循环 D:switch语句 答案:A 第21题(1.0分)题号:427 以下程序段的描述,正确的是( ) x=-1; do {x=x*x;}while(!x); A:是死循环 B:循环执行两次 C:循环执行一次 D:有语法错误 D:14 答案:A 第8题(1.0分)题号:1627 以下关于语句的说法中正确的是: A:do-while 语 句的循环体 至少会被执 行1次 B:while语句的 循环体至少会被执行1次 C:for语句的 循环体至少会被执行1次 D:在C语言中 只能用do, do-while,for 语句实现循环 答案:A 第9题(1.0分)题号:1617 设I和k都是int类型,则for循环语句( ). for(I=0,k=-1;k=1;I++,k++) printf("****\n"); A:判断循环结 束的条件不 合法 B:是无限循环 C:循环体一次 也不执行 D:循环体只执 行一次 答案:B 第10题(1.0分)题号:1643 C语言中用于结构化程序设计的3种基本结构是( ) A:顺序结构、选择结构、循环结构 B:if,switch,break C:for,while,do-while D:if,for,continue 答案:A 第11题(1.0分)题号:425 有以下程序 main() {int a=15,b=21,m=0; switch(a%3) {case 0:m++;break; case 1:m++; switch(b%2) {default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是( ). A:1 B:2 C:3 D:4 答案:A 第12题(1.0分)题号:404 执行语句: for (i=1;i++<4;);后, 变量i的值是( ). A:3 B:4 C:5 D:不定 答案:C 第13题(1.0分)题号:1631 有如下程序 main() {int i,sum; for(i=l;i<=3;sum++)sum+=i; printf("%d\n",sum); } 该程序的执行结果是( ) A:6 B:3 C:死循环 D:0 答案:C 第14题(1.0分)题号:1616 要求以下程序的功能是计算: s= 1+1/2+1/3+……+1/10 main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误, 导致错误结果的程序行是( ) A:s=1.0; B:for(n=10; n>1;n--) C:s=s+1/n; D:printf( "%6.4f\n", s); 答案:C 第15题(1.0分)题号:1620 以下循环体的执行次数是______. main() { int i, j; for(i=0,j=1; ij共执行的次数是( ) main() { int i=0,j=10,k=2,s=0; for(;;) { i+=k; if(i>j) { printf(″%d″,s); break; }s+=i; } } A:4 B:7 C:5 D:6 答案:D 第18题(1.0分)题号:1622 下列循环语句中有语法错误的是( ) A:while(x=y) 5; B:while(0); C:do 2; while(x=0); D:do x++ while(x= =10) 答案:D 第19题(1.0分)题号:1630 已知int t=0; while (t=1) {…} 则以下叙述正确的是( ). A:循环控制表达式的值为0 B:循环控制表达式的值为1 C:循环控制表达式不合法 D:以上说法都不对 答案:B 第20题(1.0分)题号:399 当处理特定问题,循环次数已知时, 通常采用( )解决. A:for循环 B:while循环 C:do循环 D:switch语句 答案:A 第21题(1.0分)题号:427 以下程序段的描述,正确的是( ) x=-1; do {x=x*x;}while(!x); A:是死循环 B:循环执行两次 C:循环执行一次 D:有语法错误 main() { int n=9; while(n>6){n--;printf("%d",n);} } 该程序的输出结果是【1】. 答案: =======(答案1)======= 876 第15题(1.0分)题号:388 下面程序的运行结果是【1】. #include main() { int a=1,b=10; do { b-=a;a++; }while(b--<0); printf("a=%d,b=%d″,a,b); } 答案: =======(答案1)======= a=2,b=8 第16题(1.0分)题号:382 有如下程序 main() {intx=l,a=0,b=0; switch(x){ case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d\n",a,b); ) 该程序的输出结果是【1】. 答案: =======(答案1)======= a=2,b=1 第17题(1.0分)题号:1047 有如下程序 main() { int x=23; do { printf("%d″,x--); } while(!x); } 该程序的执行结果是【1】. 答案: =======(答案1)======= 23 第18题(1.0分)题号:381 若int k=8;则执行下列程序后,变量k的正确结果是【1】. main() { int k=8; switch(k) { case 9:k+=1; case 10:k+=1; case 11:k+=1;break; default:k+=1; } printf(″%d\n″,k); } 答案: =======(答案1)======= 9 二、单项选择共37题(共计37分) 第1题(1.0分)题号:424 有以下程序段 int n=0,p; do {scanf("%d",&p);n++;} while(p!=12345&&n<3); 此处do-while循环的结束条件是( ). A:p的值不等 于12345并 且n的值小 于3 B:p的值等 于12345并 且n的值大 于等于3 C:p的值不等 于12345或 者n的值小 于3 D:p的值等于 12345或者 n的值大于 等于3 答案:D 第2题(1.0分)题号:1613 如果程序中想跳出循环体继续往下执行, 则执行( )语句. A:break B:continue C:switch D:return 答案:A 第3题(1.0分)题号:1644 下面有关for循环的正确描述是( ) A:for循环只能 用于循环次 数已经确定 的情况 B:for循环是先 执行循环体 语句,后判 断表达式 C:在for循环中, 不能用break 语句跳出循环 体 D:for循环的循 环体语句中, 可以包含多 条语句,但必 须用花括号 括起来 答案:D 第4题(1.0分)题号:421 有以下程序 main() { int k=4,n=0; for( ; n;) { n++; if(n%3!=0) continue; k--; } printf("%d,%d\n",k,n); } 程序运行后的输出结果是( ). A:1,1 B:2,2 C:3,3 D:4,0 答案:D 第5题(1.0分)题号:422 读下列程序: main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; } printf("a=%d, b=%d\n",a,b); } 输出结果是( ). A:a=2,b=1 B:a=1,b=1 C:a=1,b=0 D:a=2,b=2 答案:A 第6题(1.0分)题号:1621 下述循环的循环次数是( ) int k=2; while(k=0) printf("%d",k); k--;printf("\n"); A:0次 B:1次 C:2次 D:无限次 答案:A 第7题(1.0分)题号:1624 执行下列程序段后,变量i的值是( ) int i=10; switch(i) { case 9:i+=1; case 10:i+=1; case 11:i+=1; default:i+=1; } A:13 B:12 C:11 D:14 答案:A 第8题(1.0分)题号:1627 以下关于语句的说法中正确的是: A:do-while 语 句的循环体 至少会被执 行1次 B:while语句的 循环体至少会被执行1次 C:for语句的 循环体至少会被执行1次 D:在C语言中 只能用do, do-while,for 语句实现循环 答案:A 第9题(1.0分)题号:1617 设I和k都是int类型,则for循环语句( ). for(I=0,k=-1;k=1;I++,k++) printf("****\n"); A:判断循环结 束的条件不 合法 B:是无限循环 C:循环体一次 也不执行 D:循环体只执 行一次 答案:B 第10题(1.0分)题号:1643 C语言中用于结构化程序设计的3种基本结构是( ) A:顺序结构、选择结构、循环结构 B:if,switch,break C:for,while,do-while D:if,for,continue 答案:A 第11题(1.0分)题号:425 有以下程序 main() {int a=15,b=21,m=0; switch(a%3) {case 0:m++;break; case 1:m++; switch(b%2) {default:m++; case 0:m++;break; } } printf("%d\n",m); } 程序运行后的输出结果是( ). A:1 B:2 C:3 D:4 答案:A 第12题(1.0分)题号:404 执行语句: for (i=1;i++<4;);后, 变量i的值是( ). A:3 B:4 C:5 D:不定 答案:C 第13题(1.0分)题号:1631 有如下程序 main() {int i,sum; for(i=l;i<=3;sum++)sum+=i; printf("%d\n",sum); } 该程序的执行结果是( ) A:6 B:3 C:死循环 D:0 答案:C 第14题(1.0分)题号:1616 要求以下程序的功能是计算: s= 1+1/2+1/3+……+1/10 main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误, 导致错误结果的程序行是( ) A:s=1.0; B:for(n=10; n>1;n--) C:s=s+1/n; D:printf( "%6.4f\n", s); 答案:C 第15题(1.0分)题号:1620 以下循环体的执行次数是______. main() { int i, j; for(i=0,j=1; ij共执行的次数是( ) main() { int i=0,j=10,k=2,s=0; for(;;) { i+=k; if(i>j) { printf(″%d″,s); break; }s+=i; } } A:4 B:7 C:5 D:6 答案:D 第18题(1.0分)题号:1622 下列循环语句中有语法错误的是( ) A:while(x=y) 5; B:while(0); C:do 2; while(x=0); D:do x++ while(x= =10) 答案:D 第19题(1.0分)题号:1630 已知int t=0; while (t=1) {…} 则以下叙述正确的是( ). A:循环控制表达式的值为0 B:循环控制表达式的值为1 C:循环控制表达式不合法 D:以上说法都不对 答案:B 第20题(1.0分)题号:399 当处理特定问题,循环次数已知时, 通常采用( )解决. A:for循环 B:while循环 C:do循环 D:switch语句 答案:A 第21题(1.0分)题号:427 以下程序段的描述,正确的是( ) x=-1; do {x=x*x;}while(!x); A:是死循环 B:循环执行两次 C:循环执行一次 D:有语法错误 答案:C 第22题(1.0分)题号:1628 下面关于循环语句for、while、do-while的叙述中正确的是( ). A:三种循环语句的循环体都必须放入一对花括号中 B:三种循环语句中都可以缺省循环终止条件表达式 C:三种循环语句的循环体都至少被无条件执行一次 D:三种循环语句都可能出现无穷循环 答案:D 第23题(1.0分)题号:431 以下描述中正确的是( ) A:由于 do-while循 环中循环体 语句只能是 可执行语句, 所以循环体 内不能使用 复合语句 B:do-while 循环由do 开始,用 while结束, 在while (表达式) 后面不能写 分号 C:在do-while 循环体中, 是先执行一 次循环,再 进行判断 D:do-while 循环中,根 据情况可以 省略while 答案:C 第24题(1.0分)题号:408 已知 int i=1;执行语句while(i++<4)后,变量i的值为__________ A:3 B:4 C:5 D:6 答案:C 第25题(1.0分)题号:1629 以下程序中循环体总的执行次数是( ) int i,j; for(i=6;i>1;i--) for(j=0;j0)&&(x<5);x++,y--); A:是无限循环 B:循环次数不 定 C:循环执行 4次 D:循环执行 3次 答案:D 第28题(1.0分)题号:1633 以下程序执行后sum的值是( ) main() { int i,sum; for(i=1;i<6;i++)sum+=i; printf("%d\n",sum); } A:15 B:14 C:不确定 D:0 答案:C 第29题(1.0分)题号:426 以下程序的输出结果是() main( ) {int a=1,b=0; do { switch(a) { case 1: b=1;break; case 2: b=2; break; default : b=0; } b=a+b; }while(!b); printf("a=%d,b=%d \n",a,b); } A:a=1,b=2 B:a=1,b=1 D:a=1,b=3 答案:A 第30题(1.0分)题号:1625 以下不致造成死循环的语句是( ). A:for(sum=1,i=0;sum>=i;) sum+=++i; B:for(;; x+=i); C:for(y=0,x=1;x>++y;x=i++) i=x; D:while(x=8) x--; 答案:C 第31题(1.0分)题号:1615 下列保留字中用于构成循环结构的是 () A:if B:while C:switch D:default 答案:B 第32题(1.0分)题号:1623 已知 int i=1;执行语句while(i++<4);后,变量i的值为__________ A:3 B:4 C:5 D:6 答案:C 第33题(1.0分)题号:1645 设有以下程序段 int x=0,s=0; while(! x!=0)s+=++x; printf(″%d″,s); A:运行程序段后输出0 B:运行程序段后输出1 C:程序段中的控制表达式是非法的D:程序段执行无限次 答案:B 第34题(1.0分)题号:417 有以下程序段 int k=O: while(k=l)k++; while循环执行的次数是( ) A:无限次 B:有语法错,不能执行 C:一次也不执行 D:执行1次 答案:A 第35题(1.0分)题号:1634 在"while(!a)"中, 其中"!a"与表达式( )等价. A:a= =0 B:a= =1 C:a!=1 D:a!=0 答案:A 第36题(1.0分)题号:1638 当执行以下程序段时( ). y =1; do { y--; } while(--y); A:循环体将执 行一次 B:循环体将执 C:循环体将 执行无限次 D:系统将提示 有语法错误 答案:C 第37题(1.0分)题号:400 下列保留字中用于构成循环结构的是 () A:if B:while C:switch D:default 答案:B 试卷编号:652 所属语言:C语言 试卷方案:6 试卷总分:54分 共有题型:2种 一、填空共32题(共计32分) 第1题(1.0分)题号:1059 若有定义:int a[2][3]={{1},{2,3}},则初始化后,元素a[0][1]得到的初值是【1】. 答案: =======(答案1)======= 第2题(1.0分)题号:398 下列程序的输出结果是【1】. main( ) { int i,x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); } =======(答案1)======= 3,5,7, 第3题(1.0分)题号:1048 下面的程序打印杨辉三角形,其格式为: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 程序如下. #define N 11 main( ) { int i,j,a[N+1][N+1]; for(i=1;i<=N;i++) { a[i][i]=1; a[i][1]=1; } for(【1】;i0) {printf(" ");j--; } for(j=1;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); } printf("\n"); } 答案: =======(答案1)======= i=3 =======(答案2)======= jj =======(答案3)======= a[i-1][j-1]+a[i-1][j] =========或========= a[i-1][j]+a[i-1][j-1] 第4题(1.0分)题号:394 若声明"char a[15]="Windows-9x";",语句"printf("%s",a+8);"的输出结果为【1】. 答案: =======(答案1)======= 9x 第5题(1.0分)题号:1071 以下程序运行后,输出结果是【1】. main( ) {int a[3][3]={1,2,3,4,5,6,7,8,9},i,j; for(i=0;i<3;i++) for(j=i;j<3;j++) printf("%2d",a[i][j]); } 答案: =======(答案1)======= 1 2 3 5 6 9 第6题(1.0分)题号:1065 下面程序的运行结果为【1】. #include main( ) {char ch[7]={"12ab56"}; int i,s=0; for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d",s); } 答案: =======(答案1)======= 1 第7题(1.0分)题号:395 若有说明"int a[ ][4]={1,2,3,4,5,6,7,8,9};",则数组a第一维的大小是【1】. 答案: =======(答案1)======= 3 第8题(1.0分)题号:409 下面程序的运行结果是【1】. #include main( ) {char a[]="morning",t; int i,j=0; for(i=1;i<7;i++) if(a[j]0;i--) 【2】 a[0]=t; for(i=0;i<=5;i++) printf("%c",a[i]); } 答案: =======(答案1)======= t=a[5]; =======(答案2)======= a[i]=a[i-1]; 第14题(1.0分)题号:410 以下程序运行后的输出结果是【1】. main( ) { int i,n[ ]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf("%d ",n[i]); } } 答案: =======(答案1)======= 1 3 7 15 第15题(1.0分)题号:1073 # define N 7 main( ) {int i,j,temp,a[N]={1,2,3,4,5,6,7}; for(i = 0;i #define N 8 void main( ) { int i,j,pa[N]={1}; printf("%5d\n",pa[0]); for(i=1;i0;j--) pa[j]=pa[j]+pa[j-1]; for(j=0;j<=i;j++) printf("%5d",pa[j]); printf("\n"); } } 答案: =======(答案1)======= 1 =======(答案2)======= 1 2 1 =======(答案3)======= 1 4 6 4 1 第17题(1.0分)题号:420 以下程序运行后输出结果中第一行为【1】,第二行为【2】,第三行为【3】. #include "stdio.h" #define N 3 main( ) {int a[N][N],b[N*N]={1,1},i,j; for(i=2;i void main( ) { int i,j,a[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=1+i-j; for(i=0;i<3;i++) { for(j=0;j<3;j++) if(a[i][j]>0) printf("%3d",a[i][j]); putchar('\n');} } 答案: =======(答案1)======= 1 2 1 3 2 1 第19题(1.0分)题号:399 输出数组a[10] 所有元素中的最大值. main ( ) { int a[10]={1,2,3,4,5,6,7,8,9,10}; int j, max; 【1】 ; for(j=1;j<10;j++) {if(a[j]>max) 【2】 ;} printf("max value is %d\n", max); } 答案: =======(答案1)======= max=a[0] =======(答案2)======= max=a[j] 第20题(1.0分)题号:404 以下程序输出的结果是【1】. #include main( ) {char a[20]="Good morning!",b[40]; int i; for(i=0;a[i]!='\0'; i++ ) b[i]=a[i]; b[i]='\0'; puts(b); } 答案: =======(答案1)======= Good morning! 第21题(1.0分)题号:401 若有定义:int a[2][3]={{1},{2,3}},则初始化后,元素a[0][1]得到的初值是【1】. 答案: =======(答案1)======= 第22题(1.0分)题号:1057 输出数组a[10] 所有元素中的最大值. main ( ) { int a[10]={1,2,3,4,5,6,7,8,9,10}; int j, max; 【1】 ; for(j=1;j<10;j++) {if(a[j]>max) 【2】 ;} printf("max value is %d\n", max); } 答案: =======(答案1)======= max=a[0] =======(答案2)======= max=a[j] 第23题(1.0分)题号:1060 设char string[ ] =″abc_d!″;则数组的长度应是【1】. 答案: =======(答案1)======= 7 第24题(1.0分)题号:1058 设a数组是m行n列的,则元素a[i][j]之前有【1】个元素. 答案: =======(答案1)======= i*n+j =========或========= j+i*n =========或========= n*i+j =========或========= j+n*i 第25题(1.0分)题号:1050 本程序用改进的冒泡法对数组a[n]的元素从小到大排序,请在程序空白处填空. #define N 10 main( ) {int a[N]={10,7,43,1,9,6,3,8,5,2}; int j,k,jmax,temp; 【1】; do { k=0; for(j=0;j0&&k); for(j=0;j< N ;j++) printf("%5d",a[j]); printf("\n"); } 答案: =======(答案1)======= jmax=N-1 =======(答案2)======= a[j]>a[j+1] =======(答案3)======= k++ =========或========= k=k+1 =========或========= k+=1 第26题(1.0分)题号:418 设数组a包括10个整型元素.下面程序的功能是求出a中各相邻两个元素的和, 并将这些和存在数组b中,按每行3个元素的形式输出.请填空. main( ) { int a[10],b[10],i; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=1;i<10;i++) 【1】 for(i=1;i<10;i++) { printf("%3d",b[i]); if(【2】==0) printf("\n"); } } 答案: =======(答案1)======= b[i]=a[i]+a[i-1]; =======(答案2)======= i%3 第27题(1.0分)题号:405 以下程序输出的结果是【1】. main( ) { int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d \n",k); } 答案: =======(答案1)======= 21 第28题(1.0分)题号:406 以下程序的输出结果是【1】. #include main( ) { int i=0; char a[ ]="abm",b[ ]="aqid",c[10]; while(a[i]!='\0'&& b[i]!='\0') { if(a[i]>=b[i]) c[i]=a[i]-32; else c[i]=b[i]-32; ++i; } c[i]='\0'; puts(c); } 答案: =======(答案1)======= AQM 第29题(1.0分)题号:416 输入10个数据,对它们按从小到大的顺序进行选择排序. main( ) { int a[11]; int i,j,t; printf("Input 10 numbers:\n"); for(i=1; i<11;i++) scanf("%d",&a[i]); printf("\n"); for (j=1;j<=【1】;j++) for(i= 【2】;i<=10;i++) if ( 【3】) {t=a[i];a[i]=a[j];a[j]=t;} printf("the sorted numbers:\n"); for(i=1;i<11;i++) printf("%d ",a[i]); printf("\n"); } 答案: =======(答案1)======= 9 =======(答案2)======= j+1 =======(答案3)======= a[i]=0;i--) printf("%d",a[i]); } 答案: =======(答案1)======= x%2 =======(答案2)======= x/2 第31题(1.0分)题号:402 设char str ing[ ] =″This_is_a_book!″;则数组的长度应是【1】. 答案: =======(答案1)======= 16 第32题(1.0分)题号:1061 设int a[2][3] = {{2},{3}};则数组元素a[1][0]的值为【1】. 答案: =======(答案1)======= 3 二、单项选择共22题(共计22分) 第1题(1.0分)题号:1654 若有声明"int i;float x;char a[50];",为使i得到值1,x得到值3.1416,a得到值yz,当执行语句"scanf("%3d%f%2s",&i,&x,a);"时,正确的输入形式是( ). A:1,3.1416,yz↙ B:13.1416yz↙ C:0013.1416yz↙ D:i=001,x=3.1416,a=yz↙ 答案:C 第2题(1.0分)题号:1658 数组定义为int a[3][2]={1,2,3,4,5,6},数组元素( )的值为6. A:a[3][2] B:a[2][1] C:a[1][2] D:a[2][3] 答案:B 第3题(1.0分)题号:1662 不正确的字符串赋值或赋初值的方式是( ). A:char str[]="string"; B:char str[7]={'s','t','r','i','n','g'}; C:char str[10];str="string"; D:char str[7]={'s','t','r','i','n','g', '\0'}; 答案:C 第4题(1.0分)题号:1651 对两个数组a和b初始化如下: char a[ ]="abc"; char b[ ]={'a','b','c'}; 则以下叙述正确的是( ). A:a与b数组完全相同 B:a与b数组长度相同 C:a与b中都存放字符串 D:a数组比b数组长度长 答案:D 第5题(1.0分)题号:441 下列各语句定义了数组,其中一个不正确的是( ). A:static int a[5],b[2][3]; B:char no[30],rec[30,6]; C:int x[]={2,4,6,8,10}; D:int x[10]={1,2,3,4,5}; 答案:B 第6题(1.0分)题号:449 设int a[ ][4]={1,2,3,4,5,6,7,8};则数组a的第一维的大小是( ). A:2 B:3 C:4 D:无确定值 答案:A 第7题(1.0分)题号:445 以下不能正确定义二维数组的选项是( ). A:int a[2][2]={{1},{2}}; B:int a[][2]={1,2,3,4}; C:int a[2][2]={{1},2,3}; D:int a[2][]={{1,2},{3,4}}; 答案:D 第8题(1.0分)题号:435 设有数组定义:char array[ ]="China"; 则数组array所占空间是( ) . A:4个字节 B:5个字节 C:6个字节 D:7个字节 答案:C 第9题(1.0分)题号:1652 对字符数组str赋初值,str不能作为字符串使用的是( ). A:char str[]="shanghai" B:char str[10]={'s','h','a','n','g','h','a','i'} C:char str[]={"shanghai"} D:char str[8]={'s','h','a','n','g','h','a','i'} 答案:D 第10题(1.0分)题号:1653 执行下列程序 main( ) {int a[3][3]={{1},{2},{3}}; int b[3][3]={1,2,3}; printf(″﹪d \ n″,a[1][0] + b[0][0]);} 输出的结果是( ). A:0 B:1 C:2 D:3 答案:D 第11题(1.0分)题号:442 定义一个4个元素的一维整型数组,( )是不正确的. A:int a[4]; B:int a[4]={1,2,3,4,5}; C:int a[4]={1,2,3}; D:int a[4]={1}; 答案:B 第12题(1.0分)题号:1648 以下程序的输出结果是( ). main( ) { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); } A:1,5,9, B:1,4,7, C:3,5,7, D:3,6,9, 答案:C 第13题(1.0分)题号:1657 定义一个4个元素的一维整型数组,( )是不正确的. A:int a[4]; B:int a[4]={1,2,3,4,5}; C:int a[4]={1,2,3}; D:int a[4]={1}; 答案:B 第14题(1.0分)题号:434 下列对C语言字符数组的描述中错误的是( ). A:字符数组可以存放字符串 B:字符数组中的字符串可以整体输入、输出 C:可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D:不可以用关系运算符对字符数组中的字符串进行比较 答案:C 第15题(1.0分)题号:1667 有以下程序 main( ) {int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(i=0;i<4;i++) s+=aa[i][1]; printf("%d\n",s); } 程序运行后的输出结果是( ). A:11 B:19 C:13 D:20 答案:B 第16题(1.0分)题号:450 若有数组A和B的声明"static char A[ ]="ABCDEF",B[ ]={'A','B','C','D','E','F'};",则数组A和数组B的长度分别是( ). B:6,7 C:6,6 D:7,7 答案:A 第17题(1.0分)题号:1666 执行以下程序: main( ) { char str[13];scanf("%s",str); printf("%s\n",str); } 若输入数据为: abcdl234 efgh 则程序的输出结果是( ). A:abcd B:abcd1234 C:abcd1234 efgh D:abcd1234efgh 答案:B 第18题(1.0分)题号:446 对二维数组的正确说明是( ). A:int a[][] = {1,2,3,4,5,6}; B:int a[][3] = {1,2,3,4,5,6}; C:int a[2][] = {1,2,3,4,5,6}; D:int a[2][3] = {1,2,3,4,5,6,7} 答案:B 第19题(1.0分)题号:444 假定一个二维数组的定义语句为: int a[2][3]={{3,4},{2,8,6}}; 则元素a[0][2]的值为( ). A:4 B:0 D:6 答案:B 第20题(1.0分)题号:453 以下程序运行后的输出结果是( ). main( ) { char a[7]="a0\0a0\0"; int i,j; i=sizeof(a); j=strlen(a); printf("%d %d",i,j); } A:2 2 B:7 2 C:7 5 D:6 2 答案:B 第21题(1.0分)题号:440 设有变量声明"char c;",执行"for(;c=(getchar()!='\n'); ) printf("%c",c);"时,从键盘上输入"ABCDEFG↙"之后,输出的结果是( ). A:ABCDEFG B:AABBCCDDEEFFGG C:非字母数字字符 D:语句不能执行 答案:C 第22题(1.0分)题号:448 对字符数组s赋值,不合法的一个是( ). A:char s []="Beijing"; B:char s [20]={"Beijing"}; C:char s[20]; s="Beijing"; D:char s[20]={'B,'e','i','j','i','n','g'}; 答案:C 试卷编号:653 所属语言:C语言 试卷方案:7 试卷总分:62分 共有题型:2种 一、填空共22题(共计22分) 第1题(1.0分)题号:1100 main( ) {int num1,num2; int *p1=&num1,*p2=&num2; int *pointer; scanf("%d",p1); scanf("%d",p2); if(*p1>*p2) { pointer=p1; p1=p2; p2=pointer;} printf("min=%d,max=%d\n",*p1,*p2); } 若通过键盘输入了9和6,则: 上述程序的输出结果是【1】. 答案: =======(答案1)======= min=6,max=9 第2题(1.0分)题号:1085 完成下列程序.求一个字符串的长度,用字符数组实现. main() {int len=0; char str[20],*p; scanf("%s",str); p=str; while(*p!='\0') { 【1】;【2】;} printf("\nlength=%d",len); } 答案: =======(答案1)======= p++ =========或========= len++ =========或========= p+=1 =========或========= p=p+1 =========或========= len=len+1 =========或========= len+=1 =======(答案2)======= p++ =========或========= len++ =========或========= p+=1 =========或========= p=p+1 =========或========= len+=1 =========或========= len=len+1 第3题(1.0分)题号:438 当运行以下程序时,从键盘输入 apple<回车> cat<回车> 则以下程序的运行结果是【1】. #include "stdio.h" main() { char s[80],*p; p=s; gets(p); while(*p!='\0') if(*p=='a') {p++; gets(p);} else break; puts(s); } 答案: =======(答案1)======= acat 第4题(1.0分)题号:443 执行下面的程序段后,ab的值为【1】. int *v,ab; ab=100; v=&ab; ab=*v+10; 答案: =======(答案1)======= 110 第5题(1.0分)题号:1089 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数.例如,输入的字符串为:556,则输出十进制整数366.请填空. #include "stdio.h" main() { char *p, s[6]; int n; p=s; gets(p); n=*p-'0'; while( 【1】 !='\0') n= 【2】 ; printf("%d \n",n); } 答案: =======(答案1)======= *(++p) =======(答案2)======= n*8+*p-'0' =========或========= *p+n*8-'0' =========或========= 8*n+*p-'0' =========或========= *p+8*n-'0' =========或========= n*8+*p-48 =========或========= *p+n*8-48 =========或========= 8*n+*p-48 =========或========= *p+8*n-48 第6题(1.0分)题号:437 当运行以下程序时,从键盘输入 control<回车> cat<回车> bed<回车> -1<回车> 则以下程序的运行结果是【1】. #include "stdio.h" main() { char s[80],*p; p=s; gets(p); while(*p!='-') { if(*p=='a'||*p=='b') puts(p); gets(p); } } 答案: =======(答案1)======= bed 第7题(1.0分)题号:444 执行程序段后,表达式*--p的值是【1】. int a[]={63,20,30,28}; p=&a[2]; 答案: =======(答案1)======= 20 第8题(1.0分)题号:1086 以下程序的运行结果是【1】. main() { char a[]="12345",*p; int s=0; for(p=a; *p!='\0';p++) s=10*s+ *p -'0'; printf("%d",s); } 答案: =======(答案1)======= 12345 第9题(1.0分)题号:1083 执行以下程序后,a的值为【1】,b的值为【2】. main() {int a,b,k=4,m=6; int *p1=&k,*p2=&m; a=(p1==&m); b=(-*p1)/(*p2)+7; printf("a=%d,b=%d",a,b); } 答案: =======(答案1)======= =======(答案2)======= 第10题(1.0分)题号:430 以下程序段的运行结果是【1】. char *p="%d,a=%d,b=%d\n"; int a=11,b=10,c; c=a%b; p+=3; printf(p,c,a,b); 答案: =======(答案1)======= a=1,b=11 第11题(1.0分)题号:1082 以下程序运行时输出结果是【1】. #include main() { char *s, *s1="Here"; s=s1; while(*s1) s1++; printf("%d\n",s1-s); } 答案: =======(答案1)======= 4 第12题(1.0分)题号:422 以下程序的输出结果是【1】. main() { int a[]={1,2,3,4,5,6},*p=a; *(p+3)+=2; printf("%d,",*++p); printf("%d\n",*(p+2)); } 答案: =======(答案1)======= 2,6 第13题(1.0分)题号:423 若有声明"char a[3]="AB"; char *p=a;",执行语句"printf("%d",p[2]);"后输出结果是【1】. 答案: =======(答案1)======= 第14题(1.0分)题号:1087 以下程序段的运行结果是【1】. char *p="abedefg"; p+=3; printf("%d",strlen(strcpy(p,"ABCD"))); 答案: =======(答案1)======= 4 第15题(1.0分)题号:1091 下面程序的输出结果为【1】. #include int x[2][3]={1,2,3,4,5,6}; main() {int *p; for(p=&x[0][0];p<&x[0][0]+6;p++) { if((p-&x[0][0])%3==0) printf("%3d",*p); } } 答案: =======(答案1)======= 1 4 第16题(1.0分)题号:1094 以下程序段的运行结果是【1】. char a[ ]="123456789",*p; int i=0; p=a; while(*p) { if(i%2==0) *p='*'; p++; i++; } puts(a); 答案: =======(答案1)======= *2*4*6*8* 第17题(1.0分)题号:441 #include main() { int a[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf("%d,%d\n",*p,*(p+3)); } 结果为:【1】. 答案: =======(答案1)======= 1,6 第18题(1.0分)题号:1090 下面程序输出结果为【1】. main() {int a[3][3]={1,2,3,4,5,6,7,8,9},*p,(*p1)[3]; p=*a+5; p1=a; printf("%d\t%d\n",*p,*(*(p1+2)+1)); } 答案: =======(答案1)======= 6 8 第19题(1.0分)题号:435 以下程序段的运行结果是【1】. char *p="PDP1-0"; int i,d; for(i=0;i<7;i++) if(isdigit(*(p+i))) printf("%c*",*(p+i)); 答案: =======(答案1)======= 1*0* 第20题(1.0分)题号:1092 以下程序的运行结果是【1】. main() { int x[5]={2,4,6,8,10},*p,**pp; p=x; pp=&p; printf("%d,",*(p++)); printf("%d",**pp); } 答案: =======(答案1)======= 2,4 第21题(1.0分)题号:426 下面程序的输出结果为【1】. #include main() {int i; char *m="abc",k[4]; k[0]='A';k[1]='B';k[2]='C';k[3]='\0'; for(i=0;i<3;i++) printf("%s,%s,",m+i,k+i); } 答案: =======(答案1)======= abc,ABC,bc,BC,c,C, 第22题(1.0分)题号:1079 下列程序的输出结果是【1】. main() {char s[]="ABCDE", *p=s; while (*p) { printf("%s ",p++); if(*p) p++; } } 答案: =======(答案1)======= ABCDE CDE E 二、单项选择共40题(共计40分) 第1题(1.0分)题号:484 以下程序运行后,输出结果是( ). main( ) { char *s="abcdefg"; s+=5; printf("%s\n",s); } A:fg B:字符f的ASCII码值 C:字符f的地址 D:出错 答案:A 第2题(1.0分)题号:1673 已知有程序段 "chat str [] [10]={"Aoyun","Beijing"},*p=&str[0][0] ; printf("%s\n",p+10);", 则执行printf 语句后输出为( ). A:Beijing B:Aoyun C:ing D:ng 答案:A 第3题(1.0分)题号:492 假定已有声明"char a[30],*p=a;", 则下列语句中能将字符串"This is a C program."正确地保存到数组a中的语句是( ). A:a[30]="This is a C program."; B:a="This is a C program."; C:*p="This is a C program."; D:strcpy(p,"This is a C program."); 答案:D 第4题(1.0分)题号:1685 设int a [5][5],*b[5],(*c) [5]=a;则被分别称为是( ). A:数组、数组指针、指针数组 B:数组、指针数组、指针函数 C:数组、数组指针、函数指针 D:数组、指针数组、数组指针 答案:D 第5题(1.0分)题号:493 若有声明语句"char ch='a', *pc=&ch;",以下语句有语法错误的是( ). A:(*pc)++; B:ch+=-'a'+'A'; C:toupper(ch)=ch; D:ch++; 答案:C 第6题(1.0分)题号:1696 设char s [10], *p;正确的操作语句是( ). A:p="MBA"; B:s++; C:s="MBA" D:s[ ]="MBA"; 答案:A 第7题(1.0分)题号:1677 有以下程序,执行后输出结果是(). main() {char *s[]={"one","two","three"},*p; p=s[1]; printf("%c,%s\n",*(p+1),s[0]); } A:n,two B:t,one C:w,one D:o,two 答案:C 第8题(1.0分)题号:1686 若已定义x为int 类型变量,下列语句中定义指针变量p的正确语句是( ). A:int p=&x B:int *p=x C:int *p=&x; D:p=x; 答案:C 第9题(1.0分)题号:1695 设int a[3][2];能正确表示a数组元素地址的是( ). A:a[1] B:a[3] C:*a[2] D:&a[3][2] 答案:A 第10题(1.0分)题号:1683 若有语句 int *point,a=4;和point=&a;下面代表地址的选项是( ). A:a B:*point C:*a D:point 答案:D 第11题(1.0分)题号:454 如有以下定义的语句,而且0≤i〈10.则对数组元素的错误引用是( ). int a[]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a; A:*(a+i) B:a[p-a] C:p+i D:*(&a[i]) 答案:C 第12题(1.0分)题号:483 int a[]={1,2,3,4,5,6}; int *p=a; 则下列结果不为4的表达式是( ). A:*p+3 B:*(p+3) C:a[4] D:*(a+3) 答案:C 第13题(1.0分)题号:1679 设有如下程序: #include main() { char s[128]={'\0'},*p=s; while (strcmp(s,"END")) { gets(s); while(*p) putchar(*p++); } } gets函数每次输入一个字符串.以下关于该程序运行时输出结果的叙述中正确的是( ). A:所有输入的字符串都能被完整输出 B:所有输入的字符串都不能被完整输出 C:只能完整输出第一个字符串 D:只能完整输出最后一个字符串 答案:C 第14题(1.0分)题号:1688 执行语句"for(i=0;i<10;++i,++a) scanf(″%d″,a);"试图为int类型数组a[10]输入数据是错误的.错误的原因是( ). A:指针变量不能做自增运算 B:数组首地址不可改变 C:++i应写作i++ D:++a应写作a++ 答案:B 第15题(1.0分)题号:1693 若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是( ). A:int *i=NULL;scanf("%d",i); B:float *f=NULL; *f=10.5; C:char *c; chart='m';*c=&t; D:char t='m';long *L=&t; L='\0'; 答案:D 第16题(1.0分)题号:1703 若有声明"double x=3,c,*a=&x ,*b=&c;",则下列语句中错误的是( ). A:a=b=0; B:a=&c,b=a; C:&a=&b; 答案:C 第17题(1.0分)题号:489 已知有声明"char a[]="Tt is mine", *p="It is mine";',下列叙述中错误的是( ). A:strcpy(a,"yes")和strcpy(p,"yes")都是正确的 B:a="yes"和p="yes" 都是正确的 C:*a等于*p D:D. Sizeof(a)不等于Sizeof(p) 答案:B 第18题(1.0分)题号:476 若有声明"int x[10]={0,1,2,3,4,5,6,7,8,9},*p",则值不为4的表达式是( ). A:p=x,*(p+4) B:p=x+4,*p++ C:p=x+3,*(p++) D:p=x+3,*++p 答案:C 第19题(1.0分)题号:1700 变量s的定义为" char *s = "hello world!" ; ",要使用变量p指向s所指向的同一个字符串, 则应选取( ). A:char *p=s; B:char *p=&s; C:char *p ; p=*s; D:char *p;p=&s; 答案:A 第20题(1.0分)题号:1701 若定义了int *pointer[5],则下列说法正确的是(). A:定义了一个指针数组pointer B:定义了一个指向5个元素的一维数组的指针变量pointer C:定义了5个整型变量 D:定义了一个整型数组名为*pointer,有5个元素 第21题(1.0分)题号:1670 已知有声明"int good=1;",若要使得表达式"p="good"+good"无语法错误(包括警告错误), p应当声明为( ). A:char p; B:char *p; C:int p; D:int *p; 答案:B 第22题(1.0分)题号:1675 已知某程序中有声明int a[4],j;及语句for(j=0;j<4;j++) p[j]=a+j;, 则标识符p正确的声明形式应为( ). A:int p[4]; B:int *p[4]; C:int **p[4]; D:int (*p)[4]; 答案:B 第23题(1.0分)题号:459 已知有声明"int a[2][3]={0}, *p1=a[1],(*p2)[3]=a;",以下表达式中与"a[1][1]=1" 不等价的表达式是( ). A:*(p1+1)=1 B:p1[1][1]=1 C:*(*(p2+1)+1)=1 D:p2[1][1]=1 答案:B 第24题(1.0分)题号:472 下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的( ). A:float d,*p=d; B:float d,*p=&d; C:float d,p=d; D:float *p=&d,d; 答案:B 第25题(1.0分)题号:1706 设已有声明"int x[]={1,2,3,4,5,6},*p=&x[2];",则值为3的表达式是( ). A:*++p B:*(p++) C:++*p D:*p+1 答案:B 第26题(1.0分)题号:494 有以下程序,执行后输出结果是(). main() {int x[8]={8,7,6,5,0,0},*s; s=x+3; printf("%d\n",s[2]); } A:随机值 B:0 C:5 D:6 答案:B 第27题(1.0分)题号:490 若有声明"char a[5]={'A','B','C','D','E'},*p=a,i;",则以下语句中不能正确输出a数组全部元素值的是( ). A:for(i=0;i<5;i++) printf("%c",a[i]); B:for(i=0;i<5;i++) printf("%c",*(a+i)); C:for(i=0;i<5;i++) printf("%c",*p++); D:for(i=0;i<5;i++) printf("%c",*a++); 答案:D 第28题(1.0分)题号:487 下列程序的输出结果是(). main() {int m[10]={0,1,2,3,4,5,6,7,8,9},*p=m; p=p+4; printf("%d ",*++p); } A:3 B:4 C:5 D:6 答案:C 第29题(1.0分)题号:479 下列选项中正确的语句组是( ). A:char s[8]; s={"Beijing"}; B:char *s; s={"Bei jing"}; C:char s[8]; s="Beijing"; D:char *s;s="Beijing"; 答案:D 第30题(1.0分)题号:1678 设有如下程序,其运行结果为(). main() { static int a[][2]={{1,2},{3,4}}; int *pa,(*pb)[2]; pa=&a[0][0]; pb=a; printf("%d %d\n",*(pa+3),*(*(pb+1))); } A:31 B:42 C:33 D:43 答案:D 第31题(1.0分)题号:474 若有定义:"int x,*pb;",则以下正确的赋值表达式为( ). A:pb=&x B:pb=x C:*pb=&x D:*pb=*x 答案:A 第32题(1.0分)题号:475 若有声明"int a[]={1,2,3,4},*p,i;",则以下程序段中不能输出13的是( ). A:for(i=0;i<4;i+=2) printf("%d",a[i]); B:for(p=0;p<4;p+=2) printf("%d",a[p]); C:for(p=a;px[0] 第2题(1.0分)题号:488 以下程序运行后,输出结果是【1】. int d=1; fun (int p) { int d=5; d+=p++; printf("%d,",d); } main() { int a=3; fun(a); d+=a++; printf("%d\n",d); 答案:A 第32题(1.0分)题号:475 若有声明"int a[]={1,2,3,4},*p,i;",则以下程序段中不能输出13的是( ). A:for(i=0;i<4;i+=2) printf("%d",a[i]); B:for(p=0;p<4;p+=2) printf("%d",a[p]); C:for(p=a;px[0] 第2题(1.0分)题号:488 以下程序运行后,输出结果是【1】. int d=1; fun (int p) { int d=5; d+=p++; printf("%d,",d); } main() { int a=3; fun(a); d+=a++; printf("%d\n",d); } 答案: =======(答案1)======= 8,4 第3题(1.0分)题号:484 在函数调用中,若实参为数组名,则形参必须为数组名或【1】. 答案: =======(答案1)======= 指针 =========或========= 指针变量 =========或========= 地址 第4题(1.0分)题号:485 以下程序输出的结果是: 【1】 void add(int a[],int n) { int k; for(k=0;ki =======(答案2)======= k=j; =======(答案3)======= R[i]=R[k]; 第6题(1.0分)题号:493 下面程序输出结果为【1】 #include void f(float a,float b,float* c) { static float x;float y; x=(y=a>b?a:b)>x?y:x; *c=x; } void main() { float a[5]={2.5,-1.5,7.5,4.5},x; int i; for(i=0;i<3;i++) { f(a[i],a[i+1],&x); printf("%.1f\n",x); } } 答案: =======(答案1)======= 2.5 7.5 7.5 第7题(1.0分)题号:475 函数sstrcmp()的功能是对两个字符串进行比较.当s 所指字符串和t所指字符相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp()).请填空. #include int sstrcmp(char *s,char *t) { while(*s&&*t&&*s==【1】 ) {s++; 【2】 ; } return 【3】 ; } 答案: =======(答案1)======= *t =========或========= t[0] =======(答案2)======= t++ =========或========= ++t =========或========= t=t+1 =======(答案3)======= *s-*t =========或========= *s - *t 第8题(1.0分)题号:480 下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串. 例如:若a中的字符串为:aBCDeFgH,b中的字符串为:ABcd, 则c中的字符串应为:aBcdeFgH.请填空. #include #include void fun (char *p, char *q, char *c) { int k=1; while(【1】 ) { if ( 【2】 ) c[k]= *q; else c[k]= *p; if(*p!='\0') p++; if(*q!='\0') q++; 【3】 ; } } main( ) { char a[10]="aBCDeFfH",b[10]="ABcd",c[80]={'\ 0'}; fun (a,b,c); printf("The string a:");puts (a); ptintf("The string b:");puts (b); printf("The result :");puts(c); } 答案: =======(答案1)======= !(*p=='\0'&& *q=='\0') =========或========= *p!='\0'|| *q!='\0' =========或========= !(*p==0&& *q==0) =========或========= *p!=0|| *q!=0 =========或========= *p|| *q =========或========= !(*p&& *q') =======(答案2)======= *p< *q =======(答案3)======= k++ =========或========= ++k =========或========= k=k+1 第9题(1.0分)题号:494 在函数内部声明局部变量时缺省了存储类型,则该变量存储类型为【1】. 答案: =======(答案1)======= auto =========或========= auto类型 =========或========= 自动 =========或========= 自动类型 第10题(1.0分)题号:506 #include void f(int *p1, int *p2) { int *t; t=p1;p1=p2;p2=t; } main() { int a=10,b=20; printf("%d,%d\n",a,b); f(&a,&b); printf("%d,%d\n",a,b); } 程序输出的第一行是【1】,第二行是【2】. 答案: =======(答案1)======= 10,20 =======(答案2)======= 10,20 第11题(1.0分)题号:479 以下函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填空. double fun(int n) {double s=0.0,fac=1.0; int i; for(i=1;【1】;i++) { fac=fac*【2】; s=s+fac; } return s; } 答案: =======(答案1)======= n>=i =========或========= i<=n =======(答案2)======= (1.0/i) =========或========= 1.0/i =========或========= 1/i 第12题(1.0分)题号:478 下面程序的运行结果是:【1】. int fa(int x) {return x*x; } int fb(int x) {return x*x*x; } int f(int (*f1)(),int (*f2)(),int x) {return f2(x)-f1(x); } main() {int i; i=f(fa,fb,2); printf("%d\n",i); } 答案: =======(答案1)======= 4 第13题(1.0分)题号:500 以下函数用以求x的y次方.请填空. double fun(double x,int y) { int i;double z; for(i=1,z=x;i 【1】 ;i++) z*= 【2】 ; return z; } 答案: =======(答案1)======= <=y =======(答案2)======= x 第14题(1.0分)题号:487 一个用C语言编写的程序在运行时,如果没有发生任何异常情况,则只有在执行了【1】函数的最后一条语句或该函数中的return语句后,程序才会终止运行. 答案: =======(答案1)======= main =========或========= 主 第15题(1.0分)题号:496 以下程序的输出结果是【1】. f(int a) { int b=0; static int c=3; b++; c++; return(a+b+c); } main() { int a=2,i; for(i=0;i<3;i++) printf("%4d",f(a)); } 答案: =======(答案1)======= 7 8 9 第16题(1.0分)题号:481 3. 以下程序输出的结果是【1】 void fun1(int a,int b) { int k; k=a;a=b;b=k; } void fun2(int *pa,int *pb) { int k; k=*pa;*pa=*pb;*pb=k; } main() { int a=3,b=6; fun1(a,b); printf("a=%d,b=%d\n",a,b); fun2(&a,&b); printf("a=%d,b=%d\n",a,b); } 答案: =======(答案1)======= a=3,b=6 a=6,b=3 第17题(1.0分)题号:508 fun(int *s,int n1,int n2) { int t; while(n1a[i] 第20题(1.0分)题号:512 下列程序的输出结果是【1】 void f(int a[], int i, int j) { int t; if(i void f(int *p,int n) { int i,j; for(i=0;ia[mid]) 【2】 else return(mid); } return(-1); } main() { int a[]={1,3,5,7,9,11,13,15,17,19},m,r; scanf("%d",&m); r=binary(【3】); if(r==-1) printf("not found!"); else printf("found:%d",r+1); 答案: =======(答案1)======= high=mid-1: =======(答案2)======= low=mid+1: =======(答案3)======= a,m 第30题(1.0分)题号:473 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果.请填空 int fun( int n) { int m=0,f=1,i; for(i=1; i<=n; i++) { m+=i*f; f= 【1】 ; } return m; } main() { printf("m=%d\n", fun(10)); } 答案: =======(答案1)======= -f =========或========= (-1)*f =========或========= f*(-1) =========或========= -1*f 第31题(1.0分)题号:474 fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回.请填空. #include #define N 100 int fun(int a[N][N]) { int row,col,max,min; for(row=0;row=max =========或========= max<=a[row][col] =======(答案2)======= min>=max =========或========= max<=min 第32题(1.0分)题号:514 void f( ); int x=8; main( ) {int x=5; f( ); printf("x=%d\n",x); } void f( ) {printf("x=%d,",x);} 上面程序的输出结果是【1】 答案: =======(答案1)======= x=8,x=5 第33题(1.0分)题号:516 程序代码如下: fun(int *s,int n1,int n2) { int t; while(n1,则输出结果是【1】#include move(char *str, int n) { char temp; int i; temp=str[n-1]; for(i=n-1;i>0;i--) str[i]=str[i-1]; str[0]=temp; } main() { char s[50]; int n, i, z; scanf("%d,%s",&n,s); z=strlen(s); for(i=1; i<=n; i++) move(s, z); printf("%s\n",s); } 答案: =======(答案1)======= cdeab 第35题(1.0分)题号:507 int *swap(int *a,int *b) { int *p; p=a;a=b;b=p; return a; } main() { int x=3,y=4,z=5; swap(swap(&x,&y),&z); printf("%d,%d,%d",x,y,z); } 程序输出的结果是:【1】. 答案: =======(答案1)======= 3,4,5 第36题(1.0分)题号:1149 #include void fun(int *a,int b,int *c) { *a=++b;b=*c;*c=*a; } main() { int a=10,b=20,c=30; { int a=4; c=a+b; printf("%d\n",a+b+c); { int c=b; fun(&a,b,&c); printf("%d\n",a+b+c); } printf("%d\n",a+b+c); } } 程序输出的第一行是【1】,第二行是【2】,第三行是【3】. 答案: =======(答案1)======= 48 =======(答案2)======= 62 =======(答案3)======= 65 第37题(1.0分)题号:505 从变量的作用域角度分有全局变量和【1】 . 答案: =======(答案1)======= 局部变量 =========或========= 局部 第38题(1.0分)题号:471 一个函数直接或间接地调用本身,称为【1】调用. 答案: =======(答案1)======= 递归 第39题(1.0分)题号:501 函数f的功能是从长度为n的一维数组a数组的元素中,查找与x值相同元素在数组中的下标值;假如a数组元素中的值不相同.若找到,返回下标值;找不到,返回0.请填空. int f(int a[],int x) { int i; for(i=0;ii 第40题(1.0分)题号:510 下列程序的输出结果是【1】 int func(int n) { if (n==0)return 0; else if (n==1) return 1; else return n*n+func(n-2); } main() { printf("%5d%5d\n",func(4),func(5)); } 答案: =======(答案1)======= 20 35 第41题(1.0分)题号:502 #include main() { int a=1,b=2,x1,x2,x3; x1=add(a,b); x2=add(add(a,b),b); x3=add(a,b); printf("%d\n%d\n%d\n",x1,x2,x3); }int add(int x,int y) { static int z=1; z=x+y+z; return(z); } 程序输出的第一行是【1】,第二行是【2】,第三行是【3】. 答案: =======(答案1)======= 4 =======(答案2)======= 16 =======(答案3)======= 19 第42题(1.0分)题号:490 以下程序的输出结果是【1】. char *fun(char *s) { int i,j; for(i=j=0;s[i]!='\0';i++) if(s[i]!='c') s[j++]=s[i]; s[j]='\0'; return s; } main() { printf("%s",fun("chance")); } 答案: =======(答案1)======= hane 第43题(1.0分)题号:476 C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是【1】. 答案: =======(答案1)======= int =========或========= 整型 =========或========= int型 第44题(1.0分)题号:517 通过键盘输入一个数,判断其是否为素数,若是素数则输出字符'y',若不是素数则输出'n'. char a(int i) { int k;char j; for(k=2;k<=i-1;k++) if(i%k==0) 【1】 ; if(k<= 【2】 ) j='n'; else j='y'; return (j); } main( ) {int i; char c; scanf("%d",&i); 【3】 =a(i); printf("%c",c); } 答案: =======(答案1)======= break =======(答案2)======= i-1 =======(答案3)======= c 第45题(1.0分)题号:515 main( ) {int s,j; for(j=0;j<=2;j++) {s=fun( ); printf("%d",s);} printf("\n");} fun( ) {static int i=4; i++; return(i);} 上面程序的输出结果是【1】 答案: =======(答案1)======= 567 二、单项选择共52题(共计52分)第1题(1.0分)题号:547 gets函数的功能是() A:读取从键盘输入的一串不带空格的字符串B:读取从键盘输入的一串带空格的字符串C:读取从键盘输入的一串不带数字的字符串D:读取从键盘输入的一串只带字母的字符串 答案:B 第2题(1.0分)题号:528 库函数在使用时,要用() A:#include命令 B:#define命令 C:#if D:#else 答案:A 第3题(1.0分)题号:541 设有如下函数调用语句 fun(x1, (x1+x2),(x1,x2) ) ,该函数调用语句中含有实参的个数是( ) A:2 B:3 C:5 D:语法错 答案:B 第4题(1.0分)题号:546 若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是(). A:函数调用可以作为独立的语句存在 B:函数调用可以出现在表达式中 C:函数调用可以作为一个函数参数 D:函数调用可以作为一个函数形参 答案:D 第5题(1.0分)题号:542 定义int *swap()指的是(). A:指一个返回整型值的函数swap B:指一个返回指向整型值指针的函数swap C:一个指向函数swap()的指针,函数返回一个整型值 D:以上说法均错 答案:B 第6题(1.0分)题号:500 已知函数fun的定义如下: void fun(int x[],int y) { int k; for(k=0;k #include char *scmp(char *s1, char *s2) { if(strcmp(s1,s2)<0) return(s1); else return(s2); } main() { int i; char string[20], str[3][20]; for(i=0;i<3;i++) gets(str[i]); strcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/ strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为( ) A:abcd B:abba C:abc D:abca 答案:B 第19题(1.0分)题号:511 若调用一个函数,且此函数中没有return语句,则正确的说法是( ). A:没有返回值 B:返回若干个系统默认值 C:能返回一个用户所希望的值 D:返回一个不确定的值 答案:D 第20题(1.0分)题号:502 设有下列程序段: static char b=2; void Y() { static float d=4;… } int a=1; void X() { int c=3;… } 关于程序段中各变量的属性,以下叙述中错误的是(). A:a是全局变量,函数X可以访问,函数Y不能访问B:b是全局变量,函数X和函数Y都可以访问 C:c是动态变量,函数X可访问,函数Y不可访问 D:d是静态变量,函数X和函数Y都可以访问 答案:D 第21题(1.0分)题号:530 求字符串的长度,以下说法正确的是() A:使用strlen函数 B:只能使用strlen函数 C:使用strlength函数 D:只能使用strlength函数 答案:A 第22题(1.0分)题号:525 下列说法正确的是() A:函数的定义由函数头和函数体组成 B:函数名可以是无效的标识符 C:多个形参之间用;分隔 D:函数的调用方式只有一种 答案:A 第23题(1.0分)题号:526 下列说法正确的是() A:函数体中一定有return语句 B:函数定义时,形参可以有多个 C:实参与形参的个数必须相同,顺序可以不一样 D:实参与形参的类型必须相同 答案:B 第24题(1.0分)题号:523 下列说法正确的是() A:main函数一定没有形式参数 B:局部变量和全局变量其实是一回事 C:return语句一般用在函数体中 D:函数参数的传递一定是单向值传递 答案:C 第25题(1.0分)题号:532 函数调用func((exp1,exp2),(exp3,,exp4,exp5))中所含实参的个数为( )个 A:1 B:2 C:4 D:5 答案:B 第26题(1.0分)题号:514 定义函数时,缺省函数的类型声明,则函数类型取缺省类型( ) A:void B:char C:float D:int 答案:D 第27题(1.0分)题号:509 有以下函数定义: void fun(int n,double x){……}若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是( ) A:fun(int y,double m); B:k=fun(10,12.5); C:fun(x,n); D:void fun(n,x); 答案:C 第28题(1.0分)题号:515 以下说法正确的是() A:如果函数的类型与返回值类型不一致,以函数类型为准B:定义函数时,形参的类型说明可以放在函数体内 C:return后边的值不能为表达式 D:不加类型说明的函数,一律按void来处理 答案:A 第29题(1.0分)题号:495 以下程序运行后,输出结果是( ). func (int a,int b) { static int m=0 ,i=2; i+=m+1; m=i+a+b ; return(m); } main() { int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } A:8,15 B:8,16 C:8,17 D:8,8 答案:C 第30题(1.0分)题号:520 在定义任何一个函数时,下列选项中不可缺少的是( ) A:函数名之前的数据类型 B:函数名之后的一对圆括号 C:形式参数声明 D:函数体中的语句 答案:B 第31题(1.0分)题号:508 下述程序的输出结果是(). void prt(int *x,int *y,int *z) { printf("%d,%d,%d\n",++*x,++*y,*(z++)); } main() {int a=10,b=40,c=20; prt(&a,&b,&c); prt(&a,&b,&c); } A:11,41,20 11,41,20 B:11,41,20 12,42,20 C:11,41,20 11,42,20 D:10,40,20 10,40,20 答案:B 第32题(1.0分)题号:524 下列说法正确的是() A:c语言中允许定义空函数 B:空函数是一种错误的函数 C:空函数既没有函数头,也没有函数体 D:编程时,空函数没有任何用途 答案:A 第33题(1.0分)题号:534 在C语言中,正确的说法的是(). A:函数的定义可以嵌套,但函数的调用不可以嵌套B:函数的定义不可以嵌套,但函数的调用可以嵌套C:函数的定义和函数的调用均不可以嵌套 D:函数的定义和函数的调用均可以嵌套 答案:B 第34题(1.0分)题号:537 如果在一个函数中的复合语句中定义了一个变量,则该变量() A:只在该复合语句中有效 B:在该函数中有效 C:在本程序范围内均有效 D:为非法变量 答案:A 第35题(1.0分)题号:519 以下关于函数定义的叙述中,正确的是(). A:构成C语言源程序的基本单位之一是函数定义 B:所有被调用的函数必须在调用之前定义 C:main函数定义必须放在其他函数定义之前 D:main函数定义的函数体中必须至少有一条语句或声明 答案:B 第36题(1.0分)题号:1751 以下函数正确的定义形式(). A:double fun(int x,int y) B:double fun(int x;int y) C:double fun(int x,int y); D:double fun(int x, y), 答案:A 第37题(1.0分)题号:516 若使用一维数组名做函数实参,则以下正确的说法是( ). A:实参数组类型与形参数组类型可以不匹配 B:在被调函数中可以不考虑形参数组的大小 C:实参数组名必须与形参数组名一致 D:必须在主调函数中说明此数组的大小 答案:D 第38题(1.0分)题号:501 以下程序段中,有语法错误的是() A:fun(char aa[10]) { while(*aa) printf("%c",*aa++); } B:fun( char *aa) { while(aa[0]) printf("%c",*aa++); } C:main() { char *aa="Hello!"; while(*aa) printf("%c",*aa++); } D:main() { char aa[10]="Hello!"; while(*aa) printf("%c",*aa++); } 答案:D 第39题(1.0分)题号:544 已知有函数定义"int fun() {return (3,4);}",则调用fun后的函数返回值是A:3 B:4 C:3和4 D:程序出错 答案:B 第40题(1.0分)题号:538 以下程序输出结果是( ). int d=1; fun( int p) { int d=5 d=d+p; printf("%d,",d); } main() { int a=3 ; fun(a); d=d+a; printf("%d",d); } A:4, 4 B:8, 4 C:8, 11 D:4,11 答案:B 第41题(1.0分)题号:513 源程序要正确地运行,必须要有(). A:printf函数 B:自定义的函数 C:main函数 D:不需要函数 答案:C 第42题(1.0分)题号:545 以下选项均为fun函数定义的头部,其中错误的是() A:int fun(int x, int y[]) B:int fun(int x, int y[x]) C:int fun(int x, int y[3]) D:int fun(int x, int *y) 答案:B 第43题(1.0分)题号:529 求某个数的阶乘,以下说法正确的是() A:使用自定义函数实现 B:使用库函数实现 C:使用jiec函数实现 D:使用pow函数实现 答案:A 第44题(1.0分)题号:512 若用数组名作为函数调用的实参,传递给形参的是(). A:数组的首地址 B:数组第一个元素的值 C:数组中全部元素的值 D:数组中元素的个数 答案:A 第45题(1.0分)题号:539 若用数组名作为函数调用的实参,传递给形参的是( ). A:数组的首地址 B:数组第一个元素的值 C:数组中全部元素的值 D:数组元素的个数 答案:A 第46题(1.0分)题号:497 读下列程序: f(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); } 输出结果是(). A:720 B:120 C:24 D:6 答案:B 第47题(1.0分)题号:510 C中函数返回值的类型是由( )决定的 A:return语句中表达式的类型 B:该函数定义时的类型 C:调用函数时的调用语句 D:系统根据结果 答案:B 第48题(1.0分)题号:521 以下关于C语言源程序的叙述中,错误的是(). A:一个C语言源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义B:函数定义由函数头部和函数体两部分组成 C:在一个函数定义的函数体中允许定义另一个函数 D:在一个函数定义的函数体中允许调用另一个函数或调用函数本身 答案:C 第49题(1.0分)题号:506 以下程序运行后,输出结果是(). Void fun(int *x) { printf("%d\n",++*x); } main() { int a=25; fun(&a); } A:23 B:24 C:25 D:26 答案:D 第50题(1.0分)题号:499 有以下程序 int f(int n) {if (n==1) return 1; else return f(n-1)+1; } main() { int i,j=0; for(i=1;i<3;i++) j+=f(i); printf("%d\n",j); } 程序运行后的输出结果是(). A:4 B:3 C:2 D:1 答案:B 第51题(1.0分)题号:548 在C语言中,函数的数据类型是指() A:函数返回值的数据类型 B:函数形参的数据类型 C:调用该函数时的实参的数据类型D:任意指定的数据类型 答案:A 第52题(1.0分)题号:507 有以下程序 void ss(char *s,char t) {while(*s) {if(*s==t) *s=t-'a'+'A'; s++; } } main() { char str1[100]="abcddfefdbd",c='d'; ss(str1,c); printf("%s\n",str1); } 程序运行后的输出结果是(). A:ABCDDEFEDBD B:abcDDfefDbD C:abcAAfefAbA D:Abcddfefdbd 答案:B 试卷编号:655 所属语言:C语言 试卷方案:9 试卷总分:46分 共有题型:2种 一、填空共25题(共计25分) 第1题(1.0分)题号:447 以下程序运行时输出结果的第一行是【1】,第二行是【2】,第三行是【3】. #include typedef struct s { int index; int value; }M; main() { static int i,j,k,c[4][4]; M a[10]={{0,1},{3,2},{5,3},{6,4},{9,5},{15,6},{-1,0}},*p=a, b[10]={{1,1},{3,2},{4,3},{6,4},{10,5},{13,6},{-1,0}},*q=b; while(p->index!=-1) { i=p->index/4; j= p->index%4; c[i][j]=p->value; p++; } while(q->index!=-1) { i=q->index/4; j= q->index%4; c[i][j]=q->value; q++; } for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%d",c[i][j]); printf("\n"); } } 答案: =======(答案1)======= 1102 =======(答案2)======= 3340 =======(答案3)======= 0550 第2题(1.0分)题号:464 下面程序的作用是输入50个学生的相关信息. sruct student { long num; char name[20]; }stu[50]; main() { int i; for(i=0;【1】;i++) scanf("%ld%s",&stu[i].num ,【2】); } 答案: =======(答案1)======= i<50 =========或========= i<=49 =======(答案2)======= stu[i].name 第3题(1.0分)题号:463 以下程序运行后输出结果为【1】. #include "stdio.h" enum days { mon=1,tue,wed,thu,fri,sat,sun }today=tue; main() { printf("%d",(today+2)%7);} 答案: =======(答案1)======= 4 第4题(1.0分)题号:456 以下程序运行时,输出结果的第一行是【1】,第二行是【2】,第三行是【3】. #include #include struct node { char info[5]; struct node *link; }; main() { struct node *create(char *); void print(struct node *); struct node *head='\0'; char c[]="the teacher"; head=create(c); print(head); } struct node *create (char *s) { int k; struct node *h,*p; h='\0'; while(*s) { k=0; p=(struct node *) malloc(sizeof(struct node)); while(k<4&&*s) p->info[k++]=*s++; p->info[k]='\0'; p->link=h; h=p; } return h; } void print(struct node *head) { struct node *p=head; while(p!='\0') { puts(p->info); p=p->link; } } 答案: =======(答案1)======= her =======(答案2)======= teac =======(答案3)======= the 第5题(1.0分)题号:451 enum { a=1,b,c} P; 和 union {int k; char ch[20]; double x;} Q;中c的序号和Q所占的字节数分别是【1】和【2】_. 答案: =======(答案1)======= 3 =======(答案2)======= 20 第6题(1.0分)题号:465 以下函数实现了顺序查找的功能.请填空. #define N 10 typedef struct { int key; int other; }table; table R[N+1]; /*定义查找表为一维结构体数组*/ int SEQSEARCH(table R[],int K) { int i; R[n].key=【1】; /*设置监视哨*/ i=0; /*从表头开始向后扫描*/ while( 【2】) i++; if(i==n) return –1; else return 【3】 ; } 答案: =======(答案1)======= K =======(答案2)======= R[i].key!=K =========或========= K!=R[i].key =======(答案3)======= 第7题(1.0分)题号:449 以下程序运行时输出结果的第一行是【1】,第二行是【2】. #include struct s { int x,*y; }*p; int d[5]={10,20,30,40,50}; struct s a[5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]}; void main() { p=a; printf ("%5d",p->x++); printf ("%5d\n",p->x); printf ("%5d",*p->y); printf ("%5d\n",*++p->y); } 答案: =======(答案1)======= 100 101 =======(答案2)======= 10 20 第8题(1.0分)题号:455 以下程序运行时,输出结果的第一行是【1】,第二行是【2】. #include #include typedef struct p { char c; struct p *next;}PNODE; PNODE *create(char x[]) { int i;PNODE *pt,*pre,*p=0; for(i=0;x[i]!='\0';i++) { pt=(PNODE *)malloc(sizeof(PNODE)); pt->c=x[i];pt->next='\0'; if(p==0) { p=pt;pre=pt;} else { pre->next=pt;pre=pre->next;} } return p; } void print(PNODE *p) { while(p) { putchar(p->c); p=p->next;} putchar('\n'); } PNODE *joint(PNODE *pha,PNODE *phb) { PNODE *pa=pha,*pb=phb,*pc='\0',*pt,*pre; while(pa) { pb=phb; while(pb) { if(pa->c==pb->c) { pt=(PNODE *)malloc(sizeof(PNODE)); pt->c=pa->c; pt->next='\0'; if(pc=='\0') { pc=pt;pre=pt;} else { pre->next=pt; pre=pt;} } pb=pb->next; } pa=pa->next; } return pc; } main() { char a[]="coma",b[]="become"; PNODE *ha=0,*hb=0,*hc=0; ha=create(a);print(ha);hb=create(b);hc=joint(ha,hb);print(hc); } 答案: =======(答案1)======= coma =======(答案2)======= com 第9题(1.0分)题号:462 以下程序的功能是:实现两个复数相加的计算并输出运算结果. #include #include struct comlex { float r,i; }; struct complex *cal(struct complex *x1,struct complex *x2) { struct complex *p; p=(【1】) malloc(sizeof(struct complex)); p->r=(*x1).r+(*x2).r; p->i=(*x1).i+(*x2).i; 【2】; } main() { struct complex *p,x,y; scanf("%f%f%f%f",&x.r,&x.i,&y.r,&y.i); p=cal(&x,&y); printf("result:%.2f+%.2fi",【3】); free(p); } 答案: =======(答案1)======= struct complex * =========或========= struct complex* =======(答案2)======= return p =========或========= return (p) =========或========= return p; =========或========= return (p); =======(答案3)======= p->r,p->i =========或========= (*p).r,(*p).i =========或========= p->r,(*p).i =========或========= (*p).r,p->i 第10题(1.0分)题号:453 编写一个函数,将head指向的单链表逆置,即将原链表最后一个结点变为第一个结点, 原来倒数第二个结点变成第二个结点,以此类推.在逆置过程中不建立新的链表. NODE *invert(NODE *head) { NODE *p,*q,*r; if(head==NULL||head->next==NULL) return head; p=head; q=p->next; while(q!=NULL) { r=【1】; q->next=p; p=q;q=r; } 【2】=NULL; head=p; return head; } 答案: =======(答案1)======= q->next =========或========= (*q).next =======(答案2)======= head->next =========或========= (*head).next 第11题(1.0分)题号:1103 在带头结点的单链表中,编一函数在值为x的结点之后插入值为y的结点,若值为x的结点不存在则插在表尾. struct link *insert_link(struct link *head,int x,int y) {struct link *new, *q; new=(struct link *)malloc(struct link); /*生成新结点*/ new->data=y; /*新结点中存入数据y*/ q=head; while((q->next!=NULL)&&(q->data!=x)) /*表非空且未到表尾,查找值为x的结点*/ q=q->next; /*q不断向后移动*/ new->next=【1】; q->next=【2】; return(head); } 答案: =======(答案1)======= q->next =========或========= (*q).next =======(答案2)======= new 第12题(1.0分)题号:454 设有一个线性单链表的结点定义如下: struct node { int d; struct node *next; }; 编写一函数int copy_dellist(struct node *head,int x[]), 将head指向的单链表中存储的所有整数从小到大依次复制到x指向的整型数组中并撤销该链表; 函数返回复制到x数组中的整数个数. int copy_dellist(struct node *head,int x[]) { struct node *pk,*pj,*pm,*pn; int data,k=0; while(head!=NULL) { pj=head; data=pk->d; pn=pk; while(pk->next!=NULL) { pj=pk->next; if(【1】d; pm=pk; pn=pj;} pk=pj; } x[k++]=pn->d; if(【2】) pm->next=pn->next; else head=pn->next; free(pn); } 【3】; } 答案: =======(答案1)======= pj->d =========或========= (*pj).d =======(答案2)======= pn!=head =======(答案3)======= return k =========或========= return (k) =========或========= return k; =========或========= return (k); 第13题(1.0分)题号:459 编一函数顺序输出带头结点单链表各结点的数据域内容. struct link { int data; struct link *next; }; void print_link(struct link *head) { struct link *q; q=【1】;/*让q指向第一个有效数据结点*/ if(q==NULL)/*链表为空*/ printf("linklist is null\n"); else { do { printf("%5d",【2】);/*输出结点数据*/ q=【3】;/*让q指向下一个结点*/ }while(q!=NULL); } } 答案: =======(答案1)======= head->next =========或========= (*head).next =======(答案2)======= q->data =========或========= (*q).data =======(答案3)======= q->next =========或========= (*q).next 第14题(1.0分)题号:1114 以下程序运行时,输出结果的第一行是【1】,第二行是【2】,第三行是【3】. 答案: =======(答案1)======= struct complex * =========或========= struct complex* =======(答案2)======= return p =========或========= return (p) =========或========= return p; =========或========= return (p); =======(答案3)======= p->r,p->i =========或========= (*p).r,(*p).i =========或========= p->r,(*p).i =========或========= (*p).r,p->i 第10题(1.0分)题号:453 编写一个函数,将head指向的单链表逆置,即将原链表最后一个结点变为第一个结点, 原来倒数第二个结点变成第二个结点,以此类推.在逆置过程中不建立新的链表. NODE *invert(NODE *head) { NODE *p,*q,*r; if(head==NULL||head->next==NULL) return head; p=head; q=p->next; while(q!=NULL) { r=【1】; q->next=p; p=q;q=r; } 【2】=NULL; head=p; return head; } 答案: =======(答案1)======= q->next =========或========= (*q).next =======(答案2)======= head->next =========或========= (*head).next 第11题(1.0分)题号:1103 在带头结点的单链表中,编一函数在值为x的结点之后插入值为y的结点,若值为x的结点不存在则插在表尾. struct link *insert_link(struct link *head,int x,int y) {struct link *new, *q; new=(struct link *)malloc(struct link); /*生成新结点*/ new->data=y; /*新结点中存入数据y*/ q=head; while((q->next!=NULL)&&(q->data!=x)) /*表非空且未到表尾,查找值为x的结点*/ q=q->next; /*q不断向后移动*/ new->next=【1】; q->next=【2】; return(head); } 答案: =======(答案1)======= q->next =========或========= (*q).next =======(答案2)======= new 第12题(1.0分)题号:454 设有一个线性单链表的结点定义如下: struct node { int d; struct node *next; }; 编写一函数int copy_dellist(struct node *head,int x[]), 将head指向的单链表中存储的所有整数从小到大依次复制到x指向的整型数组中并撤销该链表; 函数返回复制到x数组中的整数个数. int copy_dellist(struct node *head,int x[]) { struct node *pk,*pj,*pm,*pn; int data,k=0; while(head!=NULL) { pj=head; data=pk->d; pn=pk; while(pk->next!=NULL) { pj=pk->next; if(【1】d; pm=pk; pn=pj;} pk=pj; } x[k++]=pn->d; if(【2】) pm->next=pn->next; else head=pn->next; free(pn); } 【3】; } 答案: =======(答案1)======= pj->d =========或========= (*pj).d =======(答案2)======= pn!=head =======(答案3)======= return k =========或========= return (k) =========或========= return k; =========或========= return (k); 第13题(1.0分)题号:459 编一函数顺序输出带头结点单链表各结点的数据域内容. struct link { int data; struct link *next; }; void print_link(struct link *head) { struct link *q; q=【1】;/*让q指向第一个有效数据结点*/ if(q==NULL)/*链表为空*/ printf("linklist is null\n"); else { do { printf("%5d",【2】);/*输出结点数据*/ q=【3】;/*让q指向下一个结点*/ }while(q!=NULL); } } 答案: =======(答案1)======= head->next =========或========= (*head).next =======(答案2)======= q->data =========或========= (*q).data =======(答案3)======= q->next =========或========= (*q).next 第14题(1.0分)题号:1114 以下程序运行时,输出结果的第一行是【1】,第二行是【2】,第三行是【3】. #include #include struct node { char info[5]; struct node *link; }; main() { struct node *create(char *); void print(struct node *); struct node *head='\0'; char c[]="the teacher"; head=create(c); print(head); } struct node *create (char *s) { int k; struct node *h,*p; h='\0'; while(*s) { k=0; p=(struct node *) malloc(sizeof(struct node)); while(k<4&&*s) p->info[k++]=*s++; p->info[k]='\0'; p->link=h; h=p; } return h; } void print(struct node *head) { struct node *p=head; while(p!='\0') { puts(p->info); p=p->link; } } 答案: =======(答案1)======= her =======(答案2)======= teac =======(答案3)======= the 第15题(1.0分)题号:1104 在带头结点的单链表中,编一函数删除数据域值为x的结点. struct link *delete_link(struct link *head,int x) { struct link *q,*m; q=head; m=head->next; while((m!='\0')&&(【1】)) /*寻找被删除结点m*/ { q=m; /*q始终指向m之前的结点*/ m=m->next; } if(【2】) /*不存在符合条件的结点*/ printf("can not exit!\n"); else /*逻辑删除结点*/ { q->next=m->next; 【3】; } return(head); } 答案: =======(答案1)======= m->data!=x =========或========= (*m).data!=x =========或========= x!=m->data =========或========= x!=(*m).data =======(答案2)======= m==NULL =========或========= m=='\0' =======(答案3)======= free(m) =========或========= free(m); 第16题(1.0分)题号:460 以下程序输出结果为【1】. #include struct s { int a; struct s *next; }; main() { int i; static struct s x[2]={5,&x[1],7,&x[0]},*ptr; ptr=&x[0]; for(i=0;i<3;i++) { printf("%d",ptr->a); ptr=ptr->next;} } 答案: =======(答案1)======= 575 第17题(1.0分)题号:458 以下程序运行后输出结果中第一行为【1】,第二行为【2】,第三行为【3】. #include "stdio.h" #include "stdlib.h" struct node { char data; struct node *next; }; struct node *insert(struct node *head,char c) { struct node *p,*p1,*p2; p=(struct node *)malloc(sizeof(struct node)); p->data=c; p->next='\0'; if(head=='\0') head=p; else { p1=p2=head; while(c>p1->data && p1->next!='\0') { p2=p1; p1=p1->next; } if(c<=p1->data) if(p1==head) { p->next=head; head=p; } else { p2->next=p; p->next=p1; } else p1->next=p; } return head; } struct node *del(struct node *head) { struct node *p=head,*q; while(p!='\0') { if(p->data % 2==0) { q=p->next; p->next=q->next; free(q);} p=p->next; } return head; } void print(struct node *head) { struct node *p=head; while(p!='\0') { printf("%c",p->data); p=p->next; } printf("\n"); } void main() { struct node *h='\0'; char *item="32659",*p=item; puts(item); while(*p) h=insert(h,*p++); print(h); del(h); print(h); } 答案: =======(答案1)======= 32659 =======(答案2)======= 23569 =======(答案3)======= 256 第18题(1.0分)题号:1110 以下程序输出的结果是【1】. struct teacher { long num; char name[20]; float salary; }; main() { struct teacher te={15001,"chen ying",1560}; te.salary+=100; printf("%s,%.2f\n",te.name,te.salary); } 答案: =======(答案1)======= chen ying,1660.00 第19题(1.0分)题号:461 设函数a的定义如下: void a() { int x=12,y=345; FILE *fp=fopen("my.dat","w"); fprintf(fp,"%d %d",x,y); fclose(fp); } 已知main函数中有声明int x,y; FILE *fp=fopen("my.dat","r");, 若需要从文件my.dat中正确地读出由函数a写入的两个数据并分别存到变量x和y中, 则在main函数中使用的读数据语句应当是【1】(要求写出语句的完整格式). 答案: =======(答案1)======= fscanf(fp,"%d%d",&x,&y); =========或========= fscanf(fp,"%d %d",&x,&y); 第20题(1.0分)题号:448 以下程序按结构成员grade的值从大到小对结构数组pu的全部元素进行排序,并输出经过排序后的pu数组全部元素的值.排序算法为选择法. #include 【1】struct { int id; int grade; }STUD; void main { STUD pu[10]={{1,4},{2,9},{3,1},{4,5},{5,3},{6,2}, {7,8},{8,6},{9,5},{10,2}},*temp; int i,j,k; for(i=0;i<9;i++) { k=【2】; for(j=i+1;j<10;j++) if(【3】) k=j; if(k!=i) { temp=pu[i]; pu[i]= pu[k];pu[k]=temp;} } for(i=0;i<10;i++) printf("\n%2d:%d",pu[i].id,pu[i].grade); printf("\n"); } 答案: =======(答案1)======= typedef =======(答案2)======= i =======(答案3)======= pu[k].gradepu[k].grade 第21题(1.0分)题号:452 以下程序输出的结果是【1】. sruct teacher { long num; char name[20]; float salary; }; main() { sruct teacher te={15001,"chen ying",1560}; te.salary+=100; printf("%s,%.2f\n",te.name,te.salary); } 答案: =======(答案1)======= chen ying,1660.00 第22题(1.0分)题号:446 在带头结点的单链表中,编一函数删除数据域值为x的结点. struct link *delete_link(struct link *head,int x) { struct link *q,*m; q=head; m=head->next; while((m!='\0')&&(【1】)) /*寻找被删除结点m*/ { q=m; /*q始终指向m之前的结点*/ m=m->next; } if(【2】) /*不存在符合条件的结点*/ printf("can not exit!\n"); else /*逻辑删除结点*/ { q->next=m->next; 【3】; } return(head); } 答案: =======(答案1)======= m->data!=x =========或========= (*m).data!=x =========或========= x!=m->data =========或========= x!=(*m).data =======(答案2)======= m==NULL =========或========= m=='\0' =======(答案3)======= free(m) =========或========= free(m); 第23题(1.0分)题号:450 union un1 { int a; char b; float c; }x; 上述定义的共同体变量x共占用存储空间【1】个字节. 答案: =======(答案1)======= 4 第24题(1.0分)题号:445 在带头结点的单链表中,编一函数在值为x的结点之后插入值为y的结点,若值为x的结点不存在则插在表尾. struct link *insert_link(struct link *head,int x,int y) {struct link *new, *q; new=(struct link *)malloc(struct link); /*生成新结点*/ new->data=y; /*新结点中存入数据y*/ q=head; while((q->next!=NULL)&&(q->data!=x)) /*表非空且未到表尾,查找值为x的结点*/ q=q->next; /*q不断向后移动*/ new->next=【1】; q->next=【2】; return(head); } 答案: =======(答案1)======= q->next =========或========= (*q).next =======(答案2)======= new 第25题(1.0分)题号:1105 以下程序运行时输出结果的第一行是【1】,第二行是【2】,第三行是【3】. #include typedef struct s { int index; int value; }M; main() { static int i,j,k,c[4][4]; M a[10]={{0,1},{3,2},{5,3},{6,4},{9,5},{15,6},{-1,0}},*p=a, b[10]={{1,1},{3,2},{4,3},{6,4},{10,5},{13,6},{-1,0}},*q=b; while(p->index!=-1) { i=p->index/4; j= p->index%4; c[i][j]=p->value; p++; } while(q->index!=-1) { i=q->index/4; j= q->index%4; c[i][j]=q->value; q++; } for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%d",c[i][j]); printf("\n"); } } 答案: =======(答案1)======= 1102 =======(答案2)======= 3340 =======(答案3)======= 0550 二、单项选择共21题(共计21分) 第1题(1.0分)题号:560 有以下程序: struct s { int x; int y; }data[2]={10,100,20,200}; main() { struct s *p=data; printf("%d\n",++(p->x)); } 程序运行后的输出结果是( ). A:10 B:11 C:20 D:21 答案:B 第2题(1.0分)题号:1767 以下程序运行后,输出结果是( ). struct abc{ int a, b, c; }; main() { struct abc s[2]={{1,2,3},{4,5,6}}; int t; t=s[0].a+s[1].b; printf("%d\n",t); } A:5 B:6 C:7 D:8 答案:B 第3题(1.0分)题号:553 变量a所占内存字节数是( ). union U { char st[4]; int i; long l; } struct A { int c; union U u; }a; A:4 B:5 C:6 D:8 答案:C 第4题(1.0分)题号:555 已知结构类型定义和变量声明如下: struct sk {int a;float b;}data[2],*p; 若有p=data,则以下对data[0]中成员a的引用中错误的是( ). A:data[0]->a B:data->a C:p->a D:(*p).a 答案:A 第5题(1.0分)题号:558 已有结构类型定义和变量声明如下: struct person {int num; char name[20]; char sex; struct{int class;char prof[20];}in; }a={20,"li ning",'M'{5,"computer"}},*p=&a; 下列语句中正确的是( ). A:printf("%s",a->name); B:printf("%s",p->in.prof); C:printf("%s",*p.name); D:printf("%c",p->in->prof); 答案:B 第6题(1.0分)题号:563 以下程序运行后,输出结果是( ). struct stu { int num; char name[10]; int age; }; void fun(struct stu *p) { printf("%s\n",(*p).name); } main() { struct stu students[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}}; fun(students+2); } A:Zhang B:Wang C:Zhao D:出错 答案:C 第7题(1.0分)题号:561 假定建立了以下链表结构,指针p指向指针q的前一个结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是( ). A:free(q); p->next=q->next; B:(*p).next=(*q).next; free(q); C:q=(*q).next; (*p).next=q; free(q); D:q=q->next; p->next=q; p=p->next; free(p); 答案:B 第8题(1.0分)题号:550 已知有如下的结构类型定义和变量声明: struct student { int num; char name[10]; }stu={1,"marry"},*p=&stu; 则下列语句中错误的是( ). A:printf("%d",stu.num); B:printf("%d",(&stu)->num); C:printf("%d",&stu->num); D:printf("%d",p->num); 答案:C 第9题(1.0分)题号:557 设有以下说明语句 struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是( ). A:struct结构体类型的关键字 B:example是结构体类型名 C:x,y,z都是结构体成员名 D:struct ex是结构体类型 答案:B 第10题(1.0分)题号:1766 以下所列对结构类型变量td1的声明中错误的是( ). A:typedef struct aa { int n; float m; }AA; AA td1; B:#define AA struct aa AA{ int n; float m; } tdl; C:struct { int n; float m; } aa; struct aa tdl; D:struct { int n; float m; } tdl; 答案:C 第11题(1.0分)题号:552 以下程序运行后,输出结果是( ). struct abc{ int a, b, c; }; main() { struct abc s[2]={{1,2,3},{4,5,6}}; int t; t=s[0].a+s[1].b; printf("%d\n",t); } A:5 B:6 C:7 D:8 答案:B 第12题(1.0分)题号:562 在一个单链表中,若删除p所指结点的直接后继结点,则执行( ). A:q=p->next;p->next=q->next;free(q); B:p=p->next; p->next=p->next->next; C:p->next= p->next; D:p= p->next ->next; 答案:A 第13题(1.0分)题号:556 若有定义: struct tp {float a; char class; }stu; 则对成员class的正确引用是( ). A:stu->class B:stu.class C:stu>class D:stu * class 答案:B 第14题(1.0分)题号:551 以下所列对结构类型变量td1的声明中错误的是( ). A:typedef struct aa { int n; float m; }AA; AA td1; B:#define AA struct aa AA{ int n; float m; } tdl; C:struct { int n; float m; } aa; struct aa tdl; D:struct { int n; float m; } tdl; 答案:C 第15题(1.0分)题号:1774 设有结构定义及变量声明如下: struct produce { char code[5]; float price; }y[4]={"100",100}; 以下表达式中错误的是( ). A:(*y).code[0]='2'; B:y[0].code[0]='2'; C:y->price=100; D:(*y)->price=100; 答案:C 第16题(1.0分)题号:1775 有以下程序: struct s { int x; int y; }data[2]={10,100,20,200}; main() { struct s *p=data; printf("%d\n",++(p->x)); } 程序运行后的输出结果是( ). A:10 B:11 C:20 D:21 答案:B 第17题(1.0分)题号:549 若main函数中有以下定义、声明和语句: struct test { int a; char *b; }; char str1[]="United states of American",str2[]="England"; struct test x[2],*p=x; x[0].a=300;x[0].b=str1; x[1].a=400;x[1].b=str2; 则不能输出字符串"England"的语句是( ). A:puts(x[1].b); B:puts((x+1)->b); C:puts((++x)->b); D:puts((++p)->b); 答案:C 第18题(1.0分)题号:1770 已知结构类型定义和变量声明如下: struct sk {int a;float b;}data[2],*p; 若有p=data,则以下对data[0]中成员a的引用中错误的是( ). A:data[0]->a B:data->a C:p->a D:(*p).a 答案:A 第19题(1.0分)题号:554 已知有结构类型定义: typedef struct ex{ long int num; char sex; struct ex *next; }student; 下列叙述正确的是( ). A:struct ex是结构类型 B:student是结构类型的变量名 C:ex可缺省 D:student不可缺省 答案:A 第20题(1.0分)题号:1764 若main函数中有以下定义、声明和语句: struct test { int a; char *b; }; char str1[]="United states of American",str2[]="England"; struct test x[2],*p=x; x[0].a=300;x[0].b=str1; x[1].a=400;x[1].b=str2; 则不能输出字符串"England"的语句是( ). A:puts(x[1].b); B:puts((x+1)->b); C:puts((++x)->b); D:puts((++p)->b); 答案:C 第21题(1.0分)题号:559 设有结构定义及变量声明如下: struct produce { char code[5]; float price; }y[4]={"100",100}; 以下表达式中错误的是( ). A:(*y).code[0]='2'; B:y[0].code[0]='2'; C:y->price=100; D:(*y)->price=100; 答案:C 试卷编号:656 所属语言:C语言 试卷方案:10 试卷总分:28分 共有题型:2种 一、填空共6题(共计6分) 第1题(1.0分)题号:467 设已有非空文本数据文件file1.dat,要求能读出文件中原有的全部数据,并在文件原有数据之后添加新数据,则用FILE *fp=fopen("file1.dat","【1】")打开该文件. 答案: =======(答案1)======= "a+" =========或========= a+ 第2题(1.0分)题号:469 在调用函数fopen("a:\\b.dat","r")时,若A盘根目录下不存在文件b.dat,则函数的返回值是【1】. 答案: =======(答案1)======= =========或========= NULL =========或========= 空地址 =========或========= '\0' =========或========= 空 第3题(1.0分)题号:468 当程序读写数据文件时,需要有声明语句"FILE *fp;",在该声明语句之前必须包含 的头文件名为【1】. 答案: =======(答案1)======= stdio.h =========或========= "stdio.h" =========或========= 第4题(1.0分)题号:1124 有如下程序 #include main() {struct st { int x; int y; }st1[5]={10,11,20,21,30,31,40,41,50,51}; FILE *fp; int i; fp=fopen("stud.dat","wb+"); fwrite(st1,sizeof(struct st),5,fp); rewind(fp); for(i=0;i<3;i++) { fread(&st1[i],sizeof(struct st),1,fp); fseek(fp,sizeof(struct st),SEEK_CUR); } fseek(fp,-4L*sizeof(struct st),SEEK_END); for(i=3;i<5;i++) { fread(&st1[i],sizeof(struct st),1,fp); fseek(fp,sizeof(struct st),SEEK_CUR); } for(i=0;i<5;i++) printf("%d,%d\n",st1[i].x,st1[i].y); fclose(fp); } 以上程序输出结果的第一行【1】,第二行是【2】,第三行是【3】. 答案: =======(答案1)======= 10,11 =======(答案2)======= 30,31 =======(答案3)======= 50,51 第5题(1.0分)题号:470 以下程序从一个文件名为file1的磁盘文件中顺序读取字符,并在屏幕上显示,请将正确答案填写在横线上. #include main() { FILE *fp; int ch; fp=fopen("file1","r"); ch=fgetc(fp); while(【1】) { putchar(ch); ch=【2】; } } 答案: =======(答案1)======= ch!=EOF =======(答案2)======= fgetc(fp) 第6题(1.0分)题号:1127 在调用函数fopen("a:\\b.dat","r")时,若A盘根目录下不存在文件b.dat,则函数的返回值是【1】. 答案: =======(答案1)======= =========或========= NULL =========或========= 空地址 =========或========= '\0' =========或========= 空 二、单项选择共22题(共计22分) 第1题(1.0分)题号:575 完成将文件指针fp重新指向文件开头的函数是( ). A:feof(fp) B:rewind(fp) C:fseek(fp) D:ftell(fp) 答案:B 第2题(1.0分)题号:1790 完成将文件指针fp重新指向文件开头的函数是( ). A:feof(fp) B:rewind(fp) C:fseek(fp) D:ftell(fp) 答案:B 第3题(1.0分)题号:1784 fgets(s,n,fp)函数的功能是从文件读出字符串并存入内存首地址s,以下叙述中正确的是( ). A:n代表最少能读出n个字符串 B:n代表最多能读出n个字符 C:n代表最少能读出n-1个字符串 D:n代表最多能读出n-1个字符 答案:D 第4题(1.0分)题号:1782 若用fopen()函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开方式是( ). A:"ab+" B:"wb+" C:"rb+" D:"ab" 答案:B 第5题(1.0分)题号:1791 以下不能将文件指针移到文件开头的函数是( ). A:rewind(fp); B:fseek(fp,0,SEEK_SET); C:fseek(fp,-(long)ftell(fp),SEEK_CUR); D:fseek(fp,0,SEEK_END); 答案:D 第6题(1.0分)题号:567 若用fopen()函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开方式是( ). A:"ab+" B:"wb+" C:"rb+" D:"ab" 答案:B 第7题(1.0分)题号:579 执行fseek(fp,-20L,1);后的结果是( ). A:将文件指针从当前位置向文件末尾方向移动20字节 B:将文件指针从文件头向文件末尾方向移动20字节 C:将文件指针从当前位置向文件头方向移动20字节 D:将文件指针从文件末尾向文件头方向移动20字节 答案:C 第8题(1.0分)题号:1793 若fp是指向某文件的指针,且已读到该文件的末尾,则函数feof(fp)的返回值是( ). A:EOF B:-1 C:非0值 D:NULL 答案:C 第9题(1.0分)题号:1781 当已存在一个t.txt文件时,执行函数fopen("t.txt","r+")的功能是( ). A:打开t.txt文件,清除原有内容 B:打开t.txt文件,只能写入新的内容 C:打开t.txt文件,只能读取原有的内容 D:打开t.txt文件,可以读取和写入新的内容 答案:D 第10题(1.0分)题号:1788 C语言中,数据文件的存取方式为( ). A:只能顺序存取 B:只能随机存取(也叫直接存取) C:可以顺序存取和随机存取 D:只能从文件的开头进行存取 答案:C 第11题(1.0分)题号:571 fgets(str,n,fp)函数从文件中读出一个字符串,以下正确的叙述是( ). A:字符串读出后不会自动加入'\0' B:fp是file类型的指针 C:fgets函数将文件中最多读出n-1个字符 D:fgets函数将文件中最多读出n个字符 答案:C 第12题(1.0分)题号:570 下列叙述中正确的是( ). A:EOF只能作为二进制文件的结束标志,feof()只能用来判断文本文件是否结束 B:EOF只能作为文本文件的结束标志,feof()只能用来判断二进制文件是否结束 C:EOF可作为文本文件和二进制文件的结束标志,feof()只能用来判断文本文件是否结束 D:EOF只能作为文件文件的结束标志,feof()则可以用来判断文本文件和二进制文件是否结束答案:D 第13题(1.0分)题号:1786 fgets(str,n,fp)函数从文件中读出一个字符串,以下正确的叙述是( ). A:字符串读出后不会自动加入'\0' B:fp是file类型的指针 C:fgets函数将文件中最多读出n-1个字符 D:fgets函数将文件中最多读出n个字符 答案:C 第14题(1.0分)题号:1783 若用fopen()函数打开一个已存在的文本文件,保留该文件原有数据且可以读也可以写,则文件打开方式是( ). A:"r+" B:"w+" C:"a+" D:"a" 答案:C 第15题(1.0分)题号:574 fseek函数可以实现的操作是( ). A:改变文件的位置指针的当前位置 B:文件的顺序读写 C:文件的随机读写 D:以上都不对 答案:A 第16题(1.0分)题号:1795 若fp为文件指针,且文件已经正确打开,以下语句的输出结果为( ). fseek(fp,0,SEEK_END); n=ftell(fp); printf("n=%d\n",n); A:fp所指文件的长度,以字节为单位 B:fp所指文件的当前位置,以比特为单位 C:fp所指文件的长度,以比特为单位 D:fp所指文件的当前位置,以字节为单位 答案:A 第17题(1.0分)题号:1796 已知A盘根目录下的一个文本数据文件data.dat中存储了100个int型数据,若需要修改该 文件中已经存在的若干个数据的值,只能调用一次fopen函数,已有声明语句"FILE *fp;", 则fopen函数的正确调用形式是( ). A:fp=fopen("a:\\data.dat","r+"); B:fp=fopen("a:\\data.dat","w+"); C:fp=fopen("a:\\data.dat","a+"); D:fp=fopen("a:\\data.dat","w"); 答案:A 第18题(1.0分)题号:1797 已知有语句"FILE *fp; int x=123; fp=fopen("out.dat","w");", 如果需要将变量x的值以文本形式保存到一个磁盘文件out.dat中,则以下函数调用形式中,正确的是( ). A:fprintf("%d",x); B:fprintf(fp,"%d",x); C:fprintf("%d",x,fp); D:fprintf("out.dat","%d",x); 答案:B 第19题(1.0分)题号:577 fread(buf,64,2,fp)的功能是( ). A:从fp指向的文件中读出整数64,并存放在buf中 B:从fp指向的文件中读出整数64和2,并存放在buf中 C:从fp指向的文件中读出64个字节的字符,并存放在buf中 D:从fp指向的文件中读出2个64个字节的字符,并存放在buf中 答案:D 第20题(1.0分)题号:572 C语言文件的组成成分是( ). A:记录 B:数据行 C:数据块 D:字符(字节)系列 答案:D 第21题(1.0分)题号:1779 若文件尚未结束则文件函数feof()的返回值是( ). A:0 B:1 C:-1 D:NULL 答案:A 第22题(1.0分)题号:565 以C语言中,用"a"方式打开一个已含有10个字符的文本文件,并写入了8个新字符,则该文件中存放的字符是( ). A:新写入的8个字符 B:新写入的8个字符覆盖原有字符中的前8个字符,保留原有的后2个字符 C:原有的10个字符在前,新写入的8个字符在后 D:新写入的8个字符在前,原有的10个字符在后 答案:C
本文档为【金陵科技学院c语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_215732
暂无简介~
格式:doc
大小:554KB
软件:Word
页数:396
分类:互联网
上传时间:2019-06-04
浏览量:62