zoukankan      html  css  js  c++  java
  • 第九次作业

    一、实验内容   

        1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)

    #include<stdio.h>
    #define N 100
    void readscore(int score[],int n);//输入函数,不用返回值。
    double average(int score[],int n);//求平均值
    int findmax(int score[],int n);//找最大值
    int findmin(int score[],int n);//找最小值
    int maxindex(int score[],int n);//最大值下标
    int minindex(int score[],int n);//最小值下标
    int searchscore(int num[],int n,int grade);//查询
    void bubblescort(int score[],int n);//升序
    void printscore(int score[],int n);//输出函数
    int main() 
    {
    	int score[N]={0},num[N]={0},n,max,max1,min,min1,grade,count;
        double ave;
    	printf("input the number:
    ");
    	scanf("%d",&n);
    	readscore(score,n);
        ave=average(score,n);
    	printf("平均成绩为%.2f
    ",ave);
        max=findmax(score,n);
    	printf("最大值为%d
    ",max);
    	min=findmin(score,n);
    	printf("最小值为%d
    ",min);
    	max1=maxindex(score,n);
    	printf("最大值下标为%d
    ",max1);
        min1=minindex(score,n);
    	printf("最大值下标为%d
    ",min1);
    	printf("请输入一个学生的成绩:
    ");
    	scanf("%d",&grade);
    	count=searchscore(num,n,grade);
    	printf("该学生成绩的下标为%d
    ",count);
    	bubblescort(score,n);
    	printscore(score,n);
    	return 0;
    } 
    void readscore(int score[],int n)
    {
    	int i;
    	printf("input the score:
    ");
    	for(i=0;i<n;i++)
    	{
    		scanf("%d",&score[i]);
    	}
    }
    double average(int score[],int n)
    {
         int i,sum=0;
    	 for(i=0;i<n;i++)
    	 {
    		 sum+=score[i];//求和
    	 }
    	 return (double)sum/n;//求平均数
    }
    int findmax(int score[],int n)
    {
    	int i,a=score[0];
    	for(i=1;i<n;i++)
    	{
            if(score[i]>a)
    		{
    			a=score[i];
    		}
    		return a;
    	}
    }
    int findmin(int score[],int n)
    {
        int i,b=score[0];
    	for(i=1;i<n;i++)
    	{
            if(score[i]<b)
    		{
    			b=score[i];
    		}
    		return b;
    	}
    }
    int maxindex(int score[],int n)
    {
    	int i,maxindex=0;
    	for(i=1;i<n;i++)
    	{
    		if(score[i]>score[maxindex])
    		{
    			maxindex=i;
    		}
    		return maxindex;
    	}
    }
    int minindex(int score[],int n)
    {
        int i,minindex=0;
    	for(i=1;i<n;i++)
    	{
    		if(score[i]<score[minindex])
    		{
    			minindex=i;
    		}
    		return minindex;
    	}
    }
    int searchscore(int num[],int n,int grade)
    {
    	int i;
    	printf("请输入你要查询的成绩:
    ");
    	scanf("%d",&grade);
    	for(i=0;i<n;i++)
    	{
    		if(num[i]==grade)
    		{
    			return i;
    		}
    		return -i;
    	}
    }
    void bubblescort(int score[],int n)
    {
        int i,j,t,flag;
        for(i=0;i<n;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;
            }
    } } void printscore(int score[],int n) { int i; for(i=0;i<n;i++) { printf("%3d",score[i]); } printf(" ");
    }

     2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。

    #include<stdio.h>
    #define N 100
    int main()
    {
       int i,j=0,n=0;//i为变量,n是剩余数个数
       int digit[N];
       for(i=0;i<N;i++)
       {
    	   j++;
    	   digit[i]=j;
    	   if(digit[i]%3==0||digit[i]%7==0)
    	   {
    		   digit[i]=0;
    	   }
       }
       for(i=0;i<N;i++)
       {
    	   if(digit[i]!=0)
    	   {
    		   printf("%4d",digit[i]);
    		   n++;
    	   }
       }
       printf("共有%d位
    ",n);
       return 0;
    }
    

      

    二、实验总结(实验中遇到的问题及解决方法) 

    1.数组函数引用,头文件与主函数与被调用函数一一对应。

    2.做第一道题时遇到的困难是头文件和被调用函数都能编译出来 ,主函数不会写。思维比较乱,让别人讲了之后,尝试写一个头文件,然后写主函数,需要输入什么,输出什么,声明什么,都应注意,接着写被调用函数。这样一个一个的写,就不会不清楚了。还要注意什么函数不用最后输出,以致优化函数。最后出现的小错误是丢大括号,强调大括号的用法。

    3.数组函数是与循环分不开的。

    4.第二道题定义长度为100的整型数组,首先循环数字,如果循环到的数字能与3取余或能与7取余,就结束,若不能再进行一次循环,输出剩余的数字。

    学习内容里,老师就重点学习怎样向函数传递数组,对函数和数组的理解和运用,对火柴棍问题三个程序进行优化。利用穷举,重复的函数归结在一起,应用主调用函数和被调用函数,然后学习了数组函数,用循环更简化编程。

    三、程序分析

    输出结果不同,第一个用的是数组做函数,实现的是定义的数组在其他函数中也可以被调用;第二个程序使用简单变量做函数,实现的是值只能单向传递使用。

        程序1     

    #include <stdio.h>
    void swap(int x[]);
    int main()
    {  
         int a[2]={1,2};
        swap(a);
        printf("a[0]=%d
    a[1]=%d
    ",a[0],a[1]);
        return 0;
    }
    void swap(int x[])
    {   
        int z;
        z=x[0];     
        x[0]=x[1];     
        x[1]=z;
    }

      程序2  

    #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
    a[1]=%d
    ",a[0],a[1]);
        return 0;
    }
    void swap(int x,int y)
    {  
         int z;
         z=x;
         x=y; 
         y=z;
    }
  • 相关阅读:
    公共控件
    winform 窗口 属性
    ADO
    笔记备忘
    常识 备忘
    Symbol
    Promise
    定义类 属性 方法 执行
    x is string str ======x is string 变量名
    ManualResetEvent多线程进行,全部完成后,回调
  • 原文地址:https://www.cnblogs.com/mlj527/p/6130916.html
Copyright © 2011-2022 走看看