}
分析:本题考查:如何取出数n的各个位数值;知道数n的各个位数值,又如何表示该数;指针型变量的使用。
55.学生的记录由学号和成绩组成,N名学生的数据已放入主函数的结构体数组s中。请编写函数fun,其功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60、69,则应当把分数在60~69的学生数据输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。 #include
intfun(STREC*a,STREC*b,intl,inth) {
inti,j=0;
for(i=0;i if(a[i].s>=l&&a[i].s<=h)/*将分数高于l,低于h的学生记录存入结构体数组b中*/ b[j++]=a[i]; returnj;/*返回分数范围内的学生人数*/ } voidmain() {STRECs[N]={{\},{\ 分析:本题考查:结构体数组操作;循环判断结构。 本题使用循环判断结构实现程序操作,循环语句用于遍历结构体数组,条件语句用于判断当前元素是否符合条件,若符合条件则将其存入结构体数组b中。 64},{\2\,{\2}}; STRECh[N]; intI,n,low,height,t; printf(“Enter2integernumberlow&heigh:”) scanf(“%d%d”,&low,&height); if(height {t=height;height=low;low=t;} n=fun(s,h,low,height); printf(“Thestudent’sdatabetween%d--%d:\\n”,low,height); for(i=0;i printf(“%sM\\n”,h[i].num,h[i].s); printf(“\\n”); } 56.请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除;字符串中剩余字符所形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为\其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应当删除,其他依此类推。最后t所指的数组中的内容应是\。 #include 31 voidfun(char*s,chart[]) { inti=0; for(;*s!='\\0';s++)/*找出ASCII值为奇数的字符依次 存入数组t中*/ if(*s%2==1) t[i++]=*s; t[i]='\\0';/*在字符串的末尾加上串结束符*/ } voidmain() { chars[100],t[100]; printf(\scanf(\fun(s,t); printf(\分析:本题要求将s所指字符串中ASCⅡ码值为偶数的字符删除,因此本题要求采用一个for循环来找出ASCⅡ码值为奇数的字符依次存入数组t中,并使用if条件句来判断s所指字符串中ASCⅡ码值是否为奇数。用'\\0'加在字符串的末尾来表示字符串的结束。 要删除ASCII码值为偶数的字符,也就是要留下ASCII码值为奇数的字符。由于最终是要求出剩余字符(即ASCII码值为奇数)形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,并找出ASCII码值为奇数的字符并将其依次存入数组t中。此外,还要注意数组t的下标变化和下标的初值(初值必须为0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。 57.已知学生的记录由学号和成绩组成,N名学生的数据已放入a结构体数组中。请编写函数fun,其功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。 #include charnum[10]; ints; }STU; fun(STUa[],STU*s) { inti; *s=a[0]; for(i=0;i } voidmain() { STUa[N]={{\},{\ {\1}},m; inti; system(“CLS”); printf(\for(i=0;i printf(\fun(a,&m); printf(\printf(\} 分析:本题考查:成绩最高的学生记录查找;for循环语句;if条件语句。 本题的流程是先使s指向第1名学生,利用循环语句遍历所有学生的成绩,利用条件语句判断当前学生成绩是否最高,所以if语句的条件是s->s 58.程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),该函数的功能是:使数组左半三角元素中的值乘以n。 32 ???????????? 例如,若n的值为3,a数组中的值为:??= ?????? 则返回主程序后a数组中的值应为: ?????? ??????????????????#include #include voidfun(inta[][N],intn) { inti,j; for(i=0;i main() { inta[N][N],m,i,j; clrscr(); printf(\for(i=0;i for(j=0;j a[i][j]=rand() ; printf(\} printf(\} do { m=rand(); }while(m>=3); printf(\fun(a,m); printf(\for(i=0;i for(j=0;j 分析:本题的fun的功能是使数组的左下半三角元素中的值乘以n,因此本题需要使用双重for循环,for循环需要注意的是:(1)循环初值,根据题意要求控制循环变量的取值范围。(2)循环条件,确定循环结束的条件,即当不满足条件时,结束循环。 首先从数组中找出要被乘以n的那部分元素,这一过程其实就是找出将被挑出的元素在原数组中的分布规律的过程。通过观察得出,要被处理的元素下标值的范围是每行中从第一个元素开始,直到列数等于该行行数时为止。找到这个规律后,依次从数组中取得符合要求的元素,然后乘以n。 59.下列程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),该函数的功能是:将数组左下半三角元素中的值全部置成0。 ????????????例如a数组中的值为: ?????? 则返回主程序后a数组中的值应为: ?????? ????????????#include #include voidfun(inta[][N]) { inti,j; 33 for(i=0;i a[i][j]=0;//将数组左下半三角元素中的值全部置成0 } voidmain() { inta[N][N],I,j; system(“CLS”); printf(“*****Thearray*****\\n”); for(i=0;i 外层循环用来控制矩阵的行下标,内层循环控制矩阵的列下标。注意列下标的取值范围,因为要表示下三角元素,所以j的范围是0~i。 60.请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。 #include voidfun(inttt[M][N],intpp[N]) { inti,j,max; for(j=0;j max=tt[0][j];/*假设各列中的第一个元素最大*/ for(i=0;i if(tt[i][j]>max)/*如果各列中的元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/ max=tt[i][j]; pp[j]=max;/*将各列的最大值依次放入pp数组中*/ } } voidmain() { intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}}; intp[N],i,j,k; system(\ printf(\for(i=0;i for(j=0;j fun(t,p); printf(\for(k=0;k 本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素进行比较。 34 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库程序设计题(5)在线全文阅读。
相关推荐: