Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 问一个关于指针的问题

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

user: user-0
content: https://blog.csdn.net/qq_36626914/article/details/82493906 感谢这位大佬给我讲通了！

user: user-2
content: 引用 6 楼 qq_45218336的回复:[quote=引用 5 楼 qq_45218336的回复:][quote=引用 1 楼 與蘤舊縐的回复:]有头结点那就拿着头结点去找你要的结点，这还要什么二级指针，至于链表什么的二级指针爱用不用，反正道理一样，基本效果差不多 我也晕了，那树的插入函数为啥一定要用二级指针作为形参啊(函数没有返回值的时候)，树不也是链表吗[/quote] 链式存储。。。。。。[/quote] 有规定么，说实话我见到的基本都是传头结点，能用就行，何必纠结这么多，特殊情况下特殊考虑，没情况随便，怎么秀操作怎么写也行

user: user-0
content: 引用 5 楼 qq_45218336的回复:[quote=引用 1 楼 與蘤舊縐的回复:]有头结点那就拿着头结点去找你要的结点，这还要什么二级指针，至于链表什么的二级指针爱用不用，反正道理一样，基本效果差不多 我也晕了，那树的插入函数为啥一定要用二级指针作为形参啊(函数没有返回值的时候)，树不也是链表吗[/quote] 链式存储。。。。。。

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:有头结点那就拿着头结点去找你要的结点，这还要什么二级指针，至于链表什么的二级指针爱用不用，反正道理一样，基本效果差不多 我也晕了😖，那树的插入函数为啥一定要用二级指针作为形参啊(函数没有返回值的时候)，树不也是链表吗

user: user-3
content: 引用 2 楼 qq_45218336的回复:[quote=引用 1 楼 與蘤舊縐的回复:]有头结点那就拿着头结点去找你要的结点，这还要什么二级指针，至于链表什么的二级指针爱用不用，反正道理一样，基本效果差不多 头结点不也要让它的next指向下个结点嘛，这不算是改变值吗[/quote] 修改它的next就不需要二级指针了

user: user-2
content: ？？改变谁的值？？你想用二级指针改变next的值？？这可还行 被你绕晕了

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:有头结点那就拿着头结点去找你要的结点，这还要什么二级指针，至于链表什么的二级指针爱用不用，反正道理一样，基本效果差不多 头结点不也要让它的next指向下个结点嘛，这不算是改变值吗

user: user-2
content: 有头结点那就拿着头结点去找你要的结点，这还要什么二级指针，至于链表什么的二级指针爱用不用，反正道理一样，基本效果差不多
user-0 提问: C语言复杂指针，，求助，，，求大神帮忙分析一下，，，，，，，，，，，

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

user: user-2

user: user-3
content: 学习看内存。这些都随便搞。 题目咋不 char*** cpp = cp; char**** cppp = cpp; char***** cpppp = cppp;

user: user-4
content: 引用 1 楼 寻开心的回复:谁这么有才，出这样的题目啊  不玩儿了， 不是不会， 是太无聊了这个题目    看看谁有耐心回答吧。 我 别啊，老哥，你不玩了，谁愿意玩呢？我看了想吐，先让我吐一会儿再说

user: user-5
content: 谁这么有才，出这样的题目啊  不玩儿了， 不是不会， 是太无聊了这个题目    看看谁有耐心回答吧。 我
user-0 提问: c语言的一道题目求大佬教一下，帮我指出一下错误，谢谢

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

user: user-2
content: 1 windows.h是个什么鬼， 不应该存在  2 把int  a[m][m]的定义放到scanf("%d", &m)这一行之后   否则不知道a的大小，分配空间就不对  3 输出那块没有用空格分开每列，没有用回车分开每行    %d 后面加个空格 ， 内层循环外加一个回车输出
user-0 提问: 求c语言代码

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

user: user-2
content: Reference Blog link： https://blog.csdn.net/Donald_Shallwing/article/details/99734501

user: user-3
content: 最好还是自己先写写，遇到问题再提出来吧～
user-0 提问: c语言

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

user: user-0
content: 那10还得判断

user: user-2
content: 当然也有一个馊主意，拿接收为字符串形式，再把数字分出来，比较简单

user: user-2
content: 你是在做题吗 题目一般会给出输入某个数的时候结束输入 要是你一定想搞点别的~~暂时想不出什么好主意，不熟悉c语言的输入函数，可能有可以试看一下你到底输入了什么并且不会把输入的东西从缓存区中删除的函数，别的语言是有，c不清楚，这样的话就可以检测到\n又不会把你输入的数字给吃了

user: user-0
content: 那有什么其他方法吗

user: user-2
content: \n结束判断不太靠谱，不然你就只能打一行，敲一次回车，而且显然是循环接收输入，getchar也不能用

user: user-0
content: 但是现在不知道具体输入几个数，所以可能需要一个像\n之类的标志判断结束，但是在\n之前有一个空格这就很麻烦

user: user-2
content: scanf以空格判断输入结束 知道最大数据个数的话直接定义一个大一点的数组，否则就动态内存分配吧mallloc、colloc、realloc~~~
user-0 提问: 大佬们能不能帮忙看看哪里有问题？怎么解决呀？

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

user: user-2
content: float Average(float cost[],int i) // 这里传递一个i { float aver,sum; for(i=0;i<N;i++) // 这里还用i做循环变量，传递进来的数没有意义了  { scanf("%f",&cost[i]); sum += cost[i]; } aver=sum/N; return aver; }  你可以把这个函数传递的参数不用i， 改成n 函数体里面两次用到的那个N也都换成n，这样来是用  一般情况下，这个程序的逻辑也不这样设计的 程序会先输入一个n 然后输入n个数放到数组里面 然后再调用这个函数 计算平均数
user-0 提问: c语言

回复:
user: user-1
content: for(i=1;i<n;i++){         max=sum[0];         if(max<sum[i]) max=sum[i];m=I; } 这个也不行， max=sum【0】得放到for循环前面去；

user: user-1
content: int i,n,max,m=0,sum[100];  struct STU p[I]; 这儿就过不去， i没有初值， p数组大小没有定义吧

user: user-2
content: n是整数，输入格式是%d，不是%f
user-0 提问: 输入一串字符（长度不超过100）和一个正整数k，将其中的英文字母加密并输出加密后的字符串，非英文字母不变。加密思想：将每个字母c加一个序数k，即用它后面的第k个

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

user: user-2
content: 1你这个循环是死循环 2你这样只能输入一个字符，立马输出一个字符 3你这个加密后有重叠，如何解密？
user-0 提问: 间接寻址级别不同怎么回事？

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

user: user-0
content: 引用 5 楼 user-2 的回复：我觉得应该就是名字冲突了，要不就是Student还有别的定义已经发现问题，函数要声明，我把函数放在main前面没有去声明

user: user-2
content: 我觉得应该就是名字冲突了，要不就是Student还有别的定义

user: user-0
content: 引用 3 楼 user-2 的回复：Student的定义要给出来typedef struct StudentManage{  int id; char name[21]; char sex[3]; short age; struct StudentManage* next; }Student;

user: user-2
content: Student的定义要给出来

user: user-0
content: 引用 1 楼 user-2 的回复：搜索一下SearchStu是不是别的地方也有声明我把这个函数的名字改了还是一样

user: user-2
content: 搜索一下SearchStu是不是别的地方也有声明
user-0 提问: 马踏棋盘问题

回复:
user: user-0
content: 好的好的，谢谢你啊！

user: user-1
content: 引用 2 楼 jhgikg的回复:[quote=引用 1 楼 與蘤舊縐的回复:]深度优先，递归实现，无脑解法，贼好写，算半天 把走法写入一个二维数组，比如用(1,-1)表示左移一格下移一格，然后用个变量滚动方向即可 能不能说得再简单一点，不太懂[/quote] 我发过一帖马踏棋盘算法，你可以看下，代码有点问题，主要是为了表达思想，所以也没怎么调试，思想可以参考，就是最简单的写法

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:深度优先，递归实现，无脑解法，贼好写，算半天 把走法写入一个二维数组，比如用(1,-1)表示左移一格下移一格，然后用个变量滚动方向即可 能不能说得再简单一点，不太懂

user: user-1
content: 深度优先，递归实现，无脑解法，贼好写，算半天 把走法写入一个二维数组，比如用(1,-1)表示左移一格下移一格，然后用个变量滚动方向即可
user-0 提问: 新手 求解为什么vs2019写c语言会出现这种情况

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

user: user-2
content: 这种问题你最好把代码贴出来   有可能是头文件包含错误

user: user-3
content: 看截图， 只有30多行代码， 都贴出来看一下

user: user-3
content: 你确定你建立对了工程，并且 include了stdio吗

user: user-0
content: 但是 很简单的printf就可以运行成功
user-0 提问: 原码反码和补码的区别

回复:
user: user-1
content: 可以了解下 同余定理

user: user-2
content: 为何会有反码和补码  计算机内的表示和运算都使用补码   为何要使用原码, 反码和补码 反码： 使计算机中只有加法 补码： 去除 -0 +0   表示一个最低数 eg: 1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2 如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数.   1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0  发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在”0”这个特殊的数值上. 虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的. 而且会有[0000 0000]原和[1000 0000]原两个编码表示0.  1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原  使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

user: user-3
content: 原码 1010000 补码 1010001 反码 1101110

user: user-4
content: 6666666

user: user-5
content: 正数的反码与补码和原数相同 负数的反码:除了符号位，其他位置按位取反 负数的补码:反码的最后一位+1

user: user-6
content: 学习了，多谢

user: user-7
content: 正数的是原码。负数是它本身绝对值的反码加一（就是补码） 比如1的原码00000001，那么它的反码就是11111110，补码就是11111111，补码代表的就是-1 一般原码用来表示正数，补码用来表示负数 二进制最左边的那个数代表着正负符号，1是负数，0是整数

user: user-8
content: 刚好在看二进制数，学习了，

user: user-9
content: 多多看书哦哦

user: user-10
content: 原码是这个数二进制本身，求补码有一个简单的求法：从右往左数，遇到的第一个1，这个1和它右边的所有0都不变，这个1左边的所有1和0全部取反

user: user-11

user: user-12
content: 引用 87 楼 Chu_Wang的回复:正数原码反码补码一致 负数， 原码符号位为1，其余位是该负数的绝对值对应的二进制原码 反码，在原码的基础上，符号位不变，其余位取反 补码，在反码的基础上，在末尾加1 当然，这是对有符号数而言

user: user-12
content: 正数原码反码补码一致 负数， 原码符号位为1，其余位是该负数的绝对值对应的二进制原码 反码，在原码的基础上，符号位不变，其余位取反 补码，在反码的基础上，在末尾加1

user: user-13
content: 反码是原码逐位取反，补码是反码加1，但是这是对负数而言，正数不变

user: user-14
content: 计算机原理就有讲过这些

user: user-15
content: 反码 = 源码取反，补码 = 反码加一

user: user-16
content: 原码反码和补码区别 我来答共1条回答 路银庚 LV.42018-04-13 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值，如 [+1]原 = 0000 0001 [-1]原 = 1000 0001 正数的反码是其本身 负数的反码是在其原码的基础上, 符号位不变，其余各个位取反. [+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反 补码的表示方法是: 正数的补码就是其本身 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 正数的源码，反码，补码都一样

user: user-17
content: 正数的补码就是反码 负数的补码=反码+1

user: user-11

user: user-18
content: 正数的原码，反码，补码都一样， 负数的反码是由原码符号位不变，其它数值取反得到的，而补码是由原反码的值末位加1取得的 0有补码，+0，–0的补码都一样，只有一种表示形式。
user-0 提问: 如何识别输入的1e-8

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

user: user-2
content: %g  %e 注意类型 如果是double 要加 l
user-0 提问: 【求助！！！】

回复:
user: user-1
content: 引用 8 楼 weixin_45293212 的回复: 题目是       设有两个无头结点的单链表，头指针分别为ha，hb，链中有数据域data，链域next，两链表分别存储一个一元多项式，现要求编写程序实现两个多项式的加法运算。 如多项式A(x)和多项式B(x)相加得到多项式 上面是我的程序，编译没问题但连接有问题，求各位大佬帮我看看该怎么改！！！！  俩多项式的最高次项与最低次项确定了吗？？？？

user: user-0
content: 题目是       设有两个无头结点的单链表，头指针分别为ha，hb，链中有数据域data，链域next，两链表分别存储一个一元多项式，现要求编写程序实现两个多项式的加法运算。 如多项式A(x)和多项式B(x)相加得到多项式 上面是我的程序，编译没问题但连接有问题，求各位大佬帮我看看该怎么改！！！！

user: user-0
content: #include<stdio.h> #include<malloc.h> typedef struct Polynode { 	int coef; 	int exp; 	struct Polynode *next; }Polynode,*Polylist;  Polylist polycreate() { 	Polynode *head,*rear,*temp,*s; 	int c,e; 	head=(Polynode*)malloc(sizeof(Polynode)); 	rear=head; 	scanf("%d%d",&c,&e); 	while(c!=0) 	{ 		s=(Polynode*)malloc(sizeof(Polynode)); 		s->coef=c; 		s->exp=e; 		rear->next=s; 		rear=s; 		scanf("%d,%d",&c,&e); 	} 	rear->next=NULL; 	temp=head;head=head->next;free(temp); 	return(head); } void polyadd(Polylist ha,Polylist hb) { 	Polynode *p,*q,*pre,*temp; 	int sum; 	p=ha; 	q=hb; 	pre=ha; 	while(p!=NULL&&q!=NULL) 	{ 		if(p->exp<q->exp) 		{pre->next=p;pre=pre->next; 		p=p->next; 		} 		else if(p->exp==q->exp) 		{sum=p->coef+q->coef; 		 if(sum!=0) 		 {p->coef=sum; 		  pre->next=p; 		  pre=pre->next; 		  p=p->next;temp=q;q=q->next;free(temp); 		 } 		 else 		 {temp=p->next;free(p);p=temp; 		  temp=q->next;free(q);q=temp; 		 } 		} 		else 		{pre->next=q;pre=pre->next; 		q=q->next; 		} 	} 	if(p!=NULL) 	 pre->next=p; 	else 	 pre->next=q; }

user: user-2
content: 在前面写main函数的话，需要先声明另外两个函数才能调用它们

user: user-0
content: 就是不知道才问，程序用了两个别的函数，那就是要再最前面加上int main（）吗

user: user-2
content: 天哪，不是一开始就要写main函数吗？你要想好了，一开始就要安排main函数怎么写

user: user-0
content: 引用 1 楼 user-2的回复:缺少main函数。。。 那我应该怎么改，在最前面加int main（）吗

user: user-2
content: 缺少main函数。。。
user-0 提问: 双击按钮时，也一定会产生单击消息吗？

回复:
user: user-1
content: 引用 楼主 六道佩恩 的回复:希望双击时只产生双击消息 双击的定义是由系统的延时定义决定的，是由单击组成，所以必然产生单击消息。

user: user-2
content: 这个不可能的，要想过滤需要做延时处理
user-0 提问: 入门小白如何选择计算机语言

回复:
user: user-1
content: C语言也不是必修课，可以跳过去

user: user-2
content: 访问网站tiobe，有很多。

user: user-3
content: 引用 1 楼 SuperDay 的回复:C语言也不是必修课，可以跳过去 一门语言只是数据结构等的先修课程，可以是各种常用的语言。后面再学什么根据需要来
user-0 提问: 求求大佬们，帮我注释一下函数，跪求了大佬们谢谢!!!!!!!!!!!

回复:
user: user-1
content: 自己写的不明白是什么意思吗？  建议多运行一下，调试，不明白的地方可以加debug信息（打印出数值，了解其逻辑）
user-0 提问: 大哥们为什为这个题把一级指针换成二级指针就行通了

回复:
user: user-1
content: 因为实参p, q是一重指针，如果你直接用a, b的地址作为实参（&a, &b)，那么就形参也可以用一重指针。  建议在稿纸上画画调用关系图，以及参数的关系图

user: user-2
content: 因为你程序写错了啊，你的右边的swap交换的不能是r和s，而是*r  和 *s

user: user-3
content: 很简单的问题，你同时寄出去两封信，但是在投递之前，把这两封信的信封调换一下，那么这两封信还能寄到原来的地方吗？
user-0 提问: C语言问题

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

user: user-2
content: 素数的话可以单独写个判断素数的函数，通过调用打印出来就好了

user: user-0
content: 引用 1 楼 喜欢做我自己的回复:斐波那契数列不就是某一项值为前两项的和吗,用一个递归就行了,前二十项的话,用一个for循环,将斐波那契函数的值一次赋值到数组中,然后判断该元素是否是素数就行 我只想要个思路，谢谢啦

user: user-0
content: 引用 2 楼 寻开心的回复:用递推，不要用递归。递归进入次数太多了  自己写吧， 贴代码问问题  只想要源码，那就百度去，多的是 我只想要一个思路，谢谢啦

user: user-3
content: 用递推，不要用递归。递归进入次数太多了  自己写吧， 贴代码问问题  只想要源码，那就百度去，多的是

user: user-4
content: 斐波那契数列不就是某一项值为前两项的和吗,用一个递归就行了,前二十项的话,用一个for循环,将斐波那契函数的值一次赋值到数组中,然后判断该元素是否是素数就行
user-0 提问: c语言新手求指导

回复:
user: user-1
content: #include <stdio.h> #include <stdlib.h>  struct STU {     char stuid[12],name[20];     int score1,score2,score3; };  void in(struct STU p[], int n); void out(struct STU p[], int n);  int main() {     int N;     struct STU *p;      scanf("%d", &N);     p = (struct STU *)malloc(sizeof(struct STU) * N);     if (!p)         return -1;     in(p, N);     out(p, N);      free(p);     return 0; }  void in(struct STU p[], int N) {     //int i,N;    //N有初始化吗?     int i;     for(i=0;i<N;i++)         //scanf("%s%s%d%d%d", &p[i].stuid,&p[i].name,&p[i].score1,&p[i].score2,&p[i].score3);         scanf("%s%s%d%d%d", p[i].stuid, p[i].name,&p[i].score1,&p[i].score2,&p[i].score3); } void out(struct STU p[], int N) {     //int i,N;     int i;     for(i=0;i<N;i++)         printf("%s,%s,%d,%d,%d\n",p[i].stuid,p[i].name,p[i].score1,p[i].score2,p[i].score3); }  供参考～

user: user-2
content: 函数里面的N没有初始化，应该把main里面的N通过参数传递过来

user: user-3
content: struct STU p[N]有点危险 观察一下你的传参方式
user-0 提问: SOS

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

user: user-2
content: 不要大佬大佬的，字符数组就是字符串，你不要看漏了

user: user-0
content: 引用 8 楼 SuperDay的回复:怎么会没有，看书要仔细 OK，大佬说啥都对我再仔细找找

user: user-2
content: 怎么会没有，看书要仔细

user: user-0
content: 引用 6 楼 SuperDay的回复:这种问题都是基础，请好好看完书，再来写这个程序比较好 emm，我大一，刚接触c，课本上也没有类似输出字符串这类的例子，所以才来求助。最近一直在看书和练习书上的程序。继续努力吧！

user: user-2
content: 这种问题都是基础，请好好看完书，再来写这个程序比较好

user: user-0
content: 引用 1 楼 user-4的回复:输出的时候用%s 那定义的时候会有什么变动

user: user-0
content: 引用 2 楼 SuperDay的回复:什么意思？你这个字符串明明是需要输入的，怎么是输出了？你要输出哪些东西？ 我知道，就是先输入I ate an apple and an orange!这句话怎么能输出“‘an’,4。”这种？我只会从26个字母中先输入（比如输入a a ），那么输出的结果就是‘a’，2。也就是说我会单个字符的这种输出，不明白字符串的输出怎么弄！

user: user-3
content: 寻找子串使用strstr，然后移位源串的位置。 寻找字符用strchr

user: user-2
content: 什么意思？你这个字符串明明是需要输入的，怎么是输出了？你要输出哪些东西？

user: user-4
content: 输出的时候用%s
user-0 提问: C语言多项式累乘

回复:
user: user-1
content: 越是不会越要练习啊   哪怕代码再烂，贴出来也会有人帮你找问题  就好比自己挣钱一样，再少也是自己努力得来的， 不是街边乞讨到的。

user: user-2
content: #include<stdio.h>  int main()  {      int i,k;      double result=1;      printf("Input k\n");      scanf("%d",&k);      for(i=1;i<=k;i++)      {          result=result*((2.0*i)*(2.0*i))/((2.0*i-1)*(2.0*i+1));      }      printf("%g\n",result);      return 0;  }

user: user-0
content: 引用 1 楼 user-3的回复:连通项公式都给出了，直接一个for循环sum求和就完了啊 能帮忙写一下吗，我不会敲代码

user: user-3
content: 连通项公式都给出了，直接一个for循环sum求和就完了啊
user-0 提问: 救救孩子吧！一个简单的C语言问题！！

回复:
user: user-0
content: 引用 4 楼 刘之帅 的回复：想到一些数学性质，感觉没啥用，直接递归吧…… 假如n是偶数 n!!=2*4*6*8*...*n=(n/2)!*2^(n/2) 如果n是奇数 n!!=2*4*6*8*...*n-1=(n-1/2)!*2^(n-1/2) 因为n整数，2整数，结果向下取整，n为奇数时 (n-1)/2=n/2，且n!!=(n-1)!!=(n/2)!*2^(n/2)=(n-2)!!*(n/2-1)*2做出来了

user: user-0
content: 引用 3 楼 Donald_Shallwing 的回复：只给你求n!!的函数，其他有关求和的，自己去完善：   int evenFac(int n){ 	 	if(n){ 		if(n%2) 			n--; 		return evenFac(n-2)*n; 	} 	else 		return 1; }   求n!!的方法和求n!的方法是类似的，都用递归的方法做就行了做出来了，谢谢🙏

user: user-1
content: 想到一些数学性质，感觉没啥用，直接递归吧…… 假如n是偶数 n!!=2*4*6*8*...*n=(n/2)!*2^(n/2) 如果n是奇数 n!!=2*4*6*8*...*n-1=(n-1/2)!*2^(n-1/2) 因为n整数，2整数，结果向下取整，n为奇数时 (n-1)/2=n/2，且n!!=(n-1)!!=(n/2)!*2^(n/2)=(n-2)!!*(n/2-1)*2

user: user-2
content: 只给你求n!!的函数，其他有关求和的，自己去完善：   int evenFac(int n){ 	 	if(n){ 		if(n%2) 			n--; 		return evenFac(n-2)*n; 	} 	else 		return 1; }   求n!!的方法和求n!的方法是类似的，都用递归的方法做就行了

user: user-0
content: 引用 1 楼 user-3 的回复：俊俊真的很不听话，抓过来打一顿！你说的没错😤

user: user-3
content: 俊俊真的很不听话，抓过来打一顿！
user-0 提问: 请大家帮忙看看是哪个地方出错了

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

user: user-2
content: VS2015调试没错误！

user: user-0
content: 引用 8 楼 datoulaile123 的回复:或者你把string换个名，比如strstr，毕竟string是关键字 按照你给的建议，试了一下，还是不对，谢谢！

user: user-3
content: 或者你把string换个名，比如strstr，毕竟string是关键字

user: user-3
content: 除了感觉中文的文件名可能会用影响，其他感觉没什么毛病啊

user: user-0
content: 引用 5 楼 user-5 的回复:应该是string.p吧 试了一下，还是不对，不过还是要谢谢你！

user: user-0
content: 引用 1 楼 SuperDay 的回复:字符串.h这个名字是你想出来的吗？ 大佬，我是在看视频然后照着上面的抄的，请问怎么解决第二张图里string下面的红线，提示不允许指针指向不完整的类类型。

user: user-0
content: 引用 2 楼 棉猴 的回复:字符串.h是自定义头文件么？内容是什么啊？ 是的，就是第一图片里的内容，

user: user-2
content: 字符串.h是自定义头文件么？内容是什么啊？

user: user-4
content: 字符串.h这个名字是你想出来的吗？

user: user-5
content: X 没注意下面的string都是指针。 这个代码编译应该可以过的。。 楼主可以试试把文件名改成英文的试试。

user: user-3
content: 引用 9 楼 liweiz 的回复:[quote=引用 8 楼 datoulaile123 的回复:] 或者你把string换个名，比如strstr，毕竟string是关键字 按照你给的建议，试了一下，还是不对，谢谢！[/quote] 拿你的代码编译了下，我这里没问题啊..
user-0 提问: 为什么Ctrl+z后有一个空行？如何去掉？

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

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

user: user-2
content: 这是运算符优先级的问题,==的优先级高于=

user: user-2
content: a=p1==&m; 这行代码条件不成立啊 先是p1==&m,条件不成立,为0 然后是a=0;\ 所以a的值是0 a=(p1==&m);
user-0 提问: C语言

回复:
user: user-1
content: int a[m][n];  scanf("%d%d",&m,&n);  把这两行换一个顺序  dev c++ 等编译器是可以支持的。 vs可能不支持，看你用的编译器是什么了

user: user-2
content: C语言中不能使用变量来给数组分配内存,除非你使用动态内存分配malloc,不然你这样定义数组是有问题的
user-0 提问: 用C语言编的能在linux操作系统里运行的简单打字程序，在中文文本里按Backspace健，屏幕上显示删除了半个汉字，但实际上删除了一个汉字。怎么处理？

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

user: user-0
content: 引用 1 楼 不闻窗外事的回复:一个汉字的utf8编码是3个字节；应该是两个字符吧，所以你一次删除一个字符，就是中文的一半啊，你说实际上删除了一个中文字符，但你的程序中实际上也是删除了一个字节的字符，即半个中文字符，所以一次删半个中文字符，恰好就是你程序的处理方式，这样反而会让你的程序以正确的方式运行；如果你想达到一次删除一个中文字符，你的程序也需要改，我对这方面不太了解，但是你可以尝试一下readline库，这个应该是支持的 utf8,中文是三个字节，可以测试的。

user: user-2
content: 自己挂钩子处理，如果是中文字符删除两个字节

user: user-0
content: 引用 1 楼 不闻窗外事的回复:一个汉字的utf8编码是3个字节；应该是两个字符吧，所以你一次删除一个字符，就是中文的一半啊，你说实际上删除了一个中文字符，但你的程序中实际上也是删除了一个字节的字符，即半个中文字符，所以一次删半个中文字符，恰好就是你程序的处理方式，这样反而会让你的程序以正确的方式运行；如果你想达到一次删除一个中文字符，你的程序也需要改，我对这方面不太了解，但是你可以尝试一下readline库，这个应该是支持的 readline库函数，有空试的时候我去试试看。

user: user-0
content: utf8,中文是三个字节，可以测试的。

user: user-3
content: 一个汉字的utf8编码是3个字节；应该是两个字符吧，所以你一次删除一个字符，就是中文的一半啊，你说实际上删除了一个中文字符，但你的程序中实际上也是删除了一个字节的字符，即半个中文字符，所以一次删半个中文字符，恰好就是你程序的处理方式，这样反而会让你的程序以正确的方式运行；如果你想达到一次删除一个中文字符，你的程序也需要改，我对这方面不太了解，但是你可以尝试一下readline库，这个应该是支持的
user-0 提问: 用指针和自定义函数求2字符串差值

回复:
user: user-1
content: 你的问题就是这个自定义函数要表达的。类似strcmp，比较两个字符串的大小（一个字符以字符的比较）

user: user-2
content: 严格来说，楼主帖子里的实现是有缺陷的，因为标准里的的字符比较要按照unsigned char来进行 4.11.4 Comparison functions     The sign of a nonzero value returned by the comparison functions is determined by the sign of the difference between the values of the first pair of characters (both interpreted as unsigned char ) that differ in the objects being compared.  这个代码才符合标准，注意里面的 unsigned char  int strcmp(const char *s1, const char *s2) {         while (*s1 == *s2++)                 if (*s1++ == '\0')                         return (0);         return (*(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1)); }

user: user-2
content: 4.11.4.2 The strcmp function  Synopsis           #include <string.h>          int strcmp(const char *s1, const char *s2);  Description     The strcmp function compares the string pointed to by s1 to the string pointed to by s2 .  Returns     The strcmp function returns an integer greater than, equal to, or less than zero, according as the string pointed to by s1 is greater than, equal to, or less than the string pointed to by s2 .

user: user-2
content: 4.11.4.2 The strcmp function  Synopsis           #include <string.h>          int strcmp(const char *s1, const char *s2);  Description     The strcmp function compares the string pointed to by s1 to the string pointed to by s2 .  Returns     The strcmp function returns an integer greater than, equal to, or less than zero, according as the string pointed to by s1 is greater than, equal to, or less than the string pointed to by s2 .

user: user-3
content: 字符串比较！！！
user-0 提问: 急急急  周六准备考试了  我还不懂

回复:
user: user-1
content: 你需要用C++标准的编译器编译才能编译通过，C标准的编译器没有“引用”这种语法的。

user: user-1
content: 你用什么工具写代码和编译的？

user: user-2
content: 加了什么地址符？你是怎么写的？
user-0 提问: 请问一下，如何把这些代码变成一个游戏

回复:
user: user-1
content: 文件夹里面大部分都是些游戏的配置文件。感觉入口应该是KEY吧

user: user-2
content: 谁知道呢，仅仅看文件名能得到什么信息呢？
user-0 提问: 求助大佬们

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

user: user-0
content: 引用 3 楼 與蘤舊縐 的回复：你的意思应该是数组中存的正整数都是4位的，应该不是把四个位上的数字分别存在数组里吧 那找素数和一般的没设么区别吧就是我产生的N个四位数，这里面求素数

user: user-2
content: 你的意思应该是数组中存的正整数都是4位的，应该不是把四个位上的数字分别存在数组里吧 那找素数和一般的没设么区别吧

user: user-0
content: 自定义函数中，在我定义的这个数组中求素数，这个不会。。。

user: user-2
content: 分开做呗，先找素数再排序，哪步不会
user-0 提问: C语言循环结构

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

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:？？？你是想问怎么分析吗~~ 循环你就拿张白纸，把变量列好，然后一次循环一行写下去，没什么理解不了的吧 要是懒得写，单步调试也行 就是想问他的流程图怎么画

user: user-2
content: ？？？你是想问怎么分析吗~~ 循环你就拿张白纸，把变量列好，然后一次循环一行写下去，没什么理解不了的吧 要是懒得写，单步调试也行
user-0 提问: 求c语言代码过程

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

user: user-2
content: #include <stdio.h> #include <string.h>  int main() { 	char string1[101]={0};//输入字符串1 	char string2[101]={0};//输入字符串2 	char string[201]={0};//输出字符串 	char *long_string=NULL; 	char *short_string=NULL;  	int str1_len=0;//字符串1的长度 	int str2_len=0;//字符串2的长度 	int result=0;//插入间隔  	int count=0; 	int index=0;//string字符串的索引 	int short_index=0;//较长字符串的索引 	int long_index=0;//较短字符串的索引   	scanf("%s",string1); 	scanf("%s",string2);  	//求字符串的长度 	str1_len=strlen(string1); 	str2_len=strlen(string2);  	//如果只输入了一个字符串，程序结束 	if(str1_len==0 ||str2_len==0) 		return 0;  	//比较两个字符串的长度，确定插入的间隔result 	if(str1_len >= str2_len) 	{ 		result=str1_len/str2_len; 		long_string=string1; 		short_string=string2; 	}else{ 		result=str2_len/str1_len; 		long_string=string2; 		short_string=string1; 	}   	while( long_string[long_index] != '\0') 	{ 			string[index]=long_string[long_index]; 			++long_index; 			++index; 			++count; 		if(count==result){ 			//如果已经插入了长字符串中的result个字符	 			count=0; 			if(short_string[short_index]!='\0') 			{ 				//插入短字符串的一个字符 				string[index]=short_string[short_index]; 				++index; 				++short_index; 			} 		}  	} 	//输出完成的字符串 	printf("%s\n",string);  	return 0; } 思路：先求出两个字符串的长度，求出插入间隔，将较短的字符串插入到较长字符串。程序里写了详细的注释，不懂的地方可以再问，希望采纳！

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:三个字符数组，第三个用来存结果，循环中搞个递增的变量，当自增间隔+1时向第三个数组中放入第二个数组的元素，否则放第一个数组的 只是大致思路，可改进地方不少 求看一看核心代码过程

user: user-3
content: 三个字符数组，第三个用来存结果，循环中搞个递增的变量，当自增间隔+1时向第三个数组中放入第二个数组的元素，否则放第一个数组的 只是大致思路，可改进地方不少
user-0 提问: c语言的相关问题！求助

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

user: user-2
content: 双引号前面麻烦加个空格好吗？
user-0 提问: 求一个班级的平均成绩→

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

user: user-2
content: 引用 1 楼 寻开心的回复:score是个浮点数 ，怎么可以和'\n'字符做比较呢  用会车作为退出，不是好的设计方法，  会车在很多输入函数里面都是用于确定输入的  你可以用 0 == scanf（“%f”， &score）来实现，当你输入的不是浮点数的时候， scanf返回0， 借此退出 谢谢，我知道啦。

user: user-3
content: score是个浮点数 ，怎么可以和'\n'字符做比较呢  用会车作为退出，不是好的设计方法，  会车在很多输入函数里面都是用于确定输入的  你可以用 0 == scanf（“%f”， &score）来实现，当你输入的不是浮点数的时候， scanf返回0， 借此退出
user-0 提问: pta题目 7-2 找出数组中元素的最大数，并指出其位置

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

user: user-2
content: 你自己觉得难点在哪里
user-0 提问: c语言

回复:
user: user-1
content: scanf输入格式里面不要用换行符\n ++a%1这种表达式尽量不要写 还有a%1结果必然是0，这种运算有何意义？

user: user-2
content: 定义的float.double类型输入设置的却是int类型
user-0 提问: 这不会也是函数吧

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

user: user-2
content: 改成struct student *max(...) 返回时return &s[m];

user: user-3
content: 函数声明与函数调用的区别：注意下函数参数的不同，函数参数带数据类型的 是函数声明（或函数定义，函数声明末尾带分号；），不带类型的是函数调用～

user: user-2
content: 应该返回指针，不要这样写

user: user-4
content: 你这里 struct student 和student是等价的，MAX是一个参数为student一维数组，返回值是一个student结构体的函数

user: user-5
content: 引用 2 楼 qq_45815575的回复:[quote=引用 1 楼 qq_45798109的回复:]第十五行是函数声明，如果没有这一行你32行之前调用这个函数，它是找不到这个函数，会报错的，这一行就是告诉编译器我有这个函数，只不过函数写后面了。 第三十二行到 void print (struct student stud)前面那一行是函数原型（也就是你说的函数） 这是结构体定义的函数吗？[/quote] 就是一个返回值类型为结构体类型的函数

user: user-0
content: 引用 1 楼 qq_45798109的回复:第十五行是函数声明，如果没有这一行你32行之前调用这个函数，它是找不到这个函数，会报错的，这一行就是告诉编译器我有这个函数，只不过函数写后面了。 第三十二行到 void print (struct student stud)前面那一行是函数原型（也就是你说的函数） 这是结构体定义的函数吗？

user: user-5
content: 第十五行是函数声明，如果没有这一行你32行之前调用这个函数，它是找不到这个函数，会报错的，这一行就是告诉编译器我有这个函数，只不过函数写后面了。 第三十二行到 void print (struct student stud)前面那一行是函数原型（也就是你说的函数）
user-0 提问: c语言

回复:
user: user-1
content: 引用 1 楼 qq_45798109的回复:输出的是后面的表达式的真值，若为真输出1若为假输出0，而你后面是赋值不是判断，只要赋值成功就是真 错啦，只要赋值的数不是0就是真

user: user-2
content: a =3  b = -1  3 && 1 为真所以 这个表达式的值为1

user: user-1
content: 输出的是后面的表达式的真值，若为真输出1若为假输出0，而你后面是赋值不是判断，只要赋值成功就是真
user-0 提问: C语言

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

user: user-2
content: 引用 4 楼 baidu_39603834的回复:[quote=引用 3 楼 qq_45798109的回复:][quote=引用 2 楼 baidu_39603834的回复:][quote=引用 1 楼 qq_45798109的回复:]你这个除了2输出的应该都是不是素数吧，除了n=2，else里面n%（n-1）肯定不是零啊 你试试，我试了能行的，但想找出漏洞[/quote] 你这个循环只要执行一次就肯定会break的，else里面写的不对，n除以一个数不是0不能代表他不是素数[/quote] 你上机，试试行吗，if后有花括号，%取余的符合[/quote] 抱歉，我电脑昨天坏掉了， 不是花括号的问题你设的那个循环if和else肯定会满足一个的，执行一次就break了，根本没有什么意义，你可以代一个数自己手算一下

user: user-0
content: 引用 3 楼 qq_45798109的回复:[quote=引用 2 楼 baidu_39603834的回复:][quote=引用 1 楼 qq_45798109的回复:]你这个除了2输出的应该都是不是素数吧，除了n=2，else里面n%（n-1）肯定不是零啊 你试试，我试了能行的，但想找出漏洞[/quote] 你这个循环只要执行一次就肯定会break的，else里面写的不对，n除以一个数不是0不能代表他不是素数[/quote] 你上机，试试行吗，if后有花括号，%取余的符合

user: user-0
content: 我试了下，代码错了

user: user-0
content: 引用 5 楼 qq_45798109的回复:[quote=引用 4 楼 baidu_39603834的回复:][quote=引用 3 楼 qq_45798109的回复:][quote=引用 2 楼 baidu_39603834的回复:][quote=引用 1 楼 qq_45798109的回复:]你这个除了2输出的应该都是不是素数吧，除了n=2，else里面n%（n-1）肯定不是零啊 你试试，我试了能行的，但想找出漏洞[/quote] 你这个循环只要执行一次就肯定会break的，else里面写的不对，n除以一个数不是0不能代表他不是素数[/quote] 你上机，试试行吗，if后有花括号，%取余的符合[/quote] 抱歉，我电脑昨天坏掉了， 不是花括号的问题你设的那个循环if和else肯定会满足一个的，执行一次就break了，根本没有什么意义，你可以代一个数自己手算一下[/quote] 你自己上机试试，，，，

user: user-2
content: 引用 2 楼 baidu_39603834的回复:[quote=引用 1 楼 qq_45798109的回复:]你这个除了2输出的应该都是不是素数吧，除了n=2，else里面n%（n-1）肯定不是零啊 你试试，我试了能行的，但想找出漏洞[/quote] 你这个循环只要执行一次就肯定会break的，else里面写的不对，n除以一个数不是0不能代表他不是素数

user: user-0
content: 引用 1 楼 qq_45798109的回复:你这个除了2输出的应该都是不是素数吧，除了n=2，else里面n%（n-1）肯定不是零啊 你试试，我试了能行的，但想找出漏洞

user: user-2
content: 你这个除了2输出的应该都是不是素数吧，除了n=2，else里面n%（n-1）肯定不是零啊
user-0 提问: c语言

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

user: user-2
content: 不能以数字开头，这是语法规定

user: user-3
content: 只能以字母或下划线做首位
user-0 提问: 有关结构体的问题

回复:
user: user-0
content: 引用 7 楼 datoulaile123的回复:[quote=引用 6 楼 Anorak Bear 的回复:] [quote=引用 3 楼 datoulaile123 的回复:] std是一个命名空间啊，你换一个就ok了 原来是这样啊，我刚学结构体，不知道还有这个东西[/quote] 像string这些，就会写std::string  或者开头加上using namespace std;[/quote] 这个是和C++有关吗

user: user-1
content: 引用 6 楼 Anorak Bear 的回复:[quote=引用 3 楼 datoulaile123 的回复:] std是一个命名空间啊，你换一个就ok了 原来是这样啊，我刚学结构体，不知道还有这个东西[/quote] 像string这些，就会写std::string  或者开头加上using namespace std;

user: user-0
content: 引用 3 楼 datoulaile123 的回复:std是一个命名空间啊，你换一个就ok了 原来是这样啊，我刚学结构体，不知道还有这个东西

user: user-0
content: 引用 2 楼 user-2 的回复:gets_s 难道不应该是两个参数吗 没有超出范围的话一个参数也可以吧

user: user-0
content: 引用 1 楼 user-2 的回复:全部使用scanf，会出现这个警告 在文件开头增加  #define _CRT_SECURE_NO_WARNINGS  不是，我是使用的scanf_s，我的意思是写成 scanf_s("%d %s", &student[i].id  , student[i].name); 这样会报错

user: user-1
content: std是一个命名空间啊，你换一个就ok了

user: user-2
content: gets_s 难道不应该是两个参数吗

user: user-2
content: 全部使用scanf，会出现这个警告 在文件开头增加  #define _CRT_SECURE_NO_WARNINGS
user-0 提问: 十六进制转换十进制

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

user: user-2
content: 连续输入一批以 # 结束的字符串(字符串的长度不超过80)，遇 ## 则全部输入结束。

user: user-0
content: 谢谢，虽然有点看不懂，但还是要谢谢你

user: user-3
content: #include<stdio.h> #define MAXLEN 80  int main( ) {     int i,k;     long number;     char ch,oldch,str[MAXLEN], num[MAXLEN];      oldch=' ';     while((ch=getchar())!='#'||oldch!='#')     {         k=0;         while(ch!='#'&& k< MAXLEN-1)         {             str[k++]=ch;             ch=getchar();         }         oldch='#';         str[k]=0;         /*---------*/ #define isDigit(x)  ((x) >= '0' && (x) <= '9') #define isA2F(x)    ((x) >= 'A' && (x) <= 'F') #define isa2f(x)    ((x) >= 'a' && (x) <= 'f') #define isXDigit(x) (isDigit(x) || isA2F(x) || isa2f(x))         number = 0;         for (i = 0; i < k; i++)         {             if (isXDigit(str[i]))                 num[number++] = str[i];         }         num[number] = 0;         k = number;         number = 0;         for (i = 0; i < k; i++)         {             if (isDigit(num[i]))                 number = number * 16 + (num[i] - '0');             else if (isA2F(num[i]))                 number = number * 16 + 10 + (num[i] - 'A');             else if (isa2f(num[i]))                 number = number * 16 + 10 + (num[i] - 'a');         }         printf("%ld\n",number);     } }

user: user-0
content: 引用 1 楼 user-4的回复:printf("%ld\n",number);   你这number都没赋值啊。。。 就是要填空，这是大概的构架

user: user-4
content: printf("%ld\n",number);   你这number都没赋值啊。。。
user-0 提问: 删除字符串子串

回复:
user: user-1
content: 引用 1 楼 不闻窗外事 的回复:strcpy直到‘\0’才停止，你需要的是memcpy，不是strcpy 你这么说用strncpy也是可以的

user: user-2
content: 我觉得，这个if都不需要判断了

user: user-0
content: 引用 12 楼 SuperDay的回复:我给你发的那个完全没看懂吗？ if(s+n)这个条件恒等于true，明白吗？ 那*（s+n）='\0'可否？

user: user-0
content: 那*（s+n）='\0'可否？

user: user-0
content: strstr返回原字符串中目标字符串的第一个位置 处理完后更新原字符串 直到strstr返回null strcpy把(s=strstr())+n位置放到s上

user: user-2
content: 我给你发的那个完全没看懂吗？ if(s+n)这个条件恒等于true，明白吗？

user: user-0
content: 引用 10 楼 章泽琨的回复:[quote=引用 7 楼 SuperDay的回复:]如果s等于NULL，除非n也刚好等于0，那么s+n确实是等于NULL。但这几乎是不可能的！s也不等于NULL，所以s+n基本没有等于NULL的可能性 我真的不知道啊。s+n难道不是指针加法？指向s+n位置？我计划是判断s+n位置。有什么语法错误吗？[/quote] 这个可以换成*(s+n)吧

user: user-0
content: 引用 7 楼 SuperDay的回复:如果s等于NULL，除非n也刚好等于0，那么s+n确实是等于NULL。但这几乎是不可能的！s也不等于NULL，所以s+n基本没有等于NULL的可能性 我真的不知道啊。s+n难道不是指针加法？指向s+n位置？我计划是判断s+n位置。有什么语法错误吗？

user: user-2
content: 你这程序根本就是逻辑混乱啊，还能指望它能正确运行，难道是想碰碰运气吗？

user: user-0
content: 第二个程序是可以运行的，但是不知道哪里的问题，无法完全通过。测试了很多次，没发现问题

user: user-2
content: 如果s等于NULL，除非n也刚好等于0，那么s+n确实是等于NULL。但这几乎是不可能的！s也不等于NULL，所以s+n基本没有等于NULL的可能性

user: user-0
content: 引用 5 楼 SuperDay的回复:s+n会等于NULL吗？好好想想 我是这样理解的，指针指向'\0'时返回空指针 与*(s+n)等同吧？求大佬指点

user: user-2
content: s+n会等于NULL吗？好好想想

user: user-0
content: 引用 2 楼 SuperDay的回复:第二个程序很混乱，if(s+n)做什么？还有strcpy什么意思？ 库函数，把s+n位置的字符串加到s的位置

user: user-0
content: 引用 2 楼 SuperDay的回复:第二个程序很混乱，if(s+n)做什么？还有strcpy什么意思？ 判断s+n是否为null

user: user-2
content: 第二个程序很混乱，if(s+n)做什么？还有strcpy什么意思？

user: user-3
content: strcpy直到‘\0’才停止，你需要的是memcpy，不是strcpy
user-0 提问: 又是一个指针小问题，求大佬解答一下

回复:
user: user-1
content: VS2015调试，没出现你说的情况

user: user-0
content: 引用 2 楼 不闻窗外事的回复:scanf("%d",&n); for(i = 0;i < n;i++) 输入几组数据不是由你自己决定的，如果a[4]的时候输入4组数据会怎样 如果a[4]输入4组，就会在输入第4组数据输入一半的时候无法输入，然后就什么都没有输出，就结束了

user: user-0
content: 引用 4 楼 ~稻草人~的回复:a［4］，也能输入4组数据吖。 只要scanf("%d",&n);中输入的n，不大于a［n］中的n，就不会出错。 其实，输入的n大于数组定义的大小n，有时也不报错，能正常输入输出。。。。 如果a[4]输入4组，就会在输入第4组数据输入一半的时候无法输入，然后就什么都没有输出，就结束了

user: user-0
content: 引用 2 楼 不闻窗外事的回复:scanf("%d",&n); for(i = 0;i < n;i++) 输入几组数据不是由你自己决定的，如果a[4]的时候输入4组数据会怎样 如果a[4]输入4组，就会在输入第4组数据输入一半的时候无法输入，

user: user-2
content: a［4］，也能输入4组数据吖。 只要scanf("%d",&n);中输入的n，不大于a［n］中的n，就不会出错。 其实，输入的n大于数组定义的大小n，有时也不报错，能正常输入输出。。。。

user: user-3
content: 并没有指针，可能是输入问题，检查scanf的输入情况

user: user-4
content: scanf("%d",&n); for(i = 0;i < n;i++) 输入几组数据不是由你自己决定的，如果a[4]的时候输入4组数据会怎样

user: user-0
content: 求大佬解答！！！！！
user-0 提问: 请问C语言如何同时输入多个字符串？

回复:
user: user-0
content: 净说大实话！真实打击

user: user-1
content: 在控制台中通过键盘输入数据时，以回车键作为结束标志。当输入结束后，键盘输入的数据连同回车键一起被输入到输入缓冲区中。在程序中第一次调用getchar()函数从输入缓冲区中读取一个字节的数据。需要注意的是，如果此时在程序中第二次调用getchar()函数，因为此时输入缓冲区中还有回车键的数据没有被读出，第二个getchar()函数读出的是回车符。 以上摘自《C++中getchar()的使用方法》 解决的方法在该文中也有介绍，希望能够帮到你！

user: user-2
content: 这个本来就是让学生了解几种输入方法之间的区别的，  就不说答案，  憋着让他自己去找资料才印象深刻

user: user-3
content: 因为gets是遇到换行符直接返回，所以第二个字符串什么也没让输入。 解决办法就是把换行符去掉，即用getchar()吃掉。

user: user-4
content: 一个方法输入完后，后面接个getchar();将回车换行给读了，不然回车换行就会存到你下一个输入语句里面，就导致了提前结束。
user-0 提问: 求解决C语言

回复:
user: user-1
content: #include <stdio.h>  int main() {     int big[10][10], small[10][10];     int B, S;     printf("Please inpu big matrix:\n");     scanf("%d", &B);     int i,j;     for ( i=0; i<B; i++)         for (j=0; j<B; j++)             scanf("%d", &big[i][j]);     scanf("%d", &S);     for ( i=0; i<S; i++ )         for (j=0; j<S; j++)             scanf("%d", &small[i][j]);      for ( i=0; i<=B-S; i++ )         for ( j=0; j<=B-S; j++ ) {             // 从这里开始进行两个矩阵的匹配             int k=0, l=0, c=0; // c计算有几个相等的数字             for ( k=0; k<S; k++ ) {                 for (l=0; l<S; l++)                     if (small[k][l] != big[i+k][j+l]) break; else c++;                 if ( c%S ) break; // 非0表示是中间break出来的             }             if (k!=S || l!=S ) continue;             printf("%d,%d\n", i, j);             return 0;         }     return 0; }

user: user-0
content: 引用 1 楼 寻开心的回复:定义两个二维矩阵        int  big[10][10],  small[10][10]; 把两个矩阵分别输入进去  然后对大矩阵上的数做循环， 查找是否和小矩阵的第一个数字匹配，如果匹配继续检测后续的匹配就是了  这个题目没有什么难度啊。 自己尝试写吧， 有问题贴出来， 这种简单的题目尽量不要直接要代码， 那无益于学习 我已经想了很久，我知道这么做，但我不知道怎么用代码表示，你能写一写关键代码嘛，谢谢您了。我有点笨，能想出来但是有时候不知道怎么转换代码

user: user-1
content: 定义两个二维矩阵        int  big[10][10],  small[10][10]; 把两个矩阵分别输入进去  然后对大矩阵上的数做循环， 查找是否和小矩阵的第一个数字匹配，如果匹配继续检测后续的匹配就是了  这个题目没有什么难度啊。 自己尝试写吧， 有问题贴出来， 这种简单的题目尽量不要直接要代码， 那无益于学习
user-0 提问: 各位大佬看看我这c语言写的判定素数程序错在哪

回复:
user: user-0
content: 引用 2 楼 fireyou的回复: for (i = 2; i < n; i++)         {             if (n%i == 0)             {                 a = 0;                 break;//这里跳出循环             }             else             {                 a = 1;             }         }  case 0: case 1: 不要加引号 但我在加了break;之后就显示我的else前没有if

user: user-1
content: switch(a) { case '0':   //改成0 printf("%d不是素数",n); break; case '1':   //改成1 printf("%d是素数",n); break; }  注意下，0和'0'对于十进制是有差值的，其实不是相等的。'0'是0x30即，48；

user: user-2
content: for (i = 2; i < n; i++)         {             if (n%i == 0)             {                 a = 0;                 break;//这里跳出循环             }             else             {                 a = 1;             }         }  case 0: case 1: 不要加引号

user: user-3
content: 因为你在判断之后并没有中断还会继续运行循环，也就是虽然9%3==0了但是还会继续判断9%4,9%5，……。

user: user-2
content: 你看看我写的。用大括号括起来啊。 引用 4 楼 weixin_45939960 的回复:[quote=引用 2 楼 fireyou的回复:] for (i = 2; i < n; i++)         {             if (n%i == 0)             {                 a = 0;                 break;//这里跳出循环             }             else             {                 a = 1;             }         }  case 0: case 1: 不要加引号 但我在加了break;之后就显示我的else前没有if[/quote]
user-0 提问: 为什么内存重叠时，memcpy拷贝并不会出问题，它和memmove的区别在哪里呢？

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

user: user-2
content: 引用 8 楼 ~稻草人~ 的回复:这样说吧，你有点钻错方向了，memcpy不适合操作整数。 int a[0]=9;  在内存上存储的是32个位：00000000 00000000 00000000 00001001 你用memcpy复制，是按字节8个位操作：00000000，然后，很容易有各种问题。 mem开头的函数，如memcpy，memset等，一般用作字符串处理。 但用C玩字符串的，如嵌入式开发，都很少用这几个函数，不就四五行代码么，自己写一个就好，心理能清晰操作过程，还能自由控制'\0'。 字符串那几个函数都是str开头的吧，那些才需要注意\0的问题。嵌入式开发mem函数用的也不少哦

user: user-3
content: 5 楼说得很好，未定义行为不代表程序就会出错。正是由于这个原因，你去看所谓的 memcpy 的源码是完全没有用的，那只是一个等效代码，而实际代码可能都是汇编。实际的 memcpy 往往会充分利用 CPU 指令集优化，如使用 long 甚至是 __m128 作为一个拷贝单位，于是会产生"正确"拷贝的假象，但数据量一大就不行了。

user: user-0
content: 引用 6 楼 ~稻草人~ 的回复:给你一个提示： 你定义的数据是：    int (有符号，4字节) memcpy操作的是：char (1字节，不一定有符号) 大佬，再给点提示呗。不太懂

user: user-4
content: 给你一个提示： 你定义的数据是：    int (有符号，4字节) memcpy操作的是：char (1字节，不一定有符号)

user: user-5
content: 未定义行为并非一定出错，而是不保证他是正确的，这对程序而言是致命的

user: user-0
content: 引用 1 楼 user-8 的回复: 你贴的这个memcpy代码 只是一个实例代码  实际memcpy实现要复杂得多 会用到很多优化 你这个是什么编译器？

user: user-6
content: 并不是都能正确完成copy，你可以试试更多的数据，就会出错，现在只是因为你的测试数据太少了，恰好正确而已

user: user-7
content: 库函数实现可能通过判断两个地址大小，做正序或者逆序复制，但以前的实现都是直接采用汇编指令来做，效率也是最高的，必然存在地址重叠问题

user: user-8
content: 你贴的这个memcpy代码 只是一个实例代码  实际memcpy实现要复杂得多 会用到很多优化

user: user-4
content: 这样说吧，你有点钻错方向了，memcpy不适合操作整数。 int a[0]=9;  在内存上存储的是32个位：00000000 00000000 00000000 00001001 你用memcpy复制，是按字节8个位操作：00000000，然后，很容易有各种问题。 mem开头的函数，如memcpy，memset等，一般用作字符串处理。 但用C玩字符串的，如嵌入式开发，都很少用这几个函数，不就四五行代码么，自己写一个就好，心理能清晰操作过程，还能自由控制'\0'。
user-0 提问: 在进行事件的发布和订阅时出了问题，不知道怎么解决？

回复:
user: user-1
content: 可以结贴，并且你这个是JAVA吧？干嘛发到这边来呢？

user: user-0
content: 不好意思，乱掉了，这个怎么删除啊
user-0 提问: 用递归函数如何解决捡豆子问题？？

回复:
user: user-1
content: double Pick(int n){ if(n<=0)     return 0; if(n==1)     return 1;  if(n==2)     return Pick(n-1) + 1; if(n==3)     return Pick(n-1) + Pick(n-2) + 1; if(n==4)     return Pick(n-1) + Pick(n-2) + Pick(n-3) + Pick(n-4) +1; if(n>4)     return Pick(n-1) + Pick(n-2) + Pick(n-3) + Pick(n-4);  }

user: user-1
content: 我这个代码在pta上满分

user: user-2
content: 自己去完善：  int pick(int n){ 	 	if(n<0) 		return 0; 	if(n==1 || n==0) 		return 1; 	if(n==2) 		return pick(n-1) + pick(n-2); 	if(n==3) 		return pick(n-1) + pick(n-2) + pick(n-3); 	if(n>=4) 		return pick(n-1) + pick(n-2) + pick(n-3) + pick(n-4); }
user-0 提问: 关于指针和变量问题

回复:
user: user-1
content: 实际工作中，最好不要这么写。

user: user-2
content: p是b变量的地址， b是char类型只占据1个字节。 p把它强制转化成了4个字节的int， 所以写入的时候必然侵占了其他的空间 b和a是相邻存储空间， 写入b开始的4个字节影响了a  测试方法：      union {           char c[4]           int n;      } u;      u.n = 0x30313233; 自己看看c的情况

user: user-3
content: 这样是会越界的，你用的编译器刚好可以逃过一劫而已
user-0 提问: C语言编程题，如何写出这道结构体指针的题目呢？求大神帮帮忙

回复:
user: user-0
content: 顶一下，希望有多点人看到

user: user-0
content: 引用 3 楼 qq_45798109 的回复:[quote=引用 2 楼 weixin_39224267的回复:][quote=引用 1 楼 qq_45798109 的回复:] 结构题数组，sort排序 求代码，我写了，然后出现各种bug 一团糟[/quote] 你可以把代码贴出来，会有人帮你改的。我电脑今天坏掉了[/quote]  那就麻烦您了~谢谢你 #include <stdio.h> #define BN 2 #include <string.h> struct BOOK{ 	int num; 	char name[20]; 	double price; 	int stock; }; struct BOOK bs[BN]; void inputBook(){ 	for(int i=0;i<BN;++i) 		scanf("%d %s %lf %d",&bs[i].num,bs[i].name,bs[i].price,bs[i].stock); } void sortBook() { 	for(int i=0;i<BN;++i) 	{ //冒泡降序排序  		for(int j=0;i<BN-i-1;++j) 		{ 			int cmp=strcmp(bs[j].name,bs[j+1].name); 			if(cmp>0 || (cmp==0 && bs[j].price<bs[j+1].price)) 			{ 				struct BOOK t = bs[j]; 				bs[j] = bs[j+1]; 				bs[j+1]=t; 			} 		} 	} } void writeBook(){ 	FILE* fp; 	fp= fopen("D:\book.dat","w"); 	if(fp==NULL) 		exit(1); 	for(int i=0;i<BN;++i) 		fwrite(&bs[i],sizeof(struct BOOK),1,fp); 	printf("write file done \n"); 	fclose(fp);	 } int main(){ 	inputBook(); 	sortBook(); 	writeBook(); 	return 0; }

user: user-1
content: 引用 2 楼 weixin_39224267的回复:[quote=引用 1 楼 qq_45798109 的回复:] 结构题数组，sort排序 求代码，我写了，然后出现各种bug 一团糟[/quote] 你可以把代码贴出来，会有人帮你改的。我电脑今天坏掉了

user: user-0
content: 引用 1 楼 qq_45798109 的回复:结构题数组，sort排序 求代码，我写了，然后出现各种bug 一团糟

user: user-1
content: 结构题数组，sort排序
user-0 提问: c语言新手求指导

回复:
user: user-0
content: 啊，改好了。 感谢大佬

user: user-0
content: 啊，后面多了感叹号，呜呜呜不会改。

user: user-0
content: 我以为用gets就行了，现在改成用scanf就能运行了。 谢谢大佬

user: user-1
content: 你都没输入字符串的语句

user: user-0
content: 还没输入m，就输出了乱码

user: user-1
content: 楼主是任何知道还没到那一步就结束了呢？

user: user-0
content: 题目是这个： 有一字符串，包含n个字符。写一函数，将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
user-0 提问: 【c语言入门题】是否有人愿意帮忙指出我的代码的错误？感谢。

回复:
user: user-0
content: 引用 12 楼 寻开心的回复:从你的代码流程看， 218， 39的输入。 最开始是len1>len2 的。  但是在第一个if里面的len1--， len2--等各种操作之后， len1和len2的大小关系变化了。 出了第一个if后，len1和len2的关系，满足了第三个if的判断  实际上你那三个if之间，应该是 if  。。。else if。。。 else if 关系 超级感谢！我加了else之后代码就在oj上通过了！问题就是出在这里！谢谢！

user: user-1
content: 从你的代码流程看， 218， 39的输入。 最开始是len1>len2 的。  但是在第一个if里面的len1--， len2--等各种操作之后， len1和len2的大小关系变化了。 出了第一个if后，len1和len2的关系，满足了第三个if的判断  实际上你那三个if之间，应该是 if  。。。else if。。。 else if 关系

user: user-1
content: 引用 5 楼 GuoJue_x 的回复:[quote=引用 1 楼 寻开心的回复:]main函数里面，scanf里面数组前面怎么还有& substract函数里面 len1 和 len2为啥要strlen取得后减1 ？  你这个代码能跑吗？？？ scanf里读字符串时加了地址符是我犯了语法错误，已改正，谢谢提醒。 关于取strlen后减1的目的，是为了在后面用到数组里，因为strlen是表示数组长度嘛，但数组中最后一个元素的序号是要比长度少一位的[/quote] 这个不是像你说的那样 strlen返回的就是你输入的字符串的长度，如数318，长度就是3；  放到数组里面，实际占位在数组里面反而是4个，尾巴被scanf函数自动补齐一个’\0‘放到数组里面了  至于为什么进入第三个if， 是因为你的三个if之间并不是if  。。。。 else if 。。。。 这种关系； 从第一个执行完，条件变化了，再次进入了第三个if 你可以在第二个if之前输出一下 len1和len2等几个相关的判断用的数值来验证这点

user: user-0
content: 引用 8 楼 寻开心的回复:https://bbs.csdn.net/topics/395184588?page=1#post-409898991 这里做了一个加法的， 可参考 减法是类似的，稍微复杂一点儿 谢谢！不过做加法的我已经做出来了，做减法的也已写出大概。但不知道是哪个细节出了问题，导致出现了我在提问的结尾处提到了的疑惑。可以麻烦您帮忙解答一下楼主处我写在代码后的疑惑吗？

user: user-0
content: 引用 3 楼 寻开心的回复:看着好复杂啊  尾巴对齐，不一样长的前面补充上0， 然后比较大小确定减去谁 而后再循环执行一遍减法就好  没这么复杂啊 请问我在结尾处写下的疑惑是否有人能够解答？

user: user-1
content: https://bbs.csdn.net/topics/395184588?page=1#post-409898991 这里做了一个加法的， 可参考 减法是类似的，稍微复杂一点儿

user: user-0
content: 引用 2 楼 user-3的回复:scanf("%s %s", a, b) != EOF 该语法错误已改正，谢谢指正。

user: user-0
content: 可能是因为我的substract函数太长了 我在substract函数里进行了分类讨论，分别是a＞b， a＝b，a＜b的情况

user: user-0
content: 引用 1 楼 寻开心的回复:main函数里面，scanf里面数组前面怎么还有& substract函数里面 len1 和 len2为啥要strlen取得后减1 ？  你这个代码能跑吗？？？ scanf里读字符串时加了地址符是我犯了语法错误，已改正，谢谢提醒。 关于取strlen后减1的目的，是为了在后面用到数组里，因为strlen是表示数组长度嘛，但数组中最后一个元素的序号是要比长度少一位的

user: user-2
content: 写过大数阶乘的例子，要用到这个模块，

user: user-1
content: 看着好复杂啊  尾巴对齐，不一样长的前面补充上0， 然后比较大小确定减去谁 而后再循环执行一遍减法就好  没这么复杂啊

user: user-3
content: scanf("%s %s", a, b) != EOF

user: user-1
content: main函数里面，scanf里面数组前面怎么还有& substract函数里面 len1 和 len2为啥要strlen取得后减1 ？  你这个代码能跑吗？？？
user-0 提问: 编程大一新生 有些问题真的搞不懂  请大神帮助

回复:
user: user-0
content: 就是三门课程总分的平均分 用这个平均分来判断

user: user-1
content: 哈这下子，只要不是太渣渣，人人都一等奖了 。 总分300，三门总分考到90都不到的也太罕见了吧，只要不挂科不违纪绝对都一等奖了

user: user-0
content: 我们老师之前上课布置的我自己也感觉不对然后我也在第四楼 我自己的理解 我感觉我那个应该可以写出程序

user: user-0
content: 判断奖学金，三门课语数英每门满分100，总分300，然后判断这名学生是否是班干部 ，如果是班干部在最后的总得分上+2分，总得分大于80分得三等奖学金，大于85分得二等奖学金，大于90得一等奖学金，总得分公式是三门课程的平均分➕是不是班干部，还要筛选有没有有不合格，有不合格就直接不参加奖学金的活动

user: user-1
content: if ( 挂科 或者 违纪 ） 返回没奖励  value = 平均分*0.5 + （是班干部吗）？2 ： 0；  if （value 大于 90 ） return 一等奖  else if （value 大于 85 ） return 二等奖  else if （value大于80 ） return 三等奖  else return 没奖   这么做，所有人都是没有奖励。 因为平均分儿*0.5 最大50 ， value无论如何都不能大于80  所以你的平均分占50%是个什么鬼？ 干脆改代码得了，  变成 if （学生 == 楼主 ） return 一等奖 else return 无奖 。 简单明了

user: user-2
content: 楼主能不能把需求解释清楚一点，整个就是逻辑混乱
user-0 提问: c语言学生成绩管理系统

回复:
user: user-1
content: 统计有多少个学生的意思咯，如果后面还要算总平均分不就要这个值了吗

user: user-2
content: 实际的学生总数吧～虽然数组定义了是1000，但是实际学生个数有1000吗？

user: user-3
content: students[1000]这个数组里面输入的学生信息，通过num来计数，一开始是0，每次输入一个学生信息num增加1
user-0 提问: 求一个设备管理系统C程序的源码，谢谢

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

user: user-2
content: 参考博客： https://blog.csdn.net/user-2/article/details/99734501
user-0 提问: 一个小小的指针问题，求大佬解答

回复:
user: user-1
content: 不能改成p1, p2,因为p1,p2已经指向了字符串的末尾～

user: user-0
content: 引用 1 楼 與蘤舊縐 的回复:你这一通操作*p1和*p2都指到字符串末尾去了，还能打印出来个鬼~~，要打印也得先重新指定两个指针的指向  打印字符串也是p1和p2，不是*p1和*p2，不然拿%s打印字符恐怕有点问题

user: user-2
content: *p1 *p2都是字符，不可以的；并且p1 p2位置都已经移动了，指向NULL的位置，就是空字符串，输出没有意义

user: user-0
content: 你这一通操作*p1和*p2都指到字符串末尾去了，还能打印出来个鬼~~，要打印也得先重新指定两个指针的指向
user-0 提问: gcc中，出现conflicting types for 错误

回复:
user: user-1
content: 把函数提前到main()之前？

user: user-2
content: 声明就按照定义的void cleanup(); 保持一致的原型

user: user-2
content: 为什么要写extern cleanup();？知道这意味着什么吗？
user-0 提问: 二叉树

回复:
user: user-0
content: 看懂了 谢谢哈，我就是没答案，对哈你的，就放心了

user: user-0
content: 看懂了 谢谢哈，我就是没答案，对哈你的，就放心了

user: user-1
content: 先:28 25 40 55 60 33 08 54 中:55 40 25 60 28 08 33 54 后:55 40 60 25 08 54 33 28  左孩子连前驱，右孩子连后驱  void Preorder(bitree *t) {   if(t)     {   visit(t);         Preorder(t->lchild);         Preorder(t->rchild);     } }  这些书上都有的，建议先看书再做题

user: user-1
content: 这么简单推荐好好看看书
user-0 提问: 求大佬解答

回复:
user: user-1
content: 按照题目的要求构造一个函数g(x), 来计算x的因子的个数 简单的例子： int g(int x) {        if (1==x) return 1;        int c=2, i;        for ( i=2; i<x; i++ ) if (  x%i==0 ) c++; // 1 和x都是固有的因子，所以c从2开始计数        return c; } 主函数当中，获取了a和b之后， 在a，b之间循环调用g函数，并记录当前最大因子数的值和对应的数 只有大于当前最大因子数的才替换， 这样确保最大因子数保留的是【a,b】范围内最小的
user-0 提问: 求各位大佬帮我解答一下问题

回复:
user: user-1
content: 你的二维数组定义的有问题吧，数组是不能定义为a[N][N]的，N应该直接是个常数，你去看看书。

user: user-2
content: 问题是scanf下，无法确定什么时候是输入完啊。 这不是从磁盘文件读入数据到文件结尾自然就完了 键盘输入的时候系统不知道你是不是还要继续输入，只能处于等待状态。

user: user-0
content: 引用 1 楼 寻开心 的回复：你要达到什么目的啊？设计一个退出模式吗？     那你可以在while里面scanf获得到的n做判断，如果是0或者负数或者大于你定义的N的时候，执行return 0；就可以了  你现有的设计逻辑就是无限的等待用户输入数字， 那么就只能在输入数字的范围上想办法刚学c语言 不太懂

user: user-0
content: 引用 1 楼 寻开心 的回复：你要达到什么目的啊？设计一个退出模式吗？     那你可以在while里面scanf获得到的n做判断，如果是0或者负数或者大于你定义的N的时候，执行return 0；就可以了  你现有的设计逻辑就是无限的等待用户输入数字， 那么就只能在输入数字的范围上想办法那我是要输入大于n的再退出吗？我是想输入完数字后直接退出

user: user-0
content: 那我是要输入负数或者大于n的才退出吗 我是想我输完数字后接着就直接退出了

user: user-2
content: 你要达到什么目的啊？设计一个退出模式吗？     那你可以在while里面scanf获得到的n做判断，如果是0或者负数或者大于你定义的N的时候，执行return 0；就可以了  你现有的设计逻辑就是无限的等待用户输入数字， 那么就只能在输入数字的范围上想办法
user-0 提问: C 语言

回复:
user: user-1
content: if(i%2 == 0)偶数，else奇数

user: user-2
content: 是分别输出数组里面的奇数和偶数吗？       循环两次，一次输出所有的奇数，一次输出所有的偶数就好了

user: user-3
content: 偶数 for(i = 0; i < MAX; i +=2) { } 奇数 for(i = 1; i < MAX; i +=2) { }
user-0 提问: 小白求助！

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

user: user-2
content: 用switch(ch) case A:case B:case C:     ... break; case D:case E:case F:     ... break;

user: user-0
content: 引用 4 楼 proorck2019的回复:[quote=引用 3 楼 qq_45931631的回复:][quote=引用 1 楼 proorck2019的回复:]用switch(ch) case A:case B:case C:     ... break; case D:case E:case F:     ... break; 输字母可以用switch. 但是如果字母和数字一起输入呢？[/quote] 这是处理一个字符的，不会出现同时有字母和数字。[/quote] 可是题目要求的事数字和字母一起输入呀

user: user-2
content: 引用 3 楼 qq_45931631的回复:[quote=引用 1 楼 proorck2019的回复:]用switch(ch) case A:case B:case C:     ... break; case D:case E:case F:     ... break; 输字母可以用switch. 但是如果字母和数字一起输入呢？[/quote] 这是处理一个字符的，不会出现同时有字母和数字。

user: user-0
content: 引用 1 楼 proorck2019的回复:用switch(ch) case A:case B:case C:     ... break; case D:case E:case F:     ... break; 输字母可以用switch. 但是如果字母和数字一起输入呢？

user: user-3
content: 定义一个26个元素的数组， char table[26] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9 } 判断输入的字符串里面的每个字符c，如果是'A'-'Z'之间， table[c-'A'+'0'] 就是对应的数字了  替换就好了
user-0 提问: 求问一道C语言编程题.

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

user: user-2
content: #include <stdio.h> #include <stdlib.h>  /* run this program using the console pauser or add your own getch, system("pause") or input loop */ #define MAX 2000  int main(int argc, char *argv[]) { 	char add1[MAX+2] = {'0'}; 	char add2[MAX+2] = {'0'}; 	char sum [MAX+2] = {'0'}; 	printf("Please Input 2 Number:\n"); 	scanf("%s", add1+1); // 保留第一个字符为0， 为后面的进位考虑  	scanf("%s", add2+1); // 保留第一个字符为0， 为后面的进位考虑  	int len = strlen(add1); // 假定2个数一样长度  	int c = 0; // 低阶的进位  	int i = 0; 	for( i=len-1; i>0; i--) { 		int v = add1[i] - '0' + add2[i]-'0' + c; 		if ( v>10) c=1; else c = 0; 		sum[i] = (v%10) + '0'; 	} ; 	if ( 1==c) { 		sum[0] = '1'; 		printf("%s", sum); 	} else  		printf("%s", sum+1); 	return 0; }

user: user-2
content: 你的题目应该不完整， 这里的两个要做加法的数字应该是超大的两个数吧，比如100位长度的 原始题目也应该给出数的范围吧？ 比如， 不超过2000位  如果是上述情况，那么就需要定义三个比最大长度还有多出一点儿的三个字符串数组 其中两个用于容纳读入的数据 第三个用来容纳他们的和  自己来模拟数字的加法和进位， 按照小学生学习多位加法的规则，从最后开始对齐数位相加并处理进位
user-0 提问: 求解 用c语言来获取Windows下的系统进程

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

user: user-2
content: 引用 2 楼 weixin_44164371 的回复:[quote=引用 1 楼 user-2的回复:]这不是c语言的事情！而是要调用Windows相应的函数。 请参考这里： https://blog.csdn.net/weixin_33850015/article/details/89997571 请问有没有获取内存使用情况的函数呢，因为刚学完数据结构 ，对Windows.h不是很了解，文章里也没有提及。[/quote] 百度不会吗？msdn网站上也有的！

user: user-0
content: 引用 1 楼 user-2的回复:这不是c语言的事情！而是要调用Windows相应的函数。 请参考这里： https://blog.csdn.net/weixin_33850015/article/details/89997571 请问有没有获取内存使用情况的函数呢，因为刚学完数据结构 ，对Windows.h不是很了解，文章里也没有提及。

user: user-2
content: 这不是c语言的事情！而是要调用Windows相应的函数。 请参考这里： https://blog.csdn.net/weixin_33850015/article/details/89997571