gpt4 book ai didi

c - 做了一个 do while 循环,它只计算了一半的次数 (c)

转载 作者:太空宇宙 更新时间:2023-11-04 07:47:25 24 4
gpt4 key购买 nike

我想计算 2 名候选人的选票并显示谁获胜的结果,但是当用户告诉有多少选民时,程序只运行了一半的时间。另外,出于某种原因,问题总是出现两次,比如它是否通过了循环但什么也没做(如果 n 是奇数,它会下降。

我也试过使用循环'for'来做到这一点,但我遇到了同样的问题

#include<stdin.h>
#include<stdlib.h>

void main()
{
int sumj=0,summ=0,counter=0,n;
char vote;

printf("how many electors are there?\n");
scanf("%d",&n);

do
{
printf("Whats your vote? m for maria j for james\n");
scanf("%c",&vote);

if (vote=='j')
{
sumj++;
}
if (vote=='m')
{
summ++;
}

counter++;
} while (counter<n);

if (sumj>summ)
printf("james won");
if (summ>sumj)
printf("maria won");
if (sumj==summ)
printf("its a tie");
}

最佳答案

Also, for some reason the questions always appears two times, like if it passes through the loop but doesnt do anything

当然,这是一个很大的线索...如果循环对每个输入执行两次但第二次似乎没有做任何事情,那么这就可以解释为什么它似乎只执行了预期次数的一半,对吧?

printf("Whats your vote? m for maria j for james\n");
scanf("%c",&vote);

嗯,scanf()往往是这类问题的根源。你的scanf() call 一次只读取一个字符,对吧?但是当你输入投票时,你输入了多少个字符?我敢打赌你会输入类似 j<return> 的内容.这是两个字符,而不是一个。

在第一个if处设置断点在循环中,看看你击中它的次数是否有一半,vote 的值是\n .

关于c - 做了一个 do while 循环,它只计算了一半的次数 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56012855/

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