我对代码有两个问题,第一个是程序要我输入我的号码两次,第二个是程序在完成进程后立即关闭。
我曾尝试使用getchar()
语句阻止它这样做,但它似乎无法正常工作。
#include <stdio.h>
int square(int); /*function prototype*/
main()
{
int x; /*defining the function*/
printf("Enter your number\n");
scanf_s("%d \n", &x); /*reading the users input*/
printf("Your new answer is %d \n", square(x)); /*calling the function*/
getchar();
getchar();
}
int square(y) /*actual function*/
{
return y * y;
}
答案 0 :(得分:1)
通过更改
解决问题scanf_s("%d \n", &x);
到
scanf_s("%d", &x);
问题是格式字符串scanf
中的空白字符(空格,换行符等)会导致scanf
扫描并丢弃任意数量的空白字符(如果有的话),直到第一个非空白角色。
至于getchar()
的问题,请将第一个getchar()
替换为:
int c;
while((c = getchar()) != '\n' && c != EOF);
这会扫描并丢弃所有内容,直到\n
或EOF
。
另外,更改
main()
到
int main(void)
和
int square(y)
到
int square(int y)
答案 1 :(得分:0)
我建议使用scanf("%d", &x);
来读取您的号码。您的问题是您的参数如下所示:"%d \n"
因此程序希望您输入您的数字AND \ n。这样,你就可以说出你希望x
看起来如何,在你的情况下,它希望它是一个数值,一个空格和一行。
至于结束时,请使用getch();
。对于此功能,您需要像使用stdio一样包含conio.h
,意思是:#include <conio.h>
。