• 第九次作业


    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("输入人数
    ");
    	scanf("%d",&n);
    	readScore(score,n);
    	printScore(score,n);
        ave=average(score,n);
        printf("平均值为%.2f
    ",ave);
        max=findMax(score,n);
        min=findMin(score,n);
        printf("最高分为%d
    最低分为%d
    ",max,min);
        findMaxIndex1(score,n,max);
    	findMinIndex1(score,n,min);
    	search(score,n);
    	bubbleSort(score,n);
    	printf("成绩从高到低为
    ");
    	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("
    ");
    }
    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个人
    ",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个人
    ",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个人
    ",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=9;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("请输入一个四位数
    ");
    	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中用数组做函数参数,将实参数组传递到地址中再传递给形参数组。

     

  • 相关阅读:
    maven的pom.xml文件详细说明
    python 给视频添加马赛克
    cv2.VideoCapture 图像旋转问题
    三分钟理解知识蒸馏
    深度学习、机器学习常见概念及理解(持续更新)
    python用直方图规定化实现图像风格转换
    1分钟理解人体姿态估计与行为识别
    数据清洗要点
    3分钟理解NMS非极大值抑制
    python用pandas遍历csv文件
  • 原文地址:https://www.cnblogs.com/a378/p/6123549.html
Copyright © 2020-2023  润新知