c - 为什么 while 循环不起作用?

标签 c

我是 C 语言的新手,我的代码遇到了一些问题。我必须编写一个程序来计算租车的价格,但 while 循环无法正常运行。while 条件上方的 scanf 是 %s而不是 %c,因为当它是 %c 时它不会让我给出一个字符。提前谢谢你。

int main(){
    float skms, ekms, tkms, price;
    char catcode;
    int days;

    do{
        printf("Selected rental program:\n");
        scanf("%c",&catcode);
        printf("Enter number of days:\n");
        scanf("%d",&days);
        printf("Starting kilometers display:\n");
        scanf("%f",&skms);
        printf("Kilometers display at end of rent:\n");
        scanf("%f",&ekms);
        tkms=(ekms/10)-(skms/10);
        switch(catcode){
                case'a':
                case'A':
                    price=ammountDueA(days, tkms);
                    printf("%.2f\n",price);
                    break;
                case'b':
                case'B':
                    price=ammountDueB(days, tkms);
                    printf("%.2f\n",price);
                    break;
                case'c':
                case'C':
                    price=ammountDueC(days, tkms);
                    printf("%.2f\n",price);
        }

        printf("Select rental program.('Q' or 'q' to exit)\n");



        scanf("%s",&catcode);


    }while(catcode==!'Q'&&catcode==!'q');
    printf("%c",catcode);


    return 0;
}

最佳答案

“不工作”,我想你的意思是它永远不会进入第二次迭代,但这正是它应该做的。 catcode==!'Q'&&catcode==!'q'如果 catcode 为真等于!'Q'等于!'q' . 'Q'是一些非零整数(取决于您的系统,但可能是 81),并且 !'Q'为零。同样,!'q'为零。 catcode不为零,因此循环终止。

关于c - 为什么 while 循环不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33583538/

相关文章:

c - 了解多核 SMP 系统

c - 为灵活性和处理分配内存的更好方法

c - c 库中的线程安全说明

c - 使用从 OpenCV 中的直方图生成的值来屏蔽图像数据

c - XC8编译器: program returning to beginning of main()

c++ - 无法解释的不同 omp_get_wtime() 用于相同的精确计算

c - 将静态变量作为参数传递给函数

c - 多进程服务器UDP套接字比单进程慢?

c - 将 memcpy 与 void 指针一起使用时出现段错误 - C

C - 动态创建字符串数组(malloc)