佛山科学技术学院C语言程序设计期末(共六卷).docx
佛山科学技术学院C语言程序设计期末(一)总分:150分考试时间:120分钟注意事项:> 题目包括五大部分,单项选择题,判断题,填空题,程序分析题,编程题,请按要求在规定时间内作答。> 考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。一、单项选择题(每小题2分,共40分)1、下列关于自动类型转换的说法中,正确的是OA、int类型数据可以被自动转换为Char类型数据B、Char类型数据可以被自动转换为int类型数据C、boolean类型数据不可做自动类型转换,但是可以做强制类型转换D、Iong类型数据可以被自动转换为ShOrt类型数据2、设变量X为float型且已赋值,则以下语句中能将X中的数值保留到小数点后两位,并将第三位四舍五入的是OA、x=x*100+0.5/100.0;B、x=(x*100+0.5)/100.0;C、X=(int)(x*100+0.5)/100.0;D、x=(x100+0.5)*100.0;3、合法的C语言赋值语句是oA、 a=b=58B、 k=int(a+b);C、 a=58,b=58D、i;4、下列程序的运行结果是omain()inta=-5,b-l,c=l;intx=0,y=2,z=0;if(c>0)x-x+y;if(a<=O)(if(b>0)if(c<=0)y=-y;)elseif(c>0)y=-y;elsez-y;Printf("%d,%d,%dn”,x,y,z);)A、 2,2,OB、 2,2,2C、 0,2,OD、 2,0,25、有以下程序main()(inta=15,b-21,m=0;switch(a%3)(case0:m+;break;casel:m+;switch(b%2)(default:m+;case0:m+;break;)printf(n%dnr,m);)程序运行后的输出结果是OA、1B、2C、3D、46、若执行fopen函数时发生错误,则函数的返回值是()。A、地址值B、0C、1D、EOF7、下列定义不正确的是OA、 definePI3.141592B、 4defineS345C、 intmax(x,y);intx,y;D、 staticcharc;8、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。defineN10voidarrin(intxN)(inti=0;whiIe(i<N)scanf(,%dn,);)在下划线处应填入的是OA、x+iB、&xi+lC、&xi+D、&x+i9、设在C语言中,float类型数据占4个字节,则double类型数据占()个字节。A、1B、2C、8D、410、若输入字符串:abcdeV回车>,则以下WhiIe循环体将执行多少次。whiIe(ch=getchar()!=,e')printf(l*);A、5B、4C、6D、111、若二维数组a有m列,则计算任一元素aij在数组中相对位置的公式为(假设a00位于数组的第一个位置上)oA、 i*m+jB、 j*m+TC、 i*m+j-lD、 i*m+j+l12、有以下程序段:intj;floaty;charname50;scanf(,%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为A、55566.0B、566.0C、7777.0D、566777.013、对于类型相同的两个指针变量之间,不能进行的运算是oA、<B、二C、+D、-14、以下关于return语句的叙述中正确的是。A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成VOid类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处15、有以下程序:#ClefineS(x)(x)*x*2intmain()(intk=5,j=2;printf(w%dw,S(k+j);printf(r,%dn,',S(k-j);程序运行后的输出结果是OA、 98,18B、 39,11C、 39,18D、 98,1116、下面程序的功能是将从键盘输入的偶数写成两个素数之和。请选择填空。#include<stdio.h>#include<math.h>main()(inta,b,c,d;scanf(w%dw,&a);for(b=3,b<=a/2;b+二2)for(c=2;cV=sqrt(c);c+÷)if(b%c=0)break;if(c>sqrt(b)d=;elsecontinue;for(c=2;cV=sqrt(d);c÷+)if(d%c-0)break;if(c>sqrt(d)printf(n%d=%d+%dn,a,b,d);)A、a+bB、a-bC、a*bD、a/b17、以下关于c语言数据类型使用的叙述中错误的是OA、若只处理“真”和“假”两种逻辑值,应使用逻辑类型B、若要保存带有多位小数的数据,可使用双精度类型C、整数类型表示的自然数是准确无误差的D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型18、下列程序的输出结果是main()(doubled=3.2;intx,y;x=l.2;y=(x+3,8)/5.0;printf(,%dnr,d*y);)A、3B、3.2C、0D、3.0719、以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能ftdefineMIN-2147463647intfindmax(intx,intn)(inti,max;for(i=0;i<n;i÷+)max=MIN;if(max<xi)max=xi;returnmax;)造成错误的原因是OA、定义语句inti,max中max未赋值B、赋值语句max=MIN;中,不应该给max赋MIN值C、语句if(maVi)max=xi;中判断条件设置错误D、赋值语句max=MIN;放错了位置20、有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是structnodechardata;structnode*next;a,b,*p-&a,*q=&b;A、 next=q;B、 next=&b;C、p>next=&b;D、(*p).next=q;二、判断题(每小题2分,共20分)()1、一元运算符、"和的运算优先级低于自增自减预算。()2、C语言具有简洁明了的特点。()3、在if语句中,必须出现else。()4、dorvhile循环至少要执行一次循环语句。()5、C语言中,字符串常量最后一个字符是结束标志,该结束符是'0'。()6、在C程序中,函数既可以嵌套定义,也可以嵌套调用。()()7、数组名代表数组的首地址。()()8、fseek函数一般用于二进制文件。()9、C语言允许用字符串的方式对数组作初始化赋值。)10、随机操作只适用于二进制文件。三、填空题(每小题4分,共20分)1、若有"inta32=1,2,3,4,5;",则a22的值是O2、设x=2.5,a=7,y=4.7,则x+a%3*(int)(x+y)%24为。3、程序的结果是:ftinclude<stdio.h>voidmain()(inti,j,x=0;for(i=0;i<2;i+)(x+;for(j=0;j<=3;j+)(if(j%2)continue;x÷+;)x+;)printf(,x=%dn,x);)4、编译预处理包括宏定义、文件包含、()等。5、如果一个变量要在一个程序中的所有函数都能共享,则应该定义成为O四、程序分析题(每小题5分,共20分)1、有以下程序#include<stdio.h>main()(inta=l,b=2,c=3,d=0;if(a=l)if(b!=2)if(c!=3)d=l;elsed=2;elseif(c!=3)d=3;elsed=4;elsed=5;printf(,'%dn,1,d);)程序运行后的输出结果是:O2、以下程序的输出结果是o#include<stdion.h>#ClefineM5ttdefineNM+Mmain()(intk;K=N*N*5;printf(,%dn,k);)3、下面程序的运行结果是o#include<stdio.h>main()(inta,b,i;a=1;b二3;i二1;do(printf(w%d,%d,w,a,b);a=(b-a)*2+b;b=(a-b)*2+a;if(i÷+%2=0)printf(HnM);while(b<100);)4、以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。#include<stdio.h>main()inta(10,*p,*s;for(p=a;p-a<10;p+)scanf(,%c,p);for(p=a,s=a;p-a<10;p+)if(*p>*s)s=p;Printf("max=%dn”,);五、编程题(每小题分,共50分)1、编写程序:在第一个循环中从键盘上给a数组的前m(mV100)个数组元素依次赋值;在第二个循环中使a数组前m个元素中的值对称折叠;在最后一个循环中输出折叠以后的a数组的前m个元素例如:当m为5时,如果从键盘上输入的5个数分别为:1.2.3.4.5时,输出应为:12321当m为10时,如果从键盘上输入的10个数分别为:1.2.3.4.5.6.7.8.9.10时,输出应为:1234554321(本题12分)2、编写程序:删除一个字符串中的指定字母,如:字符串r,aca删除其中的a字母。(本题18分)3、定义一个结构体变量(包括年、月、日)。编写一个函数days,计算该日期在本年中是第几天(注意闰年问题)。由主函数将年月日传递给days函数,计算之后,将结果传回到主函数输出。(本题20分)C语言程序设计期末(一)参考答案】一、单项选择题1、B【解析】根据自动类型转换的优先级顺序,int类型的数据不可以自动转换为Char类型数据,1Ong类型也不可以自动转换为Short类型,boolean的值只有true和false两个值,不能做类型转换,包括自动和强制。2、C3、D4、A【解析】本题考查ifelse语句的使用。先判断第1个if语句,因为c=l>O,所以x=x+y=0+2=2<,第1个if语句,因为a=-5V0,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和Z的值没有发生变化。5、A6、B7、C8、C9、C10、B11、A12、B【解析】本题考查通过SCanf函数输入数据时的格式控制问题。变量j的格式控制为“%2d”,即只接收输入数据的前两位,从第3位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。13、A14、B15、B16、B17、A18、C【解析】考查复合的赋值表达式。解题要点本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量X。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量X的值1转换为double型1.0,然后与3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.o的中间结果进行取整,结果为0,于是变量y的值为0,d*y的值也为0。考点链接格式输出语句Printf的使用。19、D20、B【解析】要把结点b连接到结点a之后,必须把b的地址给a的next指针,选项A中,指针变量q保存的就是变量b的地址,选项B中的P是指针变量,应该是p->next=&b;在选项D中,用*运算符取出结构体变量,并且保存的就是b的地址,所以正确。二、判断题1、错误2、正确3、错误4、正确5、错误6、错误7、正确8、正确9、正确10、错误三、填空题1、无#不存在2、<2.5'3、x=84、条件编译5、全局变量四、程序分析题1、42、55'3、 1,3,7,15,31,63,4、 *s'五、编程题1、defineM5main()inti,a100,t;for(i=0;i<M;i+)scanf("%d",&ai);for(i=0;i<M2;i+)aM-i-l=ai;for(i=0;i<M;i+)printf(,'%5d",ai);printf(ffn");)2、ttincludc<stdio.h>ttinclude<stdlib.h>#include<string,h>/删除字符串中指定字母函数char*deleteCharacters(char*str,char*charSet)(inthash256;if(NU1.1.=charSet)returnstr;for(inti=0;i<256;i+)hashi=0;for(inti=0;i<strlen(charSet);i+)hashcharSeti=1;intcurrentIndex=0;for(inti=0;i<strlen(str);i+)(if(!hashstri)strcurrentIndcx+=stri;strcurrentlndex=,0';returnstr;)intmain()(chars2=',a"/要删除的字母chars25="acaw;/目标字符串printf(ff%sn'r,deleteCharacters(s2,s);return0;)3、include<stdio.h>structDate(intday;intmonth;intyear;);intmain()voiddays(structDatedatel,int*q);structDatedatel;structDate*p;intn;Printf(H请输入年份:");scanf("%d”,&datel.year);Printf("请输入月份:");scanf(tf%dr,&datel.month);Printf(H请输入日期:");scanf("%d",&datel.day);p=&datel;days(*p,&n);*使指针指向变量n,存放计算的总天数*.datel.month.datel.year%4=Printf("%d年d月%d日是该年的第d天。n",datel.year,datel.day,n);return(0);)voiddays(structDatedatel,int*q)intmonth2:if(datel.year%400=0(datel.year%100!=0&&0)month2=29;*判断为润年,其该年的二月为29天*/elsemonth2=28;switch(datel.month)case1:*q=datel.day;break;case2:*q=31+datel.day;break;case3:*q=month2+31+datel.day;break;case4:*q=31*2+month2+datel.day;break;case5:*q=31*2+month2+30+datel.day;break;case6:*q=31*3+month230+datel.day;break;case7:*q=31*3+30*2month2datel.day;break;case8:*q=31*4+30*2month2datel.day;break;case9:*q31+30*2month2datel.day;break;case10:*q31+3*30month2datel.day;break;case11:*q31+3*30month2datel.day;break;case12:31+4*30month2datel.day;*把计算的总天数赋值给*p*/佛山科学技术学院C语言程序设计期末(二)总分:150分考试时间:120分钟注意事项:> 题目包括五大部分,单项选择题,判断题,填空题,程序分析题,编程题,请按要求在规定时间内作答。> 考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。一、单项选择题(每小题2分,共40分)1、在标准ascii码表中,若英文字母i的十进制码值是105,则小写字母f的十进制码值为oA、102B、101C、103D、1002、下列四个选项中,均是C语言关键字的选项是()。A、 autoenumincludeB、 switchtypedefcontinueC、 signedunionscanfD、 ifstructtype3、C语言中以下几种运算符的优先次序O的排列是正确的。A、由高到低为:!,&&,,算术运算符,赋值运算符B、由高到低为:!,算术运算符,关系运算符,&&,I赋值运算符C、由高到低为:算术运算符,关系运算符,赋值运算符,!,&&,IID、由高到低为:算术运算符,关系运算符,!,&&,I赋值运算符4、当从键盘上输入字符”2134211”下面程序的输出结果是omain()(chars;intV1=0,v2=0,v3=0,v4=0,k;for(k=0;k<=7;k+)(scanf(m%cm,&s);switch(三)(default:v4+÷case'1,:vl+;case,3,:v3+;case,2,:v2+;)printf(wvl=%d,v2=%d,v3=%d,v4=%dn11,vl,v2,v3,v4);)A、 vl=4,v2=2,v3=l,v4=lB、 vl=4,v2=9,v3=3,v4=lC、 vl=5,v2=8,v3=6,v4=lD、vl=8,v2=8,v3=8,v4=85、若变量已正确定义:for(x=0,y=0;(y!=99&&xV4);x+)则以上for循环()A、执行3次B、执行4次C、执行无限次D、执行次数不定6、下列二维数组的说明中,不正确的是OA、floata4>0,1,8,5,9;B、 inta34C、 4defineN5floataN3D、inta29.5;7、请选出可以作为C语言用户标识符的一组标识符号A、 voiddefineWORDB、 a3_b3_123IFC、 for-abccaseD、 2aDOsizeof8、有以下程序voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*intt,i,j;for(i=0;i<n-1;j+)for(j=i+l;j<n;j÷+)if(ai)main()(intc10>l,2,3,4,5,6,7,8,9,0,i;fun(c+4.6):for(i=0;i<10;i+)printf(h%d,h,ci);printf(r,nr,):程序运行的结果是OA、1,2,3,4,5,6,7,8,9,0,B、0,9,8,7,6,5,1,2,3,4,C、0,9.8,7.6,5,4,3,2,1.D、1,2,3,4,9,8,7,6,5,0,9、以下叙述中正确的是O。A、C语言比其他语言高级B、C语言可以不用编译就能被计算机识别执行C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D、C语言出现的最晚,具有其他语言的一切优点10、下列对字符串的定义中,错误的是OA、charstr7=,'FORTRAN,;B、charstr="FORTRAN";C、char*str=,FORTRAN,'D、charstr=,F,0,'R,T,'R,A,N,0);11、有以下程序main()(inta44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t;for(i=0;i<3;i+)for(k=i+l;k<4;k+)if(ai<akk)(t=aii;aii=akk;akk=t;)for(i=0;i<4;i+)printf(w%d,w,a0i);)程序运行后的输出结果是A、6,2,1,1,B、6,4,3,2,C、1,1,2,6,D、2,3,4,6,12、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是OA、递归次数与初始数据的排列次序无关B、每次划分后,先处理较长的分区可以减少递归次数C、每次划分后,先处理较短的分区可以减少递归次数D、递归次数与每次划分后得到的分区处理顺序无关13、下列属于条件运算符的是OA、:B、&&C、>>D、+14、已定义以下函数intfun(int*p)(return*p;则fun函数返回值足A、不确定的值B、一个整数C、形参P中存放的值D、形参P的地址值15、有以下程序inta=2;intf(intn)(staticinta=3;intt=0;if(n%2)(staticinta=4;t+=a+;)else(staticinta=5;t+=a+;returnt+a+;main()ints=a,i;for(i=0;i<3;i+)s+=f(i);printf(w%dnw,s);)程序运行后的输出结果是OA、26B、28C、29D、2416、有如下程序#defineN4defineMN+2#defineNUM2*M+1main()(inti;for(i=l;i<=NUM;i÷+)printf(,%dn,',i);该程序中的for循环执行的次数是oA、14B、11C、10D、1317、以下程序的运行结果是includewstdio.hr'main()(structdateintyear,month,day;today;printf(,%dnr,sizeof(structdate);)A、6B、8C、10D、1218、以下程序的输出结果是main()(charcf35=r,aaaa,bbb,ncc,);Printf(""%s"n",ch1);)A、 "AAAA"B、 "BBB"C、 hBBBCChD、 nCC,19、关于数组的定义与初始化,下列哪一项是错误的()A、intarr5=1,2,3,4,5;B、 intarr=1,2,3,4,5;C、 intarr5=1,2,3;D、 intarr5=1,2,3,4,5,6;20、若有以下语句:typedefstructS(i11tg;charh;t;以下叙述中正确的是OA、可用S定义结构体变量B、可用T定义结构体变量C、S是StrUCt类型的变量D、T是structS类型的变量二、判断题(每小题2分,共20分)()1、+和一运算符可以用于常量或表达式。()2、字符常量的长度肯定为1()3、SWitCh语句中的default必须出现在所有CaSe之后。()4、C语言的三种循环不可以互相嵌套。()5xputchar函数可以向终端输出一个字符串()6、函数的形参可以是常量,变量或表达式()7、数组inta55;共定义了25个数组元素。()()8、C语言本身并不提供输入输出语句。但可以通过输入输出函数来实现数据的输入输出。()9、字符数组Charc="string";有6个数组元素()10、全局变量的作用域是整个源程序文件。三、填空题(每小题4分,共20分)1、若有定义:inta=3;表达式a2.O+'b'-'a'的值是【1】。2、设inta=5,b-6;则表达式(+a-b-)?+a:-b的值是。3、结构化程序设计的3种基本结构是:顺序结构、结构、循环结构,这三种基本结构构成了复杂的C语言程序。4、在C语言中,假使X为长整型变量,如果我们采用Printf(“格式控制”,x)格式输出X,那么“格式控制”具体表示为5、字符读写函数是用于从磁盘文件中读出一个字符。四、程序分析题(每小题5分,共20分)1、请将下列程序中的函数声明语句补充完整。#include<stdio.h>int;main()(intx,y,(*p)();scanf(,%d%d”,&x,&y);p=max;printf(,%dnn,(*p)(x,y);intmax(inta,intb)return(a>b?a:b);2、下列程序段的运行结果是ointb=20,*q;q=&b;printf(r,%dr,*q);3、下列程序段的运行结果是ocharsi20="abcdef,s25=,'abc,';strcpy(si,s2);printf(,'%c",si2);4、下面程序的运行结果是omain()(inti,f10;fo=f=i;for(i=2;i<10;i+)fi=fi-2+fi-l;for(i=0;i<10;i+)(if(i%4-0)printf(r,nH);printf(,%3dr,fi);五、编程题(每小题分,共50分)1、编写程序:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(本题12分)2、任意输入两行字符串,把第二行字符串连接到第一行字符串末尾(不用Strcat函数)。(本题18分)3、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,数据如下:201513135157张三901)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上2)将学生中不及格学生的姓名显示出来3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数(本题20分)C语言程序设计期末(二)参考答案】一、单项选择题1、A【解析】i的码值105,f排列在i前面三位,故最后结果是102。2、B3、B4、C5、B【解析】本题重点考查for语句的循环次数,for(x=0,y=0;(y!=99&&xV4);x+),y!=99&&xV4即循环条件当y不等于99以及V4时,执行循环语句,当有一个条件不成立时,均结束循环,因此循环4次,B选项正确。6、D【解析】C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是:类型说明符数组名常量表达式常量表达式。7、B【解析】本题考核的知识点是用户标识符的定义。在C语言中,合法的标识符可以由字母、数字和下划线组成,其中关键字不能作为用户的标识符,且开头的第一个字符必须为字母或下划线。选项A中Void为关键字,故选项A不正确:选项C中for和CaSe为关键字,故选项C不正确:选项D中SiZeOf为关键字,故选项D不正确。所以,4个选项中选项B符合题意。8、D9、C10、A11、B【解析】本题使用选择法对二维数组对角线上的元素按从大到小的顺序进行排列。最后输出数组第一行的数据。故本题答案为B)。12、D【解析】考查快速排序。递归次数与各元素的初始排列有关。如果每一次划分后分区比较平衡,则递归次数少;如果划分后分区不平衡,则递归次数多。递归次数与处理顺序无关。13、A【解析】:为条件运算符;&&为布尔逻辑运算符;>>为位运算符;+为算术运算符。14、D15、C16、B17、A【解析】在解答本题时应该考虑两个问题:结构体变量的长度及SiZeOf()求字节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,structdate中包含year,month,day三个整型变量。一个整型变量所占的字节数为2。18、B19、D【解析】选项4初始化值大于数组的大小。20、B二、判断题1、错误2、正确3、错误4、错误【解析】是可以互相嵌套的。5、错误6、错误7、正确8、正确9、错误10、错误三、填空题1、2.52、73、选择#分支4、%ld5、fgetcftfgetc()#getc#getc()四、程序分析题1、,max(inta,intb),2、203、C4、参考答案:11235813213455五、编程题1、#include<stdio.h>intmain()(inti,j,k;printf(wn");for(i=l;i<5;i+)/以下为三重循环for(j=l;j<5;j+)for(k=l;k<5;k+)/确保i、j、k三位互不相同if(i!=k&&i!=j&&j!=k)printf(ff%d,%d,%dn",i,j,k);)【解析】有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2、include<stdio.h>#include<string.h>intmain()(charsi80,s280;inti,ll,12,j;gets(sl);gets(s2);H=Strlen(si);12=strlen(s2);for(i=ll,j=0;j<12;i+,j+)sli=s2j;)puts(si);return0;)3、#include<stdio.h>defineNUM3structstudent(char*sno=nowchar20;char*name=newchar20;intscore;boolfail=false;);voidStuSort(student*stu)(studenttmp;for(inti=0;i<NUM;i+)for(intj=0:j<NUM;j+)(if(stuj.score<stui.score)(tmp.name=stuj.name;tmp.sno=stuj.sno;tmp.score=stuj.score;stuj.name=stui.name;stuj.sno=stui.sno;stuj.score=stui.score;stui.name=tmp.name;stui.sno=tmp.sno;stui.score=tmp.score;)for(inti=0;i<NUM;i+)printf(ff%s%s%dn",stui.sno,stui.name,stui.score);)voidStuFail(student*stu)(intnumOfStu=0;for(inti=0;i<NUM;i+)if(stui.fail=true)printf(ff%s",stui.name);)else(numOfStu+;)if(numOfStu=NUM)printf("%snw,"nofail");)voidStuAvg(student*stu)intStuScore=0;doubleStuAvg=0;intent=0;for(inti=0;i<NUM;i+)(StuScore+=stui.score;)StuAvg=StuScore/NUM;for(inti=0;i<NUM;i+)(if(stui.score<stuAvg)(ent+;)printf(ff%dn',cnt);)intmain()student*stu=newstudentNUM;for(inti=0;i<NUM;+i)Printf("输入学号:");scanf("%sr,stui.sno);Printf("输入姓名:");scanfC,%sw,stui.name);Printf("输入功课成绩:”);