如何解决为什么无论我在 do while 循环中输入什么,n 值都保持为 4?
我应该让用户输入数组的整数元素,数组大小未知,因为它可以根据用户的需要而变化。所以我把它声明为 big int a[81];
我应该找到输入的元素数量,但不管我输入多少元素它都保持为 4。有什么问题?
#include <stdio.h>
int main() {
setvbuf(stdout,NULL,_IONBF,0);
int i = 0,n;
int a[81];
printf("Zero cannot be the element of array,but enter zero if you finished entering the elements of array. \n");
printf("Enter the elements of array by whitespace each: ");
do {
scanf("%i",&a[i]);
i++;
} while((a[i]) != 0);
n = i + 1;
printf("%i",n);
return 0;
}
解决方法
欢迎使用 StackOverflow!这是我对您的问题的解决方案:
#include <stdio.h>
#define MAX_ARRAY_SIZE 81
int main(void) {
int i = 0,a[MAX_ARRAY_SIZE];
printf("Enter the elements of the array (enter 0 to stop)\n");
do {
printf(" ? ");
scanf("%d",a+i); //a+i is the same as &a[i]
} while(a[i++] != 0 && i < MAX_ARRAY_SIZE);
/* i is going to also count the 0. That's why if the
last added element is 0,we subtract 1 from the total elements */
if(a[i-1] == 0)
i--;
printf("\nTotal entered elements in the array: %d\n",i);
return 0;
}
一些值得注意的事情:
- 当你有一个数组时,使用预处理器宏
#define
来设置它的大小是一个好习惯。您将其用作#define NAME VALUE
(在代码中,MAX_ARRAY_SIZE
为NAME
,81
为VALUE
)。它使代码更具可读性,如果您决定将来更改此值,则只需在一个地方更改它。您可以详细了解Preprocessor Directives here -
始终检查您是否到达数组的末尾。在您的代码中,最终用户可以无休止地输入数字,只要他不输入值
0
。长话短说,这会产生问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。