我的代码中有错误,有人可以帮助调试吗?显然,在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/