Tag: for循环

为什么’continue’语句忽略’while’循环中的循环计数器增量,而不是’for’循环?

如果我在while循环中使用continue ,为什么它会进入无限循环,但在for循环中工作正常? 循环计数器增量i++在while循环中被忽略,如果我在continue之后使用它,但如果它在for循环中它可以工作。 如果continue忽略后续语句,那么为什么不忽略for循环的第三个语句,其中包含计数器增量i++ ? 在循环体之后执行for循环的第三个语句时,不是continue 之后的for循环的第三个语句并且应该被忽略吗? while(i<10) //causes infinite loop { … continue i++ … } for(i=0;i<10;i++) //works fine and exits after 10 iterations { … continue … }

C中双精度数组的优化和

我有一个任务,我必须采取一个程序,并使其在时间上更有效。 原始代码是: #include #include // You are only allowed to make changes to this code as specified by the comments in it. // The code you submit must have these two values. #define N_TIMES 600000 #define ARRAY_SIZE 10000 int main(void) { double *array = calloc(ARRAY_SIZE, sizeof(double)); double sum = 0; int i; // You can […]

这个for循环中发生了什么

我正在尝试别的东西,但突然陷入这种无限循环。 请建议一个答案,并解释下面的循环内容 #include int main() { int x=0; int i; int array[5]; for(i=0;i<=5;i++) { array[i]=x; printf("#%d value set in index %d\n",x,i); } return 0; } 当我在for循环的条件中删除=符号它工作正常。 但是当我把它放到无限循环时,为什么呢? 访问数组中的额外元素(超过其限制)是未定义的行为还是什么? 任何帮助将不胜感激。 提前致谢。 〜

一种函数,用于检查每个元素在数组中出现的次数

我正在创建一个列出数组的函数,并说明每个元素出现的次数。 到目前为止我自己想到的是我应该遍历数组并且应该有一个计数器来跟踪它出现的次数,然后是第二个数组来放置该计数器的值与值对应在第一个数组中。 但我无法弄清楚一个算法来搜索每个值是否在循环内重复。

在C-still工作中未在for循环条件中声明的变量

我编写了下面的代码来查找C中所有数字的总和,当我编译并运行它时,它成功了。 但是,后来才意识到我没有在for循环的条件中为变量’ n ‘ 输入任何值 。 即使没有为条件变量赋值,我也很困惑这个程序是如何工作的。 我想澄清一下。 #include void main() { int no,a,b,n,sum=0; printf(“Enter the number to be added”); scanf(“%d”,&no); for(int i=0;i<n;i++) { a=no%10; b=no/10; sum=a+sum; no=b; } printf("The sum is %d",sum); }

循环在第一次之后跳过scanf语句

这是main()的代码: int main (void) { float acres[20]; float bushels[20]; float cost = 0; float pricePerBushel = 0; float totalAcres = 0; char choice; int counter = 0; for(counter = 0; counter < 20; counter++) { printf("would you like to enter another farm? "); scanf("%c", &choice); if (choice == 'n') { printf("in break "); break; } […]

当用户在c中输入输入时停止for循环

首先,谢谢你的帮助! 我是C语言的新手(以及一般的编程),我正在尝试编写一个用户输入数据点的程序。 然后将数据点保存在一个数组中,然后可以对它们进行操作。 我被卡住的地方:我希望用户能够输入(几乎)任意数量的点,然后使用各种“关键字”来表示数据输入的结束。 在这种情况下,用户将键入“完成”。 这是我到目前为止所拥有的: #include #include int main(void) { printf(“\n Welcome! \n\n Please enter each data point. Enter ‘done’ when finished.\n\n”); double data[1048]; int i, count; for (i = 1; ;i++) { printf(“Data[%i]: “, i); scanf(“%lf”, &data[i]); if (data[i] == ‘done’) { break; } else { count++; } } } 我试过’返回1;’ ‘打破;’。 每次,程序都能正常运行,直到输入“关键字”,此时我得到: […]

使用嵌套循环在C中打印星形(’*’)钻石?

当用户为钻石输入5时,我希望能够打印出这样的钻石。 但也适用于任何奇数且大于0的值。 我有一个代码,用于为用户输入5制作钻石,但不适用于所有奇数输入.. half = (size/2)+1; for (a=1; a <= half ; a++) /*top to mid row of diamond*/ { for (b=a; b<half;b++) { printf(" "); } for (c= size -2* a; c <= half; c++) { printf("*"); } printf("\n"); } for (a = 1; a 0;b–) { printf(” “); } for (c = size-2*a; […]

为什么我的程序中存在无限循环?

int main(void) { int i; int array[5]; for (i = 0; i <= 20; i++) array[i] = 0; return 0; } 为什么上面的代码陷入无限循环?

对于没有第二个条件的循环,即布尔检查?

我必须编写一个函数来计算传入的unsigned int的log 16的底层。对于允许使用哪些运算符和哪些常量有限制,我们只能专门for循环。 为清楚起见,我们不能使用任何条件语句(如果,否则,切换…)。 function原型是: int floor_log16(unsigned int x); 允许的运算符: ++ — = & | ~ ^ << ! >> 允许的常数: 1 2 3 4 8 16 我写了一个程序版本如下: int floor_log16(unsigned int x) { int index=1; int count=(1!=1); count–; for(; index<=x; index<<=4) { count++; } return count; } 这看似按预期工作。 但是,我意识到基于后面的函数和我们必须编写的所需function的描述,我注意到在“允许的操作符”下有时>和<被列出。 我推断这意味着,因为对于上面列出的floor_log16函数,我们没有明确告知使用>或< ,我只能假设上面发布的解决方案不会被接受。 这让我很困惑,因为我不明白你怎么可能有一个没有布尔检查的for循环? 在条件满足时,不是循环迭代的整个想法吗?