gpt4 book ai didi

C 程序最后没有执行 printf

转载 作者:行者123 更新时间:2023-11-30 14:42:29 25 4
gpt4 key购买 nike

我只是在为学校做一个小练习,但我一直在使用 scanf 函数。
如果我运行这段代码,一开始一切都工作正常,但是一旦完成所有 5 个 scanf,它就会停止工作并退出,而不会在最后打印 printf。这件事到底问题出在哪里呢?
现在是代码(我在 Windows 10 上的 Visual Studio 2017 中编写代码):

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main() {
char name[50];
char gender[1];
float wage = 0;
int age = 0;
int height = 0;

printf("\nInput Name: ");
scanf(" %s", name);

printf("\nInput Gender (m/f): ");
scanf(" %c", &gender);

printf("\nInput Monthly Wage: ");
scanf(" %d", &wage);

printf("\nInput Age: ");
scanf(" %d", &age);

printf("\nInput height in cm: ");
scanf(" %d", &height);


printf("\nNAME: %s\nGENDER: %c\nWAGE %d\AGE: %d\nSIZE: %d", name, gender, wage, age, height);

return 0;
getchar();
}

最佳答案

您的代码有很多问题,让我们一一讨论:

问题 1:

scanf(" %c", &gender);

这里你使用的是&gender,这就是问题所在。您已将性别声明为字符数组而不是变量,因此在 scanf 语句中您必须传递数组第一个元素的地址,因此只需使用 &gender 即可性别&gender[0]。如果您还没有了解指针和地址,请访问此链接: https://www.youtube.com/playlist?list=PL2_aWCzGMAwLZp6LMUKI3cc7pgGsasm2_

此外,您只接受一个字符作为输入,那么您不需要为此使用数组。只需使用 char sex; 而不是 char sex[];

问题2:

scanf(" %d", &wage);

您已将工资声明为 float 工资,因此请使用 %f 而不是 %d

问题3:

printf("\nNAME: %s\nGENDER: %c\nWAGE %d\AGE: %d\nSIZE: %d", name, gender, wage, age, height);

这里看看%d\AGE

\A

将发出警告,因为它对编译器来说似乎是未知的转义序列。这实际上是你身边的一个拼写错误,你错过了\n。

所以最后用下面的代码行替换您的问题:

char gender;

scanf("%f", &wage);

printf("\nNAME: %s\nGENDER: %c\nWAGE %f\nAGE: %d\nSIZE: %d", name, gender, wage, age, height);

关于C 程序最后没有执行 printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com