gpt4 book ai didi

C - 在 vector 中输入数字 0 时中断 while 循环

转载 作者:行者123 更新时间:2023-11-30 19:03:58 25 4
gpt4 key购买 nike

我有这个简单的代码,它将在每次循环的 vector 位置处插入在终端中输入的数字。

int main() 
{
int vector[5];
int i;

for (i = 0; i < 5; i++)
{
printf("Number: ");
scanf_s("%d", &vector[i]);
}

system("pause");
return 0;
}

我的问题是如何在输入数字 0 后立即中断循环。

例如,假设我的 vector 有 50 个位置,我输入了 10 个正整数位置,现在我希望当我输入零时循环结束,其余 40 个位置保持空白。

我想它是用 while 循环实现的,但我什至无法接近我想要的结果。

最佳答案

#define MAX_SIZE (5)

int main()
{
int vector[MAX_SIZE] = {0};
int i;

memset(vector, 0xFF, sizeof(vector)); //sets all vector[i] to -1 on init;
for (i = 0; (i < MAX_SIZE) && (i?vector[i-1]:1) ; i++) //you can add the condition to break from the for loop here. This is more complicated but its just for demonstration.
{
printf("Number: ");
scanf_s("%d", &vector[i]);
}

system("pause");
return 0;
}

上面的示例代码演示了使用 for 循环条件表达式作为中断循环的方法。由于您构造循环的方式,其中的三元数可防止 i=0 的情况导致索引越界。更好/更易读的方法如下:

#define MAX_SIZE (5)

int main()
{
int vector[MAX_SIZE] = {0};
int i;

memset(vector, 0xFF, sizeof(vector)); //sets all vector[i] to -1 on init;

for (i = 0; i < MAX_SIZE; i++)
{
printf("Number: %d\n", i);
scanf_s("%d", &vector[i]);
if(vector[i] == 0)
{
break;
}
}

//system("pause");
printf("Broke the loop when i was %d\n", i);
return 0;
}

除了可读性之外,两者之间的区别在于 i 将在第一个中额外增加一次。另外,请确保初始化您声明的所有变量(所有 vector 元素都是堆栈垃圾,0xFF memset 将它们全部分配给 -1)。

关于C - 在 vector 中输入数字 0 时中断 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53217758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com