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;
}