{\2}}; STRECh[N]; inti,n; doubleave; ave=fun(s,h,&n); printf(\\for(i=0;i 本题中第1个循环的作用求出所有分数的总和,然后进行av=av/N后得到平均值。第2个循环的作用是将大于等于平均分的学生存入b所指存储单元中。注意同一结构体变量之间可以互相赋值。本程序中直接用*n来表示b的下标,注意开始时要给*n赋初值0,且使用时不能少*号,因为单独的n是一个指针变量,而我们要用的是它所指向的存储单元中的值。 28.编写函数fun,其功能是:将1到m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。 例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 #include voidfun(intm,int*a,int*n) { inti,j=0; for(i=1;i<=m;i++) if(i%7==0||i==0)//求出1到m之内能被7或11整除的所有整数并放在数组a中 a[j++]=i; *n=j;//返回这些数的个数 voidmain() {intaa[M],n,k; system(“CLS”); fun(50,aa,&n); for(k=0;k if((k+1) ==0)//每行输出20个数 {printf(\printf(\ } else printf(\ printf(\} 分析:本题考查:整除的判定方法;if语句条件表达式中\逻辑与\和\逻辑或\的区别;for循环语句;一维数组的定义与引用。 本题应使用循环判断语句实现,首先要确定循环变量的取值范围,题且要求找到1~m之间附合要求的数,所以循环变量的取值范围为1~m。if条件语句用来对每一个数进行判断,注意题目要求能被7或11整除,因此条件表达式中应使用逻辑或\运算符。 整除用求余运算来实现。某数值n如能被数值m1或m2整除,则代码实现为:if(n%m1==0||n%m2==0)。某数值n如能被数值m1和m2整除,则代码实现为:if(n%m1==0&&n%m2==0)。 29.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串的前导*全部删除,中间和尾部的*号不删除。 例如,字符串中的内容为:\,删除后字符串中的内容应当是:\。编写函数时,不得使用C语言提供的字符串函数。 16 #include while(*p=='*')p++; strcpy(a,p);} 30.N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:找出学生的最高分,并由函数值返回。 #include structslist*next; }; typedefstructslistSTREC; doublefun(STREC*h) { doublemax=h->s; while(h!=NULL) {if(max returnmax; } STREC*creat(double*s) {STREC*h,*p,*q; inti=0; h=p=(STREC*)malloc(sizeof(STREC)); p->s=0; while(i {q=(STREC*)malloc(sizeof(STREC)); p->s=s[i];i++;p->next=q;p=q; } p->next=NULL; returnh; } outlist(STREC*h) {STREC*p; p=h->next; printf(\do {printf(\p=p->next;} while((p->next)!=NULL); printf(\} voidmain() {doubles[N]={56,89,76,95,91,68,75,85},max; STREC*h; h=creat(s); outlist(h); max=fun(h); printf(\} 17 分析:本题考查:结构体类型;指针型变量;链表的相关知识。 本题使用循环语句遍历链表中的每个结点,用判断语句比较结点数据的域大小。注意,h是一个指向结构体类型的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符\。 31.请编写函数fun,其功能是:找出一维整形数组元素中最大的值及其所在的下标,并通过形参传回。数组元素的值已在主函数中赋予。 主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 #include voidfun(inta[],intn,int*max,int*d) { inti; *max=a[0]; *d=0; for(i=0;i voidmain() {inti,x[20],max,index,n=10; srand((unsigned)time(NULL)); for(i=0;i printf(\输出一个随机数组 printf(\ fun(x,n,&max,&index); printf(\} 分析:本题考查:查找一维数组中的最大值及其下标,使用循环判断结构实现。指针变量的应用。要查找最大值及其下标需要定义两个变量,该程序直接使用形参max和d,由于它们都是指针变量,所以在引用它所指向的变量时要对它进行指针运算。循环语句用来遍历数组元素,条件语句用来判断该数组元素是否最大。 该程序考查求最大值,需要掌握以下语句: for(i=0;i 32.编写函数fun,其功能是:将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串的内容为:\,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t所指数组中的内容应为:\。 #include 18 { inti,j=0,n; n=strlen(s); for(i=0;i if(i%2!=0&&s[i]%2!=0) {t[j]=s[i];/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/ j++; } t[j]='\\0';/*最后加上结束标识符*/ } main() 的字符保留,同时需要掌握奇数的判定方法。 { chars[100],t[100]; printf(\scanf(\fun(s,t); printf(\} 分析:本题考查:删除指定字符串中下标为偶数和ASCII码值为偶数的字符,只要把字符串中下标为奇数和ASCII码为奇数 本题要求除了下标为奇数同时ASCII码值也为奇数的字符之外,其余的所有字符都删除。即要留下下标为奇数同时ASCII码值也为奇数的字符。所以if的条件语句中应使用if(i%2!=0&&s[i]%2!=0)。 33.编写函数fun,其功能是:实现B=A+A',即将矩阵A加上A的倒置,存放在矩阵B中。计算结果在main函数中输出。 ?????????????????? 例如,输入下面的矩阵:??????其转置矩阵为: ???????????? ??????????????????程序输出: ???????? ?????????? ???????????? #include voidfun(inta[3][3],intb[3][3]) { inti,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i];/*把矩阵a加上a的转置,存放在矩阵b中*/ } voidmain() { inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\printf(\} } 分析:本题考查:矩阵的操作,如何表示矩阵及其转置矩阵的各个元素。 行列数相等的二维数组的转置就是行列互换,即转置后的第i行第j列正好对应原矩阵的第j行第i列。本题使用双层循环实现矩阵的转置,并将计算结果存入矩阵B中,外层循环控制矩阵的行下标,内层循环控制矩阵的列下标。 若要将矩阵a转置后还存入a中,可用程序: inti,j,t; 19 for(i=0;i {t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;} 注意第2个循环的初值。 若要将矩阵a转置后存入c中: inti,j; for(i=0;i 注意数组c和a的下标。 34.编写函数fun,其功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。一维数组中数据的个数存放在形参n所指的存储单元中。 例如,若二维数组中的数据为 33333333 44444444 55555555 则一维数组中的内容应是: 334455334455334455334455 #include voidfun(int(*s)[10],int*b,int*n,intmm,intnn) { inti,j; for(j=0;j b[*n]=*(*(s+i)+j); *n=*n+1;/*通过指针返回元素个数*/ } main() { intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j; inta[100]={0},n=0; printf(\for(i=0;i<3;i++) { for(j=0;j<4;j++) printf(\printf(\} fun(w,a,&n,3,4); printf(\for(i=0;i 题目要求实现将二维数组元素存入一维数组,需使用for循环语句来控制二维数组元素的下标,同时使用指针变量配合操作。 可以用两个循环来处理问题,由于是按列的顺序取出,所以第1个循环用于控制列下标,第2个循环用于控制行下标。 35.编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。 20 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库程序设计题(4)在线全文阅读。
相关推荐: