标签:均值 div 结束 average 删除 3.3 http lag 9.png
1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
#include <stdio.h>
#define N 100
void readScore(int score[],int n);//输入成绩
void printScore(int score[],int n);//浏览成绩
double average(int score[],int n);//求平均值
int findMax(int score[],int n);//最大值
int findMin(int score[],int n);//最小值
void findMaxIndex1(int score[],int n,int max);//最大值下标
void findMinIndex1(int score[],int n,int min);//最小值下标
void search(int score[],int n);//查找
void bubbleSort(int score[],int n);//排序
int main()
{
int score[N]={0},index[N]={0},n,max,min,i=0,a;
double ave;
printf("输入人数\n");
scanf("%d",&n);
readScore(score,n);
printScore(score,n);
ave=average(score,n);
printf("平均值为%.2f\n",ave);
max=findMax(score,n);
min=findMin(score,n);
printf("最高分为%d\n最低分为%d\n",max,min);
findMaxIndex1(score,n,max);
findMinIndex1(score,n,min);
search(score,n);
bubbleSort(score,n);
printf("成绩从高到低为\n");
printScore(score,n);
return 0;
}
void readScore(int score[],int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("输入成绩");
scanf("%d",&score[i]);
}
}
void printScore(int score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%5d",score[i]);
}
printf("\n");
}
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 findMax(int score[],int n)
{
int i,max;
max=score[0];
for(i=0;i<n;i++)
{
if(score[i]>max)
{
max=score[i];
}
}
return max;
}
int findMin(int score[],int n)
{
int i,min;
min=score[0];
for(i=0;i<n;i++)
{
if(score[i]<min)
{
min=score[i];
}
}
return min;
}
void findMaxIndex1(int score[],int n,int max)
{
int i,count;
count=0;
for(i=0;i<n;i++)
{
if(score[i]==max)
{
count=i+1;
printf("最高分的有第%d个人\n",count);
}
}
}
void findMinIndex1(int score[],int n,int min)
{
int i,count;
count=0;
for(i=0;i<n;i++)
{
if(score[i]==min)
{
count=i+1;
printf("最低分的有第%d个人\n",count);
}
}
}
void search(int score[],int n)
{
int i=0,x;
printf("请输入要查询的成绩");
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(score[i]==x)
{
printf("第%d个人\n",i+1);
}
}
}
void bubbleSort(int score[],int n)
{
int i,j,t,flag;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{ flag=0;
if(score[j]<score[j+1])
{
t=score[j];
score[j]=score[j+1];
score[j+1]=t;
flag=1;
}
}
if(flag==0)
break;
}
}

2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
#include <stdio.h>
#define N 100
int main()
{
int num[N]={0},i,j=0;
for(i=0;i<N;i++)
{
num[i]=i+1;
}
for(i=0;i<N;i++)
{
if(num[i]%3==0||num[i]%7==0)
{
continue;
}
else
{
j++;
printf("%4d",num[i]);
}
}
printf("还剩%d个数",j);
return 0;
}

附加题
1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m位。要求:(1)数组值在程序中初始化(2)m从键盘输入。
#include <stdio.h>
#define N 10
int main()
{
int a[N]={0};
int i,m,x,j;
for(i=0;i<N;i++)
{
a[i]=i;
printf("%2d",a[i]);
}
printf("请输入要后移的位数");
scanf("%d",&m);
for(i=0;i<m;i++)
{
x=a[9];
for(j=10;j>0;j--)
{
a[j]=a[j-1];
}
a[0]=x;
}
for(i=0;i<N;i++)
{
printf("%2d",a[i]);
}
return 0;
}

2. 数字加密:输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。(使用数组)
#include <stdio.h>
#define N 4
int main()
{
int x,i,a[N]={0},z,y;
printf("请输入一个四位数\n");
scanf("%d",&x);
a[0]=x/1000;
a[1]=x%1000/100;
a[2]=x%100/10;
a[3]=x%10;
for(i=0;i<N;i++)
{
a[i]=a[i]+9;
a[i]=a[i]%10;
}
z=a[1];
a[1]=a[3];
a[3]=z;
y=a[0];
a[0]=a[2];
a[2]=y;
for(i=0;i<N;i++)
{
printf("%d",a[i]);
}
return 0;
}

二丶实验总结:1.注意变量的赋初值问题。
2.函数和被调用函数的对应关系。
3.函数int类型需要返回值,函数void类型不需要返回值。
4.注意数组的越界问题。
5.注意形参与实参的对应,避免混淆。
三丶程序分析
程序1正确,程序2中简单变量做函数参数时,虽然对形参进行了互换,但是却不影响实参的数值。
程序1中用数组做函数参数,将实参数组传递到地址中再传递给形参数组。
标签:均值 div 结束 average 删除 3.3 http lag 9.png
原文地址:http://www.cnblogs.com/a378/p/6123549.html