我尝试使用此代码,但在用户输入总分后控制台崩溃
#include <stdio.h>
#include <string.h>
int main () {
int part, total;
int whole = 100;
printf("What is total score of the exam?\n");
scanf("%d", part);
printf("Enter your score on the exam\n");
scanf("%d", total);
printf(total/part * whole);
return 0;
}
答案 0 :(得分:3)
一个简短的回答,所以这个问题不会得不到答案。您应该启用编译器警告并学习解释它们,这样您就可以更轻松地自己解决问题。在GCC上,您可以添加-Wall
编译器选项,以显示查看此类问题所需的常用警告。
#include <stdio.h>
#include <string.h>
int main ()
{
int part, total;
int whole = 100;
printf("What is total score of the exam?\n");
scanf("%d", &part); /* address of part needed, not its value*/
printf("Enter your score on the exam\n");
scanf("%d", &total); /* address of total needed, not its value*/
printf("%d", total/part * whole); /* printf expects a string as its first parameter */
return 0;
}
答案 1 :(得分:1)
如@ Striezel评论中所述,您需要在scanf
中添加指向第二个参数的指针,这样您不仅可以检索变量的值,还可以指向您想要读入的变量。
您的scanf
代码应如下所示:
int main() {
...
scanf("%d", &part);
...
scanf("%d", &total);
...
}
此外,您的上一个printf
缺少一个字符串组件,如下所示:printf("%d", total/part * whole);
另请查看@LudaOtaku的answer,了解有关识别这些非常基本错误的一些提示。