我正在尝试衡量我的输入数量。
如果我输入以下行:1 2 65 3 4 7
,
我希望输出为8
。但我得到的是1 2 3 4。
#include <stdio.h>
int main(void) {
int data;
int i = 1;
while (i <= sizeof(data)) {
scanf("%d", &data)
printf("%d", i);
i++;
}
}
答案 0 :(得分:3)
您正在打印与输入无关的i
。所以无论你输入什么,你都会得到1234
sizeof(data)
与sizeof(int)
相同,即系统中值为4的常量。
如果您想计算数字的数量而不关心个别数字的价值,您可以这样做:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char s[1024];
char* p;
int i = 0;
fgets(s, 1024, stdin);
p=s;
while (*p != '\0')
{
if (!isdigit(*p))
{
p++;
}
else
{
i++; // Found new number
// Search for a delimiter, i.e. skip all digits
p++;
while (*p != '\0' && isdigit(*p))
{
p++;
}
}
}
printf("We found %d numbers", i);
return 0;
}
输出:
We found 6 numbers
请注意,此代码将接受任何非数字输入作为分隔符。
答案 1 :(得分:1)
将scanf放在while循环之前,并在while循环之后移动printf。
答案 2 :(得分:-1)
我也根据我的公开提供解决方案。
#include <stdio.h>
int main(void) {
int data = 1;
int i = 0;
// here data != 0 is trigger point for end input,
// once you done with your inputs you need to last add 0 to terminate
while (data != 0) {
scanf("%d", &data)
printf("Collected Data: %d", data);
i++;
}
printf("Total number of inputs are %d.", i);
}
希望此解决方案可以帮助您。
答案 3 :(得分:-1)
这是我的解决方案:
#include <stdio.h>
#include <stdlib.h>
int main() {
int i = 0;
int data[100]; // creating an array
while(1) { // the loop will run forever
scanf("%d", &data[i]);
if (data[i] == -1) { //unless data[i] = -1
break; // exit while-loop
}
i++;
}
printf("%d\n", data[2]); // print 2nd integer in data[]
return 0;
}
输入int后,不要忘记按Enter键。该计划的输出:
2
56
894
34
6
12
-1
894
希望有所帮助。 :)