Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 大一学生自学C，恳请大家帮助

回复:
user: user-0
content: 引用 3 楼 qq_42307333的回复:[quote=引用 2 楼 qq_44762397 的回复:] [quote=引用 1 楼 @风轻云淡_的回复:]#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { 	int height, length, width, volume, weight; 	printf("Enter height of box:"); 	scanf("%d", &height); 	printf("Enter length of box:"); 	scanf("%d", &length); 	printf("Enter width of box:"); 	scanf("%d", &width);//这里输入完之后，缓冲区保存了一个换行符，倒数第二个getchar()就是为了吃掉这个换行符的 	volume = height * length*width; 	weight = (volume + 165) / 166; 	printf("Volume(cubic inches):%d\n", weight); 	getchar(); 	getchar();//这个的作用才是为了不闪退 	return 0; } 前几个scanf在读取完键盘输入后，也会在缓冲区留一个换行符，但是scanf有处理一些缓冲区留有特殊符号（包括回车换行符）的机制，所以不会影响，从而能正常读取用户的输入。 感谢，可是为什么三个scanf的缓冲区一个getchar就可以清除了？[/quote] 前面的回车被后面的scanf吸收了，只有最后一个scanf需要用getchar来吸收[/quote] 感谢啦！现在懂了！继续努力

user: user-1
content: 引用 2 楼 qq_44762397 的回复:[quote=引用 1 楼 @风轻云淡_的回复:]#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { 	int height, length, width, volume, weight; 	printf("Enter height of box:"); 	scanf("%d", &height); 	printf("Enter length of box:"); 	scanf("%d", &length); 	printf("Enter width of box:"); 	scanf("%d", &width);//这里输入完之后，缓冲区保存了一个换行符，倒数第二个getchar()就是为了吃掉这个换行符的 	volume = height * length*width; 	weight = (volume + 165) / 166; 	printf("Volume(cubic inches):%d\n", weight); 	getchar(); 	getchar();//这个的作用才是为了不闪退 	return 0; } 前几个scanf在读取完键盘输入后，也会在缓冲区留一个换行符，但是scanf有处理一些缓冲区留有特殊符号（包括回车换行符）的机制，所以不会影响，从而能正常读取用户的输入。 感谢，可是为什么三个scanf的缓冲区一个getchar就可以清除了？[/quote] 前面的回车被后面的scanf吸收了，只有最后一个scanf需要用getchar来吸收

user: user-0
content: 引用 1 楼 @风轻云淡_的回复:#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { 	int height, length, width, volume, weight; 	printf("Enter height of box:"); 	scanf("%d", &height); 	printf("Enter length of box:"); 	scanf("%d", &length); 	printf("Enter width of box:"); 	scanf("%d", &width);//这里输入完之后，缓冲区保存了一个换行符，倒数第二个getchar()就是为了吃掉这个换行符的 	volume = height * length*width; 	weight = (volume + 165) / 166; 	printf("Volume(cubic inches):%d\n", weight); 	getchar(); 	getchar();//这个的作用才是为了不闪退 	return 0; } 前几个scanf在读取完键盘输入后，也会在缓冲区留一个换行符，但是scanf有处理一些缓冲区留有特殊符号（包括回车换行符）的机制，所以不会影响，从而能正常读取用户的输入。 感谢，可是为什么三个scanf的缓冲区一个getchar就可以清除了？

user: user-2
content: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { 	int height, length, width, volume, weight; 	printf("Enter height of box:"); 	scanf("%d", &height); 	printf("Enter length of box:"); 	scanf("%d", &length); 	printf("Enter width of box:"); 	scanf("%d", &width);//这里输入完之后，缓冲区保存了一个换行符，倒数第二个getchar()就是为了吃掉这个换行符的 	volume = height * length*width; 	weight = (volume + 165) / 166; 	printf("Volume(cubic inches):%d\n", weight); 	getchar(); 	getchar();//这个的作用才是为了不闪退 	return 0; } 前几个scanf在读取完键盘输入后，也会在缓冲区留一个换行符，但是scanf有处理一些缓冲区留有特殊符号（包括回车换行符）的机制，所以不会影响，从而能正常读取用户的输入。
user-0 提问: 求助

回复:
user: user-1
content: 引用 1 楼 weixin_42377720 的回复：时间问题，我只弄了第一题，不好意思 #include <stdio.h> #include<stdlib.h>  #define N 3 // 学生数   struct Student	// 学生C语言成绩结构体类型  { 	long num; 	int score;  }stu[N];  // 定义input函数,从键盘向数组输入N个学生的学号、C语言成绩 void input_Stu_MSG(struct stuc stu[]);  //打印学生信息 void Show_Stu_MSG(struct Student stu[],int n);  // 定义print函数,输出数组中成绩最高学生的信息 void output_Max_Score(struct stuc stu[]);    int main()  { 	input_Stu_MSG(stu,N);  	Show_Stu_MSG(stu,N); 	putchar('\n');  	output_Max_Score(stu,N);   	system("pause"); 	return 0;  }  void input_Stu_MSG(struct Student stu[],int n) // 定义input函数,从键盘向输入N个学生的学号、C语言成绩 { 	int i; 	printf("请输入学生的学号和C语言成绩！\n"); 	for(i=0;i<n;i++) 	{ 		printf("请输入第%d个学生的学号，C语言成绩：",i+1); 		scanf("%ld,%d",&stu[i].num,&stu[i].score); 	} } void Show_Stu_MSG(struct Student stu[],int n) { 	int i; 	for(i=0;i<n;i++) 		printf("第%d个学生的学号：%ld		分数：%d\n",i,stu[i].num,stu[i].score); }  void output_Max_Score(struct Student stu[],int n) // 定义print函数,输出数组中成绩最高学生的信息 { 	int i; 	struct Student temp;  	temp=stu[0]; 	for(i=0;i<n;i++) 	{ 		if(stu[i].score>temp.score) 			temp=stu[i]; 	} 	printf("c语言最高分是：%d",temp.score); }楼主是没时间吗？怎么不回一下也不结个贴呢

user: user-1
content: 时间问题，我只弄了第一题，不好意思 #include <stdio.h> #include<stdlib.h>  #define N 3 // 学生数   struct Student	// 学生C语言成绩结构体类型  { 	long num; 	int score;  }stu[N];  // 定义input函数,从键盘向数组输入N个学生的学号、C语言成绩 void input_Stu_MSG(struct stuc stu[]);  //打印学生信息 void Show_Stu_MSG(struct Student stu[],int n);  // 定义print函数,输出数组中成绩最高学生的信息 void output_Max_Score(struct stuc stu[]);    int main()  { 	input_Stu_MSG(stu,N);  	Show_Stu_MSG(stu,N); 	putchar('\n');  	output_Max_Score(stu,N);   	system("pause"); 	return 0;  }  void input_Stu_MSG(struct Student stu[],int n) // 定义input函数,从键盘向输入N个学生的学号、C语言成绩 { 	int i; 	printf("请输入学生的学号和C语言成绩！\n"); 	for(i=0;i<n;i++) 	{ 		printf("请输入第%d个学生的学号，C语言成绩：",i+1); 		scanf("%ld,%d",&stu[i].num,&stu[i].score); 	} } void Show_Stu_MSG(struct Student stu[],int n) { 	int i; 	for(i=0;i<n;i++) 		printf("第%d个学生的学号：%ld		分数：%d\n",i,stu[i].num,stu[i].score); }  void output_Max_Score(struct Student stu[],int n) // 定义print函数,输出数组中成绩最高学生的信息 { 	int i; 	struct Student temp;  	temp=stu[0]; 	for(i=0;i<n;i++) 	{ 		if(stu[i].score>temp.score) 			temp=stu[i]; 	} 	printf("c语言最高分是：%d",temp.score); }
user-0 提问: 新手求教

回复:
user: user-0
content: 引用 3 楼 user-1的回复:'='是赋值，'=='是判断 https://zhidao.baidu.com/question/262642370944211285.html 嗯嗯懂了谢谢啊大哥

user: user-1
content: '='是赋值，'=='是判断 https://zhidao.baidu.com/question/262642370944211285.html

user: user-0
content: 引用 1 楼 user-1的回复:1.首先你把代码放在代码块里面别人容易查看，而不是截图。 2.你的判断语句‘=’恐怕要改成‘==’ 我试了确实是因为这个，但为什么要改成==呢，不是很懂

user: user-1
content: 1.首先你把代码放在代码块里面别人容易查看，而不是截图。 2.你的判断语句‘=’恐怕要改成‘==’
user-0 提问: 求大神帮小弟看看，小弟是大一萌新

回复:
user: user-1
content: 引用 7 楼 哲哲哲少 的回复:[quote=引用 6 楼 @风轻云淡_的回复:] [/code] c＋＋就是舒服啊，蟹蟹[/quote] sscanf不是C++才用的，C语言一直就可以用的，而且C++有升级更安全版：sscanf_s，上面我只是用C++写出来了。。 C语言版： #include <stdio.h>  int main() { 	char buff[64] = "12-张三-1344"; 	int age = 0; 	int other = 0; 	char name[32] = {0};  	sscanf(buff,"%d-%[^-]-%d",&age,name,&other); 	printf("age:%d\r\nname:%s\r\nother:%d\r\n",age,name,other);  	return 0; }

user: user-0
content: 引用 6 楼 @风轻云淡_的回复:#include <iostream>  using namespace std;  int main() { 	char buff[64] = "12-张三-1344"; 	int age = 0; 	int other = 0; 	char name[32] = {0}; 	 	sscanf(buff,"%d-%[^-]-%d",&age,name,&other); 	cout << "age:" << age << endl; 	cout << "name:" << name << endl; 	cout << "other:" << other << endl;  	return 0; }  c＋＋就是舒服啊，蟹蟹

user: user-1
content: #include <iostream>  using namespace std;  int main() { 	char buff[64] = "12-张三-1344"; 	int age = 0; 	int other = 0; 	char name[32] = {0}; 	 	sscanf(buff,"%d-%[^-]-%d",&age,name,&other); 	cout << "age:" << age << endl; 	cout << "name:" << name << endl; 	cout << "other:" << other << endl;  	return 0; }

user: user-2
content: //demo 					char s[20] = "12-张三-5631"; 					int i = 0; 					int x = 0; 					int char_index = 0; 					char model[3][10] ; 					while (i < strlen(s) ) 					{ 						//-分割 						if (s[i]=='-') 						{ 							model[char_index][x] = '\0'; 							char_index++; 							x=0; 							i++; 							continue; 						} 						//分别赋值 						else 						{ 							model[char_index][x]=s[i]; 							x++; 						} 						i++; 					} 					//最后一位 					model[char_index][x] = '\0'; 					MessageBox(NULL,model[0],"",NULL); 					MessageBox(NULL, model[1], "", NULL); 					MessageBox(NULL, model[2], "", NULL); 					//转化 					int Number[2]; 					Number[0] = atoi(model[0]); 					Number[1] = atoi(model[2]);  最后是那个意思？

user: user-3
content: 调用atoi函数，把字符串转成整形

user: user-0
content: 引用 楼主 哲哲哲少的回复:char s[20]; s[20]内容是:12-张三-5631 把这个字符串中的20，张三，5631这三部分内容分别存入三个数组当中？ 我这个描述漏了些东西，我是希望把数字转化为整形，汉字保留字符型，然后再存入三个不同的数组中

user: user-0
content: 引用 1 楼 user-3的回复:for example char *ptr; char res[3][10]; int i = 0; ptr = strtok(s, "-"); sprintf(res[i++], "%s", ptr); while(ptr != NULL) {     ptr = strtok(NULL, "-");     if(ptr != NULL) {         sprintf(res[i++], "%s", ptr);     } } 或者直接遍历字符串找“-”，然后用strncpy也可以 如果20和5631转化成整形之后再存入数组中，该怎么搞

user: user-3
content: for example char *ptr; char res[3][10]; int i = 0; ptr = strtok(s, "-"); sprintf(res[i++], "%s", ptr); while(ptr != NULL) {     ptr = strtok(NULL, "-");     if(ptr != NULL) {         sprintf(res[i++], "%s", ptr);     } } 或者直接遍历字符串找“-”，然后用strncpy也可以
user-0 提问: while和getchar组合清除剩余输入的问题

回复:
user: user-1
content: 我的理解是这样，你先输入n，然后再按回车，这是两次输入，会被两个getchar分别获取，然后就回到最外层循环处等待输入

user: user-2
content: while(getchar() != '\n') continue; 这意思是只有读到回车才跳出循环
user-0 提问: c语言求助

回复:
user: user-1
content: 这种情况要把你的全部代码贴上来。编译没有错误这是程序可以跑起来的前提，至于是不是按照你设定的轨迹运行就不知道了。

user: user-2
content: 能详细的发一张代码吗？代码编译是可能没有出错，但是不代表代码没有错，我也是学生，不是很厉害，但也遇到不少这种情况

user: user-3
content: 没错才怪啊啊 亲 ，，  这种错误很大可能是指针使用错误
user-0 提问: 新手入门C，

回复:
user: user-1
content: 引用 1 楼 慢生活。 的回复:长一点那个是正确的，短的是我自己写的 pa,pb,pc都是指针，你这样交换，只是换了指针的指向，本身a,b,c的值是没有改变的，所以你输出*pa,*pb,*pc结果是交换过的，但是如果你输出a,b,c的话，结果应该是没有改变的。 因为你这里没有封装函数来交换，所以你直接用a，b，c来完成交换就可以了，如果一定要用指针，就用*pa,*pb,*pc

user: user-2
content: lz，第23行，pb=pc写反了。。。

user: user-0
content: 长一点那个是正确的，短的是我自己写的
user-0 提问: c语言中的这个(1..S1(0))是什么意思

回复:
user: user-1
content: CString用法：https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa315043(v=vs.60) 引用 2 楼 wudidada4 的回复:[quote=引用 1 楼 user-2 的回复：]伪代码 实际语法不支持的那这个书里也没有写用法，就很烦了[/quote]

user: user-0
content: 引用 3 楼 niiiloc 的回复：CString用法：https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa315043(v=vs.60) [quote=引用 2 楼 wudidada4 的回复:] [quote=引用 1 楼 user-2 的回复：]伪代码 实际语法不支持的那这个书里也没有写用法，就很烦了[/quote][/quote]谢谢🙏

user: user-0
content: 引用 1 楼 user-2 的回复：伪代码 实际语法不支持的那这个书里也没有写用法，就很烦了

user: user-2
content: 伪代码 实际语法不支持的
user-0 提问: 大佬们帮个忙   才学完结构体 有点懵逼嘻嘻 谢谢

回复:
user: user-1
content: 献丑了，我是新手  #include <iostream> #include <stdio.h> using namespace std;  struct elePeople {     string name;     float score;     elePeople(string p_name,float p_score)     {         name=p_name;         score=p_score;      } }; int main() {     elePeople ele[]={{"林黛玉",0},{"薛宝钗",0},{"秦可卿",0}};     string inputName;     cout<<"请输入一个名字..."<<endl;     cin>>inputName;     while(inputName!="exit")     {         for(int i=0;i<3;i++)         {             if(ele[i].name==inputName)             {                 ele[i].score++;                 break;              }         }          cout<<"请输入一个名字..."<<endl;         cin>>inputName;     }      for(int j=0;j<3;j++)     {         cout<<ele[j].name<<"---"<<ele[j].score<<endl;     }      getchar();     return 0; }  当输入exit时，退出循环 CodeBlocks测试通过

user: user-2
content: 如果只是这样感觉没有用到结构体的特点 直接用数组就可以达到你的要求了
user-0 提问: 'cha' : function does not take 4 parameters  c++小白求解

回复:
user: user-1
content: cha()函数的声明是3个参数，而cha()函数的定义是4个参数。把cha()函数 的声明改为 void cha(struct goodtype thing[],int n, int k,goodtype x); 以下是运行效果

user: user-2
content: 第三行声明错误，void cha(struct goodtype thing[],int k,goodtype x); 少了个参数，这么明显的错误，错误提示也那么清楚，英语不认识么？
user-0 提问: 求助帖，怎么用两种方法处理一个char，而且输出所占字节的8位二进制

回复:
user: user-1
content: 能不能分享一下，我只能想到一种方法，就是不断将该字符对应的ASCII码除以2，取得对应位的值，最后得到8位二进制表示。两种方法难道是说的除以2这个过程的两种方法吗。那应该就不止两种了，递归、各种循环等等。

user: user-0
content: 我知道了..........
user-0 提问: 求各位大佬帮一下小弟困扰几天的问题！！

回复:
user: user-0
content: 我找到问题原因了：scanf参数的缓冲区问题 而且在VS2015中不支持fflush(stdin); 用rewind(stdin);替换后解决问题 替换后代码：  void scf() { 	printf("请输入体重:"); 	while (scanf("%f", &weght)!=1) 	{ 		printf("输入错误，请重新输入！\n"); 		printf("请输入体重:"); 		rewind(stdin);//特别注意 VS2015不支持 fflush(stdin) 	} 	printf("请输入身高:"); 	while (scanf("%f", &height) != 1) 	{ 		printf("输入错误，请重新输入！\n"); 		printf("请输入身高:"); 		rewind(stdin);//特别注意 VS2015不支持 fflush(stdin) 	} }

user: user-0
content: 引用 1 楼 user-1的回复:把循环里面的scanf去掉，循环条件里面有scanf了 去掉也不行 还是无限循环

user: user-1
content: 把循环里面的scanf去掉，循环条件里面有scanf了
user-0 提问: 求代码

回复:
user: user-1
content: #include<stdio.h> float a; float b; int c; int main() { scanf("%f",&a);//输入数字 c=a; printf ("输出整数部分：%d",c); b=c-a; printf("输出小数部分:%f",b); return 0; }

user: user-2
content: 要得到浮点数整数部分，一种简单地方法是，直接强制类型转换，将浮点数转换为整数。 比如： float a=1.234; 那么，(int)a，返回整数部分，且不改变a的值。  要得到小数部分，也可以这样做： a-(int)a
user-0 提问: 救救这个刚入门c语言的孩子吧

回复:
user: user-0
content: 引用 1 楼 轻箬笠的回复:在最后加上getchar()或者system("pause"); 有时候一个getchar()不够，那就多来几个 刚刚试了，确实有用，多谢大佬

user: user-1
content: 在最后加上getchar()或者system("pause");

user: user-2
content: system(“pause”) ;需要include<stdlib.h>的头文件

user: user-3
content: 照楼上的整吧   应该就对了

user: user-4
content: 在最后加上getchar()或者system("pause"); 有时候一个getchar()不够，那就多来几个
user-0 提问: 小白求助T_T

回复:
user: user-0
content: 引用 4 楼 @风轻云淡_的回复:最后面的不小心删了个return 0; 你自己加上就好。 很感谢啦！！我刚刚改了一下运行成功了！

user: user-0
content: 引用 4 楼 @风轻云淡_的回复:最后面的不小心删了个return 0; 你自己加上就好。 好的！谢谢啦！笔芯！！！

user: user-1
content: 你写的是死循环啊

user: user-2
content: https://bbs.csdn.net/topics/392520476

user: user-3
content: 最后面的不小心删了个return 0; 你自己加上就好。

user: user-3
content: 你的递归终止条件写错了，应该是  if(1 == n)     return n;   可以参考对比下： #include <stdio.h>  long GetSum(long n) { 	if(1 == n) 		return n; 	return n*GetSum(n-1); }  int main() { 	printf("%ld\r\n",GetSum(5)); }

user: user-4
content: 你的递归没有出口

user: user-0
content: 真的没人吗啊啊啊T_T
user-0 提问: 关于unicode字符集

回复:
user: user-1
content: 你搜一下 GBK unicode 对照表

user: user-1
content: 引用 4 楼 qq_22919211 的回复:[quote=引用 3 楼 jiht594 的回复:] utf8、16、32都是unicode的实现。不知道为什么、很多时候说unicode、默认就是utf16. utf8、16都是变长的。 char c1='中'、这个换个汉字可能就不对了  网上说：Unicode和GBK之间没有算法和规则进行转换，只能通过一个大表将二者关联起来。 那么这张大表是啥？他们是怎么关联起来的？  比如“您”在gbk中的编码是：C4FA，那么怎么通过这个大表找到unicode编码中“您”对应的编码呢？ [/quote] 参考下这个连接、http://www.cnblogs.com/lxjshuju/p/6812387.html gbk尽量不要用了、utf8和utf16更常用。 我查了一下、好像gbk和unicode没有对应的规则。你说的大表好像是固定的映射关系、比如一个汉字GBK编码就是XXXX、对应道unicode就是YYYY，写死的。

user: user-2
content: VC++6.0是ascii，之后的版本是Unicode

user: user-3
content: 只能说环境不同也不同。 linux c++有的是utf8编码  win32 c++ 可以ansi/unicode

user: user-0
content: 引用 3 楼 jiht594 的回复:utf8、16、32都是unicode的实现。不知道为什么、很多时候说unicode、默认就是utf16. utf8、16都是变长的。 char c1='中'、这个换个汉字可能就不对了  网上说：Unicode和GBK之间没有算法和规则进行转换，只能通过一个大表将二者关联起来。 那么这张大表是啥？他们是怎么关联起来的？  比如“您”在gbk中的编码是：C4FA，那么怎么通过这个大表找到unicode编码中“您”对应的编码呢？

user: user-1
content: utf8、16、32都是unicode的实现。不知道为什么、很多时候说unicode、默认就是utf16. utf8、16都是变长的。 char c1='中'、这个换个汉字可能就不对了
user-0 提问: C编译器怎么确认int数组的结尾？

回复:
user: user-1
content: 准确来说，C编译器并没有确定数组的结尾，你可以反汇编查看一下，比如长度为10的int数组，C编译器将为其开辟10个sizeof（int）大小的内存空间，并取一个名字，紧接随后的空间就分配给别的内容，所以边界其实只是一个约定，你完全可以违反约定越界访问数组，但是后果自负

user: user-2
content: 不需要确认，数组类型自带长度

user: user-3
content: 编译器是不检查数据越界的，即需要我们自己保证数据的不越界操作。
user-0 提问: c语言程序设计

回复:
user: user-1
content: c语言就用链表做吧 其实我们学c语言的时候也做这些 什么图书馆管理系统 题库管理系统 都是大同小异的 链表+文件

user: user-2
content: 引用 楼主 qq_44759475的回复:求求各位大佬  急求c语言程序设计班级管理系统（班级名称  班级编号  班级人数   班级成立时间） 搜了好多都是关于班级学生成绩的系统管理  急求急求！！！！！指点一下也行哈。。。 数据库或者链表都行啊
user-0 提问: 计数排序的空间复杂度是不是无法计算？

回复:
user: user-1
content: 看了楼主几个问题，感觉基础还不扎实 一般排序的空间复杂度是非常好计算的

user: user-0
content: 引用 10 楼 lin5161678 的回复:[quote=引用 9 楼 六道佩恩 的回复:] [quote=引用 7 楼 lin5161678 的回复:] [quote=引用 6 楼 六道佩恩 的回复:] [quote=引用 3 楼 lin5161678 的回复:] [quote=引用 2 楼 六道佩恩 的回复:] [quote=引用 1 楼 lin5161678 的回复:] O(n) 我说的是空间复杂度[/quote]我说的是空间复杂度[/quote] 计数排序用数组中最大值作新数组长度，跟原数组长度n有关系？[/quote]输入数据规模增长和内存占用的增长映射的增长函数  你很清楚的说了 和 数组长度n 没关系 那么你为什么会认为  O(n) 这个n是指数组长度呢 这里的数据规模是什么 数组中最大值 这个数据规模怎么增长 内存占用就怎么增长 不是O(n)是什么[/quote] 原数据规模很明显就是指你将要排序的数据量，很明显也就是数组长度n，这是默认的，而这个最大值跟n无关，理应用n之外的方法表示，我目前找到一个O(m)的说法，但由于他写的基数排序也是O(m)，所以暂时没太信。[/quote] 你对取值范围 1-100的数组进行计数排序 需要空间 100 你对取值范围 1-1000的数组进行计数排序 需要空间 1000 空间按照什么东西进行增长 增长速率不是一目了然了么  谁告诉你只有排序的数据量才叫做输入规模 你只见过排序的数据量作为输入规模的算法  所以这个世界上就只有排序的数据量才叫做输入规模??[/quote] 好吧，大佬你赢了，，也就是说这个n的意义和另几种排序算法的n完全不一样咯？那除了数据量和数据范围这两种，还有其他的数据规模吗？

user: user-2
content: 引用 9 楼 六道佩恩 的回复:[quote=引用 7 楼 lin5161678 的回复:] [quote=引用 6 楼 六道佩恩 的回复:] [quote=引用 3 楼 lin5161678 的回复:] [quote=引用 2 楼 六道佩恩 的回复:] [quote=引用 1 楼 lin5161678 的回复:] O(n) 我说的是空间复杂度[/quote]我说的是空间复杂度[/quote] 计数排序用数组中最大值作新数组长度，跟原数组长度n有关系？[/quote]输入数据规模增长和内存占用的增长映射的增长函数  你很清楚的说了 和 数组长度n 没关系 那么你为什么会认为  O(n) 这个n是指数组长度呢 这里的数据规模是什么 数组中最大值 这个数据规模怎么增长 内存占用就怎么增长 不是O(n)是什么[/quote] 原数据规模很明显就是指你将要排序的数据量，很明显也就是数组长度n，这是默认的，而这个最大值跟n无关，理应用n之外的方法表示，我目前找到一个O(m)的说法，但由于他写的基数排序也是O(m)，所以暂时没太信。[/quote] 你对取值范围 1-100的数组进行计数排序 需要空间 100 你对取值范围 1-1000的数组进行计数排序 需要空间 1000 空间按照什么东西进行增长 增长速率不是一目了然了么  谁告诉你只有排序的数据量才叫做输入规模 你只见过排序的数据量作为输入规模的算法  所以这个世界上就只有排序的数据量才叫做输入规模??

user: user-0
content: 引用 7 楼 lin5161678 的回复:[quote=引用 6 楼 六道佩恩 的回复:] [quote=引用 3 楼 lin5161678 的回复:] [quote=引用 2 楼 六道佩恩 的回复:] [quote=引用 1 楼 lin5161678 的回复:] O(n) 我说的是空间复杂度[/quote]我说的是空间复杂度[/quote] 计数排序用数组中最大值作新数组长度，跟原数组长度n有关系？[/quote]输入数据规模增长和内存占用的增长映射的增长函数  你很清楚的说了 和 数组长度n 没关系 那么你为什么会认为  O(n) 这个n是指数组长度呢 这里的数据规模是什么 数组中最大值 这个数据规模怎么增长 内存占用就怎么增长 不是O(n)是什么[/quote] 原数据规模很明显就是指你将要排序的数据量，很明显也就是数组长度n，这是默认的，而这个最大值跟n无关，理应用n之外的方法表示，我目前找到一个O(m)的说法，但由于他写的基数排序也是O(m)，所以暂时没太信。

user: user-3
content: 茴香豆的写法

user: user-2
content: 引用 6 楼 六道佩恩 的回复:[quote=引用 3 楼 lin5161678 的回复:] [quote=引用 2 楼 六道佩恩 的回复:] [quote=引用 1 楼 lin5161678 的回复:] O(n) 我说的是空间复杂度[/quote]我说的是空间复杂度[/quote] 计数排序用数组中最大值作新数组长度，跟原数组长度n有关系？[/quote]输入数据规模增长和内存占用的增长映射的增长函数  你很清楚的说了 和 数组长度n 没关系 那么你为什么会认为  O(n) 这个n是指数组长度呢 这里的数据规模是什么 数组中最大值 这个数据规模怎么增长 内存占用就怎么增长 不是O(n)是什么

user: user-0
content: 引用 3 楼 lin5161678 的回复:[quote=引用 2 楼 六道佩恩 的回复:] [quote=引用 1 楼 lin5161678 的回复:] O(n) 我说的是空间复杂度[/quote]我说的是空间复杂度[/quote] 计数排序用数组中最大值作新数组长度，跟原数组长度n有关系？

user: user-0
content: 引用 4 楼 niiiloc 的回复:看了楼主几个问题，感觉基础还不扎实 一般排序的空间复杂度是非常好计算的 计数排序、基数排序、冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序，这些排序除了希尔排序，时间复杂度我全计算过了，除了计数排序，空间复杂度我也全计算过了，不清楚的人是你吧。计数排序用数组中最大值作新数组长度，跟原数组长度n有关系？

user: user-2
content: 引用 2 楼 六道佩恩 的回复:[quote=引用 1 楼 lin5161678 的回复:] O(n) 我说的是空间复杂度[/quote]我说的是空间复杂度

user: user-0
content: 引用 1 楼 lin5161678 的回复:O(n) 我说的是空间复杂度

user: user-2
content: O(n)
user-0 提问: ball ball 我

回复:
user: user-0
content: 就是测试用例都是正确的，但是杭电不给过，显示Wrong Answer

user: user-1
content: 等差数列么？

user: user-1
content: 你想要什么 ？？ 你的程序 输入 2  5   结果  00 05 10 15 20 ....

user: user-2
content: 没看出问题，把错误贴出来

user: user-0
content: 引用 5 楼 niiiloc 的回复：你的输出行末有空格的吧，题目要求是没有空格我输出的行末没有空格

user: user-1
content: 引用 4 楼 weixin_44758733 的回复:就是测试用例都是正确的，但是杭电不给过，显示Wrong Answer 额  没过？ 那你试试 在printf("\n") 后面加个 break? 不成为死循环的这种

user: user-2
content: 你的输出行末有空格的吧，题目要求是没有空格
user-0 提问: 寻找lol实力过检测开发者。

回复:
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: user-4
content: http://bbs.csdn.net/topics/392520476
user-0 提问: C语言使用__FILE__只打印文件名

回复:
user: user-1
content: #include <string.h> //strrchr()函数所需头文件 //windows: #define filename(x) strrchr(x,'\\')?strrchr(x,'\\')+1:x //linux : #define filename(x) strrchr(x,'/')?strrchr(x,'/')+1:x printf( "filename:%s\n", filename( __FILE__ ) );

user: user-2
content: 自己做字符串截取嘛 找到最后一个/或者\ 后面开始输出
user-0 提问: c语言学生成绩管理系统设计  要求实现录入功能用文件保存，浏览功能，查询功能，学生成绩信息的删除与修改

回复:
user: user-1
content: 引用 楼主 宇越天穹的回复:初学c语言  有很多不懂的地方  有没有哪位可以帮我找一找错误   代码呢，哪里有问题，贴出来看看
user-0 提问: 字符串指针的一个小问题

回复:
user: user-1
content: 小白表示看不懂，<<是表示什么

user: user-2
content: 好好学习下，下午才知道的

user: user-3
content: 怎么理解a指向a[0]，*a也指向a[0]，a是数组名，它的类型不是char**,而*a是char*

user: user-4
content: 观望大神 同解

user: user-5
content: C语言中的指针，在内存中表现为什么呢？4个字节或8个字节的一个数据类型,这个里面存放的是地址，我个人认为这个指针是当初专门为了指向字符串设计的 char* a[] = {"hello","world","!!"};  //定义指针数组a，（也认为是a指向了一个连续存储的区域）存放3个指针，分别指向了3个字符串 char** p;//定义指向指针的指针p p = a;    //p与a指向同一块区域 cout << *p<<endl;//获取指针指向的内容，*p也就是*a，也就是a[0] cout << **p<<endl;//a[0][0]  指针可以转换为数组来思考，因为本身数组的首地址就是指针指向的位置

user: user-6
content: 18楼最清楚，很直接的告诉了你各个指针的指向。其实你仔细想想也能像出来的，从最基础的开始想，比如char *a[]={};这个指针数组，你肯定能想到a[0],a[1],a[2]是什么吧，然后p又指向了数组a,你可以把a想象成普通数组，a代表数组的首地址，即a[0]，这个你肯定知道吧，所以p就指向的是a[0]。

user: user-7
content: a是存储字符串的首地址，*a不是指针而是a这个指针就是这个地址所指向的内容  就是内三个字符串

user: user-8
content: 可以用输出语句把a，*a，p给输出出来，看看不就知道了

user: user-9
content: 引用 29 楼 Alexander668 的回复：分两步去分析一下，先确定a是什么，再确定p是什么就好分析多了。首先a是一个字符串指针数组，*a指向字符串指针数组的第一个元素，&（*a）代表的则是数组首元素则p里面存放的是a的首元素，就是"Hello world"字符串指针地址。刚刚对于&(*a)的分析有问题，这个代表数组首元素地址，*p代表字符串指针，**p代表h

user: user-9
content: 分两步去分析一下，先确定a是什么，再确定p是什么就好分析多了。首先a是一个字符串指针数组，*a指向字符串指针数组的第一个元素，&（*a）代表的则是数组首元素则p里面存放的是a的首元素，就是"Hello world"字符串指针地址。

user: user-10
content: a是a[0]的地址，*a是a[0][0]的地址

user: user-11
content: 帮支持顶一下

user: user-12
content: 用习惯，用多了就完全可以知道了

user: user-13
content: 小生学习了。

user: user-14
content: 如果是考题没得说了。若不是，又是C++何必又是char 又是指针的

user: user-15
content: 个人理解： char *a[] = {"hello","world","!!"}; char **p; a里面存储的是a[0]的首地址，也就是RAM的地址(0x20000004) a[0]里面存储的是字符串"hello"的首地址 a[1]里面存储的是字符串"world"的首地址 a[2]里面存储的是字符串"!!"的首地址 *a相当于取a[0]里面的值，也就是"hello"的首地址 p = a; 所以*p里面的值与*a一样，是a[0]里面存储的地址（字符串“hello”的首地址） 如果用printf("*p = %s",*p);//因为%s要求输入的是地址，所以打印出来的就是 ：*p = hello **p就是在字符串"hello"的首地址进行取值操作。字符串首地址的第一个字符是'h' 如果用printf("**p = %c",**p);//那就是：**p = h 个人见解，不对的地方欢迎大家指正~

user: user-16
content: 数组名也是数组的首地址，也就是这个数组名变量的内存存的是数组的首地址 a是个指针数组，按照上面数组名是数组的首地址，所以a的内存里存的是a[0]的地址 *a是个指针（char*指针），指针里存的也是地址，*a指向数组a的第一个元素的地址，也就是*a内存存的是a[0]的地址 a不是char**，是指针数组 (char*)[]，数组可以用指针来操作，所以(char*)*能操作(char*)[]

user: user-16
content: 恩 对了 就是这样    其实 多用用就明白了

user: user-17
content: 引用 10 楼 晴天mmei 的回复:好像有点明白了，我解释一遍，，你们看又没错。数组a其实就是一个字符串数组，a此时是数组名，就只指向了hello字符串的首地址(我们常常说指针指向一块内存，其实就是指向它的首地址，例如int i = 10; int* p =&i; p指向了i这个int变量的首地址)，a数组里面存的都是字符串指针。每个指针存的都是字符串的首地址。*a 就是取a所存地址对应的值，就是 “hello”了，p指向了a ，于是p也获取到了hello这个字符串的首地址，*p就是 “hello” 了。这样解释不知道有没有错，大神们，字有点多了 恩 对了 就是这样    其实 多用用就明白了

user: user-18
user-0 提问: 代码出错了

回复:
user: user-0
content: 关于“加上逗号即使在输入时加逗号还是会出错”，几次测试后发现是我输入法的问题，我的输入法在不同环境下中英文切换是不同步的，导致我在写代码时用的是英文标点，运行输入时用的是中文标点，这才出了错。

user: user-1
content: 排序问题，你可以试着去学一下sort()函数，会很有收获的

user: user-2
content: 将scanf("%d,%d,%d",&a,&b,&c);  的格式改成 scanf("%d%d%d",&a,&b,&c);就行了，亲测是可以的

user: user-0
content: 引用 1 楼 user-2 的回复：将scanf("%d,%d,%d",&a,&b,&c);  的格式改成 scanf("%d%d%d",&a,&b,&c);就行了，亲测是可以的我发现加上逗号即使在输入时加逗号还是会出错，而且此时回车不是换行输入而且输出结果，请问是哪里有问题？

user: user-0
content: 引用 1 楼 user-2 的回复：将scanf("%d,%d,%d",&a,&b,&c);  的格式改成 scanf("%d%d%d",&a,&b,&c);就行了，亲测是可以的我刚才重新测试了一下发现两个格式都可以，好像是软件的问题，谢谢！
user-0 提问: 求大神讲解，救救孩子吧！

回复:
user: user-1
content: 如果m等于2或3，返回1；如果m小于2或是偶数，返回0；从3到m的奇数中，如果m能整除其中任何一个，返回0；以上情况之外的情况返回1。这个函数应该是判断m是否是质数的，返回1则为质数，返回0则不是质数。
user-0 提问: 很简单的关于链表的问题（求解答

回复:
user: user-1
content: 在第一段代码中，请理解，当跳出while循环时，L的值为NULL，无法对其解引用操作。 第二段代码，怀疑有逻辑错误，第8行的作用是，将L的后继结点“删除”，也就说链表中将只剩下一个结点。
user-0 提问: C语言

回复:
user: user-1
content: 一般自己写的用引号，不然用尖括号

user: user-2
content: 要学会自己百度

user: user-3
content: 你表面是看不出区别的，但是编译器在找头文件时如果你用<>它会默认先去系统库中找，而用“”编译器则会先到指定的文件找，找不到再回系统库找。简单说，就是用“”加在系统头文件上会增加编译器的工作量，而如果非系统头文件用<>则可能出现找不到头文件的错误

user: user-4
content: “”是代表目前正在编辑的文件路径下的头文件（和cpp文件一个目录下的头文件），一般用于自定义头文件  <> 是代表系统路径中的头文件，包括但不仅限于系统自带的头文件、添加到系统扫描路径中的第三方头文件，一般用于系统路径中的头文件  “”搜索顺序为：  当前文件所在路径--->系统路径  <> 搜索顺序为：  系统路径
user-0 提问: 期末考试题  不会-_-||跪求解答

回复:
user: user-1
content: 这个是单片机吗？只需要电平改变的时候计数就好了嘛

user: user-2
content: 用51就可以实现了。红外的原理应该是中间无阻挡，为高电平(或低电平)，此时计数，在显示喽
user-0 提问: 请问，时间复杂度为O(n!)和O(n^n)的算法是怎样的？

回复:
user: user-1
content: 例如n张牌的洗牌：  算法一： for i:=1 to n  do swap(a[i], a[random(i,n)]) 时间复杂度是O(n!)  算法二： for i:=1 to n  do swap(a[i], a[random(1,n)]) 时间复杂度是O(n^n)
user-0 提问: 麻烦各位大佬帮我看看这段C代码，提示错误无法定位的外部函数，是怎么回事

回复:
user: user-0
content: 第一次用，你看一下，应该是结了吧

user: user-1
content: 引用 2 楼 weixin_44751917 的回复:[quote=引用 1 楼 儿童节的回复:]有问题的地方，标在图上了：   在你的基础上修改之后，代码如下：  #include <stdio.h> int main() {         int num, sd, td, hd;                           //定义三位数num,个位数sd,十位数td,百位数hd         for (num = 100; num < 1000; num++) //循环所有三位数         {                 hd = num / 100;                 //获取三位数字num百分位上的数字                 td = num / 10 % 10;            //获取三位数字num十分位上的数字                 sd = num % 10;            //获取三位数字num个位上的数字                 if (num == hd * hd * hd + td * td * td + sd * sd * sd) //水仙花数字的条件是什么                 {                         printf("水仙花数字:%d\n", num);                 }         }         return 0; }   Linux环境运行截图：   烦请及时结贴给分哈，谢谢！ 哈哈，这么尴尬的吗， 谢谢你[/quote]  不用谢！ 既然问题解决了，就请麻烦把帖子结了吧！ :)

user: user-0
content: 引用 1 楼 儿童节的回复:有问题的地方，标在图上了：   在你的基础上修改之后，代码如下：  #include <stdio.h> int main() {         int num, sd, td, hd;                           //定义三位数num,个位数sd,十位数td,百位数hd         for (num = 100; num < 1000; num++) //循环所有三位数         {                 hd = num / 100;                 //获取三位数字num百分位上的数字                 td = num / 10 % 10;            //获取三位数字num十分位上的数字                 sd = num % 10;            //获取三位数字num个位上的数字                 if (num == hd * hd * hd + td * td * td + sd * sd * sd) //水仙花数字的条件是什么                 {                         printf("水仙花数字:%d\n", num);                 }         }         return 0; }   Linux环境运行截图：   烦请及时结贴给分哈，谢谢！ 哈哈，这么尴尬的吗， 谢谢你

user: user-1
content: 有问题的地方，标在图上了：   在你的基础上修改之后，代码如下：  #include <stdio.h> int main() {         int num, sd, td, hd;                           //定义三位数num,个位数sd,十位数td,百位数hd         for (num = 100; num < 1000; num++) //循环所有三位数         {                 hd = num / 100;                 //获取三位数字num百分位上的数字                 td = num / 10 % 10;            //获取三位数字num十分位上的数字                 sd = num % 10;            //获取三位数字num个位上的数字                 if (num == hd * hd * hd + td * td * td + sd * sd * sd) //水仙花数字的条件是什么                 {                         printf("水仙花数字:%d\n", num);                 }         }         return 0; }   Linux环境运行截图：   烦请及时结贴给分哈，谢谢！
user-0 提问: C++替换字符串的问题

回复:
user: user-1
content: 自带的基础函数都是经过优化很多遍的，一般比你自己写的效率要高得多的多

user: user-2
content: 无profiler不要谈效率！！尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代！

user: user-3
content: 为什么replace1需要反复申请空间呢？string和vector的自动扩容都是有一定算法的，比如2倍策略，根据实际字符串长度，可能扩一次就够用了。 而replace2首先申请一个vector,进行各种拷贝最后返回时再调用operator=又一次申请内存加拷贝。两次申请内存妥妥的，代码量还多。
user-0 提问: C语言结构体变量算某天是一年的第几天找不到错误处

回复:
user: user-0
content: 我现在用手机，没有结帖选项，明天用电脑试下

user: user-1
content: 引用 10 楼 weixin_44751349 的回复:[quote=引用 9 楼 儿童节的回复:]额？ 为啥发了两张一样的问题帖呢？  刚刚在那个帖子里回复了，那这里也顺便回复一下吧。    欢迎结贴给分，谢谢。  ：） 谢谢你!好多错误啊，怎么结帖给分?[/quote]  不用客气，大家一起学习提高。 结贴是在底下，回复框的右上角那里，有「结贴」两个字。点了应该就可以吧？ 我也还没结过，只是看到过。

user: user-0
content: 引用 9 楼 儿童节的回复:额？ 为啥发了两张一样的问题帖呢？  刚刚在那个帖子里回复了，那这里也顺便回复一下吧。    欢迎结贴给分，谢谢。  ：） 谢谢你!好多错误啊，怎么结帖给分?

user: user-2
content: https://bbs.csdn.net/topics/392520476

user: user-1
content: 额？ 为啥发了两张一样的问题帖呢？  刚刚在那个帖子里回复了，那这里也顺便回复一下吧。    欢迎结贴给分，谢谢。  ：）

user: user-3
content: (date1.month%4 == 0 & date1.month%100 != 0)  --->  (date1.month%4 == 0 && date1.month%100 != 0))  引用 6 楼 weixin_44751349 的回复:输入的时候格式没错呀

user: user-3
content: scanf输入格式控制中，尽量不要加分隔符，如果非要加，要在终端中输入一模一样的格式才能将对应数值准确赋予对应变量。默认为空格分割。

user: user-4
content: d,%d,%d表明输入的时候要有逗号，例如这样1,12,12

user: user-0
content: 引用 1 楼 user-5的回复:if(sum=0)printf("ERROR!"); ==写成= 给sum赋值了 学会调试很重要 改了之后一直是第一天，为什么呢？

user: user-2
content: 编译运行了下没有问题： #include<stdio.h> int main(){ int i,sum=0; int d[12]={31,29,31,30,31,30,31,31,30,31,30,31}; struct date{ int year; int month; int day;}date1; printf("Please input the date:\n"); scanf("%d,%d,%d",&date1.year,&date1.month,&date1.day); if(date1.month%400==0||(date1.month%4==0&date1.month%100!=0)) d[1]=28; for(i=0;i<date1.month-1;i++) sum=sum+d[i];     sum=sum+date1.day;     if(sum==0)printf("ERROR!");     else printf("It is %d day.\n",sum);     return 0; }

user: user-0
content: 引用 3 楼 AlbertS的回复:d,%d,%d表明输入的时候要有逗号，例如这样1,12,12 输入的时候格式没错呀

user: user-5
content: if(sum=0)printf("ERROR!"); ==写成= 给sum赋值了 学会调试很重要
user-0 提问: 求教，从键盘中输入三个整数a,b,c,将他们按照降序输出，我打的哪里错了？为什么出不来结果？

回复:
user: user-1
content: 交换没有问题    你检查一下你的输入和输出函数。标点什么的...

user: user-2
content: 建议加一条打印信息，也叫调试信息，就是在scanf后面加一条把a, b, c的值都打出来，这样可以判定是不是输入的格式导致的出错～  后面的交换没什么问题，所以现在还是怀疑是输入的地方出了问题。～

user: user-3
content: 建议scanf的%d和%d之间用空格隔开

user: user-0
content: 谢谢各位的帮助！！！

user: user-4
content: scanf里，%d之间你是用英文逗号隔开的，因此你输入的时候整数之间也要用英文逗号隔开

user: user-5
content: 输入的时候分隔符与scanf中的保持一致，用英文下的逗号

user: user-0
content: 引用 1 楼 user-6的回复:自己跟踪调适下不全清楚了吗。。 调试过了还是不会改啊

user: user-6
content: 自己跟踪调适下不全清楚了吗。。
user-0 提问: 菜鸟找大佬求解

回复:
user: user-0
content: 引用 1 楼 niiiloc的回复:为什么要free(t) 你需要一次删除两个节点么？ 谢谢，原来如此呀，我以为只是将指针释放了

user: user-1
content: 为什么要free(t) 你需要一次删除两个节点么？
user-0 提问: 有大佬帮我看看问题嘛，急

回复:
user: user-1
content: 代码里面的waring太多了，出问题很正常。先把warning去了再编。

user: user-0
content: 引用 2 楼 hanxb的回复:struct Student *next;  应该 放在 结构体的开头， 好处你以后会懂的。  struct Student *t = list, *in=t;  ?  为何不写成  *t= list, *in= list;   代码越明了越好.  printf( "%s,%s", ....) 没问题, 但你确认 scanf_s( "%s,%s", ... ) 没问题 ？ 逗号能分断，无需空格分断 ？ 能详细说一下scanf_s里面的问题吗

user: user-2
content: struct Student *next;  应该 放在 结构体的开头， 好处你以后会懂的。  struct Student *t = list, *in=t;  ?  为何不写成  *t= list, *in= list;   代码越明了越好.  printf( "%s,%s", ....) 没问题, 但你确认 scanf_s( "%s,%s", ... ) 没问题 ？ 逗号能分断，无需空格分断 ？

user: user-2
content: struct Student *next;  应该 放在 结构体的开头， 好处你以后会懂的。
user-0 提问: 最小公约数

回复:
user: user-1
content: 噢，不对，看错了，以为你是递归，你这个纯属是穷举，从最小那个数开始往下穷举，这是正常的逻辑，当然，你从最大那个数开始往下穷举依然可以，只是多此一举，比如2和1000000，如果我从2开始，就直接得出2，如果你从1000000开始，你浪费了多少时间

user: user-2
content: 这样应该是为了少做几次循环，在逻辑层面没什么特殊意义

user: user-0
content: 引用 4 楼 单眼皮的小健的回复:噢，不对，看错了，以为你是递归，你这个纯属是穷举，从最小那个数开始往下穷举，这是正常的逻辑，当然，你从最大那个数开始往下穷举依然可以，只是多此一举，比如2和1000000，如果我从2开始，就直接得出2，如果你从1000000开始，你浪费了多少时间 谢谢老哥，知道了，感谢。。。

user: user-0
content: 引用 3 楼 user-2的回复:这样应该是为了少做几次循环，在逻辑层面没什么特殊意义 谢谢哥，我知道了。谢谢谢谢

user: user-2
content: 那这个程序是谁写的你去问谁吧，谁知道他怎么想的

user: user-1
content: 对的，不转换结果也是对的，因为当第一个数大于第二个数的时候，会自动进行一次转换，你可以自己手动执行一下这个函数，所以后面就理所当然是第一个数小于第二个数了，因此一开始并不需要转换，这是一个很奇妙的事情
user-0 提问: C++关于用数组进行大小排列的问题跪求大神解答

回复:
user: user-1
content: 引用 5 楼 早起的鸟儿有砖搬 的回复：引用 3 楼 单眼皮的小健 的回复:你为什么要在select函数里面定义一个array数组，你现在只是在操作这个局部数组array，而不是你的函数参数里的arrray指针，在select函数中把array定义删除，把函数参数类型名arrray改成array（多打了一个r）谢谢谢谢老哥！结贴....大家一起赚积分

user: user-1
content: 你为什么要在select函数里面定义一个array数组，你现在只是在操作这个局部数组array，而不是你的函数参数里的arrray指针，在select函数中把array定义删除，把函数参数类型名arrray改成array（多打了一个r）

user: user-2
content: 话说现在都流行把函数申明写在main函数里面了吗，在好多地方看到这么写

user: user-2
content: 把你int array[5]去掉

user: user-0
content: 引用 3 楼 单眼皮的小健 的回复:你为什么要在select函数里面定义一个array数组，你现在只是在操作这个局部数组array，而不是你的函数参数里的arrray指针，在select函数中把array定义删除，把函数参数类型名arrray改成array（多打了一个r）谢谢谢谢老哥！

user: user-0
content: 引用 2 楼 user-2 的回复:话说现在都流行把函数申明写在main函数里面了吗，在好多地方看到这么写初学c++  我看谭浩强老师的红皮书里这么写的
user-0 提问: 对于双重循环以不同变量为次数，时间复杂度该怎么计算？

回复:
user: user-1
content: 能解释一下为什么用乘法而不是(m+n)吗

user: user-2
content: O(m*n)，书写上比较正规

user: user-3
content: 乘法法则，假设第一重循环n次，第二重循环m次，那么时间复杂度就是O（nm）

user: user-3
content: 引用 2 楼 六道佩恩 的回复：[quote=引用 1 楼 单眼皮的小健 的回复:] 乘法法则，假设第一重循环n次，第二重循环m次，那么时间复杂度就是O（nm） 写作O(n*m)或O(n·m)可以吗？[/quote]这不是重点，乘号可以省略可以写，一般写上比较好

user: user-0
content: 引用 1 楼 单眼皮的小健 的回复:乘法法则，假设第一重循环n次，第二重循环m次，那么时间复杂度就是O（nm） 写作O(n*m)或O(n·m)可以吗？
user-0 提问: 分数阶小波变换

回复:
user: user-1
content: 请问可以讨论一下分数阶小波变换吗？请问还在做吗？联系方式QQ1027984004谢谢

user: user-2
content: 求分数阶小波变换源代码

user: user-3
content: 算法存在一些问题
user-0 提问: 有没有大佬解释一下

回复:
user: user-1
content: 是CPU，你这段a=2；的代码最终会被翻译成一串二进制数并存入外存，当这段程序运行的时候，就把这串二进制数放入内存，CPU就执行a=2这个语句，随后会在内存中分配一个空间并取名为a，接下来CPU把这段内存填充为2

user: user-2
content: 这种态度很好，多问问为什么，往往会有意外收获。其实我是这么理解的，并不是说谁把2赋给了a，而是说编程的人或者cpu告诉了a，你现在应该等于2，它就在自己的物理地址上写上了一些符号，于是，它就暂时的等于2了，等下一次你告诉它需要改变的时候，它在自己改变。

user: user-0
content: 嗯，我知道这个 但是编程是不是也得从程序员的角度来思考问题 比如我看到一段代码a=1;  可不可以理解为是写这段代码的人把1赋给了a

user: user-3
content: 从内存来看，变量a在内存上有几个字节的空间，a=2就是把2放进这几个字节空间。 从机器码来看，打个比方，a=2被翻译成了010111011011000000010（随便举例的，不要去和实际的机器码对应），0101表示把一个数放进某个内存空间，110110110就是a的内存空间，00000010就是整数2，CPU翻译这个机器码的时候，就会把整数2送进110110110这个地址空间。 如果是a=b这种，就是在内存空间取值去赋给另一块空间。
user-0 提问: 等大佬解答！！！

回复:
user: user-0
content: 引用 2 楼 六道佩恩的回复:是rand()%51，rand( )是在调用一个叫rand的函数，这个函数会得出一个随机的整数，%就是求余，rand()%51就是“随机整数%51”,最后能得出一个51以内的随机正整数 大佬大佬👏👏感谢感谢

user: user-1
content: 是rand()%51，rand( )是在调用一个叫rand的函数，这个函数会得出一个随机的整数，%就是求余，rand()%51就是“随机整数%51”,最后能得出一个51以内的随机正整数

user: user-2
content: 给随机数圈定范围吧。。。
user-0 提问: fwrite写int数组里面包含26，然后读到这里被当成eof

回复:
user: user-1
content: 不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n，写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换，遇到\x1a仍继续读;读写的内容当字节看待 弄混了

user: user-2
content: 读二进制文件用feof替代
user-0 提问: 大佬求解 运行出来无限循环而且结果不对

回复:
user: user-1
content: 引用 10 楼 儿童节 的回复:说这么多，就想证明我的回答全是靠猜呗？  扣上这顶帽子，然后再把我批判一番？呵呵，耐衣服！ 我的回答到底对不对，任何人都可以试一试就知道了。 倒是你针对代码问题，不分析代码，反而跑来给别人的回答挑刺、给别人扣帽子，这种操作也是匪夷所思。 说实话，要不是到周末了，还真没这么多闲功夫陪你尬聊！ Talk is Cheap. Show me your code. 诚不我欺！那么题主的错误是什么

user: user-2
content: 引用 9 楼 lin5161678 的回复:[quote=引用 8 楼 儿童节 的回复:] 进入死循环的bug难道不存在么？ 其实我想说，绕了一大圈了，指出拼写错误为什么就多余了呢？ 而且我回答的是它的等号是中文等号，没说什么逗号哟！ 所以 说了半天你连答主遇到什么错误都没搞清楚么? 你这回答才是全靠猜吧[/quote] 说这么多，就想证明我的回答全是靠猜呗？  扣上这顶帽子，然后再把我批判一番？呵呵，耐衣服！ 我的回答到底对不对，任何人都可以试一试就知道了。 倒是你针对代码问题，不分析代码，反而跑来给别人的回答挑刺、给别人扣帽子，这种操作也是匪夷所思。 说实话，要不是到周末了，还真没这么多闲功夫陪你尬聊！ Talk is Cheap. Show me your code. 诚不我欺！

user: user-1
content: 引用 8 楼 儿童节 的回复:进入死循环的bug难道不存在么？ 其实我想说，绕了一大圈了，指出拼写错误为什么就多余了呢？ 而且我回答的是它的等号是中文等号，没说什么逗号哟！ 所以 说了半天你连答主遇到什么错误都没搞清楚么? 你这回答才是全靠猜吧

user: user-2
content: 引用 7 楼 lin5161678 的回复:[quote=引用 6 楼 儿童节 的回复:]  是的，刚刚直接复制、粘贴提问的代码，在编译的时候就是通不过。所以，提问者的描述是不是完全真实、准确，恐怕要打问号。 但是要回答这个提问，还是得针对它的原始代码来，所以才无视了它说能运行的情况，而把原始代码的所有错误都列出来了。 回答这个提问 应该是针对答主IDE里面的原始代码  至于答主写在帖子里面的代码 觉得不舒服就提一下 觉得无所谓无视也行 当成一个错误提出来就多余了 答主会看到他的代码的确是英文逗号 对你的解答一头雾水[/quote] 这就难说了。 提问者贴出了代码，可没有把IDE放上来啊！这去哪儿看它的IDE？靠脑补么？ 有些偶然的情况下，有些编译器无视拼写错误，进入死循环的bug难道不存在么？ 其实我想说，绕了一大圈了，指出拼写错误为什么就多余了呢？ 而且我回答的是它的等号是中文等号，没说什么逗号哟！

user: user-1
content: 引用 6 楼 儿童节 的回复:是的，刚刚直接复制、粘贴提问的代码，在编译的时候就是通不过。所以，提问者的描述是不是完全真实、准确，恐怕要打问号。 但是要回答这个提问，还是得针对它的原始代码来，所以才无视了它说能运行的情况，而把原始代码的所有错误都列出来了。 回答这个提问 应该是针对答主IDE里面的原始代码  至于答主写在帖子里面的代码 觉得不舒服就提一下 觉得无所谓无视也行 当成一个错误提出来就多余了 答主会看到他的代码的确是英文逗号 对你的解答一头雾水

user: user-2
content: 引用 5 楼 lin5161678 的回复:[quote=引用 4 楼 儿童节 的回复:] [quote=引用 3 楼 lin5161678 的回复:] [quote=引用 1 楼 儿童节 的回复:] （1）两个等号都是中文的等号，应该改为英文半角的等号。 （2）while里面的条件表达式，改为「scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2) == 4」。已经在运行了就不用谈语法错误的情况了[/quote] 运行出来的死循环的原因总要找出来吧。拼写错误、语法错误没有高低贵贱之分。[/quote]出现拼写错误 语法错误 直接死在编译阶段 exe都出不来 根本无法到达运行阶段 [/quote] 是的，刚刚直接复制、粘贴提问的代码，在编译的时候就是通不过。所以，提问者的描述是不是完全真实、准确，恐怕要打问号。 但是要回答这个提问，还是得针对它的原始代码来，所以才无视了它说能运行的情况，而把原始代码的所有错误都列出来了。

user: user-1
content: 引用 4 楼 儿童节 的回复:[quote=引用 3 楼 lin5161678 的回复:] [quote=引用 1 楼 儿童节 的回复:] （1）两个等号都是中文的等号，应该改为英文半角的等号。 （2）while里面的条件表达式，改为「scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2) == 4」。已经在运行了就不用谈语法错误的情况了[/quote] 运行出来的死循环的原因总要找出来吧。拼写错误、语法错误没有高低贵贱之分。[/quote]出现拼写错误 语法错误 直接死在编译阶段 exe都出不来 根本无法到达运行阶段

user: user-2
content: 引用 3 楼 lin5161678 的回复:[quote=引用 1 楼 儿童节 的回复:] （1）两个等号都是中文的等号，应该改为英文半角的等号。 （2）while里面的条件表达式，改为「scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2) == 4」。已经在运行了就不用谈语法错误的情况了[/quote] 运行出来的死循环的原因总要找出来吧。拼写错误、语法错误没有高低贵贱之分。

user: user-1
content: 引用 1 楼 儿童节 的回复:（1）两个等号都是中文的等号，应该改为英文半角的等号。 （2）while里面的条件表达式，改为「scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2) == 4」。已经在运行了就不用谈语法错误的情况了

user: user-1
content: 你输入了什么

user: user-2
content: （1）两个等号都是中文的等号，应该改为英文半角的等号。 （2）while里面的条件表达式，改为「scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2) == 4」。
user-0 提问: scanf语句为什么会跳过啊，希望大佬能给解释下！！！

回复:
user: user-0
content: 找到了，只需加上freopen("CON","r",stdin)回到控制台输入就行

user: user-0
content: 如果想再次输入关键字进行查找并应该咋办啊

user: user-1
content: scanf("%lf%lf",&x,&y); --> scanf("%lf,%lf",&x,&y);

user: user-2
content: 你都freopen 还需要什么输入 in.txt 就是全部输入了
user-0 提问: 【紧急求助】C语言-给结构数组分配动态空间

回复:
user: user-0
content: 引用 6 楼 niiiloc 的回复：那就说明你的定位方向有偏差，确定10000个单词够存储了么？确定是足够的

user: user-0
content: 引用 7 楼 weixin_44741435 的回复:引用 6 楼 niiiloc 的回复：那就说明你的定位方向有偏差，确定10000个单词够存储了么？确定是足够的 但是可能是程序本身的问题，电脑完全跑不动了哭 还是谢谢各位大佬了

user: user-0
content: 引用 6 楼 niiiloc 的回复：那就说明你的定位方向有偏差，确定10000个单词够存储了么？重新做了尝试！发现的确是10000不够这个问题！真的很感谢各位大佬！

user: user-1
content: 那就说明你的定位方向有偏差，确定10000个单词够存储了么？

user: user-2
content: 引用 3 楼 weixin_44741435 的回复:[quote=引用 1 楼 niiiloc 的回复：]wordnum *work = malloc(sizeof(wordnum) * 10000); 用法上和栈内存没啥区别请问一下：主程序内比如word[k].num=a是不是要改成&word[k].num=a呢？之后程序末尾是不是要free word呢？谢谢！[/quote]不用&，程序结束之前，或者你不用了，free就可以了

user: user-0
content: 引用 1 楼 niiiloc 的回复：wordnum *work = malloc(sizeof(wordnum) * 10000); 用法上和栈内存没啥区别请问一下：主程序内比如word[k].num=a是不是要改成&word[k].num=a呢？之后程序末尾是不是要free word呢？谢谢！

user: user-3
content: 1.数组不大的情况下，可以放在栈上， 通常单个进程，栈也就1M~4M。 如果数据量比较大，就需要在堆上进行动态申请  2.栈上的变量不需要释放 堆上分配的空间使用完成后需要自行free， 否则会出现内存泄露

user: user-1
content: wordnum *work = malloc(sizeof(wordnum) * 10000); 用法上和栈内存没啥区别

user: user-0
content: 引用 4 楼 qq_42307333 的回复:[quote=引用 3 楼 weixin_44741435 的回复:] [quote=引用 1 楼 niiiloc 的回复：]wordnum *work = malloc(sizeof(wordnum) * 10000); 用法上和栈内存没啥区别请问一下：主程序内比如word[k].num=a是不是要改成&word[k].num=a呢？之后程序末尾是不是要free word呢？谢谢！[/quote]不用&，程序结束之前，或者你不用了，free就可以了[/quote]  改了之后还是报错退出了哭！ 哪位大佬可以帮忙看一下代码吗？紧急求救！！  #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include <malloc.h> #define INWORD 1 /*正在单词中*/ #define OUTWORD 0 /*不在单词中*/  FILE *fp; FILE *fo;  struct wordCount { 	char str[40]; /*单词*/ 	int num; /*个数*/  }; /*使用结构类型定义单词出现的频率*/  int main() { 	char str1; /*str1用以从txt中取得字符*/  	int n=0, i=-1; /*n用来对单词计数，i用来对单词内的字母计数*/ 	int state; /*使用INWORD与OUTWORD表示攫取的字符是否在单词内的状态*/  	int a;  	int c,d; /*定义c、d用于冒泡排序*/ 	wordCount *word;  	word=(wordCount*)malloc(sizeof(wordCount*)*10000);  	if ((fp=fopen("input.txt","r"))==NULL) 	{ 		printf("无法打开文件！\n"); 		return 0; 	 }   	while ((str1=fgetc(fp))!=EOF) 	{ 		if (isalpha(str1)) 		{ 			str1=tolower(str1); 			word[n].str[++i]=str1; 			word[n].num=1; 			state=INWORD;                                        		} /*若检测为英文字母，则状态=在单词内，并进行单词的计数和攫取*/  		else if (state==INWORD) 		{ 			if (str1!=39) 			{ 				word[n].str[i+1]='\0'; 				n++; 				i=-1; 				state=OUTWORD;  				for (a=0;a<n-1;a++) 				{ 					if(!strcmp(word[a].str,word[n-1].str)) 					{ 						word[a].num+=1; 						n-=1; 					} 				} 			} 		} /*若非英文字母，则状态=在单词外，计数器i归到初始值-1*/  	} 	fclose(fp);  	wordCount temp; 	for (c=0; c<n-1; c++) 	{ 		for (d=n-1; d>c; d--) 		{ 			if (word[d].num<word[d-1].num) 			{ 				temp=word[d]; 				word[d]=word[d-1]; 				word[d-1]=temp; 			} 		} 	} /*进行单词个数由少到多的排序（书P72）*/  	if ((fo=fopen("output.txt","w")) == NULL)  	{         printf("无法打开文件！\n");     }  	else  	{         for (a=0; a<n;a++) 		{ 			fprintf(fo,"%-10s%10d\n",word[a].str,word[a].num); 		} 		printf("\n");     }     fclose(fo);  	return 0; }
user-0 提问: 各位大佬求救呀……

回复:
user: user-0
content: 引用 2 楼 qq_42307333的回复:贴完图片自己看了吗？？？ 很抱歉，没有看

user: user-1
content: 贴完图片自己看了吗？？？

user: user-2
content: 图片几乎看不清楚 但是写文件也就一个套路 1. 打开或者创建文件 2. 输入数据 3.关闭文件 要处理高效，使用结构体 看个例子  #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 20 #define M 3 typedef struct { char name[20]; int score[M]; double avg; }stu; void swap(stu*m,stu*n) { stu t=*m; *m=*n; *n=t; } void input(stu*s,int n) { int i,j; double sum=0; for(i=0;i<n;i++) { printf("请输入姓名："); scanf("%s",s[i].name); printf("请输入分数（英语数C）："); for(j=0;j<M;j++) scanf("%d",&s[i].score[j]); printf("\n"); } } void sort(stu*s,int n) { int i,j; double sum=0; for(i=0;i<n;i++) { for(j=0;j<M;j++) sum+=s[i].score[j]; s[i].avg=sum/M; sum=0; } for(i=1;i<n;i++) for(j=0;j<n-i;j++) { if(s[j].avg<s[j+1].avg) swap(&s[j],&s[j+1]); else if((s[j].avg==s[j+1].avg)&&(strcmp(s[j].name,s[j+1].name)<0)) swap(&s[j],&s[j+1]); } } void save(stu*s,int n) { FILE*fp; int i, j; fp=fopen("d:\\data.dat","w"); for(i=0;i<n;i++) { //fwrite(&s[i],sizeof(stu),1,fp); fprintf(fp,"%s\t", s[i].name); for(j=0;j < M;j++) fprintf(fp,"%d\t", s[i].score[j]); fprintf(fp,"%f\n", s[i].avg); } fclose(fp); } void output(stu*s,int n) { int i=0,j; FILE*fp; if((fp=fopen("d:\\data.dat","r"))==NULL) { printf("fail\n"); exit(0); } while(!feof(fp)) { //fread(&s[i],sizeof(stu),1,fp); fscanf(fp, "%s",s[i].name); for(j=0;j<M; j++) fscanf(fp,"%d", &s[i].score[j]); fscanf(fp, "%f",&s[i].avg); i++; } fclose(fp); for(i=0;i<n;i++) { printf("%s\t",s[i].name); for(j=0;j<M;j++) printf("%d   ",s[i].score[j]); printf("%.1lf",s[i].avg); printf("\n"); } } void main() { int n; stu s[N]; printf("input n:"); scanf("%d",&n); input(s,n); sort(s,n); save(s,n); output(s,n); }
user-0 提问: 求助：输入10个整数，将其中最小的数与第一个数对换，把最大的数与最后一个数对换。写三个函数； ①输入10个数；②进行处理；③输出10个数。

回复:
user: user-1
content: 边界场景考虑不足，maxval和minval没有初始化，导致a[0]是最大值a或最小值场景下出现异常

user: user-2
content: 函数没有返回值，调用函数结束了就没有用了
user-0 提问: 迷茫了 求大佬指点下

回复:
user: user-1
content: 去leetcode上刷刷c语言easy级别的题目，打打小怪物。 然后看看网上看看数据结构的课程，再随后是看看简单的算法。 语言的细节以后会慢慢忘记，这个是很正常的，不必深究，用的时候再捡起来就可以。 如果是往软件工程方向走，还可以看看邹欣老师的《构建之法》，里面理论实践结合。

user: user-2
content: 先做下课后练习题，然后试着做下C语言考级的机实题目（比如实现输出几排***，结构体打印之类的 网上应该可以找到）

user: user-3
content: 你想写啥就写啥。  语言方面，C语言继续学《C陷阱与缺陷》、《C与指针》、《C专家编程》、《C标准库》、《C语言接口与实现》这五本书，大概三年时间，你就能完全掌握C语言了。  库/平台方面，学一下写GUI，建议学一点简单的C++，然后学用Qt库。  等你C语言那五本书都读懂了，然后Qt也写过一些很简单的程序，你应该就有一种感觉，【自己知道】自己懂了。这个时候你可以去学《Windows程序设计》，学最底层的Windows API。

user: user-4
content: 有zl卖吗🤫

user: user-4
content: 有zl卖吗🤫

user: user-5
content: 引用 23 楼 If Me 的回复:我也觉得看c++ primer plus更好，不只是详细而且你会对c的机制和结构有一个更加全面和详细的了解，不用急着去写程序，把基础打好了，最重要是培养兴趣呀，看完之后，可以去看一些简单的案例或者深入学习一下c指针我刚开始学c++。用的也是这本书

user: user-6
content: 可以用链表和文件写个管理系统啥的 写大点尽量各个模块都涉及一下

user: user-7
content: 当年我学完的时候是做了命令行的学生管理系统，然后做了个吃金豆游戏

user: user-8
content: 随便看随便学

user: user-9
content: 看看C prime再看看数据结构。可以写个订票系统。

user: user-10
content: 您的程序需要多反复修改，调试后即可通过，耐心点，加油

user: user-0
content: 引用 23 楼 If Me 的回复：我也觉得看c++ primer plus更好，不只是详细而且你会对c的机制和结构有一个更加全面和详细的了解，不用急着去写程序，把基础打好了，最重要是培养兴趣呀，看完之后，可以去看一些简单的案例或者深入学习一下c指针我想先把c学好了再学c++的

user: user-11
content: 建议去找一些题先练练语法，等都熟悉了再开始打项目，当然要全部了解是不太可能的，只是不要在基础部分出问题，这样看其他大神的代码也不会迷糊

user: user-12
content: 贪吃蛇吧，给你两个函数 //---------到指定坐标去------------- void GotoXY(short y, short x) {	 	HANDLE a=GetStdHandle(STD_OUTPUT_HANDLE);		//获取本程序标准输出的句柄 	COORD t;										//COORD为表示坐标的结构体 	t.X=x*2;										//方便汉字定位，一个汉字占两个字符宽 	t.Y=y; 	SetConsoleCursorPosition(a , t);					//设置控制台光标位置 } //---------隐藏光标------------- void hide( void ) { 	HANDLE a =GetStdHandle(STD_OUTPUT_HANDLE); 	CONSOLE_CURSOR_INFO cursor_info={1,0};	 		//设置光标的结构体，前者设置厚度，后者设置可见 	SetConsoleCursorInfo(a , &cursor_info);				//设置控制台光标信息（样式） }  头文件的话是windows.h，可能还需要stdlib.h和conio.h

user: user-13
content: 经典的机房收费系统可以了解了解

user: user-14
content: 给你推荐本书，C语言项目开发实战入门

user: user-15
content: 。。。不会

user: user-0
content: 有必要刷oj吗 ....

user: user-0
content: 引用 19 楼 stone dream 的回复：引用 2 楼 福尔摩斯天才渊的回复:[quote=引用 1 楼 w__dong_123 的回复：]尝试写一个学生信息管理系统好的 过会儿我试试 学生信息管理系统，要写具体，比如说包括年龄，学校 ，姓名，学号，住址，电话，宿舍号，成绩等等，然后自己从成绩那里扩展知识，增加自己的程序设计能力[/quote]谢谢了

user: user-16
content: 引用 2 楼 福尔摩斯天才渊的回复:引用 1 楼 w__dong_123 的回复：尝试写一个学生信息管理系统好的 过会儿我试试 学生信息管理系统，要写具体，比如说包括年龄，学校 ，姓名，学号，住址，电话，宿舍号，成绩等等，然后自己从成绩那里扩展知识，增加自己的程序设计能力
user-0 提问: 跪求大家能不能用c语言写出来

回复:
user: user-1
content: 仅供参考：#include<stdio.h> #include<malloc.h> #include<string.h> #define STACK_INIT_SIZE 10 #define STACK_GROW_SIZE 5 #define ELEMTYPE char #define OK 1 #define ERROR 0 typedef struct { /*建立一个栈的首结点*/     ELEMTYPE * base;     ELEMTYPE * top;     int stacksize; } SpStack; int InitStack(SpStack *s) { /*建立空的栈并返回首地址*/     s->base=((ELEMTYPE*)malloc(STACK_INIT_SIZE*sizeof(ELEMTYPE)));     if (!s->base) return ERROR;     s->top=s->base;     s->stacksize=STACK_INIT_SIZE;     return OK; } int StackEmpty(SpStack *s) { /*判断栈是否为空*/     if (s->top==s->base) return OK;     else                 return ERROR; } int Push(SpStack *s,ELEMTYPE e) { /*往栈顶插入元素即进栈*/     if (s->top-s->base>=s->stacksize) { /*判断是否栈满*/         s->base=((ELEMTYPE*)realloc(s->base,(s->stacksize+STACK_GROW_SIZE)*sizeof(ELEMTYPE)));         if (!s->base) return ERROR;         s->stacksize+=STACK_GROW_SIZE;         s->top=s->base+s->stacksize;     }     *s->top++=e;     return OK; } int Pop(SpStack *s,ELEMTYPE *e) { /*让栈顶元素依次输出即出栈*/     if (StackEmpty(s)) return ERROR;     *e=*(--s->top);     return OK; } int Comp(ELEMTYPE a,ELEMTYPE b) {     if ((a=='('&&b!=')')       ||(a=='['&&b!=']')       ||(a=='{'&&b!='}')) {         return ERROR;     } else return OK; } int Count(SpStack *s) {     ELEMTYPE e[STACK_INIT_SIZE*2];     ELEMTYPE e1;     int i;      InitStack(s);     fgets(e,STACK_INIT_SIZE*2,stdin);     if ('\n'==e[strlen(e)-1]) e[strlen(e)-1]=0;     printf("%s\n",e);     for (i=0;e[i]!='\0';i++) {         switch (e[i]) {         case '(':         case '[':         case '{':             Push(s,e[i]);             break;         case ')':         case ']':         case '}':             if (StackEmpty(s)) {                 printf("%*s↖右括号多余\n",i+1,"");                 return(ERROR);             } else Pop(s,&e1);             if (!Comp(e1,e[i])) {                 printf("%*s↖左右匹配出错\n",i+1,"");                 return(ERROR);             }         }     }     if (!StackEmpty(s)) {         printf("%*s↖左括号多余\n",i,"");         return(ERROR);     } else {         printf("匹配正确\n");         return(OK);     } } void main() {     SpStack s;     Count(&s);     free(s.base); }

user: user-2
content: 栈数据结构来做很简单的
user-0 提问: 【链表】在devc++上输入数据之后运行怎么一直无法输出；

回复:
user: user-1
content: struct ListNode *createlist() {   int num;   struct ListNode *head=NULL,*tail=NULL,*ptr=NULL;   scanf("%d",&num);   while(num!=-1)   {     ptr=(struct ListNode *)malloc(sizeof(struct ListNode));     ptr->data=num;     ptr->next=NULL;     if(head==NULL) head=ptr;     else tail->next=ptr;     tail=ptr;     scanf("%d",&num);   }   return head; } 你这里好像根本就没有连起来，虽然你返回了head，但是你head->next一直为null

user: user-2
content: 数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

user: user-1
content: 引用 3 楼 放心去飞勇敢去追 的回复:在这个基础之上如何改正确？ else tail->next=ptr;这句应该是有问题的 else head->next=ptr;改成这样，不知道还有没有其他错误

user: user-0
content: 在这个基础之上如何改正确？
user-0 提问: 小白求教  为什么用pow函数输出的结果总是0

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

user: user-2
content: #include<stdio.h> #include<math.h>  void main() {     double x,y,z;  scanf("%lf,%lf",&x,&y); z=pow(x,y);  printf("%lf,%lf,%lf\n", x, y, z); }  好好练练打字和眼力吧，这程序一看就是抄的，还抄不对。 是lf不是1f，scanf多了个%
user-0 提问: 怎么进行字符串的拷贝，求大神>o<

回复:
user: user-1
content: 不让用strcpy，不让用指针，那就一个字符一个字符赋值呗！  #include <stdio.h>  int main() {     //接收的字符数组的长度不小于原数组     char a[10] = "abc";     char b[10] = "abcdefg";     //逐个字符的拷贝     int i;     for (i = 0; '\0' != a[i]; i++)     {         b[i] = a[i];     }     //拷贝完之后，加上字符串的尾巴     b[i] = '\0';     printf("%s\n", b);     return 0; }

user: user-2
content: 字符串就是一个有0结尾的char数组，数组怎么拷贝你就可以怎么拷贝，只不过不要忘记最后的0，没有0的话字符串就不知道在哪里结尾了。

user: user-3
content: void StrCopy(const char* src, char* dest) {     while ((*dest++ = *src++));  }

user: user-4
content: void  Mystrcpy(char *str1,char*str2)  {         int i;         for(i=0;*(str2+i)!='\0';i++)         {               *(str1+i)=*(str2+i);         }              *(str1+i)='\0';  } ---------------------  作者：tt758695  来源：CSDN  原文：https://blog.csdn.net/tt758695/article/details/78691753  版权声明：本文为博主原创文章，转载请附上博文链接！

user: user-5
content: 当字符串当数组，逐字拷贝

user: user-6
content: 无非是一对一按字符拷贝，可以不用指针的，当作数组操作咯。

user: user-7
content: 引用 6 楼 qq_42898932 的回复: 你是想进行字符串拷贝还是字符串拼接。想进行字符串拷贝，拷贝之前把原串清一下，就不会出现这种情况；你想要进行字符串拼接，需要先判断原串的长度，在原串长度的基础上进行增加。

user: user-8
content: 引用 6 楼 qq_42898932 的回复:我输入的一个字符串abcdefg.另一个是123，最后出来结果是456efg     表示很懵啊看得我也懵了，把代码贴出来瞅瞅？

user: user-0
content: 我输入的一个字符串abcdefg.另一个是123，最后出来结果是456efg     表示很懵啊

user: user-0
content: 引用 1 楼 老马何以识途的回复:无非是一对一按字符拷贝，可以不用指针的，当作数组操作咯。 求代码，想不出来了