功能问题

Problems with functions

我的代码有两个问题,第一个是程序要我输入我的号码两次,第二个是程序在完成其过程后立即关闭。 我曾尝试使用 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;

}

我建议使用 scanf("%d", &x); 来读取您的号码。你的问题是你的参数看起来像这样:"%d \n" 所以程序希望你输入你的数字和 \n。这样,您可以说出您希望 x 的外观,在您的情况下,它希望它是一个数值,一个 space 和行尾。

最后一个用getch();。对于此功能,您需要像使用 stdio 一样包含 conio.h,即:#include <conio.h>.

通过更改

解决问题
scanf_s("%d \n", &x);

scanf_s("%d", &x);

问题是 scanf 格式字符串中的白色 space 字符(space、换行符等)指示 scanf 扫描并丢弃任意数量的白色space 个字符,如果有的话,直到第一个非白色space 个字符。


至于getchar()的问题,将第一个getchar()替换为:

int c;
while((c = getchar()) != '\n' && c != EOF);

这将扫描并丢弃所有内容,直到 \nEOF


另外,改变

main()

int main(void)

int square(y)

int square(int y)