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

    题目2 计算平均成绩

    1.设计思路

    A,建立一个结构体,其中成员包括学号,姓名,成绩。

    B,在主函数中,定义变量,然后输入学生人数,利用for循环依次输入学生学号,姓名,成绩。

    C,再利用for循环求出学生成绩总和,然后求出平均成绩。

    D,最后将低于平均成绩的学生姓名,学号输出。

    2.流程图

    3.实验代码

    #include<stdio.h>
    #include<string.h>
    struct score
    {
      char num[10];
      char name[10];
      int score;
    };
     int main()
    {
      int i,n,count=0;
      float average=0;
      scanf("%d",&n);
      struct score s[n];for(i=0;i<n;i++)
      scanf("%s %s %d",&s[i].num,s[i].name,&s[i].score);
      for(i=0;i<n;i++)
      {
        count+= s[i].score;
      }
      average = count / n;
      printf("%.2f
    ",average);
      for(i = 0; i < n; i++)
      {
        if(s[i].score < average)
        {
          printf("%s %s
    ",s[i].name,s[i].num);
          
        }
      }
    return 0;
    }

    4.遇到的问题及解决方法:

    pta提交总是部分正确,在dev上却可以运行,经过多次调试,后来在scanf("%d",&n);后加上一句struct score s[n];就好了。

    错误截图:

    正确截图:

    题目2查找书籍中最高价及最低价

    1.设计思路

     A,建立结构体,成员包括书名和价格。

     B,在主函数中定义变量,输入需要查找的书籍数量,名字,价格。

     C,利用循环结构找出书籍中的最高价和最低价,分别输出他们的名字和价格。

    2.流程图

     

    3.实验代码

    #include<stdio.h>  
    #include<string.h>  
    struct book{  
        char name[31];  
        double price;     
    }b[10];  
    int main(){  
        int n,i,j,mini=0,maxi=0;  
        double min=1000000,max=-1;  
        scanf("%d",&n);  
        for(i=0;i<n;i++){  
            scanf("
    ");    
            gets(b[i].name);  
            scanf("%lf",&b[i].price);  
            if(b[i].price>max){  
                max=b[i].price;  
                maxi=i;  
            }  
            if(b[i].price<min){  
                min=b[i].price;  
                mini=i;  
            }   
        }  
        printf("%.2lf, %s
    ",b[maxi].price,b[maxi].name);  
        printf("%.2lf, %s
    ",b[mini].price,b[mini].name);  
        return 0;  
    }  

    4.遇到的问题及解决方法:pta提交总是答案错误,在dev上却可以运行,多次调试并没有发现错误,上网百度得知gets遇到空格不返回,scanf遇空格返回,所以需在 gets(b[i].name);前加上scanf(" ");使gets进入缓冲区。

    错误截图:

    正确截图:

    上传代码及截图

    地址:https://git.coding.net/Hunjunxian/homework.git

               https://git.coding.net/Hunjunxian/PTA.git

    学习总结及进度

    总结:

     1.最普通的int型指针:

    int a=5;

       int*p= &a;

    p=&a;

    所以*p=*(&a)=a=5;         *与&可以看作是一个逆运算

    2.用一个初始化了的指针可以对新定义的指针进行初始化:

    int a;

    int*p=&a;

    int*q=p;

    3.指针的运算

    int a=4;

    int *p=&a;

    int b=*p++;

    * 与++优先级相同

    结合规则都是又结合

    所以*p++等效与*(p++)

    p++等效与p+sizeof(int)

    p+5等效于p+5×sizeof(int)

    指针不能与一般数据进行关系运算,但可以和null(0)进行关系运算判断是否是一个空指针

    4.指针在函数的调用

    例如:定义一个交换a,b数据的函数

    void swap(int*p_one,int *p_two){

    int *temp

    temp=p_one;

    p_one=p_two;

    p_two=temp;

    }

    以上并不能进行数据交换,它只是交换了形参的地址,a,b的值并没有发生变换

    正确的写法为

    void swap(int*p_one,int *p_two){

    int *temp;

    *temp=*p_one;

    *p_one=*p_two;

    *p_two=*temp;

    }

    5.数组与指针

    定义一个数组

    int a[5]={1,2,3,4,5}

    其实a就是一个指针,因为a可以代表数组的首地址,

    (1)定义一个指向数组元素的指针变量

    int a[5]={1,2,3,4,5};

    int*p=a;

    (2)利用指针访问数组的几种方式

    int a[i]

    1.*(a+i)

    2.*(p+i)

    3.p[i]

    主意:a++是错误的,因为a是一个指针常量,不允许改变.

     学习进度:

  • 相关阅读:
    不要在该约炮的年纪谈佛系
    第三周文件处理和函数------上
    mysql的binlog和slow_log慢日志
    扩展中国剩余定理【模板】
    CF277B Set of Points——构造题
    ZOJ-3774 Power of Fibonacci——等比数列求和&&等价替换
    2019牛客暑期多校训练营(第九场)The power of Fibonacci——循环节&&CRT
    2019牛客暑期多校训练营(第九场)Quadratic equation——二次剩余(模奇素数)&&Cipolla算法
    2019牛客暑期多校训练营(第九场)All men are brothers——并查集&&组合数
    2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem——哈希表&&二进制枚举
  • 原文地址:https://www.cnblogs.com/123456hjx/p/8871828.html
Copyright © 2011-2022 走看看