首页 > 代码库 > 第九次作业
第九次作业
实验一:
1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
#include<stdio.h> #define N 100 int readScore(int score[],int n);//输入函数 void printScore(int score[],int n);//浏览函数 double average(int score[],int n); //计算平均值函数 int findmin(int score[],int n);//计算最小值函数 void findminlndex(int score[],int n);//计算多个最小值下标 int findmax(int score[],int n);//求最高分 void findmaxlndex(int score[],int n);//计算多个最大值下标 void findscore(int score[],int n);//查找函数 void bubblesort(int score[],int n);//排序函数 int main() { int score[N]={0},n,min,max,maxlndex; double average1; printf("请输入学生人数n:\n"); scanf("%d",&n); readScore(score,n); bubblesort(score,n); average1=average(score,n); printf("这%d名学生的平均成绩是%.2lf\n",n,average1); min=findmin(score,n); max=findmax(score,n); printf("最低分是%d,最高分是%d\n",min,max); findminlndex(score,n); findmaxlndex(score,n); findscore(score,n); return 0; } int readScore(int score[],int n) { int i; printf("请输入编分数:\n"); for(i=0;i<n;i++) { scanf("%d",&score[i]); } return i; } void bubblesort(int score[],int n) { int i,j,t,flag; for(i=0;i<n-1;i++) { flag=0; for(j=0;j<n-1-i;j++) { if(score[j]>score[j+1]) { t=score[j+1]; score[j+1]=score[j]; score[j]=t; flag=1; } } if(flag==0) { break; } } for(i=0;i<n;i++) { printf("%d号:%d\n",i,score[i]); } } double average(int score[],int n) { int i,sum; sum=0; for(i=0;i<n;i++) { sum+=score[i]; } return (double)sum/n; } int findmin(int score[],int n) { int i,min; min=score[0]; for(i=0;i<n;i++) { if(min>score[i]) { min=score[i]; } } return min; } void findminlndex(int score[],int n) { int i,min; min=findmin(score,n); printf("最低分的同学有:\n"); for(i=0;i<n;i++) { if(score[i]==min) { printf("第%d为学生 ",i+1); } } printf("\n"); } int findmax(int score[],int n) { int i,max; max=score[0]; for(i=1;i<n;i++) { if(score[i]>max) { max=score[i]; } } return max; } void findmaxlndex(int score[],int n) { int i,max; max=findmax(score,n); printf("最高分有:\n"); for(i=0;i<=n;i++) { if(score[i]==max) { printf("第%d名学生 ",i+1); } } printf("\n"); } void findscore(int score[],int n) { int i,score1,flag=0; printf("请输入你要查找的分数:\n"); scanf("%d",&score1); printf("该分数的有:\n"); for(i=0;i<n;i++) { if(score[i]==score1) { printf("第%d位学生\n",i+1); flag=1; } } if(flag==0) printf("没有改分数的学生\n"); }
实验二:
2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
#include<stdio.h> #define N 100 int main() { int a[N],i,x=0; for(i=0;i<100;i++) { a[i]=i+1; if(a[i]%7==0||a[i]%3==0) { continue; } else { printf("%2d ",a[i]); x++; if(x%10==0) { printf("\n"); } } } printf("\n还剩余%d个数字",x); return 0; }
附加题
1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m位。要求:(1)数组值在程序中初始化(2)m从键盘输入。
#include<stdio.h> int main() { int a[10]={0},i,n,j,k,t; for(i=0;i<10;i++) { a[i]=i+1; printf("%d ",a[i]); } printf("\n请输入要移出几位:\n"); scanf("%d",&n); for(j=0;j<n;j++) { t=a[9]; for(k=9;k>0;k--) { a[k]=a[k-1]; } a[0]=t; } for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }
2. 数字加密:输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。(使用数组)
#include<stdio.h> int main() { int a[4],num,num1; printf("请输入一个四位数:\n"); scanf("%d",&num); a[0]=(num%10+9)%10;//个 a[1]=(num%100/10+9)%10;//十 a[2]=(num/100%10+9)%10;//百 a[3]=(num/1000+9)%10;//千 num1=a[1]*1000+a[0]*100+a[3]*10+a[2]; printf("加密后的数为%d",num1);return 0; }
实验总结:
1 在使用数组写函数时一定要注意到不要让数组越界
2 写函数时在无返回值时用void型
3 冒泡排序需要循环嵌套,内层循环是第一次找到一个最值得二次找到次最值……外层循环控制趟数
4 对数组中的数移位时要从后往前一个一个替换,不能从前往后替换
程序分析:
#include <stdio.h> void swap(int x[]); int main() { int a[2]={1,2}; swap(a); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); return 0; } void swap(int x[]) { int z; z=x[0]; x[0]=x[1]; x[1]=z; }
该程序能够完成交换是函数将实参录入地址传给形参,通过函数完成数组中两个数的交换;
#include <stdio.h> void swap(int x,int y); int main() { int a[2]={1,2}; swap(a[0],a[1]); printf("a[0]=%d\na[1]=%d\n",a[0],a[1]); return 0; } void swap(int x,int y) { int z; z=x; x=y; y=z; }
该程序没有完成交换是因为程序只是吧形参的值给啦形参,录入地址并没有与函数同步,所以没有完成交换
第九次作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。