zoukankan      html  css  js  c++  java
  • 数组

    数组
    gets与scanf(“%s”)的区别,gets允许输入的字符串含有空格,scanf(%s)不允许含有空格

    函数,宏定义《猜数字游戏》《打字游戏》

    在函数定义中没有说明extern或static则隐含为extern

    注意:一般情况下文件包含操作多用于头文件的包含,头文件中定义了一些常量、函数声明、结构体与全局变量的声明等

    带参数的宏与带参函数的区别:
    ①函数调用时,先求实参表达式值,再代入行参,而宏只是简单的替换,并不求值;
    ②函数调用在程序运行时分配内存,而宏展开时并不分配内存,也没有返回值的概念;
    ③函数中的实参和行参都要定义类型,而且要求一致,宏名无类型,其参数也没有类型;
    ④宏替换不占运行时间,只占编译时间,而函数调用占运行时间

    函数名: getch
      功 能: 从控制台无回显地取一个字符
      用 法: int getch(void);
      返回值:读取的字符
      程序例:
      #include <stdio.h>
      #include <conio.h>
      int main(void)
      {
      char ch;
      printf("Input a character:");
      ch = getch();
      printf("\nYou input a '%c'\n", ch);
      return 0;
      }
      在WINDOWS/MS-DOS中,也可以利用getch()函数让程序调试运行结束后等待编程者按下键盘才返回编辑界面,用法:包含conio.h头文件后,在主函数结尾,return 0;之前加上getch();即可

    0、消化吸收今天所学的知识

    1、用函数实现求两个数中较大的数,较小数
    main()
    {
        max(x,y);
        min(x,y);
    }

    int max(int a ,int b)
    {

    }
    int min(int a,int b)
    {

    }


    2、以调用函数的方法实现 冒泡法、插入
    void bubble(int a[],int n)     
    {
        int i,j;                                    
        for()
        for()

    }
    /*定义两个参数:数组首地址与数组大小*/
    采冒泡法,从一个从小到大排序的数组中找出要查找的数

    int main()
    {
        int a[10]={2,3,4,1,2,33,2,12,3};
        
            
        for(i=0;i<10;i++)
        printf("a[%d]=%d\n",i,a[i]);
        
        bubble(a,10);
        
        for(i=0;i<10;i++)
        printf("a[%d]=%d\n",i,a[i]);
    }


    3、从键盘输入五个人、三门课(语文、数学、英语)
        求每个人的平均成绩及不及格课数
      求每门课的平均成绩及各科不及格人数
        
    4、有一个已经排好序的数组(由小到大)。
    现输入一个数,要求按原来的规律将它插入数组中。
    int a[10]={1,3,5,7,8,9}
    int n=6;


    5、打字游戏
    1)随机函数
    srand((unsigned)time(NULL));

    a=rand()%26;

    num  0     25
    'a' +num

    2)getchar()  
      include<conio.h>
      ch=getch();
    3)时间函数

    start_time=time(NULL);可以返回系统当前时间,以秒为单位

    end_time=time(NULL);

    4)所需头文件
    #include <conio.h>
    #include <time.h>
    #include <math.h>
    #include <stdio.h>
    system("cls");清屏


    注意:getch()和getchar()的区别

    附加题:
        猜字游戏
        1)随机函数
        2)比较算法


    习题答案
    1、
    #include <stdio.h>
    typedef unsigned char uchar ;
    typedef unsigned int uint ;

    int x,y;

    int max(int a ,int b)
    {
        int temp;
        if(a>b)
        {
            temp=a;
        }
        else
        {
            temp=b;
        }
        return temp;
    }
    int min(int a,int b)
    {
        int temp;
        if(a<b)
        {
            temp=a;
        }
        else
        {
            temp=b;
        }
        return temp;
    }

    void input(void)
    {
        printf("请输入两个比较的值:(格式:x y)\n");
        scanf("%d %d", &x, &y);
    }

    void output(void)
    {
        printf("您输入的值是:x=%d,y=%d\n", x, y);
        printf("您输入的最大值是:%d\n",max(x,y));
        printf("您输入的最小值是:%d\n",min(x,y));
    }

    int main(void)
    {
        input();
        output();
        return 0;
    }

    2、
    #include <stdio.h>
    typedef unsigned char uchar ;
    typedef unsigned int uint ;

    int arry[10]={9,8,7,6,5,4,3,2,1,0};

    void bubble(int arry[],int n)     
    {
        int i,j;  
        int temp;

        for(i=0;i<n-2;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(arry[i]>arry[j])
                {
                    temp = arry[i];
                    arry[i] = arry[j];
                    arry[j] = temp;
                }
            }
        }

    }

    int main(void)
    {
        int a= 0;
        bubble(arry,10);
        printf("请输入要查找数的位置:");
        scanf("%d", &a);
        printf("arry[%d]=%d\n", a, arry[a]);
        return 0;
    }

    3、
    #include <stdio.h>
    typedef unsigned char uchar ;
    typedef unsigned int uint ;

    uint arry[5][3]={{45,56,69},{50,23,86},{96,45,23},{78,59,87},{56,65,73}};

    void input(void)
    {
        uchar i;
        uchar ch;

        printf("使用系统自带的参数吗(y,n)?\n");
        if((ch=getchar()=='n'))
        {
            printf("请输入同学的成绩:(格式:语文 数学 英语)\n");
            for(i=0;i<5;i++)
            {
                printf("第%d个同学的成绩:",i+1);
                 scanf("%d %d %d", &arry[i][0], &arry[i][1], &arry[i][2]);
            }
        }
        else if((ch=getchar()=='y'))
        {
            printf("使用系统自带的参数:\n");
        }
    }

    void dis(void)
    {
        uchar i;
        for(i=0;i<5;i++)
        {
            printf("第%d个同学的成绩:",i+1);
            printf("语文:%d 数学:%d 英语:%d\n", arry[i][0], arry[i][1], arry[i][2]);
        }
    }

    void classmate_average(void)
    {
        uchar i;
        float average;

        printf("\n学生的平均成绩:\n");
        for(i=0;i<5;i++)
        {
            average=(float)((arry[i][0]+arry[i][1]+arry[i][2])/3.0);
            printf("第%d个同学的平均成绩:%2.2f\n", i+1, average);
        }
    }

    void class_average(void)
    {
        uchar i;
        float average;

        printf("\n班级每科的平均成绩:\n");
        for(i=0;i<3;i++)
        {
            average=(float)((arry[0][i]+arry[1][i]+arry[2][i]+arry[3][i]+arry[4][i])/5.0);
            if(i==0)
            {
                printf("语文");
            }
            else if(i==1)
            {
                printf("数学");
            }
            else if(i==2)
            {
                printf("英语");
            }
            printf("的平均成绩:%2.2f\n", average);
        }
    }

    void classmate_nopass(void)
    {
        uchar i,j;
        uchar total;

        printf("\n每个学生的不及格门数:\n");
        for(i=0;i<5;i++)
        {
            total=0;
            for(j=0;j<3;j++)
            {
                if(arry[i][j]<60)
                {
                    total++;
                }
            }
            printf("第%d个同学不及格门数:%d\n", i+1, total);
        }
    }

    void class_nopass(void)
    {
        uchar i,j;
        uchar total;

        printf("\n每科不及格人数:\n");
        for(i=0;i<3;i++)
        {
            total=0;
            for(j=0;j<5;j++)
            {
                if(arry[j][i]<60)
                {
                    total++;
                }
            }
            if(i==0)
            {
                printf("语文");
            }
            else if(i==1)
            {
                printf("数学");
            }
            else if(i==2)
            {
                printf("英语");
            }
            printf("不及格人数:%d\n", total);
        }
    }

    int main(void)
    {
        input();
        dis();
        classmate_average();
         class_average();
        classmate_nopass();
        class_nopass();
        while(1);
        return 0;
    }

    4、
    #include <stdio.h>
    typedef unsigned char uchar ;
    typedef unsigned int uint ;

    int abc[7]={1,3,5,7,8,9};

    void littletolarge(int arry[],int n)     
    {
        int i,j;  
        int temp;

        for(i=0;i<n-2;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(arry[i]>arry[j])
                {
                    temp = arry[i];
                    arry[i] = arry[j];
                    arry[j] = temp;
                }
            }
        }

    }

    void largetolittle(int arry[],int n)     
    {
        int i,j;  
        int temp;

        for(i=0;i<n-2;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(arry[i]<arry[j])
                {
                    temp = arry[i];
                    arry[i] = arry[j];
                    arry[j] = temp;
                }
            }
        }

    }

    void fun(int arry[])
    {
        int temp;
        uchar i;
        printf("以前的数为:");
        for(i=0;i<6;i++)
        printf("%d,",arry[i]);
        printf("\n请输入一个数:\n");
        scanf("%d", &temp);
        arry[6]=temp;
        printf("现在的数为:");
        for(i=0;i<7;i++)
        printf("%d,",arry[i]);
        putchar('\n');
        if(arry[0]<arry[1])
        {
            littletolarge(arry,7);
        }
        else
        {
            largetolittle(arry,7);
        }
        printf("插入后的数为:");
        for(i=0;i<7;i++)
        printf("%d,",arry[i]);
        putchar('\n');
    }

    int main(void)
    {
        fun(abc);
        return 0;
    }

    5、
    #include <conio.h>
    #include <time.h>
    #include <math.h>
    #include <stdio.h>
    #include <stdlib.h>

    typedef unsigned char uchar ;
    typedef unsigned int uint ;

    char creatletter(void)
    {
        char ch;
        ch = rand()%26+'a';
        return ch;
    }
    void fun(void)
    {
        uchar i;
        uchar buffer[2][50];
        uchar ch,temp = 0;
        float rightrate;
        uint start_time,end_time,deltatime;

        srand((unsigned)time(NULL));
        printf("**********************************************************************\n");
        printf("********************************打字游戏******************************\n");
        printf("******************************按任意键开始****************************\n");
        printf("**********************************************************************\n");
        getch();
        putchar('\n');
        for(i=0;i<50;i++)
        {
            buffer[0][i ] = creatletter();
            printf("%c",buffer[0][i]);
        }
        putchar('\n');
        start_time=time(NULL);
        for(i=0;i<50;i++)
        {
            buffer[1][i] = getch();
            if(buffer[1][i]==buffer[0][i])
            {
                putchar(buffer[1][i]);
                temp++;
            }
            else
            {
                putchar('-');
            }
        }
        end_time=time(NULL);
        deltatime=end_time-start_time;
        printf("\n**********************************************************************\n");
        printf("\n您用时:%ds",deltatime);
        rightrate = (float)(100*temp/50.0);
        printf("\n正确率:%2.2f%%\n",rightrate);
        printf("按回车键重新开始玩\n ");
        printf("\n**********************************************************************\n");
        while((ch=getch())!=13);
    }

    int main(void)
    {
        while(1)
        {
            fun();
            system("cls");    
        }
        return 0;
    }


                   

  • 相关阅读:
    JS防抖和节流
    移动端屏幕适配
    vue、react对比
    HTTP缓存
    程序员必备技术网站
    W3C标准、表现与数据分离、web语义化
    VUE的响应式原理
    react更新渲染及渲染原理
    ubuntu下mysql的环境搭建及使用
    apktool反编译工具
  • 原文地址:https://www.cnblogs.com/qinkai/p/2429587.html
Copyright © 2011-2022 走看看