gpt4 book ai didi

计算 C 成绩的平均值

转载 作者:行者123 更新时间:2023-11-30 20:56:12 25 4
gpt4 key购买 nike

我编写了一个程序,允许我首先输入字符 c,后跟整数 n 和代表等级的 n 浮点值。使用数组来存储我输入的成绩,最多只能引入100个成绩。该程序允许我在输入“s”时计算数组中元素的总和,在输入“p”时计算数组中元素的产生,并在输入其他单词时计算元素 s 的平均值。输入成绩和性格后。当我按回车键继续时,程序没有响应。那么我的代码错误在哪里

#include<stdio.h>

#include<stdio.h>

int main()
{
char c;
int integer_grade [100];
float floting_grade [100];
printf("Enter a grade");
scanf("%i,%f",&integer_grade[100],&floting_grade[100]);
int *a;
a=&integer_grade[100];
int *b;
b=&floting_grade[100];
printf("Enter a character");
getchar();
scanf("%c",&c);
int n;
switch(c)
{
case 's':
for (n=0;n=100;n++)
*a+=*a;
*b+=*b;
printf("Sum is %d",*a+*b);
case 'p':
for (n=0;n=100;n++)
*a*=*a;
*b*=*b;
printf("Sum is %d",*a**b);
default:
for (n=0;n=100;n++)
*a+=*a;
*b+=*b;
printf("average is %d",(*a+*b)/100);
}
return 0;
}

任务是:编写一个程序,首先输入字符 c,后跟整数 n 和代表成绩的 n 个浮点值。使用数组来存储成绩。您可以假设引入的等级不会超过 100 个。您的程序应计算并打印以下内容:如果 c 是“s”,则为成绩总和;如果 c 为“p”,则为所有成绩的乘积;如果引入了另一个字符,则为所有成绩的算术平均值。*使用开关*您可以放心地假设您的输入是有效的。

最佳答案

想法。

  1. 这是未定义的行为。您将读取的整数和 float 分配给这些数组中的偏移量 100,但该数组不存在。

    int integer_grade[100];
    float floting_grade[100];
    scanf("%i,%f", &integer_grade[100], &floting_grade[100]);
  2. 这些指针指向其各自数组边界之外的内存。

    int *a = &integer_grade[100];
    int *b = &floting_grade[100];
  3. 您请求一个字符,然后忽略该字符的值:

    getchar();

    然后您可以通过获取以下字符来跟进。这很奇怪。但你确实使用了正确的类型,以及不正确的类型。所以这是一场胜利。

    scanf("%c",&c);
  4. 这些 for 循环中的缩进意味着您认为这两个语句将作为循环的一部分进行迭代。这是不正确的。使用 { ... } 来实现:

    for (n=0;n=100;n++)
    *a+=*a;
    *b+=*b;
  5. 我不知道您认为通过 *a += *a 可以实现什么目标。我确实知道 *a 处的值将会快速增长(并且可能会溢出)。

  6. Switch 语句在案例上使用fallthrough。这意味着如果您的情况是 's',它将运行 switch 语句中的所有代码,包括所有三种情况。如果您不希望出现这种行为,则应在每个 case 的末尾放置 break 语句。

  7. 请返回您的书籍/教师/互联网资源并阅读 for 循环的工作原理。这并不像你想象的那样。事实上,这是一个无限循环!

    for (n=0; n=100; n++)

关于计算 C 成绩的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com