大连理工程序设计第5次上机作业技巧.docx

1. 题目描述:数据移位 有n(n=10)个整数,使前面各数顺序向后移m(m=n)个位置,最后m个数变成最前面的m个数,如图所示。编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数并输出调整后的n个数。 题目分析: 主函数输入输出,调用shift函数调序。其中shift函数中运用指针实现数组内容交换。 程序代码: #includestdio.h void main() { int shift(int*a,int n,int m); int a[10],m,n,i; printf(Input n(n=10):); scanf(%d,n); printf(Input 10 integers:); for(i=0;i10;i++) scanf(%d,a[i]); printf(Output the original:); for(i=0;i10;i++) printf(%d ,a[i]); printf(\nInput m(m=10):); scanf(%d,m); printf(Output the shifted:); shift(a,n,m); } shift(int*a,int n,int m) { int b[10],i,j; for(j=n-m,i=0;im;i++,j++) {*(b+i)=*(a+j);} for(j=0,i=m;in;i++,j++) {*(b+i)=*(a+j);} for(i=0;i10;i++) printf(%d ,b[i]); return 0; } 程序截屏: 2. 题目描述: 字符串排序 在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数void sort(char *s[])利用指针数组对其排序(按照字母顺序,例如“abc” 要在“acc”前面, 建议使用strcmp函数)。 在主函数中输出排好序的字符串。 题目分析:主函数输入输出,调用sort函数通过strcmp,strcpy函数进行调换顺序。 程序代码: #includestdio.h #includestring.h main() { void sort(char *s[]); char a[10][100],*s[10]; int i; printf(please input ten strings:\n); for(i=0;i10;i++) {gets (a[i]); s[i]=a[i];} sort(s); printf(the sorted strings); for(i=0;i10;i++) printf(%s\n,a[i]); } void sort(char *s[]) { char t[100]; int i,j; for(i=0;i9;i++) for(j=0;j9-i;j++) if(strcmp(s[j+1],s[j])0) {strcpy(t,s[j]); strcpy(s[j],s[j+1]); strcpy(s[j+1],t);} } 程序截屏: 3. 题目描述:学生成绩统计 有一个班级6个学生5门课,编写函数实现下列功能: (1)函数average()求第指定课目的平均分; (2)使用函数void findfail()找出有2门以上(含2门)课程不及格的学生,在主程序输出其学号和全部课程成绩及平均成绩; (3)函数void findgood()找出平均成绩在90分以上或全部课程成绩在85分以上的学生, 在主程序输出其学号和全部课程成绩及平均成绩。 在主函数中输入数据并输出结果。 题目分析:本题较为复杂,须运用多个函数调用,主函数输入输出,调运函数分别进行不同功能。 程序代码: #includestdio.h struct student { float score[5]; int num; int goodflag,failflag; }; float average(struct student*p) { float sum=0,aver; int i; for(i=0;i5;i++) { sum+=p-score[i]; } aver=sum/5; return aver; } int findfail(struct student*p) { int i,n,count=0; for(i=0;i5;i++) if(p-score[i]60) count++; if(count=2)p

文档评论(0)

1亿VIP精品文档

相关文档