第二次作业
作业要求:【https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_3/homework/2503】
一· 函数
6-2 找两个数中最大者 (10 分)
本题要求对两个整数a和b,输出其中较大的数。
函数接口定义:
int max( int a, int b );
其中a
和b
是用户传入的参数,函数返回的是两者中较大的数。
裁判测试程序样例:
#include <stdio.h>
int max( int a, int b );
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("max = %d\n", max(a, b));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
-5 8
输出样例:
max = 8
1.实验代码
int max(int a, int b) { if(a>b){ return a; }else{ return b; } }
2.解题思路
(1)文字描述
第一步:定义函数
第二步:判断a,b大小
第三步:输出大的数
(2)流程图
(3)遇到问题及解题思路
这道题没有太大困难,根据要求定义函数,判断大小即可。
二· 数组1
7-3 最高分、最低分、平均分 (10 分)
从键盘输入6个学生的成绩,统计最高分,最低分和平均分。
输入格式:
在一行中输入6个用空格间隔的整数。
输出格式:
分别在不同行输出结果,结果均为整数,没有列宽控制,结果前后都没有空格,请参照输出样例。
输入样例:
56 89 48 78 58 92
输出样例:
max:92
min:48
avg:70
1.实验代码
#include <stdio.h> int main() { int i; int a[10],min,max,avg = 0,sum = 0; for(i=0;i<6;i++) { scanf("%d",&a[i]); sum+=a[i]; } max=min=a[0]; for(i=1;i<6;i++) { if(min>a[i]) {min=a[i];} if(max<a[i]) {max=a[i];} } avg=sum/6; printf("max:%d\nmin:%d\navg:%d\n",max,min,avg); }
(1) 文字描述
第一步:输入循环变量i,输入一个数组,输入max,min,avg=0,sum=0
第二步:做一个for循环给数组中元素赋值并求和
第三步:让max=min=a[0]
第四步:构造for循环得到最大值和最小值
第五步:求出平均值并输出max,min,avg
(2) 流程图
(3) 遇到问题及解题思路
在做这道题时一定要注意pta中的输出格式最后输出时不能像下面一样用三个printf。
printf("max:%d\n", max);
printf("min:%d\n", min);
printf("avg:%d\n", avg);
应该用一个printf("max:%d\nmin:%d\navg:%d\n",max,min,avg);
以后应多注意pta中作业要求。
三· 数组2
7-2 查找整数 (10 分)
本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。
输入格式:
输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。
输出格式:
在一行中输出X的位置,或者“Not Found”。
输入样例1:
5 7
3 5 7 1 9
输出样例1:
2
输入样例2:
5 7
3 5 8 1 9
输出样例2:
Not Found
1.实验代码
#include <stdio.h> int main(){ int N, i; long X; long num; scanf("%d%ld", &N, &X); for(i=0; i<N; i++){ scanf("%ld", &num); if(num==X){ printf("%d\n", i); break; } } if(i==N){ printf("Not Found"); } return 0; }
2.解题思路
(1)文字描述
第一步:给N,i,x,num做定义并输入N,x
第二步:做for循环(i<N),赋值给num
第三步:在i<N下,x=num则结束并输出i
第四步:i<N,没有与x相等的num,那么i=N,输出Not Found
(2)流程图
(3)遇到问题及解题思路
做这道题时不应把“=”与“==”弄混,不愿忘记break的使用
四· 个人总结
学习内容
(1)更好的掌握函数,感觉用函数很方便。
(2)学习了一维数组,在定义一维数组时可以直接把把数组元素写后面,要不还得赋值并在编译时打上。
(3) 在调用一维数组时每次只能调用一个元素而不是整个数组。
(4)学习二维数组,二维数组需要定义两个循环变量,有行和列。
难点
(1)冒泡排序法与选择排序法,多照着敲几遍代码,加深理解。
(2)二维数组行列互换问题, 向老师同学请教。
五· 互评与学习进度
1.评论:
李晓旭同学:http://www.cnblogs.com/lixiaoxu695022762/
崔凤宇同学:http://www.cnblogs.com/cfy991213/
苏末然同学:https://www.cnblogs.com/smr2018023977/p/10122983.html
2.学习进度