我的代码中有错误,有人可以帮助调试吗?显然,在scanf部分出问题了以获取我的x
说明如下所示:

该程序是C语言应用程序的简单介绍,涉及控制台显示,用户输入,字符串和循环。
编写将产生如下所示屏幕的代码:

首先,程序提示用户输入他或她的名字。
然后,它将显示

Hello <user name>


接下来,它打印出一个包含四个选项的菜单:


加两个整数
添加两个字符串
计算小于或等于10或小于11的整数的阶乘
退出程序


适当编码所有4个任务。

任务完成后(当然不包括退出程序),菜单再次弹出,并要求用户尝试其他任务。重复此操作,直到按q或Q。您可以使用大小写或if-else,但前者看起来更清晰。
即使您可能知道如何编写函数,也不要在该程序中使用函数。

#include <stdio.h>

char name[20],
     c[1000],
     d[1000],
     x;
int a, b, i, n,
    factorial = 1;

int main() {
    do {
        printf("\nPlease select one:\n");
        printf("**********MENU**********\n");
        printf("1 - add two integers\n");
        printf("2 - add two strings\n");
        printf("3 - compute factorial for integer less and including 10 or less than 11\n");
        printf("Q - quit program\n");
        printf("************************\n");

        scanf("%s", x);

        switch(x) {

        case '1':
            printf("Enter first integer:\n");
            scanf("%d", &a);
            printf("Enter second integer:\n");
            scanf("%d", &b);
            printf("%d + %d = %d\n", a, b, a + b);
            break;
        case '2':
            printf("Enter first string:\n");
            scanf("%s", c);
            printf("Enter second string:\n");
            scanf("%s", d);
            strcat(c, d);
            printf("%s\n", c);
            break;
        case '3':
            printf("Enter integer less than 11:\n");
            scanf("%d", &n);
            if (n > 0 && n < 11) {
                for(i = 1; i <= n; ++i) {
                    factorial *= i;
                }
                printf("factorial of %d is %d\n", n, factorial);
                break;
            }
            else {
                printf("error, please enter an integer\n");
            }

        case 'Q':
            printf("Program quitting...\n");
            break;

        }
    } while (x != 'Q');
}

最佳答案

在这里将x声明为字符。

char name[20],
     c[1000],
     d[1000],
     x;


但是,当扫描到x时,可以使用%s,它用于字符串。

scanf("%s", &x);


扫描字符的正确方法是scanf("%c",&x);

另外,请不要忘记程序末尾的导入语句和return 0;

关于c - 格式指定类型为'char *',但参数的类型为'int',我在这里犯了任何错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53844390/

10-11 02:12