Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 要是可以的话，有人能教教我吗？谢谢大家！

回复:
user: user-1
content: 引用 5 楼 一条咸鱼八百里 的回复:[quote=引用 1 楼 @矛盾综合体的回复:]实际上应该尽量少用gets的，因为存在越界问题（具体可以自己找找），然后重点谈谈你问的问题，首先先讨论一下为什么有gets这个函数 gets是一个行缓存输入，相比较于scanf而言可以接受到空格之类的一些特殊字符，怎么判定你输入完成呢？行缓存，输入一行就算完成 如果没有一行就要结束，就以\n作为结束标志。不过个人建议用fgets，而且用gets基本上会报警告（尽管不影响运行）。 至于为什么运行结束，那是因为你输入n的时候按键的回车键被gets接收，然后后面的被m接收，所有产生了你的问题。但是怎么解决呢？ 最直接的，调换运行输入顺序，把gets提到前面去，后面接两个scanf。第二种方法，用getchar接收掉第一个scanf后面的回车，也就是在 第一个scanf和gets中间加一个getchar。 对了，这个20分数我要怎么给你呀？(像"百度知道"是要发帖人点一下"最佳"，分数才会给答题人的)[/quote]  首先非常感谢您的心意，我以前一直逛的是问答和博客区，很少在论坛区逛，所以这个也不怎么会，应该有采纳类似的吧！ 不过也没什么，积分这东西不重要，你懂了，才重要。再次感谢！

user: user-0
content: 引用 1 楼 @矛盾综合体的回复:实际上应该尽量少用gets的，因为存在越界问题（具体可以自己找找），然后重点谈谈你问的问题，首先先讨论一下为什么有gets这个函数 gets是一个行缓存输入，相比较于scanf而言可以接受到空格之类的一些特殊字符，怎么判定你输入完成呢？行缓存，输入一行就算完成 如果没有一行就要结束，就以\n作为结束标志。不过个人建议用fgets，而且用gets基本上会报警告（尽管不影响运行）。 至于为什么运行结束，那是因为你输入n的时候按键的回车键被gets接收，然后后面的被m接收，所有产生了你的问题。但是怎么解决呢？ 最直接的，调换运行输入顺序，把gets提到前面去，后面接两个scanf。第二种方法，用getchar接收掉第一个scanf后面的回车，也就是在 第一个scanf和gets中间加一个getchar。 对了，这个20分数我要怎么给你呀？(像"百度知道"是要发帖人点一下"最佳"，分数才会给答题人的)

user: user-0
content: 引用 2 楼 不闻窗外事的回复:把你的scanf改成  scanf("%d %d %s", &m, &n, s);,再试下 这边题目要求三行输入啦……不过还是谢谢你呀！(•͈ᴗ•͈ૢૢ)❊⿻*

user: user-0
content: 引用 1 楼 @矛盾综合体的回复:实际上应该尽量少用gets的，因为存在越界问题（具体可以自己找找），然后重点谈谈你问的问题，首先先讨论一下为什么有gets这个函数 gets是一个行缓存输入，相比较于scanf而言可以接受到空格之类的一些特殊字符，怎么判定你输入完成呢？行缓存，输入一行就算完成 如果没有一行就要结束，就以\n作为结束标志。不过个人建议用fgets，而且用gets基本上会报警告（尽管不影响运行）。 至于为什么运行结束，那是因为你输入n的时候按键的回车键被gets接收，然后后面的被m接收，所有产生了你的问题。但是怎么解决呢？ 最直接的，调换运行输入顺序，把gets提到前面去，后面接两个scanf。第二种方法，用getchar接收掉第一个scanf后面的回车，也就是在 第一个scanf和gets中间加一个getchar。 哦！这样啊！谢谢大佬！⊙∀⊙

user: user-0
content: 引用 6 楼 @矛盾综合体的回复:[quote=引用 5 楼 一条咸鱼八百里 的回复:] [quote=引用 1 楼 @矛盾综合体的回复:]实际上应该尽量少用gets的，因为存在越界问题（具体可以自己找找），然后重点谈谈你问的问题，首先先讨论一下为什么有gets这个函数 gets是一个行缓存输入，相比较于scanf而言可以接受到空格之类的一些特殊字符，怎么判定你输入完成呢？行缓存，输入一行就算完成 如果没有一行就要结束，就以\n作为结束标志。不过个人建议用fgets，而且用gets基本上会报警告（尽管不影响运行）。 至于为什么运行结束，那是因为你输入n的时候按键的回车键被gets接收，然后后面的被m接收，所有产生了你的问题。但是怎么解决呢？ 最直接的，调换运行输入顺序，把gets提到前面去，后面接两个scanf。第二种方法，用getchar接收掉第一个scanf后面的回车，也就是在 第一个scanf和gets中间加一个getchar。 对了，这个20分数我要怎么给你呀？(像"百度知道"是要发帖人点一下"最佳"，分数才会给答题人的)[/quote]  首先非常感谢您的心意，我以前一直逛的是问答和博客区，很少在论坛区逛，所以这个也不怎么会，应该有采纳类似的吧！ 不过也没什么，积分这东西不重要，你懂了，才重要。再次感谢！[/quote] 谢谢你！！！真的十分感谢！

user: user-2
content: 把你的scanf改成  scanf("%d %d %s", &m, &n, s);,再试下

user: user-1
content: 实际上应该尽量少用gets的，因为存在越界问题（具体可以自己找找），然后重点谈谈你问的问题，首先先讨论一下为什么有gets这个函数 gets是一个行缓存输入，相比较于scanf而言可以接受到空格之类的一些特殊字符，怎么判定你输入完成呢？行缓存，输入一行就算完成 如果没有一行就要结束，就以\n作为结束标志。不过个人建议用fgets，而且用gets基本上会报警告（尽管不影响运行）。 至于为什么运行结束，那是因为你输入n的时候按键的回车键被gets接收，然后后面的被m接收，所有产生了你的问题。但是怎么解决呢？ 最直接的，调换运行输入顺序，把gets提到前面去，后面接两个scanf。第二种方法，用getchar接收掉第一个scanf后面的回车，也就是在 第一个scanf和gets中间加一个getchar。
user-0 提问: 使用libjpeg-turbo进行编解码，如何实现多线程？

回复:
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: 应该是每一行上下问相关了，jpeg不清楚，但是gif的下一帧就会依赖上一帧，估计jpeg类似。如果图片切片后每个切片相互独立就可以多线程，不然就要想办法处理了

user: user-3
content: 那你问题都没描述清楚一点

user: user-0
content: 引用 1 楼 user-3 的回复:楼主什么逻辑？单线程不对，用了多线程就能解决问题了？ 这不是我的意思，单线程没问题，我想要多线程加速

user: user-3
content: 楼主什么逻辑？单线程不对，用了多线程就能解决问题了？
user-0 提问: 大神帮忙看看，最后的printf的逻辑，给小弟捋一下，感谢

回复:
user: user-0
content: 大致明白了，怎么给你加分

user: user-1
content: 宏定义只是替换，所以最后一个print替换后是 2*（3+（3+1）*5+1）=48

user: user-2
content: #define 不要忘记是宏，  宏的作用是完整的替换代码， 带参数的宏也不会对参数做任何的计算处理的

user: user-2
content: 有个小坑  #define N 3 #define Y(n) ((N+1)*n) 代入  2*(N+Y(5+1)) = 2* （ 3  + ((3+1）*5+1 )  = 2*  （ 3 + 4*5 + 1 ） = 2 * 24 = 48  这就是使用#define 需要注意的地方 正确的定义应该是这样的 #define Y(n) ((N+1)*(n))  这样结果才是54

user: user-3
content: 这有啥不明白的吗？
user-0 提问: 大佬们，看下这道题怎么做

回复:
user: user-0
content: 引用 5 楼 寻开心的回复:那句s[k-1] = ch 造成的 。  文件结束符号0被‘2’取代了，原来的c是在之间的交换中产生的 printf输出都告诉你了，不知道的地方再继续加printf看呗 还看不明白，把printf改成 for（x=0； X<7,x++) printf("%c", s[x] ); 把str的每个字符都输出出来，包括字符0，那样更清楚 我懂了，万分感谢哈哈

user: user-0
content: 引用 5 楼 寻开心的回复:那句s[k-1] = ch 造成的 。  文件结束符号0被‘2’取代了，原来的c是在之间的交换中产生的 printf输出都告诉你了，不知道的地方再继续加printf看呗 还看不明白，把printf改成 for（x=0； X<7,x++) printf("%c", s[x] ); 把str的每个字符都输出出来，包括字符0，那样更清楚 我懂了，万分感谢哈哈

user: user-0
content: 引用 3 楼 寻开心的回复:因为第三个字符被设置成为了 0， 0表示字符串结束了 那么2c又是哪来的值

user: user-1
content: 那句s[k-1] = ch 造成的 。  文件结束符号0被‘2’取代了，原来的c是在之间的交换中产生的 printf输出都告诉你了，不知道的地方再继续加printf看呗 还看不明白，把printf改成 for（x=0； X<7,x++) printf("%c", s[x] ); 把str的每个字符都输出出来，包括字符0，那样更清楚

user: user-1
content: 因为第三个字符被设置成为了 0， 0表示字符串结束了

user: user-1
content: #include<stdio.h> #include<string.h> void fun(char*s,int k,char ch) { char c; unsigned int i; for(i=k-1;i<strlen(s);i++) { c=s[k-1]; s[k-1]=s[i+1]; s[i+1]=c; printf("%d %s\n", i, s); } printf("%d %d %c %s\n", k-1, i+1, ch, s); s[k-1]=ch; s[i+1]=0; printf("%d %d %s\n", k-1, i+1, s); } int main() { char c[20]="abcdefg"; fun(c,3,50); puts(c); return 0; }   帮你加了几个printf函数，你看看输出结果，就知道了 不会做断点，就多这样做几个输出

user: user-0
content: 引用 1 楼 寻开心的回复:#include<stdio.h> #include<string.h> void fun(char*s,int k,char ch) { char c; unsigned int i; for(i=k-1;i<strlen(s);i++) { c=s[k-1]; s[k-1]=s[i+1]; s[i+1]=c; printf("%d %s\n", i, s); } printf("%d %d %c %s\n", k-1, i+1, ch, s); s[k-1]=ch; s[i+1]=0; printf("%d %d %s\n", k-1, i+1, s); } int main() { char c[20]="abcdefg"; fun(c,3,50); puts(c); return 0; }   帮你加了几个printf函数，你看看输出结果，就知道了 不会做断点，就多这样做几个输出 谢谢大佬，这办法不错呀，但是小弟还有个不明白，那个第i=6的时候为啥得ab
user-0 提问: 新手求助

回复:
user: user-1
content: 代码没问题吧，你的错误是什么，运行结果不对吗？你的运行结果是啥

user: user-2
content: 引用 2 楼 t_vvvv 的回复:[quote=引用 1 楼 fireyou的回复:]代码没问题吧，你的错误是什么，运行结果不对吗？你的运行结果是啥 我的运行结果和样例输出一样，但是在oj上提交后显示答案错误……[/quote] 代码没有问题，不需要考虑出发时间晚于到达时间的情况，能达到题目所要求的功能

user: user-0
content: 引用 1 楼 fireyou的回复:代码没问题吧，你的错误是什么，运行结果不对吗？你的运行结果是啥 我的运行结果和样例输出一样，但是在oj上提交后显示答案错误……
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 楼 棉猴 的回复：#include <stdio.h> void qinmishu(); int main(int argc, char* argv[]) { 	qinmishu(); 	return 1;  }  void qinmishu() { 	int a, b, s, c=0, d = 0; 	for(a=1; a<=500; a++) 	{ 		for(b=1; b<a; b++) 		{ 			if(a%b==0) 			{ 				c = c+b; 			} 		} 		for(s=1; s<c; s++) 		{ 			if(c%s==0) 			{ 				d+=s; 			} 		} 		if(d==a && a<c) 		{ 			printf("%d %d\n", a, c); 		} 		c = 0; 		d = 0; 	}  } VC++6.0调试结果 谢谢🙏

user: user-2
content: #include <stdio.h> void qinmishu(); int main(int argc, char* argv[]) { 	qinmishu(); 	return 1;  }  void qinmishu() { 	int a, b, s, c=0, d = 0; 	for(a=1; a<=500; a++) 	{ 		for(b=1; b<a; b++) 		{ 			if(a%b==0) 			{ 				c = c+b; 			} 		} 		for(s=1; s<c; s++) 		{ 			if(c%s==0) 			{ 				d+=s; 			} 		} 		if(d==a && a<c) 		{ 			printf("%d %d\n", a, c); 		} 		c = 0; 		d = 0; 	}  } VC++6.0调试结果

user: user-3
content: 在判断d==a之后是不是应该给d清一下0。不然，d每次都是基于上次的值继续加。

user: user-4
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: 如果我没看错的话，你用的是VC6.0 。给你个代码进行参考吧。  #include<stdio.h> #include<stdlib.h>  typedef void* VoidPtr; typedef int* IntPtr;  /* \ brief 升序排序 */ int asc(VoidPtr a, VoidPtr b) { 	return *(IntPtr)a - *(IntPtr)b; }	  /* \ brief 降序排序 */ int des(VoidPtr a, VoidPtr b) { 	return *(IntPtr)b - *(IntPtr)a; }   int main(int argc, char* argv[]) { 	// 假设数组 	int arr[] = { 5,6,0,1,2,3,8,9,4,7 }; 	// 求数组大小 	int size = sizeof(arr) / sizeof(int); 	// 全部进行升序 	qsort(arr, size, sizeof(int), asc); 	// 假设指定的位置是6 	int n = 6; 	// 进行指定位置降序排序 	qsort(&arr[6], size - n,sizeof(int), des); 	// 打印结果 	for (size_t i = 0; i < size; i++) 	{ 		printf("%d\t", arr[i]); 	} 	return 0; }
user-0 提问: C语言数据结构作业，大佬们可以给点建议吗?

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

user: user-2
content: 你最好请教你们老师，这题目怎么看。

user: user-0
content: 引用 5 楼 清晨与猫鱼的回复:我相信你这题目意思很多人看得出来，但是你给出的数据，能看懂的估计就只有你自己了。 这是老师布置的原题，我也看不太懂

user: user-2
content: 我相信你这题目意思很多人看得出来，但是你给出的数据，能看懂的估计就只有你自己了。

user: user-0
content: 引用 3 楼 清晨与猫鱼的回复:这就不合适了，毕竟这是你的作业，会不会也是靠你自己。 我死了啊啊啊啊……

user: user-2
content: 这就不合适了，毕竟这是你的作业，会不会也是靠你自己。

user: user-0
content: 引用 1 楼 清晨与猫鱼的回复:我写了 4篇关于C数据结构的代码实现，在我的博文里，分别是 动态数组，单链表，二叉树，AVL自平衡树。你可以参考一下，这算不算建议呢。 可以按照上面信息给个代码参考参考吗？

user: user-2
content: 我写了 4篇关于C数据结构的代码实现，在我的博文里，分别是 动态数组，单链表，二叉树，AVL自平衡树。你可以参考一下，这算不算建议呢。
user-0 提问: 指针编写函数求助

回复:
user: user-1
content: #include<stdio.h>  int average(int *p, int n, int *pmax, int *pmin) { 	int max = p[0], min = p[0]; 	int aver = 0; 	for (int i = 0; i < n; i++) 	{ 		if (max < p[i]) 			max = p[i]; 		if (min > p[i]) 			min = p[i]; 		aver += p[i]; 	} 	*pmax = max; 	*pmin = min; 	aver = (int)(1.0*aver / n); 	return aver; } int main() { 	int score[10] = { 50,60,70,80,90,100,89,68,78,95 }; 	int pmax=0, pmin=0; 	int aver = average(score, 10, &pmax, &pmin); 	printf("平均值=%d\n", aver); 	printf("最大值=%d\n", pmax); 	printf("最小值=%d\n", pmin); 	getchar(); 	return 0; } 仅供参考

user: user-2
content: 终于看到 void main 是哪儿来的。 这是什么学校老师留的作业啊    问题不难， 自己写吧。  有错误再贴代码（别贴图），发问题
user-0 提问: c语言 文件管理问题

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

user: user-0
content: 引用 9 楼 寻开心的回复:sum=0 把丢哪里去了？没有初始化 在第三次打开之前， printf一次sum，看看是多少 然后截图，有问题的数据输出 您还没睡啊 有劳您了 明早我再试试

user: user-2
content: sum=0 把丢哪里去了？没有初始化 在第三次打开之前， printf一次sum，看看是多少 然后截图，有问题的数据输出

user: user-0

user: user-0
content: 初始化后printf sum一直是0 为什么没进行求和咧

user: user-0
content: 引用 13 楼 寻开心的回复:哦， 原因是 文件用a方式打开的，自动定位到文件的尾巴了， 所以读不出来数据 应该是r+方式打开读写操作 yeah 总算整明白了 太谢谢了

user: user-2
content: 哦， 原因是 文件用a方式打开的，自动定位到文件的尾巴了， 所以读不出来数据 应该是r+方式打开读写操作

user: user-0
content: 不行啊 我试过了 一下是复制的代码 #include"stdio.h" main() { 	FILE *f1; 	int number, sum,i; 	printf("Contents of DATA file\n"); 	f1=fopen("DATA","w"); 	for (i=1;i<=30;i++) 	{ 		scanf("%d",&number); 		if(number==-1) break; 		putw(number,f1); 	} 	fclose(f1); 	f1=fopen("DATA","a"); 	while((number=getw(f1))!=EOF) 	{ 		sum+=number; 	} 	putw(sum,f1); 	fclose(f1); 	f1=fopen("DATA","r"); 	printf("\nContenes of DATA file\n"); 	while((number=getw(f1))!=EOF) 	    printf("%d",number); 	fclose(f1);     return 0; }

user: user-2
content: 越改越乱  求和并写入部分的while int sum=0； while（（number=getw（f1）） ！= EOF ） sum+=number； putw（sum，f1）； fclose（f1）  最后的输出的while不要改

user: user-0
content: 最后我用 	while((number=getw(f1))!=sum) 	    printf("%d",number); 	while((sum=getw(f1))!=EOF) 	    printf("%d",sum); 输出文件里的数据   只能显示number不显示sum是怎么回事呢 能不能这样写呢？

user: user-2
content: 还循环什么啊？！ while自身就是循环读数据，直到读完为止 while前sum=0； while内 sum += number 就完了。 还弄循环搞什么啊

user: user-0
content: 我如果第二个for语句从i等于2开始 如何实现停止循环了

user: user-2
content: while ( .... ) {     if (I=1) {. // 给I赋值1，         sum=number;     }     for (I=1; I<=30; I++ ) {.   // 干嘛要把number 加上30次呢          sum = sum + number;     } }  你自己跟踪跟踪sum的变化，不会debug调适就多打几行printf在这里 这段逻辑混乱

user: user-0
content: 快来位大神教教孩子吧

user: user-0
content: 引用 楼主 weixin_45812125的回复:题目和我编的程序如图（第五题）请各位前辈看看问题出在哪儿了 该怎么改 多谢 如何实现sum的添加和输出呢？
user-0 提问: STM32单片机如何使正在运行的数码管暂停并显示当前数字？

回复:
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 提问: 帮忙看看PTA 估值一亿的AI核心代码 测试点3、4不通过

回复:
user: user-1
content: 测试点3可能是can youp这种，不能替换而是直接输出；测试点4不清楚，我提几个要注意的点：一是大小写转换别把A和Z漏掉了；二是考虑会不会重复替换比如can I会不会先替换成can you再替换成I can，还有can you you这种，虽然这个好像不在测试点里；三是要替换的字符串处于边界的情况有没有考虑周到；四是下划线_这个特殊的符号和字母连在一起比如"_I"不算独立的I。

user: user-2
content: 你不贴自己的代码，谁知道哪里有错 引用 2 楼 qq_24683975 的回复:[quote=引用 1 楼 636f6c696e的回复:]本题要求你实现一个稍微更值钱一点的 AI 英文问答程序，规则是：  无论用户说什么，首先把对方说的话在一行中原样打印出来；  消除原文中多余空格：把相邻单词间的多个空格换成 1 个空格，把行首尾的空 格全部删掉，把标点符号前面的空格删掉；  把原文中所有大写英文字母变成小写，除了 I；  把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词；  把原文中所有独立的 I 和 me 换成 you；  把原文中所有的问号 ? 换成惊叹号 !；  在一行中输出替换后的句子作为 AI 的回答。  你不按题目写有错误不是很正常的么？ 我输出结果和题目没有问题，他说的要求我都试过了[/quote]

user: user-3
content: 这道题题目细节很多，容易出错的就是边界没控制好，比如替换 I can.，要替换字符串的两端有各种符号，另外就是替换I的替换应在can you，could you之前

user: user-0
content: 引用 1 楼 636f6c696e的回复:本题要求你实现一个稍微更值钱一点的 AI 英文问答程序，规则是：  无论用户说什么，首先把对方说的话在一行中原样打印出来；  消除原文中多余空格：把相邻单词间的多个空格换成 1 个空格，把行首尾的空 格全部删掉，把标点符号前面的空格删掉；  把原文中所有大写英文字母变成小写，除了 I；  把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词；  把原文中所有独立的 I 和 me 换成 you；  把原文中所有的问号 ? 换成惊叹号 !；  在一行中输出替换后的句子作为 AI 的回答。  你不按题目写有错误不是很正常的么？ 我输出结果和题目没有问题，他说的要求我都试过了

user: user-2
content: 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序，规则是：  无论用户说什么，首先把对方说的话在一行中原样打印出来；  消除原文中多余空格：把相邻单词间的多个空格换成 1 个空格，把行首尾的空 格全部删掉，把标点符号前面的空格删掉；  把原文中所有大写英文字母变成小写，除了 I；  把原文中所有独立的 can you、could you 对应地换成 I can、I could—— 这里“独立”是指被空格或标点符号分隔开的单词；  把原文中所有独立的 I 和 me 换成 you；  把原文中所有的问号 ? 换成惊叹号 !；  在一行中输出替换后的句子作为 AI 的回答。  你不按题目写有错误不是很正常的么？
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 楼 不闻窗外事 的回复:3、变量的命名是有规范的，一般只能使用字母和数组还有下划线，而且数字好像不能作为首字母 5、加法的优先级好像大于&&和|| 10、&&这个符号只要前面的为假就不会再计算后面的内容了，所以n=(c>b)根本没有运算，所以c还是原来的值 n还是原来的值

user: user-2
content: 3、变量的命名是有规范的，一般只能使用字母和数组还有下划线，而且数字好像不能作为首字母 5、加法的优先级好像大于&&和|| 10、&&这个符号只要前面的为假就不会再计算后面的内容了，所以n=(c>b)根本没有运算，所以c还是原来的值
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: 3.实现作为合法变量名只能以下划线或者字母开头，不能以数字开头，然后变量名只能有下划线或者字母数字，不可以有其他字符 5.这里最简单就是非零即真，以及注意惰性运算（可以查查） 10.重点就是惰性运算了，因为&&前面部分已经为假，后面的计算机不会运算，所以后面的赋值也就没有进行了，所有n就没有变化
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: 不知道你说指win32的菜单还是控制台窗口下的“菜单”，后者的话，那只是一些选项，你通过printf输出，每一项前面标个数字或字母，然后等待用户输入，你通过判断用户的输入进行对应的处理。 增删改，典型的链表程序啊，如果不会链表的话，用结构体数组也是可以的。
user-0 提问: 求各位大佬帮忙解决

回复:
user: user-1
content: 将a和b都copy到一个新的数组中，再对数组中的元素进行排序输出 自己尝试写一下，有问题再提问

user: user-2
content: 二路归并排序 比如 【1 3】 【2 4】 第一步：首先看两个子序列[1,3] [2,4]的第一个元素，1和2对比，把较小的1放在结果的第一位，结果是[1]，删除1。 第二步：看两个子序列[3]，[2,4]的第一个元素，3和2对比，把较小的2放到结果里，结果是[1,2]，删除2。 第三步：看两个子序列[3] [4]的第一个，3和4对比，把较小的3放在结果，结果是[1,2,3]，删除3。 第四步：经过前面三步，只剩下一个子序列[4]，把[4]放在结果，得到最终结果[1,2,3,4]。

user: user-0
content: 引用 1 楼 fireyou的回复:将a和b都copy到一个新的数组中，再对数组中的元素进行排序输出 自己尝试写一下，有问题再提问 老师没教过让我们预习，看不懂
user-0 提问: 字符串逆序，求大佬解答！

回复:
user: user-0
content: 引用 3 楼 fireyou的回复: void fun(char *x) { 	if(*x){ 		fun(x+1); 		printf("%c",*x); 	}  }  谢谢大佬非常感谢

user: user-0
content: 引用 2 楼 weixin_40290083的回复: 谢谢大佬非常感谢

user: user-0
content: 引用 1 楼 羅昇的回复: void f(char *p) {   if (!p || *p == 0)     return;   f(p + 1);   printf("%c", *p); }  谢谢大佬非常感谢

user: user-1
content: void fun(char *x) { 	if(*x){ 		fun(x+1); 		printf("%c",*x); 	}  }

user: user-2

user: user-3
content: void f(char *p) {   if (!p || *p == 0)     return;   f(p + 1);   printf("%c", *p); }

user: user-4
content: 引用 3 楼 fireyou的回复: void fun(char *x) { 	if(*x){ 		fun(x+1); 		printf("%c",*x); 	}  }  这个方法太简单啦，又容易懂！
user-0 提问: 救救孩子吧，就是弄不对。

回复:
user: user-1
content: #include<stdio.h> int main() {   int i, n, a[100];   scanf("%d", &n);   for (i=0; i < n; i++)     scanf("%d",&a[i]);    for (i = 0; i < n; i += 2)     printf("%d", a[i]);   printf("\n");    for (i = 1; i < n; i += 2)     printf("%d", a[i]);   printf("\n");    return 0; }

user: user-2
content: 是否是因为结尾必须输出两行，你在if（n==1）那里，%d后面加个\n试试，如果不能打话，你把完整的代码发出来，不要只发一半，最好不要截图

user: user-0
content: 引用 1 楼 user-3的回复:问题是啥？那里不对？ 就是想得满分，但是1测试点就是一直显示格式错误。

user: user-3
content: 问题是啥？那里不对？

user: user-0
content: 引用 4 楼 羅昇的回复: #include<stdio.h> int main() {   int i, n, a[100];   scanf("%d", &n);   for (i=0; i < n; i++)     scanf("%d",&a[i]);    for (i = 0; i < n; i += 2)     printf("%d", a[i]);   printf("\n");    for (i = 1; i < n; i += 2)     printf("%d", a[i]);   printf("\n");    return 0; }  老哥，咱俩代码测试点刚好错的一样，参考你的运行结果，最后改对了。竟然要在输入1时，打印两个回车太坑了这破题。
user-0 提问: 大佬们帮帮我吧，纠结好长时间了。

回复:
user: user-0
content: 引用 2 楼 fireyou的回复:难道不是选B吗？ 没看到b错了吗？ 这就是我的问题，你还问一问😂

user: user-1
content: 难道不是选B吗？

user: user-2
content: 应该选C，补码 如果用long型数据，你是没有耐心等到程序运行结束，把long num换成char测试下就知道 了

user: user-2
content: 引用 2 楼 fireyou 的回复:难道不是选B吗？  重要的事情说三遍  补码  补码 补码
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: double a scanf("%lf", &a) 这样才匹配
user-0 提问: 把输出这个月有多少天，换成输出是今年的第几天

回复:
user: user-1
content: printf("请输入年份，回车结束\n");     scanf("%d",&y);     if((y%4==0&&y%100!=0)||(y%400==0&&y%3200!=0)||y%172800==0)         printf("%d是闰年\n",y);     else         printf("%d是平年\n",y);  先解决这个闰年和平年的判断正确性的问题

user: user-2
content: w=d+y/4-y/100+y/400; 这是做什么的，你定的哪天是星期一，总有一天是要星期一的吧，比如2018年1月1号，没有这个基础在的吗，就好比参照物
user-0 提问: int，float，double，char

回复:
user: user-0
content: 引用 4 楼 不闻窗外事的回复:这个应该是与编译器有关，一般正常来说float和double都可以正常转为int，但是由于double和float与int在内存中的计数方式不同，所以可能是会出现0的，但是我使用的gcc编译器好像就不会这样，都是可以正常转的 嗯，我下次换一个编译器试试

user: user-1
content: 看内存怎么存，以及看函数怎么处理内存数据。

user: user-2
content: 这个事儿的根源还要看前两天的一个帖子上反应的问题 double  d = .... ; printf（“%d”， d） 然后结果输出为0了。  检测结果堆栈里面放了一个8字节的，低位4字节是0， 所以推导出了前面的那个结论    这个函数不是常规函数，是这种参数数量可变的函数

user: user-3
content: 这个应该是与编译器有关，一般正常来说float和double都可以正常转为int，但是由于double和float与int在内存中的计数方式不同，所以可能是会出现0的，但是我使用的gcc编译器好像就不会这样，都是可以正常转的

user: user-0
content: 真的吗，今天上课老师打的时候出现的错误

user: user-4
content: 引用 楼主 qq_45914759 的回复:表明一下今天学到的，不喜勿喷，发现错误，望大佬指明，非常感谢   在float函数调用中不可以用int型的数，传过去会为零，其他类型还没试，试了在发帖别瞎说  形参float 实参int 不会导致参数是0

user: user-2
content: 有个球意义啊，  实验出错会出什么效果吗？  double数据用int数据也未必次次都是0， 碰巧了而已  有这个闲功夫还不如干点别的呢
user-0 提问: 编程题求证

回复:
user: user-1
content: 你这个不合题义，只能输入整形，那是数列，而非函数

user: user-2
content: 没什么需要改的了 非要改可以考虑 y变量去掉 if else 改 ?: 写在printf里面 printf("y=%d\n", x>=0 ? 2*x+1 : x*x-1);

user: user-3
content: 最后的printf加个换行符

user: user-2
content: 引用 4 楼 weixin_45718499 的回复:[quote=引用 3 楼 user-4的回复:]硬要说有什么问题的话，就是当输入为字符或者是浮点类型数据的时候，输出会有异常，可以考虑加个输入错误的处理函数。 y=x*x-1；有什么函数能直接表示x*x吗？[/quote]x*x 就是最好的表达 别骚操作

user: user-0
content: 引用 3 楼 user-4的回复:硬要说有什么问题的话，就是当输入为字符或者是浮点类型数据的时候，输出会有异常，可以考虑加个输入错误的处理函数。 y=x*x-1；有什么函数能直接表示x*x吗？

user: user-4
content: 硬要说有什么问题的话，就是当输入为字符或者是浮点类型数据的时候，输出会有异常，可以考虑加个输入错误的处理函数。
user-0 提问: 请大神指导下这段代码里“inline bool operator < (const candim &r) const”的作用是什么？

回复:
user: user-1
content: 这是自定义了一个比较运算符 ,<号。       if(ret = memcmp(usr_id , r.usr_id  , sizeof(usr_id ) - 1)) return (ret < 0); 这一句，首先使用内存比较来比较两个user_id,如果两者不等，那么，如果user_id较小，则返回TRUE,否则返回FALSE.  如果这一句未返回，那么就是相同的user_id,则比较vcard_no.也是类似的，vcard_no较小，则返回TRUE.

user: user-0
content: 感谢大神指点！这段时间在学代码，还请您有时间多来指导下
user-0 提问: 基本语法求教：*argv[argc-1]  、 argv[--argc]　下标的区别？

回复:
user: user-0
content: if((bg=(*argv[argc-1]=='&'))!=0) 对 bg 赋值的结果(？？？)，与 0 作比较，目的是什么？ 能不能详细讲一下

user: user-0
content: 引用 5 楼 user-4 的回复:argc-1不表示"argc 的值等于本身减　1"吧 引用 5 楼 user-4 的回复:argc-1不表示"argc 的值等于本身减　1"吧 ---- 先谢过各位了。 引用 6 楼 oria2006 的回复:假设 argc = 2 argc-1 执行后 argc 还是等于 2 --argc 执行后argc 等于 1  bg=(*argv[argc-1]=='&'）这条语句的意思是，判断argc字符串数组中argc-1的位置是不是字符"&"，如果是就等于1，不是就等于0 ----*argv[argc-1]=='&' 判断argc字符串数组中argc-1的位置是不是字符"&"，如果是就等于1，不是就等于0 -----这个，我懂。问题是，下面的 ：if((bg=1)!=0) 或 if((bg=0)!=0) 是什么意思？( bg=1) 或 (bg=0) 是不是 总是等于 1？

user: user-0
content: if((bg=(*argv[argc-1]=='&'))!=0) !0 = 0 是什么意思？

user: user-1
content: argc-1 没改变argc的值 --argc改变了argc的值 就这个区别

user: user-1
content: 看了524页不会连这个都没搞清楚吧

user: user-2
content: *argv[argc-1]  、 argv[--argc]，  下标　argc-1　和下标　--argc　都表示　argc 的值 等于本身减　1。二者有什么区别吗？为什么这样用？ 区别在于 argc-1本身不改变argc，--argc改变了argc，也就是小了1

user: user-0

user: user-3
content: 假设 argc = 2 argc-1 执行后 argc 还是等于 2 --argc 执行后argc 等于 1  bg=(*argv[argc-1]=='&'）这条语句的意思是，判断argc字符串数组中argc-1的位置是不是字符"&"，如果是就等于1，不是就等于0

user: user-4
content: argc-1不表示"argc 的值等于本身减　1"吧
user-0 提问: 新手求助

回复:
user: user-1
content: 谁说的是等于pt[3]啊，这个类型都不对  除非pt是char ** 这样的指针， 否则都不可能编译通过吧  假定 p = pt + 1  *（pt+1）【2】   和 * p【2】 一样 *p[2] 这个和p【3】 是一个类型吗？！    类型都不匹配，何来的等价

user: user-2
content: pt是指针数组的地址的话还有点才有意义。
user-0 提问: 如何中序建树，数据结构c语言

回复:
user: user-1
content: 什么叫中序建树？ 我刚写的一个关于二叉树的博文，你可以参考一下。 https://blog.csdn.net/BCMY0110/article/details/103382519

user: user-2
content: 现在的学生真是让人摇头。
user-0 提问: 求教各位

回复:
user: user-1
content: 当然可以。你可以尝试写代码，有问题的地方来提问

user: user-2
content: 1<a<2  优秀 3<a<4  良好  你说的这种方式是不恰当的。正确的方式是使用xml,或者ini文件
user-0 提问: 请问为什么同一个函数运用了return 1/0/-1,3个

回复:
user: user-0
content: 引用 1 楼 user-1的回复:为什么_swap交换的是char？ 这个是我在这里面找的，

user: user-1
content: 为什么_swap交换的是char？
user-0 提问: c语言结构体数组指针问题

回复:
user: user-1
content: struct stu {     char name[8];     char num[15];     float score[4];     float sum;     float aver;  } st[]; 这里要么定义一个最大的数组，要么放一个指针等待被赋值   int main(void) {     int n, i, j;     struct stu *p=NULL;      printf("请输入学生人数：");     scanf("%d",&n);      p=(struct stu*)malloc(sizeof(struct stu)*n); // 这里申请了内存，注意是放到p里面了  // // 从这个前后关联代码来看， st的定义应该是。 全局的指针类型， 前面的内存申请后，赋值给st才对 //     for(p=st ;p-st<n;p++)  //这里p赋值st， 前面申请的指针丢了。 st还是处于一个奇怪的状态中     {  // 下面的录入，内容都是放到未知空间去了          scanf("%s%s",p->num, p->name);          for(i=1;i<=4;i++)         {             scanf("%f",p->score[i]); // 这个要求float指针， 结果参数是一个double类型，显然也不对         }     }  // 从循环提出来之后， p还指向哪里呢， 下面这个调用也是瞎搞     Sum(p, n);     Sort(p, n);     Aver(p, n);  后面的不用看了，前面的先解决了再说吧。 一会儿用p，一会儿用st， 可是这两个东西都没有处理好。
user-0 提问: 这个gcd对怎么做呐

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:临时写了一个代码，没有仔细测试 #include<stdio.h> #include<stdlib.h> #define RANGE 2001 short gcdArray[RANGE][RANGE]; // 数组的值就是二维下标的最大公约数 int countAB[RANGE]; // 保存ab区间内的，最大公约数是数组下标的数对儿数量 int countCD[RANGE];  short gcd(short x, short y) // 网络上抄袭的求最大公约数的算法 {     while(y^=x^=y^=x%=y);     return x; } int main() {     memset(countAB, 0, sizeof(int)*RANGE);     memset(countCD, 0, sizeof(int)*RANGE);     int i, j;     for ( i=1; i<RANGE; i++)         for ( j=i; j<RANGE; j++)             gcdArray[i][j] = gcdArray[j][i] = gcd(i,j);     short a, b, c, d;     scanf("%hd %hd %hd %hd", &a, &b, &c, &d);     for( i=a; i<=b; i++ )         for ( j=i+1; j<=b; j++)             countAB[gcdArray[i][j]]++;     for (i=c; i<=d; i++)         for (j=i+1; j<=d; j++)             countCD[gcdArray[i][j]]++;     int count = 0;     for (i=1; i<RANGE; i++)         count += countAB[i]*countCD[i];     printf("%d", count);     return 0; } 谢谢了，我回去测试一下

user: user-1
content: 临时写了一个代码，没有仔细测试 #include<stdio.h> #include<stdlib.h> #define RANGE 2001 short gcdArray[RANGE][RANGE]; // 数组的值就是二维下标的最大公约数 int countAB[RANGE]; // 保存ab区间内的，最大公约数是数组下标的数对儿数量 int countCD[RANGE];  short gcd(short x, short y) // 网络上抄袭的求最大公约数的算法 {     while(y^=x^=y^=x%=y);     return x; } int main() {     memset(countAB, 0, sizeof(int)*RANGE);     memset(countCD, 0, sizeof(int)*RANGE);     int i, j;     for ( i=1; i<RANGE; i++)         for ( j=i; j<RANGE; j++)             gcdArray[i][j] = gcdArray[j][i] = gcd(i,j);     short a, b, c, d;     scanf("%hd %hd %hd %hd", &a, &b, &c, &d);     for( i=a; i<=b; i++ )         for ( j=i+1; j<=b; j++)             countAB[gcdArray[i][j]]++;     for (i=c; i<=d; i++)         for (j=i+1; j<=d; j++)             countCD[gcdArray[i][j]]++;     int count = 0;     for (i=1; i<RANGE; i++)         count += countAB[i]*countCD[i];     printf("%d", count);     return 0; }
user-0 提问: 请问各位老师们，我的这个万年历为什么没有日期

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: C语言作业不会写，救救孩子吧

回复:
user: user-1
content: 这种小屁孩还是好好收拾一顿的好。  1 totaolTree = 500米一共501个点  2 把区域排个序，小的在前大的在后  3 从头开始，对区域循环一遍        判断和下一个区域是否相交， 相交则合并相交区域，继续下一个区域       如果和下一个区域不相交，计算区域长度，用totalTree-=此区域长度 输出totoalTree  就这思路了，代码自己写吧
user-0 提问: 请问字母怎么改变？

回复:
user: user-0
content: 引用 3 楼 addddddee的回复:给你个我使用的代码 BOOL Decode(BYTE* lpDataBuf,int& nDataLen,const BYTE* lpDecodebuf){ 		//if(nDataLen != (Decodebuf.GetSize()/2)){//Decodebuf的数据大小可能没有更新 		//	ASSERT(FALSE); 		//	return FALSE; 		//} 		nDataLen = nDataLen;//Decodebuf.GetSize()/2;ASSERT( Decodebuf.GetSize()%2 ==0); 		 		for(int i=0;i<nDataLen;i++){ 			lpDataBuf[i] = lpDecodebuf[i*2+1] -lpDecodebuf[i*2] - (i*3); 		} 		return TRUE; 	} 	void Code(const BYTE* lpDataBuf,int nDataLen,BYTE* lpCodebuf){//lpCodebuf的大小最小为nDataLen*2 		//if(Codebuf.GetSize()!= (nDataLen*2)) 		//	Codebuf.SetSize(nDataLen*2);  		srand((unsigned)time(NULL));  		for(int i=0;i<nDataLen;i++){ 			lpCodebuf[i*2] = rand()%255; 			lpCodebuf[i*2+1] = lpDataBuf[i] + lpCodebuf[i*2] + (i*3); 		} 	} 我感觉我学了个假c

user: user-1
content: 给你个我使用的代码 BOOL Decode(BYTE* lpDataBuf,int& nDataLen,const BYTE* lpDecodebuf){ 		//if(nDataLen != (Decodebuf.GetSize()/2)){//Decodebuf的数据大小可能没有更新 		//	ASSERT(FALSE); 		//	return FALSE; 		//} 		nDataLen = nDataLen;//Decodebuf.GetSize()/2;ASSERT( Decodebuf.GetSize()%2 ==0); 		 		for(int i=0;i<nDataLen;i++){ 			lpDataBuf[i] = lpDecodebuf[i*2+1] -lpDecodebuf[i*2] - (i*3); 		} 		return TRUE; 	} 	void Code(const BYTE* lpDataBuf,int nDataLen,BYTE* lpCodebuf){//lpCodebuf的大小最小为nDataLen*2 		//if(Codebuf.GetSize()!= (nDataLen*2)) 		//	Codebuf.SetSize(nDataLen*2);  		srand((unsigned)time(NULL));  		for(int i=0;i<nDataLen;i++){ 			lpCodebuf[i*2] = rand()%255; 			lpCodebuf[i*2+1] = lpDataBuf[i] + lpCodebuf[i*2] + (i*3); 		} 	}

user: user-0
content: 引用 1 楼 寻开心的回复:第一次加密： 循环字符串。判断字符串当中字母是否是数字， 是的话把它的值加上 ‘a’-‘0’。 第二次加密：循环字符串， 每个字符加上k， 然后判断结果如果大于‘z'，那么把数字再加上一个’a'-‘z' 代码自己写 嗯，谢谢，这个(2)我想了好长时间，都没想到怎么改。

user: user-2
content: 第一次加密： 循环字符串。判断字符串当中字母是否是数字， 是的话把它的值加上 ‘a’-‘0’。 第二次加密：循环字符串， 每个字符加上k， 然后判断结果如果大于‘z'，那么把数字再加上一个’a'-‘z' 代码自己写
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-0 提问: 救救孩子吧

回复:
user: user-0
content: 非常感谢 由于有点急，没有收到回复，所以再发了一次 ，谢谢解答 我明白了

user: user-1
content: 105 实际上表示两个数的和 大于9 ‘0’是48， 两个数字字符a和b求和是否大于9，转化成为整数求和就是  ( a-48) + (b-48) >9     和 a+b > 96 + 9 = 105 等价啊  程序就是把字符到数字之间的转换整合到一起来写的 48就是‘0’ 58 就是 ‘9’+1
user-0 提问: 救救孩子吧

回复:
user: user-1
content: 发这么多贴做什么啊 ，有一个就够了   另一个帖子里面给你解释了  两个字符对应的数字相加是否大于9 a-‘0’ + b-‘0’  >9.     等价于。a+b > 9 + '0' + '0' = 105  48 就是 ‘0’ 58 就是 ‘9‘+1
user-0 提问: C语言定义变量地址问题

回复:
user: user-1
content: 引用 9 楼 qq_45778098 的回复:[quote=引用 7 楼 liups的回复:][quote=引用 6 楼 qq_45778098 的回复:] [quote=引用 5 楼 liups的回复:]我的看法：应该是连续的，但是并没有标准规定它是连续的，所以编程中不应该使用“假定它就是连续的”这一特点！ 老师说，不同编译环境得到的内存地址可能相同，可能不相同[/quote] 你老师说得没错，但是我不是说相同与否。而是类似这样： 假如int * p=&a; 那么 *p可以访问a，如果先来一个p++，然后*p实际上就可以访问b了。这种情况通常是会发生的，但是不能这样写程序[/quote] 如果是这样的话数组的作用就淡化了，大致明白了[/quote] 更正一下，写了一个测试程序，结果很有意思，地址不是增加的，反而是减少的！ 先放代码： #include <iostream> using namespace std; int main() {     int a,b,c;     a=b=c=8;     int *p,*pb;     p=&a;     pb=&b;     *p=7;     p--;     *p=9;     cout <<a<<' '<<b<<' '<<c<<' '<<(*p)<< endl;     system("pause");     return 0; } 再放结果，如图：

user: user-0
content: 引用 7 楼 liups的回复:[quote=引用 6 楼 qq_45778098 的回复:] [quote=引用 5 楼 liups的回复:]我的看法：应该是连续的，但是并没有标准规定它是连续的，所以编程中不应该使用“假定它就是连续的”这一特点！ 老师说，不同编译环境得到的内存地址可能相同，可能不相同[/quote] 你老师说得没错，但是我不是说相同与否。而是类似这样： 假如int * p=&a; 那么 *p可以访问a，如果先来一个p++，然后*p实际上就可以访问b了。这种情况通常是会发生的，但是不能这样写程序[/quote] 如果是这样的话数组的作用就淡化了，大致明白了

user: user-0
content: 如果是这样的话数组的作用就淡化了，大致明白了

user: user-1
content: 引用 6 楼 qq_45778098 的回复:[quote=引用 5 楼 liups的回复:]我的看法：应该是连续的，但是并没有标准规定它是连续的，所以编程中不应该使用“假定它就是连续的”这一特点！ 老师说，不同编译环境得到的内存地址可能相同，可能不相同[/quote] 你老师说得没错，但是我不是说相同与否。而是类似这样： 假如int * p=&a; 那么 *p可以访问a，如果先来一个p++，然后*p实际上就可以访问b了。这种情况通常是会发生的，但是不能这样写程序

user: user-0
content: 引用 5 楼 liups的回复:我的看法：应该是连续的，但是并没有标准规定它是连续的，所以编程中不应该使用“假定它就是连续的”这一特点！ 老师说，不同编译环境得到的内存地址可能相同，可能不相同

user: user-1
content: 我的看法：应该是连续的，但是并没有标准规定它是连续的，所以编程中不应该使用“假定它就是连续的”这一特点！

user: user-0
content: 引用 3 楼 不闻窗外事的回复:[quote=引用 2 楼 qq_45778098 的回复:] [quote=引用 1 楼 不闻窗外事的回复:]你可以打印看看，这个正常应该是连续的，但也不一定 printf("%p  %p  %p", &a, &b, &c); 老师还让做一个2k*8的存储器，你知道怎么做吗[/quote] 是指二维数组吗？不太懂[/quote] 哦哦，是实物，要买面包板，线什么的

user: user-2
content: 引用 2 楼 qq_45778098 的回复:[quote=引用 1 楼 不闻窗外事的回复:]你可以打印看看，这个正常应该是连续的，但也不一定 printf("%p  %p  %p", &a, &b, &c); 老师还让做一个2k*8的存储器，你知道怎么做吗[/quote] 是指二维数组吗？不太懂

user: user-3
content: 连续的，也许又不连续的，不过目前未见过

user: user-1
content: 引用 11 楼 寻开心 的回复:函数内的变量地址是放到栈里面的， 一个一个的放，从栈顶向下，所以地址越来越小  堆的地址是向上的，一个一个的new或者malloc，地址是增加的 学习了！其实是受数组内元素的地址变化规律影响，形成了一种错误的思维定式

user: user-4
content: 函数内的变量地址是放到栈里面的， 一个一个的放，从栈顶向下，所以地址越来越小  堆的地址是向上的，一个一个的new或者malloc，地址是增加的

user: user-0
content: 引用 1 楼 不闻窗外事的回复:你可以打印看看，这个正常应该是连续的，但也不一定 printf("%p  %p  %p", &a, &b, &c); 老师还让做一个2k*8的存储器，你知道怎么做吗

user: user-2
content: 你可以打印看看，这个正常应该是连续的，但也不一定 printf("%p  %p  %p", &a, &b, &c);
user-0 提问: 这道题用递归函数怎么写？

回复:
user: user-1
content: #include <stdio.h> double get(int n, int a = 1, int b = 2) { 	if (n == 0) 		return 0; 	return b / (double)a + get(--n, b, a + b); } int main() { 	double c = get(2); 	return 0; }

user: user-2
content: int An(int n) {     if (1==n) return 2;     if (2==n) return 2;     return An(n-1) + An(n-2); }  int Bn(int n) {   if ( 1==n) return 1;   if ( 2==n) return 2;   return Bn(n-1) + Bn(n-2); };   An Bn知道了 ，后面的就可以做了吧
user-0 提问: 遍历从后往前？删除*的题目

回复:
user: user-1
content: 你可以从前遍历试试，代码能把你写死。任务语言都没有规定数组从前向后遍历，到底怎么遍历要看你的需求适合哪种遍历

user: user-0
content: 引用 1 楼 user-1 的回复:你的代码没有问题呀 因为是要处理最字符串最后的连续的*，所以要从尾部开始遍历字符串。  char *p = str;     printf("Input string");        gets(str);               while(*p) p++;         p--;  可以修改为   char *p;     printf("Input string");        gets(str);     p = a + strlen(str) -1; 谢谢你！我头次用CSDN！我不明白为什么我这个是从尾部开始遍历的，我百度了很久都没找到答案。 P--之后留在字符串的尾部，但是为什么能从后往前回到非*字符呢？一般情况我们不都是从前往后遍历吗！再次谢谢！

user: user-1
content: 你的代码没有问题呀 因为是要处理最字符串最后的连续的*，所以要从尾部开始遍历字符串。  char *p = str;     printf("Input string");        gets(str);               while(*p) p++;         p--;  可以修改为   char *p;     printf("Input string");        gets(str);     p = a + strlen(str) -1;
user-0 提问: 小白提问——求职顺序怎么理解?

回复:
user: user-0
content: 引用 3 楼 寻开心的回复:对于函数参数里面的这些运算的顺序，c语法没有硬性规定谁先谁后 不同的编译器处理的结果可能不一样 因此，建议一直都是不要在这儿搞事情 学到了，大佬，看书上的迷糊，自己跑更迷糊了。谢谢大佬

user: user-0
content: 引用 1 楼 user-3的回复:怎么感觉你给的答案是错的呀？ 不应该是4 4 3吗？ 运行了，确实是这样的

user: user-1
content: 对于函数参数里面的这些运算的顺序，c语法没有硬性规定谁先谁后 不同的编译器处理的结果可能不一样 因此，建议一直都是不要在这儿搞事情

user: user-2
content: 我觉得也是4，4，3

user: user-3
content: 怎么感觉你给的答案是错的呀？ 不应该是4 4 3吗？
user-0 提问: 大佬们帮帮忙！C语言编程题：取字符串s从下标beg开始到end-1结束，每个step个去一个，具体要求如下图？

回复:
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 楼 user-2 的回复:你的代码呢？一行都没有写吗 我解决了，搞定了~谢谢关注 #include <stdio.h> #include <stdlib.h> typedef unsigned long size_t; void pick(char *s, char *sub, int beg, int end, int step) { int i, j = 0; for (i = beg; i < end; i += step) { sub[j++] = s[i]; } while (sub[j]) { sub[j] = '\0'; j++; } } size_t len(char *s) { int i = 0, n = 0; for (; s[i]; i++) { n++; } return n; } int main() { char *s = "Stringhandling"; char *t = (char *)malloc(sizeof(char) * len(s)); pick(s, t, 2, 8, 2); printf("%s\n", t); free(t); return 0; }

user: user-2
content: 你的代码呢？一行都没有写吗

user: user-0
content: 九九孩子，大哥们

user: user-0
content: 顶一下，麻烦大佬们看看。
user-0 提问: 打印下面图形，行数n由键盘输入（n的值在1—9之间）。如：输入行数为4

回复:
user: user-1
content: printf("%d", (j<=i ? j : j-i));改一下，改成 printf("%d", (j<=i ? j : 2*i-j));

user: user-1
content: for example  int main() {       int n, i, j;     scanf("%d", &n);     if (n > 9 || n < 1) return -1;     for (i=1; i<=n; i++) {         for (j=0; j<n-i; j++) {             printf("%s", " ");         }         for (j=1; j<=2*i-1; j++) {             printf("%d", (j<=i ? j : j-i));         }         printf("\n");                   }     return 0; }
user-0 提问: C语言，救救孩子

回复:
user: user-1
content: int count = 0;     for (i = 100; i < 1000; i++)     {         if (x == (i / 100 + i%100/10 + i % 10))         {             count++;             printf("i = %d \n", i);         }              }     printf("count = %d \n", count);
user-0 提问: 大佬看看哪里错了为什么总是段错误

回复:
user: user-0
content: 引用 5 楼 寻开心的回复:scanf("%s %s %d %d %d",&stu[i].no,&stu[i].name,&stu[i].cj1,&stu[i].cj2,&stu[i].cj3);  第一个地方应该是%c而不是%s， 第二个地方name本来就是地址，不用再&取地址了 刚刚试了过了谢谢。。。

user: user-1
content: scanf("%s %s %d %d %d",&stu[i].no,&stu[i].name,&stu[i].cj1,&stu[i].cj2,&stu[i].cj3);  第一个地方应该是%c而不是%s， 第二个地方name本来就是地址，不用再&取地址了

user: user-0
content: 引用 3 楼 一条不会飞的鱼的回复:scanf("%s %c %d %d %d",&stu[i].no,&stu[i].name,&stu[i].cj1,&stu[i].cj2,&stu[i].cj3); char [ ] 数组用 %s，单个char 用 %c 刚刚试了下还是段错误

user: user-2
content: scanf("%s %c %d %d %d",&stu[i].no,&stu[i].name,&stu[i].cj1,&stu[i].cj2,&stu[i].cj3); char [ ] 数组用 %s，单个char 用 %c

user: user-0
content: 引用 1 楼 不闻窗外事的回复:scanf("%s %s %d %d %d",&stu[i].no，char类型使用%c，不是%s 可%c只能输入一个字符

user: user-3
content: scanf("%s %s %d %d %d",&stu[i].no，char类型使用%c，不是%s
user-0 提问: 请大神指导一下这段代码怎么理解？

回复:
user: user-1
content: 引用 4 楼 HilliardLiu 的回复:感谢大家，我主要是这里面std::map<candim, canval>，这两个符号都没见过，这是容器的表示法？ 学习一下c++模板编程

user: user-0
content: 感谢大家，我主要是这里面std::map<candim, canval>，这两个符号都没见过，这是容器的表示法？

user: user-2
content: candim,canval可能是结构体类型吧 ，std::map<candim, canval>中 ，candim类型是key,  canval类型 是 value， 组成一个map容器对象,  typedef 是给std::map<candim, canval> 起个别名 。std::map<candim, canval>等同于bizMap, bizMap can_Map;  bizMap can_ZYTMap;是新建两个map对象

user: user-3
content: 就是自定义了一种类型bizMap，这个类型是std::map<candim, canval>，然后声明了两个这个类型的变量

user: user-4
content: 自定义bizMap的类型为std::map<candim, canval>
user-0 提问: 南阳理工593

回复:
user: user-1
content: 如果泛泛而论，你只要懂这道题的核心算法，知道他要你掌握什么就行了； 如果严谨的说，题目的样例输入和样例输出，是输入了两组数据，输出了两个结果，而不是输入一组数据输出一个结果，再输入一组数据，再输出一个结果
user-0 提问: 我真的不知道哪里错！！！

回复:
user: user-0
content: 两张图放的位置反了字数字数

user: user-0
content: 引用 2 楼 一缕阳光宣泄、整个世界的回复:现在写代码都这么玩的吗，都不考虑溢出吗？ 不是溢不溢出的问题啊兄弟，问题是n=10的时候循环了11次

user: user-1
content: 现在写代码都这么玩的吗，都不考虑溢出吗？

user: user-0
content: 引用 5 楼 寻开心的回复:从代码上直接看是没道理的。 i如果是11，根本就进不了循环体。   既然有那个输出，结果必然是控制循环体的参数 i<=n当中的n被改变了  a[8] ，下标可用范围0到7 你输入的x是1到9， 输入9的时候对a[8] 进行了访问，这就越界了 因为a是局部变量和其他的局部变量内存相邻越界之后会改变其他变量的数值，具体谁会被改变和编译器有关系，不确定 你这儿很可能是把n给改变了  至于直接放数字在for的范围控制语句当中，因为 i<=10，这里10是固定值，不会被越界的操作影响 大哥是真的牛逼牛逼啊啊啊

user: user-2
content: 你在循环体里面，增加一个printf （“i=%d， n=%d\n”，i，n）的输出来验证它吧 看看是不是你输入9之后，n被改变了

user: user-2
content: 从代码上直接看是没道理的。 i如果是11，根本就进不了循环体。   既然有那个输出，结果必然是控制循环体的参数 i<=n当中的n被改变了  a[8] ，下标可用范围0到7 你输入的x是1到9， 输入9的时候对a[8] 进行了访问，这就越界了 因为a是局部变量和其他的局部变量内存相邻越界之后会改变其他变量的数值，具体谁会被改变和编译器有关系，不确定 你这儿很可能是把n给改变了  至于直接放数字在for的范围控制语句当中，因为 i<=10，这里10是固定值，不会被越界的操作影响

user: user-3
content: 我这里编译器正常，你最好自己调试一下，看看i是如何变化。 提示一下，数组下标是从0到n-1,如果越界了，将会出现未知错误。
user-0 提问: 字符指针函数问题

回复:
user: user-1
content: if(*str=='ch')改成 if(*str==ch)//去掉单引号，ch变量本身就是个字符

user: user-2
content: 写的很不错，只不过我发现了两个问题。 一个你的函数，输出的i有没有发现从来没有变过 另一个调用的时候：index ( *str, 'i')；你这个相当于是调用index（‘i’,'i'）。应该改为index（str,'i'） 其他都写的很好，这两个问题指出来后相信对你不是什么问题

user: user-3
content: 毛病一大堆，  # include<stdio.h>  int Index(char *str,char ch);  //index的定义放到这里， 而且不要用index这个名字，和系统定义的有冲突  int main() {  char *str="information"; printf("%d\n",Index ( str, 'i'));   // 这里传参是str，而不是*str，  str自身就是char*类型的，  *str反而是char类型了 printf("%d\n",Index ( str, 'f')); printf("%d\n",Index ( str,'x')); return 0;  }   int Index (char*str,char ch)  {    int i=0,flag=0;   for(; *str!='\0'; str++, i++)  // 这里补充了一个i++， 否则i始终是初始化的0而已   {   if(*str==ch){   flag=1;break;  }  }   if(flag==1) return(i+1);   if(flag==0) return(-1); }
user-0 提问: getchar () 与putchar () 的浅层理解

回复:
user: user-1
content: 然而scanf也可以读取'\n'。 getchar() 是从stdin 读取一个字符 等价于 getc(stdin) 。，putchar()是往 stdout 写入一个字符，等价于 putc(ch, stdout) 。 scanf()系列函数，从各种资源读取输入，按照 format 转译，并将结果存储到指定位置，通常说，scanf格式化读取。 你可以去C参考手册看更详细的解释。
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-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: 这是学校ppt上的题目 电脑输出结果是37，13 我们自己算的是36，13

user: user-2
content: 这个跟编译器有关。有的编译器甚至会b先三次自加后再求表达式的值，b是13，然后会打印出 39 13 纠结这个没意义，不要写这种代码。。。

user: user-3
content: 不是36，13？

user: user-0
content: 这个a不是应该等于36吗 用的vc6.0
user-0 提问: C-Free下编译运行提示运行程序错误，每次编译都会出现运行程序错误

回复:
user: user-1
content: #define是预处理，在程序编译之前就要处理，所以在你没有输入a,b,c之前disc的值已经被定义了，和你输入具体的a、b、c的值没有关系。 #include<stdio.h> #include<math.h> float disc = 0.0f;//-----------将disc定义为全局变量-------------- double x1, x2; void m(float a, float b, float c) { 	printf("方程式有两个不相等的实根：\n"); 	x1 = (-b + sqrt(disc)) / (2 * a); 	x2 = (-b - sqrt(disc)) / (2 * a); 	printf("方程式的根是：%.2lf\t%.2lf", x1, x2); } void n(float a, float b, float c) { 	printf("方程式有两个相等的实根：\n"); 	x1 = x2 = (-b) / (2 * a); 	printf("方程式的根是：%.2lf\t%.2lf", x1, x2); } void f(float a, float b, float c) { 	printf("方程式没有实根"); } int main() { 	float a, b, c; 	printf("请输入a,b,c的值：\n"); 	scanf("%f%f%f", &a, &b, &c); 	float disc = b*b - 4 * a*c;//------在输入a、b、c的值之后计算disc的值---------- 	if (disc>0)  		m(a, b, c); 	else if (disc == 0)  		n(a, b, c); 	else  		f(a, b, c); 	return 0; } VS2015调试的结果

user: user-2
content: 1你这个考虑到a是0了吗？  分母是0的时候求根根式要特殊处理的吧   否则除法要造反的  2 #define disc b*b-4*a*c 没有多大意义   这个定义导致a，b，c必须是全局变量，或者每个用到它的函数都要有a,b，c这个三个变量   比如，把m(float a, float b, float c ) 改成 m(float a1, float b, float c) 立刻编译不通过   #define disc(a,b,c)  b*b-4ac   这种定义才根据被普遍性  3 不要忽略编译器的任何警告
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: 这就是字符换和数组的区别 字符串在定义以及键盘输入，以及字符串函数操作的时候都会默默的在尾巴补充0 字符数组不会这么干，它更强调的是一个一个字符， 0也是字符的一种，数组当中完全可以在若干个字符中间放一个或者多个0  你的代码在把b内容放到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: for (n = 0; n<current; n++) {         stu[n].num = malloc(10 * sizeof(char));         stu[n].nam = malloc(5 * sizeof(char));     }     //为结构体动态分配内存      printf("请输入学生人数 ：\n");     scanf("%d", ¤t);  改成下面，顺序交换一下  printf("请输入学生人数 ：\n");     scanf("%d", ¤t);      for (n = 0; n<current; n++) {         stu[n].num = malloc(10 * sizeof(char));         stu[n].nam = malloc(5 * sizeof(char));     }  学好，姓名这里也改下 去掉 &          printf("请输入学生的学号:\n");         scanf("%s", stu[i].num);          printf("请输入学生的姓名:\n");         scanf("%s", stu[i].nam);

user: user-3
content: 还有下次贴代码，把格式弄一下，不然很多人都不会看

user: user-3
content: 这里有问题：scanf("%s",&stu[i].num);  改成 scanf("%s",stu[i].num);  stu[n].num=malloc(10*sizeof(char)); 这个没报错？void*应该要强制转换一下吧
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: 我觉得与编译器应该是有关的，double可以强转为int，所以最后一个正常应该不为0，或者你这样写 printf("%f%f%d",c,a, （int）b);

user: user-3
content: 只可意会，不可言传。浮点数读取 和 存储都和整型是不一样的。double长度是8字节，你读取4个字节用的整型方式，读取到的字节是 00 00 00 00  结果自然为0咯。
user-0 提问: 大一萌新QWQ请教各位前辈一道C语言指针习题

回复:
user: user-1
content: #include<stdio.h> #include<string.h> void fun(char *ptr[10]) {     int i, j, flag;     for(i=0; i<10; i++)     {         for ( j=0; j<10-1; j++ ){             flag=strcmp(ptr[j],ptr[j+1]);             if(flag>0)             {                 char *c;                 c= ptr[j];                 ptr[j] =  ptr[j+1];                 ptr[j+1] = c;             };         }     }     printf("\n----Result-----\n");     for(i=0;i<10;i++)         printf("%s\n",ptr[i]); }  int main() {     int i;     char  *ptr[10],s[10][30];     for(i=0;i<10;i++) {         scanf("%s",s[i]);         ptr[i] = s[i];     };     printf("\n---input----\n");     for ( i=0; i<10; i++)         printf("%s\n", ptr[i]);     printf("\n");     fun(ptr);     return 0; }

user: user-1
content: 奥。 你的ptr指针设置还有问题 for (I=0; I<10; I++) ptr[I] = s[I]  要有这个

user: user-1
content: {   flag=strcmp(s[i],s[i+1]);     if(flag>0)     {char *c; 这个不可以     strcpy(c,s[i]);     strcpy(s[i],s[i+1]);     strcpy(s[i+1],c);} }  这段代码不行 这样定义 c是野指针。  应该char c[30]   你的这个办法是保持s【】数组内的指针不变，指针的内容交换的， 要strcpy多次 其实还有一个办法， 交换s【】数组内的指针啊     if(flag>0)     {char * c;      c = s[I];      s[I] = s[I+1];      s[I+1] = c; } 这样多简单

user: user-0
content: #include<stdio.h> #include<string.h> void fun(char *ptr[10],char s[10][30]) { 	int i,j,flag; 	ptr[0]=&s[0][0];     for(i=0;i<10;i++) {   flag=strcmp(s[i],s[i+1]); 	if(flag>0)     {char *c;     strcpy(c,s[i]);     strcpy(s[i],s[i+1]);     strcpy(s[i+1],c);} } 	for(i=0;i<10;i++) 	for(ptr[i]=&s[i][0];s[i][j]!='\0';j++) 	printf("%s",*(*(ptr+i)+j)); }  void main() { 	int i,j; 	char  *ptr[10],s[10][30]; 	ptr[0]=&s[0][0]; 	for(i=0;i<10;i++) 	scanf("%s",s[i]); 	fun(ptr,s); } 引用 2 楼 寻开心 的回复:那个就是字符串数组啊 s【0】， s【1】等等 以及ptr【0】，ptr【1】等等 每个都是一个字符串  for 对 I从0到10循环  {     scanf("%s", s[I]);    // 这种方式输入字符串就好了     ptr[I] =. &s[I][0] }  比较的时候，直接strcmp（ptr[x], ptr[y]) 或者 strcmp(s[x], s[y])就可以了   char * ptr【10】 这是一个数组，每个元素是一个char*类型， 让他等于 s【i】【0】的地址就可以了 char  s[10][30]  是一个二维数组， 里面每个元素是一个char， 但是s[i] 就是s[i][0]的地址，把它当作字符串，需要注意字符串尾巴要有个‘\0’字符，否则就不知道要多长了。 好在scanf输入字符串的时候，会自动在尾巴补充上这个字符串结束符请问前辈我按您的讲解改了改 可为什么还是什么都没输出来QWQ 麻烦能帮我再订正下好吗 谢谢前辈

user: user-2
content: flag=strcmp(s[i]+j,s[i+1]+j);你这个地方比较的可不是字符串，比较字符串  for(i=0;i<10;i++)     flag=strcmp(s[i],s[i+1]); 这样才行

user: user-1
content: 用scanf指定字符串格式，输入s[i]的时候，注意别超过29个字符，否则就不好玩儿了。

user: user-1
content: 那个就是字符串数组啊 s【0】， s【1】等等 以及ptr【0】，ptr【1】等等 每个都是一个字符串  for 对 I从0到10循环  {     scanf("%s", s[I]);    // 这种方式输入字符串就好了     ptr[I] =. &s[I][0] }  比较的时候，直接strcmp（ptr[x], ptr[y]) 或者 strcmp(s[x], s[y])就可以了   char * ptr【10】 这是一个数组，每个元素是一个char*类型， 让他等于 s【i】【0】的地址就可以了 char  s[10][30]  是一个二维数组， 里面每个元素是一个char， 但是s[i] 就是s[i][0]的地址，把它当作字符串，需要注意字符串尾巴要有个‘\0’字符，否则就不知道要多长了。 好在scanf输入字符串的时候，会自动在尾巴补充上这个字符串结束符

user: user-0
content: 求教前辈感觉指针这里好难QWQ
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 楼 ともり なお的回复:你的函数没有调用啊… emm…我基本啥都不会，求教

user: user-2
content: 你的函数没有调用啊…

user: user-3
content: 还是多看书吧。  scanf后，再加一行 ReadScore（num， score， n）；
user-0 提问: 求大佬教，为什么总是runtime error

回复:
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: error C4703: 使用了可能未初始化的本地指针变量“head” error C4703: 使用了可能未初始化的本地指针变量“p1”
user-0 提问: 高手们帮我看看我这个程序为什么运行出来是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: 还有，虽然不知你为什么用double x，但既然用了double，输入的时候请用scanf("%lf",&x)

user: user-2
content: 子函数f里面，k没有赋初始值，所以第一次for就判定失败了，直接跳出

user: user-3
content: 每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！每天回帖即可获得10分可用分！

user: user-4
content: 2*i/(2*i-1)*2*i/(2*i+1)  这里始终是整数的运算 把第一个2改成2.0就好了 否则这里是整数运算，尽管m是浮点数，课整数运算的结果始终是0有个屁用
user-0 提问: 压缩字符串

回复:
user: user-0
content: 引用 1 楼 寻开心 的回复：全局变量 char c = array【0】  int count=1； for 1开始的循环      如果当前元素和c相等， 计数器加一 继续      如果当前元素和c不等， 输出c（count）， 然后c=当前元素，count=1 再输出一次c（count） 完活儿写出来了，谢谢你

user: user-1
content: 太懒了，这种题目自己不写代码，还来问人。至少你先写了代码，不通过再请人指点。

user: user-2
content: 压缩算法的一种嘛

user: user-3
content: 引用 3 楼 寻开心 的回复:你这个是统计字符数量，外加输出排序，不是压缩 cccaaabbaa  你会输出a5b2c3这样，而不是c3a3b2a2 还真是，搞错题了

user: user-4
content: 你这个是统计字符数量，外加输出排序，不是压缩 cccaaabbaa  你会输出a5b2c3这样，而不是c3a3b2a2

user: user-3
content: void fun(char *str) {     int hash[256];     memset(hash, 0, sizeof(hash));     char i = 0;     while (str[i] != 0)     {         hash[str[i]]++;         i++;     }      for (i = 0; i < 256; i++)     {         if (hash[i] > 0)             printf("%c (%d) ", i, hash[i]);     } }

user: user-4
content: 全局变量 char c = array【0】  int count=1； for 1开始的循环      如果当前元素和c相等， 计数器加一 继续      如果当前元素和c不等， 输出c（count）， 然后c=当前元素，count=1 再输出一次c（count） 完活儿
user-0 提问: 新人编程求助

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

user: user-2
content: #include<stdio.h> /*函数fun功能是：将二维数组的第k行的元素依次与第0行元素交换 1 2 3 4 5 6 7 8 9 当k的值为2，变换为 7 8 9 4 5 6 1 2 3 */ void fun(int** s, int k) { 	int temp; 	int i; 	for (i = 0; i < 3; ++i) 	{ 		temp = s[k][i]; 		s[k][i] = s[0][i]; 		s[0][i] = temp; 	} }  int main() { 	int k; 	int n = 3, m = 3; 	scanf("%d", &k); 	int** a = new int*[n]; 	for (int i = 0; i < n; ++i) 	{ 		a[i] = new int[m]; 	}  	for (int i = 0; i<n; i++) 		for (int j = 0; j<m; j++) 			scanf("%d", &a[i][j]);   	fun(a, k);  	for (int i = 0; i < n; i++) 	{ 		for (int j = 0; j < m; j++) 		{ 			printf("%d\t", a[i][j]); 		} 		printf("\n"); 	} 	for (int i = 0; i < n; ++i) 	{ 		delete[] a[i]; 	} 	delete[] a; 	return 0; } VS2015调试结果  请参考《C++中动态分配多维数组》 《C++中二维数组的使用》 《C++二维数组》 希望能够帮到你！

user: user-3
content: fun函数应该是遍历列数，将第k行的数依次与第0行的元素交换，你看你写的把列都固定了，这怎么换，另外数组定义最好用常量，你可以把他定义的大一点，然后用其中的一部分，你这多半是dev那几个老古董了，要vs直接被打死

user: user-0
content: 还没学习动态数组相关知识

user: user-4
content: 你的编译器没给你报错吗？你数组定义得用常量，除非你就用动态数组。还有就是你的fun函数得重新想一想
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: 没有初始化temp，while都没进去

user: user-3
content: 你这个值比给定的更精确，是在它要求的那个基础上多算了一步得到的结果 因为你是先加了结果再去判断，所以多了一步 while(1){ 		term *= i; 		i++; 		temp = f / term; 		if ( temp<1.0e-5) break; 		s += temp; 		printf("i=%d,s=%lf\n",i, s);  	}; 这样就和答案一致了

user: user-0
content: 赋初值为1，结果为2.718282，为什么还不对呢？
user-0 提问: ）输入由0~9组成的任意长度的数字字符串，将其转换为整数。例如输入“65535”字符串，转为整数65535。要求用函数实现。

回复:
user: user-1
content: https://wenku.baidu.com/view/f23720cf4bfe04a1b0717fd5360cba1aa8118cce.html

user: user-2
content: 简单三个字 做不到 我只说一次  任意长这种概念别随口说出来  这个宇宙就不支持任意长

user: user-3
content: stoi, stol, stoll.

user: user-4
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: sum 数组少了一个  冒泡第二层循环控制有问题

user: user-2
content: #include <stdio.h>  int main() {     int i,j,k,t;     float a[5][4],sum[5]={0};     printf("\t\t课程1\t课程2\t课程3\t课程4\n");     for(i=0;i<5;i++) {         printf("%d号学生",i+1);         for(j=0;j<4;j++)             scanf("%f",&a[i][j]);     }      for(i=0;i<5;i++)         for(j=0;j<4;j++)             sum[i] += a[i][j];      for(i=0;i<5;i++) {         for(j=0;j<5-i-1;j++) {             if(sum[j]<sum[j+1]) {                 t=sum[j];                 sum[j]=sum[j+1];                 sum[j+1]=t;             }             for(k=0;k<4;k++) {                 t=a[j][k];                 a[j][k]=a[j+1][k];                 a[j+1][k]=t;             }         }     }      printf("\t\t成绩表\n");     printf("\t课程1\t课程2\t课程3\t课程4\t平均分\n");     for(i=0;i<5;i++) {         printf("\n%d号学生:",i+1);         for(j=0;j<4;j++)             printf(" %.1f\t",a[i][j]);         printf(" %.1f",sum[i]/4);         printf("\n");     }     return 0; }

user: user-0
content: 引用 1 楼 寻开心的回复:同一个问题，不用多次发帖的 把对sum做排序的代码也写出来，然后排序过程当中交换sum数据的时候，同步交换a数组的内容就出来了 就差这一个步骤了 老哥介意私聊吗，我改了之后出现了一些新的奇怪的问题

user: user-3
content: #include<stdio.h> #define N 5 main() { 	int a[N][5],i,j,n,x,y,z; 	printf("请输入学号和考勤分、内务分\n"); 	for(i=0;i<N;i++) 	for(j=0;j<3;j++) 	{scanf("%d",&a[i][j]);} 	for(i=0;i<N;i++) 	{ 		for(a[i][3]=0,j=1;j<3;j++) 		{a[i][3]+=a[i][j];} 	} 	printf("请输入查询的学号："); 	scanf("%d",&n); 	i=0; 	while(i<N&&a[i][0]!=n) 	{i++;} 	if(i<N) 	{ 		printf("该生的考勤分、内务分、总分为："); 		for(j=1;j<4;j++) 		printf("%4d",a[i][j]); 		printf("\n"); 	} 	else printf("你要找的学生不存在\n");  	for(i=0;i<N-1;i++) 	{ 		for(j=i+1;j<N;j++) 		{ 			for(z=0;z<4;z++) 			if(a[i][3]<a[j][3])	 			{ 				x=a[i][z]; 				a[i][z]=a[j][z]; 				a[j][z]=x; 			}	 		} 	} 	for(i=0;i<N;i++) 	{a[i][4]=i+1;} 	printf("输出排序后的成绩表\n"); 	printf(" 学号  考勤分 内务分 总分 名次\n"); 	printf("-----------------------------\n");  	for(i=0;i<N;i++) 	{ 		for(j=0;j<5;j++) 		printf("%6d",a[i][j]); 	printf("\n"); 	}	 }  //   你可以参考一下我写的这个题

user: user-2
content: 同一个问题，不用多次发帖的 把对sum做排序的代码也写出来，然后排序过程当中交换sum数据的时候，同步交换a数组的内容就出来了 就差这一个步骤了
user-0 提问: C语言100以内数字随机猜数游戏

回复:
user: user-1
content: srand((unsigned)time(NULL)); for(i=1;i<100;i++)          n=rand()%(100);  这里生成100次随机数也没有意思啊 后面的代码没毛病

user: user-2
content: #include<stdio.h>  #include<time.h> #include<stdlib.h>  int main() { 	int i, n, m, a = 0; 	srand((unsigned)time(NULL)); 	for (i = 1; i < 100; i++) 	{//-------------添加大括号---------------- 		n = rand() % (100);  		while (1) 		{ 			printf("请输入一个100以内的正整数:"); 			scanf("%d", &m); 			if (m > n) { printf("猜大了\n"); a++; } 			if (m < n) { printf("猜小了\n"); a++; } 			if (m == n) { printf("系统产生的100以内的随机数为 ：%d\n", m); a++; break; } 		} 		printf("你一共输入了 %d\n", a); 	}//-------------添加大括号---------------- 	return 0; }