Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: C语言调试问题。for循环3次，调试的时候只能出现最后一次，就是第三次的结果，那如何调试的时候输出i=1（第二次）时候的sum的大小呢

回复:
user: user-0
content: 假设需要查看第 5 次循环的某个变量，可以用这种方法按到第 5 次后，再在for循环内你要查看的变量的下一行打断点，这时就能看到要看到的变量的值了，这种。

user: user-1
content: 那你就调试啊， 做断点， 设置断点之后， 可以改变量的值， dev c++， 我记得是在左侧的表达式窗口  不过这么做有什么意义呢？  程序每次都要这样来运行吗

user: user-1
content: 或者不改for条件（）里面的代码，改循环体内的部分    sum += i+1；  关键是你自己要搞明白， i只是控制循环多少次的， 在循环体里面每次的i是什么，而你要的sum到底要加什么，加到数和i之间是什么关系  越来越发现，初学者总是在搞不清楚自己目的的情况下就开始写代码， 然后结果可想而知  你要先做到， 不用计算机敲代码， 自己来模拟计算机的执行， 那么要怎么做这个求和 初始是0 第一次循环加1， 第二次循环加2，。。。。。 现在说起来很简单吧， 为啥你写代码就不对呢？  你就不觉得加到那个数不对吗？ 还是就没有想过它应该是加多少呢  想想吧， 不在这个题目上，而是在怎么学写代码上 先搞明白自己要做什么，再写代码去

user: user-0
content: 不是这个意思，我的意思是 可以查看任何一步时对应的sum

user: user-1
content: for 循环范围上你改一下啊， for ( i=1; i<=n; i++ )

user: user-0
content: 这样只能输出i=0到2分别对应的sum的值，我想要调试，就是如何跳到第二次循环i=1，然后你输入sum，sum的结果就是1而不是最终i=2对应的sum=3这种结果

user: user-1
content: for () {      sum += I;    printf .... }  for后面加花括号，把prinf语句包进去
user-0 提问: 小白的疑问之关于单链表的创建与尾插法

回复:
user: user-1
content: 用%d输入数字应该不会出现这种情况了。getchar()比较特殊

user: user-1
content: '\n'也是一个节点。所以长度翻倍了吧

user: user-0
content: 引用 1 楼 寻开心的回复:因为你这种写法就是双倍的 a 是一个节点，然后回车是一个节点，b又是一个点，回车又是一个节点 x = getchar（）第一次获得到是字符，第二次获得的是回车啊， 依次类推 一夜惊醒梦中人，感谢感谢👍🏻👍🏻

user: user-2
content: 因为你这种写法就是双倍的 a 是一个节点，然后回车是一个节点，b又是一个点，回车又是一个节点 x = getchar（）第一次获得到是字符，第二次获得的是回车啊， 依次类推
user-0 提问: 各路大神看看这是什么情况

回复:
user: user-1
content: 也不能说和高度没有关系， 毕竟0.8s的时候， 7位置就可以进来， 1s的时候7位置的就进不来了

user: user-1
content: h=5 k=1.8 球从上面落下到车顶面的时间 5*t*t = 3.2  t = 0.8s  v =5.0, 所以车跑了4米 9-4  车位置是 5， 5+2.5 = 7.5，  [5, 7.5] 范围， 容纳5，6，7三个球才对 但是球只有在0 1 2 3 4 这个5个位置接纳不到   但是车继续向前跑， 一秒钟的时候所有的球落地那一刻， 车跑了5米， 刚好赶上在4的位置都球接触地面的那一刻  所以，这个车没有侧挡板儿， 是个胶体类的东西，粘上就算

user: user-0
content: 引用 1 楼 寻开心 的回复:这个车估计是胶体做的，两侧没有挡板之类的， 碰到了就粘上了  所以这题有没有小车高度都没关系

user: user-0
content: 引用 2 楼 user-2 的回复:你的理解有问题了，为什么9-4他也没说间距是一米 0 1 2 3 4 5(车)  他所有的数据都没有单位，我是按照单位长度理解的  小球之间1个单位长度，输入的s是9个单位长度

user: user-2
content: 你的理解有问题了，为什么9-4他也没说间距是一米 0 1 2 3 4 5(车)

user: user-1
content: 这个车估计是胶体做的，两侧没有挡板之类的， 碰到了就粘上了
user-0 提问: 小白求教

回复:
user: user-1
content: 1、a/b 商 a%b 余 2、118 /100 = 1 (百位) 118/10%10 = 1 (十位)  118 % 10 = 8（个位） 3、char a = 'a', 前一个字符 a-1, 后一个字符 a+1;
user-0 提问: 萌新求教。。

回复:
user: user-1
content: 不会就看书啊  这些基础的问题， 必须要自己来尝试解决  自己写吧， 代码错了，贴出来后帮你改 但是不会你自己一行代码不写就来要源码 那样对你学习毫无意义
user-0 提问: C语言小白求教

回复:
user: user-1
content: 引用 4 楼 chxchxkkk 的回复:在for循环外加一句： if (i==5)     printf("Thanks");  大佬你好  可否移步看看我的帖子

user: user-2
content: 在for循环外加一句： if (i==5)     printf("Thanks");

user: user-3
content: 哦，好像真是审错了。 不能用数组，就用多个变量，叫a1, a2，等。把scanf重复多遍，分别赋值后，再输出菜单。

user: user-0
content: 引用 1 楼 proorck2019的回复:输出菜单容易，多写几行printf就行了。  记得去电脑上结贴给分数。 啥玩意 你审题了么

user: user-3
content: 输出菜单容易，多写几行printf就行了。  记得去电脑上结贴给分数。
user-0 提问: 运算符问题，求解。

回复:
user: user-0
content: 引用 4 楼 proorck2019的回复:问题①： 执行效果上没有区别，但是a*=b的格式可以少写一遍a，当a的名字很长时，这样写能快一点。  问题②： 先用值还是先加一，按从左往右的顺序记忆，a++，先出现a，则先用a的值；++a，先出现++，则先加一。  记得去电脑上结贴给分数。 可以的话你可以到我另一个贴子“jdk的安装”，帮忙解决一下，那里有150分，没人帮忙挺急的，搞定之后我再加200分给你。

user: user-0
content: 你可以到我另一个贴子“jdk的安装”那里有150分，可以的话帮忙解决一下，还可以再加200分给你，挺急的。

user: user-0
content: 引用 4 楼 proorck2019的回复:问题①： 执行效果上没有区别，但是a*=b的格式可以少写一遍a，当a的名字很长时，这样写能快一点。  问题②： 先用值还是先加一，按从左往右的顺序记忆，a++，先出现a，则先用a的值；++a，先出现++，则先加一。  记得去电脑上结贴给分数。 不好意思我已经结贴了，感谢你的回答。

user: user-1
content: 问题①： 执行效果上没有区别，但是a*=b的格式可以少写一遍a，当a的名字很长时，这样写能快一点。  问题②： 先用值还是先加一，按从左往右的顺序记忆，a++，先出现a，则先用a的值；++a，先出现++，则先加一。  记得去电脑上结贴给分数。

user: user-2
content: 有 a=b+1 不用说了  a=b++; 是a=b; b+=1;  a=++b; 是b+=1; a=b;

user: user-0
content: 引用 1 楼 ?Victor.??的回复:应该没有吧   还有一个问题，就是a=b+1；a=b++；a=++b；这三者有区别吗？

user: user-2
content: 应该没有吧
user-0 提问: 循环链表之约瑟夫环问题

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:既然是环，你就要检测最后一个， q == q->next的情况 此时的删除要特殊处理的，直接输出这个q的数据，然后释放q就好了  你的后续的free_tmp只有一个数据的环下面， q->next  = q->next->next 依然是自身赋值给自身， free函数释放的也是它 感谢您的回答，我明白问题所在了，犯了一个先入为主的低级错误，在剩下最后一个环的时候，其实释放的是q－>next也就是q，但是q－>next置null，q被释放了并没有将q置为null，所以又跑进while，至于被释放了的q被拿来用，并再次被赋值q－>next（null），为什么没退出，在错误的操作上再出错也没有在探究的意义了，感谢您

user: user-0
content: 感谢您的回答，判断是可以解决，但我疑问在于，为什么我将最后一个节点释放了，并置为NULL，而它还能跑进while。

user: user-1
content: while ( q ) { if (q == q->next ) {     // 无论m是多少，对只有一个节点的环来说，最终选定的必然还是这个唯一的节点，     printf("%p\t%d\r\n",q, q->data);     free(q);     q = NULL; } else  if ( j++ < m ) { q = q->next; } else { free_tmp = q->next; printf("%p\t%d\r\n",free_tmp,free_tmp->data); q->next = q->next->next; free(free_tmp); free_tmp = NULL; j = 1; }

user: user-1
content: 既然是环，你就要检测最后一个， q == q->next的情况 此时的删除要特殊处理的，直接输出这个q的数据，然后释放q就好了  你的后续的free_tmp只有一个数据的环下面， q->next  = q->next->next 依然是自身赋值给自身， free函数释放的也是它
user-0 提问: 二维数组的问题

回复:
user: user-1
content: 能否用变长数组取决于你的编译器对 c99 的支持程度。

user: user-2
content: c语言数组长度必须是个常量值，不支持变量

user: user-3
content: 应该是因为n是变量吧
user-0 提问: #C 单链表

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:value =insert->value;反了。 if(previous = NULL){这是赋值了，改==。 细心点啊  啊啊啊啊啊 咋就没看见 太蠢了 多谢！

user: user-1
content: value =insert->value;反了。 if(previous = NULL){这是赋值了，改==。 细心点啊
user-0 提问: 为什么printf什么都不输出

回复:
user: user-1
content: 我的C语言老师教我们“传值”、“传址”。

user: user-2
content: 关键是你在函数里面改了PT， 但是你带不出来函数， 它只在函数体内有效 传参永远传递的是值，而不是变量本身 虽然， 你把main里面变量的地址传递进去了， 但是你改不变量本身的地址 函数里面那个PT仅仅是个临时变量， 和main的PT之间一毛钱关系都没有 回到主函数，PT还是原来的PT，根本就没有变化  相当于你在函数体内申请了一个新的内存，然后改了那个内存里面的数据 出了函数回到主函数，那个内存地址没有带回来， 不知道扔哪儿去了， 然后还用原来的PT里面的数据输出， 所以就没有所以了

user: user-3
content: mian函数里已经定义了一个结构体对象，系统已经开辟了内存，你调用初始化函数，你使用的是传引用，所以函数里面处理的已经是你创建的对象的地址，就不需要在malloc了，你再使用malloc使得你开辟后的地址，被你malloc的地址覆盖了，你输入的数据再你的malloc的地址种，而main中的结构体并没有做任何操作，仍然是空的！去掉malloc那句试试！
user-0 提问: c语言用埃拉托色尼算法求最大公约数！初始了一个2-n的数组，作为候选质数，我的本意是将2，3，5，7的倍数置零，但我不知道我的代码错在了何处？？

回复:
user: user-1
content: for(i=0,j=2;  j<=x,i<x-1;  j++,i++)  这个地方错了 逗号表达式， 只会返回最后执行的结果， 第一个判断就无效了 这里必须是|| 或者 && 才是你的目的
user-0 提问: 关于C语言PTA题目掉入陷阱的数字一题

回复:
user: user-0
content: 引用 4 楼 寻开心 的回复:第一 你的sumn没有初始化，第一次执行的while （sumn!=sun)的时候可能是任何的值  第二 如果传入的n就是0，会如何谢谢，谢谢

user: user-0
content: 引用 6 楼 ?Victor.?? 的回复:楼主是买的题吗  我找了半天没找到  应该是sumn初始化，pta之类对这方面要求挺高的谢谢，我去试试。

user: user-0
content: 引用 6 楼 ?Victor.?? 的回复:楼主是买的题吗  我找了半天没找到  应该是sumn初始化，pta之类对这方面要求挺高的不是我买的题，是老师布置的作业中的一道题。

user: user-1
content: 楼主是买的题吗  我找了半天没找到  应该是sumn初始化，pta之类对这方面要求挺高的

user: user-2
content: 嗷，n=0，你已经考虑过了 就看sumn的初值吧

user: user-2
content: 第一 你的sumn没有初始化，第一次执行的while （sumn!=sun)的时候可能是任何的值  第二 如果传入的n就是0，会如何

user: user-0

user: user-0
content: 抱歉啊，忘了发题目要求了。

user: user-1
content: 在pta的哪里呀  我也去做一做  用你的代码试试
user-0 提问: 两个链表合并，在我的基础上帮忙修改一下

回复:
user: user-0
content: 引用 8 楼 寻开心的回复:  这个和pa和pb哪一个短没有关系 而是和pa、pb里面date最大值有关系 最大值小的那个（那怕它里面包含到节点数目远超另外一个）会先被全部插入到pc当中去，剩下的另外一个需要直接挂接到pc尾巴上  问题是在while（pa&&pb）成立的时候， 他们还都没有到达尾部呢， 此时还在交叉着往pc后面挂节点中，这个时候执行这两句代码就不是正确的位置 我表达错误，是根据pa和pb的值大小决定执行哪一条语句,与长短无关无

user: user-1
content: 这个和pa和pb哪一个短没有关系 而是和pa、pb里面date最大值有关系 最大值小的那个（那怕它里面包含到节点数目远超另外一个）会先被全部插入到pc当中去，剩下的另外一个需要直接挂接到pc尾巴上  问题是在while（pa&&pb）成立的时候， 他们还都没有到达尾部呢， 此时还在交叉着往pc后面挂节点中，这个时候执行这两句代码就不是正确的位置

user: user-2
content: 这么多代码，得边调试边修改。再调试看看吧。

user: user-0
content: 引用 10 楼 user-2的回复:这篇代码在我的TC2环境里编译出错，没法儿调。 你用的是什么开发环境？ devc++

user: user-2
content: 这篇代码在我的TC2环境里编译出错，没法儿调。 你用的是什么开发环境？

user: user-0
content: 引用 5 楼 寻开心的回复:[quote=引用 3 楼 ?Travelers 的回复:] [quote=引用 1 楼 寻开心的回复:]while(pa&&pb){      if(pa->data<=pb->data){           pc->next=pa;pc=pa;pa=pa->next;       } else{          pc->next=pb;pc=pb;pb=pb->next;       }      pc->next=pa?pa:pb;      free(Lb); }  那两行你的目的是做什么呢？  写出的代码首先要自己相信是对的，那就肯定就有自己认为合理的解释， 说一说吧。   pc->next=(pa?pa:pb),把pa和pb中那个比较长的链表的剩余部分赋值给pc,与pc连接[/quote]  所以啊， 这个比较得在while的外面啊。问题是你把他们放到while语句里面了呀[/quote] 如果放在while语句里面就是当pa和pb中较短的执行完了之后就会直接退出while语句，就不会执行  pc->next=pa?pa:pb;这么理解对吗？

user: user-0
content: 如果放在while语句里面就是当pa和pb中较短的执行完了之后就会直接退出while语句，就不会执行  pc->next=pa?pa:pb;这么理解对吗？

user: user-1
content: 引用 3 楼 ?Travelers 的回复:[quote=引用 1 楼 寻开心的回复:]while(pa&&pb){      if(pa->data<=pb->data){           pc->next=pa;pc=pa;pa=pa->next;       } else{          pc->next=pb;pc=pb;pb=pb->next;       }      pc->next=pa?pa:pb;      free(Lb); }  那两行你的目的是做什么呢？  写出的代码首先要自己相信是对的，那就肯定就有自己认为合理的解释， 说一说吧。   pc->next=(pa?pa:pb),把pa和pb中那个比较长的链表的剩余部分赋值给pc,与pc连接[/quote]  所以啊， 这个比较得在while的外面啊。问题是你把他们放到while语句里面了呀

user: user-0
content: 引用 2 楼 寻开心的回复:看代码应该是二路归并，也许你有别的要求也未尝不可 如果二路归并的话，那两行代码就不应该在while语句里面 while中的语句是比较，pc会连接上pa和pb每次比较之后较小的值

user: user-0
content: 引用 1 楼 寻开心的回复:while(pa&&pb){      if(pa->data<=pb->data){           pc->next=pa;pc=pa;pa=pa->next;       } else{          pc->next=pb;pc=pb;pb=pb->next;       }      pc->next=pa?pa:pb;      free(Lb); }  那两行你的目的是做什么呢？  写出的代码首先要自己相信是对的，那就肯定就有自己认为合理的解释， 说一说吧。   pc->next=(pa?pa:pb),把pa和pb中那个比较长的链表的剩余部分赋值给pc,与pc连接

user: user-1
content: 看代码应该是二路归并，也许你有别的要求也未尝不可 如果二路归并的话，那两行代码就不应该在while语句里面

user: user-1
content: while(pa&&pb){      if(pa->data<=pb->data){           pc->next=pa;pc=pa;pa=pa->next;       } else{          pc->next=pb;pc=pb;pb=pb->next;       }      pc->next=pa?pa:pb;      free(Lb); }  那两行你的目的是做什么呢？  写出的代码首先要自己相信是对的，那就肯定就有自己认为合理的解释， 说一说吧。
user-0 提问: C语言 随机生成100以内的数，放入数组中并用冒泡排序，间歇出错（我是 ）

回复:
user: user-1
content: 的确，这个flag完全没有用，不知道写来是干嘛的

user: user-2
content: 在 BubbleSort中，你这flag干啥用的~~  if(flag==0) return; 这句删掉就好了

user: user-3
content: 这个要看脸       你还是回回炉，好好看看冒泡吧，所有的书上都有的 你那个flag的作用好好研究研究
user-0 提问: C语言for语句

回复:
user: user-1
content: 在2楼代码的基础上，添加printf i j k，有利于研究执行顺序。

user: user-2
content: 如果不是嵌套，则从上向下依次运行。如果是嵌套，则从里向外运行3楼的兄弟比喻的很到位

user: user-3
content: 房子有很多书，一本一本的读，从第一本开始，一页一页的翻，从第一页开始，一行一行的看，从第一行开始，一个字一个字的啃！

user: user-4
content: 就是每执行一次外层  里层全执行一遍  for(int i=0; i <3; i++)//循环1 {      for(int j=0; j<3; j++)//循环2      {             for(int k=0; k<3; k++)//循环3             {                     语句;              }       } }  i=0 j=0 k=0  i=0 j=0 k=1  i=0 j=0 k=2  i=0 j=1 k=0  所以循环1执行3次 循环2执行9次 循环3执行27次

user: user-5
content: 俄罗斯的套娃
user-0 提问: 求助一道题！！！！我要晕了

回复:
user: user-0
content: 引用 2 楼 寻开心 的回复：更简单的 https://blog.csdn.net/sinat_34684122/article/details/81673605谢谢你 这个题要makefile吗 才接触虚拟机有点迷茫

user: user-0
content: 引用 2 楼 寻开心 的回复：更简单的 https://blog.csdn.net/sinat_34684122/article/details/81673605非常感谢您 我终于搞出来了

user: user-1
content: 更简单的 https://blog.csdn.net/sinat_34684122/article/details/81673605

user: user-1
content: https://www.cnblogs.com/qianxiaoxu/p/11876198.html
user-0 提问: 取消对NULL指针的引用，求助各位大佬

回复:
user: user-1
content: 或者，在25行赋值之前统一写一行 if ( NULL ==node1 || NULL==node2 || ..... ) return;   它这个检测就是让你malloc后要有一个对NULL的判断之后再做其他的处理

user: user-1
content: 警告的意思是让你检查指针是否是NULL的意思 你这个是VS2019？ VS2019下strcpy都变成strcpy_s了， 而且提示啥时候变成这样的中文说明了  if ( node1 != NULL ) {      node->age = ...... }

user: user-0

user: user-0
content: 严重性	代码	说明	项目	文件	行	禁止显示状态	详细说明 警告	C6011	取消对 NULL 指针“node1”的引用。	day06	C:\USERS\ADMINISTRATOR\DESKTOP\单向动态链表.C	25

user: user-1
content: 把警告的地方贴出来， 在哪行？ 警告的具体原文是什么？

user: user-0
content: 1楼大佬这个方法还是不行啊，VS2019上还是提示一样的警告。。。非常感谢大佬的回复

user: user-1
content: struct Teacher* node1 = (struct Teacher *) malloc(sizeof(struct Teacher));     其他几个也都如此处理  别的地方没有问题
user-0 提问: 关于eclipse编写c语言的问题

回复:
user: user-0
content: 引用 3 楼 寻开心的回复:多简单啊， 好好学习， 玩儿什么游戏！！！ 哈哈哈哈哈好的嘛

user: user-0
content: 引用 2 楼 smwhotjay的回复: 不好说，我玩某个私人小作坊游戏，再打开浏览器就会打不开网页。但qq之类正常。重启就好了。估计是某个流氓插件驱动之类的。 是了流氓插件太多

user: user-0
content: 引用 1 楼 proorck2019的回复:去eclipse专区问，会不会好一点？ 好的谢谢大佬提醒！

user: user-1
content: 多简单啊， 好好学习， 玩儿什么游戏！！！

user: user-2
content: 不好说，我玩某个私人小作坊游戏，再打开浏览器就会打不开网页。但qq之类正常。重启就好了。估计是某个流氓插件驱动之类的。

user: user-3
content: 去eclipse专区问，会不会好一点？
user-0 提问: 尾插法输出结果缺少一个，怎么修改 

回复:
user: user-1
content: r=L;      for(i=1;i<n;i++){          s=(LinkList)malloc(sizeof(LNode));  这里i=0;i<n; 或者 I=1;i<=n 才对， 否则就是少了一个
user-0 提问: 求代码，拜托大佬

回复:
user: user-1
content: 得写五百行 。

user: user-2
content: 数据结构可以使用链表解决。

user: user-3
content: 最好自己写，遇到具体问题再问，不然你的知识是不会有长进的。

user: user-4
content: 自己写 源码就自己百度去吧
user-0 提问: codeup上的问题 求求各位大佬告诉我哪儿错了

回复:
user: user-1
content: int main(){     char str1[100]={0};     char str2[100]={0};     int x[100]={0};     while(scanf("%s", str1) != EOF){         char judge[100]={0};  这几个地方全部初始化为0，才和你后后面的memset匹配的上 局部变量数组是没有默认的初始化数值的
user-0 提问: 求问c语言实现 关于分段函数不等式的问题

回复:
user: user-1
content: 首先理论上是可以证明的     x%2=1 和 x%2=0 实际上就是说x是奇数还是偶数； y也是如此     奇数： x = 2*m+1， y=2*n+1     偶数： x = 2*m，     y=2*n 分四种情况证明，f（x，y）<= x*x*y*y  这里x和y一定是整数，否则%操作就没有意义了   程序证明： 构造出分段函数： int f(int x, int y) { return x%2 ? ( y%2?x*y : 2*(y+1)) : ( y%2 ? (x+1)*y : 2*x*y); };  然后就是对于不同的x和y去比较    f(x,y) 和 x*x*y*y的大小问题了  这个时候用穷举法， 如果给出x和y的范围 如果没有范围，也就是x和y是任意的整数，那穷举办法就无效了  程序不能证明，只能来模拟，而且只能模拟有限范围的
user-0 提问: 计算s并输出   s=1+1/1+2+1/1+2+3+....+1/1+2+3+...+n

回复:
user: user-1
content: 这就一个for循环  double s=1, v=1; for (int i=1; i<=n; i++) {     s += 1/(v+i); }

user: user-2
content: 引用 楼主 C  ?r    o?的回复: #include<stdio.h> int main() { 	double s=0; 	int n,i,sum=0; 	scanf("%d",&n); 	for(i=1;i<=n;i++)            	{ 	   sum=sum+i; 	   s=s+(1.0/sum); 	 	 }  	 printf("%.2lf",s); 	 return 0;  }

user: user-3
content: v = v+i;
user-0 提问: C语言内存分区

回复:
user: user-0
content: 引用 1 楼 user-1的回复:你整理的有点瑕疵，不过也没办法，毕竟不同的编译器和操作系统对于数据在内存中的安排方式都是不太一样的。这些东西你有个概念就可以了，如果要学计算机组成原理等更底层的话再深入了解。在 C 语言中，你只需要知道各种对象的生命周期就足以解决许多问题了。  注：不准确的地方： 1. const 对象不一定在静态存储区内，例如局部 const 对象就可以在自动存储区内。 2. 普通的字面量不一定就不占内存，例如编译器可能会把一个 double 字面量存在静态存储区内，在代码用到时直接访问对应的内存，而不是将数据和指令捆绑在一起。更别说还有复合字面量的存在了。 感谢指点，现在c学完了，正在读c++ primer，学完后会考虑计算机组成原理的

user: user-1
content: 你整理的有点瑕疵，不过也没办法，毕竟不同的编译器和操作系统对于数据在内存中的安排方式都是不太一样的。这些东西你有个概念就可以了，如果要学计算机组成原理等更底层的话再深入了解。在 C 语言中，你只需要知道各种对象的生命周期就足以解决许多问题了。  注：不准确的地方： 1. const 对象不一定在静态存储区内，例如局部 const 对象就可以在自动存储区内。 2. 普通的字面量不一定就不占内存，例如编译器可能会把一个 double 字面量存在静态存储区内，在代码用到时直接访问对应的内存，而不是将数据和指令捆绑在一起。更别说还有复合字面量的存在了。
user-0 提问: PTA 1004 成绩排名 (20point(s)) c(gcc)

回复:
user: user-1
content: 数组内存分配在栈区，在编译之初就得要确定，而malloc函数是动态分配的内存，位于堆区，可以在运行过程中申请和释放

user: user-2
content: else if (students[i].score < last_student.score)             last_student = students[i]; 请问下这一句last_student.score不是-1吗？任意输入一个大于0的数都比它大，那这个执行语句什么时候才能执行呀？last_student.score里不是要放最后一名的成绩吗

user: user-3
content: int student_num; scanf("%d",&student_num); struct student students[student_num]; C语言不支持这样定义数组，必须给定一个常量值

user: user-0
content: 引用 1 楼 chxchxkkk 的回复：int student_num; scanf("%d",&student_num); struct student students[student_num]; C语言不支持这样定义数组，必须给定一个常量值变长数组，可以支持的

user: user-4
content: #include<stdio.h> #include <stdlib.h>  struct student{     //char name[10];     //char code[10];     char name[32];     char code[32];     int  score; };  int main(void) {     int student_num;     scanf("%d",&student_num);     struct student *students = (struct student *)malloc(sizeof(struct student) * student_num);     if (!students)         exit(0);      int i;     struct student first_student = {"","",-1};     struct student last_student;     for (i=0;i<student_num;i++)     {         scanf("%s %s %d",students[i].name,students[i].code,&students[i].score);         if (students[i].score > first_student.score)             first_student = students[i];         if (i==0)             last_student = first_student;         else if (students[i].score < last_student.score)             last_student = students[i];         //else          //   ;     }      printf("%s %s\n",first_student.name,first_student.code);     printf("%s %s\n",last_student.name,last_student.code);      return 0; }  供参考～  C语言不支持变长数组，另外，name, code对于测试用例而言，已经越界了。所以建议增加数组长度(name, code)
user-0 提问: 求大佬告知“命令行参数”是什么意思？？

回复:
user: user-0
content: 引用 2 楼 寻开心 的回复：https://blog.csdn.net/thelostlamb/article/details/79304203看了还是不懂，究竟啥叫命令行，有什么用？

user: user-1
content: 首先c语言main函数的标准写法： 第一种形式：    int main (void)     {      ……      return 0;     }   第二种形式：   int main (int argc, char *argv[ ])     {     ……     return 0;     }  第二种就是楼主说的命令行参数的定义形式，比如你使用第二种定义形式，在运行程序时需要  ./a.exe  参数  才能运行

user: user-2
content: 就是电影里那些高手，都在控制台里劈里啪啦的敲键盘。因为图形工作界面占用资源。 所以高手都是在命令行里配置一些东西 int argc, char *argv[ ] 第一个参数是 命令行参数的个数 第二个参数是一个字符串数组 其中第一个字符串是程序的名字，因为程序有可能被改名。 后面的参数，一般用于配置程序

user: user-3
content: https://blog.csdn.net/thelostlamb/article/details/79304203
user-0 提问: C语言实验

回复:
user: user-1
content: 引用 9 楼 老英捉小奇的回复:[quote=引用 8 楼 weixin_46549758的回复:][quote=引用 7 楼 老英捉小奇的回复:]题上整那个scanf干啥的？变量不是都有值吗 不知道哇，让输入abd？[/quote] 太难了，看不懂，那就随便输输abd试试[/quote] 可能是想说用scanf，abd又被重新赋值了

user: user-1
content: 引用 8 楼 weixin_46549758的回复:[quote=引用 7 楼 老英捉小奇的回复:]题上整那个scanf干啥的？变量不是都有值吗 不知道哇，让输入abd？[/quote] 太难了，看不懂，😓那就随便输输abd试试

user: user-0
content: 引用 7 楼 老英捉小奇的回复:题上整那个scanf干啥的？变量不是都有值吗 不知道哇，让输入abd？

user: user-1
content: 题上整那个scanf干啥的？变量不是都有值吗

user: user-0
content: 运行不出来....第一题怎么写

user: user-2
content: 这个题目是错的！ 什么32768之类是假定了整形16位，但是实际上标准中却不是这样定的，也许在某些情况下上机验证是对的，但是有时却是错的。

user: user-0
content: 引用 3 楼 EricNTH的回复:对的，应该随便输入几个，然后分析为什么会输出那些东西 好的，我再看看，谢谢啦

user: user-3
content: 对的，应该随便输入几个，然后分析为什么会输出那些东西

user: user-0
content: 引用 1 楼 EricNTH的回复:输入一个short型整数，一个int型整数，一个float型浮点数就可以了 我也不知道它想让你分析啥 随便输入嘛？

user: user-3
content: 输入一个short型整数，一个int型整数，一个float型浮点数就可以了 我也不知道它想让你分析啥
user-0 提问: C语言

回复:
user: user-0
content: 引用 1 楼 不闻窗外事的回复:你就查ascii码就行，‘A’如果是65，那么就是可以替换的，因为‘A’本身的ascii码就是65，那么‘A’跟65是一样的 👌好的，谢谢啊

user: user-1
content: 你就查ascii码就行，‘A’如果是65，那么就是可以替换的，因为‘A’本身的ascii码就是65，那么‘A’跟65是一样的
user-0 提问: 求帮忙

回复:
user: user-0
content: 是的啊，永远都只有一条

user: user-1
content: 先做好一个函数 PrintList， 把这个L队列完整的在屏幕上输出， 看看能打印出几条记录 确保这个正确后，再去说文件存储的事儿  怀疑你的队列里面就保存了一条数据

user: user-0
content: 可以输出姓名，电话，性别，住址，学号，专业

user: user-1
content: 你的链表恐怕没有建立对  你不向文件输出， 你屏幕输出，看看链表能输出几个数据先

user: user-0
content: 引用 1 楼 寻开心的回复:fprintf(fp,"name\t num\t sex\t address\t studentID\t major\n");      printf("\n");      while(p2!=NULL)      {        printf("\n");        fprintf(fp,"%s\t",p2->name);        ......        p2=p2->next;      }      // 上面的代码能保证把链表都输入到磁盘文件当中，而且是一条一行           p2=head;        fscanf(fp,"\n name\t num\t sex\t address\t studentID\t major\n");     此时文件指针定位到文件的尾巴， fscanf在这里什么都读不出来， 这是出于什么目的在这儿         下面这段代码就奇怪了， 会让最后一个节点写不进文件      同时，为什么要写一个链表两次到文件里面去了呢      while(p2->next!=NULL)      {        fprintf(fp,"%s\t",p2->name);       。。。。        fprintf(fp,"%s\n",p2->major);        p2=p2->next;       }      fclose(fp);    你首先做一个屏幕上输出链表都程序， 看看屏幕上能输出几个链表当中的元素 怀疑你的链表没有设置正确 至少从这个代码当中，看得出使用链表都逻辑是混乱的（第二次输出链表到文件的代码上） 我从fsanf删到fclose前面，然后再调，还是不能输入第二个数据，一输入就把前一个给覆盖了

user: user-1
content: fprintf(fp,"name\t num\t sex\t address\t studentID\t major\n");      printf("\n");      while(p2!=NULL)      {        printf("\n");        fprintf(fp,"%s\t",p2->name);        ......        p2=p2->next;      }      // 上面的代码能保证把链表都输入到磁盘文件当中，而且是一条一行           p2=head;        fscanf(fp,"\n name\t num\t sex\t address\t studentID\t major\n");     此时文件指针定位到文件的尾巴， fscanf在这里什么都读不出来， 这是出于什么目的在这儿         下面这段代码就奇怪了， 会让最后一个节点写不进文件      同时，为什么要写一个链表两次到文件里面去了呢      while(p2->next!=NULL)      {        fprintf(fp,"%s\t",p2->name);       。。。。        fprintf(fp,"%s\n",p2->major);        p2=p2->next;       }      fclose(fp);    你首先做一个屏幕上输出链表都程序， 看看屏幕上能输出几个链表当中的元素 怀疑你的链表没有设置正确 至少从这个代码当中，看得出使用链表都逻辑是混乱的（第二次输出链表到文件的代码上）
user-0 提问: 题目是：将链表合并改写成数组循环方式，预习单链表的操作

回复:
user: user-1
content: 二路归并算法  自己看书了解这个算法先 La和Lb是已经排好序的，而且是小的在前大大在后  第一个while就是两个链表还都有数据的时候，边比较大小边填充到Lc里面去 后个while都意思是La和Lb其中一个已经全部在Lc里面了，那么剩下的那个就不许要比较，直接往Lc里面继续放就是了  先去了解二路归并 然后不用电脑程序， 自己手工处理，会如何处理。  想明白了如何做二路归并再来看代码的实现 不明白算法是怎么回事儿，  光看代码有个鬼用！
user-0 提问: C语言输出星号

回复:
user: user-0
content: 引用 9 楼 chxchxkkk的回复:[quote=引用 3 楼 xiaobaicaiaihe 的回复:] [quote=引用 2 楼 chxchxkkk的回复:]来个c 版本的  #include <stdio.h>  int main() {     int i, j, s;     scanf("%d", &s);      for (i=0; i<s; i++)     {         for (j=0; j<=s-i; j++)             printf(" ");          for (j=0; j<i*2-1; j++)             printf("*");         printf("\n");     }     return 0; }   j等于零开始为什么[/quote]  第一个 j 的循环是打印出每行 * 号前面的空格，第二个 j 的循环是打印 * 号，个数是由 行号 * 2 -1，比如第一行 1*2-1=1，前面打印15个空格，然后打印一个*号。第二行 2*2-1=3， 前面打印14个空格，打印三个 * 号，依次类推[/quote] 为啥呢第一行就是15个空格，不是s-i+1个空格吗

user: user-1
content: 引用 3 楼 xiaobaicaiaihe 的回复:[quote=引用 2 楼 chxchxkkk的回复:]来个c 版本的  #include <stdio.h>  int main() {     int i, j, s;     scanf("%d", &s);      for (i=0; i<s; i++)     {         for (j=0; j<=s-i; j++)             printf(" ");          for (j=0; j<i*2-1; j++)             printf("*");         printf("\n");     }     return 0; }   j等于零开始为什么[/quote]  第一个 j 的循环是打印出每行 * 号前面的空格，第二个 j 的循环是打印 * 号，个数是由 行号 * 2 -1，比如第一行 1*2-1=1，前面打印15个空格，然后打印一个*号。第二行 2*2-1=3， 前面打印14个空格，打印三个 * 号，依次类推

user: user-0
content: 引用 2 楼 chxchxkkk的回复:来个c 版本的  #include <stdio.h>  int main() {     int i, j, s;     scanf("%d", &s);      for (i=0; i<s; i++)     {         for (j=0; j<=s-i; j++)             printf(" ");          for (j=0; j<i*2-1; j++)             printf("*");         printf("\n");     }     return 0; }   j等于零开始为什么

user: user-2
content: 为什么不看下一楼的版本呢

user: user-0
content: 引用 2 楼 chxchxkkk的回复:来个c 版本的  #include <stdio.h>  int main() {     int i, j, s;     scanf("%d", &s);      for (i=0; i<s; i++)     {         for (j=0; j<=s-i; j++)             printf(" ");          for (j=0; j<i*2-1; j++)             printf("*");         printf("\n");     }     return 0; }   怎样以第15列为对称轴输出

user: user-0
content: 怎样以第15列为对称轴输出呢，这个代码只能输出星号

user: user-3
content: 这个循环就能解决，建议先自己思考一下

user: user-4
content: https://blog.csdn.net/qq_39528210/article/details/104854577 可以看一下这篇文章

user: user-1
content: 来个c 版本的  #include <stdio.h>  int main() {     int i, j, s;     scanf("%d", &s);      for (i=0; i<s; i++)     {         for (j=0; j<=s-i; j++)             printf(" ");          for (j=0; j<i*2-1; j++)             printf("*");         printf("\n");     }     return 0; }

user: user-2
content: #include <iostream>  #define MAX 14  void print_char(char c, int n) {     while (n-- > 0) putchar(c); }  int main(void) {     int level = 0;     scanf("%d", &level);     if (level > MAX) {         printf("out of bound!\n");                                 exit(1);     }      for (int i = 1; i <= level; ++i) {          int asterisk_cnt = 2 * i - 1;         print_char(' ', (MAX * 2 - 1 - asterisk_cnt) / 2);         print_char('*', asterisk_cnt);         print_char('\n', 1);     }      return 0; }  拿好~
user-0 提问: 数据结构 单链表 删除指定位置数据 单个函数

回复:
user: user-1
content: 改成  if ( prev->next == NULL ) return 0; 才对  前面的while （prev->next && ...） 检测的是prev->next，prev本身肯定不会是NULL的

user: user-0
content: 引用 1 楼 user-2 的回复：LinkList是什么类型？指针吗？ 后面的Node*q = prev->next;如果是NULL，则崩溃。是指针 谢谢您 确实是这个问题 已经解决了

user: user-2
content: LinkList是什么类型？指针吗？ 后面的Node*q = prev->next;如果是NULL，则崩溃。
user-0 提问: 关于构造螺旋方阵题目的一点疑问

回复:
user: user-1
content: 这是因为你的 if (direction ==1 ) { } else  if (direction==2) { } else  if (direction==3) { } else  if (direction==4)  缺少了这三个else语句， 平时么有问题， 但是当最后一个正确的字符比如25写完的时候， 会没直接去while哪里处理条件，而是直接去进行下一个if (direction==2)判断了， 显然这个判断是成立的，所以就写出了26，27， 直到if(direction==4)被执行完，才跑去while判断
user-0 提问: 一道c语言选择题求解在线等，急，麻烦说的详细点有步骤

回复:
user: user-1
content: 答案是D，a=11。

user: user-2
content: 引用 7 楼 沐雨又乘风. 的回复:[quote=引用 1 楼 自信男孩的回复:]C呢，33  i = 0; 执行i += 11；则i = 11; a += i; 则a = 11; i % 10 != 0;执行i--；此时i = 10; 执行i += 11;则i = 21; a+= i; 则a = 11 + 21 = 33 他什么时候跳出循环了呢兄弟能不能说的再详细点呢[/quote] i是11的时候跳出循环的呀，没看到while (i < 10)吗？ 好吧，你还是学学基础吧 给你结果没啥意思

user: user-0
content: 引用 1 楼 自信男孩的回复:C呢，33  i = 0; 执行i += 11；则i = 11; a += i; 则a = 11; i % 10 != 0;执行i--；此时i = 10; 执行i += 11;则i = 21; a+= i; 则a = 11 + 21 = 33 他什么时候跳出循环了呢兄弟能不能说的再详细点呢

user: user-2
content: 引用 2 楼 沐雨又乘风. 的回复:[quote=引用 1 楼 自信男孩的回复:]C呢，33  i = 0; 执行i += 11；则i = 11; a += i; 则a = 11; i % 10 != 0;执行i--；此时i = 10; 执行i += 11;则i = 21; a+= i; 则a = 11 + 21 = 33 答案是b，兄弟你再好好看看[/quote] 还用看吗？解释里不是算出来了吗？ 11+21我算错，你不会算错吧

user: user-3
content: 1楼几乎对了，在最后一步算错了。

user: user-3
content: for循环很有意思，它唯一的出口是break，因为i--执行了一次，所以答案不是33是32。

user: user-0
content: 引用 1 楼 自信男孩的回复:C呢，33  i = 0; 执行i += 11；则i = 11; a += i; 则a = 11; i % 10 != 0;执行i--；此时i = 10; 执行i += 11;则i = 21; a+= i; 则a = 11 + 21 = 33 11+21＝32吧。。。。。

user: user-0
content: 引用 1 楼 自信男孩的回复:C呢，33  i = 0; 执行i += 11；则i = 11; a += i; 则a = 11; i % 10 != 0;执行i--；此时i = 10; 执行i += 11;则i = 21; a+= i; 则a = 11 + 21 = 33 答案是b，兄弟你再好好看看

user: user-2
content: C呢，33  i = 0; 执行i += 11；则i = 11; a += i; 则a = 11; i % 10 != 0;执行i--；此时i = 10; 执行i += 11;则i = 21; a+= i; 则a = 11 + 21 = 33
user-0 提问: 求教long long类型的取值范围问题

回复:
user: user-1
content: 类似的问题还有： 5/2=2  (错误) 5.0/2.0=2.5  (正确)  你的结贴给分数，是我们奋斗的动力。

user: user-2
content: n*(n+1)/2 计算方法都是一样的。只是n的类型不一样，那么结果是根据n类型决定范围的。因此long long类型的数据的计算得到的是正确的。 虽然返回值都是long long，那也是n * (n + 1) / 2的计算之后的结果转成long long，而不是以long long类型计算的。明白吗？

user: user-3
content: return ((long long ) n)*((long long ) n+1)/2;

user: user-3
content: 返回值的类型必须和函数的返回类型一致，既然你函数的参数是long类型，那么不管你怎么计算，只要没有强制将计算的结果类型转换成long long类型，那么就还是long类型，与定义的函数返回值类型不一致，所以会报错，可以试下return (long long ) n*(n+1)/2;
user-0 提问: 有没有大佬帮忙做一下这个的？

回复:
user: user-1
content: if语句： import java.util.Scanner;//导入扫描器的包  public class Salary {//主类  	public static void main(String[] args) {//主方法（main） System.out.println("请输入你的销售额(单位：元)："); Scanner scanner = new Scanner(System.in);//获取你在扫描器中输入的数据“销售额” if(scanner.hasNextDouble()) {//判断你输入的数据（销售额）是否为Double类型 	double s=scanner.nextDouble();//将数据（销售额）赋值给s 	//判断销售额区间 if(0<s&&s<200) { 	System.out.println("对不起，您没有提成"); }else if(200<=s&&s<400) { 	System.out.println("您的销售额为"+s+"元。有5%的提成共"+(0.05*s)+"元。"); }else if(400<=s&&s<1200) { 	System.out.println("您的销售额为"+s+"元。有8%的提成共"+(0.08*s)+"元。"); }else if(1200<=s&&s<2400) { 	System.out.println("您的销售额为"+s+"元。有10%的提成共"+(0.1*s)+"元。"); }else if(2400<=s&&s<4000) { 	System.out.println("您的销售额为"+s+"元。有15%的提成共"+(0.15*s)+"元。"); }else if(4000<=s) { 	System.out.println("您的销售额为"+s+"元。有18%的提成共"+(0.18*s)+"元。"); }else{//输入负数报错 	System.out.println("你输入有误，请重新输入！！！"); } }else {//输入的数据（销售额）类型不为Double 	System.out.println("你输入有误，请重新输入！！！"); } scanner.close();//关闭扫描器 	}  }   如果有疑问请私信，谢谢采纳！！！🌹🌹🌹

user: user-2
content: case 0 ... 199: 能这么用？

user: user-3
content: if..else  版：  #include <stdio.h>  int main() {     int i,s;     printf("请输入销售额:\n");     i = scanf("%d", &s);     if (i==0 || s < 0)     {         printf("非法输入！\n");         exit(1);     }      if (s < 200)         printf("销售额是%d,没有提成\n", s);     else if (s>=200 && s < 400)         printf("销售额是%d, 提成是%.2f\n",s, s*0.05);     else if (s>=400 && s<1200)         printf("销售额是%d, 提成是%.2f\n",s, s*0.08);     else if (s>=1200 && s<2400)         printf("销售额是%d, 提成是%.2f\n",s, s*0.1);     else if (s>=2400 && s<4000)         printf("销售额是%d, 提成是%.2f\n",s, s*0.15);     else if (s>=4000)         printf("销售额是%d, 提成是%.2f\n",s, s*0.18);      return 0; }   switch..case 版：  #include <stdio.h>  int main() {     int i,s;     printf("请输入销售额:\n");     i = scanf("%d", &s);     if (i==0 || s < 0)     {         printf("非法输入！\n");         exit(1);     }      switch(s)     {         case 0 ... 199:             printf("销售额是%d,没有提成\n", s);             break;         case 200 ... 399:             printf("销售额是%d, 提成是%.2f\n",s, s*0.05);             break;         case 400 ... 1199:             printf("销售额是%d, 提成是%.2f\n",s, s*0.08);             break;         case 1200 ... 2399:             printf("销售额是%d, 提成是%.2f\n",s, s*0.1);             break;         case 2400 ... 3999:             printf("销售额是%d, 提成是%.2f\n",s, s*0.15);             break;         default:             printf("销售额是%d, 提成是%.2f\n",s, s*0.18);             break;     }     return 0; }   记得结贴给分哦。
user-0 提问: 跪求

回复:
user: user-0
content: 引用 12 楼 proorck2019的回复:Tamperauters temperature  你的结贴给分数，是个好习惯，也是我们奋斗下去的动力。 其实是第一次用

user: user-1
content: Tamperauters temperature  你的结贴给分数，是个好习惯，也是我们奋斗下去的动力。

user: user-2
content: #include <stdio.h>  //Tamperatures(double A); //void Tamperatures(double A);  void Tamperauters(double A);  int main() {     double a;      printf("请输入华氏温度:");     //while(scanf("%f",&a)==1)     while(scanf("%lf", &a)==1)     {         //Tamperatures(a);         Tamperauters(a);         printf("请输入华氏温度:");     }     return  0; } //Tamperauters(double A) void Tamperauters(double A) {     const double b=1.8,c=32.0, d=273.16;     double celsius,kelvin;      celsius = b * A + c;     kelvin = celsius + 273.16;     //printf("\n%.2f转换为摄氏度为%f.\n绝对温度为%.2f.",A,celsius,kelvin);     printf("\n%.2lf转换为摄氏度为%lf.\n绝对温度为%.2lf.",A,celsius,kelvin); }  供参考～  单词拼写错误，如果容易出现错误，那么为啥要起那么长的函数名呢？  double，用%lf

user: user-0
content: 引用 8 楼 ?Victor.??的回复:[quote=引用 7 楼 qq_46506658 的回复:] [quote=引用 5 楼 ?Victor.??的回复:]Tamperauters(double A)  这是什么东西，拼写不对  还有在函数前面加上类型  void  double  都行 必须加void吗？还有我这个变量创建是不是有问题啊[/quote]  把%f  改  %lf  函数要有类型  返回值是什么，函数类型就是什么，你的函数没有返回值，void就可以  变量没什么问题[/quote] 谢谢谢谢谢谢谢谢谢

user: user-0
content: 引用 8 楼 ?Victor.??的回复:[quote=引用 7 楼 qq_46506658 的回复:] [quote=引用 5 楼 ?Victor.??的回复:]Tamperauters(double A)  这是什么东西，拼写不对  还有在函数前面加上类型  void  double  都行 必须加void吗？还有我这个变量创建是不是有问题啊[/quote]  把%f  改  %lf  函数要有类型  返回值是什么，函数类型就是什么，你的函数没有返回值，void就可以  变量没什么问题[/quote] 谢谢谢谢姨大佬，无以为报，一只刚刚学习c的小菜鸟

user: user-3
content: 引用 7 楼 qq_46506658 的回复:[quote=引用 5 楼 ?Victor.??的回复:]Tamperauters(double A)  这是什么东西，拼写不对  还有在函数前面加上类型  void  double  都行 必须加void吗？还有我这个变量创建是不是有问题啊[/quote]  把%f  改  %lf  函数要有类型  返回值是什么，函数类型就是什么，你的函数没有返回值，void就可以  变量没什么问题

user: user-0
content: 引用 5 楼 ?Victor.??的回复:Tamperauters(double A)  这是什么东西，拼写不对  还有在函数前面加上类型  void  double  都行 必须加void吗？还有我这个变量创建是不是有问题啊

user: user-4
content: 1、函数声明格式不对， 要像楼上说的那样 Tamperauters(double A)  ==》 void Tamperauters(double A) 这样才是正确的格式。 2、double 类型的  scanf("%lf", &a).    L的小写  %lf.     %f，是float类型的输入格式。

user: user-3
content: Tamperauters(double A)  这是什么东西，拼写不对  还有在函数前面加上类型  void  double  都行

user: user-0
content: 引用 3 楼 ?Victor.??的回复:能贴一下代码吗  我看到你发的图片  是横着的   #include <stdio.h> Tamperatures(double A); int main() { 	double a;  	printf("请输入华氏温度:"); 	while(scanf("%f",&a)==1) 	{ 		Tamperatures(a); 		printf("请输入华氏温度:"); 	} 	return  0;  } Tamperauters(double A)  {  	const double b=1.8,c=32.0,d=273.16;  	double celsius,kelvin;   	celsius=b*A+c; 	kelvin=celsius+273.16; 	printf("\n%.2f转换为摄氏度为%f.\n绝对温度为%.2f.",A,celsius,kelvin);   }

user: user-3
content: 能贴一下代码吗  我看到你发的图片  是横着的

user: user-0
content: 引用 1 楼 ?Victor.??的回复:https://blog.csdn.net/qq_45861670/article/details/104015023  供参考 还不是这些问题，好像反应的是我使用的外部函数的问题，但是我看不出来，你能试试帮我看看吗？很简单的一段程序

user: user-3
content: https://blog.csdn.net/qq_45861670/article/details/104015023  供参考
user-0 提问: 关于二维数组，不懂之地，前来请教？

回复:
user: user-1
content: 虽然输入12个，但是scanf_s只接收9个。其他三个应该是丢掉了。 输入一个回车，那么向内存刷过去了3个数据，循环其实还没结束，还在等待输入。

user: user-2
content: 因为循环没有结束，没输够9个数，循环不会退出，下面的语句自然不会运行。

user: user-0
content: 第一个控制台在第一行按回车后，为什么不会得出结果
user-0 提问: 求教:用什么开发点名软件？

回复:
user: user-1
content: VS2008破解版，想开发什么都行

user: user-2
content: 编程简单，难的是现在很难找到靠谱的开发环境。 我下载那个TC2有BUG，照着书写的都能出错。

user: user-3
content: web最简单

user: user-4
content: 图形用户界面（GUI）编程可以学习C++ Builder，架构先进（和C#一样拖控件），入门比较容易。  　　C++ Builder是真正的可视化的开发工具。C++ Builder可以用鼠标拖拉控件加上设置属性轻松的“设计”出一个程序的图形用户界面，利用可视的组件/控件像“搭积木”一样，以“所见即所得”的方式搭建应用程序的界面，这也是C++ Builder这个名字中Builder的概念。这样，只需要用C++语言编写业务逻辑代码，类似于DOS下文本界面编程，只要专注于实现业务逻辑功能就可以了，代码非常简洁。数据的输入和表现，都在图形用户界面，非常直观、易用。这就是RAD开发（Rapid Application Development，快速应用程序开发）。  书籍推荐： 《C++Builder 6程序设计教程（第二版）》 （陆卫忠，刘文亮　等编著 /2011-04-01 /科学出版社）（当当网） 《C++Builder 6编程实例精解》（赵明现），PDF，是数字版的，非扫描版的，里面还有一个俄罗斯方块游戏的完整实现。 《精彩C++Builder 6程序设计》（台湾 吴逸贤），里面有10几个简单小游戏的实现，可以自己看懂以后再重写，才是自己掌握的。 《C++ Builder 5高级编程实例精解》（刘滨 编著）都是较大的实用的程序。  C++ Builder书籍下载： https://pan.baidu.com/s/13n9hxwVj9ai1p5L2rQC83Q

user: user-5
content: 用你最熟悉的语言去写，都可以实现的。

user: user-6
content: 可能这不是最先考虑的吧，应该先想好软件要做什么，需要什么功能

user: user-7
content: 图方便的话不需要自己做一个软件  简单的办法：做个PPT，每页一个名字，人工翻页  想搞点仪式感，可以用js搞个网页版的

user: user-8
content: 管理员小哥哥或者小姐姐  干什么呀    我在很正经的回答问题呀  python  java  都行  实在不行用c++

user: user-9
content: Python呗，多时髦。

user: user-10
content: java
user-0 提问: c语言逻辑运算符的使用

回复:
user: user-1
content: &&：x = 0,而在在括号里和x == 1这时不成立的为假，为假以后，后面的y = 2这个语句就不执行了，因为&&只要有一个语句为假，那这个表达式为假，就不会去判断右边的语句了，所以 y还是为0

user: user-2
content: C中的逻辑运算是短路运算。所以y=2就没有执行。

user: user-3
content: https://zh.cppreference.com/w/c/language/operator_logical
user-0 提问: 求助，请问大佬们这道题怎么做

回复:
user: user-1
content: 引用 3 楼 ULiar_ 的回复:[quote=引用 1 楼 翻斗大街之王的回复:]const double PI = 3.1415; class CCircle { public: 	CCircle(double x = 0, double y = 0, double rr = 1) :cx(x), cy(y), r(rr) {} 	CCircle(const CCircle& Ctemp) 	{ 		cx = Ctemp.cx; 		cy = Ctemp.cy; 		r = Ctemp.r; 	} 	~CCircle() {} 	void SetX(double x) { cx = x; } 	void SetY(double y) { cy =y; } 	void SetR(double rr) { r = rr; } 	double GetX() { return cx; } 	double GetY() { return cy; } 	double GetR() { return r; } 	double getArea() { return r * r * PI; } 	double getPerimetre() { return 2 *PI * r ; } private: 	double cx; 	double cy; 	double r; };  大佬，这个用java怎么做[/quote] 我才学c++，，，，java不会

user: user-0
content: 引用 1 楼 翻斗大街之王的回复:const double PI = 3.1415; class CCircle { public: 	CCircle(double x = 0, double y = 0, double rr = 1) :cx(x), cy(y), r(rr) {} 	CCircle(const CCircle& Ctemp) 	{ 		cx = Ctemp.cx; 		cy = Ctemp.cy; 		r = Ctemp.r; 	} 	~CCircle() {} 	void SetX(double x) { cx = x; } 	void SetY(double y) { cy =y; } 	void SetR(double rr) { r = rr; } 	double GetX() { return cx; } 	double GetY() { return cy; } 	double GetR() { return r; } 	double getArea() { return r * r * PI; } 	double getPerimetre() { return 2 *PI * r ; } private: 	double cx; 	double cy; 	double r; };  大佬，这个用java怎么做

user: user-0
content: 谢谢你，大佬，真的老师不讲，说很简单，明明都不会啊，谢谢你

user: user-1
content: const double PI = 3.1415; class CCircle { public: 	CCircle(double x = 0, double y = 0, double rr = 1) :cx(x), cy(y), r(rr) {} 	CCircle(const CCircle& Ctemp) 	{ 		cx = Ctemp.cx; 		cy = Ctemp.cy; 		r = Ctemp.r; 	} 	~CCircle() {} 	void SetX(double x) { cx = x; } 	void SetY(double y) { cy =y; } 	void SetR(double rr) { r = rr; } 	double GetX() { return cx; } 	double GetY() { return cy; } 	double GetR() { return r; } 	double getArea() { return r * r * PI; } 	double getPerimetre() { return 2 *PI * r ; } private: 	double cx; 	double cy; 	double r; };
user-0 提问: 初始化单链表并插入元素运行出错

回复:
user: user-1
content: 怎么这种错总是老有人犯，函数内部改变参数指针的指向不影响函数外部的实参的指向 initlist(LinkList *L) 也就是在这里 L=malloc 申请的内存，跟main 的L1， L2一点毛关系都没有 要么就用引用 initlist(LinkList* &L)，main的L1，L2改成指针 LinkList *L1, *L2; intilist(L); 其它不变 要么就用双指针 initlist(LinkList& **L) main的L1，L2也要改成指针，initlist里要用 *L=malloc

user: user-0
content: 报错是在Display函数里面printf后面。读取访问权限冲突
user-0 提问: c语言指针相关问题

回复:
user: user-1
content: 那你想一想 p+1是不是等于&a[1]， (p+1)-p=? 是不是等于1？ p=a[0] p++等于p=p+1，那么p-a[0]是多少？是不是就是1  指针类型计算系统已经自动转换字节大小了，所以你不用考虑，否则每种指针类型不一样，还要自己去记住每种类型的大小，然后移动字节大小，那不是太麻烦了吗？所以这部分编译器就帮你做了，指针+1就是指针移动一个单元，这个单元占几个字节，编译器帮你算。

user: user-0
content: 引用 1 楼 user-1的回复:那你想一想 p+1是不是等于&a[1]， (p+1)-p=? 是不是等于1？ p=a[0] p++等于p=p+1，那么p-a[0]是多少？是不是就是1  指针类型计算系统已经自动转换字节大小了，所以你不用考虑，否则每种指针类型不一样，还要自己去记住每种类型的大小，然后移动字节大小，那不是太麻烦了吗？所以这部分编译器就帮你做了，指针+1就是指针移动一个单元，这个单元占几个字节，编译器帮你算。 哦~原来是编译系统自动做好的，懂了，谢谢大佬哈哈
user-0 提问: 关于函数调用，主函数值不变——普通变量做函数的参数，当函数调用时，从实参单向的值传递到形参，函数体内完成形参的转换，并不改变实参的值。

回复:
user: user-0
content: 引用 1 楼 自信男孩 的回复:楼主，你传过去的是数组，数组名是数组的首地址，可以理解为指针常量。因此，指针不算是普通变量，所有的参数传递都是值传递，但是传数组名传的是地址值。  因为传递过去的是地址值，实际上是实参的地址值，因此自定义函数里对数组的操作，实际上修改的是实参。 ”数组名是数组的首地址，可以理解为指针常量。“ 等于说和用指针传递的方法是一样的对吧。明白啦，谢谢！

user: user-1
content: 楼主，你传过去的是数组，数组名是数组的首地址，可以理解为指针常量。因此，指针不算是普通变量，所有的参数传递都是值传递，但是传数组名传的是地址值。  因为传递过去的是地址值，实际上是实参的地址值，因此自定义函数里对数组的操作，实际上修改的是实参。
user-0 提问: C语言

回复:
user: user-1
content: 我也不知道，为什么%c也要指明宽度。 SDL好像是原先允许的一些内容，新版本的vs认为是不安全的了，即使关掉也可能会以警告出现。  在你真正开始编程的时候，会有大量的你第一次见到的函数，这不但需要你看文档，还得猜都是干什么的。 现在看都不知道哪儿对哪儿，坚持下去就会清晰起来。

user: user-2
content: 引用 4 楼 獐弓子 的回复:[quote=引用 2 楼 m0_46108109的回复:]scanf_s%c也要指明大小 scanf需要加#define _CRT_SECURE_NO_WARNINGS 或者在工程属性里把sdl检查关了 望细讲，不懂[/quote] 指点就是人家说了你理一下思路 scanf_s这个函数原型为什么安全，就是他指定了要读取的长度，你没有给这个参数。还要怎么细讲。

user: user-0
content: 引用 2 楼 m0_46108109的回复:scanf_s%c也要指明大小 scanf需要加#define _CRT_SECURE_NO_WARNINGS 或者在工程属性里把sdl检查关了 望细讲，不懂😂😂

user: user-0
content: 引用 1 楼 user-3的回复:参数不够，查一下需要什么参数 望细讲🌝，不懂😂

user: user-1
content: scanf_s%c也要指明大小 scanf需要加#define _CRT_SECURE_NO_WARNINGS 或者在工程属性里把sdl检查关了

user: user-3
content: 参数不够，查一下需要什么参数
user-0 提问: 代码分析

回复:
user: user-0
content: 引用 3 楼 黑化肥会发挥的回复:这应该是一个递归 分支方法解决问题的算法，不过你这给的代码藏头藏尾也不知道要用递归解决什么 哈哈没事，解决了

user: user-1
content: 这应该是一个递归 分支方法解决问题的算法，不过你这给的代码藏头藏尾也不知道要用递归解决什么

user: user-0
content: 引用 1 楼 user-2的回复:在哪里得到的代码？ 网上搜的……

user: user-2
content: 在哪里得到的代码？
user-0 提问: C语言基础性题目

回复:
user: user-1
content: scanf ( "％d  ％d" , a, b); a，b两个变量没有加&符号

user: user-2
content: 应该为scanf （" ％d  ％d" , &a, &b）;

user: user-2
content: 相对标准的代码 include <stdio.h>   int  main() {       int  a, b;       int  sum;       scanf ( "％d  ％d" , a, b);       sum ＝ a ＋ b;       printf (" sum  is  ％d"  , sum);       return  0; }

user: user-3
content: 第五行，scanf("%d%d",a,b); ab前面少加了&， &a,&b

user: user-4
content: scanf   &a &b
user-0 提问: 复数相加结果好像溢出了

回复:
user: user-1
content: 原来的输入方法 scanf("%d%d",&x.re,&x.im);// 遇到1+2i的输入时候，x被正确输入了，但是缓冲区里面还留下了字母i scanf("%d%d",&y.re,&y.im);//  这里因为第一个字母是i，所以这个y两个参数都没有正确获得 所以，后面的add的时候，y的值是未初始化的随机数， 结果就是你截图的那个德行了

user: user-0
content: 引用 4 楼 寻开心的回复:scanf("%d%di",&x.re,&x.im); scanf("%d%di",&y.re,&y.im); 这样更好，输入 1-2i   10+8i 都可以了 可以了哇 谢谢你啊

user: user-1
content: scanf("%d%di",&x.re,&x.im); scanf("%d%di",&y.re,&y.im); 这样更好，输入 1-2i   10+8i 都可以了

user: user-1
content: 你要想输入1+2i这种形式，就要 struct complex x,y,s; scanf("%d+%di",&x.re,&x.im); scanf("%d+%di",&y.re,&y.im);

user: user-1
content: 是你输入错了， 要输入： 1 2 1 2 结果就是2 + 4i了

user: user-0
content: #include<stdio.h> struct complex { 	int re; 	int im; }; void add(struct complex a,struct complex b,struct complex *c) { 	c->re=a.re+b.re; 	c->im=a.im+b.im; } int main() { 	struct complex x,y,s; 	scanf("%d%d",&x.re,&x.im); 	scanf("%d%d",&y.re,&y.im); 	add(x,y,&s); 	printf("sum=%5d+%5di",s.re,s.im); } 程序是这个 上面有点打错了
user-0 提问: 这个代码信息要怎么输入啊！！

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:scanf("%d",&students[i].name); 这句改成   scanf("%s", students[i].name);   因为name是字符数组， 不是整数 嗯嗯，知道了

user: user-1
content: scanf("%d",&students[i].name); 这句改成   scanf("%s", students[i].name);   因为name是字符数组， 不是整数
user-0 提问: 位运算这样用为什么出问题了

回复:
user: user-1
content: 可以 if ((a[i] ^ a[i + 1]) & 1) {...}

user: user-0
content: 引用 2 楼 寻开心 的回复：因为==的优先级要高于&位运算符，所以先执行的是==判断  仔细看看书上都运算符优先级  自己写代码不确定的时候多加几个括号谢谢

user: user-2
content: 因为==的优先级要高于&位运算符，所以先执行的是==判断  仔细看看书上都运算符优先级  自己写代码不确定的时候多加几个括号

user: user-0
content: 换成%2==0就对了
user-0 提问: 我找不到这个段错误了

回复:
user: user-1
content: 编译时加上-g，在gdb里run下，出现段错误看一下trace就知道在哪了。另外c99是支持使用变量定义数组的

user: user-0
content: 我知道了，其中i,j,有混淆的

user: user-2
content: #include <stdio.h> #include <stdlib.h>  int main() {     int chang1;     scanf("%d",&chang1);     //int a[chang1];     int *a = (int *)malloc(sizeof(int) *chang1);     for(int i=0;i<chang1;i++)     {         scanf("%d",&a[i]);     }     printf("dgdfsg");     int n;     scanf("%d",&n);     //int b[n];     int *b = (int *)malloc(sizeof(int)* n);     if (!b)         exit(0);      for(int i=0;i<n;i++){         scanf("%d",&b[i]);     }     int c[20];     int count =0;     int i,j;      for( i=0;i<chang1;i++)     {         int flag=1;         for( j=0;i<n;j++)         {             if(a[i]==b[j])flag=0;         }         if(flag)c[count++]=a[i];     }      for( i=0;i<n;i++)     {   int flag=1;         //for( j=0;i<chang1;j++)   //怎么变成i呢         for( j=0;j<chang1;j++)         {             if(b[i]==a[j])flag=0;         }         if(flag)c[count++]=b[i];     }     printf("%d",c[0]);      for(int i=1;i<count;i++)     {int flag=1;         for(int j=0;j<i;j++)         {             if(c[i]==c[j])flag=0;         }          if(flag)printf(" %d",c[i]);      }  } 供参考～  试一下这个程序～  变长数组C语言不支持，只支持固定长度的数组。因此要用动态申请空间，另外，建议加上free

user: user-3
content: 这个动态数组能这样用吗？int a[chang1]; int b[n];

user: user-0
content: 其中第10行是我测试用的
user-0 提问: 请问C语言可以做什么电路

回复:
user: user-1
content: 好像电路用的汇编吧，会给你一个开发手册，里面有如何如何编写控制的说明。 看过一点plc的视频，好像连语言都不是，就是拖动模块，组成电路，然后烧录就行了。 C应该是用于写驱动的。

user: user-0
content: 引用 1 楼 proorck2019的回复:C语言不适合作电路。 我也觉得ಠ︵ಠ

user: user-0
content: 引用 2 楼 寻开心的回复:verilog， vhdl什么的写控制程序吧 c可以用来做接口程序，但是电路里面的控制程序是自己的语言 好的，谢谢啦

user: user-0
content: 引用 5 楼 m0_46108109的回复:好像电路用的汇编吧，会给你一个开发手册，里面有如何如何编写控制的说明。 看过一点plc的视频，好像连语言都不是，就是拖动模块，组成电路，然后烧录就行了。 C应该是用于写驱动的。 没听说过电路用汇编写呢，没有头绪

user: user-2
content: verilog， vhdl什么的写控制程序吧 c可以用来做接口程序，但是电路里面的控制程序是自己的语言

user: user-3
content: C语言不适合作电路。
user-0 提问: 题目

回复:
user: user-1
content: 第二个题是可以这样的：      scanf("%d%c%d", &a, &op, &b);  你可以直接输入 1+2， 1-2， 1*2， 1/2 这样的内容的

user: user-2
content: ①手机上不能结贴给分数 ②作业还是需要自己做的

user: user-3
content: scanf("%d %d", &a, &b); scanf("%c", &c); 取值，得到后判断就好了

user: user-0
content: 引用 1 楼 @大愚@ 的回复：你可以用switch语句，进行选择我们要用C语言

user: user-4
content: 你可以用switch语句，进行选择
user-0 提问: 萌新请教，关于c语言的问题。

回复:
user: user-1
content: 引用 5 楼 qwe931482801的回复:[quote=引用 4 楼 proorck2019的回复:]复习一下布尔逻辑： a and b = not((not a) or (not b))  结贴给分数是个好习惯， 也是我们这群人奋斗下去的动力。 怎么结帖，大佬[/quote] 去电脑上，有结贴按钮。 手机上不能。

user: user-0
content: 引用 4 楼 proorck2019的回复:复习一下布尔逻辑： a and b = not((not a) or (not b))  结贴给分数是个好习惯， 也是我们这群人奋斗下去的动力。 怎么结帖，大佬

user: user-1
content: 复习一下布尔逻辑： a and b = not((not a) or (not b))  结贴给分数是个好习惯， 也是我们这群人奋斗下去的动力。

user: user-0
content: strcmp（）返回值，当比较的两个字符串相同时返回0，不同时返回1/—1。 如果换成||将会无限循环，如果换成i==0||o==0效果和我写的一样都是不考虑账号对不对。 当i==0&&o==0将会无限循环。 谢谢你的回答，我还是换个算法吧，我理不通了。

user: user-2
content: 数组越界了，字符数组初始化为"";那么这个数组长度是1.即'\0'。 所以账户和密码可以存放的字节数是1。  另外，注意下数组名就是地址，因此输入时去掉&

user: user-3
content: 逻辑错误。 当密码和用户名同时不对，才显示错误，又因为&&比较前一项为假时，就不比较后一项了。所以当密码对了，就显示成功了。 将&&换成||，或修改成i==0&&0==0
user-0 提问: c语言问题求助

回复:
user: user-0
content: 引用 1 楼 proorck2019的回复:enum可以看作一系列#define xxday 1，把标识符转换成数字处理，所以显示的是数字。  结贴给分数是个好习惯， 也是我们奋斗下去的动力。 噢噢噢听懂了！谢谢你！！♡

user: user-1
content: enum可以看作一系列#define xxday 1，把标识符转换成数字处理，所以显示的是数字。  结贴给分数是个好习惯， 也是我们奋斗下去的动力。
user-0 提问: 小白求教

回复:
user: user-1
content: 估计是楼主直接打开的一个cpp文件，然后想直接编译这个cpp，没有把这个文件归属到任何工程里面呢 新建一个空的控制台应用 然后把它添加进去，或者是替换工程自动生成的cpp文件里面的内容吧

user: user-2
content: 你打开工程文件，提示你转换的。

user: user-3
content: 肯定不是源代码的问题，不用贴代码。

user: user-4
content: 工程文件可能不一样了 你还不如在vc2010新建一个工程文件，然后把cpp文件拷贝到新的工程文件去试试
user-0 提问: 哪位大佬能告诉我这个哪里错了吗？

回复:
user: user-0
content: 我去，我太蠢了，犯这种低级错误

user: user-1
content: j=0 改成 j==0， 比较用==，其余的1和2也是同样的问题

user: user-2
content: if（j=0) 改为 if(j==0)

user: user-0
content: 大佬们，求助啊
user-0 提问: 萌新求问关于函数声明

回复:
user: user-1
content: 函数声明，如果没有参数，建议用void，不写也是可以的，但是还是建议写void；  D选项很明显是函数定义而非声明。声明的函数是没有大括号，并且有分号。

user: user-0
content: 引用 1 楼 qybao的回复:明显是D啊，D是函数实现，有函数体了({}的内容，即使是空的函数体，也是有函数体了)。 函数不一定有参数，所以它的原型的参数就是空或者void，所以A没毛病 好的谢谢谢谢！

user: user-2
content: 明显是D啊，D是函数实现，有函数体了({}的内容，即使是空的函数体，也是有函数体了)。 函数不一定有参数，所以它的原型的参数就是空或者void，所以A没毛病

user: user-3
content: 原型是指声明，没有{} 有了{}就是定义了。

user: user-4
content: D无返回值,所以出错。
user-0 提问: 请问怎么输出一段字符串电脑运算最快，可以用源代码

回复:
user: user-1
content: void main(){ char a[100]; scanf("%s",a); printf("%s",a); }

user: user-2
content: 应该是puts快，直接输出一个字符串，而printf要逐字符扫描一遍format串

user: user-0
content: 引用 50 楼 liups的回复:楼上很多人的观点不对！ 1、比如说写显存，其实楼主的问题根本不是显示，只是输出，结合OJ来看，根本没有显示，只是一个输出重定向，所以没显存什么事，这个办法行不通！ 2、汇编，大家知道C语言通常称为中级语言，但不是标准的低级语言，所以这里不能用汇编，原因有2：一个是OJ什么硬件不清楚，所以汇编不可能，二是OJ本身就针对C语言，可能不让用，另外问题非常简单，考虑到编译器有优化，可能汇编在这真没有优势，真要快可能考虑一下编译器的优化更有效，但是OJ如何编译是服务器端的事，属于不控的，所以也不用考虑汇编了。  另，有人说puts比printf快，这二者哪个快我真心没研究，但是需要考虑真实的环境，希望精通此方面的高手出来分析一下 嗯嗯，我也一直没有碰到精通此方面的博主

user: user-3
content: 楼上很多人的观点不对！ 1、比如说写显存，其实楼主的问题根本不是显示，只是输出，结合OJ来看，根本没有显示，只是一个输出重定向，所以没显存什么事，这个办法行不通！ 2、汇编，大家知道C语言通常称为中级语言，但不是标准的低级语言，所以这里不能用汇编，原因有2：一个是OJ什么硬件不清楚，所以汇编不可能，二是OJ本身就针对C语言，可能不让用，另外问题非常简单，考虑到编译器有优化，可能汇编在这真没有优势，真要快可能考虑一下编译器的优化更有效，但是OJ如何编译是服务器端的事，属于不控的，所以也不用考虑汇编了。  另，有人说puts比printf快，这二者哪个快我真心没研究，但是需要考虑真实的环境，希望精通此方面的高手出来分析一下

user: user-4
content: 为什么非要细究这种毫无意义的问题呢？和很多因素有关，其中最关键的是和操作系统的设计原理有关。

user: user-3
content: 看来基本清楚了，情况是这样的： OJ中一个最入门的题目：输出hello,word! 然后楼主看其同学（都是初学者）运行速度比他快，就想反超同学。  这就是一个初学者因为不懂（特别是不懂OJ）产生的想法，这种事情不值得做，因为是这种简单的问题，快的同学并不能代表其代码本身就快。而因为楼主描述不清楚，大家都浪费了很多表情。

user: user-5
content: printf

user: user-6
content: 汇编最快，，，。。。。。。

user: user-0
content: 引用 43 楼 m0_46108109的回复: #include <stdio.h> int main() {     return puts("Hello World"); }  楼主，试试这样快吗？ 试了，不行，谢谢

user: user-0
content: 引用 41 楼 liups的回复:看来基本清楚了，情况是这样的： OJ中一个最入门的题目：输出hello,word! 然后楼主看其同学（都是初学者）运行速度比他快，就想反超同学。  这就是一个初学者因为不懂（特别是不懂OJ）产生的想法，这种事情不值得做，因为是这种简单的问题，快的同学并不能代表其代码本身就快。而因为楼主描述不清楚，大家都浪费了很多表情。 嗯嗯，谢谢指导

user: user-7
content: #include <stdio.h> int main() {     return puts("Hello World"); }  楼主，试试这样快吗？

user: user-8
content: printf最快

user: user-9
content: 很好奇 你的代码是什么  和别人的差距是多大  为什么会觉得是printf的问题

user: user-10
content: 引用 6 楼 SINGFORME 的回复:[quote=引用 3 楼 GKatHere的回复:]当然是c的printf最快 printf不够快，我试过了，别人的速度比printf更快，在oj上使用C语言[/quote] 这个要看你在那里用了，printf是不够快的，直接写内容到输出对应的内存是最快的。

user: user-0
content: 引用 3 楼 GKatHere的回复:当然是c的printf最快 printf不够快，我试过了，别人的速度比printf更快，在oj上使用C语言

user: user-0
content: 引用 2 楼 真相重于对错的回复:输出字符串最快的话，莫如直接写显存 请问有代码吗，使用C语言

user: user-0
content: 在oj上使用C语言

user: user-0
content: 谢谢各位，了解了

user: user-3
content: 引用 35 楼 SINGFORME 的回复:[quote=引用 32 楼 lin5161678的回复:]也许别人是攻击了 oj  而不是代码真的比你快 以前还有 时间为负数的 成绩 别想太多了  就puts 完事 我在打擂台[/quote] 不会是你们几个同学自己想出来的打擂吧？！ 正如本人前面说的和36楼说的，OJ不适合这种速度的打擂，这没有意义，前面的人很可能只是运气好，放弃吧！

user: user-2
content: oj的代码运行时间影响的因素很多，同一代码提交几次的运行时间都未必一样。当年上学的时候玩poj也要争个第一，但是poj的rank是按代码量、运行时间、内存占用来排的，运行时间只占第二位
user-0 提问: 求答

回复:
user: user-1
content: #include<stdio.h> int main() { 	int a,b,c; 	int m,n; 	printf("输入三位数:\n"); 	scanf("%d",&m); 	a=m/100; 	b=(m-a*100)/10; 	c=m-100*a-10*b; 	n=c*100+b*10+a; 	printf("%d",n); 	return 0; } 这是最low版本，建议找一下高级一点的学习一下

user: user-2
content: 引用 3 楼 weixin_46532909 的回复:[quote=引用 1 楼 與蘤舊縐的回复:]一看就是还热乎着的作业  这题总得自己试一下吧 我试了好多次都是错误的[/quote]  楼上给出了最简单的思路  你也可以用字符数组存取各位数字，反向输出，也可以递归

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:一看就是还热乎着的作业  这题总得自己试一下吧 我试了好多次都是错误的

user: user-3
content: 最简单的办法就是取余数，除数，相加就可以了，自己实现。

user: user-2
content: 一看就是还热乎着的作业  这题总得自己试一下吧
user-0 提问: 链表

回复:
user: user-1
content: typedef struct _stuList 	{ 		_stuList* pNext; 		int nNode; 	}stuList;  	int nArray = 0; 	while(nArray <= 0) 	{ 		printf("请输入将要输入的组数：\n"); 		scanf("%d", &nArray); 	}  	int *arrayM = (int*)malloc(sizeof(int)*nArray); 	int *arrayX = (int*)malloc(sizeof(int)*nArray); 	for(int i=0; i<nArray; i++) 	{ 		scanf("%d %d", &arrayM[i], &arrayX[i]); 	}  	stuList *pHead = (stuList*)malloc(sizeof(stuList)); 	pHead->pNext = NULL; 	pHead->nNode = -1;  	stuList *pData = NULL; 	stuList *pPoint = NULL;  	for (int i=0; i<nArray; i++) 	{ 		pData= (stuList*)malloc(sizeof(stuList)); 		pData->pNext = NULL; 		pData->nNode = arrayX[i];  		int nMi = arrayM[i]; 		pPoint = pHead; 		while(pPoint->pNext != NULL && nMi>0) 		{ 			--nMi; 			pPoint = pPoint->pNext; 		}  		pData->pNext = pPoint->pNext; 		pPoint->pNext = pData; 	}  	pData = pHead->pNext; 	while(pData != NULL) 	{ 		printf("%d ", pData->nNode); 		pData = pData->pNext; 	} 	printf("\n");   	while(pHead != NULL) 	{ 		pData = pHead; 		pHead = pHead->pNext; 		free(pData); 	} 	free(arrayM); 	free(arrayX);
user-0 提问: 单链表编程题求助

回复:
user: user-0
content: 解决了 main函数里面没有给palist 分类空间。还有其他一些细节错误

user: user-1
content: #include<stdio.h> #include<stdlib.h>  struct Node; typedef struct Node *PNode; struct Node {     int info;     PNode link; };  typedef struct Node *LinkList;  typedef LinkList *PLinkList;  void createlink(PLinkList pclist, int n)  //建立单链表 并赋初值 {     PNode p, q;     int i;     p = (PNode)malloc(sizeof(struct Node));     if (!p)         exit(0);     *pclist = p;     p->info = 1;     q = (PNode)malloc(sizeof(struct Node));     if (!q)         exit(0);     q->info = 2;     p->link = q;     p = q;     for (i = 3; i <= n; i++)     {         q = (PNode)malloc(sizeof(struct Node));         p->link = q;         q->info = i;         p = q;     }     p->link = NULL;     return; }  void deletei_link(PLinkList pclist, int num) {     PNode p, pre = NULL;     p = *pclist;     int count = 1;     pre = *pclist;     while (count != num && p->link != NULL)     {         pre = p;         p = p->link;         count++;     }     if (count != num) {         printf("Can't find it !\n");         return;     }     if (p == *pclist) {         *pclist = (*pclist)->link;         free(p);         return;     }     pre->link =p->link;     free(p);      return; }  int main() {     int n; int num;     scanf_s("%d", &n);     //scanf("%d", &n);     LinkList pclist = NULL;     createlink(&pclist, n);     scanf_s("%d", &num);     //scanf("%d", &num);     deletei_link(&pclist, num);     PNode w;     w = pclist;     while (w != NULL)     {         printf("%d", w->info);         w = w->link;     } }  供参考～  楼主的代码没有考虑到删除第一个节点以及count != num时，即没有符合要删除的情况～
user-0 提问: 求解

回复:
user: user-1
content: 建议你重新发帖，图片都是歪的，难道我要歪着脖子看？

user: user-2
content: 第一个语句的Bsearch是个函数，执行结果保存到m里了。 第二个语句是：当m比0大或者是等于0 的时候，执行if语句。