我的代码有一些错误,有人可以帮忙调试吗?显然,获取我的 x 的 scanf
部分有问题。
说明如下:
该程序是一个简单介绍的C语言应用程序,涉及控制台显示、用户输入、字符串和循环。 编写将产生如下屏幕的代码:
首先,程序提示用户输入他或她的姓名。 然后,它会显示
Hello <user name>
接下来,它打印出一个包含 4 个选项的菜单:
- 两个整数相加
- 添加两个字符串
- 计算小于
10
或小于11
的整数的阶乘 - 退出程序
对所有 4 个任务进行适当编码。
当任务完成时(当然不包括退出程序),菜单再次弹出并要求用户尝试另一个任务。重复此操作,直到按下 q 或 Q。您可以使用 switch-case 或 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);
另外,不要忘记程序末尾的 import 语句和 return 0;
。
关于c - 格式指定类型 'char *' 但参数的类型为 'int' ,我在这里犯了什么错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53844390/