C语言期末题库(八套试卷)及答案_第1页
C语言期末题库(八套试卷)及答案_第2页
C语言期末题库(八套试卷)及答案_第3页
C语言期末题库(八套试卷)及答案_第4页
C语言期末题库(八套试卷)及答案_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言期末题库(一)(总分】00分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、在下面的运算符中,不是算术运算符的是.A、++B、=C、%D、+2、下列选项不是c关键字的是otypedefvoidC>boolD、inc3、若有定义"doublea;”,则正确的输入语句是—A、scan{(M%if”,a);B、scanf("%f”,&a);C、scan{(w%If”,&a)D、scan{(n%le”,&a);4、下列程序的输出结果是omain()inta=0,i;for(i=l;i<5;i++){switch(i)(case0:case3:a+=l;case1;case2:a+=2;default:a+=3;A、19B、1C、6D、85、执行循环语句后,i变量的值是i=4:while(i-);printfi);A、0B、-1C、1D、有错误6、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是OA、(*p)max(a,b);*pmax(a,b);(*p)(afb);D、*p(a,b);7、若"intn;floatf=13.8;",则执行"n=(int)f%3"后,n的值是0A、1B、4C、4.333333D、4.68、以下定义数组中错误的是ointa[10];inta[2][20];inta[20][];D^inta[];9、若有说明语句:charc='\72';则变量c。A、包含1个字符B、包含2个字符C、包含3个字符D、说明不合法,C的值不确定10、在下列各项中,运算级别最低的为0A、算术运算符B、关系运算符w ~c、逻辑运算符D、圆括号()11、有以下程序:main()(inta[]={l,2,3,4,5,6,7,8,9,0),*p;for(p=a;p<a+10,p++)printf("%d,”,*p);}程序运行后的输出结果是.A,1,234,5,6,7,8,9,0,B、2,3,4,5,6,7,8,9,10,1,C、01,23,4,5,6,7,8,9,D、1,1,1,1,1,1,1,1,1,1,12、c语言主要是借助以下哪种手段来实现程序的模块化()A、使用丰富的数据类型B、定义常量和外部变量C、定义函数D、使用三种基本结构语句13、下列选项中不是字符常量的是。A、’\v'B、’\x2a'C、'a'D、"\0"14、若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的表达式为()oA、p+1B、a+1C、a++D、++p15、有以下程序main()inti=l,j=l,k=2;if((j++|k++)&&i++)printf(*%d,%d,%d\n*,i,j,k);执行后输出的结果是。A、1,1,2B、2,2,1C、2,2,2D、2,2,316、结构化程序设计方法的结构不包括.A、顺序结构B、分支结构C、循环结构D、跳转结构17、有以下程序structs{intn;inta[20];);voidf(int*a,intn)(inti;for(i=0;i<n-l;i++)a[i]+=i;}main()(inti;structss={10,{2,3,1,6,8,7,5,4,10,9}};f(s.a,s.n);for(i=0;i<s.n;i++)printf(*%d,*,s.a[i]);}程序运行后的输出结果是oA、2,4,3,9,12,12,11,11,18,9,B、3,4,2,7,9,8,6,5,11,10,C、2,3,1,6,8,7,5,4,10,9,D、1,2,3,6,8,7,5,4,10,9,18、有以下程序main()inta,b,c=246;a=c/100%9;printf("%d,%d\n”,a,b);)输出结果是。A、2,1B、3,2C、4,3D、2,-119>若有以下数组说明,则i=10;元素数值是。inta[12]={1,4,7,10,2,5,8,11,3,6,9,12};A、10B、9C、6D、520、下列程序的输出结果是ostructstu(charnum[10];floatscore[3];)intmain(){structstus[3]={{"20021”,90,95,85},{"20022”,95,80,75},{"20023”,100,95,90)};structstu*p=s;inti;floatsum=0;for(i=0;i<3;i++)sum=sum+p->score[i];}printf("%6.2f*,sum);return0;A、260.00B、270.00C、280.00D、285.00二、判断题(每小题2分,共20分)()1、函数的形参都属于全局变量。()2、do-while语句的一般形式如下,第一次进入循环时,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为"真”,继续循环,直到表达式的值为〃假”,循环结束,执行do-while的下一条语句。do(循环体语句}while(表达式);()3、在switch语句中必须使用break语句()4、选择结构可以使用嵌套形式,但是循环结构不可以使用嵌套形式。()5、c语言标准输入操作中,gets()函数一次只可读取一个字符。()6、c语言中输入与输出操作都是由自定义函数来实现的。()7、已有定义:chara[]="xyz",b[]={'x','y','z'};则数组a和b的长度相同()8、在函数的定义和调用过程中,形式参数和实在参数数目可以不一致()9、在c语言中,引用数组元素时,数组下标的数据类型只能是整型常量。()()10、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内容:#include<graphics.h>Wc#include*graphics.h"。三、编程题(每小题分,共40分)1、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?(本题10分)2、编写程序:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。(本题14分)3、建立一个链表每个结点包括学号、姓名、性别、年龄、地址。输入一个学号打印该学号的学生的所有信息。如无此学号,则输出“没有找到”,使用结构体实现(本题16分)参考答案一、单项选择题1、B【解析】算术运算符包括:+、->*、/、%、++、-O而选项B中的=属于关系运算符。2、D3、D4、A5、B6、C7、A8、C【解析】考查数组的定义方法。[解题要点]二维数面的二维不能省略。[考点链接]数组的下标是从零开始的。9、A【解析】C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“'”开头的字符。其中,“\ddd”表示用ASCH码(八进制数)表示一个字符,本题中的charc='\72'即表示占一个字符的变量c的ASCH码值。10、C【解析】如果在同一个表达式中出现不同的运算符,其优先顺序为:先执行算术运算、字符串运算和日期时间运算,其次执行关系运算,最后执行逻辑运算。如果在表达式中包含圆括号,首先应该计算出圆括号中的结果,其优先级最高。11、A【解析】C语言规定数组变量名代表数组的首地址,即第0号元素的地址。本题将a数组中的值全部输出,即为1,2,3,4,5,6,7,8,9,0,。12、C【解析】C语言程序的模块化通过函数来体现,所以选择Co13、D14>C15、C16、D17、A【解析】本题中,在调用函数时将结构体变量的两个成员作为实参,其中的成员数组a实际向函数f()传递的是该数组的地址,因此在函数f()中所对应的形参发生改变时,该数组内的数据也会发生改变。函数f()实现的功能是将成员数组中的前9个元素分别加上该元素的下标,作为新的元素。18、A19、B20、B二、判断题1、错误2、正确3、错误4、错误5、错误【解析】gets从标准输入设备读字符串函数,可以无限读取,不会判断上限6、错误7、错误8、错误9、错误10、错误三、编程题1、程序分析:见下面注释程序源代码:mainO(floatsn=100.0,hn=sn/2;intn;for(n=2;n<=10;n++)(sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2;/*第n次反跳高度*/)printf(*thetotalofroadis%f\n',sn);printf(*thetenthis%fmeter'n”,hn);)#include"stdio.h"mainOW lfloath=100,s=100;inti=l;while(i<=10)(h=h/2;printf("第%2d次反弹的高度:%12.9f,第%2d次落地时经过的距离:%12.8f\n\i,h,i,s);s=s+2*h;i++;))2、#include<stdio.h>intmain()inta[ll]={l,4,6,9,13,16,19,28,40,100};inttempi,temp2,number,end,i,j;printf("原始数组是:\n");for(i=0;i<10;i++)printf("%4d",a[i]);printf("\n插入一个新的数字:”);scanf&number);end=a[9];if(number>end)a[10]=number;else(for(i=0;i<10;i++)(if(a[i]>number){templ=a[i];a[i]=number;for(j=i+l;j<ll;j++)temp2=a[j];a[j]=templ;templ=temp2;}break;for(i=0;i<ll;i++)printf(*%4d*,a[i]);printf('\n");return0;)【解析】首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。3、#include<stdlib.h>#include<stdio.h>structnode{longNo;charName[10];charsex;intage;structnode*next;};nodc*createlink()(structnode*h,*p,*q;longnum;h=(structnode*)malloc(sizeof(structnode));p二q二h;printf(”请输入学生学号(输入0退出输入)!\n”);scanf("%1d”,&num);while(num!=0)p=(structnode*)malloc(sizeof(structnode));p->No=num;w L printf("请输入学生姓名,\n");scanf(*%s*,p->Name);printf(”请输入学生年龄和性别,\n");scanf("%d,%c”,&p->age,&p->sex);q->next=p;q二P;printf("请输入学生学号(输入0退出输入)!\n");scanf&num);}p->next=NULL;returnh;)voidfind(structnode*phead,longnum)structnode*p;if(phead->next==NULL)(printf(〃没有找到.\n");return;}p=phead->next;while(p!=NULL&&P->No!=num)p=p->next;if(p二二NULL)(printf("没有找到.\rT);return;}elseprintf("学生的姓名,%s,年龄,%d,性别,%c*,p->Name,p->age,p->sex);}intmain(){longnum;structnode*phead;phead=createlink();printf("请输入要查找的学生的学号:\n〃);scanf&num);find(phead,num);C语言期末题库(二)(总分100分,考成时长90分钟)一、单项选择题(每小题2分,共40分)1、以下叙述中正确的是.A、预处理命令行必须位于c源程序的起始位置B、在c语言中,预处理命令行都以开头C、每个c程序必须在开头包含预处理命令行:^includeD、C语言的预处理不能实现宏定义和条件编译的功能2、在c语言程序中可用做用户标识符的是。voidB、aa123abcBBNcasC>as+b3D、6f—123DoIfSIG3、设a=3,b=2,则表达式a"b>>2的值的二进制表示为A、000000110000011000000100D、104、以下程序的输出结果是o#include<stdio.h>main()(inta=l,b=3;if((++a<0)&&!(b―<=0))printf("%d,%d\n”,a,b);elseprintf(*%d,%d\n*,b,a);)A、2,2B、1,3C、3,2D、3,15、以下说法中不正确是。A、使用while循环时,循环变量初始化的操作应在循环语句之前完成B、while循环是先判断表达式,后执行循环体语句C、do-while和for循环均是先执行循环体语句,后判断表达式D、for,while和for-while循环中的循环体均可以由空语句构成6、putchar()函数可以向终端输出一个()。A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值7、以下不合法的数值常量是.A、011B、leiC、8.0E0.5D,Oxabcd8、以下关于数组的描述正确的是.A、数组的大小是固定的,但可以有不同的类型的数组元素。B、数组的大小是可变的,但所有数组元素的类型必须相同。C、数组的大小是固定的,但所有数组元素的类型必须相同。D、数组的大小是可变的,但可以有不同的类型的数组元素。9、以下关于c/c语言指针变量的叙述中,正确的是.A、指针变量可以是全局变量也可以是局部变量B、必须为指针变量与指针所指向的变量分配相同大小的存储空间C、对指针变量进行算术运算是没有意义的D、指针变量必须由动态产生的数据对象来赋值10、下列字符串中可以用作c标识符的是.2009vargototest-2009-12311、下面程序段的执行结果是.#include<stdio.h>mainOw inta[5]⑸,i,j;for(i=l;i<5;i++)for(j=l;j<5;j++)a[i][j]=(i<j)*(j/i);for(i=l;iV5;i++){for(j=l;j<5;j++)printfC%2d*,a[i][j]);printfC\n*);1111mi1111111100010010010010000234001200010000000000000000000012、在函数调用过程中,如果函数funa调用了函数funb,函数funb乂调用了函数funa,则oA、称为函数的直接递归调用B、称为函数的间接递归调用C、称为函数的循环调用[)、C语言中不允许这样的递归调用13、以下字符常量中不合法的一项是oA、'bB、,,D、14、下列程序的输出结果是Q#include<stdio.h>intfun(intx)(intp;if(x==0IIx==l)return3;elsep=x-fun(x-2);returnp;}voidmain()(printf("\n%d”,fun(5));)A、5B、3C、7D、115、若有如下定义并赋值:charch='a',a;则执行语句"printf("%d”,a=ch+2.6);后的输出结果是oA、cB、dC、99D、10016、有以下程序ttinclude<stdio.h>main()(inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2)(case0:switch(a[i]%2)case0:a[i]++;break;case1:a[i]一;)break;case1:a[i]=O;}for(i=0;i<4;i++)printf(*%dprintf("\n");}程序运行后的输出结果是oTOC\o"1-5"\h\zA. 3 3 4 4B、2 0 5 0C> 3 0 4 0D、 0 3 0 417、有以下程序:^include<stdio.h>structs(inta,b;)data[2]={10,100,20,200);main()(structsp=data[l];printf(线d\n”,++(p.a));)程序运行后的输出结果是OA、10B、11C、20D、2118、下面程序的运行结果是omain()inta,b;a=-l;b=0;do(++a;++a;b+二a;)while(a<9);printf("%d\n”,b);)A、34B、24C、26D、2519、有以下程序mainO(chars[]=*\nl23\\*;printf(/z%d,称d\n〃,strlen(s),sizeof(s));}执行后输出结果是OA、赋初值的字符串有错B、6,7C、5,6D、6,620、设有以下语句typedefstructs(intg;charh;)t;则下面叙述中正确的是oA、可用S定义结构体变量w ~B、可以用T定义结构体变量C、S是struct类型的变量D、T是structS类型的变量二、判断题(每小题2分,共20分)()1、在标准c中并不区分英文字符的大小写()2、在标准c语言中,宏替换是程序运行时完成的。()3、静态局部变量的值在函数调用结束后不消失而保留原值()4、do-while循环中,根据情况可以省略while.()()5、字符串可以存储在字符数组中,也可以存储在字符型指针变量中()6、函数的实参和形参都可以是变量、常量和表达式。()7、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。()8、文件的读函数是从输入文件中读取信息,并存放在内存中。()9、在定义数组时,有时可以将该数组的维数省略.()()10、全局静态变量的作用域限制在定义它的源文件内,只能为该源文件内的函数公用。三、编程题(每小题分,共40分)1,编写程序:利用指针方法,输入3个数a,b,c,按大小顺序输出。(本题10分)2、编程计算1!+2!+3!+…+10的值。(本题14分)3、编写程序:创建一个长度为n的链表,然后反向输出该链表。(本题16分)参考答案一、单项选择题1、B2、B3、A4、C【解析】解答本题的关键在于读懂if语句条件中的表达式。初始时a=l,b=3,所以++a=2>0,因此++a<0为假,因为是进行逻辑与(&&)运算,在&&的第一个运算对象为假的前提下不用判断第二个运算对象的真假,就可以直接得出整个表达式的值为逻辑0,所以直接执行else语句。5、C【解析】本题主要考查的知识点为for、while和do-while循环的特点。[要点透析]for循环是先判断表达式,后执行循环体语句。6、D7、C8、C9、A【解析】存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。选项A显然是正确的。对于选项B,指针变量和指针所指向的变量存放的内容是不一样的,只要分配够用就行了,不需要分配一样大小的存储空间。对于选项C,指针变量加1便指向下一个存储单元,是有意义的。另外指针变量可以静态地定义。10、D【解析】在C中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。C++变量区分大小写。H、C【解析】本题使用一个双重循环对一个二维数组的一部分赋值(下标中含0的元素不赋值),赋值表达式是a[i][j]=(i/j)*(j/i)。因为i和j都是正整数,所以当i大于j时,j/i为0,当i小于j时,i/j为0,而0乘以任何数都为0,故表达式(i/j)*(j/i)在i和j不相等时的值为0。当i和j相等时,i/j和j/i的值都为1,所以表达式(i/j)*(j/i)的值为1。故二维数组中的 a[2][2],a[3][3],a[4][4]被赋为1,其余下标不含0的元素被赋为0。故应该选择C。12、B【解析】在调用一个函数的过程中乂出现直接或间接地调用该函数本身,称为函数的递归调用。本题描述的函数调用属于函数的间接递归调用。13、A【解析】字符常量是由单引号括起来的一个字符,而'b'是两个字符‘b'和’不是字符常量。14、A【解析】本题考查函数的递归调用。在函数递归调用时,fun(5):a=5-fun(3)->fun3=a=3-fun(l)->fun(l):a-3,反推回去fun(3):a=3-3=0->fun(5):a=5-0=5>最后的计算结果为5。15、C16>C17、D【解析】声明data是结构S数组。初始化data[0].a=10;,data[O].b=100;,data[l].a=20:>data[l].b=200<>主函数中p=data[l];,BPp.a=data[l].a;>p.b=data[l].b:.执行语句printf("%d\n”,++(p.a));打印输出时p.a先增1再打印,BPp.a=data[l].a=20,先增1等于21。18、D19、C【解析】本题在定义字符数组时没有定义数组长度,但是给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\0')。字符串的长度为有效字符的个数5。因此printf语句中输出的结果为5,6。20、A二、判断题1、错误2、错误3、正确4、错误5、错误6、错误7、正确8、正确9、正确10、正确三、编程题1#include<stdio.h>voidswap(int*,int*);intmain(void)(inta,b,c;int*pl,*p2,*p3;printf("输入a,bscanf(*%d%d&a,&b,&c);pl=&a;p2=&b;p3-&c;if(a>b)swap(pl,p2);if(a>c)swap(pl,p3);if(b>c)swap(p2,p3);printf(*%d%d%d\n",a,b,c);)voidswap(int*sl,int*s2)(intt;t=*sl;*sl=*s2;*s2=t;}2、^includevoidmain(){inti,j,suml=l,sum=0;for(i=l;i<=10;i++)(for(j=l;j<=i;j++)suml=suml*j;sum=sum+suml;printf(*1!+2!+3!+―+10!=%ld\n*,sum);}3、#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedefstructLNode{int data;structLNode*next;}LNode,*LinkList;LinkListCreateList(intn);voidprint(LinkListh);intmain(){LinkListHead二NULL;intn;scanf&n);Head=CreateList(n);printf("刚刚建立的各个链表元素的值为:\n〃);print(Head);printf(*\n\n*);system("pause");return0;}LinkListCreateList(intn)(LinkListL,p,q;inti;L二(LNode*)malloc(sizeof(LNode));if(!L)return0;L->next=NULL;q二L;for(i=l;i<=n;i++)p二(LinkList)malloc(sizeof(LNode));printf("请输入第%d个元素的值:",i);scanf("%d”,&(p->data));p->next=NULL;q->next=p;q二P;}returnL;)voidprint(LinkListh)(LinkListp=h->next;while(p!=NULL){printfC%d*,p->data);p=p->next;C语言期末题库(三)(总分100分,考成时长90分钟)一、单项选择题(每小题2分,共40分)1、流程图中,输入/输出框用()图形表示?A、圆角矩形B、平行四边形C、矩形D、菱形2、能正确表示"当x的取值在[1,10]和[100,11。]范围内为真,否则为假”的表达式是A、(x>=l)&&(x<=10)&&(x>=100)&&(X<=110)B、(x>=l)&&(x<=10)!:(x>=100)11(x<=110)C、(x>=l)&&(x<=10)||(x>=100)&&(x<=110)D,(x>=l)11(x<=10)&&(x>=100)11(x<=110)3、如下程序段运行输出的结果为。inta=5,b=6,c;c=++a+b—;printf(*%d,%d,%d%\n”,a,b,c);5,6,116,5,116,5,126,6,124、c语言中下面哪个不是条件语句?A、ififelseNSLogswitch5、下面不属于算法的控制结构的是。A、顺序结构B、归纳结构C,循环结构D、选择结构6、若有定义:intc[4][5],(*cp)[5]:和语句cp=c;,则能正确引用c数组元素的是A、cp+1B、*(cp+3)C、*(cp+l)+3D、*(*cp+2)7、关于数据类型存储大小从小到大正确的是oA、sizeof(char)<sizeof(shortint)<sizeof(int)<sizeof(float)sizeof(char)<sizeof(shortint)<sizeof(int)<sizeof(double)C、sizeof(char)<sizeof(int)<sizeof(longint)<sizeof(float)D、sizeof(char)<sizeof(unsignedint)<sizeof(longint)<sizeof(double)8、以下能正确定义一维数组的选项是oA、intnum[];B、#defineN100intnum[N];C、intnum[0..100];D、intN=100;intnum[N];9、在c语言中,要求参加运算的数必须是整数的运算符是oA、%B、/C、!D、**10、下列对字符串的定义中,错误的是ocharstr[7]="FORTRAN”;charstr[]="FORTRAN”;char*str="FORTRAN”;D、charstr[]=F'JO','R'TJR'」A'JN<0};11、已知:inta[2][3];则对数组元素的非法引用是。A、*(a[0]+2)B..a[l][3]C、a[l][0]D、*(*(a+l)+2)12、以下程序:#include<stdio.h>main(){charstr[10];scanf(*%s*,&str);printf(袋s\n”,str);运行上面的程序,输入字符串howareyou,则程序的执行结果是。A、howB、howareyouC、hD、howareyou13、调试程序是指对程序进行A、编辑B、编译C、查错和排错D、连接14、以下叙述中正确的是.A、在C语言中,常量名也要遵守标识符的命名规则B、对单目运算符来说,运算对象一定在其右侧C、标识符的首字符必须是下划线、字母,其他字符可以是任意的键盘可键入字符【)、变量占用内存,常量不占用内存15、以下程序的输出结果是=mainO(chars[]=*159*,*p;p-s;printf(飞c”,*p++);printf(Me”,*p++);)1516C、26D、5916、以下选项中哪些描述是不正确的?A、循环语句必须要有终止条件否则不能编译B、break关键字用于跳出当前循环C、continue用于终止本次循环,执行下一次循环D、switch条件语句中可以使用break17、有以下程序typedefstruct{intb,p;}a;voidf(ac) /*注意:c是结构变量名*/(intj;c.b+=l;c.p+=2;)main(){inti;aa={l,2};f(a);printf("%d,%d\n*,a.b,a.p);}程序运行后的输出结果是OA、2,3B、2,4C、1,4D、1,218、以下程序的输出结果是ottinclude<string.h>main()(char*a="abcdefghi”;fun(a);puts(a);}fun(char*s)intx,y;charc;for(x=0,y=strlen(s)-l;x<y;x++,y一)c=s[y];s[y]=s[x];s[x]=c;)}ihgfedcbaabcdefghiabcdedcbaihgfefghi19、若有定义:inta[10],则对数组a元素的正确引用是.A、a[10]B、a[3.5]C、a(5)D、a[0]20、以下关于c语言数据类型使用的叙述中错误的是.A、若只处理“真”和“假”两种逻辑值,应使用逻辑类型B、若要保存带有多位小数的数据,可使用双精度类型C、整数类型表示的自然数是准确无误差的D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型二、判断题(每小题2分,共20分)()1、通常字符常量的长度为1个字节()2、c语言中只有相同类型的指针变量才能相互赋值。()3、在c语言程序中,函数名和圆括号可以省略。()4、continue语句只能出现在循环体语句中,不能用在其他的地方。()5、用puts和gets函数可以输入或输出多个字符串。()6、在c语言中,可以使用关键字来定义变量名、函数名。()()7、若有定义一维数组inta[4]的首地址为0078h,则a[l]元素的首地址是0079h(设int型数据占两个字节)。()8、数组名作为函数参数,传送的是地址.()9、函数调用时,如果把数组名作实参,则形参数组元素的值发生变化时,实参数组元素的值同时发生变化。()10、文件包含命令中,只能包含扩展名为.h的文件。三、编程题(每小题分,共40分)1、编写程序:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。(本题10分)2、编写程序:输入三角形的边长,求三角形面积(面积=5口U(56)(5-1))(5-c)),s=(a+b+c)/2).(本题14分)3、通过函数调用实现:讲结构体数组中的三个元素按num成员进行升序排列。要求:①数组元素依次赋初值为:{12,"sunny”,89.1}、{8,"henry”,73.5}、{21,*lucy*,91.7}.②结构体定义如下:structs(intnum;charname[30];floatscore;};(本题16分)参考答案一、单项选择题1、B2、C3、C4、C5、B【解析】顺序结构、循环结构和选择结构是算法的基本结构。6、D7、B8、B9、A10、A11、B12、A【解析】当从键盘输入bowareyou时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并在其后自动加上结束符“\0”。13、C14、A【解析】C语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符,常量名也要遵守标识命名规则,选项A正确;单目运算符的运算对象可以在其左侧或者右侧,如i++或++i,选项B错误;C语言规定标识符只能由字母、数字、下划线组成,选项C错误;一般来说,基本类型(整型、字符型等)常量会在编译阶段被编译成立即数,占的是代码段的内存,而字符串常量或基本类型的常量数组占用的是数据段内存。当然,占代码段的内存一般不在我们常说的“占内存”范围中,选项D错误;本题答案为A。15、A16、A17、D18、A19、D20、A二、判断题

1、正确2、正确3、错误4、正确5、错误6、错误7、错误8、正确9、正确10、错误三、编程题1、#include<stdio.h>intmain(){intscore;chargrade;printf("请输入分数:”);scanf&score);grade=(score>=90)?*A*:((score>=60)?'B':'C');printf("%c\n",grade);return0;}2、#include<stdio.h>#include<math>voidmain()(floata,b,c,s,area;printf("请输入边长:”);scanf(*%f%f%f*,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("面积=%8.3f”,area);w L3、写法1:在函数外部定义结构体变量并且赋值,参数值为空。charname[30];floatscore;}a[3]={{12,"sunny”,89.1},{8,"henry”,73.5},{21,*lucy*»91.7});voidfun()(inti,j;structst;for(i=0;i<2;i++)(for(j=0;j<2-i;j++)(if(a[j].num>a[j+l].num)(t=a[j];a[j]=a[j+l];a[j+l]=t;}}})intmainO(inti;funO;for(i=0;i<3;i++)(printf(*%d,%s,%f\n/z,a[i].num,a[i].name,a[i].score);)return0;)8,henry,73.50000012,sunny,89.09999821,lucy,91.699997写法2:在主函数中定义变量,通过参数传递变量值charname[30];floatscore;);voidfun(structs*a,intn)(inti,j;structst;for(i=0;i<n-l;i++)(for(j=0;j<n-l-i;j++)(if(a[j].num>a[j+l].num)(t=a[j];a[j]=a[j+l];a[j+l]=t;}})}intmain()(structsa[3]={{12,"sunny”,89.1},{8,“henry”,73.5},{21,*lucy\91.7});inti;fun(a,3);for(i=0;i<3;i++)(printf(^%d,%s,%f\nz\a[i].num,a[i].name,a[i].score);}return0;18,henry,73.50000012,sunny,89.09999821,lucy,91.699997C语言期末题库(四)(总分100分,考状时长90分钟)一、单项选择题(每小题2分,共40分)1、以下说法错误的是 .A、计算机算法具有有穷性;确定性;0或多个输入;一个或者多个输出;有效性B、结构化设计采用自顶向下;逐步细化;模块化设计;结构化编码。C、算法是解决问题的方法和步骤。D、只有流程图和NS图能描述算法,伪码则不行。2、c语言的基本数据类型包括.A、字符型和数值型B,字符型和逻辑型C、整型和实型D、指针型和数据型3、设intk=32767;执行k=k+l;后k值为.A、32768B、-32768C、0D、-14、有以下程序:main()(inta=3,b=4,c=5,d=2;if(a>b)if(b>c)printfd+++1);elseprintf("%d”,++d+l);printf("%d\n",d);}程序运行后的输出结果是.A、2B、3C、43D、445、下列程序段的输出结果为。inty=l;while(y—);printf("y趣d\n”,y);A、y=-lB、y=0C、死循环D、y=96、以下叙述正确的是.A、C语言程序将从源程序中第一个函数开始执行B、可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C、C语言规定必须用min作为主函数名,程序将从开始执行,在此结束D、min可作为用户标识符,用以命名任意一个函数作为主函数7、下列程序的输出结果是»main()(inta=l,b=2;printf(*%d,%d\n*,-a,++b);)A、1,2B、1,3C、0,2D、0,38、下面程序的运行结果是#include<stdio.h>main()(chara口:“morning”,t;inti,j=0;for(i=l;i<7;i++){if(a[j]<a[i]){产i;t=a[j];a[j]=a[7];a[7]=a[j];)}printfa);A、mrgninr

D、morning9、运行以下程序后,如果从键盘上输入chinaA、2,0B、5,0C、5,5D,2,510、以下选项中关于c语言常量的叙述错误的是.A、所谓常量,是指在程序运行过程中,其值不能被改变的量B、常量分为整型常量、实型常量、字符常量和字符串常量C、常量可分为数值型常量和非数值常量D、经常被使用的变量可以定义成常量11、以下能正确定义一维数组的选项是.A、intnum[]B、intnum[N]C、intnum[0..100]D、intN=100;12、c语言函数的隐含存储类别是.staticautoregisterextern13、下列运算符属于关系运算符的是—A、=B、=C、+=D、-=14>设有语句:printf("%2d\n”,2010);,则以下叙述正确的是.A、程序运行时输出20B、程序运行时输出10C、程序运行时输出2010D、指定的输出宽度不够,编译出错15、运行以下程序后,如果从键盘上输入:6514〈回车〉,则输出结果为main(){intm,n;printf('enterscanf&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n_=m;}printf("m二/d\n',m);)A、m=3B、m=2C、m=lD、m=016、若有循环:intx=5,y=20;do{y-=x;x++;}while(++xV-y);则循环体将被执行OA、0次B、1次C、2次D、3次17、c语言结构体类型变量在程序执行期间,°A、所有成员一直驻留在内存中B、没有成员驻留在内存中C、部分成员驻留在内存中D、只有一个成员驻留在内存中18、若有下列定义和语句:intu=011,v=0xll,w=ll;printf("%o,%x,%d\n*,u,v,w):则输出结果是oA、9,17,11B、9,11,1111,11,11D,11,17,1119、设floatf[10];则f数组中下标最大的元素的正确表示为—f[10]f[0]f[9]D、f(9)20、设有以下语句typedefstructtt(charc;inta[4];)cin;则下面叙述中正确的是oA、可以用TT定义结构体变量B、TT是struct类型的变量C、可以用CIN定义结构体变量D、CIN是structTT类型的变量二、判断题(每小题2分,共20分)()1、逗号运算符的求值顺序是从左到右的,逗号表达式的值为第一个表达式的值。()2、函数的实参传递到形参有两种方式:值传递和地址传递。()3、在标准c语言中,可以引用整个数组,而不必引用每一个数组元素。()4、for语句的一般形式如下,若表达式2的值为〃假”,则结束循环。()5、用strcat(字符串1,字符串2)连接两个字符串函数时,将字符串1后面的'\0'取消,只在新串的最后保留一个‘\0'。()6、局部变量就是在函数内部声明的变量,它只在本函数内有效。

()7、用数组名作函数参数时,数组中的元素可以发生变化,故违反了函数参数传递的单向性。()8、若一个函数的返回类型为void,则表示其没有返回值()9、字符串常量是由一对双引号括起来的字符序列。()10、c语言对文件读、写之前不必先打开文件,在使用文件之后无需关闭该文件。三、编程题(每小题分,共40分)1、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。(本题10分)2、编写程序:用getchar函数读入两个字符给cl、c2,然后分别用putchar函数和printf函数输出这两个字符。#include<stdio.h>voidmain()(charcl,c2;printf("请输入两个字符给cl和c2:\n");printf("用putchar函数输出结果为:\n")printf("\n用printf函数输出结果为:\n");)(本题14分)3、编写程序:从键盘输入n(n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,按成绩从低到高排序并输出排序后的学生信息。输入输出示例:括号内为说明,无需输入输出输入样例:3(n=3)100085100275输出样例:100275100085100190(本题16分)参考答案一、单项选择题1、D2、A3、B4、A【解析】本题考查嵌套if语句中else的配对。本题中else和第二个if即if(b>c)配对。由于a>b不成立,因此整个程序只输出printf("肌i\n",d),即输出2。5、A【解析】当y一返回0时,while语句停止循环,此时y=T。6、C7、D【解析】本题主要考查自加(++)、自减(~)运算符的使用。“++i,-i”在使用i之前,先使i的值加1或者减b然后再使用i此时的值参与运算;“i++,i-”是在使用i参与表达式运算之后,再使i的值加1或者减lo本题中一a和++b是先执行a减1和b加1操作,再输出表达式的值。8、B【解析】本题考查了一维数组元素的引用方法。题中数组a为一字符串数组,通过数组首地址和下标可以引用数组中的每个元素。因为字符数组相当于字符串9、C【解析】输入“c”时,运行default和case'O'的代码;输入“h”时,运行case‘h'、default和case'O'的代码:输入"i"时,运行default和case'O'的代码;输入"n"时,运行default和case'0'的代码;输入“a”时,运行case'a'、case'h'、default和case'O'的代码。10、D11、B【解析】本题的考查点是一维数组的定义。数组的常量表达式中可以包括整型常量和符号常量,不能包括变量。也就是说,C不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值,所以选项A不正确。而选项B事先定义一个字符常量所以可以在数组中作常量表达式,选项B正确。而选项C中不能用区间表示数组大小;在D中N虽然被赋为100,但N仍然为变量,所以不对。故本题答案为B。12、D13、A

【解析】关系运算符有:>、<、>=、<=、==、!=、=、+=、-=均属于赋值运算符,故B、C、D均不正确。14、C【解析】printf函数格式化字符串的一般形式为:[标志][输出最小宽度][精度][长度]类型。对于%2d,%d表示结果以十进制形式输出带符号的整数,数字2表示输出的最小宽度为2,若实际位数多于2,则按实际位数输此所以程序输出2010,答案选C.15、C16、C17、A18、C19、C20、D二、判断题1、错误2、正确3、错误4、正确5、正确6、正确7、错误8,正确9、正确10、错误三、编程题1、程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。程序源代码:main()(inti,j,k,n;printf(**waterflower'numberis:");for(n=100;n<1000;n++)(i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/w~ L if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)(printf(*%-5d*,n);))printf("\n");)2、cl=getchar();c2=getchar();putchar(cl);putchar(c2);printf(*%c,%c\n*,cl,c2);3、^include<stdio.h>^defineN8typedefstructstudent(intno;intscore;}student;intmain()(students[1000];intn,i,j;inttemp;scanf&n);for(i=0;i<n;i++)(scanf("%d%d”,&s[i].no,&s[i].score);)for(i=0;i<n;i++)for(j=0;j<n-l;j++)if(s[j].score>s[j+l].score)〃对分数排序(tempos[j].score;s[j].score=s[j+l].score;s[j+1].score=temp;〃分数排序完毕后,学号也要交换tempos[j].no;s[j].no=s[j+l].no;s[j+1].no=temp;)for(i=0;i<n;i++)(printf(*%d%d\n*,s[i].no,s[i].score);return0;C语言期末题库(五)(总分100分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、下列不正确的转义字符是 .A、\\'B、\"C、074'D、\0'2、下列语句中,不正确的是.A、staticchara[2]={1,2);staticchara[2]={*T,'2'};C、staticchara[2]={T','2','3'};D、staticchara[2]={*T};3、若有定义:inta=8,b=5,c;执行语句c=a/b+0.4;后,c的值为A、1.4B、1C、2.0D、24、下列if语句中,不正确的是oA、if(x>y);B、if(x=y)x+=y;C、if(x!=y)scanf&x)elsex=l;D、if(x5、以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);0A、是无限循环B、循环次数不定C、4次D、3次6、以下对一维数组c进行正确的定义初始化的语句是。A、intc[10]=0;B、intc[10]={0}*10;C、intc[1]={0,0,0,0,0,0,0};D、intc[10]={0};7、下列正确的标识符是。A、-alB、a[i]C、a2_iD、intt8、下列程序段的功能是.计算数组x中相邻两个元素的和,依次存放到a数组中,然后输出a数组。程序段中待填空的(1)和(2)的正确选项是.inti;inta[9],x[10];for(i=0;i<10;i++)(scanf("%d”,&x[i]);)for((1);i<10;i++)(/*此处待填空(1)*/a[i-l]=x[i]+(2);/*此处待填空(2)*/)for(i=0;i<9;i++)(printf(*%d”,a[i]):}printf("\n");A、(1)i=1(2)x[i+l]B、(1)i=0(2)x[i-l]C、(1)i=1(2)x[i-l]D、(1)i=0(2)x[i+l]9、不合法的常量是:—.A、'\2'B、”"C、’3'D、'\483'10、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是.A、大写字母C、数字字符D、下划线11、若有定义:inta[3][4]:不能表示数组元素a[l][l]oA、*(a[l]+l)B、*(&a[l][l])C、(*(a+l)[U)D、*(a+5)12、c语言规定,除主函数外,程序中各函数之间.A,既允许直接递归调用也允许间接递归调用B、不允许直接递归调用也不允许间接递归调用C、允许直接递归调用不允许间接递归调用D、不允许直接递归调用允许间接递归调用13、关于c语言,下列说法正确的是.A、程序就是算法B、一个变量只能定义为一种数据类型C、一个变量只能存储一个字符D、若a和b类型相间,执行a=b;后,b中数值将丢失14、设有如下程序段chars[20]="bejing",*p;p=s;则执行p=s;语句后,以下叙述正确的是.A、可以用*p表示s[0]B、s数组中元素的个数和p所指字符串长度相等C、s和p都是指针变量D、数组s中的内容和指针变量p中的内容相等15、有以下程序^include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=P;scanf("%s%s”,p,q);printf("%s%s\n”,p,q);}若从键盘输入:abcdef/,则输出结果是.。defdefabcdefabcdD、dd16、以下程序的运行结果是一main()(intn;for(n=l;n<=10;n++)(if(n%3=0)continue;printfn);A、12457810B、369C、12D、123456789017、若有定义:structkeyword(charkey[20];intid;}kw[]={"void”,1,"char",2,"int",3,"float”,4,"double”,5};则printf("%c,%d\n",kw[3].key[0],kw[3].id);语句的输出结果为OA、i3n3C、f4D、1418、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。main()scanf("%f",&x);amax=x;amin=x;while()(if(x>amax)amax=x;if()amin=x;scanf(飞f",&x);)printf("\namax=%f\namin=%f\n”,amax,amin);}A、x<=0x>aminB、x>0x<=aminC、x>0x>aminD、x>=0x<amin19、若已定义:inta[4][3]=(1,2,3,4,5,6,7,8,9,10,li,12),(*prt)[3]=a,*p=a[0];则能够正确表示数组元素a[l][2]的表达式是。A、*((+prt+l)[2])B、*(*(p+5))C、(+prt+l)+2D、*(*(a+l)+2)20、以下关于逻辑运算符两侧运算对象的叙述中正确的是.A、只能是整数0或1B、只能是整数0或非。整数C、可以是结构体类型的数据D、可以是任意合法的表达式二、判断题(每小题2分,共20分)()1、逻辑表达式的值只能为1或0。()2、c语言本身没有输入输出语句.()()3、for语句只能用于循环次数已经确定的情况()4、循环体如包括有一个以上的语句,则必须用一对大括号括起来,组成复合语句,复合语句在语法上被认为是一条语句。()5、在c语言中,字符数组可以存放字符串.()()6、一个函数中可以有多个return语句,当执行到某个return语句时,程序的控制流程返回到调用该函数的地方,并将return语句中表达式的值作为函数值带回。()7、在对数组全部元素赋初值时,可以省略行数,但不能省略列数()8、在一个函数中调用另一个被调函数时,如果在所有函数定义之前,已经对函数类型进行了说明,则在各个主调函数中不再进行说明。()9、结构指针就是指向结构类型变量的指针。<)10、以"a”方式打开一个文件时,文件指针指向文件首。三、编程题(每小题分,共40分)1、编写程序:打印出所有的"水仙花数",所谓"水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。(本题10分)2、输入一个正整数,输出它的阶乘。(本题14分)3、统计结构体数组中性别(sex)为'M'的变量的个数。要求:①数组元素依次赋初值为:{1,"Andy",'M')、{2,"Mike",'F'}、{3,"Rose",'M'}。②结构体定义如下:structStudent{intnum;charname[30];charsex;};(本题16分)参考答案一、单项选择题1、C2、C3、B4、C5、C6、D7、C8、C9、D10、B【解析】C语言的标识符要符合以下规定:①标识符是个以字母或下划线开头的,由字母、数字、下划线组成的字符串:②标识符不能与任意一个关键字同名:③标识符中的字母区分大小写。故本题应该选择Bo11>D12、A13、B14、A15、A16、A17、C【解析】kw[3].Key[0]是第4个元素中key数组的笫1个字符即f;kw[3].ID是第4个元素中成员ID值;18、D19、D20、D【解析】本题考查的是逻辑运算符。C语言中,逻辑运算符的两个运算分量可以是任意合法的表达式。故本题应该选择D)。二、判断题1、正确2、正确3、错误4、错误5、正确6、正确7、正确8、正确9、正确10、错误三、编程题1、#include<stdio.h>intmain()(inti,x,y,z;for(i=100;i<1000;i++)(x=i%10;y=i/10%10;z=i/100%10;if(i==(x*x*x+y*y*y+z*z*z))printf(*%d\n*,i);)return0;)【解析】利用for循环控制100-999个数,每个数分解出个位,十位,百位。2、^includevoidmain()(inti,J=l,n=10;printf(“请输入一个正整数:”);scanf("%d",&n);for(i=l;i<=n;i++)J=J*i;printf(*%d的阶乘是:%d\n",n,J);3、#include<stdio.h>structStudent(intnum;charname[30];charsex;);intFun(structStudent*s,intn)(intnum=0;inti;for(i=0;i<n;i++)(if(s[i].sex=='M'){num++;intmain()(structStudents[3]={1,"Andy",'M',2,"Mike",'F',3,"Rose",'M'};printfFun(s,3));return0;C语言期末题库(六)(总分100分,考试时长90分钟)一、单项选择题(每小题2分,共40分)1、以下叙述中正确的是.A、局部变量说明为static存储类,其生存期将得到延长B、全局变量说明为static存储类,其作用域将被扩大C、任何存储类的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类说明符与局部变量完全相同2、在16位编译器环境下,double类型占多少字节?A,2B、41D、83,若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是A,p=2*(int*)malloc(sizeof(int));B、p=(int*)malloc(2*sizeof(int));C、p=(int*)malloc(2*2);p=(int*)calloc(2,sizeof(int));4、if语句的基本形式是:if(表达式)语句,以下关于"表达式”值的叙述中正确的是A、必须是逻辑值B、必须是整数值C、必须是正数D、可以是任意合法的数值5、下列程序的输出结果是#include<stdio.h>main()(inti,a=0,b=0;for(i-1;i<10;i++)if(i%2==0)a++;continue;)b++;}printfC*a=%d,b=%d”,a,b);}Axa=4,b=4a=4,b=5a=5,b=4[)、a=5,b=56、以下与库函数strcmp(char*s,char*t)的功能相等的程序段是一.A、strcmpl(char*s,char*t){for(;*s++==*t++;)If(*s='\0')return0;return(*s-*t);}B、strcmp2(char*s,char*t){for(;*s++==*t++;)If(!*s)return0;return(*s-*t);}C、strcmp3(char*s,char*t){for(;*t==*s;){if(!*t)return0;t++;s++;)return(*s-*t);D、strcmp4(char*s,char*t){for t++)return(*t-*s);)7、若变量a,b己正确定义,且b已正确赋值,则合法的语句是。A、b=double(b);B、(int)a=(int)b;a=a++=5;a=double(b);8、若二维数组a有m行n歹U,则下面能够正确引用元素a[i][j]的为—*(a+j*n+i)*(a+i*n+j)C、*(*(a+i)+j)D、*(*a+i)+j9、以下选项中合法的标识符是oA、1」B、1-1C、_11D、1__10、以下程序运行后的输出结果是main()(chars[]=*ABCD*,*p;for(p=s+l;p<s+4;p++)printf("%s\n',p);}A、ABCDBCDCDDB、ABCDC、BD,BCDCDD11、若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是int[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]-&t[k][0]:A、t[2]Eo]B、t[2][2]tell[2]12、下列关于函数的调用方式,说法不正确的是?A、可以将函数作为表达式调用B、可以将函数作为语句调用C、可以将函数作为实参调用D、以上选项都错误13、下列四个叙述中,正确的是.A、C程序中的所有字母必须小写B、C程序中的关键字必须小写,其他标识符不区分大小写C、C程序中的所有字母都不区分大小写D、C程序中的所有关键字必须小写14、在c语言中对一维整型数组的正确定义为oA、inta(10):B、intn=10,a[n];C、intn;a[n];D、#defineN10inta[N]:15、有如下程序段,则正确的执行结果是 intm=3:while(m<=5)(printf(*%d”,m-3);m++;)A、000012 LC、123D、无结果16、下列说法中正确的是oA、在switch语句中一定要使用break语句B、在switch语句中不一定要使用break语句C、break语句是switch语句的一部分D、break只能用于switch语句中17、下面定义结构变量的语句中错误的是。structstudent{intnum;charname[20];}s;struct{intnum;charname[20];}s;structstudent{intnum;charname[20];};structstudents;D、structstudent{intnum;charname[20];):students;18、下面程序段的运行结果是.intn=0;while(n++<=2)printfn);A、012B,123C、234D,错误信息19、若有定义:"inta[2][3];”,则对a数组的第i行第j列元素的正确引用为(A,*(*(a+i)+j)B,(a+i)[j]C、*(a+j+j)D、*(a+i)+j20、当定义一个结构体变量时,系统分配给它的内存是.A、各成员所需内存量的总和B、结构中第一个成员所需内存量C、结构中最后一个成员所需内存量D、成员中占内存量最大者所需的容量二、判断题(每小题2分,共20分)()1、c语言中的标识符只能由字母、数字和下划线三种字符组成.()()2、在c程序中,用整数0表示逻辑"假"。()3、c语言中goto语句的用法不符合结构化原则,一般不宜采用。()4、break语句可以一次跳出多层循环。()5、c语言中,字符串常量最后一个字符是结束标志,该结束符是'0'。()6、函数fscanfO和fprintfO这两个函数是对标准输入、输出设备进行读写,而不是对磁盘文件进行读写。()7、当字符数组中的初值个数小于数组长度时,没有赋值的元素会默认赋值为空字符。()()8、用puts和gets函数只能输入或输出一个字符串。()9、在c程序中,函数既可以嵌套定义,也可以嵌套调用。()()10、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内容:ttinclude<stdio.h>或#include"stdio.h"。三、编程题(每小题分,共40分)1、编写程序输入三位数(100-999),然后按数字逆序输出。(例:输入123/,输出321)o(本题10分)2、编写程序:求元素个数为10的一维数组元素中的最大值和最小值。(本题14分)3、已知学生的记录由学号和学习成绩构成N名学生的数据已存入a结构体数组中。试编写函数fun函数的功能是找出成绩最低的学生记录通过形参返回主函数规定只有一个最低分在主函数中调用fun,使用结构体实现(本题16分)参考答案一、单项选择题1、A【解析】局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。2、D【解析】在16位编译器环境下,double类型占8个字节。3、A4、D5、B【解析】continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。6、C7、B8、C9、C10、D【解析】本题考查指向字符串指针的运算方法。执行p二s+1后,指针变量p就指向字符串中的第二个字符B,然后输出字符串"BCD〃并换行;继续执行循环语句,指针变量p指向下一个字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论