Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
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: if后面就是一条打印，这个没什么可解释的吧。建议注重看一下需求，看一下2.0 * (sum - b/a)应该是需求里的内容～
user-0 提问: 请问在printf那里除了用p->来访问还能怎么用指针访问？？用了*p的有点问题请教一下。

回复:
user: user-1
content: 你用数组表示法试试看。

user: user-2
content: printf("学生%d:\n NO:%d NAME:%s age:%d\n", \            i+1, (*p).NO, (*p).NAME, (*p).age);
user-0 提问: Noi 计算两个日期之间的天数 问题求助

回复:
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: 此贴终结我会了

user: user-0
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: 题目信息太大涉及类的封装

user: user-0
content: 这样可以吗？

user: user-0
content: 引用 1 楼 不闻窗外事 的回复：你的输入时学校和项目数，你的名次是怎么获取的，还有输出是啥，感觉你这个题目根本不全啊要求：初始化输入：N-参赛学校总数，M-男子竞赛项目数，W-女子竞赛项目数 各项目名次取法有如下几种： 取前5名：第一名得分7分，第二名得分5，第三名得分3，第四名得分2，第五名得分1；取前3名：第一名得分5，第二名得分3，第三名得分2； 功能要求： （1）系统以菜单方式工作。 （2）由程序提醒用户填写比赛结果，输入各项目获奖运动员信息(运动员学校，运动员项目，性别，姓名)。 （3）所有信息记录完毕后，用户可以查询各个学校的比赛成绩 （4）查看参赛学校信息和比赛项目信息等。 (5) 根据总成绩、男子成绩、女子成绩的顺序从高到低的方式显示结果。

user: user-3
content: 你的输入时学校和项目数，你的名次是怎么获取的，还有输出是啥，感觉你这个题目根本不全啊
user-0 提问: 如何利用while输入未知个数的整数和小数

回复:
user: user-1
content: #include<stdio.h> #include <string.h> #include<math.h>  int main(void) {      char buf[128], *ret;     float val_f, sum_f = 0;     int val_int, sum_int = 0;      while (fgets(buf, 127, stdin)) {         ret = strchr(buf, '.');         if (ret) {             sscanf(buf, "%f", &val_f);             sum_f += val_f;         } else {             sscanf(buf, "%d", &val_int);             sum_int += val_int;         }     }     printf("%d\t%.2f\n", sum_int, sum_f);     /*     char sz[100];     int sum1 = 0, i;     float sum2 = 0;      while(scanf("%d",&sz[0]) != 0||scanf("%lf",&sz[0]) != 0)     {         if(floor(sz[0]) == sz[0])         {             sum1 = sum1 + sz[0];         }         else         {             sum2 = sum2 + sz[0];         }     }     printf("%d %.2f",sum1,sum2);     */     return 0; }  供参考～  结束输入用ctrl+z（windows下）或ctrl+d（Linux下）

user: user-2
content: 这个题你需要自己判断是否整数,需要按照字符串整体读取 #include <stdio.h> // strlen #include <string.h> // atof,atoi #include <stdlib.h>  #define LEN 100  // 判断是否是浮点数 int isFloat(char arr[], int n){     int i = 0;     for(i=0;i<n;++i){         if(arr[i]=='.') return 1;     }     return 0; }  int main() {     int intSum = 0;     double floatSum = 0.0;     char line[LEN] = {0};          while(gets(line)){         if(isFloat(line,strlen(line))){             floatSum += atof(line);         }else{             intSum += atoi(line);         }     }     printf("%d %.2f\n",intSum,floatSum);     return 0; }

user: user-3
content: 不要使用%d或者使用%f，使用%s，然后去分解字符串，判断是否含有小数点，就可以了，结束可以使用文件结束符
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: (z >= y >= x) ？括号里的表达式，先计算z >= y的值，由于是判断，所以结果是0或1.即z >= y是否为真，若为真则是1.然后1 >= x；判断是否为真，结果为假，则最后结果是0.
user-0 提问: c#窗体数据库连接

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:可以建，封装好一点结构会很清晰，扩展或者查bug也容易 用的时候直接引用类就行了吧

user: user-1
content: 可以建，封装好一点结构会很清晰，扩展或者查bug也容易
user-0 提问: 基于51单片机的波形发生器，哪位大神能解答一下

回复:
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-1
content: #include<stdio.h>  void fun(int x,int *pp,int *n) {     int i;      *n = 0;     for(i=2;i<=x;i+=2)     {         if(x%i==0)         {             //scanf("%d",pp);             pp[*n] = i;             (*n)++;         }     } }  int main() {     int x,n,i,m;     int pp[1000];      printf("Input number:");     scanf("%d",&x);      if (x > 1000) {         printf("Input error!\n");         return -1;     }      fun(x, pp, &n);     for(i=0;i<n;i++)         printf(" %d", pp[i]);     putchar(10);      return 0; } 供参考～

user: user-0
content: 引用 1 楼 寻开心的回复:#include <stdio.h> #include <stdlib.h>  void fun(int x,int *pp,int *n) {     int i;     int c =0;     for(i=2;i<=x;i+=2)     {         if(x%i==0)         {             pp[c] = i;             c++;         }     }     *n = c; }  int main() {     int x,n,i;     int pp[1000];     printf("Input number:");     scanf("%d",&x);     fun(x,pp,&n);     for(i=0;i<n;i++)     {         printf(" %d", pp[i]);     }     return 0; }  按照函数的参数的定义，pp和n自然就把计算的结果带回来了 对照代码看吧 谢谢指导

user: user-2
content: #include <stdio.h> #include <stdlib.h>  void fun(int x,int *pp,int *n) {     int i;     int c =0;     for(i=2;i<=x;i+=2)     {         if(x%i==0)         {             pp[c] = i;             c++;         }     }     *n = c; }  int main() {     int x,n,i;     int pp[1000];     printf("Input number:");     scanf("%d",&x);     fun(x,pp,&n);     for(i=0;i<n;i++)     {         printf(" %d", pp[i]);     }     return 0; }  按照函数的参数的定义，pp和n自然就把计算的结果带回来了 对照代码看吧
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: 把name变成全局变量就行了

user: user-3
content: 两个问题，第一个:main中若输入的month为小于1，或大于12时，应该提示输入出错，并直接返回，不应该去执行month函数。 第二个问题，返回局部变量是未定义行为。修改为在name定义时加static修饰～这样name就是全局变量了。

user: user-4
content: #include<stdio.h> #include<stdlib.h>  int main() { 	int month; 	do 	{ 		printf("输入月份(1-12)："); 		scanf_s("%d", &month); 		switch (month) 		{ 		case 1: 			printf("January\n"); 			break; 		case 2: 			printf("February\n"); 			break; 		case 3: 			printf("March\n"); 			break; 		case 4: 			printf("April\n"); 			break; 		case 5: 			printf("May\n"); 			break; 		case 6: 			printf("June\n"); 			break; 		case 7: 			printf("July\n"); 			break; 		case 8: 			printf("August\n"); 			break; 		case 9: 			printf("September\n"); 			break; 		case 10: 			printf("October\n"); 			break; 		case 11: 			printf("November\n"); 			break; 		case 12: 			printf("December\n"); 			break; 		default: 			printf("输入月份有误！！\n"); 			break; 		} 	}while (getchar() != 'q'); 	system("pause"); 	return 0; }
user-0 提问: 按空格分割字符串

回复:
user: user-0
content: emmm好的谢谢了（虽然我是想要把每一小段都存到a[i]里去，之后再调用

user: user-0
content: char *p = strtok(a,c);     a[0]=p;     p = strtok(NULL,c);    for(i=1;i<3;i++)    {      while(p)          {              a[i]=p;              p = strtok(NULL,c);           }     }   想问一下这样写错在哪里？我用printf想看看a[i]里有没有存进字符串的时候失败了

user: user-1
content: strtok是有坑的    它的实现机制是对原字符串当中的分隔字符用'\0'替代做标记， 修改了原始的字符串  int main() {     char s[] = "DA H10 C3";     const char *d = " ";//以空格 作为分隔符，注意是可以取多个的     char *p;     p = strtok(s,d);     while(p)     {         printf("%s\n",p);         p=strtok(NULL,d);     }      return 0; }

user: user-2
content: a[0]='DA', 这样写有问题，DA是字符串，怎么用单引号呢？ 因此应该是"DA"吧。  可以strtok或strtok_r来解决这个分割问题～

user: user-3
content: 使用strsep或者strtok，如果是windows系统，就是用strtok或者它的安全版
user-0 提问: 有没有大神能读懂这段代码在做什么？

回复:
user: user-1
content: 引用 4 楼 HilliardLiu 的回复:意思是随便给个大点的数字，一般不会超过的，免得buf内存溢出对吧？ 对，缓存大小建议预估一下，也不能给的太大，浪费～

user: user-0
content: 意思是随便给个大点的数字，一般不会超过的，免得buf内存溢出对吧？

user: user-1
content: 引用 2 楼 HilliardLiu 的回复:感谢大大，还想问下这里前面的宏，把那个字符串定义为2600有什么意义？ 就是缓存的长度～

user: user-0
content: 感谢大大，还想问下这里前面的宏，把那个字符串定义为2600有什么意义？

user: user-2
content: #define PFL_MEMO_CHARACTER       '#' #define PFL_LINE_BUFFER_SIZE     2600  static void ClearBlank(char *line) {     INT32 i = 0, j, k;     char buf[PFL_LINE_BUFFER_SIZE];      while (line[i] != 0) {            //判断是否到结尾         if (line[i] == PFL_MEMO_CHARACTER || line[i] == '\n') {  //如果是#号或者换行             line[i] = 0;                                //去掉#号或者换行字符             if (i == 0) break;   //如果#号在最开始应该表示这一行为注释，不处理，自接退出；如果第一个字符是换行，表示空行，也不处理             j = i - 1;             do {                 if (j < 0) break;                 if ((line[j] != ' ') && (line[j] != '\t')) break;                  line[j--] = 0;     //如果刚才去掉的#号或者换行符前面还有空字符，就去掉#号或者换行符前面的空字符             } while(1);             break;         }	         i++;     }       i = 0;     memset(buf, 0, PFL_LINE_BUFFER_SIZE);      while ((line[i] != '=') && (i < (INT32)strlen(line))) //查找=号，也就是说line中应该包含一个=号         i++;     if (i == (INT32)strlen(line)) return;  //如果找不到等号，退出      for (j = i - 1; (line[j] == ' ') || (line[j] == '\t'); j--); //找到的=号前面如果有空字符，去掉     for (k = i + 1; (line[k] == ' ') || (line[k] == '\t'); k++); //找到的=号后面如果有空字符，去掉      memcpy(buf, line, j + 1);    //保存=号前面的内容     buf[j + 1] = '=';         //保存=号     strcat(buf + j + 2, line + k);    //保存=号后面的内容       strcpy(line, buf);       }  也就是说如果本来输入的是这样的，           abcdef =   12345  #fkladf 输出是这样的 abcdef=12345
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: 引用 2 楼 weixin_45991779 的回复:  一道大题  嘻嘻嘻 大题也得自己先思考，写写，调试一下的呀

user: user-0
content: 一道大题  嘻嘻嘻

user: user-3
content: 这还真是一道题
user-0 提问: 本人刚学c语言，求各位大佬指教。

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:findmax(num, 10)    把&符号去掉，  num本来就是数组，符合函数要求的参数类型 懂了，谢谢大佬！😃

user: user-1
content: findmax(num, 10)    把&符号去掉，  num本来就是数组，符合函数要求的参数类型
user-0 提问: 用最初始的c语言做 求！！！

回复:
user: user-0
content: 有错误 求找找

user: user-1
content: O(n)时间度 int main(){     char s[18]={0};     int i,n;     scanf("%d",&n);     for(i=0;i<2*n-1;++i){         if(i<n)s[i]=i+1+'0';         else s[i]=2*n-i-1+'0';     }     for(i=0;i<n;++i){         printf("%s\n",s);         s[i]=' ';         s[2*n-i-2]='\0';     }     return 0; }

user: user-0
content: 可不可以用最简单的方法，因为有好多的我都没学过 看不懂 就最简单的for语句等等的

user: user-0
content: 谢谢，刚开始学 ，逻辑不太行

user: user-2
content: 灵活一点  比如 不要看到循环就固定 从0/从1开始 完全可以从负数开始  比如 输出几个空格 完全没必要自己手动循环  格式控制符不香吗

user: user-3
content: int n = 5;     int row = 1, col=0;     for(row=1; row<=n; row++ ) {         for ( col =1; col<row; col++ ) 输出空格;         for ( ; col<n; col++) 输出col;         for ( ; col>=row; col--) 输出col;         换行;     };

user: user-0
content: 这样勉强算正三角 逻辑不太清楚 不知道怎么办了

user: user-3
content: 自己写， 错了再贴上来提问
user-0 提问: 就这个题怎么做啊！！！！大佬们觉得很简单，但是我真的，，是小白

回复:
user: user-1
content: 引用 2 楼 weixin_45993363 的回复:[quote=引用 1 楼 寻开心的回复:]这个不是简单不简单的问题 论坛的意义是帮助人提升编程水平 你一行代码不写，只要原码， 有何意义呢  自己写，有问题贴上来， 再提问 我写了，但是就是输出有错误才来问的，不过现在已经过了，我记住了，下次会把代码贴上来[/quote] 直接贴代码吧，根据代码分析你的问题～

user: user-0
content: 引用 1 楼 寻开心的回复:这个不是简单不简单的问题 论坛的意义是帮助人提升编程水平 你一行代码不写，只要原码， 有何意义呢  自己写，有问题贴上来， 再提问 我写了，但是就是输出有错误才来问的，不过现在已经过了，我记住了，下次会把代码贴上来

user: user-2
content: 这个不是简单不简单的问题 论坛的意义是帮助人提升编程水平 你一行代码不写，只要原码， 有何意义呢  自己写，有问题贴上来， 再提问
user-0 提问: 链表合并

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

user: user-0
content: 引用 1 楼 寻开心 的回复：二路归并 + 链表操作  自己写吧， 有错了再提问请问可以用两个链表比较从头开始比较大小，然后把大的一次链接到a链表可以嘛

user: user-2
content: 二路归并 + 链表操作  自己写吧， 有错了再提问
user-0 提问: 求纠错

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

user: user-2
content: 又是void main  int main() {    .....  }  把你的int i，j 开始到最后的语句，搬到上面这个.... 的部分去  你这个不会是头一次写代码吧  上来就用struct这么高深的部分，厉害啊

user: user-3
content: 设一个结构体数组，输入设循环和数组一样 比如stu[i].stuno
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: s[1]=0;但是j的值从3开始啊。。。 在书上看到的。

user: user-2
content: 因为在过去的循环当中 s【j】 = 0 的赋值操作， 再次进入的时候， s【ℹ️】 和 s【j】就有可能是0了 谁说这个是筛素数法的啊？！  筛素数法不是这样子的 ，那是循环填充标记位的方式， 没有求模等运算  你自己百度一下，  百度知识库里面 素数 主题下，我记得就有筛素数法的理论和原码的

user: user-0
content: 筛选法求100以内的素数

user: user-0
content: 谢谢，我理解了。应用公式就比我自己推导好做多了。 我也学会了您的“循环检查法”哈哈。 能麻烦您给我讲解一下下面代码的这一处吗？  #include<stdio.h> #include<math.h> main() { 	int i; 	int j; 	int n; 	int s[101]={0}; 	//数组赋初值  	for( i=1 ; i<101 ; i++){ 		s[i]=i; 	} 	//判断素数	 	s[1]=0; 	for( i=2 ; i<sqrt(100) ; i++){ 		for( j=i+1 ; j<101 ; j++){ 			if(s[i] != 0 && s[j] != 0){//这里为什么要标记s[i] != 0 && s[j] != 0呢？实际上他们也不可能为0吧？ 				if(s[j]%s[i] == 0){ 				s[j]=0; 				} 			} 			 		} 	} 	//输出  	for( i=0 , n=0 ; i<101 ; i++){ 		if(s[i] != 0){ 			printf("%5d",s[i]); 			n++; 		} 		if(n==10){ 			printf("\n"); 		} 	}  }

user: user-2
content: 初中的数学公式啊。 1 = 1 * 1 1 + 3 = 2* 2  1 + 3 + 5  = 3 * 3  。。。。   有了这个公式，   n*n = 1 + 3 +5 + .... + 2n-1  沙漏一正一反，公用一个1， 总数不就是  m(n) = 2*n*n -1   反算就是。 n(m) = sqrt( (n+1) / 2 )

user: user-0
content: 1 + 3 + 5 + .....  + 2*N-1  = N*N吧？  int l =  sqrt((n+1)/2) 就知道了沙漏的底边宽度：2*l-1；l是怎么推出来的？底边宽度怎么来的？谢谢

user: user-2
content: 没有固定套路， 因题而异， 去构造不同的测试数据本身就是一个单独的命题  对你这个题，再套一个循环，模拟输入就好了。 检测比如从10*。11*，，。。。 50* 这样输入输出

user: user-0
content: 我想问一般用什么数值去检验代码呢？使用分类讨论的条件检验或者边界值是吗？一般同一种情况用几组呢？我这个题目就是检验的时候数据少了，导致我没查出来错误。

user: user-0
content: 我做出来了，谢谢大神，第一个while条件改为while(N>6 && (N-1)/2-sum>=i)就对了，好高兴。 一会拜读一下您的帖子。

user: user-2
content: #include<stdio.h> #include<math.h>  void SandGlass(int n, char ch) { 	int level = sqrt((n+1)/2); 	int i, j, len=2*level-1; 	for ( i=0; i<level; i++, len-=2) { 		for (j=0; j<i; j++) printf(" "); 		for (j=0; j<len; j++) printf("%c", ch); 		printf("\n"); 	} 	len = 3; 	for (i=1; i<level; i++, len+= 2) { 		for (j=0; j<level-i-1; j++) printf(" "); 		for (j=0; j<len; j++) printf("%c", ch); 		printf("\n"); 	} 	printf("%d", n-2*level*level+1); } main() { 	int n;     char ch='*'; 	scanf("%d %c", &n, &ch); 	int level = sqrt((n+1)/2); 	int u = 2*level*level-1, r=n-u; 	printf("n=%d, level=%d, Used:%d, Remain:%d\n", n, level, u, r); 	SandGlass( n,  ch); }

user: user-2
content: 70 *     48 *   16 *  这样的数据  输出都是-1 这不是唯一的错误， 45 * 等数据也会出现类似的错误 显然计算公式上面有问题   假设沙漏底边宽度是n = 2*N-1  那么，已知公式：     1 + 3 + 5 + .....  + 2*N-1  = N^N 所以，完整的沙漏的字符用量就是 2*N*N-1   对于程序输入的整数n，   int l =  sqrt((n+1)/2) 就知道了沙漏的底边宽度：2*l-1 全部输出后，剩余的字符数量就是：  n - （2*l*l - 1） 个剩余  例如n=48     l = sqrt（49/2） = 4     沙漏底边宽度就是7，    剩余  48 - （32-1） = 17 有了这些数据，直接绘制和输出就好了

user: user-3
content: 你输入103 *运行一下
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: 问题出在上一行好不好 typedef struct arcCell { ... }; ArcCell    ArcCell 前面没有分号，后面才有分号。  上一行的错误累计到下一行去了  typedef struct arcCell { ... } ArcCell  ;
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 <stdlib.h> #include <stdio.h>  int Primenumber(int n,int *num) {     if (n < 10) return -1;      int index = 0;      for (int i = 2; i < n; i++)     {         int count = 0;          for (int j = 1; j <= i; j++)         {             if (i%j == 0) count++;         }          if (count == 2)         {             num[index] = i;             index++;         }     }     return index; }  void printPrimen(int n,int *num) {     printf("%d\n",n);      for (int i = 0; i < n; i++)     {         printf("%d\t",num[i]);         if ((i+1)%5 == 0) printf("\n");     } }  int main() {     int number[100];     int max = 0;     scanf("%d",&max);     int n = Primenumber(max,number);     printPrimen(n,number); }

user: user-3
content: 都指着别人来救呢，谁来救我啊？简单的事情自力更生！自救！求人不如求己！
user-0 提问: 自定义函数十进制转换为十六进制

回复:
user: user-1
content: 你的题目当中不是有答案吗。第六讲大课当中有例题。  自己做， 出错了再来提问 原码没有

user: user-0
content: 引用 1 楼 寻开心的回复:你的题目当中不是有答案吗。第六讲大课当中有例题。  自己做， 出错了再来提问 原码没有 而且我们老师还没讲 直接跳过 历史遗留问题

user: user-0
content: 引用 1 楼 寻开心的回复:你的题目当中不是有答案吗。第六讲大课当中有例题。  自己做， 出错了再来提问 原码没有 请无视吧 有是有 但是只留了个自学 什么代码提示都没有
user-0 提问: 求助啊很急

回复:
user: user-1
content: 设湖深x，则根据直角三角形，(x+H)的平方=x平方+L平方 x平方+2xH+H平方=x平方+L平方 得出 x=（L平方-H平方）/ 2H 思路没错啊，没看到你的代码，注意结果可能超出int范围就好，所以把输入都转成double来计算
user-0 提问: C语言小白关于指针强制转化的问题

回复:
user: user-1
content: void * ptr; 定义ptr的类型 （char*）ptr； 记一句是废语句  （char*）ptr是强制转换，问题是， 这个转换并不改变ptr自身。  它是获得了ptr的值，把这个值转换成了另外的类型 这样的转换，往往是和赋值语句结合使用的，例如：     char * p = (char  *) ptr;  你的错误不再 ptr = u上面，这句没有问题 错误在printf，里面应为ptr是void类型，无从判断 ptr[2] 是什么  printf ("%c", ((char*)ptr)[2] ); //这样才好

user: user-0
content: 顺便问问cast的强制转换又是怎么回事？
user-0 提问: 我的输出格式错在哪里了

回复:
user: user-0
content: 引用 1 楼 起个昵称就叫“啥”的回复:不理解你为什么要printf("%-4d",j)  if(sum%5==0)         printf("\n"); else         printf(" "); 那这个要怎么改才对呢

user: user-1
content: if(sum%5==0)            {                printf("\n");            } -------------------------------sum要置 0  吧

user: user-2
content: 不理解你为什么要printf("%-4d",j)  if(sum%5==0)         printf("\n"); else         printf(" ");
user-0 提问: 求大神解答 想知道这个程序是有什么问题 应该怎么改

回复:
user: user-1
content: void main() 也行

user: user-2
content: 新建一个工程， 控制台应用， 不要mfc支持， 再把代码复制进去

user: user-0
content: 引用 1 楼 寻开心的回复:老师是合格的老师，不是体育课出身的  这绝对是自己的问题，不要赖老师哈   老师最多是main 前面少了个int， 最后少了一个return 0;      是你的工程开错 还是刚刚出现的那个问题

user: user-0
content: 引用 1 楼 寻开心的回复:老师是合格的老师，不是体育课出身的  这绝对是自己的问题，不要赖老师哈   老师最多是main 前面少了个int， 最后少了一个return 0;      是你的工程开错  我改了一下 还是不行诶

user: user-2
content: 老师是合格的老师，不是体育课出身的  这绝对是自己的问题，不要赖老师哈   老师最多是main 前面少了个int， 最后少了一个return 0;      是你的工程开错
user-0 提问: c语言小白 大佬来看看这个题

回复:
user: user-1
content: 引用 3 楼 J9999955555 的回复:#include<stdio.h> #include <string.h> int main() {     /*********Begin*********/ 	char a[50]; 	int i,j,n=0,l1=0,lmax=0,lmaxd; 	while(1){ 		l1=lmax=lmaxd=n=0; 		gets(a);  		if(strcmp(a,"stop")==0)break; 		for(i=0;a[i]!='\0';i++) 			if(a[i]!=' '){ 			l1++; 			n++;} 			else {if(l1>lmax){ 				lmax=l1; 				lmaxd=i-lmax; 			} 				l1=0; 			} 			if(l1>lmax){ 				lmax=l1; 				lmaxd=i-lmax; 			} 				printf("%d ",n); 				for(i=lmaxd;i<=lmax+lmaxd;i++) 				printf("%c",a[i]); 				printf("\n"); 			memset(a,0,sizeof(a));  	}       return 0; }   #include<stdio.h> #include <string.h>  int main() {     char a[50];     int i, j, pos = 0;     int str_len, word_len, max_word_len;      while(1) {         str_len = word_len = max_word_len = 0;          fgets(a, 50, stdin);          if (strlen(a) <= 1)             continue;         if (strlen(a) < 50)   //remove '\n'             a[strlen(a)-1] = 0;          if(strncmp(a,"stop", strlen("stop"))==0)             break;         for(i = 0; a[i] !='\0'; i++) {             if(a[i] != ' ') {                 word_len++;                 str_len++;                 continue;             }             if (word_len  > max_word_len) {                 max_word_len = word_len;                 pos = i - word_len;             }             word_len = 0;         }         if (word_len  > max_word_len) {             max_word_len = word_len;             pos = i - word_len;         }          printf("%d ", str_len);         for (i = pos; i < pos + max_word_len; i++)             printf("%c", a[i]);         putchar(10);     }       return 0; } 供参考～

user: user-2
content: #include<stdio.h> #include <string.h> int main() {     /*********Begin*********/ 	char a[50]; 	int i,j,n=0,l1=0,lmax=0,lmaxd; 	while(1){ 		l1=lmax=lmaxd=n=0; 		gets(a);  		if(strcmp(a,"stop")==0)break; 		for(i=0;a[i]!='\0';i++) 			if(a[i]!=' '){ 			l1++; 			n++;} 			else {if(l1>lmax){ 				lmax=l1; 				lmaxd=i-lmax; 			} 				l1=0; 			} 			if(l1>lmax){ 				lmax=l1; 				lmaxd=i-lmax; 			} 				printf("%d ",n); 				for(i=lmaxd;i<=lmax+lmaxd;i++) 				printf("%c",a[i]); 				printf("\n"); 			memset(a,0,sizeof(a));  	}       return 0; }

user: user-0
content: 遇到\0不是整个字符串长度，要输出空格隔开的字符串。

user: user-3
content: 使用gets读取一行字符，使用strlen函数就行，不用库的话，遍历一下，找到遇到\0，就是字符串的长度
user-0 提问: 初学c，函数超简单问题求求求解

回复:
user: user-1
content: 引用 1 楼 寻开心的回复:if ( x>y ) k = x;  这个没错， 那么如果不大于k等于啥呢？ 另一个函数也类似的问题 还有主函数用int的话 ，后面要加return(0)

user: user-2
content: if ( x>y ) k = x;  这个没错， 那么如果不大于k等于啥呢？ 另一个函数也类似的问题
user-0 提问: num = （--argc && (*++argv)[0] =='-'）? atoi(argv[0]+1):6 ;

回复:
user: user-0
content: @寻开心，非常感谢您的回复。通过您的回复，我已经完全明白了。

user: user-1
content: 1 --argc 的作用，如果控制台启动程序的时候没有参数， argc就是1， --答案就是0， 直接是false值了， &&后面的代码根本就不执行    整个语句就等价于     num = (false) ? ... : 6;  // num = 6  2 如果控制台输入了参数 && 后面的代码执行    （*++argv）[0]  实际上就是。argv[1][0]        && 后面的这段就是判断 输入的第一个参数的第一个符号是不是 - 符号    3 用户应爱输入的是。a.exe -31    ？ 后面的那段，就可以把31取出来并转换成整数  整个代码的意思就是：    num  = （ 有参数输入吗 && 输入的第一个参数的第一个字母是 - 符号吗 ？ ）？ 是则转换-符号后面的字符串为整数并返回 ： 否则返回6

user: user-1
content: 如果你的程序是a.exe    1 --argc 的作用，如果控制台启动程序的时候没有参数， argc就是1， --答案就是0， 直接是false值了， &&后面的代码根本就不执行  2 如果控制台输入了参数 && 后面的代码执行    （*++argv）[0]  实际上就是。argv[1][0]        &&后面的这段就是判断 输入的第一个参数的第一个符号是不是 - 符号 3 用户应爱输入的是。a.exe -31    ？ 后面的那段，就可以把31取出来并转换成整数
user-0 提问: C语言学习

回复:
user: user-0
content: 引用 5 楼 寻开心的回复:补码转换成原码： 判断高位是否为1， 是1才做： 减一，再取反，然后整个数值前加一个负号；  否则：原样不变 嗯嗯，我知道了，原谅我现在还是一个小白

user: user-1
content: 补码转换成原码： 判断高位是否为1， 是1才做： 减一，再取反，然后整个数值前加一个负号；  否则：原样不变

user: user-0
content: 引用 3 楼 寻开心的回复:又要翻老黄历了 。 计算机里面数字有补码规则保存，ok 问题是扩充是怎么回事儿，   8bits的数字来说，  原码扩充了补码，有效数字就是七位了吗？  补码转换回原码是各位取反加吗？  那是负数的原码变成补码的规则吧 函数谁说只能实现单一的功能的？ C语言中的函数， 补码转换为原码是指负数

user: user-1
content: 又要翻老黄历了 。 计算机里面数字有补码规则保存，ok 问题是扩充是怎么回事儿，   8bits的数字来说，  原码扩充了补码，有效数字就是七位了吗？  补码转换回原码是各位取反加吗？  那是负数的原码变成补码的规则吧 函数谁说只能实现单一的功能的？

user: user-0
content: 引用 1 楼 寻开心的回复:好一套判断对错的题目啊 考试啦，考试啦， 1 计算机存储数字是以补码存储的。 2 补码扩充:   只和自身的类型有关，与目标无关 3 补码规则：有符号整型扩充 符号位， 4 补码规则：无符号整型扩充 0 5 补码转换为原码:符号位不变，后面取反加一。 6 在计算机中，0为假，非0即真 7 函数:一个模块只完成单一任务。 8 C语言不允许函数嵌套定义  错的题号都有几？  都是正确的，是我上节课学习的

user: user-1
content: 好一套判断对错的题目啊 考试啦，考试啦， 1 计算机存储数字是以补码存储的。 2 补码扩充:   只和自身的类型有关，与目标无关 3 补码规则：有符号整型扩充 符号位， 4 补码规则：无符号整型扩充 0 5 补码转换为原码:符号位不变，后面取反加一。 6 在计算机中，0为假，非0即真 7 函数:一个模块只完成单一任务。 8 C语言不允许函数嵌套定义  错的题号都有几？
user-0 提问: 运算小问题

回复:
user: user-0
content: 引用 6 楼 清晨与猫鱼的回复:我想到你为什么就转不过弯来了。  3/2  这里其实  是两个整型 进行运算，结果自然是要舍弃小数的。你应该要用3.0/2.0 才是浮点数运算。 浮点数运算它就会把小数留下对吧？还要把它的数据类型改为浮点型对吧？

user: user-1
content: 我想到你为什么就转不过弯来了。  3/2  这里其实  是两个整型 进行运算，结果自然是要舍弃小数的。你应该要用3.0/2.0 才是浮点数运算。

user: user-1
content: 我觉得我已经解释的很清楚了。你怎么还绕不过弯来。

user: user-0
content: 引用 3 楼 清晨与猫鱼的回复:浮点型 和整型的存储方式不一样，整型会自动舍弃掉 小数。 我的意思是：它不是应该输出1.5吗？我把它改成double型，输出：%f，它小数点后面没有5，只有6个0。

user: user-1
content: 浮点型 和整型的存储方式不一样，整型会自动舍弃掉 小数。

user: user-0
content: 引用 1 楼 清晨与猫鱼的回复:小数被舍弃了。 double，%f数据类型，它小数点后面也都是0啊？这又是怎么回事？

user: user-1
content: 小数被舍弃了。
user-0 提问: 求助贴

回复:
user: user-0
content: 引用 1 楼 user-1的回复:add函数里的for循环条件是不是有问题啊，感觉很可能正常输入后是个死循环 哇，对对对，应该是--，谢谢你

user: user-1
content: add函数里的for循环条件是不是有问题啊，感觉很可能正常输入后是个死循环😊
user-0 提问: 求找出错误！

回复:
user: user-1
content: 没有哦，如果格式控制符中没有%c，是会忽略一些分隔符的，比如空格，回车，制表符等

user: user-0
content: 引用 1 楼 user-1的回复:k是double类型，格式控制符是%lf，4 5 s 8，5跟s之间的空格被输入到c1里面，在scanf中的%f%c之间加空格 double类型会把空格作为一个值输入，float类型会不会也这样？

user: user-1
content: k是double类型，格式控制符是%lf，4 5 s 8，5跟s之间的空格被输入到c1里面，在scanf中的%f%c之间加空格
user-0 提问: 指针问题，请大家进来看看

回复:
user: user-1
content: 什么是指针 https://blog.csdn.net/BCMY0110/article/details/103437879 基本指针类型的区别 https://blog.csdn.net/BCMY0110/article/details/103442102 虽然我觉得你看不懂...

user: user-2
content: char *st; scanf("%c",st);  / 这个st没有给予内存分配呢， 就直接用，野指针  printf("%c",d[26]);  d总共26个字母， 下标26会是啥？ 它可见吗

user: user-0
content: 引用 4 楼 寻开心的回复:是的。    定义了指针要么给它动态分配内存，如你的答复那样  要么让它指向一个已经存在的内存， 比如。int array【10】，  p=array；  这样才能确保你的指针指向的是一个有效的数据地址 #include<stdio.h> #include<string.h> #include<stdlib.h> int main(void) { int a,b,n,i; char *d = "abcdefghijklmnopqrstuvwxyz"; char *st; char fg[26]; st = fg; scanf("%c",st); scanf("%d",&a); for(i = 0;d[i] != '\0';i++) { if(st[0] == d[i]) {    printf("%c",d[(i + a) % 26]);  } } return 0; 可以了，哈哈哈

user: user-0
content: 引用 4 楼 寻开心的回复:是的。    定义了指针要么给它动态分配内存，如你的答复那样  要么让它指向一个已经存在的内存， 比如。int array【10】，  p=array；  这样才能确保你的指针指向的是一个有效的数据地址 恍然大悟，懂了懂了，晕了好几天了

user: user-2
content: 是的。    定义了指针要么给它动态分配内存，如你的答复那样  要么让它指向一个已经存在的内存， 比如。int array【10】，  p=array；  这样才能确保你的指针指向的是一个有效的数据地址

user: user-0
content: 引用 1 楼 寻开心的回复:char *st; scanf("%c",st);  / 这个st没有给予内存分配呢， 就直接用，野指针  printf("%c",d[26]);  d总共26个字母， 下标26会是啥？ 它可见吗 int* p = (int*)malloc(size*sizeof(int)); 如果用这种形式写，就不是野指针了吧？
user-0 提问: 请问这个题怎么做

回复:
user: user-0
content: 引用 3 楼 遇见女神的回复:这样这样这样  谢谢谢谢，(*°∀°)=3

user: user-1
content: 这样这样这样

user: user-0
content: 嗯，我写了，好像第二个函数有问题 #include<stdio.h>  void InputArray(int *p,int m,int n);  int FindMax(int *p,int m,int n,int *pRow,int *pCol);  int main()  {  	int m,n,max;  	int a[10][10];  	int *p;  	int Row;  	int Col;   	printf("Input m,n:\n");  	scanf("%d,%d",&m,&n);  	InputArray(p, m, n);  	max=FindMax( p,m, n, &Row,&Col);  	printf("max=%d,row=%d,col=%d",max,Row,Col);  	return 0;  }  void InputArray(int *p,int m,int n)  {  	int i,j;  	int a[10][10];  	printf("Input %d*%d array:\n",m,n);  	for(i=0;i<m;i++)  	{  		for(j=0;j<n;j++)  		{  			 scanf("%d",& a[i][j]);  		}  	}  }  int FindMax(int *p,int m,int n,int *pRow,int *pCol)  {  	int i,j;  	int max;  	for (i = 0; i < m; i++)  	{  		for (j = 0; j < n; j++)  		{  			if (max < (p[i] + j))  			{  				max = (p[i] + j);  				*pRow = i;  				*pCol = j;  			}  		}  	}  	return max;  }

user: user-2
content: 先动手写写，出问题再问
user-0 提问: 求大神帮忙，c语言制作一个通讯录管理系统

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

user: user-2
content: 参考博客： https://blog.csdn.net/Donald_Shallwing/article/details/99734501

user: user-3
content: 链表只是一种数据结构，跟实际的数据没有太多的联系，如果你写的链表有问题，可以参考一下网上别人的写的链表模板，稍加修改就能用了
user-0 提问: 删除下标为n的指定元素，大佬帮忙改错，按照我的思路

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

user: user-0
content: 引用 1 楼 user-3的回复: #include<stdio.h>  void del(int* a, int n)/*a[]=*a*/ { 	int i; 	for (i = 0; i < 10; i++) 		if(i >= n) 		{ 			*(a + i) = *(a + i + 1); 		} 	for (i = 0; i < 9; i++) 		printf("%3d", *(a + i)); } int main() { 	int a[10], b[9]; 	int n, i; 	for (i = 0; i < 10; i++) 		scanf("%d", &a[i]); 	scanf("%d", &n); 	del(a, n); 	return 0; }  为啥编译有错不能运行

user: user-2
content: #include<stdio.h>  int  del(int *a, int size, int n )/*a[]=*a*/ {     int i;     int tmp;      tmp = a[n];     for (i = n; i < size-1; i++)         a[i] = a[i+1];      return tmp;     /*     int i;     for(i=0;i<10;i++)         while(i>n)         {             *(a+i)=*(a+i+1);         }     for(i=0;i<9;i++)         printf("%3d",*(a+i));     */ }  int main () {     int a[10],b[9];     int n,i;     for(i=0;i<10;i++)         scanf("%d",&a[i]);      scanf("%d",&n);      if (n < 0 || n > 9)         return -1;     //b[9] = del(a[10],n);     b[9] = del(a, 10, n);      for(i=0;i<9;i++)         printf("%3d", *(a+i));      return 0; } 供参考～

user: user-3
content: #include<stdio.h>  void del(int* a, int n)/*a[]=*a*/ { 	int i; 	for (i = 0; i < 10; i++) 		if(i >= n) 		{ 			*(a + i) = *(a + i + 1); 		} 	for (i = 0; i < 9; i++) 		printf("%3d", *(a + i)); } int main() { 	int a[10], b[9]; 	int n, i; 	for (i = 0; i < 10; i++) 		scanf("%d", &a[i]); 	scanf("%d", &n); 	del(a, n); 	return 0; }
user-0 提问: c语言结构体运行出现乱码怎么回事

回复:
user: user-1
content: 把int main（）后面的那一行重定义的删除就好了

user: user-0
content: 请问应该怎样修改呢，去掉呢个重新定义的可以引用之前定义的结构体么？

user: user-1
content: int main(viod){ struct STU1 stu[7]; int a;  这里又重新定义了一次stu。和全局变量定义的stu重名  所以后面的使用的都是这个新定义的局部变量，而不是你正确初始化过的全局变量
user-0 提问: C语言入门小白向大神们求助

回复:
user: user-1
content: 最好自己动手写写 MAX长度可以适当调整  #include<stdio.h> # define MAX 100 int main() { 	char str[4][MAX]; 	char result[MAX]; 	int len = 0, i, j; 	for (i = 0; i < 4; i++) { 		scanf("%s", &str[i]); 		j = 0; 		while (str[i][j] != '\0')  			result[len++] = str[i][j++]; 	} 	result[len] = '\0';		//手动补上终止字符 	printf("%s", result); 	return 0; }
user-0 提问: 还有一个小时 求大神帮忙解答

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:4 1  4 1 1 4 1 2 4 2  4 2 1 4 3  示范的这个，答案就是上面的6种啊，哪里来的7呢  前两项很容易就能循环出来， 后面是要用一个递归函数来完成。 int count（int，int）返回的值是满足条件的子序列的数量 int count(int n1, int n2) {     int v = fabs(n1-n2);     if ( v < 2 ) return 0;  //      int c = 0;    for ( int x=1; x<v; x++) {           c += count(n2, x);           c %= 10000;    } } 还有一个44没拍出来

user: user-1
content: 5个的时候是14项  51    还有5个后续    51 1    51 2    51 3         513 1          5131 1 52   还有2个后续    52 1    52 2 53   还有2个后续    53 1      5311 54 55

user: user-1
content: #include <stdio.h>  int count(const int n1, const int n2) {     int v = abs(n1-n2);     if ( v < 2  ) return 0;  // n1和n2差小于2，没有后续      int c = 0;     int x;     for ( x=1; x<v; x++) { // 后续从1到v-1      	  //printf(" %d %d %d ", n1, n2, x);     	  c ++; // 自身算一个            c += count(n2, x); // 递归计算后项的数量            c %= 10000;    }    return c; }  int main () { 	int n; 	scanf("%d", &n); 	int i=0; 	int c = 0; 	for ( i=1; i<=n; i++ ) { 		c++; 		//printf("\n%d %d ", n, i); 		int t = count(n, i); 		c += t; 		printf("\n*%d %d have children number is: %d\n", n, i, t); 	} 	printf("\ntotal:%d", c); 	return 0; }

user: user-1
content: 4 1  4 1 1 4 1 2 4 2  4 2 1 4 3  示范的这个，答案就是上面的6种啊，哪里来的7呢  前两项很容易就能循环出来， 后面是要用一个递归函数来完成。 int count（int，int）返回的值是满足条件的子序列的数量 int count(int n1, int n2) {     int v = fabs(n1-n2);     if ( v < 2 ) return 0;  //      int c = 0;    for ( int x=1; x<v; x++) {           c += count(n2, x);           c %= 10000;    } }
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: 常用的编译器里面 除了微软的CL 都支持

user: user-0
content: 引用 1 楼 user-3的回复:如果你的变长数组指的是 VLA，那么 dev c++ 是支持的；如果你要求编译器，可以选择 gcc 或 tcc。 VLA,DEV编不出 参考程序清单10.18 //程序清单10.18--使用变长数组的函数 #include<stdio.h> #define ROWS 3 #define COLS 4 int sum2d(int rows,int cols,int ar[rows][cols]); int main(void) {   int i,j;   int rs=3;   int cs=10;   int junk[ROWS][COLS]={            {2,4,6,8},            {3,4,7,9},            {12,10,8,6}     };          int morejunk[ROWS-1][COLS+2]={           {20,30,40,50,60,70},           {5,6,7,8,9,10}     };          int varr[rs][cs];//变长数组          for(i=0;i<rs;i++)        for(j=0;j<cs;j++)           varr[i][j]=i*j+j;                  printf("3x5 array\n");      printf("Sum of all elements= %d\n",            sum2d(ROWS,COLS,junk));              printf("2x6 array\n");     printf("Sum of all elements = %d\n",           sum2d(ROWS-1,COLS+2,morejunk));             printf("3x10 VLA\n");    printf("sum of all elements = %d\n",          sum2d(rs,cs,varr));              return 0; }  //带有一个VAL参数的函数 int sum2d(int rows,int cols,int ar[rows][cols]) {     int r;     int c;     int tot=0;         for(r=0;r=rows;r++)        for(c=0;c<cols;c++)          tot+=ar[r][c];      return tot;  }  您试下

user: user-3
content: 如果你的变长数组指的是 VLA，那么 dev c++ 是支持的；如果你要求编译器，可以选择 gcc 或 tcc。
user-0 提问: C语言冒泡排序

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:scanf. 格式化输入的时候可以指定宽度，不能指定精度。    scanf("%.0lf ....."); 这里是不可以的 printf没有这个限制 嗯呢，谢谢大佬，谢谢谢谢啦

user: user-1
content: scanf. 格式化输入的时候可以指定宽度，不能指定精度。    scanf("%.0lf ....."); 这里是不可以的 printf没有这个限制
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: 没代码说个毛啊，你这是浪费大家的时间，同时也在浪费自己的时间

user: user-0
content: 这个是啥意思，初学者很懵
user-0 提问: PTA 估值一亿的AI核心代码，有两个测试点没过帮我看看哪里的问题，我没找到

回复:
user: user-1
content: 这个估值一亿的破烂代码准备秀多少天呢？

user: user-2
content: 太贵了， 玩儿不起。 找那些设立一个小目标打算赚这个的人解决吧
user-0 提问: 【c语言入门题】浮点数排序

回复:
user: user-1
content: 你这是字符串比较，楼主知道字符串比较的规则吗？

user: user-2
content: 提示：字符串比较：    7， 比600大

user: user-0
content: 引用 1 楼 SuperDay的回复:你这是字符串比较，楼主知道字符串比较的规则吗？ 从左至右进行ASCII码大小比较，是吗？
user-0 提问: c语言如何实现求数组s[n][n]的对角线之和

回复:
user: user-1
content: sum初始化为0   有两条对角线， 左上到右下的     用i来建立一重循环就行了， 每次循环计算 sum += s[i][i] 另外一条，右上到左下的     用j来建立一重循环， 每次计算。sum+= s[j][n-1-j] ;    // 这条对角线上的元素满足 两重下标的和是n-1
user-0 提问: c语言折半查找法的问题，要是查找的数不在数组里面，输出的数错误

回复:
user: user-1
content: 你的BinSearch就没有设计出找不到的逻辑， 以及找不到的情况下要返回什么 能找到就返回下标，找不到呢？  -1 可以  你的binSearch函数里面的代码 While语句循环执行完了，就是遇到了找不到的情况， 你是return 了 mid，这里应该return -1  主函数要判断， BinSearch返回值是不是-1， 是-1表示没有找到， 其他的数值才是表示找到了
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 提问: 对，又是我……我又来求助了！

回复:
user: user-0
content: 好了，我自己解决了😂巨蠢的问题……

user: user-0
content: 引用 1 楼 黑洞中潜水的猪的回复:n取2自然是俩行啊，另外建议有问题顺便把代码贴上来，方便论友们帮你调试 #include<stdio.h> #include<string.h> struct xin{ 	char xuehao[30]; 	char name[20]; 	int chengji[3]; }; struct xin N[30];int n,i;char z[30],h[20]; int main() {    	void input(); 	void print(); 	     input();     print();     return 0; }   void input() { 	scanf("%d",&n); 	for(i=0;i<n;i++) 	{ 		scanf("%s %s %d %d %d",z,h,N[i].chengji[0],N[i].chengji[1],N[i].chengji[2]); 		strcpy(N[i].xuehao,z); 		strcpy(N[i].name,h); 	} } void print() {   for(i=0;i<n;i++) 	printf("%s,%s,%d,%d,%d\n",N[i].xuehao,N[i].name,N[i].chengji[0],N[i].chengji[1],N[i].chengji[2]); }

user: user-0
content: 引用 1 楼 黑洞中潜水的猪的回复:n取2自然是俩行啊，另外建议有问题顺便把代码贴上来，方便论友们帮你调试 我是n取2，要输入两组数据(a和b)，但是我只输入了a组它就运行了

user: user-1
content: n取2自然是俩行啊，另外建议有问题顺便把代码贴上来，方便论友们帮你调试
user-0 提问: c语言 求助

回复:
user: user-1
content: mid:1，打错了

user: user-1
content: 最后return a[mid]==x?mid,-1，前面的return改成break 实在没什么意义

user: user-0
content: 引用 1 楼 user-2 的回复：改成一条return能干嘛？作业要求😂

user: user-2
content: 改成一条return能干嘛？
user-0 提问: C语言

回复:
user: user-1
content: int *p[3], a[3] p是一个数组，数组的内容是int *。  p 相当于 int ** a是一个数组，数组的内容是整数，  a 相当于 int *  对于四个问题，只要识别出来等式两边是 int， int*， 还是 int**就能知道是否匹配了 A      p = a;             int ** 和 int * 不匹配 B    *p = a[0].         int * 和 int 不匹配 C     p = &a[0].      int** 和 int * 不匹配 D p[0] = &a[0].     int * 和 int * 匹配
user-0 提问: 这是为啥！！求教大佬！！

回复:
user: user-1
content: 改了scanf的格式，确保a和b放入的是你输入的数 第二步是启动组小公倍数的算法，快速算法自己到百度上去找一下， 基本的办法 判断一下a和b maxV是其中大的， minV是其中小的 temp = maxV 循环  （这个循环最多执行 mnV次，  那个时候temp = maxV*minV = a*b 比如是他们的公倍数）       如果 temp % minV ==0 说明  tempV就是最小公倍数       如果不是 temp += maxV，继续循环   是不是倍数用 % 判断就好了

user: user-0
content: 引用 2 楼 寻开心的回复:float a;  你用%d的格式输入，那会是啥， 要用%f指定float类型的输入格式吧  输入数据不对， 后面能对才见鬼呢  初学的长点记性 1 定义变量的同时都赋予初值 2 每次输入数据后都printf出来，对比一下， 确保无误再下一步 3 把算法分解成多个步骤每个步骤结束，printf一下结果，确认对了再继续下一步  不会做断点就必须会printf大法 改成f也不对啊，问题出在哪

user: user-1
content: float a;  你用%d的格式输入，那会是啥， 要用%f指定float类型的输入格式吧  输入数据不对， 后面能对才见鬼呢  初学的长点记性 1 定义变量的同时都赋予初值 2 每次输入数据后都printf出来，对比一下， 确保无误再下一步 3 把算法分解成多个步骤每个步骤结束，printf一下结果，确认对了再继续下一步  不会做断点就必须会printf大法
user-0 提问: 求解

回复:
user: user-1
content: 问题1：  函数里面的a没有初始化为0  问题2:    你说没有修改之前，从循环体出来的时候j应该是多少？  一种情况是半路出来的， 遇到了n%j是0的情况  但是还有一种情况， 正常循环退出的， 那你说这个时候j是多少？！！！  j 是 n  n%n是几？  修改后的正常循环出来，j = n/2 这个未必是， 当n是偶数的时候， n%n/2 还是为0  你在 循环语句之后，printf一下j，自己看看结果
user-0 提问: 操作系统页面置换算法【LFU】在物理内存块中寻找被置换页面时出错了，望指教！

回复:
user: user-0
content: 我个人觉得可能是Search函数出了问题，但不知道问题到底出在哪儿，也没有好的解决办法
user-0 提问: c语言malloc申请内存的问题

回复:
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: 可以，你可以认为是int a[10];这样的数组。但是不用的时候需要free掉。

user: user-3
content: 你malloc出来的这个a，不就相当于一个10个整型的数组吗

user: user-4
content: 你自己看手册把 https://zh.cppreference.com/w/c/memory/malloc
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 提问: 奇妙的指针

回复:
user: user-1
content: 我写的 https://blog.csdn.net/BCMY0110/article/details/103437879

user: user-0
content: 引用 1 楼 清晨与猫鱼的回复:你加油把，如果你能不用中文命名.cpp文件就更好了。 好的，谢谢您的提示😊😊

user: user-1
content: 你加油把，如果你能不用中文命名.cpp文件就更好了。
user-0 提问: c语言新生求指导

回复:
user: user-0
content: 这样改吗？ #include <string.h> #include <stdio.h> int main( ){     int a[100],i,j,b[100],n,m,c;       while(scanf("%d%d",&n,&m)==2){  	   for(i=0;i<n;i++) scanf("%d",&a[i]); 	   for(i=0;i<m;i++) scanf("%d",&b[i]);  	   if(n==0) printf("NULL\n"); 	   if(m==0) for(i=0;i<n;i++) printf("%d ",a[i]); 	   c=0; 	   for(i=0;i<n;i++){ 		   for(j=0;j<m;j++){  			  if(a[i]==b[j]) {c++;break;} 			  if(j==m-1) printf("%d ",a[i]);                                      		   } 		   if(c==n) printf("NULL\n");   	   }            printf("\n");  	   }     return 0; }   引用 6 楼 寻开心 的回复:集合的定义是，一个元素在集合当中出现只有一次 你的第二组数据里面显然有重复的 这样做减法的时候，只会去掉一个 比如  0 0 0  结果也应该是null  你应该把他们去重的

user: user-1
content: 集合的定义是，一个元素在集合当中出现只有一次 你的第二组数据里面显然有重复的 这样做减法的时候，只会去掉一个 比如  0 0 0  结果也应该是null  你应该把他们去重的

user: user-0
content: 别沉（尔康手）

user: user-0
content: 害，别沉啊

user: user-0
content: 引用 2 楼 user-2 的回复:输入0 0，是不是该输出NULL？ 感谢你的回复，但上交了后还是60分。

user: user-2
content: 输入0 0，是不是该输出NULL？

user: user-0
content: Sample Input 3 3 1 2 3 1 4 7 3 7 2 5 8 2 3 4 5 6 7 8  Sample Output 2 3  NULL
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: 引用 楼主 qq_45982074的回复:#include<stdio.h> struct stu { 	double num; 	char mane[200]; 	char zuozhe[100]; 	float price;  };  int main()  {  	int n,i,j,e;  	double h;  	struct stu a[100];  	while(scanf("%d",&n)!=EOF)  	{  		j=0;  		for(i=0;i<n;i++)  		{  		scanf("%.0lf",&a[i].num);  	       for(e=0;a[i].mane[e]!='\0';e++)  	       scanf("%c",&a[i].mane[e]);  		scanf("%s %.2f",a[i].zuozhe,&a[i].price);      	}      	scanf("%.0lf",h);      	for(i=0;i<n;i++)      	{      		if(a[i].num==h)      		{      			printf("%.0lf ",a[i].num);      			 for(e=0;a[i].mane[e]!='\0';e++)      			 printf("%c ",a[i].mane[e]);      			printf("%s %.2f\n",a[i].zuozhe,a[i].price);      			j++;      			break; 			 } 		 } 		 if(j==n) 		 printf("No find!");     } } 这个程序为啥会超时啊, Runtime Error:Segmentation fault 不要被刷下去，不要被刷下去
user-0 提问: 求助大佬

回复:
user: user-0
content: 引用 2 楼 寻开心的回复:也有用dfs求解的， 但是方法还是一样的，就是保存每个点的最长路径同时记录到达这个点的上一个点是谁就好了，不必记录完整的路径，否则这个数据就太长了。最后得到最长路径之后，再根据这个上一个点的关系，反向走一遍就有了完整的路径   不解释dp/dfs的算法细节，会就是会，不会自己百度答案吧。 不喜欢搬砖 就是用深度算法，但是看了好多别人做的，都只是把最长路径输出来了，不知道怎么把线路也一起显示出来

user: user-1
content: 也有用dfs求解的， 但是方法还是一样的，就是保存每个点的最长路径同时记录到达这个点的上一个点是谁就好了，不必记录完整的路径，否则这个数据就太长了。最后得到最长路径之后，再根据这个上一个点的关系，反向走一遍就有了完整的路径   不解释dp/dfs的算法细节，会就是会，不会自己百度答案吧。 不喜欢搬砖

user: user-1
content: 如果说的是同一个问题的话，是DP算法求解的      从终点开始向上找的过程当中，更新每个点的最长路径的同时把到这里的相邻的节点也保存起来就好了啊      到达山顶得到最长路径的时候，再沿着这个记录反走一次，就输出结果了
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: 引用 1 楼 寻开心的回复:1 读写两个函数的文件指针如果为NULL的判断处理有问题， 不应该仅仅显示数据，还要直接return，不去执行后面的操作    先确保文件是被正确的打开了    文件确实和执行文件，或者IDE当中指定的执行目录下面，不是打开了其他的文件  2 从目前代码上看不出来问题    你和fprintf并列一个printf，在输出文件的同时，屏幕输出数据， 来同步看看输出的数据是否有问题     如果屏幕输出也有多出来的数据，那就是你的数据有问题     如果屏幕输出没有，而文件有， 那很可能不是这个函数做的文件输出，找其他的地方 谢谢！我采纳了你的意见。此外，输入字符串我把用gets改为用scanf输入，就没有冗余的问题了。

user: user-2
content: 1 读写两个函数的文件指针如果为NULL的判断处理有问题， 不应该仅仅显示数据，还要直接return，不去执行后面的操作    先确保文件是被正确的打开了    文件确实和执行文件，或者IDE当中指定的执行目录下面，不是打开了其他的文件  2 从目前代码上看不出来问题    你和fprintf并列一个printf，在输出文件的同时，屏幕输出数据， 来同步看看输出的数据是否有问题     如果屏幕输出也有多出来的数据，那就是你的数据有问题     如果屏幕输出没有，而文件有， 那很可能不是这个函数做的文件输出，找其他的地方
user-0 提问: 大佬帮助一下这两个C程序怎么做？ 14和15

回复:
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: 厉害  谢谢大佬  感谢感谢

user: user-2
content: 题目简单 但是可以展开讲一点编程小技巧 异或运算有一个很常见的技巧 a^b^b == a ^同一个数字2次 得到结果是本身 0^a == a 所以这里我们可以这样做 定义变量 n 初始化为0 然后 循环遍历数组 每次 n^数组元素 同时 ^循环变量 从0到99 最终 n 就是出现2次的数字

user: user-0
content: 谢谢大佬  这确实都不难  但我太水  感谢感谢

user: user-3
content: 都不难啊， 简单提示： 14题  知道1+2+3+....+99 是多少吧？          把数组里面的这100个数加起来，再减去1+2+3+。。。。+99，就得到结果了 15  8.3253 用%.2f输出是可以得到8.33 ， 其他的同类处理
user-0 提问: if语句的疑惑

回复:
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: 不要回我了，我错了太粗心了
user-0 提问: c语言

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

user: user-2
content: 数组的大小，数组的大小

user: user-3
content: 看一下宏定义就知道了

user: user-3
content: int LEN=(sizeof(country_codes) / sizeof(country_codes[0]));

user: user-4
content: sizeof(country_codes) ： 整个数组大小 sizeof(country_codes[0]))： 数组元素大小 宏定义 ： 文本替换

user: user-5
content: 这个定义是确定数组当中的元素个数 除号之前的代码是计算数组整体占据内存的大小 除号后面是数组元素每一个占据内容的大小
user-0 提问: 为什么在某个测试点有段错误

回复:
user: user-0
content: 不是，我试过把数组长度设的很长，但还是不行

user: user-1
content: scanf("%s %s %c %s %s",ren[i].name,ren[i].birth,&ren[i].sex,ren[i].guhua,ren[i].shouji); 是不是你输入的内容太长了，越界了数组

user: user-2
content: name, birth,guhua、shouji这些成员是数组吧，你为什么给它赋值的时候，没有用下标访问呢？例如name[i]。输入某个结构成员变量，你用该结构体对象去访问该结构体成员，既然那个成员是数组，为什么你只是访问它的首地址呢？即ren[i].name。难道name不是数组吗？你这么赋值ren[i].name和ren[i].name[j]的区别，你有没有想过？？

user: user-0
content: 这是题目 输入在第一行给出正整数N（≤10）；随后N行，每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串；生日按yyyy/mm/dd的格式给出年月日；性别用M表示“男”、F表示“女”；固话和手机均为不超过15位的连续数字，前面有可能出现+。 在通讯录记录输入完成后，最后一行给出正整数K，并且随后给出K个整数，表示要查询的记录编号（从0到N−1顺序编号）。数字间以空格分隔。

user: user-0
content: 引用 4 楼 user-2的回复:scanf后面的这个有问题：ren[i].guhua,ren[i].shouji，因为ren是结构体对象，在访问结构体成员name, birth,guhua、shouji的时候,这些成员又是数组，而且数组的长度不统一，很可能导致问题出现！再者，输入某个结构成员变量，应该指明，而不是整体赋值。 输入变量应指明是什么意思

user: user-2
content: scanf后面的这个有问题：ren[i].guhua,ren[i].shouji，因为ren是结构体对象，在访问结构体成员name, birth,guhua、shouji的时候,这些成员又是数组，而且数组的长度不统一，很可能导致问题出现！再者，输入某个结构成员变量，应该指明，而不是整体赋值。

user: user-1
content: 引用 2 楼 X�Y�J 的回复:不是，我试过把数组长度设的很长，但还是不行  你试试不要一起输入，分开呢，不知道你输入方式有没有问题 scanf("%s", ) scanf("%s", ) ...
user-0 提问: 为什么案件case中会出现未定义标识符求解求解

回复:
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-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: #include <stdio.h> #include<string.h> int main( ) {     char str[33];     scanf("%s", str);     union Value {         int v;         unsigned char c[4];     } value;     int  j=0;     value.v = 0;     for (; j<32; j++) {         value.v<<=1;         if (str[j] =='1' )             value.v |= 1;     }     printf("%d.%d.%d.%d\n", value.c[3], value.c[2], value.c[1], value.c[0]);     return 0; }
user-0 提问: 大佬们，求51单片机擂台小车的源程序

回复:
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-1
content: if(fopen_s(...)||fp==NULL) {错错错！}

user: user-0
content: 引用 2 楼 寻开心的回复:fopen_s()返回0恰好表示是打开成功了， 不是0反而是错的 仔细看看函数帮助吧 那这个，应该是怎么回事啊😥

user: user-0
content: 引用 1 楼 SuperDay的回复:fopen_s判断返回NULL应该是不对的，应该判断fp==NULL 是fp，有错误百度改了后用&fp

user: user-2
content: fopen_s()返回0恰好表示是打开成功了， 不是0反而是错的 仔细看看函数帮助吧

user: user-1
content: fopen_s判断返回NULL应该是不对的，应该判断fp==NULL
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: 不计较顺序 从20循环到30  拆数 组数  计较顺序 从20循环到100 拆数 组数  处理三位数 从10循环到30 拆数 组数  处理四位数

user: user-3
content: 最笨的办法 200-3000循环呗 判断是3位还是4位， 三位比较百位数和个位数是否相同； 四位数比较千位和个位同时比较百位和十位
user-0 提问: 求助 C语言程序设计大一 小问题

回复:
user: user-1
content: 醉了，不知道你学的是c语言还是c++，怎么后缀是cpp

user: user-0
content: 引用 4 楼 qq_45973448的回复:醉了，不知道你学的是c语言还是c++，怎么后缀是cpp 影响很大吗 默认就是. cpp 我们老师说过记得打后缀. c 我老没这习惯 就用默认的了

user: user-0
content: 引用 2 楼 寻开心的回复:double 类型的输入输出用 %lf ，  %f对应的是float类型， 不用弄混了  scanf部分，你输入的是1.23456， 但是因为格式指定错误， 实际到手的x确是0  所以后面什么算法都无效 这样啊 明白了 谢谢你 哈哈😄

user: user-2
content: double 类型的输入输出用 %lf ，  %f对应的是float类型， 不用弄混了  scanf部分，你输入的是1.23456， 但是因为格式指定错误， 实际到手的x确是0  所以后面什么算法都无效

user: user-3
content: int tmp =x * 100 +0.5 double y = tmp /100.p return y
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: 引用 2 楼 寻开心的回复:堆栈溢出 stack overflow 猜测 很可能是别处的死循环之类的缘故造成堆栈被大量占用，运行到这里刚好再次用到堆栈导致溢出， 只看只一小块儿代码无从定位 如果是死循环之类的，可以从调用代码堆栈当中应该可以找到，是哪个环节被无限循环 确实，你说对了，因为我定义了o这个变量，在for循环的条件中写成了0

user: user-2
content: 堆栈溢出 stack overflow 猜测 很可能是别处的死循环之类的缘故造成堆栈被大量占用，运行到这里刚好再次用到堆栈导致溢出， 只看只一小块儿代码无从定位 如果是死循环之类的，可以从调用代码堆栈当中应该可以找到，是哪个环节被无限循环

user: user-0
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: for ( I<=number-1; I>=0; I++ )  I<=number-1 这是一个布尔表达式，结果是0；   此时，i因为前面的for循环的缘故是5，这个循环就相当于是 for （I=5; I>=0; I++). 所以输出了a[5]这个越界的数组内容

user: user-3
content: for(i=number-1;i>=0;i--)
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: 唉，输入后面的有问题，m，i，j三个量的关系没搞清，你去看看m你是怎么用的

user: user-0
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: 又发明了新语法了呗

user: user-3
content: fun test是啥意思呢？

user: user-4
content: 用指针 void test(void *tmp) {   if(tmp) { *((int*)tmp) = 3; } }
user-0 提问: 关于数组的问题

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

user: user-2
content: 引用 2 楼 qq_45946336 的回复:[quote=引用 1 楼 user-2的回复:]来讨论代码的论坛贴图求助我也是长见识了,何况还是旋转过的. 电脑课急着发没注意，不好意思，那个图点开就是正的[/quote] 复制粘贴代码也不费事,另外那个图点开还是倒着的

user: user-0
content: 引用 1 楼 user-2的回复:来讨论代码的论坛贴图求助我也是长见识了,何况还是旋转过的. 电脑课急着发没注意，不好意思，那个图点开就是正的

user: user-2
content: 来讨论代码的论坛贴图求助我也是长见识了,何况还是旋转过的.
user-0 提问: 请问，这道题用函数的递归调用怎么写啊

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

回复:
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: 引用 6 楼 libralibra的回复:一条街造了很多玻璃房子,早都造好了,因为是玻璃的,能看里面是什么东西. 你土豪,花钱找开发商买了10栋,开发商给你10个房本,宣布这10个房子属于你了,里面随便换东西. 第11栋不管有没有房本,你都能看见里面是什么. 其实第11栋不要房本也能看,只要你知道你的10栋在哪里,挨着走过去就能找到.可是如果你换了不属于你的房子里面的东西就犯法了(程序可能出错) 大哥感谢(❁´ω`❁)，看完你的就明白了。我这样的菜鸟很希望有你这样的大佬指点。万分感谢

user: user-2
content: 一条街造了很多玻璃房子,早都造好了,因为是玻璃的,能看里面是什么东西. 你土豪,花钱找开发商买了10栋,开发商给你10个房本,宣布这10个房子属于你了,里面随便换东西. 第11栋不管有没有房本,你都能看见里面是什么. 其实第11栋不要房本也能看,只要你知道你的10栋在哪里,挨着走过去就能找到.可是如果你换了不属于你的房子里面的东西就犯法了(程序可能出错)

user: user-0
content: 引用 1 楼 @矛盾综合体的回复:首先你需要明白，地址一致存在，不管你用没用，就好像硬盘就给你安好了，没有拆掉，他就在那里，这是计算机制作时就定好的，至于你执行这个malloc等语句，只是你告诉计算机，这段内存你在用，然后让一个指针指向这段内存的地址，然后你可以通过这个指针进行操作 运算等。 举个例子：现在有数据恢复这种技术，利用的基础原理就是计算机不会主动删除信息，只会判决用没用，有用就做一个标记。 所以在写链表的时候需要注意内存泄露等安全问题。 多谢大佬解答。万分感谢。感谢

user: user-3
content: C语言不检查数组下标是否越界。

user: user-4
content: a+i 只是一个加法计算而已  和 1+1 没什么区别

user: user-5
content: 是一直不是一致

user: user-5
content: 首先你需要明白，地址一致存在，不管你用没用，就好像硬盘就给你安好了，没有拆掉，他就在那里，这是计算机制作时就定好的，至于你执行这个malloc等语句，只是你告诉计算机，这段内存你在用，然后让一个指针指向这段内存的地址，然后你可以通过这个指针进行操作 运算等。 举个例子：现在有数据恢复这种技术，利用的基础原理就是计算机不会主动删除信息，只会判决用没用，有用就做一个标记。 所以在写链表的时候需要注意内存泄露等安全问题。
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: 第二个for循环，你将r写成了c， for(r=0;c<ROWS;r++)应该是for(r=0;r<ROWS;r++) 而且我想问一下row参数没用的话做什么？完全复制一个二维数组，不论的话，应该将行列都作为参数传递到函数，进行复制，不要用宏 这样你的函数适用性就大大降低，只能拷贝一类数组了。