版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)机试模拟试卷30(共9套)(共68题)国家二级(C语言)机试模拟试卷第1套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h){SLIST*p,*q;p=h->next;if(p!=NULL){q=p->next;while(q!=NULL){if(p->data==q->data){p->next=q->next;/**********found**********/free(【1】);/**********found**********/q=p->【2】;}else{p=q;/**********found**********/q=q->【3】;}}}}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("\nThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");}}main(){SLIST*head;inta[N]={1,2,2,3,4,4,4,5};head=creatlist(a);printf("\nThelistbeforedeleting:\n");outlist(head);fun(head);printf("\nThelistafterdeleting:\n");outlist(head);}标准答案:qnextnext知识点解析:第一空:p和q是两个SLIST结构体指针,分别指向两个相邻的结点。“if(p->data==q->data)”成立则应该删除其中一个结点,“p->next=q->next;”p指向q的下一个结点,那么q结点就可以删除了,因此第一空处应该为“free(q);”。第二空:在第一空处,q指向的结点已经被删除,如果要继续循环搜索数据域值相同的结点,那么q需要重新指向p的下一个结点,因此第二空处应该为“q=p->next;”。第三空:如果“if(p->data==q->data)”不成立,那么p和q都向结点尾移动一个结点位置,因此第三空处应该是“q=q->next;”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODII.C中函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include#include#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0,i<5,i++){/**************found**************/for(j=i+1;j<6;j++){if(strcmp(*(pstr+i),*(pstr+j))>0){p=*(pstr+i);/**************found**************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("\nEnter6string(1stringateachline):\n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}标准答案:for(j=i+1;j<6;j++)*(pstr+i)=*(pstr+j);知识点解析:(1)C语言中,for语句形式是:for(表达式1;表达式2;表达式3)循环体语句。因此第一个标识下,for使用错误,应该为“for(j=i+1;j<6;j++)”。(2)if语句后的复合语句的功能是把“*(pstr+i)”中和“*(pstr+j)”中的地址进行交换,而“*(pstr+i)=pstr+j;”中“pstr+j;”并不是字符串的地址,所以第二个标识下“*(pstr+i)=pstr+j;”改为“*(pstr+i)=*(pstr+j);”。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,字符串数组中的M个字符串为则合并后的字符串的内容应是:AAAABBBBBBBCC。提示:strcat(a,b)的功能是将字符串b复制到字符串a的串尾上,成为一个新串。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#include#defineM3#defineN20voidfun(chara[M][N],char*b){}main(){charw[M][N]={"AAAA","BBBBBBB","CC"},a[100];inti;voidNONO();printf("Thestring:\n");for(i=0;i标准答案:{inti,j,k=0;for(i=0;i知识点解析:(1)二维字符数组第i行j列元素a[i][j],就是指针形式的*(*(a+i)+j)。因此,如果字符*(*(a+i)+j)是串的结束符,则说明该字符串已经结束。(2)当一维字符数组存放完字符串中各字符后,必须在一维字符数组的尾字符处加一个结束符’\0’,才能把字符数组变成字符串。否则,字符数组就只能是非字符串的一般字符数组。国家二级(C语言)机试模拟试卷第2套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为:letter’a;:3timesletter’s’:3times请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#include#includevoidfun(char*s){intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s)){/**********found**********/ch=tolower(【1】);n=ch-’a’;/**********found**********/k[n]+=【2】;}s++;/**********found**********/if(max标准答案:*s1k[n]知识点解析:第一空:“ch=tolower(__1__);n=ch-’a’;”可知统一将字符*s转化成小写字母,然后和字母“’a’”比较,因此第一空处应为“*s”。第二空:“k[n]+=__2__;”是统计字符“*s”出现的次数,“ch-’a’”得到了应存放的数组元素的下标位置n,k[n]元素加1标识该字符在上一次出现的基础上又出现了一次,故第二空处应为“1”。第三空:“if(max二、程序修改题(本题共1题,每题1.0分,共1分。)2、数列中,第一项值为3,后一项都比前一项的值增5:给定程序MODll.C中函数fun的功能是:计算前n(4#defineN20intfun(intn,int*a){inti,j,k,sum;/**************found**************/sum=j==0;for(k=3,i=0;i标准答案:sum=0;j=0;if(sum%4==2)知识点解析:(1)根据题意第一标识下“sum=j==0;”是给sum和j赋初值0,故应改成“sum=0;j=0;”。(2)第二个标识下的if语句是根据题干要求,累加和被4除后余2,而原题是将2赋值给sum%4。所以,第二个标识下“if(sum%4=2)”应该改为“if(sum%4==2)”。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#defineM4intfun(inta[][M]){}main(){intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();printf("max=%d\n",fun(arr));NONO();}voidNONO()(/*本函数用于打开文件。输入数据,调用函数,输出数据,关闭文件。*/FILE*wf;intarr[][M]={5,8,3,90,76,一4,12,82};wf=fopen("out.dat","w");tpprintf(wf,"max=%d\n",fun(arr));fclose(wf);}标准答案:inti,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j知识点解析:进入fun函数,根据前面的分析:(1)首先设置变量max,用来记录最大值,赋予该变量初值。(2)遍历整个数组,将每一个元素与max进行比较,若大于max,则将此新值存入max。当数组遍历完成后,max中存放的即为数组的最大元素。(3)使用return语句返回max数值。国家二级(C语言)机试模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、在关系代数运算中,有5种基本运算,它们是()。A、并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)B、并(∪)、差(-)、交(∩)、投影(Ⅱ)和选择(o)C、并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)D、并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)标准答案:D知识点解析:并、差、笛卡儿积、投影和选择是5种基本的运算,其他运算即交、连接和除,均可以通过5种基本的运算来表达。2、在数据库系统的组织结构中,下列()映射把用户数据库与概念数据库联系了起来。A、外模式/模式B、内模式/外模式C、模式/内模式D、内模式/模式标准答案:A知识点解析:数据库有两层映像,即外模式/模式和模式/内模式映像。模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。3、下列关于线性链表的描述中,正确的是()。Ⅰ、只含有一个指针域来存放下一个元素地址Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)Ⅲ、结点由两部分组成:数据域和指针域。A、仅Ⅰ、ⅡB、仅Ⅰ、ⅢC、仅Ⅱ、ⅢD、全部标准答案:D知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。4、下面关于数据库三级模式结构的叙述中,正确的是()。A、内模式可以有多个,外模式和模式只有一个B、外模式可以有多个,内模式和模式只有一个C、内模式只有一个,模式和外模式可以有多个D、模式只有一个,外模式和内模式可以有多个标准答案:B知识点解析:数据库的三级模式结构是指数据库系统的外模式、模式和内模式。一个数据库可以有多个外模式,但只有一个模式和一个内模式。5、设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为()。A、23,13,51,57,66,26,81,69,76B、13,23,26,51,57,66,81,76,69C、23,13,51,57,26,66,81,69,76D、23,13,51,57,81,26,66,69,76标准答案:A知识点解析:快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。6、下列哪一条不属于数据库设计的任务?()A、设计数据库应用结构B、设计数据库概论结构C、设计数据库逻辑结构D、设计数据库物理结构标准答案:A知识点解析:数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。7、数据库技术的根本目标是()。A、数扼存储B、数据共享C、数据查询D、数据管理标准答案:B知识点解析:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,所以数据库技术的根本目标是解决数据共享问题。8、需求分析阶段的任务是()。A、软件开发方法B、软件开发工具C、软件开发费用D、软件系统功能标准答案:D知识点解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。9、关系数据库管理系统能实现的专门关系运算包括()。A、排序、索引、统计B、选择、投影、连接C、关联、更新、排序D、显示、打印、制表标准答案:B知识点解析:关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。10、数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。Ⅰ.人工管理阶段Ⅱ.文件系统阶段Ⅲ.数据库阶段A、仅ⅠB、仅ⅢC、Ⅰ和ⅡD、Ⅱ和Ⅲ标准答案:A知识点解析:数据管理技术发展的三个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。11、下面说法正确的是()。A、一个C程序可以有多个主函数B、一个C语言的函数中只允许有一对花括号C、C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D、在对C程序进行编译时,可以发现注释行中的拼写错误标准答案:C知识点解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释中的错误。12、下列不合法的用户标识符是()。A、j2_KEYB、DoubleC、4dD、_8_标准答案:C知识点解析:在C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。13、以下4个选项,不能看作一条语句的是()。A、{;}B、intx=0,y=1,z=0;C、if(!a);D、if(b==0)m=1;n=2;标准答案:D知识点解析:if语句是用来判定所给的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。选项D)中没有将两个操作语句括起来,不能看作一条语句。14、设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是()。A、b%(c%4)B、b%(c-a%5)C、b%a-a%5D、(b%a)-(a%4)标准答案:D知识点解析:选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5.2=3。15、以下程序的输出结果是()。main(){inta=4,b=3,c=2,d=1;printf("%d",a>b?a:d>c?d:b);}A、1B、3C、2D、4标准答案:D知识点解析:本题首先判断a>b,当a>b时结果等于a,否则等于“d>c?d:b”,因为a>b,所以直接输出a的值,注:这里“a:d>c?d:b”是用来干扰考生的。16、阅读以下程序#includemain(){IntCase;floatprintF;printf("请输入2个数:");scanf("%d%f",&Case,&printF);printf("%d%f\n",Case,printF);}以下说法正确的是()。A、定义语句出错,Case是关键字,不能用作用户自定义标识符,printF不能用作用户自定义标识符.B、定义语句出错,Int无法被识别。C、定义语句无错,scanf不能作为输入函数使用D、定义语句无错,printf不能输出Case的值标准答案:B知识点解析:C语言是一种大小写敏感的语言,因此Int应为int,而CaseprintF则可以使用。17、若有定义:floatx=1.5:inta=1,b=3,c=2;则正确的switch语句是()。A、switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}B、switch((int)x);{case1:printf("*\n");case2:printf("**\n");)C、switch(a+b){case1:printf("*\n");case2+1:printf("**\n");)D、switch(a+b){case1:printf("*\n");casec:printf("**\n");)标准答案:C知识点解析:在C语言中,switch()后的一对圆括号中可以是整型表达式或字符表达式。case语句后面的常量表达式的类型必须与switch后圆括号中的表达式类型相同,各case语句标号的值应该互不相同。选项A)中case后面的常量表达式为实型,所以不正确;选项D)中case后面出现了变量表达式,所以选项D)错误。18、有以下程序:main(){intk=33;printf("%d,%0,%x",k,k,k);}执行后的输出结果是()。A、33,033,0x21B、33,033,21C、3.3041e+007D、33,41,21标准答案:D知识点解析:本题考查不同进制间的转换。printf输出函数中输出变量的格式,由输出格式符决定。题中“%0”格式符表示以八进制的形式输出;“%x”格式符表示以十六进制的形式输出。“33”的八进制和十六进制分别是41和21。19、当输入为”Fool&Swalow”时,下面程序的执行结果是()。#includemain(){charc;while(c!=’?’){c=getchar();putchar(c);.}}A、SwalowB、FoolC、Fool?D、?Swalow标准答案:C知识点解析:本程序是通过getchar()函数读入字符,并通过putchar()函数将字符逐个输出,当用户输入“?”时停止输出。20、下面程序段的输出结果是()。#includemain(){floatx=1.236547;printf("%f\n",(int)(x*1000+0.5)/(float)1000);}A、1.237B、输出格式说明与输出项不匹配,输出无定值C、1.236D、1.24标准答案:A知识点解析:本题中,(int)(x*1000+0.5)的结果为1237,(float))1000是将1000强制转换成float类型;整个表达式(int)(x*1000+0.5)/(float)1000的结果为1.237000,再以实数(6位小数)形式输出。21、若变量都已正确说明,则以下程序段()。#includemain(){inta=8;intb=6:printf(a>b?"&&&a=%d":"!!!b=%d",a,b);}A、输出为:&&&a=8B、输出为:!!!b=8C、输出为:&&&a=8!!!b=6D、全部错误标准答案:A知识点解析:本题考查prinff的输出格式和条件表达式“?:”的使用。①printf函数输出时,“&&&%d\n”和“!!!%\n"中的“&&&”和“!!!”都是直接输出。②条件表达式的基本格式为:a?b:c。其运算规则为:当a为非0时的值,当a为0时,整个表达式取c的值。printf函数中如果在格式说明符之前插入任何字符都将原样输出。本题中a>b为真,所以返回“&&&a=%d”。22、语句“printf("a\bhow\’are\’y\\\bou\n");”的输出结果是()。A、a\bhow\’are\’y’\\bouB、a\bhow\’are\’y\bouC、how’are’youD、ahow’are’y\bou标准答案:C知识点解析:“\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\b”格式符前面的字母不能输出;“’\’”,格式符表示输出单引号字符;“\\”格式符表示输出反斜线字符。23、下面程序的运行结果是()。#includemain(){inti:for(i=1;i<=5;i++){if(i%2)printf("*");elseprintf("≠");}}A、*#*#*B、#*#*#*C、*#*#D、#*#*标准答案:A知识点解析:分析程序可知,程序循环5次,然后利用if语句决定每次循环时输出的字符。当i为奇数时,i%2=1,if(i%2)为真,输出“*”;当i为偶数时,i%2=0,if(i%2)为假,执行else语句,输出“#”,所以当i取1、3、5值时输出“*”,当i取2、4值时输出“#”。24、以下关于return语句的叙述中不正确的是()。A、一个自定义函数中必须有一条retum语句B、一个自定义函数中可以根据不同情况设置多条return语句C、如果一个函数有多个return语句,那么不论运行到哪一个return语句,该函数将结束D、没有return语句的自定义函数在执行完最后一条语句时返回到调用处标准答案:A知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值,也可以不包含return语句。25、有以下程序:main(){intn=0;do{n++;printf("%d\n",n);}while(n<=3);}程序的输出结果是()。A、
B、
C、
D、
标准答案:C知识点解析:本题考查do…while循环。在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值。当执行完第三次循环时,得到n=3,while循环表达式仍然成立,接着执行直到n=4,表达式不成立,跳出循环,结束程序。26、下面程序的运行结果是()。#includevoiddel(char*s){inti,j;char*a:a=s:for(i=0,j=0;a[i]!=’\0’;i++){ifa[i]>=’0’&&a[i]<=’9’){s[j]=a[i];j++;}s[j]=’\0’;}}main(){chars[]="aa89gggh";del(s);printf("\n%s",s);}A、aaB、89C、ggghD、aa89gggh标准答案:B知识点解析:本题中del(char*s)函数实现的功能是:逐个读入s数组中的字符,如果遇到数字,则将其重新存在s中,遇到非数字字符则跳过。所以最后输出的应该是字符串s中的所有数字。27、下列说法不正确的是A、int*fun():---fun是一个返回int指针的函数B、int(*fun)();---fun是一个返回int指针的函数C、int(木array[5])();---array是一个有5个元素的数组,每一个元素都是一个函数指针,指向一个返回int的函数。D、int(*fun(int))(int);---fun是带有一个int参数的函数,返回值是一个函数指针,这个指针指向带有一个int参数并返回int的函数。标准答案:B知识点解析:该函数中fun是一个函数指针。指向一个返回int的函数。28、下列程序的输出结果是()。#includevoidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=1,b=2,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);}A、21B、12C、编译出错D、00标准答案:B知识点解析:本题考查函数调用时的参数传递。分析题目可知fun函数的形参是指向实参的指针,但main()函数中调用fun()函数时,实参是指针变量x、y(分别为指向a和b的指针),a、b的值在函数调用前后未发生变化,因而a=1,b=2,即输出12。29、下列二维数组初始化语句中,正确且与语句inta[][3]={1,2,3,4,5)等价的是()。A、inta[2][]={{1,2,3),{4,5}};B、inta[][3]={1,2,3,4,5,0};C、inta[][3]={{1,0),{2,0),{3,0}};D、inta[2][]={{1,2,3},{4,5,6}};标准答案:B知识点解析:此题考查的是二维数组的初始化。题干中数组a的第二个下标为3,由此可知数组a是一个2行3列的数组,初始化时未赋初值的元素的值自动为0,所以与选项B)是等价的,最后一个元素的值为0。30、有以下字符串,说明表达式strlen(s)值的是()。chars[10]={’a’,’\n’,’a’,’b’,’\t’,’c’};A、10B、1C、6D、7标准答案:C知识点解析:strlen(s)返回s字符串中字符的个数,若s是一个数组,则返回数组元素的个数。31、有以下程序:#includevoidfun(char*c,intd){*c=*c+1;d+=1;printf("%c,%c",*c,d);}main(){chara=’F’,b=’f’;fun(&b,a);printf("%c,%c\n",a,b);)程序的输出结果为()。A、g,GF,gB、g,FF,gC、G,fF,GD、f,gf,g标准答案:A知识点解析:此题考查的是函数参数的传递。main函数中首先调用fun函数,fun函数的功能是使字符c的ASCII码值加1并输出,使d加1并输出对应的字符;fim(&b,a)输出“g,G”,但是由于fun函数的第一个参数进行的是地址传递,而第二个参数进行的是值传递,所以main函数中的printf函数输出“F,g”。32、若有以下定义,则对a数组元素地址的正确引用是()。inta[5],*p=a;A、p+5B、*a+1C、&a+1D、&a[0]标准答案:D知识点解析:本题考查如何引用数组元素的地址。选项A)中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用错误;选项B)中,*a+l指的是将数组a的第一个元素加1;选项C)中,这种引用方式错误;选项D)中,&a[0]引用的是数组的首地址。33、判断字符串s1是否大于字符串s2,应该使用()。A、if(strcmp(s1,s2)<0)B、if(s1>s2)C、if(strcmp(s2,s1)<0)D、if(strcmp(s1,s2))标准答案:C知识点解析:本题考查字符串比较函数strcmp(),调用形式:strcmp(str+1,str+2),其中str+1、str+2分别是字符串存储区的首地址,函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数:当str1=str2时,返回0;当str1>str2,返回值为正数。注意:不能使用关系运算符比较两个字符串的大小。34、若输入bcdefgh、m、abcdefg,以下程序的输出结果为()。#include#includemain(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);if(strcmp(str[0],str[1])>0)strcpy(string,str[0]);elsestrcpy(string,str[1]);if(strcmp(str[2],string)>0)strcpy(string,str[2]);printf("%s".string);}A、bcdefghB、mC、abcdefgD、bcdefgh或abcdefg标准答案:B知识点解析:本题考查字符比较函数和字符复制函数:strcmp(s1,s2);函数功能:比较字符串str1和str2比较的是字符的ASCII码的值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。35、请阅读以下程序:#include#includevoidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main(){intk,a[5]={1,3,5,4,9);fun(a);for(k=0;k<5;k++)printf("%d",a[k]);)上面程序的输出是()。A、13579B、48579C、48549D、48999标准答案:C知识点解析:本题考查的是for循环以及while循环。fun函数中定义了静态变量i=0,fun(a)使得a[0]=a[0]+a[1]=4,a[1]=a[1]+a[2]=8,此时i的值变为1,++i<2不成立,所以do-while循环结束,输出数组a的各元素即得到48549。36、在下述程序中,判断i>j共执行的次数是()。main(){inti=0,j=10,k=2,s=0;for(;;){i+=k;if(i>j){printf("%d"s);break;}s+=i;}}A、4B、7C、5D、6标准答案:D知识点解析:分析程序,i+=k;使得i的值每次增加2然后再和j进行比较看i>=j是否成立,i的变化过程为:i=2,i=4,i=6,i=8,i=10,i=12,此时i>j成立,所以判断i>j共执行的次数为6次。37、下列程序的输出结果是()。#includemain(){structst{inty,x,z;);union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}A、6,2B、6,4C、8,4D、8,6标准答案:B知识点解析:本题考查的是结构和数组元素所占的字节数。题目中定义的结构st因为包含x、y、z这3个元素,所以size(structst)=2+2+2=6;而联合体所占的字节数,由于最后存入的元素会把前面存入的元素覆盖掉,所以联合体所占的字节数就是占据最多存储单元的元素所占的字节数,sizeof(un)=sizeof(long)=4。38、以下对联合类型叙述正确的是()。A、可以对联合变量名直接赋值B、使用联合变量的目的是为了节省内存C、任何一个联合变量可以同时引用联合中的不同成员D、联合类型定义中不能同时出现结构类型的成员标准答案:B知识点解析:由于联合体是同一存储区域由不同类型的变量共享,所以不可以直接对联合体变量名进行赋他,且联合体中的空间在某一时刻只能保持某一成员的数据:另外合体中可以出现结构类型的成员。39、以下程序中C的二进制值是()。chara=2,b=4,c;c=a^b>>2A、11B、10100C、11100D、11000标准答案:A知识点解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为0000000l,a=2的二进制为00000010,两者异或为00000011。40、有以下程序#includemain(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n”,j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是()。A、2030B、2050C、3050D、3020标准答案:A知识点解析:分析程序段,首先以只写方式打开文件,利用fprintf函数将i和j的值写入到文件d1.dat中,然后关闭文件;再以只读方式打开文件,利用格式化输入函数fscanf。将文件中的数据赋值给k和n,最后输出k和n的值,分别是20和30。二、程序填空题(本题共1题,每题1.0分,共1分。)41、给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回-1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include#include#defineN5#defineM8intthn(char(*ss)[M],char*t){inti;/**********found**********/for(i=0;i<___1___;i++)/**********found**********/if(strcmp(ss[i],t)==0)return___2___;return-1;}main(){charch[N][M]={"if","while","switch","int","for"},t[M];intn,i;printf("\nTheoriginalstring\n\n");for(i=0;i<N;i++)puts(ch[i]);printf("\n");printf("reEnterastringforsearch:");gets(t);n=fun(ch,t);/**********found***********/if(n==__3__)printf("\nDon’tfound!\n");elseprintf("\nThepositionis%d.\n",n);}标准答案:(1)N(2)i(3)-1知识点解析:第一空:“for(i=0;i<___1___;i++)”补充循环的结束条件,fun的参数(*ss)[M]是指向N行M列的字符串数组,循环是逐行查找是否存在t所指的字符串,因此循环次数是N次,故第一空处应为“N”。第二空:“if(strcmp(ss[i],t)=0)return___2___;”说明两个字符串相同,按照题干要求,应返回该串在字符串数组中的位置i,故第二空处为“i”。第三空:“if(n__3__)print("\nDon’tfound!\n");”,fun函数未找到则返回-1,因此这里是判断n是否等于-1,如果n等于-1标识没有找到,在屏幕上输出“Don’tfound!"因此第三空处为“-1”。三、程序修改题(本题共1题,每题1.0分,共1分。)42、给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量S中奇数位上的数,依次构成一个新数放在t中,高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为:7531。请改正程序中的错误.使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include/**********found**********/voidfun(10ngs,longt){longs2=10;*t=S%10:while(S>0){s=s/100;*t=s%1.0*s1+*t:/**********found**********/s1=s1*100;}}main(){longs,t;printf("\nPleaseenters:"):scanf("%1d",&s);fun(s,&t);prinff("Theresultis:%1d\n",t);}标准答案:(1)voidfun(longs,long*t)(2)s1=s1*10;知识点解析:(1)根据“*t=s%10”判断,t应该是个指针变量,所以“voidfun(longs,longtD”语句中的t只需改为“voidfun(longs,long*t)”。(2)分析函数内的循环过程可知s1的用途是每次将*t扩大,记录每次得到的奇数位的数字的权值,s1的权值每次增加l位,因此第二个标识下应该是“s1=s1*10;”。四、程序设计题(本题共1题,每题1.0分,共1分。)43、请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中X是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。注意:部分源程序存在文件PROG1.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#includevoidfun(inta[],intn,int*max,int*d){}main(){inti,x[20],max,index,n=10;voidNONO();for(i=0;i<n;i++){x[i]=rand()%50;printf("%4d",x[i]);}printf("\n");fun(x,n,&max,&index);printf("Max=%5d,Index=%4d\n",max,index);NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,x[20],max,index,n=10,j;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<n;j++)fscanf(fp,"%d,",&x[j]);fun(x,n,&max,&index);fprintf(wf,"Max=%d,Index=%d\n",max,index);}fclose(fp);fclose(wf);}标准答案:inti;*max=a[0];*d=0;/*把数组的第1个元素值赋值给最大值变量*max*/for(i=1;i<n;i++)if(*max<a[i]){/*判断*max是否小于当前值*/*max=a[i];/*重新把最大值赋值给*max*/*d=i:/*记住下标*/}知识点解析:进入fun函数,根据前面的分析:(1)*max指针变量首先指向数组a的第一个数据,同时将标志位*d初始值赋为0。(2)然后利用for循环对每一个当前数组数据与max标记的数据进行比较。(3)循环中将求得的最大数据a[i]赋值给*max,并将该数据项数组标志位赋给标志位d。国家二级(C语言)机试模拟试卷第4套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文"(Palindrome),若是,函数返回值为1;不是,函数返回值为0。"回文"是正读和反读都一样的字符串(不区分大小写字母)。例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKI.C中。不得增行或删行,也不得更改程序的结构!#include#include#includeintfun(char*s){char*ip,*rp;/***********found*********/lp=【1】;rp=s+strlen(s)一1;while((toupper(*lp)==toupper(*rp))&&(ip标准答案:(1)s(2)--(3)return0知识点解析:第一空:“rp=s+strlen(s)-1;"可知rp指向最后一个元素,因此lp是指向第一个元素,因此第一空应为“s"。第二空:“lp++;rp【2】;"lp往后移动。rp应该往前移动,故第二空处应为“--"。第三空:“if(1p二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:实现两个整数的交换。例如给a和b分别输入:60和65,输出为:a=65b=60请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include/**********found**********/voidfun(inta,b){intt;/**********found**********/t=b;b=a;a=t;}main(){inta,b;printf("Entera,b:");scanf("%d,%d",&a,&b);fun(&a,&b);printf("a=%db=%d\n",a,b);}标准答案:voidfun(int*a,int*b)t=*b;*b=*a;*a=t;知识点解析:(1)该题明显是指针类型的错误。主函数传的形参分别是a、b的地址,而函数fun中却定义a、b为整型,所以第一个标识下的“voidfun(inta,b)”改为“voidfun(int*a,int*b)”。(2)根据上面的修改,第二个标识下,“t=b;b=a;a=t;”明显应该是“t=*b;*b=*a;*a=t;”。三、程序设计题(本题共2题,每题1.0分,共2分。)3、编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。例如若n为1000时,程序输出应为:s=153.909064。注意:部分源程序在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#includedoublefun(intn){}main()/*主函数*/{voidNONO();printf("s=%f\n",fun(1000));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen("in.clat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n),fprintf(wf,"%f\n",s);}fclose(fp);fclose(wf);}标准答案:doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);知识点解析:(1)首先,利用循环逐个选出能同时被3与7整除的所有自然数。(2)然后,对这些自然数求和。最后求得平方根,并返回这个值。4、编写函数fun,它的功能是计算下列级数和,和值由函数值返回。例如,当n=10,x=0.3时,函数值为1.349859。注意:部分源程序在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#includedoublefun(doublex,intn){}main(){voidNONO();printf("%f\n",fun(0.3,10));NONO();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;doubles,x;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%lf,%d",&x,&n);s=fun(x,n);fprintf(wf,"%f\n",s);}fclose(fP);fclose(wf);}标准答案:doubles=1.0,y=x;inti;longk=1;for(i=1;i<=n;i++){k=k*i;s+=y/k;y*=x;}returns;知识点解析:(1)根据题干中给出的数列,推出每一项分子是在前一项的基础上乘以x,分母是每一项的阶乘,它可以在前一项的基础上乘以当前项的项数,即第n项是n。(2)在循环中求得每一项,然后对其进行累加求和。国家二级(C语言)机试模拟试卷第5套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。例如,形参s所指的字符串为:abs5defl26jkm8,程序执行后的输出结果为:22。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#include#includeintfun(char*s){intsum=0;while(*s){/************found/***********/if(isdigit(*s))sum+=s【1】;/**************found************/【2】;}/**************found*************/return【3】;}main(){chars[81];intn;printf("\nEnterastring:\n\n");gets(s);n=fun(s),printf("\nTheresultis:%d\n\n",n);}标准答案:(1)48或’/0’(2)s++(3)sum知识点解析:第一空:“if(isdigit(*s))sum+=*s【1】;"如果*s是数字字符的话,sum累加其对应的数字的和,第一空处是将*s转化为对应的数字,由审题分析可知,第一空为"’0’"或“48",’0’的ASCⅡ码值为48。第二空:“while(*s)"循环的终止条件是达到s字符串的结束,因此在循环体内s应该不断往字符串尾移动,故第二空处应为“s++"。第三空:“return【3】:"是返回累加和sum,故第蔓空处为“sum"。二、程序修改题(本题共1题,每题1.0分,共1分。)2、给定程序MODll.C中函数fun的功能是:将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642。请改正程序中的错误,使它能得出正确的结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构!#includevoidfun(10ngs,long*t){intd;longsi=i;*t=0;while(s>0)(d=s%10;/**************found**************/if(d%2=0)(*t=d*s1+*t;s1*=10;}/**************found**************/s\=10;}}main()(longs,t;printf("\nPleaseenters:");scanf("%id",&s);fun(s,&t);printf("Theresultis:%Id\n",t);}标准答案:(1)if(d%2==0)(2)s/=10;知识点解析:(1)第一个标识是判断d是否是偶数,即比较d%2是否等于0,在C语言中,“一"表示的是“等于",而“="是赋值,因此第一个标识下“if(d%2=0)"应改为“if(d%2==0)"。(2)第二个标识下的“s\=10;"是对a的截取,这里的“\"本意应该是除号,但这个在c语言中是不可识别的,所以第二个标识下“s\=10;"应该改为“s/=10;"。三、程序设计题(本题共1题,每题1.0分,共1分。)3、编写函数fun,其功能是:根据以下公式求p的值,结果由函数值带回。m与n为两个正整数且要求m>n。例如:m=12,n=8时,运行结果为495.000000。注意:部分源程序在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includefloatfun(intm,intn){}main()/*主函数*/{voidNONO();pzintf("p=%f\n",fun(12,8));NONO();}VOidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,m,n;floats;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d,%d",&m,&n);s=fun(m,n);fprintf(wf,"%f\n",s);}fclose(fp);fclose(wf);}标准答案:floatresult,temp=1.0;inti;for(i=1;i<=m;i++)temp=temp*i;//求m!result=temp;//result=m!for(temp=1.0,i=l;i<=n;i++)temp=temp*i;//求n!result=result/temp;//求m!/n!for(temp=1.0,i=1;i<=m—n;i++)temp=temp*i;//求(m—n)!result=result/temp;//求m!知识点解析:进入fun函数,根据前面的分析:首先,计算m!的值,先定义一个放阶乘值的变量temp,初值为1.0,通过循环的方法,用累乘器"temp=temp*i;"实现n!。同理可以求得n!、(m-n)!。其中,result用来存放计算结果。最后,根据题意,函数fun的函数体以return语句结束。国家二级(C语言)机试模拟试卷第6套一、程序填空题(本题共1题,每题1.0分,共1分。)1、给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asdl23fgh543df,处理后新字符串为:asdfghdfl23543。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#include#include#includechar*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+1;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0;for(i=0;i=’a’)&&(s[i]<=’z’))||((s[i]>=’A’)&&(s[i]<=’Z’))){/**********found**********/t[j]=【1】;j++;}else{p[k]=s[i];k++;}}/**********found**********/for(i=0;i<【2】;i++)t[j+i]=p[i];/**********found**********/t[j+k]=【3】;returnt;}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("\nTheresultis:%s\n",fun(s));}标准答案:s[i]k0知识点解析:第一空:此处是将字母字符s[i]存储在t字符串中,j记录t字符串的长度,故第一空处应为“s[i]”。第二空:“for(i=0;i<__2__;i++)t[j+i]=p[i];”循环变量i从0开始,“t[j+i]=p[i];”是将p字符串中的k个字符保存在t字符串的后面,p字符串的长度为k,故循环的终止条件是i>=k,因此第二空处应为“k”。第三空:在C语言中,字符串以“’\0’”结束,故第三处应为“’\0’”或“0”。二、程序修改题(本题共1题,每题1.0分,共1分。)2、在主函数中从键盘输入若干个数放入数中,用0结束输入并放在最后一个元素中。给定程序MODll.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为:19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#includedoublefun(intx[]){/************found************/intsum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}/************found************/sum\=c;returnsum;}main(){intx[1000];inti=0;printf("\nPleaseentersomedata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%f\n",fun(x));}标准答案:doublesum=0.0;sum/=c;知识点解析:(1)fun函数的返回值是double型,返回值sum的定义类型原题定义为int型,与fun的定义类型不符,所以将“intsum=0.0;”改为“doublesum=0.0;”。(2)第二个标识下的“sum\=c;”语句中的“\”符号是非法符号,这里应该是除号。所以,第二个标识下“sum\=c;”应该改为“sum/=c;”。三、程序设计题(本题共1题,每题1.0分,共1分。)3、请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码值升序排列。例如:原来的字符串为BdsihAd,则排序后输出为BAdhisd。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<ctype.h>#include<conio.h>intfun(char*s,intnum){}main(){chars[10];clrscr();printf("输入7个字符的字符串:");gets(s);fun(s,7);printf("\n%s",s);}标准答案:intfun(char*s,intnum){chart;inti,j;for(i=1;i<num-2;i++)/*下标值从1开始,用循环依次取得字符串中的字符*/for(j=i+1;j<num-1;j++)/*将字符与其后的每个字符比较*/if(s[i]>s[j])/*如果后面字符的ASCII码值小于该字符的ASCII码值*/{t=s[i];/*则交换这两个字符*/s[i]=s[j];s[j]=t;}}知识点解析:本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素s[i]和s[j]进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码值,则交换这两个数组元素的值。国家二级(C语言)机试模拟试卷第7套一、程序填空题(本题共1题,每题1.0分,共1分。)1、请补充函数fun(),该函数的功能求能整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。例如当x=20时,依次输出:201042。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(intk,intbb[]){inti;intj=0;for(【l】;i<=k;i++){if(【】)bb[i++]=i;}printf("\n\n");for(i=【】;i>=0;i--)printf(“%d”,bb[i]);}main(){intk=1;intbb[100];clrscr();printf(“\nPleaseinputX=”);scanf(“%d”,&k);fun(k,bb);}标准答案:i=lk%i==0&&i%2==0-j知识点解析:第一空:为了求出能整除k,且是偶数的数,寻找范围是从1到k。第二空:如果i能整除k,则k对i求余为0,如果i为偶数,则i对2求余为0,由于这两个条件要同时满足,所以要使用“与”运算符“&&”。第三空:由于数组bb[]中的数是按从小到大的顺序排列的,而题目要求按从大到小输出,所以从数组的最后一个元素开始,依次输出。因为在for循环中,变量j多加了一次,所以这里要将j减1,得到数组最后一个元素的下标。二、程序修改题(本题共1题,每题1.0分,共1分。)2、下列给定程序中,函数fun()的功能是:将m(1≤m≤10)个字符串反着连接起来,组成一个新串,放入pt所指字符串中,例如:把3个串DEG,ac,df反着串联起来,结果是dfacDEG。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或者删行,也不得改变程序的结构!试题程序:#include<conio.h>#include<string.h>#include<stdio.h>voidfun(charstr[][10],intm,char*pt){intk,q,i,j=0;/*************found*************/for(k=m;k>0;k--){q=strlen(str[k]);j+=q;for(i=0;i<q;i++)pt[i]=str[k][i];pt+=q;pt[0]=0;}/*************found**************/pt=j;}main(){intm,h;chars[10][10],p[120];clrscr();printf("\nPleaseenterm:");scanf("%d",&m);printf("\nPleaseenter%dstring:\n",m);gets(s[0]);for(h=0;h<m;h++)gets(s[h]);fun(S,m,p);printf("/nTheresultiS:%s\n",p);}标准答案:(1)错误:for(k=m;k>0;k--)正确:for(k=m-1;k>=0;k--)(2)错误:pt=j;正确:pt-=j;知识点解析:错误1:本题旨在考查二维数组下标的灵活使用,如果二维数组有m行,则行下标取值从0到m-1。错误2:此时指针pt指向字符串的尾部,而函数返回的应是字符串的首地址,所以pt向前移动j个字符,则到达字符串的首部。三、程序设计题(本题共1题,每题1.0分,共1分。)3、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,低于平均分的学生数据放在c所指的数组中,高于等于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参m传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#defineN12typedefstruct{charnum
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育心理学题库综合试卷B卷附答案
- 2024年图书馆管理服务项目资金申请报告代可行性研究报告
- 五年级数学(小数乘除法)计算题专项练习及答案
- 文化自信背景下民族传统体育文化的传承与发展
- 鲁教版高三上学期期末地理试题及解答参考
- 2024年定制出口业务销售协议模板
- 保安公司门卫服务承揽协议范本
- 2024高品质彩钢房建设协议书
- 2024批次高品质片石购买协议
- 2024年健身机构业务合作伙伴协议
- 2023-2024学年北京海淀区首都师大附中初二(上)期中道法试题及答案
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 二级公立医院绩效考核三级手术目录(2020版)
- 新苏教版六年级上册《科学》全一册全部课件(含19课时)
- 《Fishing with Grandpa》RAZ分级阅读绘本pdf资源
- 《VCS-仿真验证》ppt课件
- 亲子阅读ppt课件
- 爱心妈妈结对帮扶记录表
- 农贸市场建设项目装饰工程施工方案
- 八年级语文上册期中文言文默写(含答案)
- MATLAB语言课程论文 基于MATLAB的电磁场数值图像分析
评论
0/150
提交评论