关于只有一个在循环语句以外的scanf在执行时需要输入两次的问题。

img


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a[80] = { 0 }, b[80] = { 0 };
    int i, j = 0, n;
    srand((unsigned)time(NULL));
    printf("请输入要随机分数的个数:");
    scanf("%d ", &n);
    printf("顺序:");
    for (i = 0;i < n;i++)
    {
        a[i] = rand() % 99 + 1;
        printf("%d ", a[i]);
    }
    printf("\n");
    printf("逆序:");
    for (i = n - 1;i >= 0;i--)
    {
        j = n - i;
        b[j] = a[i];
        printf("%d ", b[j]);
    }
    printf("\n");
    return 1;
}

我的scanf是在循环之外的,可是执行的时候要执行到第一个for语句得输入两次值,但是产生随机数的个数却是以第一个输入的值为准。
执行的时候也没有报错和提示注意。

你的 scanf("%d ",&n)里面%d后面多了一个空格