第三次作业
Posted boke2017boke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次作业相关的知识,希望对你有一定的参考价值。
一.学习要点。
- 指针和数组有很多类似的地方,如都可以存储多个数据、都可以对指针或结构中的数据进行引用等。但也有一些不同,主要的区别是存储数据的类型。虽然都可以存储多个数据但是数组中存储的数据类型是一样的,及定义的类型。结构中的数据可以是不同的类型。结构体和数组的引用方式不同。结构体用点运算符提取结构体中的数据,而数组可以用指针方式和[]运算符来调取数组中的值。
- 结构成员的引用方法与数组类似在[]运算符中标明要提取的结构体成员放在结构体数组名的后面点运算符的前面,即可提取相应的成员。
- 结构数组定义的函数名最好与需要记录的对象相关,结构数组的定义可以放在结构体声明的后面,也可以放在函数中。但是放入函数中的时候要带关键字struct和结构体名以及结构数组名,这三个成分单独成一个语句。
- 结构指针的定义与结构体变量定义类似,只不过在变量名前加一个*号,通过结构指针我们可以对一个参数传递一个函数,老一点的程序就是通过结构体指针来向一个函数传递一个结构体,而现在程序中已经可以使用通过结构体名来传递一个函数体。
- p->str++中的++加向p中的字符指针str。
二.程序。
- 计算平均成绩。
-
#include <stdio.h> struct student{ char numbers[6]; char name[10]; int socre; }student_1[10]; int main(){ int N, i, j; int count[10]; float sum; scanf(" %d ", &N); for(i = 0, j = 0; i < N; i++) { scanf("%s %s %d", student_1[i].numbers, student_1[i].name, &student_1[i].socre); sum = sum + student_1[i].socre; } printf("%.2f\\n", sum/N); j=0; while(j < N) { if(student_1[j].socre < sum/N) printf("%s %s\\n", student_1[j].name, student_1[j].numbers); j++; } return 0; }
- 设计步骤
- 第一步:构建程序基本框架。
- 第二步:定义结构体数组。
- 第三步:定义需要的变量。
- 第四步:向结构体数组中输入数据。
- 第五步:输出平均数,输出分数低于平均数的同学的学号和姓名。
- 流程图:
- 查找书籍中最高价及最低价
-
#include <stdio.h> struct book{ char name[50]; double price; }book_1[10]; int main() { int i, n, count[2] = {0, 0}; scanf("%d", &n); getchar(); gets(book_1[0].name); scanf("%lf", &book_1[0].price); getchar(); for(i = 1; i < n; i++){ gets(book_1[i].name); scanf("%lf", &book_1[i].price); getchar(); if(book_1[i].price <= book_1[count[1]].price) count[1] = i; if(book_1[i].price > book_1[count[0]].price) count[0] = i; } i=0; while(i<2) { printf("%.2lf, %s\\n", book_1[count[i]].price, book_1[count[i]].name); i++; } return 0; }
- 设计思路
- 第一步:构建函数基本框架。
- 第二步:输入书本的数量,书本的名字,书本的价格。
- 第三步:输出最高价书本的价格和书名。
- 流程图:
- 遇到的问题:程序不能正常的输入。
- 解决的办法:在scanf和gets中间加一个getchar();因为gets会把scanf后的‘\\n’符当成字符输入。
-
- 地址:https://coding.net/u/Myboss/p/Homework/git/tree/master/?public=true
以上是关于第三次作业的主要内容,如果未能解决你的问题,请参考以下文章