Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: printf与scanf

回复:
user: user-0
content: 引用 8 楼 如风_Antoni的回复:如果要直接省略小数后的0，直接用%g最简单。 确实如此，上面两位的方法都是可行的，但一定条件下，用%g确实比较好

user: user-1
content: 如果要直接省略小数后的0，直接用%g最简单。

user: user-0
content: 引用 5 楼 與蘤舊縐的回复:[quote=引用 4 楼 无名D小兵 的回复:] [quote=引用 2 楼 與蘤舊縐的回复:]你的意思是scanf接收时，也就是你输入时是几位小数输出时也是几位小数吗，那只需要获取输入时的小数位数，然后在输出时指定即可  printf可以使用*作为占位符，printf("%.*d",位数,&数字)即可 就是要这样，不过我不大理解你的做法，但按压1楼说的，printf里用%g就可以了[/quote]  %g可以过滤后面的0，我认为你是需要保持输入和输出的小数位一致，比如输入1.500，输出2.500，这样的话你可以使用这个办法[/quote] 不过你的printf函数里为何会用到&

user: user-0
content: 引用 5 楼 與蘤舊縐的回复:[quote=引用 4 楼 无名D小兵 的回复:] [quote=引用 2 楼 與蘤舊縐的回复:]你的意思是scanf接收时，也就是你输入时是几位小数输出时也是几位小数吗，那只需要获取输入时的小数位数，然后在输出时指定即可  printf可以使用*作为占位符，printf("%.*d",位数,&数字)即可 就是要这样，不过我不大理解你的做法，但按压1楼说的，printf里用%g就可以了[/quote]  %g可以过滤后面的0，我认为你是需要保持输入和输出的小数位一致，比如输入1.500，输出2.500，这样的话你可以使用这个办法[/quote] 查了一下资料后，明白你的意思了，你这个确实更加准确，同样谢谢了

user: user-2
content: 引用 4 楼 无名D小兵 的回复:[quote=引用 2 楼 與蘤舊縐的回复:]你的意思是scanf接收时，也就是你输入时是几位小数输出时也是几位小数吗，那只需要获取输入时的小数位数，然后在输出时指定即可  printf可以使用*作为占位符，printf("%.*d",位数,&数字)即可 就是要这样，不过我不大理解你的做法，但按压1楼说的，printf里用%g就可以了[/quote]  %g可以过滤后面的0，我认为你是需要保持输入和输出的小数位一致，比如输入1.500，输出2.500，这样的话你可以使用这个办法

user: user-0
content: 引用 2 楼 與蘤舊縐的回复:你的意思是scanf接收时，也就是你输入时是几位小数输出时也是几位小数吗，那只需要获取输入时的小数位数，然后在输出时指定即可  printf可以使用*作为占位符，printf("%.*d",位数,&数字)即可 就是要这样，不过我不大理解你的做法，但按压1楼说的，printf里用%g就可以了

user: user-0
content: 引用 1 楼 寻开心的回复:float f = 1.0/3; printf（“%.10f”, f）;  输出指定小数点后的位数？    f = 1.5 还是printf("%g", f) 只输出1.5  自动过滤尾巴的0， 不会输出成1.50000这种样子 谢谢，果然使用%g就可以了

user: user-2
content: 你的意思是scanf接收时，也就是你输入时是几位小数输出时也是几位小数吗，那只需要获取输入时的小数位数，然后在输出时指定即可  printf可以使用*作为占位符，printf("%.*d",位数,&数字)即可

user: user-3
content: float f = 1.0/3; printf（“%.10f”, f）;  输出指定小数点后的位数？    f = 1.5 还是printf("%g", f) 只输出1.5  自动过滤尾巴的0， 不会输出成1.50000这种样子
user-0 提问: 找1900到2000内的闰年，但出现了我也看不懂的问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: if语句成功要执行两行代码， 但是这两行代码，没有被组装到一起  j[x] = i;  i++； 后果就是，无论if是否成立 x++都被执行了。  j数组又没有初始化，里面存放的是就是乱七八糟的东西。 仅此而已。  这两行可以改为： j[x++] = i;  或者  j[x]=i,  i++;  或者  {     j[x] = i;    i++; }
user-0 提问: 求解答

回复:
user: user-0
content: 哈哈，你看串行了，我说的第二题，第二题没说要降低复杂度

user: user-1
content: 引用 4 楼 qq_45704330 的回复:可题说不能用循环，提示不就是让你用递归吗？这种公式求解是不是不能分开解，必须按着公式来呀  当时看着这题前后说法还是挺矛盾的，又不给迭代，还降低复杂度，还以为要搞什么高大上的算法，现在看起来也没多大问题，大概就是像你所说，想训练一下递归吧

user: user-0
content: 可题说不能用循环，提示不就是让你用递归吗？这种公式求解是不是不能分开解，必须按着公式来呀

user: user-1
content: 递归没什么问题，但放着迭代不用搞递归与题意相悖，效率更低

user: user-0
content: 第二题，我把分子和分母分别用递归，然后两个函数相除这样是不是不对

user: user-2
content: 第一题，最简单的就是利用列组合公式，直接出结果。  因为是5个不同的数，答案就是： 5*4*3   要输出每个数的结果的话， 自己百度，这种排列组合的源码多的是  第二题   递推解决 int  f[10] = {1}， a[10]= {0};   float s[10]={0}; for ( i=2; i<10; i++ ) {       a[i] = s[i-1] + i;        f[i] = f[i-1] * i;        s[i] = s[i-1] + f[i] * 1.0/ a[i]; }  输出 s[8]*s[9];  大概就是这个样子了
user-0 提问: 初学者求教，为什么55会被调去中间，正确顺序应该是0 55 1 8 6 44 2 7 9 66

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 11 楼 寻开心的回复:55 是第一个数， 必然会换走。 之所以，你看55不顺眼， 是因为0在最后一个， 0如果不是最后一个， 还有有第二个你看着不顺眼的呢  55被换走的过程，按照你的代码是先和0做了交换， 0跑到第一个， 55是最后一个 而后，66又和55做了交换， 55就占据了66的位置， 66是去了最后一个  这是符合题目要求的 懂了，谢谢你

user: user-2
content: 找到最大最小的位置max和min， 这个你的代码已经找到了 做两个临时变量，   int vmax = *max， vmin=*min； if (min>max) { char * p = min; min=max; max=p; }; while (min>number ) *min = *(min-1), min--; while(max<number+9) *max = *(max+1), max++; *min = vmin;  *max = vmax; 这样应该就可以了

user: user-2
content: 55 是第一个数， 必然会换走。 之所以，你看55不顺眼， 是因为0在最后一个， 0如果不是最后一个， 还有有第二个你看着不顺眼的呢  55被换走的过程，按照你的代码是先和0做了交换， 0跑到第一个， 55是最后一个 而后，66又和55做了交换， 55就占据了66的位置， 66是去了最后一个  这是符合题目要求的

user: user-0
content: 先找到最大和最小，然后交换得到最后的结果的。那为什么在找的中间会使55的位置发生变化

user: user-2
content: 要得到你题目的结果。 要先循环找到最大和最小在数组当中位置 这两个位置把数组拆成三段， 前后两端各自向中间移动一格， 空出首位容纳最小和最大值。 要做到这个，比你的题目的难度要求就高了一些， 描述也不应该是你给的图那样了  找到最大最小的位置max和min， 这个你的代码已经找到了 做两个临时变量，   int vmax = *max， vmin=*min； if (min>max) { char * p = min; min=max; max=p; }; while (min>number ) *min = *min--; while(max<number+9) *max = *max++; *min = vmin;  *max = vmax; 这样应该就可以了

user: user-0
content: 引用 7 楼 寻开心的回复:你的代码本来就是先找到最大和最小，然后交换得到最后的结果的。  你的题目要求应该也是这样的。标题的结果是你自己认为正确的答案，还是题目给出来的正确答案，怀疑是前者 那些数字是我自己输入的，发现位置发生了改变，答案给出的不是这些数字

user: user-2
content: 你的代码本来就是先找到最大和最小，然后交换得到最后的结果的。  你的题目要求应该也是这样的。标题的结果是你自己认为正确的答案，还是题目给出来的正确答案，怀疑是前者

user: user-0
content: 引用 2 楼 寻开心的回复:哎， 说反了。  你把题目完整的贴出来。 道理就是上面说的， 这个交换是逐步进行的，还是最后一次进行的问题。 题目贴了啊，在程序图上面

user: user-0
content: 能帮我编一下位置不变的程序吗

user: user-0
content: 引用 1 楼 寻开心的回复:这是你的算法的问题  你的算法是找最大或者最小是渐进的过程，  不是一下就找到最大或者最小 55做为找到最大的66之前的最大值， 一度被安放到了最后一个，当遇到66的时候， 从最后一个移动到原来66所在的位置上， 变化就是这么产生的。  你要想中间的都不动，就要分步执行 首先是， 做一次次循环，找到最大和最小的位置，不做任何移动 然后，在循环结束后， 单独的做最小和0交换，最大和最后一个交换 我的程序不是让max和min分别指向最大值和最小值之后再交换位置吗，指针不是指向而已吗，为什么会使55的位置发生改变？

user: user-2
content: 谁说正确答案是题目里面的那个顺序啊? 题目描述那个顺序就不是仅仅交换最大最小所能产生的， 是找到了最大和最小后， 移动数组里面的其他元素的位置才会产生的。  到底什么是正确的， 贴原始题目上来吧

user: user-2
content: 哎， 说反了。  你把题目完整的贴出来。 道理就是上面说的， 这个交换是逐步进行的，还是最后一次进行的问题。

user: user-2
content: 这是你的算法的问题  你的算法是找最大或者最小是渐进的过程，  不是一下就找到最大或者最小 55做为找到最大的66之前的最大值， 一度被安放到了最后一个，当遇到66的时候， 从最后一个移动到原来66所在的位置上， 变化就是这么产生的。  你要想中间的都不动，就要分步执行 首先是， 做一次次循环，找到最大和最小的位置，不做任何移动 然后，在循环结束后， 单独的做最小和0交换，最大和最后一个交换
user-0 提问: python小问题

回复:
user: user-0
content: 藏的很隐蔽

user: user-1
content: https://bbs.csdn.net/forums/OL_Script,其它语言，python版块

user: user-0
content: 我找到了，在其他开发语言里

user: user-1
content: 我不怎么用python,CSDN没有这个版块吗

user: user-0
content: 谢谢了，问题解决 呜呜呜，本菜鸡没找到python板块，大佬能告诉我在哪里吗

user: user-1
content: replace 不会改变原 string 的内容。print(line.replace('Python','C') 话说这里并不是Python版块
user-0 提问: 给一个long double变量赋值，输出不正确，为什么？

回复:
user: user-0
content: 谢谢

user: user-1
content: 发现了一个解决办法， 这个long doulbe 是C99上面才引入，老的C编译器不支持很正常 问题的毛病是出在printf函数上， 在c的编译器当中，都解决不了 用c++编译是可以搞定的，所以可以这样干  #include <cstdio>     // 不是stdio.h，而是cstudio，  c++里面用c的函数的头文件包含方法 #include <cstdlib>    // c++里面替代stdlib.h的方法  其他的不动就可以了。 printf这个时候用 %Lf , %Le, 就可以正常输出了  Dev C++亲测可用哈

user: user-2
content: 如果你用的是 Windows，那么原因是微软的 C 运行时库对于 long double 的输出处理有 BUG。

user: user-1
content: 编译器的事儿， 有的不支持long double （128位的）情况 改cout去试试吧
user-0 提问: 输出1000内的完数，但是执行没结果，各位大神指点哈

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2

user: user-3
content: 注意一下格式问题，还有就是z每次在x判断的时候都得赋初值0.
user-0 提问: 请问如何解决requires ANSI-style prototype的问题，谢谢！！！

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: void RDNB();  声明成这个样子 RDNB(b,8,0x50);  嗲用是这个样子 这个不匹配
user-0 提问: 请问如何解决requires ANSI-style prototype的问题，谢谢！！！

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: void RDNB();  声明成这个样子 RDNB(b,8,0x50);  调用是这个样子 这个不匹配
user-0 提问: 请问minigui不编译如何直接移植源码运行

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 任意输入一组整数，实现从小到大排列功能

回复:
user: user-1
content: scanf 的返回值      1 如果成功的按照format指定的格式有正确的输入， 那么返回值就是正确获得的数值的数量         输入2 4 7 9 5 返回值不是5， 而是返回了5次1，   因为scanf的format部分指定的是%d，只有一个数字要输入      2 如果要求输入整数， 你输入了一个字母，  那么返回的是 0      3 如果是输入过程当中， 用Ctrl+z或者是Ctrl+D， 或者是其他的什么错误， 返回的是EOF， 实际上-1  对于这种不知道多长数字的输入讨厌的地方就是这个， 到底什么时候才是输入的结束呢 从键盘输入， 你不敲回车，它就一直停留在等待输入的状态， 输入错了的数据，它也不会从键盘缓冲区当中自动清理掉错误的数据还留在那里等待你去处理掉。 除非用ctrl+z或者ctrl+d（不同的操作系统，可能还都不同）。 所以遇到这种不知道多长的数据是很讨厌的事情  一些算法比赛当中有这种测试题目，实际上都是从文件当中传递参数给过去， 用EOF是可以结束输入的 只是自己写代码的时候，遇到这种要求， 总是感觉不爽  不是错误， 只是不舒服

user: user-0
content: 引用 3 楼 寻开心的回复:全局变量不用memset初始化，默认的就是0 局部数组初始化， int a[inf] = {0}; 这样就都初始化为0了。  你这个输入也有意思， 怎么才能确定输入完呢？ 什么时候scanf结果不是1？  交换数据为啥都要写成 temp = a; a=b; b=temp; 这种形式？  因为这种方式是真正的无损模式，适用任何支持 = 这种操作的类型。  别的方法要么首先于类型，要么有可能会产生溢出之类的操作结果。 你好 大佬 scanf的返回值不是成功输入几个数就是几吗 如果我输入了 2 4 7 9 5 那scanf的值就是5？然后我改成while(scanf("%d",&n)!=EOF)以后好像使用起来都一样 可以帮忙解释一下 因为我的理解是scanf的返回值不等于-1时执行while 请问是这样吗

user: user-1
content: 全局变量不用memset初始化，默认的就是0 局部数组初始化， int a[inf] = {0}; 这样就都初始化为0了。  你这个输入也有意思， 怎么才能确定输入完呢？ 什么时候scanf结果不是1？  交换数据为啥都要写成 temp = a; a=b; b=temp; 这种形式？  因为这种方式是真正的无损模式，适用任何支持 = 这种操作的类型。  别的方法要么首先于类型，要么有可能会产生溢出之类的操作结果。

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:你这是哪门排序方式啊，简单的冒泡需要双重循环，你这个我感觉还是接近冒泡，多半写错了吧  另外整数交换可以使用^，比如a=a^b;b=a^b;a=a^b，效率高点 好的 十分感谢 我再去尝试一下

user: user-2
content: 你这是哪门排序方式啊，简单的冒泡需要双重循环，你这个我感觉还是接近冒泡，多半写错了吧  另外整数交换可以使用^，比如a=a^b;b=a^b;a=a^b，效率高点
user-0 提问: 清空剩余输入行？？？

回复:
user: user-0
content: 引用 5 楼 寻开心的回复:还有， 楼主 去把别人都回答了，解决了你的问题的帖子，都给结个账去。  老这样，光提问题，不给分儿， 下次就不给你回答了 才用这个，不太会给分，我以为只要回答问题就会自动得分，这是在哪评分的？？

user: user-0
content: 怎么给分啊，我不会啊

user: user-1
content: 还有， 楼主 去把别人都回答了，解决了你的问题的帖子，都给结个账去。  老这样，光提问题，不给分儿， 下次就不给你回答了

user: user-1
content: 楼主是接着上次的问题提问的吧。  那就不是过滤一个回车符的问题 它这个代码配套使用的情况是这样的 要求输入一个数， 结果输入字符后面还可能有多个内容，并且有回车 需要把这一行都清理掉，那么用gets可以一次解决 不用这个函数，就是楼主那个代码了 不断的从键盘缓冲区提取字符， 直到提取到第一个回车符号为止， 让这一行所有的剩余输入都作废 这个不是，简单的处理掉一个回车符号

user: user-0
content: 引用 2 楼 與蘤舊縐的回复:最后不需要contine了，看得出来吧 好像明白了一点点，谢谢

user: user-2
content: 最后不需要contine了，看得出来吧

user: user-2
content: 你是想说清楚缓冲区里的字符吗  getchar一下，就冲缓冲区中读取一个字符，标志位向后移动一位，也就是这个字符不会再被读取了，除非把标志位移回去，否则一直前进就不会再读取，这样的效果就类似于清除，\n就是最后判断那一下，也没了
user-0 提问: 求助大神

回复:
user: user-1
content: if(7<=m<=9) 这种写法的运行结果永远是真 7<=m 比较的结果只有0和1两种情况， 他们都小于9，  所以 这里永远成立

user: user-1
content: if(7<=m<=9) 这里不能这么写 if(7<=m && m<=9) 才是正确的写法

user: user-0
content: 输入一月份，五间房，结果应该是350，但输出的是425

user: user-1
content: void main()  没这个定义。  int main 要求输入房间价格， 100是写死了的吧 然后，还有什么问题呢？   scanf的格式要求输入的时候，必须是月份，房间数的形式，输入错了就不能正确的读入m和n 不直到你的问题是什么
user-0 提问: 求助大佬，C语言文件操作问题

回复:
user: user-0
content: 首次发帖，不知怎么做你才能得到区区的50分敬意

user: user-0
content: 感谢指点，完成了

user: user-1
content: 数据文件的格式应该是固定的， 不应该乱换  对你的这个种破事儿也有办法解决 char buffer[100]; fgets(fp, buffer);  // 读第一行 if ( buffer[0] == 'U') sscanf(buffer, "U%lf", &u); else sscanf("x%lf", &x); fgets(fp,buffer); // 读第二行 if ( buffer[0] == 'U') sscanf(buffer, "U%lf", &u); else sscanf("x%lf", &x);  fgets 从文件当中读取一行 sscanf从字符串，当中提取指定的数据

user: user-0
content: emmmmm这个在U是第一行的时候是对的，但是像现在这样，如果我把U和x在.txt中对调了，就是U与X的位置上下换，最后输出的U是0呀，怎样输出正确的值…有办法调整吗

user: user-0
content: 谢谢，我改改哈

user: user-1
content: 你那个原始的写法根本就不对， while里面一次一个读一个字符，读到最后退出while循环后，ch就是EOF标记0xff  while后面的处理都是白费的

user: user-1
content: FILE * fp = fopen("1.txt", "r"); if ( fp) { 	double u, x; 	fscanf(fp, "U%lf\n", &u);    // 注意尾巴要带回车符号的。 这个和scanf不同，没有它x就不正确了 	fscanf(fp, "x%lf", &x); 	printf("%lf %lf\n", u, x); 	fclose(fp); 	fp = NULL; }

user: user-0
content: 是直接接fscanf还是放在while里呀

user: user-0
content: 然后下面直接，接printf (“ %lf”,U)就行了嘛

user: user-0
content: 那这样出来的x和U直接就是对应的了嘛，

user: user-1
content: 两个都是double，就都是%lf 的格式读取就好啦 fp = fopen 之后 用两个fscanf语句读出就好了， 不用写的那么麻烦

user: user-1
content: fscanf（fp, "U %d", &u）; fscanf (fp, "x %f", &x);
user-0 提问: 有大神指导一下是什么错误吗？

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 函数声明要放在main函数之前

user: user-0
content: 引用 6 楼 牛不才的回复:你的输入是不是不匹配 1 2 3  比如上面三个字，中间要有空格隔开的。另外检查一下是不是还有调试程序没关掉。 可以了，谢谢牛哥

user: user-2
content: 你的输入是不是不匹配 1 2 3  比如上面三个字，中间要有空格隔开的。另外检查一下是不是还有调试程序没关掉。

user: user-0
content: 你好，为什么这样也不行：#include<stdio.h>   	int max2(int x, int y, int z); 	 	int max1(int x, int y); 	 int main() {  	int a=0; 	int b=0; 	int c=0; 	int j=0; 	scanf("%d %d %d",&a, &b, &c); 	    j=max2(a, b, c);     	printf("max is:%d",j); 	 	return 0; 	  }   	  int max2(int x,int y,int z) {   	return max1(max1(x,y),z); }  int max1(int x,int y){  return(x>y?x:y);  }

user: user-2
content: scanf("%d %d %d", &a, &b, &c); 其他问题都是规范问题，这一行是个传参错误

user: user-2
content: #define _CRT_SECURE_NO_WARNINGS  #include<stdio.h> int max2(int x, int y, int z); int max1(int x, int y);  int main() { 	int a = 0; 	int b = 0; 	int c = 0;  	int j = 0;; 	scanf("%d %d %d", &a, &b, &c); 	j = max2(a, b, c); 	printf("max is:%d", j); 	return 0;  }   int max2(int x, int y, int z) { 	 	return max1(max1(x, y), z); }  int max1(int x, int y) {  	return(x > y ? x : y); }

user: user-0
content: 引用 1 楼 牛不才的回复:函数声明要放在main函数之前 试过还是这样的错误
user-0 提问: 求大佬解答C语言问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 5 楼 與蘤舊縐的回复:按任意键继续，所以呢 如第三个图，按任意键继续，按完直接重复，并没有显示让我输入

user: user-2
content: 按任意键继续，所以呢

user: user-0
content: 引用 3 楼 與蘤舊縐的回复:输入所需修改信息的学生姓名 那里输入了“小明\n”，\n被下面的scanf接收了 循环条件是ch1不等于8的时候，那为什么第二次循环的时候还是跳过了ch1的输入

user: user-2
content: 输入所需修改信息的学生姓名 那里输入了“小明\n”，\n被下面的scanf接收了

user: user-0
content: 我在前面有定义一个字符串数组，然后小明储存在里面，然后遍历链表，调出小明的信息。

user: user-2
content: 你前面输入的小明那一句的\n被接收了

user: user-3
content: 如果还是跳过，就在前面加一个getchar(); getchar(); 	scanf("%c", &ch1);  或者 scanf("\n%c", &ch1);  总之要把前面那个回车 先吃掉

user: user-2
content: 你输入的内容会提交到缓冲区，程序去缓冲区接收内容，如果你一次性把所有的都输了，他也会慢慢接收，不然你可以试试在前面输入“小明（空格）1（回车）”看有什么效果

user: user-3
content: 你是不是想这么写呀？ scanf("%c", &ch1);

user: user-0
content: 引用 7 楼 與蘤舊縐的回复:都说了啊，按任意键继续，又被scanf接收了，你又没机会了 为什么他会跨语句接受呀

user: user-2
content: 都说了啊，按任意键继续，又被scanf接收了，你又没机会了
user-0 提问: 一个关于字符串的小问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: @æµ©ä»  你再试一次  #include<bits/stdc++.h> using namespace std; int main() { 	string a = "185";     cout<<(sizeof(a))<< '\n'; 	return 0; }

user: user-3
content: 不是一个字符串占这么多字节，是一个 string 对象占这么多字节，sizeof 根本算不出想要的字符串大小。

user: user-2
content: 我输出了4鸭

user: user-4
content: 编译器不同得到的结果 可能也不同，我这里得到的值是28 	string a = "185"; 	cout << (sizeof(a)) << '\n'; 	cout << sizeof string << endl; 	cout << a.size() << endl; 	cout << a.capacity() << endl; sizeof不是函数，string a = “185”；a的内存是动态分配再堆上面的 想要知道a的占用大小可以用a.size();  看它实际占用的大小用 a.capacity()
user-0 提问: c语言 用三维数组传递二维数组 做函数参数的问题

回复:
user: user-1
content: 简单的说，  定义 int mapbox[2][N][N] = { 0, 0, ...... } void func( int map[N][N]);  调用 func(mapbox[i]) ；    这里调用后，发现数据不对了？  不是传参数的问题，你可以i简单的写一个代码来验证这点  #define N 10 int mapbox[3][N][N] ; void fun(int map[N][N]); int main () {     for ( int i=0; I<3; i++)         for ( int j=0; j<N;j++ )             for (int k=0; k<N; k++)                 mapbox[i][j][k] = i*100 + j*10 + k;     fun(mapbox[1]); // [0], [1],[2]  随便哪一个都可以     return 0; }; void fun(int map[N][N]) {     for (int i=0; i<N; i++ ) {         for ( int j=0; j<N; j++)             cout << map[i][j] << " ";         cout << endl;     } };

user: user-0
content: 引用 2 楼 寻开心的回复:觉得数据错了，要考虑是不是数据组织的问题，还是其他的地方改了你的数据 太感谢了，非常非常感谢您。我会更加认真的检查程序的。

user: user-1
content: 觉得数据错了，要考虑是不是数据组织的问题，还是其他的地方改了你的数据
user-0 提问: 求大佬帮我解答一下自动变量的相关问题

回复:
user: user-1
content: 变量都有其生命周期的和有效作用域的 简单的说， 这种函数里面的变量， 都是在其声明所在的花括号范围内有效  比如 例子当中  int main（） {     int x;  // x在这个主函数里面处处有效     while（1） {          int y;  // y就在这个小范围内有效     } } 这个好理解吧。   while里面的 int y； 改成 int x； 就是你的代码当中的情况了 while 里面的int x； 和 上层的x是完全不同的两个变量， c/c++标准是允许这样定义和使用的  遇到这种情况，其实比较讨厌的， while里面你还没有办法用到上层的x， 除非在全局变量再定义一个x， 那样可以用::x来使用 例子：  int x = 3； // global  int main （） {     int x = 2;  // main     while (1 )  {           int x = 1;  //local;          cout << x << endl;  // 使用的是局部变量x           cout << ::x << endl; // 使用的全局变量x           break;    }    cout << x << endl;  // main    cout << ::x << endl; // global    return 0; }

user: user-2
content: #include <stdio.h>  int main() { 	int x = 30;               //原始的x  	printf("x in outer block: %d at %p\n", x, &x); 	{ 		int x = 77;           //新的x,隐藏了原始的x   这里的“隐藏”是什么意思？ 		// 这个时候存在两个x，一个是这个77，作用于就是最近的这个大括号 		//另一个就是外面原始的x，就近匹配原则，原始的x在这个大括号失效，只匹配77的这个x 		printf("x in inner block: %d at %p\n", x, &x); 	} 	printf("x in outer block: %d at %p\n", x, &x); 	while (x++ < 33)          //原始的x， 每循环一次x+1， 最后x=33，判断条件为false，再执行++ 操作，x为34 	{ 		int x = 100;          //新的x，隐藏了原始的x 		x++; 		printf("x in while loop: %d at %p\n", x, &x); 	} 	printf("x in outer block: %d at %p\n", x, &x);         //最后的x为什么等于34而不是33？  		return 0; }

user: user-0
content: 非常感谢！没想到我悬赏100分都只有两个人回答我，哎....
user-0 提问: c语言结构体为什么这样不行

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 这么写pArray相当于是一个二维码数组 pArray[3][1], 楼主确定是这样的吗？          pArray[i]->name  = (char *) malloc(sizeof(char)*64);         pArray[i][0].name = ( char *) malloc(sizeof(char)*64);         (*(pArray+i))->name = (char *) malloc(sizeof(char*)*64);         (*(*(pArray+i))).name = (char *) malloc(sizeof(char*)*64);  pArray 是 (Person *)类型 所以*(Array + i)  才是和 pArray[i ]一样，都是 Person * 的类型

user: user-3
content: ->运算符的优先级要高于* 所以你试一下这么写， （*（pArray+1））->name
user-0 提问: 用freopen()文件输入输出问题

回复:
user: user-0
content: 引用 2 楼 寻开心 的回复:while( 3 == scanf("%d%d%d", &a, &b, &c)  )  改成这样就好了，这样确信正确的读入到了3个数， 才去循环 谢谢谢谢，终于对了！

user: user-1
content: while( 3 == scanf("%d%d%d", &a, &b, &c)  )  改成这样就好了，这样确信正确的读入到了3个数， 才去循环

user: user-1
content: scanf函数返回成功读入的数据项数，读入数据时遇到了“文件结束”则返回EOF。 EOF是-1， 不是0   while( 3. == scanf("%d%d%d", &a, &b, &c)  ) 这样
user-0 提问: python基础

回复:
user: user-0
content: 好的好的，谢谢

user: user-1
content: 准确的说，单纯一个age无法使得程序判断这个属性属于对象还是类 以下也是错误的  class demo:     age=0     def func1(self):         age = 1      def func2(self):         age += 1         return   而以下是可以的，这时age是属于类的  class demo:     def func1(self):         demo.age = 1      def func2(self):         demo.age += 1         return

user: user-1
content: 你没有定义login_attempts，虽然你在上面的函数里用到了这个属性，但是下一个函数是无法识别该属性的 比如  class demo:     def func1(self):         age=1     def func2(self):         age+=1         return  d=demo() d.func1() d.func2()   而通过以下方式可以定义属性   class demo:     def func1(self):         self.age = 1#只需要规定age是self的属性即可      def func2(self):         self.age += 1         return
user-0 提问: Keil5 mdk版本无代码补全功能

回复:
user: user-1
content: 问题已经解决，参考：https://blog.csdn.net/qq_49671953/article/details/112985651?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3.pc_relevant_aa&utm_relevant_index=6

user: user-1
content: 我也是这个问题，楼主解决了吗

user: user-2
content: 楼主解决了吗？

user: user-3
content: 我也是这个问题

user: user-4
content: https://blog.csdn.net/weixin_41852866/article/details/79926381

user: user-4
content: https://img-blog.csdnimg.cn/20190527104216344.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzQ4MjEz,size_16,color_FFFFFF,t_70
user-0 提问: 关于指针的一个简单问题

回复:
user: user-1
content: 你确定sizeof(data)等于0？

user: user-2
content: data是个指针变量，sizeof(data)不可能是0，应该和sizeof(tmp)一样，是8，估计你打印的是strlen(data)吧？ tmp = tt; tmp等于tt数组的首地址，即tmp==&tt[0] 数组第一个元素的地址（数组下标是0），所以tmp+1等于&tt[1]（数组第二个元素的地址），所以+4就是数组第四个元素的地址 所以 tmp = tt; //tmp为数组第一个元素的地址 char* data = (char*)tmp + 4 + 4; //data为数组第9个元素的地址（数组下标是8），第9个数组元素为字符串结尾符'\0'

user: user-3
content: +4就是指针往后移动4位，一开始tmp指向第一个a，那么移了8位之后就指到d的后面，也就是\0，sizeof是从指针当前指向位置开始计算的，所以是0
user-0 提问: Dev-c++编译不出结果？

回复:
user: user-1
content: https://blog.csdn.net/qq_40803626/article/details/83653180

user: user-0
content: 引用 1 楼 與蘤舊縐 的回复:编译成功了，是无法执行 首先文件名以及文件路径内不要有中文，此外把你的程序发出来，多半有问题程序没有问题的，都是我之前编译好的以前运行都没有问题的。

user: user-0
content: 程序没有问题的，都是我之前编译好的以前运行都没有问题的。

user: user-2
content: 会不会是杀毒软件的原因？

user: user-1
content: 编译成功了，是无法执行 首先文件名以及文件路径内不要有中文，此外把你的程序发出来，多半有问题
user-0 提问: 帮忙看看哪里有问题

回复:
user: user-1
content: 你确定你输入的时候，是要从键盘敲入 (1,2) 3 (4,5)  这样来输入吗？！  你最好scanf之后，printf一遍abrcd这五个数的值，看看是否正确的输入进来了  算是否在圆上的方法没有错，如果错了十有八九是你输入的数据的格式不对，没有能正确的获得那五个数的值
user-0 提问: c语言

回复:
user: user-0
content: 我看明白为什么题目是用bool来做的了，明白了为什么只用if很难实现word++（至少对我来说），单词间的空格可以通过bool搭配来辨别有几个单词 很受大佬的体会整理逻辑几字影响，得静下心逐个代码慢慢看逐个理解 🙏

user: user-1
content: 为啥？ 逻辑错误呗。 你先体会体会蓝色的代码的逻辑。  或者，你把word++， words++ 需要的条件单独罗列出来，写成独立的if语句 if（ *** ） word ++； if（ **** ） words ++；  不是什么条件都可以用 if  。。。 else if 。。。 else 。。。 这样无限的串联下去的。 要看他们是否满足这样的关系， 毕竟在这个长链条上哪一个if条件得到了满足，后面就都断掉了。你要确保这个长串的逻辑关系是正确的。  前面给的答复已经说了，为什么word++得不到执行， 就是因为前面的if条件满足了，后面的 else 里的就永远得不到执行了  设计这个长长的链条的时候， 整理好逻辑先

user: user-1
content: 蓝色的， 进来就先判断isalpha， 成立word就++， 这是一个独立的if语句，和后面的if之间没有关联。  而你的白色的部分， isalpha成立早早就结束了if链，根本就不会走到最后word部分的那个测试点

user: user-1
content: 你的word++这一句永远也执行不到 因为当isapha（ch）成立的时候， 在words++那里就结束了整个if else 的处理， 然后就继续循环了  所以还是好好想想你的处理逻辑吧。

user: user-0
content: 引用 2 楼 寻开心 的回复：蓝色的， 进来就先判断isalpha， 成立word就++， 这是一个独立的if语句，和后面的if之间没有关联。  而你的白色的部分， isalpha成立早早就结束了if链，根本就不会走到最后word部分的那个测试点我把if 的问题解决了 但是实现单词的增加word++实现不了请问是什么问题啊

user: user-0
content: 引用 2 楼 寻开心 的回复：蓝色的， 进来就先判断isalpha， 成立word就++， 这是一个独立的if语句，和后面的if之间没有关联。  而你的白色的部分， isalpha成立早早就结束了if链，根本就不会走到最后word部分的那个测试点那我得把所有的else if改成if吗 if else里选择第一个符合的执行后面的else if跳过，如果都是if就会一一对比然后符合的话执行
user-0 提问: 求助matlab

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 谢谢您！
user-0 提问: 写c出现lnk2019怎么解决

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: average明明两参数你传一个

user: user-0
content: 求帮忙，好几次了，百度搜了好久都不知道怎么办，求详细解答，谢谢啦

user: user-0
content: 引用 2 楼 與蘤舊縐的回复:average明明两参数你传一个 懂了，谢谢大佬知道了，谢谢大佬帮忙

user: user-3
content: 二楼正解， 函数实现部分，要求两个参数指针和长度 声明和调用部分都是一个参数（指针）， 自然是不匹配的
user-0 提问: 问问问：我这个程序又是数组越界又是运行超时的，求帮忙看看到底哪里错了

回复:
user: user-1
content: 引用 9 楼 qybao 的回复:为啥一定要保存到数组呢？只要输出结果正确就好了，找到最大字符的下标，打印下标前的信息，再打印（max），再打印下标后的元素即可了一个下标不够

user: user-0
content: 我知道了，感谢感谢

user: user-2
content: 为啥一定要保存到数组呢？只要输出结果正确就好了，找到最大字符的下标，打印下标前的信息，再打印（max），再打印下标后的元素即可了

user: user-3
content: 输入字符串是100个x的时候，会如何？ 每个x后面要插入一个（max）总共多长，200放得下不

user: user-1
content: 这题目 不要真的做插入操作  记录最大值 输出每一个字符的时候 做比较 不是最大就直接输出  最大就 %c(max)这样输出就完事了

user: user-4
content: int main() {    char str[200],ch;    int i,j;        while(gets(str)!=NULL) // gets不安全， 不能限制长度 <=100    {      ch=str[0];      for(i=1;i<strlen(str);i++)         if(ch<str[i])    // 注意：是"最大的字母"，即'a' == 'A'          ch=str[i];       for(i=0;i<strlen(str);i++)      {     if(ch==str[i])    // 调用完后, i+=5     {       for(j=strlen(str)-1;j>i;j--)    // j= strlen(str), 不要减1， 因为你连结束0都要copy     str[j+5]=str[j];   strncpy(&str[i+1],"(max)",5);   }  }     puts(str);    } }

user: user-0
content: 害，我就是想知道为什么这个写法不越界就怪了，我有ac的代码，但是我这个数组开大后就超时，开小点就越界，为嘛呀，我想知道原因，我不要代码

user: user-1
content: 长度100 插入(max) 最长600 你数组才200 GG

user: user-5
content: 你这么个写法不越界就怪了……，方便的话给个网址，可以给你个ac代码

user: user-5
content: 数组越界就把数组往大开开呗，超时了就优化代码
user-0 提问: emmm

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 应该是字符编码造成的， 你可以试试把printf语句拆开 先printf（汉字） printf（“%s”， name）； 再printf其他的

user: user-0
content: 引用 3 楼 與蘤舊縐的回复:[quote=引用 2 楼 Alasebair 的回复:] [quote=引用 1 楼 與蘤舊縐的回复:]字符数组可以直接存，不过一个汉字需要占两个字符而已  #include <stdio.h>  int main(void) {     char name[40];     printf("Please input your name\n");     scanf("%s", name);     printf("your name is %s", name);     return 0; }  但是你看上图我想把这个输出到“楚晚宁”和“的”中间 [/quote]  看到了，是挺奇怪的，暂时没看出什么毛病来，%s在中间也是可以被识别的[/quote] 谢谢谢谢谢谢谢谢谢谢谢谢谢谢

user: user-3
content: 引用 2 楼 Alasebair 的回复:[quote=引用 1 楼 與蘤舊縐的回复:]字符数组可以直接存，不过一个汉字需要占两个字符而已  #include <stdio.h>  int main(void) {     char name[40];     printf("Please input your name\n");     scanf("%s", name);     printf("your name is %s", name);     return 0; }  但是你看上图我想把这个输出到“楚晚宁”和“的”中间 [/quote]  看到了，是挺奇怪的，暂时没看出什么毛病来，%s在中间也是可以被识别的

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:字符数组可以直接存，不过一个汉字需要占两个字符而已  #include <stdio.h>  int main(void) {     char name[40];     printf("Please input your name\n");     scanf("%s", name);     printf("your name is %s", name);     return 0; }  但是你看上图我想把这个输出到“楚晚宁”和“的”中间

user: user-3
content: 字符数组可以直接存，不过一个汉字需要占两个字符而已  #include <stdio.h>  int main(void) {     char name[40];     printf("Please input your name\n");     scanf("%s", name);     printf("your name is %s", name);     return 0; }
user-0 提问: 一道C编程题目求助，求思路

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 1 楼 qybao 的回复:思路就是行循环，判断行奇偶行，比如奇数列顺输，偶数列逆输即可 for example int n = 5, p = 0, q = 0, j, k; for (j=0; j<n; j++) {     p += (j+1);     for (k=0,q=(j%2==1 ? p : q+1); k<j; k++) {        printf(“%d*”, j%2==1 ? q-k: q++);     }     printf(“”%d\n”, q); }  贪图方便，想偶数行的时候不计算q（想直接利用上一次循环的结果），考虑疏忽了，结果奇数行的时候最后一个q-k遗漏了，修改一下 int n = 5, p = 0, q, j, k, f; for (j=0, f=1; j<n; j++, f*=-1) { //加个f控制递增递减     p += (j+1);     q=(j%2==1 ? p : p-j);//奇数行偶数行的起始     for (k=0; k<j; k++, q+=f) {        printf("%d*", q);     }     printf("%d\n", q); }

user: user-3
content: // 写个函数， 从iStart开始，输出len个数，按照nWay=1从小到大，nWay=-1从大到小  int printLine (int iStart, int len, int way) {  int j;  if ( way ==1) {  for ( j=iStart; j<iStart+len-1; j++ ) printf("%d*", j);  printf("%d\n", j);  } else {  for (  j=iStart+len-1; j>iStart; j-- ) printf("%d*", j);  printf("%d\n", j);  }  return iStart + len;  }   int main(){  int iStart = 1, nWay = -1;  int j, n;  scanf("%d", &n);  for ( j =1; j<=n; j++ )  iStart = printLine(iStart, j, nWay*=-1);  return 0;  };

user: user-2
content: 思路就是行循环，判断行奇偶行，比如奇数列顺输，偶数列逆输即可 for example int n = 5, p = 0, q = 0, j, k; for (j=0; j<n; j++) {     p += (j+1);     for (k=0,q=(j%2==1 ? p : q+1); k<j; k++) {        printf(“%d*”, j%2==1 ? q-k: q++);     }     printf(“”%d\n”, q); }
user-0 提问: 求大神帮忙修改

回复:
user: user-0
content: 不过我现在已经解决了，非常感谢

user: user-0
content: 不不不，输了0的！！！

user: user-1
content: 没有输出就说明还在while循环， 打破循环的条件是输入数值0 怀疑，输入数据的时候，没有最后用0结束

user: user-1
content: 代码没看出问题啊  不会是楼主输入数据的时候没有用 0 做结束吧

user: user-0
content: 引用 7 楼 user-2的回复:不可以，getchar是获得字符，你要获得的是整形，不一样 好的，非常感谢！！！

user: user-2
content: 不可以，getchar是获得字符，你要获得的是整形，不一样

user: user-0
content: 顺便问问大神，while测试条件这块可不可以写成(num=getchar())!=0

user: user-0
content: 引用 4 楼 user-2的回复:真没看出什么问题 难道你一开始就输入了非法数据？ 要不 while(scanf("%d",&num)==1&&num!=0) { 改成以下试试 while(1) {     scanf("%d",&num);     if (num==0) break; 好的，我先去试试。谢谢

user: user-2
content: 真没看出什么问题 难道你一开始就输入了非法数据？ 要不 while(scanf("%d",&num)==1&&num!=0) { 改成以下试试 while(1) {     scanf("%d",&num);     if (num==0) break;

user: user-0
content: 引用 2 楼 victorial666的回复:[quote=引用 1 楼 user-2的回复:]没看出问题啊，即使不进入while，至少也会打印找不到奇偶数的信息啊，你的运行不出结果值的是什么？ 难道是int main(void)的问题，把void去掉，改成int main() 把值输进去后没有结果[/quote] 我删了之后还是没结果

user: user-0
content: 引用 1 楼 user-2的回复:没看出问题啊，即使不进入while，至少也会打印找不到奇偶数的信息啊，你的运行不出结果值的是什么？ 难道是int main(void)的问题，把void去掉，改成int main() 把值输进去后没有结果

user: user-2
content: 没看出问题啊，即使不进入while，至少也会打印找不到奇偶数的信息啊，你的运行不出结果值的是什么？ 难道是int main(void)的问题，把void去掉，改成int main()
user-0 提问: 一个简单的问题

回复:
user: user-0
content: 明白了，谢谢大家

user: user-1
content: a是string对象，不支持与int类型的2做+运算，故报错。 +=属于赋值运算符，赋值运算右边如果与左边的数据类型不一致，将右边表达式的类型转换为左边的类型。 2为int，'0'为字符，可以做+运算，结果为50——int（字符'0'ASCII码值为48）。 所以 a += 2 + '0';语句为 a += 50; 50为字符'2'的ASCII码值 因此a将是"1232"  如此解译，可否？

user: user-2
content: string +=重载 支持int类型 +重载 不支持int类型

user: user-3
content: string a = "123"; a = a+2 + '0';//1 这个会先计算a+2，类型不一致，编译出错 a += 2 + '0';//2 这个会先计算右边得到'2'，再追加到字符串a的后面（类型复合字符串相加）

user: user-4
content: 第一行，即便你把 2+‘0’用括号括起来也不行， 他两个的运算结果会当作int来处理 第二行之所一行， 是默认做了int和char之间的转换了  第一行需要。a = a + char （2+‘0’）； 才可以

user: user-4
content: 因为第二行是先计算 2 + ‘0’ 结果还是一个字符， 和a合并成“1232”这样的字符串 第一行是先来a + 2 这个不行， string 和 整数之间无加法
user-0 提问: 蓝桥杯试题 算法提高 实数相加（c语言详细注释）

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: [quote=引用 楼主 My dream. 的回复:] 引用资源限制 时间限制：1.0s   内存限制：512.0MB 问题描述 　　计算两个实数相加的结果。 　　 }[/code] 前后补零，倒序相加就是

user: user-0
content: 引用 2 楼 user-3的回复:上面 strlen(a)-i 改为 strlen(a)-i-1 明白了，谢谢大佬我修改一下

user: user-0
content: 引用 2 楼 user-3的回复:上面 strlen(a)-i 改为 strlen(a)-i-1 具体那一行，我咋没找到呀？

user: user-3
content: 上面 strlen(a)-i 改为 strlen(a)-i-1

user: user-3
content: 找小数点和求整数位数和小数位数可以再简化一些 找到小数点就break循环，整数位数就是i，小数位数就是strlen(a)-i 判断有没有小数，就判断小数位数是否大于0即可，没必要用fa，fb
user-0 提问: 这个结果跟预期的怎么不一样啊

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 懂了，谢谢大佬你好厉害

user: user-2
content: 比如： p.a1[2] = ( 2020 - 0) % 100  = 20 并不是你期待的2 其他也是同类问题  可以按照你的思路再改，  （） % 100 / 10； 后面 %1000 / 100；  % 10000 / 1000 问题是写的多累啊  for (I=3; I>=0; I--) p.a1[I] = a%10, a/=10;

user: user-2
content: p.a1[3] = a % 10;     p.a1[2] = (a/10)%10;     p.a1[1] = (a/100)%10;     p.a1[0] = (a/1000)%10; 这样才是， 至于你的为什么不对， 想想吧  比如： p.a1[2] = ( 2020 - 0) % 10  = 20 并不是你期待的2 其他也是同类问题

user: user-0
content: 不应该是 2  0    2  0  1   1   1   1 吗
user-0 提问: 求问这个codeblocks输出字符的问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: c语言

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: https://www.zhihu.com/question/29460422/answer/177884613  https://www.cnblogs.com/WhyEngine/p/3885126.html  http://tieba.baidu.com/p/5443042391?traceid=

user: user-2
content: 有个函数能画出心形曲线， 按照这个曲线分布来放照片就好了 找找去
user-0 提问: 大佬帮帮忙

回复:
user: user-0
content: 引用 1 楼 寻开心 的回复:1  新建一个源文件，写个最简单的hello world类的程序， 确保代码无误的编译试试 2  软件有问题吗？ 退出软件重启，  任务管理器有没有多个同名软件都关闭 3  电脑重启 4  软件重装， （腾讯电脑管家-软件管理-dev c++） 5  换同类软件调试 6  系统重装 7  砸了电脑买个更高级的 8  删库跑路以后上工地会日子去  就这么几个过程， 自己看着办能撑到第几关 听君一席话，胜读十年书，直接选一波8，待我历尽千帆，归来仍少年！！！

user: user-1
content: 楼上所有办法了，哈哈

user: user-2
content: 1  新建一个源文件，写个最简单的hello world类的程序， 确保代码无误的编译试试 2  软件有问题吗？ 退出软件重启，  任务管理器有没有多个同名软件都关闭 3  电脑重启 4  软件重装， （腾讯电脑管家-软件管理-dev c++） 5  换同类软件调试 6  系统重装 7  砸了电脑买个更高级的 8  删库跑路以后上工地会日子去  就这么几个过程， 自己看着办能撑到第几关
user-0 提问: 小萌新求教各位大佬，c语言函数调用怎么有效返回到主函数使用？比如我下面这道题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 不要假设自己的输入数据就一定正确  初学的时候，要习惯于每次输入数据后， 再printf输出一遍，确认没有问题， 然后再写后面的代码，  这也是分段调试的步骤， 每完成一段计算工作，输出一下结果验证无误再进行后续的调试，前面的结果不正确，后面都是白忙活。

user: user-0
content: 引用 2 楼 寻开心的回复:三个数是float类型， scanf怎么能是%d呢，  是%f格式，   格式不对，所以读入的三个数都变成了0 谢谢指教，这下茅塞顿开了

user: user-2
content: 三个数是float类型， scanf怎么能是%d呢，  是%f格式，   格式不对，所以读入的三个数都变成了0

user: user-3
content: 定义全局变量或则return返回值，主函数设一个值接收就可以
user-0 提问: update Docker for windows 鱼都被烤红了

回复:
user: user-0
content: 最后挣扎一下

user: user-0
content: 最后顶一波，没人就结了

user: user-0
content: 引用 8 楼 super_admi 的回复:现在不是说docker都逐步要被淘汰了吗？容器技术这几年也发展很快啊，前两年k8s还火热，今年又会是谁？  [quote=引用 7 楼 與蘤舊縐 的回复:] [quote=引用 6 楼 super_admi 的回复:] 一盆冷水浇上去，鱼就不红了。  哎，windows装docker真是作大死了[/quote][/quote]  配环境没办法了，，淘不淘汰无所谓，满足这会儿需求就行

user: user-1
content: 现在不是说docker都逐步要被淘汰了吗？容器技术这几年也发展很快啊，前两年k8s还火热，今年又会是谁？  引用 7 楼 與蘤舊縐 的回复:[quote=引用 6 楼 super_admi 的回复:] 一盆冷水浇上去，鱼就不红了。  哎，windows装docker真是作大死了[/quote]

user: user-0
content: 引用 6 楼 super_admi 的回复:一盆冷水浇上去，鱼就不红了。  哎，windows装docker真是作大死了

user: user-1
content: 一盆冷水浇上去，鱼就不红了。

user: user-0
content: 人工置顶

user: user-0
content: 现在显示的是installaction canceled，自己还把自己取消了，某不是我理解错洋文了

user: user-0
content: 引用 2 楼 user-2 的回复:有烤鱼吃多好啊 你把docker卸载再重装试试  不存在的，根本不知道问题从何而来，现在装了2.0版本，勉强可用，但还是无法升级，主要是一直零进度卡那了，倒也没报错，怕不是在外网下载新版本被墙了

user: user-2
content: 有烤鱼吃多好啊 你把docker卸载再重装试试

user: user-0
content: 现在连启动都不成了
user-0 提问: 请教

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 2 楼 weixin_46252966 的回复:[quote=引用 1 楼 user-2的回复:]中断实现的，定义了timer0()为中断1 程序在中间进入while（1）后不就应该进入了死循环吗，怎么可以再次进入最后的断点程序运行数码管的代码[/quote] 中断并不是你程序实现的，是硬件实现的，你去了解一下中断是怎么回事就明白了。

user: user-0
content: 引用 1 楼 user-2的回复:中断实现的，定义了timer0()为中断1 程序在中间进入while（1）后不就应该进入了死循环吗，怎么可以再次进入最后的断点程序运行数码管的代码

user: user-2
content: 中断实现的，定义了timer0()为中断1
user-0 提问: 急问：我这个C语言程序第十行后面不加getchar（）；为什么就错了

回复:
user: user-0
content: 这个是数据例子，那为什么在输入第二组数据的第一个数据回车后就直接又回车了一次才能再输入第二个数，最后结果怎么连A也被删除了呀，缓冲区我懂了，就是为什么在这个奇怪的位置回车了一次

user: user-1
content: scanf默认以空格和回车作为分隔符，这里在读取你输入的一个字符之后，\n并没有从缓冲区中被去除，而你在while中使用的gets是可以接收这个回车的
user-0 提问: 请大神解惑scanf与gets的相关问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 2 楼 寻开心的回复:scanf是有过滤回车的功能的，比如，还是上面的代码， 第一个scanf要求输入N的时候，你不输入数字，随便先敲多少次回车都可以，然后再输入一个数，再次回车， 这是scanf才会读出数到N里面去。 这才跑到循环里面去。 谢谢您。是因为录入N的时候，已经有一个回车在缓冲区内，所以导致fets少录一个数据，是这个意思吗？

user: user-0
content: 引用 4 楼 寻开心的回复:是的  for里面gets后面，加一个puts，你就能知道答案， 写代码，测试一下 好的好的，谢谢您，以后一定注意

user: user-2
content: 是的  for里面gets后面，加一个puts，你就能知道答案， 写代码，测试一下

user: user-2
content: scanf是有过滤回车的功能的，比如，还是上面的代码， 第一个scanf要求输入N的时候，你不输入数字，随便先敲多少次回车都可以，然后再输入一个数，再次回车， 这是scanf才会读出数到N里面去。 这才跑到循环里面去。

user: user-2
content: 因为scanf 是用户输入回车之后才开始从键盘缓冲区里面提取内容的，但是回车键依然在缓冲区里面 这个时候，第一个循环的gets获得是回车 如果循环里面用的是scanf，会把键盘缓冲区的回车键过滤掉继续向下处理的
user-0 提问: 关于宏定义的一个问题

回复:
user: user-0
content: 明白了明白了

user: user-1
content: 上面误字，就会有->就没有

user: user-1
content: 引用 2 楼 æµ©ä» 的回复:? 那写这句话是干什么的 就是BYTE_ORDER == LITTLE_ENDIAN 的时候，所有代码里有memrev16ifbe(p)的地方都会用空格覆盖掉 比如有 某行代码有函数调用 memrev16ifbe(p); 在BYTE_ORDER == LITTLE_ENDIAN 的时候该行代码就变成空白，也就是相当于源代码没有这一行，所以BYTE_ORDER == LITTLE_ENDIAN的时候就会有 memrev16ifbe(p) 处理

user: user-2
content: 引用 2 楼 æµ©ä» 的回复:? 那写这句话是干什么的#if (BYTE_ORDER == LITTLE_ENDIAN) #define memrev16ifbe(p) #define memrev32ifbe(p) #define memrev64ifbe(p) #define intrev16ifbe(v) (v) #define intrev32ifbe(v) (v) #define intrev64ifbe(v) (v) #else #define memrev16ifbe(p) memrev16(p) #define memrev32ifbe(p) memrev32(p) #define memrev64ifbe(p) memrev64(p) #define intrev16ifbe(v) intrev16(v) #define intrev32ifbe(v) intrev32(v) #define intrev64ifbe(v) intrev64(v) #endif  BYTE_ORDER == LITTLE_ENDIAN 的时候没用 不等于的时候是 intrev64(v)

user: user-0
content: ? 那写这句话是干什么的

user: user-2
content: 意思就是空白  #define memrev16ifbe(p) 就是空白的 代码里面调用这个宏的那行代码 空行
user-0 提问: 如何使用C语言在汉语句子中匹配两个字？

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 6 楼 apkipa1的回复:strstr，请。 哦吼，发现新大陆，谢谢

user: user-2
content: 只是单纯的查找是否含有子串，直接用strstr就好了

user: user-3
content: strstr，请。

user: user-4
content: strcmp，每个字用一个字符数组存储，然后依次取出要查询的数组的两个字节，比较

user: user-0
content: 引用 3 楼 與蘤舊縐的回复:单纯strncmp是不够的，这还需要把字符串每四个字节切开遍历比较，还是先比较前两个字节，也就是第一个字效率高些 那是怎么一次比较2个字节呢？我比较迷糊。。。

user: user-4
content: 单纯strncmp是不够的，这还需要把字符串每四个字节切开遍历比较，还是先比较前两个字节，也就是第一个字效率高些

user: user-5
content: strncmp这个函数能用

user: user-5
content: char数组里面，汉字占两个字节，你两两一组比较。鉴于里面可能混杂英文字母，可以一个一个跳。手机端不好打代码，就不给示例了
user-0 提问: 为什么我这个程序输入4，5。结果是4，输入-34，12，结果是0？

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 太感谢你了，我还一个字一个字的对

user: user-2
content: 你这输入是不是用的中文逗号，中英文有区别
user-0 提问: 这个错误咋回事啊

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 这样啊，虽然指针移来移去不知道是什么鬼但应该知道怎么做了，谢谢大佬

user: user-2
content: 引用 3 楼 m0_46252768 的回复:这样啊  那我想利用一个调用函数把一些整数的各个位置的数提取出来再传递到main函数里应该怎么做呢 那你最终结果应该保存到一个数组里，而不是保存在一个数里面

user: user-2
content: 你这个m+1,+2之类的，不知道指针会移到哪里去了（猜测是移到m自己的地址了，所以*(m+x)得到内存信息是r的地址，所以给一个地址复制造成错误了） 如果想指针在一块内存区域移动来控制变量，那就采用结构体吧，至少结构体能保证成员变量的地址连续，否则真没法控制指针会指向哪个区域了（理论上局部连变量也是连续的，但是谁先谁后真不好说）

user: user-0
content: 这样啊  那我想利用一个调用函数把一些整数的各个位置的数提取出来再传递到main函数里应该怎么做呢

user: user-3
content: m=&d; d是test函数的局部变量，这个变量分配在test调用时候的栈内存当中 m+1, m+2,.....就是在栈里面移动， 栈里面的内容可能是局部变量也可能是其他的参数 这种代码不是非常精通栈内存分配的不要玩儿 而且这种代码不具备可移植性，不同的编译器上完全可能不同的效果，局限性很大

user: user-3
content: *（m+1）  *（m+2） 这些指针指向哪儿去了啊，  乱操作， 把函数的堆栈破坏了
user-0 提问: c语言小白提问：字符串的输出

回复:
user: user-1
content: 每次新建源文件方式玩儿吧。  用工程项目还要配置，弄不好就各种毛病， 熟练了之后再琢磨花样

user: user-0
content: 太可了，复制一遍内容成功了？？？但是原先那个cpp运行后还是黑屏。内容一样啊为嘛？？？

user: user-1
content: 关闭所有的工程。 新建源文件， 把这些代码放进去。 编译运行，然后呢， dev 什么反馈？ 代码没有问题，如果不出结果，应该是dev出问题了。  也许dev也染病毒了， 这几天都开始出毛病

user: user-0
content: devc++5.11运行不出结果@楼上

user: user-1
content: ? 没有错误啊！ 找什么错误
user-0 提问: 杨辉三角

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 你看书都是倒着看吗？！     想要源码baidu一下，非常多；  想要学习，就自己写啊，  基础练习必须自己做

user: user-3
content: 代码如下：   #include<iostream> using namespace std; int a[101][101]; int main() { 	int i,j,n; 	cin>>n; 	for(i=0;i<n;i++) 	{ 		a[i][0]=1; 		a[i][i]=1; 	} 	for(i=2;i<n;i++) 	{ 		for(j=1;j<n;j++) 		{ 			a[i][j]=a[i-1][j-1]+a[i-1][j]; 		} 	} 	for(i=0;i<n;i++) 	{ 		for(j=0;j<=i;j++) 		{ 			cout<<a[i][j]<<" "; 		} 		cout<<endl; 	}  	return 0; }
user-0 提问: 刚重装了64位win7系统，刚装c。调试一直都是出现这个。请问一下，该怎么做。谢谢大家。

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: ？？？在线急等。谢谢各位。

user: user-0
content: 引用 9 楼 寻开心的回复:dev c++ （腾讯电脑管家 -- 软件管理 - dev c++。50MB左右） visual studio 最新版  （ https://blog.csdn.net/qq_43058685/article/details/96837923  ） 谢谢，一下就好了。我磨了一上午没装好VC6.0

user: user-2
content: dev c++ （腾讯电脑管家 -- 软件管理 - dev c++。50MB左右） visual studio 最新版  （ https://blog.csdn.net/qq_43058685/article/details/96837923  ）

user: user-0
content: 引用 7 楼 寻开心的回复:VC 6.0 ?  太老了，兼容性不好， 换编译器吧。 帅哥换哪一个合适点？！

user: user-2
content: VC 6.0 ?  太老了，兼容性不好， 换编译器吧。

user: user-3
content: 这样的话你也可以修改读写权限，不是非常重要的文件还是比较容易修改的，至于怎么改就需要查一下了，win7不太熟悉

user: user-0
content: 好的。安装的时候他提示过有几个只读文件，无法写入，我点了重试，就通过了。估计就是这里。

user: user-3
content: sorry，说错了，洋文~~他说的是没有在这个文件里找到相应的信息  还是上网一查比较容易，不过这样也不排除是编译器的问题，可能编译器在安装时需要向这几个文件里写入什么  如果网上找不到的话可以先试试换个编译器，看看有没有效果

user: user-0
content: 系统里有这两个文件的。

user: user-3
content: 首先，int main return 0，不过和你的问题关系不大  问题是缺少一些dll文件，看路径是系统里少了点东西，重装编译器是没用的，你可以在网上搜一下这几个文件，应该容易找到弥补办法，大概再装个什么东西就可以搞定了
user-0 提问: 来自C语言基础萌新的问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 2 楼 寻开心的回复:if (x=0) 这个不是判断是赋值，  要if （ x == 0 ） 懂了，十分感谢。已经明白了

user: user-2
content: if (x=0) 这个不是判断是赋值，  要if （ x == 0 ）

user: user-3
content: 最好加上括号，不然自己也会懵逼
user-0 提问: 求告知

回复:
user: user-1
content: 把你写的程序贴出来看看就知道了，肯定是你的程序有错

user: user-2
content: 多半是你写错了，这个就是用到循环里的

user: user-0
content: 哦哦，不好意思，没看到，谢谢

user: user-3
content: printf("enter the first score");     while(scanf("%f",&score)==1);     {         if(score<MIN||score>  while那行，最后放个分号， 是怎么个意思  删了那个分号

user: user-0
content: 这是我打的程序，还是不行

user: user-0
content: #include<stdio.h> int main(void) {     const float MIN=0.0;     const float MAX=100.0;     float score;     float total=0.0;     int n=0;     float min=MAX;     float max=MIN;     printf("enter the first score");     while(scanf("%f",&score)==1);     {         if(score<MIN||score>MAX)         {             printf("%0.1f is an invalid value.try again:",score);             continue;         }         printf("accepting %0.1f:\n",score);         min=(score<min)?score:min;         max=(score>max)?score:max;         total=total+score;         n++;         printf("enter next score:");      }     if(n>0)     {         printf("average of %d score is %0.1f.\n",n,total,total/n);         printf("low=%0.1f,high=%0.1f\n",min,max);     }     else         printf("no valid scores were entered.\n");     return 0; }
user-0 提问: 帮我看看我的按照学号排序程序有什么问题？怎么没有输出？

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: %s都要换成%c %s是输入字符串， %c才是输入一个字符 put_name函数scanf("%c", &a[i]); 否则，10次输入名字都是用后一个覆盖前一个，最后保留的只是最后输入的字符串而已  按照道理，应该是 char   name[10][20] 这样的定义才能支持长的名字  没有输出是因为paixu函数printf那里%s格式，但是参数a[i]是char，类型不匹配造成指针不对
user-0 提问: 一道程序题的疑问求助

回复:
user: user-1
content: 奇数行以num开始，逐个++，偶数行以num+i开始，逐个--。依次输出

user: user-0
content: 引用 2 楼 Brown_IT小白 的回复:#include <stdio.h>  int main() {     int count;     int i, j;     int num = 0;     int temp;      printf("Please input the array size:");     scanf("%d", &count);      for (i = 1; i <= count; i++)     {         temp = ((i % 2) ? num : num + i);         for (j = 1; j <= i; j++)         {             (i % 2) ? printf("%d", ++temp) : printf("%d", temp--);             (j < i) ? printf("*") : printf("\n\n");         }         num += i;     }      return 0; }  能说一下思路吗

user: user-2
content: #include <stdio.h> #include <stdlib.h> //  从iStart开始，输出len个数，按照nWay=1从小到大，nWay=-1从大到小输出一行 int printLine (int iStart, int len, int way) {     int j;     if ( way ==1) {         for ( j=iStart; j<iStart+len-1; j++ ) printf("%d*", j);         printf("%d\n", j);     } else {         for (  j=iStart+len-1; j>iStart; j-- ) printf("%d*", j);         printf("%d\n", j);     }     return iStart + len; }  int main(){     int iStart = 1, nWay = -1;     int j, n;     scanf("%d", &n);     for ( j =1; j<=n; j++ )         iStart = printLine(iStart, j, nWay*=-1);     return 0; }

user: user-1
content: #include <stdio.h>  int main() {     int count;     int i, j;     int num = 0;     int temp;      printf("Please input the array size:");     scanf("%d", &count);      for (i = 1; i <= count; i++)     {         temp = ((i % 2) ? num : num + i);         for (j = 1; j <= i; j++)         {             (i % 2) ? printf("%d", ++temp) : printf("%d", temp--);             (j < i) ? printf("*") : printf("\n\n");         }         num += i;     }      return 0; }

user: user-3
content: 两层循环直接控制输出就行呀
user-0 提问: 有序数组中插入一个数  不改变排列

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 好的  做出来了  谢谢了

user: user-0
content: 引用 1 楼 寻开心的回复:a是字符数组 读入的是整数， 往字符数组里面插入一个整数？？ 先统一了数据格式再说  而且，a数组你也没有初始化，里面都有什么？怎么就是已经排序了的数组呢， 这步还没有呢！  int a[] = {1,3,5,6,8,10}; 读入int类型的m 然后才是你的这个算法，而且你这里有没有考虑a数组当中有很m一样大的数的情况 要求的是自己输入的有序数组  需要区分从大到小排序与从小到大排序

user: user-2
content: 那你就自己scanf输入呗， 没有这个已经存在的有序序列， 什么也做不了啊

user: user-2
content: a是字符数组 读入的是整数， 往字符数组里面插入一个整数？？ 先统一了数据格式再说  而且，a数组你也没有初始化，里面都有什么？怎么就是已经排序了的数组呢， 这步还没有呢！  int a[] = {1,3,5,6,8,10}; 读入int类型的m 然后才是你的这个算法，而且你这里有没有考虑a数组当中有很m一样大的数的情况
user-0 提问: 一道选择题求助

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 编程被搞成了律师，尽搞抠字眼的问题了

user: user-3
content: 很明显是d，保护的成员不行，私有可以通过友元外部访问
user-0 提问: （C语言）请问我的这个程序是怎么错了

回复:
user: user-1
content: delta = b * b -4 * a * c; 这句放在输入之前，用的是变量的随机值计算的，结果无法确定，应该放到 scanf("%d"), &c; 这条语句之后  scanf("%d"), &a; scanf("%d"), &b; scanf("%d"), &c;  这几句输入语句写错了,应该是 scanf("%d", &a); scanf("%d", &b); scanf("%d", &c);   else if (0 == delta)  浮点数不能直接用“==”号比较，判断其是否与某个数相等，应该用两个数相减所得的值取绝对值是否在误差范围内，你可以这样写 else if(fabs(0 - delta) < 0.00001)，这里的0.00001就是你的误差允许范围

user: user-2
content: 你这输入输出可以精简一波

user: user-3
content: 引用 3 楼 qybao 的回复:强行转换一下  0==（int）delta 这样强行转换也不精确，最好是有个精度判断，比如delta<=0.00000001之类的

user: user-3
content: 强行转换一下  0==（int）delta

user: user-0
content: 引用 1 楼 真相重于对错 的回复:浮点数不能与0直接比较请问怎么改？

user: user-4
content: 浮点数不能与0直接比较
user-0 提问: (合并顺序表)为什么在oj上输出的结果和本地不同？

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 注意内存泄漏，把不该有值的地方都弄成null，链表做oj题目的通病
user-0 提问: 指针，请大佬指点

回复:
user: user-0
content: 好的好的，十分感谢

user: user-1
content: 要看单词是怎么定义的啦，那些字符可以包含进入单词， 此外的是否都算作是分隔符 int num(char *str) {     int flag = 0; int count=0;     for ( int j=0; j<strlen(str);  j++ ) {         if ( str[j]<'A' || str[j]>'z' || (str[j]>'Z' && str[j]<'a') ) // 不是组成单词的字母都视为分隔符             flag = 0;         else {             if ( 0==flag ) {  flag=1; count++; }             //  遇到第一个能组成单词的字符的时候单词计数加一         }     }     printf("%d\n", count);     return count; }

user: user-0
content: 这种情况还真没有考虑，应该怎么改呢

user: user-2
content: 不光是逻辑运算的优先级，逻辑也不对，比如 输入 a1b 按你的逻辑会得到2个单词（如果这是期待结果那无话可说，如果这个不算单词，那逻辑就是错的） a进入for满足while，i++字符变为1满足if，count就累加一次，然后i++字符b进入for，满足while，然后i++字符变为结尾满足if，count累加变为2，之后还没退出循环（i没到达80），所有后面如果有垃圾信息也会导致统计结果不对

user: user-0
content: 问题好像解决了，应该是main函数的a[80]没有初始化，好神奇

user: user-0
content: 引用 5 楼 寻开心 的回复:逻辑是有问题 while和if如果是判断是否是字母的话，要考虑考虑优先级的问题， 需要补充上括号，要不&& 和 ｜｜同级，都从左到右执行 而且也无法区分是否字母开头，以及是否字母结束的情况 #include<stdio.h> #include<string.h> void num(char *pc) { 	int i=0,count=0; 	for(i=0;i<80;i++) 	{ 		while((*(pc+i)>=97&&*(pc+i)<=122)||(*(pc+i)>=65&&*(pc+i)<=90)) 		{ 			i++; 			if(*(pc+i)<65||(*(pc+i)>90&&*(pc+i)<97)||*(pc+i)>122) 			{ 				count++; 			} 		} 	} 	printf("单词个数 = %d",count);  } int main() { 	char a[80]; 	puts("输入单词:"); 	gets(a); 	num(a); }   是改成这样吗

user: user-0
content: 引用 6 楼 user-2 的回复:那不应该啊，把它改成指针试试 #include<stdio.h> int main() { char a[80]=" a b "; int i,count=0; char *p = a; for(i=0;i<80;i++) { while(*(p+i)>=65&&*(p+i)<=90||*(p+i)>=97&&*(p+i)<=122) { i++; if(*(p+i)<65||*(p+i)>90&&*(p+i)<97||*(p+i)>122) count++; } } printf("%d",count); }  如果换成这样也正确，那就证明的我的推想可能是对的 因为你的a没有初始化，可能有内存有垃圾信息，所以应该加个判断是字符串结尾符就退出循环。 这个是对的，那为什么我的第一个程序不对呢

user: user-2
content: 那不应该啊，把它改成指针试试 #include<stdio.h> int main() { char a[80]=" a b "; int i,count=0; char *p = a; for(i=0;i<80;i++) { while(*(p+i)>=65&&*(p+i)<=90||*(p+i)>=97&&*(p+i)<=122) { i++; if(*(p+i)<65||*(p+i)>90&&*(p+i)<97||*(p+i)>122) count++; } } printf("%d",count); }  如果换成这样也正确，那就证明的我的推想可能是对的 因为你的a没有初始化，可能有内存有垃圾信息，所以应该加个判断是字符串结尾符就退出循环。

user: user-1
content: 逻辑是有问题 while和if如果是判断是否是字母的话，要考虑考虑优先级的问题， 需要补充上括号，要不&& 和 ｜｜同级，都从左到右执行 而且也无法区分是否字母开头，以及是否字母结束的情况

user: user-0
content: #include<stdio.h> int main() { 	char a[80]=" a b "; 	int i,count=0; 	for(i=0;i<80;i++) 	{ 		while(a[i]>=65&&a[i]<=90||a[i]>=97&&a[i]<=122) 		{ 			i++; 			if(a[i]<65||a[i]>90&&a[i]<97||a[i]>122) 			count++; 		} 	} 	printf("%d",count); } 应该是一个道理，这个是对的，一换到指针就多了一个

user: user-0
content: 对的呀

user: user-2
content: 我觉得逻辑有问题啊，你确定运行结果正确吗？

user: user-1
content: 没道理啊。 结果也不对 编译运行输入 a b结果输出1
user-0 提问: 判断一个数是否是素数？？

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 楼上正解，可能是超范围了

user: user-3
content: 两个可能 1  数学定义1不是素数， 需要特殊处理 2. 看看原始题目要求吧，是不是n的范围超过了int的范围了

user: user-0
content: 引用 1 楼 寻开心的回复:n是2的时候呢？它是不是素数 是素数，他的输出是Yes

user: user-0
content: 是素数，他的输出是Yes
user-0 提问: 求大佬帮忙解答一下！！！

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 2 楼 真相重于对错 的回复:[quote=引用 1 楼 user-3 的回复:] struct pnames treas = {"Brad","Fallingjaw"};   //这段代码中的字符串是常量，所以在静态区，结构体的指针指向了静态区的常量字符串，这样编程没问题，只是要注意常量不可修改就可以了（也就是字符串的内容不能修改）。 不太对啊！ char a[20]="12334"; a可不是在静态区，这个意思是用“12334”初始化a这个数组 如果写成 char* a="12345"，a才是。。。 [/quote] 我看错了

user: user-2
content: 引用 1 楼 user-3 的回复:struct pnames treas = {"Brad","Fallingjaw"};   //这段代码中的字符串是常量，所以在静态区，结构体的指针指向了静态区的常量字符串，这样编程没问题，只是要注意常量不可修改就可以了（也就是字符串的内容不能修改）。 不太对啊！ char a[20]="12334"; a可不是在静态区，这个意思是用“12334”初始化a这个数组 如果写成 char* a="12345"，a才是。。。

user: user-3
content: struct pnames treas = {"Brad","Fallingjaw"};   //这段代码中的字符串是常量，所以在静态区，结构体的指针指向了静态区的常量字符串，这样编程没问题，只是要注意常量不可修改就可以了（也就是字符串的内容不能修改）。
user-0 提问: 算法分析的问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 2 楼 qybao 的回复：这个只是统计的 i 的起点和终点的变换而已 我们设 j=i+1 (i从0到N-1就相当于j从1到N)，所以i=j-1，代入等式左边，也就是 j 从1到N，求和（N-(j-1)+1)(N-(j-1))/2，整理即可得到 (N-j+1)(N-j+2)/2，j 和 i 只是个变量的名字而已，把 j 换成 i，既可的 i 从1到N， 求和  (N-i+1)(N-i+2)/2，这个就是等式右边，所以等式左边可以转换为等式右边哦，谢谢想懵了

user: user-2
content: 第一个公式里面的i都换成（i-1） (N-i+1)(N-i) = ( N-i+1+1)(N-i+1) = (N-i+2)(N-i+1) = (N-i+1)(N-i+2)

user: user-3
content: 这个只是统计的 i 的起点和终点的变换而已 我们设 j=i+1 (i从0到N-1就相当于j从1到N)，所以i=j-1，代入等式左边，也就是 j 从1到N，求和（N-(j-1)+1)(N-(j-1))/2，整理即可得到 (N-j+1)(N-j+2)/2，j 和 i 只是个变量的名字而已，把 j 换成 i，既可的 i 从1到N， 求和  (N-i+1)(N-i+2)/2，这个就是等式右边，所以等式左边可以转换为等式右边

user: user-4
content: 这个很明显的啊，你把n-1换成n把i换成i-1代换一下就是第二个式子