C scanf忽略循环中的第二个变量

C scanf忽略循环中的第二个变量,c,C,但实际上是这样的: int main() { float T[100]; float *pt=T; float suma = 0, srednia, zmienna; int rozmiar; printf("How many numbers would you like to put in: "); scanf(" %d", &rozmiar); int dzielnik = rozmiar; printf("\n E

但实际上是这样的:

int main()
{
    float T[100];
    float *pt=T;
    float suma = 0, srednia, zmienna;
    int rozmiar;

    printf("How many numbers would you like to put in: ");
    scanf(" %d", &rozmiar);
    int dzielnik = rozmiar;

    printf("\n Enter the number: \n");
    for(int i = 0;i<rozmiar;i++)
    {
        printf("\n i = %d", i );
        scanf("%99f\n", &zmienna);
        *(pt+i) = zmienna;
    }

    return 0;
}
How many numbers would you like to put in: 2 

Enter the number:

i = 0

2 (my number)

i=1

3 (my number)

您遇到的具体问题是
scanf
:放置
\n
通常是个坏主意,因为输入换行符通常是向程序发送一行字符的方式。在
printf
中自由使用
'\n'
,在
scanf
中使用“从不”

这是我修改过的版本。我删除了指针的诡计,因为索引到数组中更简单、更好,并且初始化了数组,您应该经常这样做:

How many numbers would you like to put in: 2 

Enter the number:

i = 0

1 (my number)

2 (my number)

i = 1

3 (my number)
#包括
int main(){
浮点T[100]={0};//用于未初始化。
浮点数suma=0,zmienna;
内罗兹米尔;
printf(“您希望输入多少个数字:”);
scanf(“%d”&rozmiar);
printf(“\n输入数字:\n”);

对于(int i=0;我从scanf中删除换行符,就像这样,
scanf(“%99f”,&zmienna);
如果您只使用
%d
%f
则不必担心换行符,前导空格会被过滤(
%c
是另一回事).但是
%99f
中的
99
应该实现什么?现在请保持简单。
#include <stdio.h>

int main() {
    float T[100] = {0}; // Used to not be initialized.
    float suma = 0, zmienna;
    int rozmiar;

    printf("How many numbers would you like to put in: ");
    scanf("%d", &rozmiar);

    printf("\n Enter the number: \n");
    for (int i = 0; i<rozmiar; i++) {
        printf("\n i = %d", i);
        scanf("%f", &zmienna);
        T[i] = zmienna;
    }

    return 0;
}