c语言错题讲解之记负均正

发布时间:2024年01月17日

思路: 正数相加求平均,负数则计数

由题意可知:输入为两行—— 一行输入整数个数,一行输入整数

首先我们要定义的变量有整数的个数、数组、下标、和以及正负数的计数

那么接下来我直击重点:

? 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,并设计不同的分支从而实现我们预期的结果

本题取自某位同学的半成品代码

看懂的同学,赶紧去尝试一下吧,相信下一个优秀的人就是你。

文章来源:https://blog.csdn.net/2302_80418176/article/details/135637302
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。