思路: 正数相加求平均,负数则计数
由题意可知:输入为两行—— 一行输入整数个数,一行输入整数
首先我们要定义的变量有整数的个数、数组、下标、和以及正负数的计数
那么接下来我直击重点:
? for ( int i = 0; i < num; i++) {
? ? ? ? ? ? scanf("%d", &arr[i]);
首先是上面的这串代码,这串代码是方便我们将数组填充完整而设计的
在数组填充完整后,我们就开始需要判断,总体来说只需要按照数组>0,数组<0进行判断即可
。
也许这里会有同学疑惑那么数组=0的情况咋办,别急这就是我说的最最最重要的部分
我们先举个例子:假设整数个数是3但是数组里的元素不全为0,如果我们直接在之前的判断(也就是数组大于0小于0)后面加个数组等于0的情况容易写的比较复杂,对于刚开始的小白来说不容易写,因此我们直接在跳出循环后判断一下和是否为0,并设计不同的分支从而实现我们预期的结果
以下是我的代码,大家尽管尝试。
#include <stdio.h>
int main() {
? ? int arr[1000];
? ? int num = 0;//输入的整数个数
? ? //int i = 0;
? ? ? float sum = 0.0;//总和
? ? ? ? int count = 0, cot = 0;//count是负数的个数,cot是整数个数
? ? while (scanf("%d", &num) != EOF) {
? ? ? ? //float sum = 0.0;//总和
? ? ? ? //int count = 0, cot = 0;//count是负数的个数,cot是整数个数
? ? ? ? for ( int i = 0; i < num; i++) {
? ? ? ? ? ? scanf("%d", &arr[i]);
? ? ? ? ? ? if (arr[i] < 0) {
? ? ? ? ? ? ? ? count++;
? ? ? ? ? ? }
? ? ? ? ? ? if (arr[i] > 0) {
? ? ? ? ? ? ? ? cot++;
? ? ? ? ? ? ? ? sum += arr[i];
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (sum != 0)
? ? ? ? ? ? printf("%d %.1f\n", count, sum / cot);
? ? ? ? if (sum == 0.0) {
? ? ? ? ? ? printf("0 0.0");
? ? ? ? }
? ? }
? ? return 0;
}
那么做个小小的总结:
1.如何在数组中输入元素
? for ( int i = 0; i < num; i++) {
? ? ? ? ? ? scanf("%d", &arr[i]);
2.正难则反思维:
假设整数个数是3但是数组里的元素不全为0,如果我们直接在之前的判断(也就是数组大于0小于0)后面加个数组等于0的情况容易写的比较复杂,对于刚开始的小白来说不容易写,因此我们直接在跳出循环后判断一下和是否为0,并设计不同的分支从而实现我们预期的结果
本题取自某位同学的半成品代码
看懂的同学,赶紧去尝试一下吧,相信下一个优秀的人就是你。