zoukankan      html  css  js  c++  java
  • 作业9

     

     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 findMaxIndex(int score[],int n);
    int findMin(int score[],int n);
    int findMinIndex(int score[],int n);
    int findscore(int score[],int n);
    void bubbleSort(int score[],int n);
    void print(int score[],int n);
    int main ()
    {
    int score[N],n,max,maxIndex,min,minIndex,i,a[N];
    double ave;
    printf ("请输入人数 ");
    scanf ("%d",&n) ;
    printf("请输入成绩 ") ;
    readScore(score,n);
    ave=average(score,n);
    {
    printf("average is %.lf ",ave);
    }
    max=findMax(score,n);
    {
    printf("max is %d ",max);
    }
    maxIndex=findMaxIndex(score,n);
    {
    printf("maxindex is %d ",maxIndex);
    }
    min=findMin(score,n);
    {
    printf("min is %d ",min);
    }
    minIndex=findMinIndex(score,n);
    {
    printf("minindexis %d ",minIndex);
    }
    i=findscore(score,n);
    bubbleSort(score,n) ;
    print(score,n);
    return 0;
    }
    void readScore(int score[], int n)
    {
    int i;
    for(i=0;i<n;i++)
    {
    scanf("%d",&score[i]);
    }
    }
    double average(int score[],int n)
    {
    int i,sum;
    double ave;
    sum = 0;
    for(i=0;i<n;i++)
    {
    sum+=score[i];
    }
    ave=(double)sum/n;
    return ave;
    }
    int findMax(int score[],int n)
    {
    int i;
    int max;
    max=score[0];
    for(i=1;i<n;i++)
    {
    if(score[i]>max)
    {
    max=score[i];
    }
    }
    return max;
    }
    int findMaxIndex(int score[],int n)
    {
    int i,maxIndex;
    maxIndex=0;
    for(i=1;i<n;i++)
    {
    if(score[i]>score[maxIndex])
    {
    maxIndex=i;
    }
    }
    return maxIndex;
    }
    int findMin(int score[],int n)
    {
    int i;
    int min;
    min=score[0];
    for(i=1;i<n;i++)
    {
    if(score[i]<min)
    {
    min=score[i];
    }
    }
    return min;
    }
    int findMinIndex(int score[],int n)
    {
    int i,minIndex;
    minIndex=0;
    for(i=1;i<n;i++)
    {
    if(score[i]<score[minIndex])
    {
    minIndex=i;
    }
    }
    return minIndex;
    }
    int findscore(int score[],int n)
    {
    int x,i;
    printf("input score ");
    scanf ("%d",&x);
    for(i=0;i<n;i++)
    {
    if (score[i]==x)
    {
    printf("the number is %d ",i);
    }
    if(score[i]!=x)
    {
    printf("输入错误 ");
    }
    }
    return 0;
    }
    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];
    score[j]=score[j+1];
    score[j+1]=t;
    flag=1;
    }
    }
    if(flag==0)
    break;
    }
    }
    void print(int score[],int n)
    {
    int i;
    for(i=0;i<n;i++)
    {
    printf("%5d",score[i]);
    }
    }

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

    #include<stdio.h>
    #define N 100
    int main()
    {
        int a[N],i,j=0;
        for(i=0;i<N;i++)
        {
            a[i]=i+1;
            if(a[i]%3!=0&&a[i]%7!=0)
            {
                printf("%3d  ",a[i]);
                j++;
            }
             
        }
        printf("
    共有%d个
    ",j);
        return 0;
    }

    附加题

       1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m位。要求:(1)数组值在程序中初始化(2)m从键盘输入。

    #include <stdio.h>
    #define N 10
    int main()
    {
        int wp[N],i=0,j=0,m,t;
        printf("原数组为:
    ");
        for(i=0;i<N;i++)
        {
            j++;
            wp[i]=j;
            printf("%d  ",wp[i]);
        }
        printf("
    ");
        printf("请输入后移个数
    ");
        scanf("%d",&m);
         for(j=1;j<=m;j++)
        {
            t=wp[N-1];
            for(i=N-1;i>0;i--)
               {
                wp[i]=wp[i-1];
            }    
            wp[0]=t;
        }
        printf("新数组为:
    ");
        for(i=0;i<N;i++)
        {
            printf("%d  ",wp[i]);
        }
        printf("
    ");  
        return 0;
    }

      2. 数字加密:输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。(使用数组)

    #include <stdio.h>
    int main()
    {
        int i,b[4];
        char a[4];
        printf("请输入一个四位数
    ");
        for(i=0;i<4;i++)
        {
            scanf("%c",&a[i]);
            b[i]=(a[i]-48+9)%10;
        }
        printf("%d%d%d%d",b[2],b[3],b[0],b[1]);
        printf("
    ");
        return 0;
    }

    程序分析:

       程序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;
    }

      分析上述两个程序的执行结果。说明为什么?

    程序分析:第一个程序中函数用了数组,内容可以被交换,第二个程序中没有运用数组定义函数,导致主函数中内容没有实现交换。

    实验总结:

    1.定义函数时要想清楚有没有返回值.

    2.数字的初始值一定要定义.

    3.字符的类型要想好.

    4.尽量简化程序 ,比如相同的循环可以直接套在一个循环里.

  • 相关阅读:
    iOS 有用的代码片段
    iOS 限制软盘输入法
    UIlabel 遇到\n 换行iOS
    关于delegate 与 protocol 的理解 iOS
    ios 跳转到app store
    iOS 上下左右滑动手势
    求某段程序运行的高精度时间
    转载——GDB中应该知道的几个调试方法
    文章翻译——使用 GNU 的 GDB调试器,内存布局和栈——01
    第十章扩展——__cdecl 的压栈方式——printf
  • 原文地址:https://www.cnblogs.com/wp980327/p/6131336.html
Copyright © 2011-2022 走看看