gpt4 book ai didi

c - 整数之和,不包括 13 和 13 之后的数字

转载 作者:行者123 更新时间:2023-11-30 19:57:09 24 4
gpt4 key购买 nike

我是 C 新手,正在尝试编写一个程序,该程序读取一系列整数,直到遇到零值,然后打印所有数字的总和,除了那些等于 13 或紧接在 a 后面的数字之外。 13、保证输入中至少有一个零。最多 100 行输入,每行包含一个整数。至少其中一行将包含整数 0。我的代码是这样的:

    #include <stdio.h>
int main ()
{

int sum = 0;
int data[100];
int i = 0;
scanf("%d\n", &data[i]);
while (data[i] != 0 && i < 100) {

if (data[i] == 13) {
sum = sum;
} else if (i > 0 && data[i-1] == 13) {
sum = sum;
} else {
sum += data[i];
i++;
}
scanf("%d\n", &data[i]);
}
printf("%d",sum);

}

我尝试删除 13 后的号码,但失败了...请帮忙。

最佳答案

你也可以尝试这个:

// extra flag outside loop
int found13 = 0;

while (data[i] != 0 && i < 100) {
if (data[i] == 13) {
found13 = 1; // set flag
} else if (found13) {
found13 = 0; // clear flag
} else {
sum += data[i];
i++;
}
scanf("%d\n", &data[i]);
}

改进:

  • 不会回头查看前一个元素
  • 不需要不断检查i > 0):
<小时/>

编辑:进一步重构

int sum = 0;
int found13 = 0;
int data;

while (scanf("%d\n", &data) == 1 && data != 0) {
if (data == 13) {
found13 = 1; // set flag
} else if (found13) {
found13 = 0; // clear flag
} else {
sum += data;
}
}

改进:

  • 正如 @PaulOgilvie 所指出的,您不再需要数组来存储结果
  • ...你也不需要i
  • ...也没有在循环之外额外调用 scanf
  • 现在适用于任意数量的输入

关于c - 整数之和,不包括 13 和 13 之后的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224971/

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