gpt4 book ai didi

c - 为什么我的 scanf for char 变量在代码块中运行时不接受值?

转载 作者:行者123 更新时间:2023-11-30 15:07:25 26 4
gpt4 key购买 nike

这是代码

//WAP in Co convert a binary or octal to a decimal number depending on user choice.
#include <stdio.h>
#include <math.h>
int conversion(int number,int base);
int main(void){
int number,base,decimal;
char choice;
printf("Enter the number:");
scanf("%d",&number);
printf("Enter 'b' for binary or 'o' for octal:");
scanf("%c",&choice); //Problem occuring here
if(choice=='b')
base=2;
base=8;
decimal=conversion(number,base);
printf("Decimal number:%d",decimal);
return 0;
}

int conversion(int number,int base){
int reminder;
int decimal=1;
int i=0;
while(number>=0){
reminder=number%base;
decimal=(decimal*reminder)*pow(base,i);
number/=10;
i++;
}
return decimal;
}

最佳答案

您有两个 scanf(),在第一个之后,某些字符被遗漏以供读取。您可以在下一个 scaf() 之前使用 getchar() 它应该接受下一个输入

printf("Enter 'b' for binary or 'o' for octal:");
getchar();
scanf("%c",&choice);

在转换函数中,带有条件的 while 循环会导致其进入无限循环。将正数除以 10 所得的最小值为 0。使用以下代码:

while(number>0)

此外,如果第二次输入后的条件没有用。因为无论如何你都将 8 分配给基数。

关于c - 为什么我的 scanf for char 变量在代码块中运行时不接受值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278959/

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