Tag: while循环

为什么Scanf在拍摄角色时工作很奇怪

程序说明: – 我编写了一个程序,它从用户输入无限的字符输入。 时间并打印输入的输入。这是程序 #include int main() { int i=1; char a; while (i!=0) { printf(“Enter %d th value\n”,i); scanf(“%c”,&a); printf(“Entered input is %c\n”,a); i++; } } 上述方案的产出: – Enter 1 th value q Entered input is q Enter 2 th value Entered input is Enter 3 th value r Entered input is r Enter […]

while(1){}是否与while(1)相同;

我只是想确定这个C代码: while(flag==true) { } foo(); 做同样的事情: while(flag==true); foo();

在C中随机播放一个int数组 – 没有while循环

我想要对一个整数数组进行随机排序,数组已经排序,其大小为n,值为1 – n。 我只是想避免使用while循环以确保rand()不会给我相同的索引。 代码看起来像这样的somthin: void shuffleArr(int* arr, size_t n) { int newIndx = 0; int i = 0; for(; i < n – 1; ++i) { while((newIndx = i + rand() % (n – i)) == i); swap(i, newIndx, arr); } } for循环一直持续到n-1,因此例如在最后一次运行中它有50/50的机会等于i。 我想避免这个想法。

while循环在获取getchar()之前重复printf两次?

我目前正在学习C和C ++。 在这个小小的“程序实践”中,我要求用户输入’i’或’d’来知道他们是想使用整数还是十进制(浮点数)。 我有一个while循环,通过告诉他们输入错误的char来确保用户输入’i’或’d’。 出于某种原因,while循环内的提示在进入getchar()之前打印两次。 在这种情况下,我有点难以理解幕后发生的事情。 任何帮助都非常感激。 我正在使用Xcode(不知道它是否相关)。 #include int main() { char action; printf(“Please enter ‘i’ to work with integers or ‘d’ to work with decimals.\n\n”); scanf(“%c”, &action); while (action != ‘i’ || action != ‘d’) { printf(“You didn’t entered the right command. Please try again (i/d)\n”); action = getchar() } } 所以我得到的输出是这样的: You […]

为什么我的程序循环次数太多?

我是C的初学者,试图创建一个程序并且我的主要function有问题。 问题: 在询问他们想要输入多少个整数后,例如:4个数字,循环继续5次,基本上接受5个数字。 它也只在第二个数字后打印“Next:”。 在我用于错误检查的while循环中,在用户输入有效方法之后,例如:输入1,它将打印出它是“无效选择”并再次重新询问一次。 码: #include #include #include “a3defs.h” int main() { StackType stk; StackType *stkPtr = &stk; //Will be used to check whether to use recursive or iterative int method = 0; int sum; int *sumPnt = ∑ //Will be used to create array for amount of ints: int numOfIntegers; //Array of ints: […]

while(foo)vs while(foo!= NULL)

有人可以解释while(foo) vs while(foo != NULL)是如何相等的吗? 也: while(!foo) vs while(foo == NULL) 我知道 ! 不是,但这就是我所知道的全部。

如何退出while循环?

#include main(void) { char ch; while (1) { if ((ch = getchar()) != EOF) { break; } putchar(ch); } return 0; } 我怎么逃避呢? 我曾尝试使用EOF,但它没有用。

在while循环中比较char

只要输入不是x,循环就会继续询问输入,并打印出A或B. int main (void){ char input; while( input != ‘x’){ printf(“Enter Input:”); scanf(“%c”, &input); if (input == ‘a’){ printf(“A \n”); } else{ printf(“B\n”); } } return (0); } 问题是,每次输入输入后,它都会输出输出,并且无论输入a还是b或其他任何内容作为输入,它都会在新行中打印出“输入输入:B”。 谁能告诉我怎样才能解决这个问题,谢谢! 这是发生的事情: 输入输入:a 一个 输入输入:B / 输出后它总是打印这一行,我怎么能摆脱它? / 输入输入:a 一个 输入输入:B 输入输入:b 乙 输入输入:B 输入输入:b

使用OpenMP并行循环

我有一个非常大的数据文件,该数据文件中的每条记录有4行。 我编写了一个非常简单的C程序来分析这种类型的文件并打印出一些有用的信息。 该计划的基本理念是这样的。 int main() { char buffer[BUFFER_SIZE]; while(fgets(buffer, BUFFER_SIZE, stdin)) { fgets(buffer, BUFFER_SIZE, stdin); do_some_simple_processing_on_the_second_line_of_the_record(buffer); fgets(buffer, BUFFER_SIZE, stdin); fgets(buffer, BUFFER_SIZE, stdin); } print_out_result(); } 这当然会遗漏一些细节(健全/错误检查等),但这与问题无关。 该程序工作正常,但我正在使用的数据文件是巨大的。 我想我会尝试通过使用OpenMP并行化循环来加速程序。 但是,经过一些搜索后,OpenMP似乎只能处理事先知道迭代次数的循环。 由于我事先并不知道文件的大小,甚至像wc -l这样的简单命令需要很长时间才能运行,我该如何并行化这个程序呢?

为什么’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 … }