Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 关于昨天CCF软件认证上的ACS|| Art的题目

回复:
user: user-0
content: #include <stdio.h> #define MAX 100  char graph[MAX][MAX]; char c; int weigh, heigh; int visited[MAX][MAX];  void fill(int x,int y) {     if (x < weigh && y < heigh && x >= 0 && y >= 0 && graph[y][x] != '+' && graph[y][x] != '|' && graph[y][x] != '-' && visited[y][x])     {         visited[y][x] = 0;         graph[y][x] = c;         fill(x+1,y);         fill(x-1,y);         fill(x,y+1);         fill(x,y-1);     } }  int main() {     int count, choice;     int x1, y1, x2, y2;     int x, y;     int i, j;     scanf("%d %d %d", &weigh, &heigh, &count);     for (i = 0; i < heigh; i++)         for (j = 0; j < weigh; j++)         {             graph[i][j] = '.';             visited[i][j] = 1;         }     while (count--)     {         scanf("%d", &choice);         switch (choice)         {             case 0:                 scanf("%d %d %d %d", &x1, &y1, &x2, &y2);                 if (y1 == y2)                 {                     if (graph[y1][x1] == '|')                         graph[y1][x1] = '+';                     else                         graph[y1][x1] = '-';                     if (graph[y2][x2] == '|')                         graph[y2][x2] = '+';                     else                         graph[y2][x2] = '-';                     while ((++x1) != x2)                         graph[y1][x1] = '-';                 }                 else if (x1 == x2)                 {                     if (graph[y1][x1] == '-')                         graph[y1][x1] = '+';                     else                         graph[y1][x1] = '|';                     if (graph[y2][x2] == '-')                         graph[y2][x2] = '+';                     else                         graph[y2][x2] = '|';                     while ((++y1) != y2)                         graph[y1][x1] = '|';                 }                 break;             case 1:                 scanf("%d %d %c", &x, &y, &c);                 fill(x,y);                 break;         }     }     for (i = 0; i < heigh; i++)         for (j = 0; j < weigh; j++)         {             if (j == weigh-1)                 printf("%c\n", graph[i][j]);             else                 printf("%c", graph[i][j]);         }     return 0; }   CSDN保佑 一发上来就自己解决了 加了个visited[MAX][MAX]标志数组就好了
user-0 提问: 使用O_DIRECT打开文件后，对该文件的写操作可以批量发送吗

回复:
user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:你可以使用多进程并发。 我来试试，谢谢你

user: user-1
content: 你可以使用多进程并发。

user: user-1
content: 在文件大小相同的前提下：  读刚读过的文件比头次读没读过的文件快  读转速快的硬盘上的文件比读转速慢的硬盘上的文件快  读没有磁盘碎片的文件比读有磁盘碎片的文件快  读文件不处理比边读边处理快  单线程从头到尾一次读文件比多线程分别读文件各部分快（非固态硬盘上）  读固态硬盘上的文件比读普通硬盘上的文件快  写文件类似。

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:一个执行完再发送下一个,我猜。 那么如果我想用O_DIRECT来绕过缓冲区，同时希望请求可以批量发送,有这样的方式吗？求指教啊

user: user-1
content: 一个执行完再发送下一个,我猜。
user-0 提问: java的语言改用成c语言的形式，output改一下就行了。用c语言怎么改？

回复:
user: user-0
content: 这个循环还是没有看懂，是怎么依次输出它的最后的4个想x【31】【30】【29】【28】

user: user-1
content: #include <stdio.h> #include <stdint.h>   #define BSWAP_32(x) ( 	((uint32_t)(x)  << 24) | \ 						(((uint32_t)(x) <<  8) & 0x00ff0000) | \ 						(((uint32_t)(x) >>  8) & 0x0000ff00) | \ 						((uint32_t)(x)  >> 24) )  void SMS4Crypt(...) {     int j;     ...         for(j = 0; j < 4; ++j)     {         *(uint32_t *)&Output[j * 4] = BSWAP_32(x[3 - j]);      } }

user: user-2
content: byte型右移24位,16位,8位没意义了吧
user-0 提问: C语言可以指定多个不同类型的可变参数吗?比如这次是int..然后下个是float,再是char这种方式?

回复:
user: user-1
content: 头文件：#include <stdarg.h> type va_arg(va_list argptr, type);   void va_end( va_list argptr);   void va_start( va_list argptr, last_parm); typedef char * va_list;

user: user-2
content: 可以，不过需要你自己用某种方法确定实际类型

user: user-3
content: C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\output.c

user: user-3
content: 引用 6 楼 yyxgs 的回复:[quote=引用 2 楼 zhao4zhong1 的回复:] 参考printf函数的实现：crt\src\output.c    VS2015下是哪个文件呀？[/quote] 全盘搜索output.c 如果找不到，安装Visual C++ 2010 Express简体中文版http://pan.baidu.com/s/1bnwRVLt

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:参考printf函数的实现：crt\src\output.c    VS2015下是哪个文件呀？

user: user-4
content: 参考stdarg.h头文件

user: user-3
content: 参考printf函数的实现：crt\src\output.c

user: user-5
content: 不支持, 用c++模板或者auto
user-0 提问: 大神们对这道题有什么见解，下生想学习学习,超级感谢！

回复:
user: user-1
content: 引用 3 楼 fly_dragon_fly 的回复:用Bresenham画线算法即可 说的对

user: user-2
content: 用Bresenham画线算法即可

user: user-3
content: 线段(X1,Y1)-(X2,Y2)上的点(X,Y)满足： X=X1*t+(X2-X1)*(1-t) Y=Y1*t+(Y2-Y1)*(1-t) 其中t=0～1

user: user-4
content: 用二维数组(初始化为0)模拟整个屏幕，对在两点间的数组元素赋值1，最后循环二维数组并输出星号或空格
user-0 提问: 有个问题，一直很好奇黑客是怎么把木马程序文件部署用户电脑上的？

回复:
user: user-1
content: 肯定是用户自己下载的啊，躲杀软还不好说，直接引导用户将此软件标记为信任，或者引导用户关闭或者卸载杀软不就好了。

user: user-2
content: 钓鱼网站是不需要认证也不需要方在用户电脑上的， DNS劫持也不需要

user: user-2
content: 方在→放在
user-0 提问: 相容类型的相容如何理解

回复:
user: user-1
content: 在我眼里，任何类型都是相容类型！  电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
user-0 提问: 精度问题

回复:
user: user-1
content: 浮点数格式 http://bbs.csdn.net/topics/390676437

user: user-2
content: 浮点数在内存中有误差，很多十进制小数在二进制里就没办法精确表示（比如0.1） 十进制下的：70459.43的二进制下表示出来就是70459.429999999993.... 所以比较浮点数是否相等，应该比较两数差的绝对值是否足够小
user-0 提问: 简单C语言

回复:
user: user-1
content: #include<stdio.h> int main() {     int n,a,b,c;     printf("请输入两个整数（逗号隔开）:");     scanf("%d,%d",&a,&b);     n=b;     c=a%b;     while(c!=0)     {         a=b;         b=c;         c=a%b;     }     printf("\n最大公约数是:%d\n",b);     return 0; }

user: user-2
content: 欧几里德辗转相除法
user-0 提问: 这段代码为什么在输入书名时会一直显示书名已重复

回复:
user: user-1
content: 关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-2
content: 哈哈    楼上真细心

user: user-3
content: if(p->next!=NULL&&strcmp(p->next->bookname,book->bookname)==0); <---有分号！

user: user-4
content: 不知道，都没在你代码里看到有“书名已重复”这几个字，你只上一半代码怎么知道
user-0 提问: 怎么将输入A,B执行程序变成输入1，2执行程序

回复:
user: user-1
content: 修改 一下就行，就像1楼那样

user: user-2
content: #include<stdio.h> int main() { 	void action1(int,int); 	void action2(int,int); 	char ch; 	int a=8,b=9; 	int A,B; 	printf("请输入你想要执行的功能:\n1:执行加法\n2:执行减法"); 	printf("\n"); 	ch=getchar(); 	switch(ch) 	{ 	case '1':action1(a,b);break; 	case '2':action2(a,b);break; 	default:printf("no answer"); 	} } void action1(int x,int y) { 	printf("%d",x+y); } void action2(int x,int y) { 	printf("%d",x-y); }
user-0 提问: 求问c语言关于顺序读写数据文件的作业

回复:
user: user-1
content: 说下我的思路，打开原始文档文档，新建一个写文档。逐个读取原始文档数据并统计个数，遇到是数字的就写入到新文档。

user: user-2
content: 读写方式各打开一个文件

user: user-2
content: 这个过程，不是很好分析么 读写方式个打开一个文件 读入数据，统计单词，保存到另一个文件中
user-0 提问: 怎么获得其他进程的PE文件信息

回复:
user: user-1
content: 这完全就是开玩笑嘛，得到目标进程的PE结构如果不读取的话，想在不注入的情况下，要用PEB模块。

user: user-2
content: MSDN98中的例子walker又名pwalk。 完整列出指定进程的内存使用情况，显示进程地址空间内容，装载哪些DLL，代码、数据、堆栈段分配在何处，可以用来检测内存泄漏，监测内存使用。http://download.csdn.net/detail/zhao4zhong1/3667896
user-0 提问: 递归生成二进制反射格雷码的伪代码看不懂啊

回复:
user: user-1
content: “给定一个小点的输入，完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门！ 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出

user: user-0
content: 引用 3 楼 user-2 的回复:1) C++语法表示为 List BRGC(int n){ List L1,L2; if(n==1)   return L={0,1}; L1 = BRGC(n-1); L2 =Rev(L1); L1=0+L1; L2=1+L2; return L=L1+L2; }； 引用 3 楼 user-2 的回复:1) C++语法表示为 List BRGC(int n){ List L1,L2; if(n==1)   return L={0,1}; L1 = BRGC(n-1); L2 =Rev(L1); L1=0+L1; L2=1+L2; return L=L1+L2; }； 太感谢了，一点就通。。

user: user-2
content: 1) C++语法表示为 List BRGC(int n){ List L1,L2; if(n==1)   return L={0,1}; L1 = BRGC(n-1); L2 =Rev(L1); L1=0+L1; L2=1+L2; return L=L1+L2; }；

user: user-2
content: 这个算法是这样的 BRGC(1) -->L =0，1直接得出 计算 BRGC(2) 先计算 BRGC(1) 得到L1，L1翻转得到L2 L1 =0，1   L2=1，0 L1的每个码前面加上0，L2的每个码，前面加上1 合并得到 L BRGC(2) -->L  = 00，01，11，10 计算 BRGC(3) 先计算 BRGC(1) 得到L1，L1翻转得到L2 L1= 00，01，11，10 L2=10，11，01，00 L1的每个码前面加上0，L2的每个码，前面加上1 合并得到 L BRGC(3) -->L=000，001，011，010， 110，111，101，100 .................................

user: user-2
user-0 提问: 树的应用

回复:
user: user-1
content: http://download.csdn.net/detail/hansong1989/4277774  网上的

user: user-2
content: 树 http://blog.csdn.net/zhangxiangdavaid/article/details/36189717

user: user-0
content: 求代码! 谢谢大神们了

user: user-3
content: 从实现看二叉树，和树 都是二叉链表，或者三叉链表结构（多了一个指向父节点的指针）

user: user-3
content: 从实现上说，树的实现中，结构方面，根本和二叉树的实现没有区别， 只有算法 有区别， 二叉树改造成树 很简单 反之则不容易，二叉树是有特定顺序的， 树则没有这个必要，树只需要维持父节点和子节点之间的关系即可。 从一棵树，生成一个二叉树，必须明确，如何生成，因为二叉树，每个节点，只有两个子树，肯定不能保持树的原有结构  而 二叉树转换成树则是可以的 不过节点的作用必须变换一下，节点的位置也要变一下；  二叉树                                     树                                                                       root                           root ---------->    brother  (NULL)             lchild,rchild                       children----->brother ------->brother, lchild,rchild, lchild,rchild           children-->...  children-->..   children->brother .... ................................................................................................  二叉树转换成树，左子转换成 根  root 的子树即children节点，右子树转换成左子的brother节点 如此反复，即可  反之树转换成二叉树，必须另外制定规则，原来的父子节点关系，难以保持  树的前序后序遍历，递归算的跟二叉树略有，但差别不大，可以根据二叉树的算法改出来 非递归，可以通过修改递归算法实现。 层序遍历，主要是保存上一层的所有节点 和二叉树的算法，也是差别不大
user-0 提问: VS2015支持复合文字吗，如何查看它支持的C99特性

回复:
user: user-0
content: 引用 7 楼 user-1 的回复:[quote=引用 5 楼 gblhack 的回复:] [quote=引用 2 楼 user-1 的回复:] int total = 0; 麻烦老师回复最后一个问题  如何查看VS2015支持C99哪些特性，有相应的文档吗[/quote]  可以去 msdn 上翻翻。那里不写的话，大概就只能自己试了 ...[/quote] 这样啊，我以为VS会对这个专门说明呢，既然没有就算了。十分感谢您的回答！

user: user-1
content: 引用 5 楼 gblhack 的回复:[quote=引用 2 楼 user-1 的回复:] int total = 0; 麻烦老师回复最后一个问题  如何查看VS2015支持C99哪些特性，有相应的文档吗[/quote]  可以去 msdn 上翻翻。那里不写的话，大概就只能自己试了 ...

user: user-0
content: 引用 4 楼 user-1 的回复:VS2015 貌似支持了。源文件扩展名需要为 .c 。 确实是，谢谢老师。

user: user-0
content: 引用 2 楼 user-1 的回复:int total = 0; 麻烦老师回复最后一个问题  如何查看VS2015支持C99哪些特性，有相应的文档吗

user: user-1
content: 引用 3 楼 gblhack 的回复:[quote=引用 2 楼 user-1 的回复:] int total = 0;  你的 total 没有初始化。 编译错误信息其实说得还是比较清楚的。 我刚才发现了，打算编辑呢，您回复了 ____________________________ 晕死，没仔细看错误，以为是使用了未声明的变量，原来是未初始化的，安全检查的问题，大家忽略这个错误吧。另外VS确实不支持复合文字，大家就说一下如何查看它支持C99哪些特性。[/quote]  VS2015 貌似支持了。源文件扩展名需要为 .c 。

user: user-0
content: 引用 2 楼 user-1 的回复:int total = 0;  你的 total 没有初始化。 编译错误信息其实说得还是比较清楚的。 我刚才发现了，打算编辑呢，您回复了 ____________________________ 晕死，没仔细看错误，以为是使用了未声明的变量，原来是未初始化的，安全检查的问题，大家忽略这个错误吧。另外VS确实不支持复合文字，大家就说一下如何查看它支持C99哪些特性。

user: user-1
content: int total = 0;  你的 total 没有初始化。 编译错误信息其实说得还是比较清楚的。

user: user-0
content: 我更改了代码，声明了一个int数组，并且把参数改为了一个int指针，但还是报同样的错误。 这似乎不是支持复合文字与否的问题，请帮分析一下什么原因。 #include <stdio.h> int sum(int *p, int i) { 	int total; 	for (int j = 0; j < i; j++) 		total += p[j]; 	return total; } int main(void) { 	int age[2] = {21,26}; 	printf("%d", sum(age, 2)); 	return 0; }
user-0 提问: 编写文件同步求助

回复:
user: user-1
content: 引用 2 楼 xysds 的回复:[quote=引用 1 楼 zhao4zhong1 的回复:] 搜“robocopy”  我是想编写，不是用现成的呢。[/quote] 为什么不自己编写DNA，而要用现成的受精卵呢？

user: user-2
content: 不建议自己发明轮子，libuv有封装好的功能 http://nikhilm.github.io/uvbook/filesystem.html#file-change-events

user: user-2
content: linux: inotify bsd: kqueue windows: iocp  都有相应的文件系统watcher

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:搜“robocopy”  我是想编写，不是用现成的呢。

user: user-1
content: 搜“robocopy”
user-0 提问: C语言简单程序问题

回复:
user: user-1
content: 请检查scanf的返回值。

user: user-0
content: 问题已解决，数据输入时的格式没按scanf中定义的格式输入

user: user-0
content: 谢谢大家给出解答！

user: user-2
content: scanf("%d,%d",&a,&b); <---- 两数中间你输入逗号了吗

user: user-3
content: 程序没问题，怀疑你输入时输入的不对，两个数中间有个英文的逗号

user: user-4
content: 应该是你输入格式的问题，如果两个数之间间隔的是空格，那么b应该是个垃圾值，你输入 8,9试试

user: user-5
content: scanf("%d,%d",&a,&b); <---- 两数中间你输入逗号了吗

user: user-6
content: scanf之后，先打印a，b 看是否a， b在调用max之前正确接收了
user-0 提问: 求解

回复:
user: user-1
content: 看下是否定义过两个'menu1

user: user-2
content: 你应该贴出menu.h的内容。 你也可以参看我以前提的问题： http://bbs.csdn.net/topics/391873682

user: user-2
content: @user-3 你可以查看我以前的问题http://bbs.csdn.net/topics/391873682

user: user-3
content: 我也有这个问题。。

user: user-1
content: 源文件不需要include

user: user-0
content: #include <stdio.h> #include <stdlib.h> #include <string.h> #include "menu.h" #include "user.h" #include "manage.h" #include "station.h" #include "road.h" 不要那个
user-0 提问: 二叉树和普通双分支树的区别是什么?

回复:
user: user-1
content: 树的范围涵盖了二叉树的范围，二叉树是树的其中一种；  二叉树高效、好用； 普通树通过一些特殊处理，可以转化为二叉树的求解问题

user: user-2
content: 因为数据结构中，二叉树，树 可以看成两种数据结构吧 其实看成一种也没错，不过没啥实在意义 二叉树用树来实现，效率太低下了 而且二叉树有许多树不具有的独特性质  当然，本质上，二叉树就是一种树。

user: user-0
content: 引用 1 楼 user-2 的回复:数据结构（类型）的实现方式， 和 现实世界，以及数学里面的数据类型是两回事  为什么教材上面说，二叉树不是树的特殊情形?

user: user-2
content: 数据结构（类型）的实现方式， 和 现实世界，以及数学里面的数据类型是两回事
user-0 提问: 初学C语言向各位大大求教

回复:
user: user-0
content: 还是不太懂，有什么好的算法呢

user: user-1
content: 叉乘的符号

user: user-2
content: 直接判断点的横坐标大小就行了，你的算法太繁琐

user: user-3
content: 这应该只是一个叉乘的问题, 两个点相同没有顺逆之分吧 如果给的三个点分别为A, B,C, 令vb=B-A, vc=C-B , vb cross vc 结果, 大于0即右手系z+, 逆时针
user-0 提问: 新手，求解

回复:
user: user-1
content: 求范围一般是建议先用筛法得到素数 const int MP=1e6; bool vis[MP]; void sieve() {     for(int i=2,ie=sqrt(MP+0.5);i<=ie;i++)if(!vis[i]){         for(long long j=(long long)i*i;j<=MP;j+=i) vis[j]=1;     } } int rev(int n,int r=0){     return n ? rev(n/10,r*10+n%10) : r; } int count(int m,int n){     int ans=0;     for(int i=m;i<=n;i++){          if(!vis[i]&&!vis[rev[i]]) ++ans;     }     return ans; }

user: user-2
content: 纠正一个错误，刚才没有做详细的测试 第45行    for (int i = 2; i < number; i++)  i应该初始为2，否则4也会被判断为素数 @thefirstz 希望版主能给更改一下，谢谢。

user: user-2
content: 虽然论坛不鼓励帮别人做作业，但由于一直是在论坛问问题，偶尔见一个自己能回答的，就试一下！也是复习自己刚学过知识。 程序加了一些简单的注释，你最好看一下实现的方法，然后自己清晰了之后再自己写一遍。 最后声明一下，我也是新手，有不足之处望指点。 //求m,n之间的绝对素数(包括m,n) #include <stdio.h> int prime(int number); //判断一个数是否为素数，1为真0为假 int num_back(int number); //取一个数的反数 void fun(int m, int n); //输出两个数之间的绝对素数 int main(void) { 	//没有做输入确认 	int m,n; 	scanf("%d",&m); 	getchar();//接受两数的间隔符 	scanf("%d",  &n); 	fun(m, n); 	return 0; } void fun(int m, int n) //输出两个数之间的绝对素数 { 	while (m <= n) 	{ 		if (prime(m))//判断是否为素数 			if (prime(num_back(m)))//取反后再判断是否为素数 				printf("%d\n", m);//都成立即为绝对素数，输出 		m++; 	}  } int num_back(int number) //取一个数的反数 { 	int a = 0, b = 0; 	while (number) 	{ 		a = number % 10;//取number的最后一位 		b = b * 10 + a;  //增加权重 		number = number / 10; //去掉number的最后一位 	} 	return b; } int prime(int number) //判断一个数是否为素数，1为真0为假 { 	int bool_i = 0; 	if (number < 2) //小于2返回假 		return 0; 	else if (number == 2)  //等于2直接返回真 		return 1; 	for (int i = 3; i < number; i++) // 		if ((number%i) == 0) //如果能被3到number之间的数整除就返回假 		{ 			bool_i = 0; 			break;  		} 		else 			bool_i = 1; 	return bool_i; }
user-0 提问: 这个栈最小应该多大?

回复:
user: user-1
content: 第一个序列为初始序列  a，b，c，d，e，f  下面进行第一轮入栈出栈操作 操作             栈状态                      出栈序列 开始             栈空                             a 入栈          栈内  a b 入栈          栈内   b,a c入栈           栈内   c,b,a  c 出栈          栈内   b,a                  c  d入栈           栈内   d,b,a                c d出栈           栈内   b,a                  c,d b出栈           栈内    a                     c,d,b e入栈           栈内    e,a                c,d,b e出栈           栈内   a                   c,d,b,e a出栈           栈内   a                   c,d,b,e,a f入栈            栈内    f                    f出栈            栈空                        c,d,b,e,a,f 结束第一轮入栈出栈 于是生成第二个序列： c,d,b,e,a,f, 再次 入栈出栈  就可以生成第三个序列了 d,b,c,a,e,f 操作终止

user: user-0
content: 引用 6 楼 lm_whales 的回复: 你说的"第一轮全部出栈后，得到第二个序列c,d,b,e,a,f,"是什么含义? 没有看懂。

user: user-1
content: 1楼告诉你，如果仅仅是一次入栈出栈，那是不可能的 但是我们可以多来几次，谁说 栈只能用一次啊 又不是一次性输液管  题目的意思是入栈次序不可变，但是出栈只是可以出入交替，可以连续两次出栈。 原始序列是a，b，c，d，e，f  第一轮全部出栈后，得到第二个序列c,d,b,e,a,f, 可以第二轮入栈出栈，此时可以得到第三个序列d,b,c,a,e,f 实际上只进行了两轮，第三轮还没开始呢

user: user-1
content: 做一个栈 测试一下就可以了 枚举所有可能性吧  1楼的方法应该是可行的，因为不允许3次出栈，但允许两次连续出栈。

user: user-2
content: 我也觉得不可能, d后面要么是c,要么是e

user: user-0
content: 引用 4 楼 lm_whales 的回复:做一个栈 测试一下就可以了 枚举所有可能性吧  1楼的方法应该是可行的，因为不允许3次出栈，但允许两次连续出栈。  是啊，我也觉得d后面要么是c要么是e 怎么可能是b呢?  没有看懂1L的解

user: user-0
content: 谢谢，你说的第一轮，第二轮，等等，是什么含义呢，不太懂。 从第一轮如何得到第二轮的c,d,b,e,a,f?  谢谢。

user: user-3
content: 可以啊，总共执行三轮即可，第一轮是a,b,c,d,e,f,第二轮是c,d,b,e,a,f,第三轮即可到达d,b,c,a,e,f，并且满足题中所给条件
user-0 提问: 求大神帮忙修改一下下，不知道哪里出错。期末作业。谢谢

回复:
user: user-1
content: void main() { 	struct worker *head=NULL; 	int n = 10;//在下一行函数调用的时候，要传递实参，所以此处要赋值，不能只是定义。 	select(n,head); }  暂时发现这一个错误，没有继续单步跟踪，楼主可以单步跟下。

user: user-0
content: 好像不是，问了下，是float money那里没有先赋值为0，导致数据输不进去

user: user-0
content: 谢谢 好人一生平安
user-0 提问: 编译时没问题，Build的时候出现这个错误

回复:
user: user-1
content: 某个文件中应有 struct SSedu g_stud[100];

user: user-1
content: 引用 2 楼 qq_32874397 的回复:[quote=引用 1 楼 user-1 的回复:] 某个文件中应有 struct SSedu g_stud[100];只要在一个CPP里声明就行了吗[/quote]只要一个，只能有一个

user: user-0
content: 引用 1 楼 user-1 的回复:某个文件中应有 struct SSedu g_stud[100];只要在一个CPP里声明就行了吗
user-0 提问: 【在线等】c语言课程设计程序死机，

回复:
user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-2
content: 楼主的代码中void input(struct student *&p)函数中的pt（结构体指针）没有分配内存，就赋值，就会报错； 楼主可以单步跟下，看在哪一步出现程序崩溃，再修改。

user: user-3
content: 引用 4 楼 qq_31829139的回复:引用 1楼user-4 的回复:我猜想：p = (struct student *)malloc(sizeof(LEN));  这句楼主要表达的意思是 p = (struct student *)malloc(LEN);改过，还是不能，死机中 main函数第二行你用关键字int写了一个函数

user: user-0
content: 引用 1楼user-4 的回复:我猜想：p = (struct student *)malloc(sizeof(LEN));  这句楼主要表达的意思是 p = (struct student *)malloc(LEN);改过，还是不能，死机中

user: user-4
content: 引用 2 楼 qq_33317084 的回复:[quote=引用 1 楼 user-4的回复:]我猜想：p = (struct student *)malloc(sizeof(LEN));  这句楼主要表达的意思是 p = (struct student *)malloc(LEN); #define 也就是宏定义那里能用下面定义的结构体？[/quote]  不懂你在说什么

user: user-3
content: 引用 1 楼 user-4的回复:我猜想：p = (struct student *)malloc(sizeof(LEN));  这句楼主要表达的意思是 p = (struct student *)malloc(LEN); #define 也就是宏定义那里能用下面定义的结构体？

user: user-4
content: 我猜想：p = (struct student *)malloc(sizeof(LEN));  这句楼主要表达的意思是 p = (struct student *)malloc(LEN);
user-0 提问: C 语言里面 " ... " 是什么意思,请大神帮忙解释一下.

回复:
user: user-1
content: https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Designated-Inits.html#Designated-Inits  引用To initialize a range of elements to the same value, write ‘[first ... last] = value’. This is a GNU extension. For example,       int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

user: user-0
content: 引用 2 楼 hy09070422 的回复:是范围的意思吗 从代码来看是指定范围,但我想知道 " ... " 的意义及用法

user: user-2
content: 是范围的意思吗

user: user-0
content: 代码中 " ... "  是什么意思??   #define NODE_MASK_ALL							\ ((nodemask_t) { {							\ 	[0 ... BITS_TO_LONGS(MAX_NUMNODES)-2] = ~0UL,			\ 	[BITS_TO_LONGS(MAX_NUMNODES)-1] = NODE_MASK_LAST_WORD		\ } })
user-0 提问: 怎么编译器都能对就是oj不对呢，求大神帮忙看看错误

回复:
user: user-1
content: 你只需要定义 a,b,x,y 四个int 类型，考虑到 32位这个问题，定义成 unsinged 可以最大限度的利用32位 另外定义一个 循环变量 比如i 每次取到1组 a,b ，初始化x，y 为 0   i 取 a,到 b之间的每一个值，i为偶数，x 加上 i*i 为奇数 y加上 i*i*i------- 这里 if  else 足矣，不必用两个 if----- 如此累加到循环结束，输出x,y这两个值即可  多余代码全部删除。  遇到，题目里面有变量名的，直接使用，不必另外定义。这样更简单。

user: user-0
content: 那我应该怎么改啊 到底是哪里错了我感觉对啊，就算是把32换成其他数字也不对，到底应该改哪里

user: user-1
content: 你这完全理解错了32位的意思了，a,b之间完全可以多于32个数据 例如 a=1,b=100  100^3 *100 也不过 100^4 也就是1亿 所以，题目认为 32Bits 整数足够用了
user-0 提问: 写文件问题

回复:
user: user-1
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-0
content: 好像不对啊还是这样

user: user-2
content: fp = fopen("road.txt","w");   w      Truncate file to zero length or create text  file  for  writing.               The stream is positioned at the beginning of the file. 将 w 改为 a+
user-0 提问: 求C语言编码，救急

回复:
user: user-0
content: 可是程序要运行呢，允许一直都错

user: user-1
content: 思路不都有了，网上找下弗洛伊德算法算法，应该不少，而且弗洛伊德算法其实挺简单的。
user-0 提问: 关于Opencv的imshow无法正常显示的问题（曾经看到别人说是越界问题，但是不知道怎么解决）

回复:
user: user-1
content: 请问你们最后解决这个问题了吗，我试着把waitKey（0）的参数改了，确实没有报错了，但是这样图片就会自动退出了，这个问题的本质解决方案是什么呀

user: user-2
content: 我也遇到你这样的问题，然后在imshow语句前加一个waitKey（30）等待就可以了。

user: user-3
content: 先检查g_srcImage1数据是否有加载成功

user: user-4
content: 你的问题解决了吗，我也遇到这样的问题了

user: user-5
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-0
content: 我的图像也没有那么大，其实以前都是显示出来过的 但是，这个程序一直跑得就是有问题，不知道为什么

user: user-6
content: 1，首先看你的opencv配置是否正确，其实就相当于看看程序中是否有哪个函数被红线标出 2，检查一下图像读取时后缀是否正确，并限制一下输入图像的大小 3，如果还不对，调试一下程序看看哪里有问题
user-0 提问: 写一个rtrim()函数，消除字符串后面的空格字符

回复:
user: user-1
content: void rtrim(char * str) { 	while(*str++); 	--str; 	while(*--str == ' '); 	++str; 	*str = '\0'; }  int main() {  	char str[100] = "12345     "; 	rtrim(str); 	//此时str为12345 	re

user: user-1
content: void rtrim(char * str) { 	while(*str++); 	--str; 	while(*--str == ' '); 	++str; 	*str = '\0'; }  int main() {  	char str[100] = "12345     "; 	rtrim(str); 	//此时str为12345 	return 0; }

user: user-0
content: 就是在字符串后面打一堆空格，要用rtrim函数消除掉空格

user: user-2
content: 输入格式是什么啊，一个char*吗？ 有没有长度n啊 ？空格只出现在最后面吗？

user: user-0
content: 厉害，多谢

user: user-1
content: 引用 7 楼 qq_33341459 的回复: 字符串要自己输入，然后按回车运行的呀。 这样只是消除了最后的回车吧  void rtrim(char * str) { 	while(*str++); 	--str; 	while(1) 	{ 		char ch; 		ch = *--str; 		if(ch != ' ' && ch != '\r' && ch != '\n' && ch != '\t') 			break; 	} 	++str; 	*str = '\0'; }   这样把字符串结尾的空格 \r \n \t都清除

user: user-3
content: 字符串有单字节字符串、多字节字符串和宽字符串。前两种里的空格都是' '，后一种是L' ' 没说清是哪一种，叫我们怎么搞。

user: user-0
content: 字符串要自己输入，然后按回车运行的呀。 这样只是消除了最后的回车吧

user: user-1
content: 引用 5 楼 qq_33341459 的回复: 这应该怎么改？  猜测你接收到的最后不是空格，而是'\n'字符

user: user-0
content: 这应该怎么改？
user-0 提问: 为什么这个简单的函数实现不了，实在是想不通

回复:
user: user-0
content: 引用 2 楼 paschen 的回复:你swap函数的参数是按值传递到函数内的，也就是说函数内操作的是复制后的一个副本，并不是你真正的参数 需要修改需要把指针传进去，交换指针指向的值 谢谢，知道怎么弄了，分你们两楼一人一半吧

user: user-1
content: 你swap函数的参数是按值传递到函数内的，也就是说函数内操作的是复制后的一个副本，并不是你真正的参数 需要修改需要把指针传进去，交换指针指向的值

user: user-2
content: 查询： 值传递和地址传递的不同。  你这是值传递，x，y实际值不会交换。
user-0 提问: 写文件有问题 求解

回复:
user: user-1
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-0
content: 求解啊 大神们

user: user-0
content: main 函数  #include <stdio.h> #include <stdlib.h> #include "road.h" /* run this program using the console pauser or add your own getch, system("pause") or input loop */ void read(struct road* ); int main() { 	struct road* r = NULL; 	r = road_init(); 	road_information(r); 	  	read(r);      	road_lookup(r); 	//road_count(r); 	 	return 0; } void read(struct road* r) { 	int i; 	struct road_node* p; 	FILE* fpp; 	fpp = fopen("road.txt","r"); 	if(fpp == NULL){ 		printf("文件打开失败\n"); 		return ; 	} 	p=r->head; 	 	for(i=0; i<init_road; i++){ 		fscanf(fpp,"%s %s\r\n",p->Name,p->ID); 		road_add(r,p->Name,p->ID); 		p = p->next; 	} 	fclose(fpp); }

user: user-2
content: Main函数呢，没有入口啊

user: user-0
content: 标签写了 谢谢

user: user-3
content: 有什么问题你倒是直说，不要含蓄害羞，难道让我们直接看完一段代码来猜你说的问题?
user-0 提问: 请问vs2015环境下，使用gets函数报错，一定要用gets_s函数，怎么办？

回复:
user: user-1
content: 引用 8 楼 xusongge 的回复:#define _CRT_SECURE_NO_WARNINGS加了这句声明是没有用的VS2015照样告警。  还是使用gets_s来代替吧。  gets_s(s,sizeof(s));这样用也挺好的O(∩_∩)O

user: user-2
content: #define _CRT_SECURE_NO_WARNINGS

user: user-2
content: 在程序前面加上这句话就行了 [code=c][/#define _CRT_SECURE_NO_WARNINGScode]

user: user-3
content: 可以参看这里： https://msdn.microsoft.com/zh-cn/library/2029ea5f(v=vs.140).aspx

user: user-3
content: 引用 3 楼 yyxgs 的回复:[quote=引用 1 楼 paschen 的回复:] 因为这个函数是不安全，只是建议用get_s来代替 如果仍想用可以选择以下任何一种方法： 1、新建项目时不要勾选安全开发生命周期检查 2、在项目属性C/C++命令行中加上 /D _CRT_SECURE_NO_WARNINGS   加了，还是没用[/quote]  应该是这个函数在新标准里已经被弃用了，或者可以使用fgets来代替

user: user-0
content: 引用 1 楼 paschen 的回复:因为这个函数是不安全，只是建议用get_s来代替 如果仍想用可以选择以下任何一种方法： 1、新建项目时不要勾选安全开发生命周期检查 2、在项目属性C/C++命令行中加上 /D _CRT_SECURE_NO_WARNINGS   加了，还是没用

user: user-0
content: 引用 2 楼 user-4 的回复:项目→属性→配置属性→C/C++→常规→SDL检查→否 (/sdl-) 然后就可以用gets了。   还是不行

user: user-4
content: 项目→属性→配置属性→C/C++→常规→SDL检查→否 (/sdl-) 然后就可以用gets了。

user: user-3
content: 因为这个函数是不安全，只是建议用get_s来代替 如果仍想用可以选择以下任何一种方法： 1、新建项目时不要勾选安全开发生命周期检查 2、在项目属性C/C++命令行中加上 /D _CRT_SECURE_NO_WARNINGS
user-0 提问: VC++6.0 布尔运算运行不了

回复:
user: user-1
content: 同意楼上，vc6你就别想用bool类型了，要不你就用dev c

user: user-2
content: c语言里面没有bool类型，c99新增了个_Bool类型(vc6.0不支持c99)，头文件stdbool.h里面有bool类型的宏定义，实在不行你这样写 typedef enum {false，true} bool;

user: user-3
content: 什么叫运算不了，程序没问题 你指的是需要怎么输入，程序结果和你预期的不同吗？把问题说明白一点
user-0 提问: 弱弱问一下，真能做到单机并发100万个TCP连接吗？

回复:
user: user-1
content: 好奇的搜了一下 http://www.cnblogs.com/mydomain/archive/2013/05/27/3100835.html

user: user-2
content: 搜“连接 五元组”
user-0 提问: 菜鸟求助，关于将十进制数转成二进制的问题，这段书上的代码我很难理解

回复:
user: user-1
content: 引用 10 楼 xusongge的回复:引用 9 楼 u011133403 的回复:[quote=引用 6 楼 xusongge的回复:][quote=引用 3 楼 u011133403 的回复:] n >>= 1 这个操作其实和 除2 是一个意思。但是n是十进制数十进制数往右移不是除以10？？ 你认为是十进制，在计算机中都是二进制，所以所说的右移都是在二进制上说的。[/quote]照这样说，那用递归除2取余的方法计算二进制，，比如计算3的二进制，计算机已经将3存储为011，那011除2是多少？余数是多少？难道计算机除2相当于把011右移一位，变成01，余数就是移出来的1？[/quote] 楼主不要这么纠结，楼主的代码就是把计算机中整型在计算机中是怎么存储的。比如3在计算机中就是 00000000 00000000 00000000 00000011  。

user: user-1
content: 引用 6 楼 xusongge的回复:引用 3 楼 u011133403 的回复:n >>= 1 这个操作其实和 除2 是一个意思。但是n是十进制数十进制数往右移不是除以10？？ 你认为是十进制，在计算机中都是二进制，所以所说的右移都是在二进制上说的。

user: user-0
content: 引用 9 楼 u011133403 的回复:引用 6 楼 xusongge的回复:[quote=引用 3 楼 u011133403 的回复:] n >>= 1 这个操作其实和 除2 是一个意思。但是n是十进制数十进制数往右移不是除以10？？ 你认为是十进制，在计算机中都是二进制，所以所说的右移都是在二进制上说的。[/quote]照这样说，那用递归除2取余的方法计算二进制，，比如计算3的二进制，计算机已经将3存储为011，那011除2是多少？余数是多少？难道计算机除2相当于把011右移一位，变成01，余数就是移出来的1？

user: user-2
content: 按位与&和右移>>都是二进制运算。

user: user-0
content: 引用 4 楼 u011133403 的回复:ps[i] = (01 & n) + '0'; 和 ps[i] = (1 & n) + '0';一样的。就是用当前n的最后一位与1&，来判定该位是否为1，然后加上字符0的ACSII码，转换成字符。存储在字符数组中。最后一起打印出来。那比如n=34，分别用4和3与1&，那这结果是啥？

user: user-0
content: 引用 2 楼 u011133403 的回复:C语言程序开发 - 范例宝典？C Primer 普拉斯

user: user-0
content: 引用 3 楼 u011133403 的回复:n >>= 1 这个操作其实和 除2 是一个意思。但是n是十进制数十进制数往右移不是除以10？？

user: user-1
content: ps[i] = (01 & n) + '0'; 和 ps[i] = (1 & n) + '0';一样的。就是用当前n的最后一位与1&，来判定该位是否为1，然后加上字符0的ACSII码，转换成字符。存储在字符数组中。最后一起打印出来。

user: user-1
content: n >>= 1 这个操作其实和 除2 是一个意思。

user: user-1
content: C语言程序开发 - 范例宝典？

user: user-2
content: 和1与 等价于 除2取余
user-0 提问: 求助，C语言输入一个字符串，然后删除某个字符，再输出字符串

回复:
user: user-1
content: 引用 9 楼 _郭的回复:[quote=引用 8 楼 qq_30864029 的回复:] [quote=引用 3 楼 _郭的回复:]我发现3个问题。。 1. 我忘记复制最后的“}” 了 2. 我看到你的名字叫永恒郭。。 3. 我大概看了下你的代码,for循环的逻辑表达式 a[i]和a[j]你想要的是什么效果，最后要删除的字符你为什么用/0，如果这个字符在字符串中间，那后面的字符串不要了吗，如果你一定要修改的话，可以改为0，然后输出的时候判断是否为0就可以了。 1，这个没关系。2，把名字和姓倒过来就是我名字了。3，我在第一个循环的最后加上等于’\0’是因为如果要删除的特殊字符串出现在最后，我的那个内部的循环去不掉这几个字符。如:abcds!!!，这样的话，我的内部循环就只能计算出！的个数而去除不掉！，这就需要最后的那个＝’\0’来把第一个！改成\0，让字符串就此结束。。。。谢谢你的回答[/quote] 昨天之前我显示的名字也是和你一样倒着写的。我觉得你把这个程序复杂化了，而且我觉得自己写的每一句代码都要清楚它存在的意义，不然可能就会出现自己的代码自己看不懂的情况。我也是初学者，共同学习！[/quote] 嗯，和七楼说的一样，外边那个循环跟本就用不到，浪费了。

user: user-2
content: 自己写的自己都看不懂。。。你还是先找一下这个问题的原因吧，在我学习的这段时间还没有出现过自己写的代码自己看不懂的情况。。

user: user-3
content: 外层for如用于顺序读字符串内容，内层for用于计数并删除相同的字符。外层for没什么用，这种重复纯属浪费，在a[j-count]='\0';后添加i=j-count;或break;终止for循环跳出； char *StrDelCh(char *s,char c) {   char *p=s,*q=s;   for(;*p;p++)     if(*p != c )       q==p ? q++ : *q++ = *p;   *q = '\0';   return s; }

user: user-1
content: 引用 3 楼 _郭的回复:我发现3个问题。。 1. 我忘记复制最后的“}” 了 2. 我看到你的名字叫永恒郭。。 3. 我大概看了下你的代码,for循环的逻辑表达式 a[i]和a[j]你想要的是什么效果，最后要删除的字符你为什么用/0，如果这个字符在字符串中间，那后面的字符串不要了吗，如果你一定要修改的话，可以改为0，然后输出的时候判断是否为0就可以了。 1，这个没关系。2，把名字和姓倒过来就是我名字了。3，我在第一个循环的最后加上等于’\0’是因为如果要删除的特殊字符串出现在最后，我的那个内部的循环去不掉这几个字符。如:abcds!!!，这样的话，我的内部循环就只能计算出！的个数而去除不掉！，这就需要最后的那个＝’\0’来把第一个！改成\0，让字符串就此结束。。。。谢谢你的回答

user: user-1
content: 引用 1 楼 _郭的回复:自己写的自己都看不懂。。。你还是先找一下这个问题的原因吧，在我学习的这段时间还没有出现过自己写的代码自己看不懂的情况。。 看的时候漏了一个条件，现在看懂了

user: user-1
content: 引用 4 楼 user-4的回复:你的代码就是从后往前拷了, 只是奇怪自己写的怎么看不懂 看的时候漏了一个条件，现在看懂了。

user: user-4
content: 你的代码就是从后往前拷了, 只是奇怪自己写的怎么看不懂

user: user-2
content: 引用 8 楼 qq_30864029 的回复:[quote=引用 3 楼 _郭的回复:]我发现3个问题。。 1. 我忘记复制最后的“}” 了 2. 我看到你的名字叫永恒郭。。 3. 我大概看了下你的代码,for循环的逻辑表达式 a[i]和a[j]你想要的是什么效果，最后要删除的字符你为什么用/0，如果这个字符在字符串中间，那后面的字符串不要了吗，如果你一定要修改的话，可以改为0，然后输出的时候判断是否为0就可以了。 1，这个没关系。2，把名字和姓倒过来就是我名字了。3，我在第一个循环的最后加上等于’\0’是因为如果要删除的特殊字符串出现在最后，我的那个内部的循环去不掉这几个字符。如:abcds!!!，这样的话，我的内部循环就只能计算出！的个数而去除不掉！，这就需要最后的那个＝’\0’来把第一个！改成\0，让字符串就此结束。。。。谢谢你的回答[/quote] 昨天之前我显示的名字也是和你一样倒着写的。我觉得你把这个程序复杂化了，而且我觉得自己写的每一句代码都要清楚它存在的意义，不然可能就会出现自己的代码自己看不懂的情况。我也是初学者，共同学习！

user: user-2
content: 我发现3个问题。。 1. 我忘记复制最后的“}” 了 2. 我看到你的名字叫永恒郭。。 3. 我大概看了下你的代码,for循环的逻辑表达式 a[i]和a[j]你想要的是什么效果，最后要删除的字符你为什么用/0，如果这个字符在字符串中间，那后面的字符串不要了吗，如果你一定要修改的话，可以改为0，然后输出的时候判断是否为0就可以了。

user: user-2
content: 我改了一下你的一下代码，但我没有对字符串进行删除，只是在输出的时候增加了一个筛选 #include <stdio.h> #include <windows.h> int main() { 	char a[100] = {0}; 	char ch = 0; 	scanf("%s",a); 	fflush(stdin); //清空缓冲区 	printf("请输入要删除的字符:"); 	scanf(" %c", &ch); 	for (int i = 0; i < 100; i++) 	{ 		 		if (a[i] != ch && a[i] != 0) 			putchar(a[i]); 	} 	system("pause"); 	return 0;
user-0 提问: 来帮菜鸟找找错吧！

回复:
user: user-0
content: 不知道为什么代码发上来空格就没了。。。请各位大神凑活着看吧

user: user-1
content: pop是函数, 都没有加上()

user: user-2
content: 程序可以直接嵌入进来，格式什么的就没问题了。你的程序里边is_empty()用错了，其它错误也有，自己看看函数怎么用的吧

user: user-3
content: 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。
user-0 提问: 代码优化求助

回复:
user: user-0
content: 运行更慢了，计算一个方程都需要比较长的时间...

user: user-1
content: 去掉所有sqrt

user: user-2
content: 提供一点思路试试看,令a.b,c,d代表上面4个数 1) 构造 a^2+b^2的一个表sum, 排序供以后查找( 按平方和, b,a为顺序) 2) 循环d,c, sqrt(m/4)<=d<=sqrt(m), m/2>=d*d ? sqrt(m/2-d*d) : 0<=c<=d,剩下值(m-c*c-d*c)在sum表二分查找, 判断b是否<=即可

user: user-0
content: 若改为 int num = 0, imax = sqrt(re / 4), jmax = sqrt(re / 3), kmax = sqrt(re / 2); 即在循环体外计算sqrt，程序的确更快了，但仍然达不到1.0 s的要求，总感觉是不是要换一种算法才行，但又不知道该怎么做?
user-0 提问: c中的malloc

回复:
user: user-1
content: 你只是申请了一个5字节内存（内容未知）,streln 是根据字符末尾'\o'来判断长度的！

user: user-2
content: 不知道字符串结束符'\0'的位置？

user: user-3
content: 首先你要弄清楚stelen的功能，它是如何实现的

user: user-4
content: 其实这个9也是随机的，不一定都是9.也有可能很大很大。所以最好malloc后可以用memset 去进行初始化。

user: user-5
content: strlen的含义;搂住要先弄清.

user: user-6
content: 原因你字符串p还没有初始化 strlen是根据字符串最后的\0判断长度的，所以得到的结果是不确定的，你不知道什么时候会遇到0 另外，动态分配的内存返回的是指针，你可以把分配的内存作为数组用，但他不是数组类型，没办法获得其大小了， 如果需要知道分配了多大，需要自己保存分配时的值
user-0 提问: 关于积分的编程，为什么我的代码不行；

回复:
user: user-0
content: void main（） { short  temp =0,templast=0,voff=0; int Compare =0,OUT=0,b1=0; float Total=0.0; while(1) { if(temp>0x0000) {  if(Total<Compare/1.0&&b1==0&&temp>templast)    {             Total+=((temp+Total)/600000;//求积分值              OUT = 1;    }  if(Total>=Compare/1.0&&b1==0)    {      OUT = 1;     voff=temp;    //记住此刻的采样值     b1=1;         }   if(tempAD<=voff&&b1==1)  //当这个采样值再次来临时；    {      OUT = 0;      Total=0.0;      voff=0;      b1=0;          }    templast=temp; //将这一次循环的采样值记住，便于与下次循环比较 } else {OUT = 1;} } } 楼上的程序不完整

user: user-0
content: 我发现问题了，其实我上传的程序还是没有足够完整的，COPY的不完整，不过我发现问题不是出在代码上了。 还是硬件的问题，不是写的代码有问题，不过在上面发的代码确实有问题。

user: user-1
content: 2楼说的很好。

user: user-2
content: 程序写的有问题啊，除了不完整之外，语法错误也很明显，自己调试着看看吧

user: user-3
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。
user-0 提问: 关于底层函数封装的问题

回复:
user: user-1
content: 可以简化程序，同时使用致的接口，把尽可能的实现细节葳起来，公开相对容易的接口 有些封装封装的浅，有些封装的深，当然封装后可能会略有开销，不过可以使开发更容易

user: user-2
content: 另外，很多函数功能太多，用起来太复杂，需要很多时间去学习怎么使用。 而封装后，只针对特定功能，一看就懂， 不需要花费很多时间去学习使用那些复杂的库函数（API）了

user: user-2
content: 猜的不错，大概就是这样  另外一个好处是，简化接口 没封装前，可能功能很杂乱 封装后，不需要的功能，可以不支持 只封装需要的功能。代码可控。
user-0 提问: 编译不报错 但是运行没有结果

回复:
user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-2
content: #2楼正解，这一类问题，楼主可以单步调试发现问题，很简单。你的循环语句走不出来。

user: user-3
content: if (i < 13){             i++;         }                   else if (i == 13 && j != 4){             i = 1;             j++;         }                   else if (i == 13 && j == 4 && flag){  //i到13，j到4，flag为真的条件             i = -1;             j = 1; //            count++;             flag = 0;         }                   if (i == 13 && j == 4 && !flag){ //i在上面都被置为-1了，j都为1了，永远到不了这个条件             break;         }

user: user-4
content: 代码一直在CreateList中的while (1)里面出不来，你的退出条件一直满足不到，请逐步运行跟踪原因

user: user-0
content: 这是题目：  有两副扑克牌，牌的顺序都是：大王、小王、黑 桃、红桃、方块、梅花四种花色排列，其中每种花色 又按A,2,3，……J,Q,K的顺序排列，有个人把这两副 扑克牌上下叠放在一起，然后从上到下把单数张的丢 掉，把双数张放在最底层，直到剩下最后一张牌，那 么这张牌是什么？
user-0 提问: 贪吃蛇改进

回复:
user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。  http://bbs.csdn.net/topics/391855899
user-0 提问: error C2143: syntax error : missing ';' before 'type'

回复:
user: user-1
content: int PerfectNum() 函数中最后面那个for循环少了大括号 }   加上后这样：  int PerfectNum() { 	int m, n, sum = 0, i = 1, j, k, x = 0, y, p = 0; 	int a[1000], b[1000];  	a[0] = 0; 	for (m = 2; m <=1000; m++) 	{ 		k = m / 2; 		n = 0; 		for (j = 1; j <= k; j++) 		{ 			if(m % j == 0) 			{ 				n += j; 				x++; 				b[x] = j; 			} 		} 		if(m == n) 		{ 			p++; 			printf("%d = ", m); 			for(y = 1; y <= x; i++) 			{ 				if(y == x) 				{ 					printf("%d", b[y]); 				} 				printf("%d + ", b[y]); 			} 			a[0]++; 			while (i <= a[0]) 			{ 				a[i] = m; 				i++; 			} 			sum += m; 		} 	} 	printf("%d = ", sum); 	for (i = 1; i <= a[0]; i++) 	{ 		if(i == a[0]) 		{ 			printf("%d\n", a[i]); 		} 		else 		{ 			printf("%d + ", a[i]); 		} 		printf("%d", p); 		return p; 	} }
user-0 提问: 一个关于 printf 很奇怪的问题！！！

回复:
user: user-1
content: 引用 6 楼 aqiu348503 的回复:可能运行了上一次编译的程序 支持。  重建所有。

user: user-2
content: 这条语句语法没有问题， 建议楼主把代码贴出来大家才能寻找问题

user: user-3
content: 可能运行了上一次编译的程序

user: user-1
content: 引用 9 楼 vshuo7013 的回复:问题已解决，是因为我的数组中有‘\r’ ，重新回到行首，覆盖改了前面内容。 原来如比

user: user-0
content: 问题已解决，是因为我的数组中有‘\r’ ，重新回到行首，覆盖改了前面内容。

user: user-4
content: 你Ad_buff变量里存的是什么，类型是字符串吗，是否为空，没代码不好给你解释，你先自己检查下，还是不对把代码发上来

user: user-5
content: 是缓冲的问题吗？上一个printf里有么有\n？

user: user-6
content: 把你的输出整个截图上来看看

user: user-7
content: 单就这一句来看是没有问题的，可见出错的原因在别的地方

user: user-8
content: 你要把所有代码贴上来
user-0 提问: c语言、string处理

回复:
user: user-0
content: 你这太繁琐了。不采纳~没研究。你也去研究下sscanf 吧。 引用 1 楼 fly_dragon_fly 的回复:char *buf[]={         szBuf1,szBuf2,szBuf3,szBuf4,szBuf5,szBuf6,szBuf7     };     char *p=szBuf;     for(int i=3;i&&*p;p++) if(*p=='~') --i;     for(int i=0;i<7;i++){         char *pn =p;         while(*pn&&*pn!='~') ++pn;         if(pn==p) break;         memcpy(buf[i],p,pn-p);         buf[i][pn-p]='\0';         p =pn+1;     }

user: user-0
content: 谢谢，研究出来了。懂得了sscanf的用法。

user: user-1
content: sscanf(szBuf, "%*[^~]~%*[^~]~%*[^~]~%[^~]~%[^~]~%[^~]~%[^~]~%[^~]~%[^~]~%[^~]", ...

user: user-0
content: 我用的VC6.0的使用这个函数匹配不到？  引用 3 楼 zhao4zhong1 的回复:[quote=引用 2 楼 rogone 的回复:]  sscanf(szBuf, "%*s~%*s~%*s~%s~%s~%s~%s~%s~%s~%s", szBuf1, szBuf2, szBuf3, szBuf4, szBuf5, szBuf6, szBuf7);  顶！  作为一个C程序员，对  scanf,sscanf,fscanf  printf,sprintf,fprintf 这类函数的用法，还是要做到“拳不离手，曲不离口”的。 [/quote]  引用 2 楼 rogone 的回复: sscanf(szBuf, "%*s~%*s~%*s~%s~%s~%s~%s~%s~%s~%s", szBuf1, szBuf2, szBuf3, szBuf4, szBuf5, szBuf6, szBuf7);

user: user-2
content: sscanf(szBuf, "%*s~%*s~%*s~%s~%s~%s~%s~%s~%s~%s", szBuf1, szBuf2, szBuf3, szBuf4, szBuf5, szBuf6, szBuf7);

user: user-3
content: char *buf[]={         szBuf1,szBuf2,szBuf3,szBuf4,szBuf5,szBuf6,szBuf7     };     char *p=szBuf;     for(int i=3;i&&*p;p++) if(*p=='~') --i;     for(int i=0;i<7;i++){         char *pn =p;         while(*pn&&*pn!='~') ++pn;         if(pn==p) break;         memcpy(buf[i],p,pn-p);         buf[i][pn-p]='\0';         p =pn+1;     }

user: user-4
content: sscanf与scanf类似，都是用于输入的，只是后者scanf以键盘(stdin)为输入源，前者sscanf以固定字符串为输入源。

user: user-1
content: 引用 2 楼 rogone 的回复: sscanf(szBuf, "%*s~%*s~%*s~%s~%s~%s~%s~%s~%s~%s", szBuf1, szBuf2, szBuf3, szBuf4, szBuf5, szBuf6, szBuf7);  顶！  作为一个C程序员，对  scanf,sscanf,fscanf  printf,sprintf,fprintf 这类函数的用法，还是要做到“拳不离手，曲不离口”的。
user-0 提问: 用C语言完成数据结构中循环队列

回复:
user: user-1
content: base是int *，分配内存却按char分配，这样真的好吗?再者main里面读取字符记住回车也是一个字符，可以用scanf("%c ",d);或者读取完后刷新输入缓冲区，或者用个循环把这行余下字符全部读取丢弃

user: user-2
content: rewind(stdin);scanf("%c",&d);
user-0 提问: 求大神用C语言编一个编写一个简易的航班预订系统（带注释）

回复:
user: user-1
content: 课程设计尽量自己做吧，又不难

user: user-2
content: 引用 4 楼 zhao4zhong1 的回复:百度搜相关关键字。四爷你看你下面二楼～有个和你一样的人

user: user-3
content: 我也想看看谁能写出来，楼上的头像更牛Ｘ

user: user-4
content: 用php+mysql不是更好吗？楼上头像牛X

user: user-5
content: 没有人回复吗

user: user-6
content: 50分空手套白狼

user: user-7
content: 百度搜相关关键字。

user: user-8
content: 解决没，我也有个

user: user-9
content: **课程设计

user: user-10
content: 这不是我大一/大二的课设题目吗? 某非楼主和我是同一所大学的?
user-0 提问: 编写函数，求平面上两点最长距离

回复:
user: user-1
content: inline double dis(int x0,int x1,int y0,int y1){     return sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1)); } double get() {     int x[101],y[101];     double ans=1e300;     for(int i=0;i<100;i++) for(int j=i+1;j<100;j++){         ans=min(ans,dis(x[i],x[j],y[i],y[j]));     }     return ans; }

user: user-2
content: 归根结底是个算法问题，先把算法想清楚。

user: user-3
content: 略优化楼上： inline double dis(int x0,int x1,int y0,int y1){     return (x0-x1)*(x0-x1)+(y0-y1)*(y0-y1); } double get() {     int x[101],y[101];     double ans=1e300;     for(int i=0;i<100;i++) for(int j=i+1;j<100;j++){         ans=min(ans,dis(x[i],x[j],y[i],y[j]));     }     return sqrt(ans); }

user: user-4
content: x，排序，y排序 水平和垂直各10等分在同一窗口内以及相邻窗口内取最小 在最远窗口内取最大
user-0 提问: 急求！！！！

回复:
user: user-1
content: 将数组s改成指针，右值去掉大括号

user: user-2
content: int fun(char *p)  { 	int m = 0; 	while(*p) 	{ 		if(*p>='A' && *p<='Z') 			++m; 		++p; 	} 	return m; }  int main() { 	char s[20]={ "I am 20 years oLd!"}; 	int m; 	m = fun(s); 	return 0; }
user-0 提问: 关于随机数的问题?

回复:
user: user-1
content: 楼主需要多多细心啊

user: user-2
content: 不错，能自己发现问题就好，有别的问题再来讨论吧

user: user-3
content: 引用 1 楼 duanlim2008 的回复:靠，刚才看自己发的帖子才发现，居然把10当成了一个字符。笨死  解决了就好，有问题再问

user: user-4
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-0
content: 靠，刚才看自己发的帖子才发现，居然把10当成了一个字符。笨死
user-0 提问: 关于C语言文件读写问题

回复:
user: user-1
content: 看了你两个问题说白了都是读写文件， 这很基础的东西 http://blog.csdn.net/strongwangjiawei/article/details/7786085

user: user-2
content: 看你这么诚恳的问问题，我还是提醒你几个问题吧。 1、在论坛提问题，最好用大神、高手等等来称呼别人，用小弟、本人等等来称呼自己，用老师、学生显得太严肃。 2、贴代码只需要贴有问题的部分，没问题的代码就不要贴了，大家看起来很累。 3、不要随意让别人给你写代码，这样很不好。 4、看你这个问题，其实就是不知道如何读写文件，你只需要找本书，或者上网查查如何读写文件即可，这样你自己才能成长。
user-0 提问: 深奥的问题

回复:
user: user-1
content: 如果作为全局变量，你得这样写；   int a = 1; int b = 2; int y =a + b;   否则是错误的，全局区中不能有执行语句，只能有变量的初始化

user: user-2
content: 关键是楼主你选的什么编译器，你的编译器对第二种写法报不报错，如果不报错，那就是你想说明全局变量，局部变量，数据存储位置的区别？？不明白深奥在哪里

user: user-3
content: 理解和讨论之前请先学会如何观察！  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）

user: user-1
content: 前者是全局变量，存在于全局区，后者是main中局部变量，存在于堆栈中 如果只需要在main中使用，通常不建议存成全局变量，具体原因： 1、全局变量在整个程序运行期间都存在，空间效率低 2、全局变量各函数均可用，很容易导致想不到的BUG，容易引起命名冲突，不利于高度 当然也不是说不用，需要合理的运用

user: user-4
content: 全局变量和局部变量的区别嘛.确实要彻底弄明白还是不太容易的. 我到现在都只会正确的用,没有彻底弄懂过.

user: user-5
content: 我去，我重新注意到了标题。。。这个好像是一些常识性的东西，怎么变成深奥的问题了

user: user-5
content: 我的理解是前一个是局部变量，也就是main函数私有，后者是全局变量，所有函数都可以访问。

user: user-6
content: 引用 1 楼 醉花阴柳的回复:变量存储的内存位置不同 而且你在函数外赋值，这是错误的，只能初始化

user: user-6
content: 变量存储的内存位置不同
user-0 提问: 为啥不能编译

回复:
user: user-0
content: 谢谢各位,谢谢

user: user-1
content: 如此简单的程序错误还是挺多的，建议先把基础语法搞懂

user: user-2
content: 错误比较多，简单改了一下，如下： #include<stdio.h>   int sf(char *s1,char *s2);  int main(void) { 	char s1[20],s2[20]; 	scanf("%s %s",s1,s2); 	int result = sf(s1,s2); 	printf("------\n"); 	printf("s1 is %s\n", s1); 	printf("s2 is %s\n", s2); 	printf("The result is %d", result);  	return 0; }  int sf(char *s1, char *s2) /*比较两个字符数组的大小*/ {  	while(*s1 == *s2) 	{   		if(*s1 == '\0' && *s2 == '\0') return 0; 		else if (*s1 == '\0' || *s2 == '\0') break; 		s1++; 		s2++;    	}  	return (*s1 - *s2); }    1.  注意代码可读性。 2.  建议找本经典教材学学。   当初没人教我编程，纯靠自学，走了很多弯路，甚是遗憾。

user: user-3
content: 你int main() 后面少了一个大括号{  其次sf函数里return (*s-*t); 这里的s和t是什么，前面没定义过 建议把基础打好啊

user: user-4
content: 看一下编译提示,应该蛮清楚的
user-0 提问: 为啥不能执行预期功能：？将字符数组倒着输出

回复:
user: user-0
content: \0怎么了？

user: user-1
content: 注意字符串结尾是\0

user: user-0
content: 谢谢老师,我知道了

user: user-2
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-3
content: 什么地方不对, 倒着输出不用操作数组, 循环变量倒着走就行 for(int i=k-1;i>=0;i--)
user-0 提问: 用C语言实现cookies的购物车功能，大神来。。

回复:
user: user-1
content: 对不同网站，编码算法不同。具体算法在服务器端的代码中。

user: user-0
content: 引用 9 楼 zhao4zhong1 的回复:发挥你的主观能动性！  用c语言编写响应报文头，设置 "Set-Cookie: name=make\r\n"，然后从请求报文中取出Cookie: name=make。现在我要分析这个Cookie，请问赵老师  这个name=make键值怎么解析，这个键值是经过编码的吗？ 我最主要的就是要知道这个cookies的时间，目的是要实现用户是否超时，超时就返回登录界面。   赵老师冬至快乐，别忘了吃饺子。。。

user: user-0
content: 引用 9 楼 zhao4zhong1 的回复:发挥你的主观能动性！  我先自主研究一会

user: user-1
content: 发挥你的主观能动性！

user: user-0
content: 引用 7 楼 zhao4zhong1 的回复:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=CGI%20cookies&rsv_spt=1&oq=%26lt%3BGI%20cookies&rsv_pq=9416bb140004286f&rsv_t=12a4eXM5gRWxHUacy3hRV%2BzdXSNaJVaKyVOywBAbCy300BV6%2BJDUJoqMGZ4poMzS04dD&rsv_enter=0&rsv_sug3=20&rsv_sug1=15&rsv_sug4=1246&rsv_sug=1   赵老师，用C语言进行编解码set-cookies  的键值   怎么进行啊

user: user-0
content: 大概流程是这样 但是就是无从下手 怎么办

user: user-1
content: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=CGI%20cookies&rsv_spt=1&oq=%26lt%3BGI%20cookies&rsv_pq=9416bb140004286f&rsv_t=12a4eXM5gRWxHUacy3hRV%2BzdXSNaJVaKyVOywBAbCy300BV6%2BJDUJoqMGZ4poMzS04dD&rsv_enter=0&rsv_sug3=20&rsv_sug1=15&rsv_sug4=1246&rsv_sug=1

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:https://www.baidu.com/s?wd=C%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0cookies%E7%9A%84%E8%B4%AD%E7%89%A9%E8%BD%A6&rsv_spt=1&rsv_iqid=0xe6e9e2a00000448d&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&rsv_n=2&rsv_sug3=1&inputT=1593&rsv_sug4=1593   那些都是用其他语言的，用C语言怎么写啊，赵老师。。。

user: user-0

user: user-1
content: https://www.baidu.com/s?wd=C%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0cookies%E7%9A%84%E8%B4%AD%E7%89%A9%E8%BD%A6&rsv_spt=1&rsv_iqid=0xe6e9e2a00000448d&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&rsv_n=2&rsv_sug3=1&inputT=1593&rsv_sug4=1593

user: user-0

user: user-0
user-0 提问: 杭电acm1019题，为什么我的总是wrong answer?

回复:
user: user-1
content: 把以下一行： t=a*b/maxgy(a,b); 改为： t=a/maxgy(a,b)*b; 即可AC。

user: user-2
content: 1) long long 更保险 实在不行长整数计算 2）如楼上所述，先除后乘更保险

user: user-3
content: 你以为用long就不溢出了吗, 没用的, 换成先除约数再乘

user: user-4
content: 你倒是把错误信息提供出来吧，另外iostream.h不是C++的标准库里的头文件吗？

user: user-5
content: 在百度搜“求n个数的最小公倍数”

user: user-6
content: 求n个数的最小公倍数~
user-0 提问: 关于一道算法题，求大神们来看看我的思路

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

user: user-1
content: 引用 3 楼 pcboyxhy 的回复:标准的快排啊， 用螺母把螺丝分区，每次分区得到三个结果， A1，完全匹配的一对 A2，比螺母小的螺丝 A3，比螺母大的螺丝 将1中的螺丝取出，用它对螺母分区，可以得到 B1. 比螺丝小的螺母 B2. 比螺丝大的螺母 A2跟B1一一对应，A3跟B2一一对应，对(A2,B1)和(A3,B2)分别执行上述的算法，直至完全匹配 ++++++

user: user-1
content: 引用 2 楼 mewiteor 的回复:我们不能拿两个螺母作比较，也不能拿两个螺钉作比较所以不能直接快排，但每个螺钉都可以将螺母按大小分成1~3组，每个螺母也可以将螺钉按大小分成1~3组，然后就是分治了。

user: user-2
content: 标准的快排啊， 用螺母把螺丝分区，每次分区得到三个结果， A1，完全匹配的一对 A2，比螺母小的螺丝 A3，比螺母大的螺丝 将1中的螺丝取出，用它对螺母分区，可以得到 B1. 比螺丝小的螺母 B2. 比螺丝大的螺母 A2跟B1一一对应，A3跟B2一一对应，对(A2,B1)和(A3,B2)分别执行上述的算法，直至完全匹配

user: user-3
content: 我们不能拿两个螺母作比较，也不能拿两个螺钉作比较所以不能直接快排，但每个螺钉都可以将螺母按大小分成1~3组，每个螺母也可以将螺钉按大小分成1~3组，然后就是分治了。

user: user-4
content: 是属于nlgn, 排序之后还需要比对吗, 题目不是说要找到每一对, 暗示一一配对的
user-0 提问: windows下多线程生产、消费问题

回复:
user: user-1
content: 用事件来通知其他线程。暂存的数据一般放在队列中(读写时注意同步保护)

user: user-2
content: 上面看错…线程的话就用事件吧…

user: user-2
content: Windows下用事件和内存映射吧

user: user-3
content: 参考： Microsoft SDK\samples\winbase\SharedMem\Consumer.Cpp Microsoft SDK\samples\winbase\SharedMem\Makefile Microsoft SDK\samples\winbase\SharedMem\Producer.Cpp Microsoft SDK\samples\winbase\SharedMem\Queue.h Microsoft SDK\samples\winbase\SharedMem\ReadMe.Txt Microsoft SDK\samples\winbase\SharedMem\Common.h

user: user-3
content: 《Windows核心编程》

user: user-4
content: 搜索进程间通信，很多方法
user-0 提问: 简单的C语言 ，为什么结果是这样

回复:
user: user-1
content: 每天回帖即可获得10分可用分！  打酱油，嘿嘿

user: user-2
content: 静态变量和作用域的问题

user: user-3
content: 简单的三步循环，第一个num是个自动变量，第二个num是静态变量，静态变量的初始化和自动变量不同，从程序就能看出来

user: user-4
content: 重定义的变量，没意义

user: user-0
content: 引用 8楼user-9 的回复:int num;//栈变量，局部变量 static num=1;//静态全局变量 二者存储位置和管理不一样，对于编译器，会给他们重命名不同的变量名，比如num1,num2，这个会根据不同编译器设置来看， 你就认为俩个是不同的变量就OK了。谢谢

user: user-0
content: 引用 7楼paschen 的回复:引用 6 楼 qq_33028645 的回复:[quote=引用 3 楼 u011133403 的回复:] 这个设计变量的作用域，第一个num作用域为整个函数，而第二个为包含其的大括号的代码块，又由于你定义的是static,所以也能实现累加的效果。感觉这两个num并不是同一个变量，是不是这样的？  对，不是同一个，把代码调整好就看得明白了[/quote]谢谢了啊

user: user-0
content: 引用 3 楼 u011133403 的回复:这个设计变量的作用域，第一个num作用域为整个函数，而第二个为包含其的大括号的代码块，又由于你定义的是static,所以也能实现累加的效果。感觉这两个num并不是同一个变量，是不是这样的？

user: user-5
content: 代码格式让我不想看。

user: user-6
content: 这个设计变量的作用域，第一个num作用域为整个函数，而第二个为包含其的大括号的代码块，又由于你定义的是static,所以也能实现累加的效果。

user: user-7
content: 楼主先把代码写规范了就看得出了，你大括号全在一排自己把自己搞晕

user: user-8
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-9
content: int num;//栈变量，局部变量 static num=1;//静态全局变量 二者存储位置和管理不一样，对于编译器，会给他们重命名不同的变量名，比如num1,num2，这个会根据不同编译器设置来看， 你就认为俩个是不同的变量就OK了。

user: user-7
content: 引用 6 楼 qq_33028645 的回复:引用 3 楼 u011133403 的回复:这个设计变量的作用域，第一个num作用域为整个函数，而第二个为包含其的大括号的代码块，又由于你定义的是static,所以也能实现累加的效果。感觉这两个num并不是同一个变量，是不是这样的？  对，不是同一个，把代码调整好就看得明白了

user: user-0
content: 引用 2 楼 paschen 的回复:楼主先把代码写规范了就看得出了，你大括号全在一排自己把自己搞晕 不好意思，这个代码我是粘贴的，你知道用编译器编写都不会这样的，我放一排还麻烦呢
user-0 提问: 关于逆波兰表达式的处理

回复:
user: user-1
content: https://www.baidu.com/s?wd=%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%20c%E8%AF%AD%E8%A8%80&rsv_spt=1&rsv_iqid=0x906f12730001d522&issp=1&f=3&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&oq=%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%20c%E8%AF%AD%E8%A8%80&rsv_t=306cwBQPh3RRsTZMGHF%2FdiPfBs8t6f6JJ9icmxn%2BXC4YHhGPRi4LFlCcLJmXtZucMd9Q&rsv_pq=a0d7169c0002495d&prefixsug=%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%20c%E8%AF%AD%E8%A8%80&rsp=0
user-0 提问: C语言初学者求问

回复:
user: user-0
content: 谢谢您，我现在想起来了这点，还是见得少，还的好好学

user: user-1
content: scanf遇到%d，先滤掉所有的空白，包括回车，等到第一个非空白字符才试图转换成整数
user-0 提问: 弱问, python是不是重载？（这个版本有很多c++, python大神）

回复:
user: user-1
content: 1L回答的很好，就是自行判断参数个数而已。

user: user-2
content: Python不支持像C++一样的重载，但可以实现类似重载的功能，你可以搜一下。 这是range的源码源码 static PyObject * builtin_range(PyObject *self, PyObject *args) {     long ilow = 0, ihigh = 0, istep = 1;     long bign;     Py_ssize_t i, n;      PyObject *v;      if (PyTuple_Size(args) <= 1) {         if (!PyArg_ParseTuple(args,                         "l;range() requires 1-3 int arguments",                         &ihigh)) {             PyErr_Clear();             return handle_range_longs(self, args);         }     }     else {         if (!PyArg_ParseTuple(args,                         "ll|l;range() requires 1-3 int arguments",                         &ilow, &ihigh, &istep)) {             PyErr_Clear();             return handle_range_longs(self, args);         }     }     if (istep == 0) {         PyErr_SetString(PyExc_ValueError,                         "range() step argument must not be zero");         return NULL;     }     if (istep > 0)         bign = get_len_of_range(ilow, ihigh, istep);     else         bign = get_len_of_range(ihigh, ilow, -istep);     n = (Py_ssize_t)bign;     if (bign < 0 || (long)n != bign) {         PyErr_SetString(PyExc_OverflowError,                         "range() result has too many items");         return NULL;     }     v = PyList_New(n);     if (v == NULL)         return NULL;     for (i = 0; i < n; i++) {         PyObject *w = PyInt_FromLong(ilow);         if (w == NULL) {             Py_DECREF(v);             return NULL;         }         PyList_SET_ITEM(v, i, w);         ilow += istep;     }     return v; }   这是别人实现的range函数range  def my_range(start, stop = None, step = 1):  2     # 实现自己的 range  3     if stop == None:  4         start, stop = 0, start  5   6     result = []  7     if step > 0:  8         i = start  9         while i < stop: 10             result.append(i) 11             i += step 12     else: 13         i = start 14         while (i > stop): 15             result.append(i) 16             i += step 17     return result