大连理工 程序设计 第5次上机作业
- 格式:docx
- 大小:321.55 KB
- 文档页数:8
1.
题目描述:数据移位
有n(n<=10)个整数,使前面各数顺序向后移m(m<=n)个位置,最后m个数变成最前面的m个数,如图所示。编写函数shift(a,n,m)实现上述功能,在主函数中输入n个整数并输出调整后的n个数。
题目分析:
主函数输入输出,调用shift函数调序。其中shift函数中运用指针实现数组内容交换。
程序代码:
#include
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;i<10;i++)
scanf("%d",&a[i]);
printf("Output the original:");
for(i=0;i<10;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;i {*(b+i)=*(a+j);} for(j=0,i=m;i {*(b+i)=*(a+j);} for(i=0;i<10;i++) printf("%d ",b[i]); return 0; } 程序截屏: 2. 题目描述: 字符串排序 在主函数中输入10个不等长的字符串放入二维字符数组中,编写函数void sort(char *s[])利用指针数组对其排序(按照字母顺序,例如“abc”要在“acc”前面,建议使用strcmp函数)。在主函数中输出排好序的字符串。 题目分析:主函数输入输出,调用sort函数通过strcmp,strcpy函数进行调换顺序。 程序代码: #include #include main() { void sort(char *s[]); char a[10][100],*s[10]; int i; printf("please input ten strings:\n"); for(i=0;i<10;i++) {gets (a[i]); s[i]=a[i];} sort(s); printf("the sorted strings"); for(i=0;i<10;i++) printf("%s\n",a[i]); } void sort(char *s[]) { char t[100]; int i,j; for(i=0;i<9;i++) for(j=0;j<9-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分以上的学生, 在主程序输出其学号和全部课程成绩及平均成绩。 在主函数中输入数据并输出结果。 题目分析:本题较为复杂,须运用多个函数调用,主函数输入输出,调运函数分别进行不同功能。 程序代码: #include struct student { float score[5]; int num; int goodflag,failflag; }; float average(struct student*p) { float sum=0,aver; int i; for(i=0;i<5;i++) { sum+=p->score[i]; } aver=sum/5; return aver; } int findfail(struct student*p) { int i,n,count=0; for(i=0;i<5;i++) if(p->score[i]<60) count++; if(count>=2)p->failflag=1; } int findgood(struct student*p) { int i,n,count=0; for(i=0;i<5;i++) if(p->score[i]>=85) count++; if(count==5||average(p)>=90)p->goodflag=1; } void main() { int i,j,m,aver,flag=0;