Tag: 循环

C – 生成X字符单词的所有可能性

编辑:我的意思是排列,而不是组合。 谢谢。 我意识到这是一个相当开放的问题,我不是每个人都在寻找代码,但实际上有些提示从哪里开始。 我想要的是一个程序,它可以生成给定长度的每个字符组合,即用户输入4,程序将生成长度为4的ASCII字符的每种可能组合。 不确定我会从哪里开始,也许是使用哈希表? 当然会需要循环,但我不确定如何设计它们来生成组合。 到目前为止,它始终是一个案例,例如,循环直到1000件事情发生。 任何建议都非常感谢! 干杯, T.

循环跳过scanf它的条件。

我不明白为什么While循环只是加速并跳过scanf的char? 它甚至不会要求我的输入,只是循环就像没有明天一样。 #include int main() { int number; int multiply, ans; char choice; printf(“————————————-“); printf(“\n MULTIPLICATION TABLE “); printf(“\n————————————-“); do { printf(“\nEnter an integer number:”); scanf(“%d”, &number); printf(“\nMultiplication of %d is :-\n”, number); printf(“\n”); for(multiply=1; multiply<11; multiply++){ ans = number * multiply; printf(" %d", ans); } printf("\n"); printf("\nWould you like to continue? [Y] for Yes,[N] […]

意外调用printf

这是我在这里发布的关于C编程的第一个问题,因为我刚刚在几周前开始学习C语言。 生病写下我的代码,问我的问题是什么:)如果有人请知道我如何解决我的错误或我应该替换我的代码,请回复:)! 我遇到的问题是,如果你自己运行代码,你会看到一切正常,除了声明中的’else’部分。 我遇到的问题是,当有人输入多个字母时,它会多次运行最后一个printf语句,并且会在用户输入除y或n之外的字符时多次printf 。 第一部分有Y或N工作正常,但如果他们输入任意数量的其他字符,它不会只是说“请再次选择”,一次然后再重新扫描,它输出至少2个printfs,仅用于即使输入了一个字符,“请再次选择”“请再次选择”,然后,如果您为答案键入更多字符,则只需输入更多“请再次选择”。 请帮助我理解我做错了什么,因为我非常热衷于学习正确编程,但我只是被困在这里atm 🙂 #include #include int main() { char answer; int loop = 0; printf(“Please select. [Y/N]:\n”); while (loop == 0) { scanf(“%c”, &answer); if (answer == ‘y’ || answer == ‘Y’) { printf(“Seeyou Later Aligator.\n”); break; return 0; } else if (answer == ‘n’ || answer == ‘N’) { […]

在C中执行do-while循环后打印“Error”语句

如何在执行do-while循环后打印消息,告知输入错误? 或者我使用了错误的循环? #include #include void main(){ int inp; do{ clrscr(); printf(“Enter Number 10); // Print “Wrong” when inp>10 printf(“Right Answer!”); getch(); }

为什么此代码中的时间复杂度为O(n ^ 2)?

我只是没有得到它,为什么时间复杂度是O(n ^ 2)而不是O(n * logn)? 第二个循环每次递增2,所以不是O(logn)? void f3(int n){ int i,j,s=100; int* ar = (int*)malloc(s*sizeof(int)); for(i=0; i<n; i++){ s=0; for(j=0; j<n; j+=2){ s+=j; printf("%d\n", s); } free(ar); }

高效的手动循环展开

我有这个C代码: for (k = 0; k < n_n; k++) { if (k == i || k == j) continue; dd=q2_vect[k]-q1_vect; d2=dd*dd; if (d2<0) { a=1; break; } } 出于编译器优化的原因(在Cell处理器的SPE上),我需要手动解开这个,所以我尝试了: dd=q2_vect[0]-q1_vect; d2=dd*dd; if (d2<0)goto done; dd=q2_vect[1]-q1_vect; d2=dd*dd; if (d2<0)goto done; dd=q2_vect[2]-q1_vect; d2=dd*dd; if (d2<0)goto done; ….. ….. // end goto notdone; done: ok=0; notdone: ….. 但我不知道如何应对 […]

控制命令行的提示

我用C制作了基于udp的客户端和服务器示例程序。 我的代码如下 [服务器] #include #include #include #include #include #include #include #include int printerror2(char func[], int errnum) { printf(“%s error = %d:%s\n”, func, errnum, strerror(errnum)); perror(func); return errnum; } int printerror(char func[]) { return printerror2(func, errno); } int main(int argc, char *argv[]) { int ret; /* WSADATA wsaData; ret = WSAStartup(MAKEWORD(2,2), &wsaData); if (ret != 0) […]

如何跳转到代码的开头?

我正在制作一个程序,要求用户输入一个输入。 如果用户输入输入,则显示输入,然后完成程序。 如何让程序从头开始? 我的代码是这样构建的:(只显示构建而不是代码本身) please enter user input: while (x != y) { if ( x == y ) { printf(“printing something”); } else if (x > y ) { printf(“printing something”); } else { printf(“printing something”); } }

在迭代期间保留在循环体中声明的变量吗?

考虑C中的循环,它在循环体中声明一个字符数组。 在每次迭代时,都会修改数组的字符,直到到达结尾。 最后,打印变量。 描述将扩展到下一个代码: #include int main(void) { int i = 0; for (;;) {/* same as: while(1) { */ char x[5]; x[i] = ‘0’ + i; if (++i == 4) { x[i] = ‘\0’; /* terminate string with null byte */ printf(“%s\n”, x); break; } } return 0; 许多人可能期望0123作为输出。 但由于某些原因,GCC 4.7在启用优化( -O1和更高版本)进行编译时不会这样做。 它将随机数据放在字符数组的第一个字节中,这将成为: | […]

相对于另一个arrays重新排列数组

我有两个并行的数组: defenders = {1,5,7,9,12,18}; attackers = {3,10,14,15,17,18}; 两者都是排序的,我想要做的是重新排列防御arrays的值,以便他们赢得更多的游戏(防御者[i]>攻击者[i])但我在如何交换防守arrays中的值时遇到问题。 所以实际上我们只针对攻击者使用防御arrays。 我有这个,但如果有的话,它没有太大的变化,我很确定我做得不对。 它被认为是一种powershell方法。 void rearrange(int* attackers, int* defenders, int size){ int i, c, j; int temp; for(i = 0; i<size; i++){ c = 0; j = 0; if(defenders[c]<attackers[j]){ temp = defenders[c+1]; defenders[c+1] = defenders[c]; defenders[c] = temp; c++; j++; } else c++; j++; } } 编辑:之前我确实问过这个问题,但我觉得好像我措辞严厉,并且不知道如何“碰撞”旧post。