Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 请问大佬这是为什么啊?

回复:
user: user-0
content: 引用 2 楼 真相重于对错的回复:scanf 参数要求的是地址 类似 int a; scanf("%d",&a); 而不是 scanf("%d",a); 谢谢了，我老是忘了这个，，，

user: user-1
content: scanf 参数要求的是地址 类似 int a; scanf("%d",&a); 而不是 scanf("%d",a);

user: user-2
content: 直接贴代码吧～楼主的问题是输出有误吗？
user-0 提问: 做一个python程序

回复:
user: user-0
content: 引用 2 楼 與蘤舊縐的回复:发哪都一样，最多提供一下思路，又没人会闲的写出来，主要其他论坛人太少 看你自己需求吧，如果只是做个单机版的可以简单一点，甚至可以不分层，做复杂点就按mvc模式分层实现就行了，也不一定需要把所有层都分得清清楚楚 没经验的话就拿张纸画个流程图，一步一步写下去，省的把自己绕晕了 具体函数和方法的问题查文档绝对比来这问快得多 好的，谢谢啦，我知道怎么弄了

user: user-1
content: 发哪都一样，最多提供一下思路，又没人会闲的写出来，主要其他论坛人太少 看你自己需求吧，如果只是做个单机版的可以简单一点，甚至可以不分层，做复杂点就按mvc模式分层实现就行了，也不一定需要把所有层都分得清清楚楚 没经验的话就拿张纸画个流程图，一步一步写下去，省的把自己绕晕了 具体函数和方法的问题查文档绝对比来这问快得多

user: user-2
content: 小伙子，你发错区域了，这里主要是c语言，带点c++，也许碰的python的，不过概率很低，建议去python板块发帖子
user-0 提问: 形式参数和实际参数

回复:
user: user-1
content: 引用 2 楼 自信男孩 的回复:可以同名。因为形参属于自定义函数内的参数，而实参是属于调用函数内的。因此相互不影响。 可以使用全局变量，注意若形参定义的名字和全局变量的名字一样，此时形参是内部变量，不影响全局变量，但是使用形参是内部变量，而非全局的。此时是局部变量屏蔽了全局变量～ 因为形参属于自定义函数内的变量

user: user-1
content: 可以同名。因为形参属于自定义函数内的参数，而实参是属于调用函数内的。因此相互不影响。 可以使用全局变量，注意若形参定义的名字和全局变量的名字一样，此时形参是内部变量，不影响全局变量，但是使用形参是内部变量，而非全局的。此时是局部变量屏蔽了全局变量～

user: user-2
content: 可以同名：1、作用域不一样，不会搞混；2、按参数位置来对应 可以使用合局变量，但是非特殊情况不建议，因为太多全局变量会混乱，就算用全局变量也应该节制，少用。建议想一下为什么针对全局变量会产生其他概念？
user-0 提问: 萌新求助  大佬们帮我看看这题我的代码错哪了，为啥比较不了，输出还是原来的顺序。。。

回复:
user: user-0
content: 引用 10 楼 SuperDay的回复:好吧，继续努力吧。。。 谢谢，继续加油

user: user-1
content: 好吧，继续努力吧。。。

user: user-0
content: 引用 8 楼 qq_45690740的回复:[quote=引用 7 楼 SuperDay的回复:]楼主怕是有什么误会吧？你这个程序是从小到大排序的 ... 我看错了。。。。。[/quote] 抱歉。。。。。。。。。。

user: user-0
content: 引用 7 楼 SuperDay的回复:楼主怕是有什么误会吧？你这个程序是从小到大排序的 ... 我看错了。。。。。

user: user-1
content: 楼主怕是有什么误会吧？你这个程序是从小到大排序的

user: user-0
content: 引用 1 楼 SuperDay 的回复:输入什么，输出什么，发出来看看

user: user-0
content: 引用 2 楼 @大愚@的回复: codeblock..

user: user-0

user: user-2
content: 你用的是啥测试样本？？？

user: user-2

user: user-1
content: 输入什么，输出什么，发出来看看
user-0 提问: 结构数组排序输出问题

回复:
user: user-1
content: 可以，用结构体指针，先让指针指向每个结构体，然后排序时改变结构体指针的值就好了。

user: user-2
content: 自定义sort 排序

user: user-0
content: 引用 4 楼 自信男孩的回复:[quote=引用 3 楼 qq_46029564 的回复:] [quote=引用 2 楼 自信男孩的回复:]可以，用结构体指针，先让指针指向每个结构体，然后排序时改变结构体指针的值就好了。 大佬，求代码，谢谢！！！！[/quote] 代码自己写吧[/quote] 好的，谢谢提示。。。。

user: user-1
content: 引用 3 楼 qq_46029564 的回复:[quote=引用 2 楼 自信男孩的回复:]可以，用结构体指针，先让指针指向每个结构体，然后排序时改变结构体指针的值就好了。 大佬，求代码，谢谢！！！！[/quote] 代码自己写吧

user: user-0
content: 引用 2 楼 自信男孩的回复:可以，用结构体指针，先让指针指向每个结构体，然后排序时改变结构体指针的值就好了。 大佬，求代码，谢谢！！！！
user-0 提问: 为什么会报错？error:fuction definition is not allowed here

回复:
user: user-1
content: C语言不支持函数嵌套定义～

user: user-2
content: 引用 2 楼 拉普拉斯妖 的回复:谢谢，不过我想知道为什么会报错 main()是一个函数，不要在函数中定义函数

user: user-3
content: b*(b-1)才能得到100与100-1乘积，优先级问题 递归函数不要写在main函数里  #include <stdio.h> int sd(int); int main() {     int result,b;     scanf("%d",&b);     result= sd(b);     if(result)     printf("%d与%d-1乘积=%d",b,b,result);     else printf("数值过小");     return 0; } int sd(int b) {     if (b>1)     {         return b*(b - 1);     }     else     {         return 0;     } }

user: user-0
content: 谢谢，不过我想知道为什么会报错

user: user-2
content: 代码写的不错，只是稍微改一下就可以啦！ #include <stdio.h> int sd(int); int main() {  	int ret = sd(100);  	return 0; } int sd(int b) { 	if (b>1) 	{ 		b*b - 1; 		printf("100与100–1的乘积值为%d", b*b - 1); 		return b*b - 1; 	} 	else 	{ 		printf("数值过小"); 		return 0; 	}  } VS2015调试结果
user-0 提问: c语言题目没弄明白为什么是0

回复:
user: user-1
content: 这是什么软件？也想学习学习

user: user-2
content: x等于1， y = 0;所以d *y == 0;

user: user-3
content: 0只是一个没意义的输出  出现其他输出也是合理的

user: user-0
content: 引用 2 楼 user-3的回复:题目错  d是double类型  d*y结果是double类型 不能用 %d 输出 谢谢谢谢谢谢谢谢谢谢谢

user: user-0
content: 引用 1 楼 qq_45882285的回复:定义的y是整型，最后y是等于0的。 谢谢谢谢谢谢谢谢谢谢谢

user: user-3
content: 题目错  d是double类型  d*y结果是double类型 不能用 %d 输出

user: user-0
content: 定义的y是整型，最后y是等于0的。
user-0 提问: 这个诡异的笑脸是怎么回事

回复:
user: user-1
content: #include<stdio.h>  struct data {     char word[5]; }; int main(void) {     int i=0;   struct data mine;     char c;     while((c=getchar())!='\n'&&i<5)     {         mine.word[i]=c;         printf("%c",mine.word[i]);         i++;     }     return 0; } 供参考～  出现笑脸是正常的，因为楼主缺少一个括号，c的取值只会是0,1；应该说只有最后一个是0，前几个输入得到都是1.

user: user-0
content: 引用 1 楼 自信男孩的回复:#include<stdio.h>  struct data {     char word[5]; }; int main(void) {     int i=0;   struct data mine;     char c;     while((c=getchar())!='\n'&&i<5)     {         mine.word[i]=c;         printf("%c",mine.word[i]);         i++;     }     return 0; } 供参考～  出现笑脸是正常的，因为楼主缺少一个括号，c的取值只会是0,1；应该说只有最后一个是0，前几个输入得到都是1. Thank you
user-0 提问: 请大神帮忙看一看

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:指针变量就是一个32位的整数，区别于int类型的是，它这个整数是一个地址，而这个地址代表着一个内存的位置，通过星号*来引用到这个内存，而其它情况下，它的表现跟其它类型的变量类似。int *p=0;是将指针变量p初始化到内存0的位置，而这个0地址的内存是系统保留的空间，应用程序不能访问，所以一般用0来表示无效地址。p+6实际上是把p加上24，为什么？因为p是int*类型指针，int一个单位占4个字节，6个单位就是24个字节，因为所以如此。 感谢大大~明白了明白了

user: user-1
content: 指针变量就是一个32位的整数，区别于int类型的是，它这个整数是一个地址，而这个地址代表着一个内存的位置，通过星号*来引用到这个内存，而其它情况下，它的表现跟其它类型的变量类似。int *p=0;是将指针变量p初始化到内存0的位置，而这个0地址的内存是系统保留的空间，应用程序不能访问，所以一般用0来表示无效地址。p+6实际上是把p加上24，为什么？因为p是int*类型指针，int一个单位占4个字节，6个单位就是24个字节，因为所以如此。
user-0 提问: C语言指针指向二维数组输出错误，救救孩子吧(´×ω×`)

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

user: user-0
content: 引用 1 楼 寻开心的回复:void Transpose(int *a, int n, int len) {     int i,j;     for(i=0;i<n;i++)     {         for(j=0;j<n;j++)         {             printf("%d ", *(a+i*len+j)); // 不用len参数就把这里写死 *(a + i*10 + j)         }         printf("\n");     } }  mainn函数里面，如下方法调用 Transpose(&stra[0][0],  n, 10）  原因是数组大小实际上是10*10的， 所以第i行第j列第位置。10*i + j，   n只是表示使用了左上角的n*n大小 感谢感谢(❁´ω`❁)

user: user-2
content: void Transpose(int *a, int n, int len) {     int i,j;     for(i=0;i<n;i++)     {         for(j=0;j<n;j++)         {             printf("%d ", *(a+i*len+j)); // 不用len参数就把这里写死 *(a + i*10 + j)         }         printf("\n");     } }  mainn函数里面，如下方法调用 Transpose(&stra[0][0],  n, 10）  原因是数组大小实际上是10*10的， 所以第i行第j列第位置。10*i + j，   n只是表示使用了左上角的n*n大小
user-0 提问: 求大佬解救

回复:
user: user-1
content: 用vs2019吧，这种错误vs直接帮你高亮定位所在位置

user: user-0
content: 引用 1 楼 user-2的回复:main后面少了一对括号() 啊，谢谢谢谢，我可能是个傻子

user: user-2
content: main后面少了一对括号()
user-0 提问: if语句判定问题

回复:
user: user-1
content: 不成立， 因为这个表达式是从左侧到右侧执行的  第一个if是这样执行的  5 >4 成立，所以结果是1。  1>3 不成立， 所以printf不了  （intA > intB > intC） 不等于 （ intA>intB && intB>intC）
user-0 提问: 需要解题思路及代码c语言

回复:
user: user-1
content: 4个2进制位，组成0到15这16个数  每一个二进制位对应一个操作符的位置， 1代表加号 ， 0代表减号 0000 表示所有的操作符都是件好，1111表示所有操作符都是加号 1010 表示第一第三操作符是加号，第二第四操作符是减号 穷举所有的可能就好了  类似的，你可以把乘除引入进来，那就要把位数扩大一倍， 8位二进制数，一共256种状态了 不过由于那就要考虑到运算符优先级的问题了，会更复杂一些

user: user-1
content: 就加减两个操作符，总共4个位置， 无非16种情况，一个循环就可以  iint x;     for ( x=0; x<16; x++ )  {        int v = 123; char c1, c2, c3, c4;        c1 = x & 8 ? '+' : '-';        if ( x & 8 )  v +=  45; else v -= 45;        c2 = x & 4 ? '+' : '-';        if ( x &4 )  v += 67; else v -= 67;       c3 = x & 2 ? '+' : '-';        if ( x & 2)  v+= 8; else v -= 8;       c4 = x & 1 ? '+' :  '-';        if ( x & 1)  v+= 9; else v -= 9;        if ( v == 100 ) {           printf("123%c45%c67%c8%c9=100\n", c1, c2, c3, c4);           return 0;        }     }     printf 打印不可能
user-0 提问: 指针数组名地址真不是东西

回复:
user: user-1
content: 建议编写一些小程序，通过一些调试打印验证你的理论。实践更能加深你的理解，也更能验证你的理解～ 建议多动手～

user: user-2
content: 还可以进一步来说明  用sizeof（一位数组名） 和 sizeof（指针首地址） 去比较      int arry[10], *p = array;   // sizeof(array)   <> sizeof(p)  二维数组那里，也可以用sizeof那几个不同的指针来说明+1， 具体让指针的值增加了多少    int array[5][10]    sizeof(array).             vs. &array + 1                vs.   %p 格式输出 +1 前后的地址对比    sizeof( array[1] ).       vs  &array[1] + 1            vs    sizeof ( array[1][1]).   vs  &array[1][1]+1          vs
user-0 提问: 求助谢谢

回复:
user: user-1
content: #include <stdio.h> #include<string.h>  void fun(char str[],char ch) { char *p; int length = strlen(str); int i = length; int j; p = str+length-1; while(p >= str) { i--; if(*p == ch) { if(i == length-1) str[i] = '\0'; else for(j = i;j < length-1;j++) str[j] = str[j+1]; length--; } p--; } str[length] = '\0'; }  int main() { int i; char str[100]={"abcdefghijklnmopqrstuvwxyz1234567890"}; char ch[]={"abcd1234"}; for(i=0; i<strlen(ch); i++) fun(str,ch[i]); printf("删除字符后的字符串:\n%s\n",str); return 0; }

user: user-2
content: 问题太多， 尽量在保持你的代码不变的基础上修改如下： #include<stdio.h> #define N 100 void del(char* p, char* ch)  {     char * s = p;     for(; *p!='\0'; p++) {         char *q = ch;         while(*q!='\0')             if(*p==*q) break; else q++;         if (*q == '\0' ) *s++ = *p;     }     *s='\0'; } int main() {     char a[N]={"abcdefghijklnmopqrstuvwxyz1234567890"};     char ch[]={"abcd1234"};     del(a,ch);     puts(a);     return 0; }
user-0 提问: 函数名与函数指针

回复:
user: user-1
content: 函数名在汇编里面本身就是指针，调用函数调用的也是指针，所以说（*MyFun）(10)为了方便才MyFun(10)这样写是不合适的 （*MyFun）和MyFun完全是不同的物理意思，
user-0 提问: 求回复

回复:
user: user-1
content: 抱歉， 没有仔细看题目 那个答案是有问题的，  ^是异或运算符   *的优先级是高于^运算符的 第一次进来。i = 2 * 2 ^2  = 4 ^ 2 = 6.              //  0100 ^ 0010 = 0110 = 6 第二次进来， i = 7* 2 ^7 = 14 ^ 7 =  9             //  1110 ^ 0111 =  1001 = 9  第三次进来。 i = 10 * 2 ^ 10 = 20 ^ 10 = 30    //  10100 ^01010 = 11110 = 30

user: user-0
content: 不懂为什么等于4，我听懂了下面那个

user: user-1
content: 答案解释的很清楚为什么二，不明白就再多读一遍，或者写成代码，自己跑一次   后面的那个题目，记住#define的作用是替换 NUM替换成 2*M+1，  把M替换成N+1，就是 2*N+1+1 = 2*N+2； 再替换N为2， 就是 2*2+2 = 6；  for(I=1; I<=NUM; I++) NUM是6， 所以就是6次循环
user-0 提问: 为什么会报错？是编码问题吗？

回复:
user: user-1
content: 注意中英文的区别，代码编写需要都是英文的～

user: user-2
content: 逻辑上就存在问题，只要c大于20就会跳出，进不去下面的判断语句。你的程序五处报错，应该是在每次输出的结束括号上，用了中文括号？

user: user-3
content: 中文括号？？？？？？
user-0 提问: 求助 c语言 高级分书问题

回复:
user: user-0
content: 没错RUC19级 不会大作业的C语言萌新

user: user-1
content: RUC？？？？

user: user-2
content: 建立一个50*50对数组，用来记录输入的数据 建立一个50长度的状态数组，记录当前状态 dfs深度搜索， 在状态数组当中记录当前状态， 在50*50的记录数组当中搜索下一个匹配的数值（自然形成字典顺序） 典型的深度搜索例子，代码自己写吧
user-0 提问: C语言

回复:
user: user-0
content: 就是这个问题，哇 谢谢您。又是这么细小的错误，我会向您说的那样改进的

user: user-1
content: scanf 需要的是一个地址， 而你传递给它的是数值 for(ii=0;ii<T;ii++)     {         scanf("%d", *(p1+ii));  // p1+ii就是地址了，  再加上*就成为了值了         int *p3=(p1+ii);         for(i=0;i<*(p1+ii);i++)             scanf("%d",*(p2+i)); // 同样的问题         t[ii]=shuru(p3,p2);     }  就算法本身来说，没有必要把数据都读入数组的， 只是找到一个序列里面的最大值，边读边比较就可以了  先把输入的问题解决， 其他的自己先解决， 还有问题再继续贴图吧
user-0 提问: 为什么第一个图片里面def还存在，第二个里面ic没有 大神请教一下

回复:
user: user-1
content: a[0]='A' a[1]='B' a[2]='C' a[3]='\0'a[4]='e' a[5]='f '.所以第一个是f，第二题同理，i被e替换了 ，c被\0替换了。

user: user-2
content: ABC总共是3个字符，strcpy复制了ABC加上一个'\0'，总共4个字符，后面的ef都在
user-0 提问: 用C语言编辑

回复:
user: user-1
content: 班级里面有9个学生， 每人上五门课 写一个程序用三个函数实现下列功能： 1 计算每门课的平均成绩 2 找到2门以上不及格的所有学生，输出学号，姓名和平均分 3 找到平均分90以上或则会所有课程分数都在85以上的所有学生，输出他们的学号和名字  都是基础功能， 自己写吧， 遇到问题再贴代码提问
user-0 提问: c语言新生求指教

回复:
user: user-1
content: #include<stdio.h> int main() {     float x1,y1,x2,y2,x3,y3,x4,y4;     while(scanf("%f%f%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)!=EOF) {         float u1, u2, v1, v2;         u1 = min ( max(x1,x2), max(x3,x4));         v1 = min ( max(y1,y2), max(y3,y4));         u2 = max ( min(x1,x2), min(x3,x4));         v2 = max ( min(y1,y2), min(y3,y4));         if ( u1<u2 || v1<v2 )             printf("0\n");         else             printf("%.2f\n", (u2-u1)*(v2-v1));     }     return 0; }

user: user-2
content: 是只输入8个数字，while循环不合适吧。
user-0 提问: 指针应用程序设计——AT指令

回复:
user: user-1
content: 引用 1 楼 <span style="color:#4788C7">寻开心</span>的回复:基础的指针操作啊  自己写吧<br />大佬，来露一手

user: user-2
content: 基础的指针操作啊  自己写吧
user-0 提问: 麻烦大神看看为什么这个调用函数会进行不下去呢

回复:
user: user-1
content: 引用 6 楼 mr.hman的回复:[quote=引用 5 楼 weixin_46021057 的回复：][quote=引用 4 楼 mr.hman的回复:][quote=引用 3 楼 寻开心 的回复:] while(i<=a){         amount1=amount1+sum1;         sum1=sum1+2*pow(10,i);      } 在循环体里面i也没有变， a也没有变， 你这是闹哪样儿？ 怎么可能退的出循环呢？ 死在这儿了呗明白了 感谢[/quote] 我也是萌新   是不是  ==与=    一个是赋值 一个是等于  这个问题导致的？[/quote]不是呢 这个是需要赋值运算的 程序问题出现在i和a没有变，使得这个循环无限循环出不来，我是漏了i++ [/quote] 学到了  谢谢     加油

user: user-0
content: 引用 5 楼 weixin_46021057 的回复：[quote=引用 4 楼 mr.hman的回复:][quote=引用 3 楼 寻开心 的回复:] while(i<=a){         amount1=amount1+sum1;         sum1=sum1+2*pow(10,i);      } 在循环体里面i也没有变， a也没有变， 你这是闹哪样儿？ 怎么可能退的出循环呢？ 死在这儿了呗明白了 感谢[/quote] 我也是萌新   是不是  ==与=    一个是赋值 一个是等于  这个问题导致的？[/quote]不是呢 这个是需要赋值运算的 程序问题出现在i和a没有变，使得这个循环无限循环出不来，我是漏了i++

user: user-1
content: 引用 4 楼 mr.hman的回复:[quote=引用 3 楼 寻开心 的回复:] while(i<=a){         amount1=amount1+sum1;         sum1=sum1+2*pow(10,i);      } 在循环体里面i也没有变， a也没有变， 你这是闹哪样儿？ 怎么可能退的出循环呢？ 死在这儿了呗明白了 感谢[/quote] 我也是萌新   是不是  ==与=    一个是赋值 一个是等于  这个问题导致的？

user: user-2
content: 你的count函数里面返回值是0

user: user-0
content: 引用 3 楼 寻开心 的回复:while(i<=a){         amount1=amount1+sum1;         sum1=sum1+2*pow(10,i);      } 在循环体里面i也没有变， a也没有变， 你这是闹哪样儿？ 怎么可能退的出循环呢？ 死在这儿了呗明白了 感谢

user: user-3
content: while(i<=a){         amount1=amount1+sum1;         sum1=sum1+2*pow(10,i);      } 在循环体里面i也没有变， a也没有变， 你这是闹哪样儿？ 怎么可能退的出循环呢？ 死在这儿了呗

user: user-0
content: 引用 1 楼 qq_46016136 的回复:你的count函数里面返回值是0 我改成amount1也不行
user-0 提问: 求设计思想！！考试用 但是不知道怎么表达谢谢谢

回复:
user: user-1
content: int main() {     int n = 5;     int row = 1, col=0;  // row是行， col是列     for(row=1; row<=n; row++ ) {         for ( col =1; col<row; col++ ) printf(" ") // 每行前面有row-1个空格         for ( ; col<n; col++) printf("%d", col);   //  空格之后的字符是正序从row-1到n         for ( ; col>=row; col--) printf("%d", col); // 逆序，从n-1到row         printf("\n");     };  return 0;  } 10 12345678910987654321  // row=1 col从1到10再从10到1  234567891098765432     // row=2 col从2到10再从10到2   3456789109876543        // row=3 col从3到10再从10到3    45678910987654     567891098765      6789109876       78910987        891098         9109          10
user-0 提问: 只能输出一种情况

回复:
user: user-1
content: 建议直接贴代码吧～

user: user-2
content: 哪有VC2019这个称呼，只有VS20xx  引用 1 楼 遇见女神 的回复:n=n/10  另外建议使用vc2019

user: user-3
content: 应该是n/=10;而不是n/10;

user: user-4
content: n=n/10  另外建议使用vc2019

user: user-4
content: 引用 4 楼 ccccslt 的回复：[quote=引用 1 楼 遇见女神的回复:]n=n/10  另外建议使用vc2019 主要是刚学，都统一用的这个，还是谢谢了[/quote]老师规定统一用这个？

user: user-0
content: 引用 1 楼 遇见女神的回复:n=n/10  另外建议使用vc2019 主要是刚学，都统一用的这个，还是谢谢了

user: user-0
content: 引用 1 楼 遇见女神的回复:n=n/10  另外建议使用vc2019 谢谢，不仔细还是很谢谢了
user-0 提问: 本人c语言小白，不明白第二个数组为什么总是多输出一个2，求各位大佬赐教。

回复:
user: user-1
content: 因为2还在s数组中。 第一次输出前，s数组内容是112； 第二次输出前，s数组内容是352。

user: user-0
content: 补充题目要求
user-0 提问: 求指导一下c语言中的指针

回复:
user: user-1
content: 因为数组是个连续的内存空间知道数组的首地址就知道数组中其他元素了，指针现在只想数组首地址只要移动指针就可以访问数组中其他元素，就好像小明，小红，小刚是一家人，他们三个就构成了数组，指针不就是地址吗，如果你知道小明家的地址了那还不能找到其他两个人吗？？？嘻嘻我说这样理解的希望对你有帮助

user: user-2
content: 数组其实也算是指针，数组也表示地址； p=a -->相当于p指向a[0] ，对*(p + i)来说就是向后指移i位； 上面大神解释很清楚，我也小白来讨论下

user: user-3
content: 这个问题和指针倒是没什么关系，主要涉及到的是数组

user: user-4
content: 你说的没错， p = a; 确实是把数组a的首地址赋值给了指针p，但是需要注意的是不是a[0]，而是&a[0]才表示数组的首地址。 用VS2015调试，你可以看到a（即数组a的首地址）和p的值。  从上图可以看到，a的首地址给了指针变量p 但是，*(p + i)的含义是将p的值即0x00d8f9b0进行相应的位移，此时每次移动4个字节，得到的是 0x00d8f9b4、0x00d8f9b8、0x00d8f9bc和0x00d8f9c0,分别是1、2、3、4  对于为什么每次移动4个字节，请参考《C++中对数组名的运算》 希望能够帮到你

user: user-5
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=1;i<=N;i++)//计数还有几个猴子存在         {             if (a[i]==0) count++; // 第一次count++后，count就是1，满足了下面的那一行  if (count==1) n=0;  // 只要a当中有一个0， 这个条件就因上一行的情况而必然成立         }  应该把if（count==1） n=0； 这句放到这个for循环的外面
user-0 提问: c语言：如何将下列代码改成按二进制方式读写的

回复:
user: user-0
content: 引用 1 楼 非弋 的回复：你想表达的是：需要以二级制的方式读取文件内容？ FILE *fp = fopen("1.txt","rb");多谢了，我以为还要使用fread 那些的呢

user: user-0
content: 引用 1 楼 非弋 的回复：你想表达的是：需要以二级制的方式读取文件内容？ FILE *fp = fopen("1.txt","rb");这样就行了吗？

user: user-1
content: 你想表达的是：需要以二级制的方式读取文件内容？ FILE *fp = fopen("1.txt","rb");
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: 请看源码 ...
user-0 提问: 输入一个动物名称并输出数量，没有就输出“0”。我的程序哪里有错吗？

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

user: user-2
content: ==1？用true不好吗。你代码还会重复输出数量为0

user: user-3
content: 两个字符串内容一样时，strcmp返回值为0
user-0 提问: 如何清除许多个圆形中的特定一个

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 关于用二级指针和动态分配内存的方法解决冒泡排序字符串的问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 求大佬，链表指针为null的问题

回复:
user: user-0
content: 谢谢，已经解决了，其实还有一个问题，就是在输入中每次更新了n，而在第二个循环里，n是链表尾的n。应该在输入时把n放进每个节点里，以方便访问

user: user-1
content: #include<stdio.h> #include<string.h> #include<stdlib.h>  int n; struct num{     struct num *p;     int a[]; };  struct num k; int ok(struct num *);  int main() {     int t;     scanf("%d",&t);     struct num *beg,*pr, *pre;     //beg=&k;pr=&k;     for(int i=0;i<t;i++){         scanf("%d",&n);         if(i==0) {             pr=(struct num *)malloc(sizeof(struct num)+n*n*sizeof(int));             beg = pr;         }         else{             pr->p=(struct num *)malloc(sizeof(struct num)+n*n*sizeof(int));             pr=pr->p;         }         for(int i=0;i<n;i++)             for(int j=0;j<n;j++){                 scanf("%d",&pr->a[i*n+j]);                 getchar();             }     }     pr->p=NULL;     //int i;     for(pr=beg;pr;){         if(ok(pr)){             puts("YES");         }         else{             puts("NO");             //free(pr->a);         }         pre = pr;         pr = pr->p;         free(pre);     }     return 0; } int ok(struct num *pr) {     int y=1;     for(int i=1;i<n;i++)         for(int j=0;j<i;j++)             if(pr->a[i*n+j]!=0) {                 y=0;                 break;             }     if(y)         return 1;     else         return 0; } 供参考～  beg其实并没有指向链表的头，而是指向了k。因此在最后的循环里，pr指向beg会导致段错误；

user: user-0
content: 引用 5 楼 章泽琨的回复:[quote=引用 4 楼 章泽琨的回复:]我把 pr=&k;         删除，这样pr就为num结构开辟了储存空间 但这个pr是指向k的吗？ 已测试，仍然是这样 编译时有一条警告，说在pr=pr->p中pr没有初始化，  好了，我知道啦，要用beg指向pr开辟的空间 在这里面结构变量k没用上[/quote] 这里面free也有点问题，清除的是上一个节点的空间，而不是a。在运行时，只有第一次完全正确，后面几次内存访问出了问题，要用另一个指针做删除

user: user-0
content: 引用 4 楼 章泽琨的回复:我把 pr=&k;         删除，这样pr就为num结构开辟了储存空间 但这个pr是指向k的吗？ 已测试，仍然是这样 编译时有一条警告，说在pr=pr->p中pr没有初始化，  好了，我知道啦，要用beg指向pr开辟的空间 在这里面结构变量k没用上

user: user-0
content: 我把 pr=&k;         删除，这样pr就为num结构开辟了储存空间 但这个pr是指向k的吗？ 已测试，仍然是这样 编译时有一条警告，说在pr=pr->p中pr没有初始化，  好了，我知道啦，要用beg指向pr开辟的空间

user: user-2
content: 我觉得问题是不是这样的：  struct num *beg, *pr; beg=&k;      // beg是k的地址 pr=&k;         .... if(i==0){ pr = (struct num *)malloc(sizeof(struct num)+n*n*sizeof(int));   // pr重新开空间，不再指向k的地址，现在的pr才是链表头 }

user: user-0
content: 引用 1 楼 非弋 的回复:pr->p=NULL;        // pr->p为NULL int i; for(pr=beg; pr; pr=pr->p){      // 执行一次后， pr = pr->p,  pr = NULL 	if(ok(pr)){ 		puts("YES"); 		free(pr->a); 	} 	else{ 		puts("NO"); 		free(pr->a); 	} }  可是我把pr指向头指针了啊，pr->p=NULL;这一步是链表尾为null

user: user-2
content: pr->p=NULL;        // pr->p为NULL int i; for(pr=beg; pr; pr=pr->p){      // 执行一次后， pr = pr->p,  pr = NULL 	if(ok(pr)){ 		puts("YES"); 		free(pr->a); 	} 	else{ 		puts("NO"); 		free(pr->a); 	} }
user-0 提问: if语句问题

回复:
user: user-0
content: 引用 3 楼 @大愚@的回复:在C语言中0表示假非零为真，你的if语句1 % 2 一直都等于1都为真一直都会执行if语句而且你的else，只能控制continue不能控制打印#号的语句所以你循环多少次就有几个* # 哦，我打错了，应该是i%2的

user: user-1
content: 在C语言中0表示假非零为真，你的if语句1 % 2 一直都等于1都为真一直都会执行if语句而且你的else，只能控制continue不能控制打印#号的语句所以你循环多少次就有几个* #

user: user-2
content: 提示 1%2 =1

user: user-3
content: if 一%二?????
user-0 提问: php

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

user: user-2
content: 发错地方了？自己去百度一下吧
user-0 提问: 一个成绩管理系统界面，但我不知道错误在哪

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

user: user-0
content: 谁能帮忙修改一下么
user-0 提问: CreateFont如何设置可使文字边缘的虚影消失？

回复:
user: user-1
content: fdwQuality 参数试试 NONANTIALIASED_QUALITY 无抗锯齿模式看看

user: user-0
content: 引用 1 楼 user-1 的回复:fdwQuality 参数试试 NONANTIALIASED_QUALITY 无抗锯齿模式看看 给力！ 我把倒数3、4、5三个参数的所有值的组合测试了一遍，只有NONANTIALIASED_QUALITY可以消除虚影
user-0 提问: 求大佬帮忙看看，为什么输出和输入的顺序是一样的，大小并没有发生变化

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

user: user-2
content: 1、没有必要定义两个swap函数， 2、没有必要定义变量P1,P2,P3,直接使用&a,&b,&c做为参数。 3、按你的理解调用swap1(p1,p2);

user: user-0
content: 噢噢，调用用函数要怎么操作。。

user: user-3
content: 这个只是声明函数，并不是调用函数
user-0 提问: 一个oj上字母转化为数字的C语言题

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

user: user-0
content: 引用 1 楼 早打大打打核战争的回复: #include <stdio.h>  int main() {   char c, x[] = "01230120022455012623010202";   int t, p = 0;    scanf("%d\n", &t);   while (~(c = getchar()))     c > 64 && c < 91 ? (c = x[c - 65] - 48) ? c - p ?        putchar((p = c) + 48) : 0 : p = 0 : putchar(c);    return 0; }  没看懂大神写的代码，

user: user-2
content: #include <stdio.h>  int main() {   char c, x[] = "01230120022455012623010202";   int t, p = 0;    scanf("%d\n", &t);   while (~(c = getchar()))     c > 64 && c < 91 ? (c = x[c - 65] - 48) ? c - p ?        putchar((p = c) + 48) : 0 : p = 0 : putchar(c);    return 0; }
user-0 提问: 求问c语言怎么设计服务端

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

user: user-0
content: ddddddd
user-0 提问: 再次问个问题。

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

user: user-2
content: 第一个空就应该是sum =  *p-'0' 初始化成为第一个数 或者sum=str[0]-'0'
user-0 提问: C语言图像处理转置和统计灰度值

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: C语言 i！=j！=k有什么错误

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

user: user-2
content: 问题本身不成立

user: user-2
content: 没有任何错误

user: user-3
content: 没有为什么，这是C语言语法定义成这样的。规定就是这样的。  可以写成：  i != j && i != k

user: user-4
content: 肯定不对啊，（i!=j）的值为true或者false，转化int也就是1或0，也就是你用1或0和k相比肯定会有一定的问题

user: user-5
content: c!=j!=k  没有语法错误，但是执行的顺序是这样的 按照c语言规则会如何执行，首先 j!=k  结果是0或者1，放到一个临时变量里面 再执行   c!= 刚才的临时变量 这和你要的本意就完全不同了  语法没错，算法不对
user-0 提问: c语言 这个输出得什么啊

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

user: 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: 引用 2 楼 qq_45880332的回复:[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: user-2
content: 引用 2 楼 ²⁰¹⁹₀₉.₀₁清梦 的回复:少& 真是看不懂typedef struct 后面还跟个英文 不要少见多怪。这样定义没问题，建议多学一些“新的”用法。  没看到哪里少&

user: user-3
content: 少& 真是看不懂typedef struct 后面还跟个英文

user: user-2
content: if (k != i)这个语句块放到第二层循环外，第一层循环内。试一下～  注意是把if (k != i)这个语句块都放到第二层的循环外，你把它放到第二层循环里了。
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: 函数调用和函数生命，已经函数定义的区别，建议楼主找一下； swap函数用一个就好了，另一个删除掉或注释掉～

user: user-0
content: 引用 2 楼 ²⁰¹⁹₀₉.₀₁清梦的回复:[quote=引用 1 楼 ²⁰¹⁹₀₉.₀₁清梦的回复:]未定义函数，要么定义函数，要么把你写的函数都放到main函数前面。 还有，swap写一个函数就够了，不能重复同个函数[/quote] 怎么写。。。。。

user: user-3
content: 引用 1 楼 ²⁰¹⁹₀₉.₀₁清梦的回复:未定义函数，要么定义函数，要么把你写的函数都放到main函数前面。 还有，swap写一个函数就够了，不能重复同个函数

user: user-3
content: 未定义函数，要么定义函数，要么把你写的函数都放到main函数前面。
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: 我觉得这个要实现起来比较复杂，可能需要调用getchar获取每个字符，能过判断空格来判断输入了多少个数字，再进行换行处理，但是这种情况下得到的就是数字字符串，需要自己把数字字符串转换成数字。  可能还有更好的方法。

user: user-0
content: 引用 1 楼 user-4的回复:设置一个计数值，到6就输出一个换行 我也这么想，但就是具体不太会操作

user: user-0
content: 引用 2 楼 青衫鸽子全的回复:C语法有点忘了，你这里逻辑有点问题。i<5不是i<=5 ，j也是一样地址就不对 C语法有点忘了，你这里逻辑有点问题。i<5不是i<=5 ，j也是一样地址就不对[/quote] 哦哦，好的，谢谢，是有点问题

user: user-3
content: C语法有点忘了，你这里逻辑有点问题。i<5不是i<=5 ，j也是一样地址就不对

user: user-4
content: 设置一个计数值，到6就输出一个换行
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: 好嘞！解决了，非常感谢～ 不过还有个问题，那个fgets要怎么用呀？不能把文件的东西读出到数组？我用的时候它一直报错，文件和数组好像说类型不一样？然后我是用循环fscanf做的，感觉有点麻烦

user: user-2
content: 不会文件读写看书去 算法本身没有什么， 头两个数做乘法 ，例子3*2， 就知道了剩下两个矩阵都是6个数 把他们读到两个数组（长度为3*2，一维的就可以，无需做成二维的） 里面， 分别命名为A【】，B【】 做个循环，把A[i]+B[i]计算出来并写到新的文件里面就好了  根本就不用管矩阵是3*2，还是2*3， 还是6*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: user-2
content: #include<stdio.h> #include<string.h> /*键盘中输入一个数表示要输入的行政区域的个数,再根据个数输入相应的数据   如   4   武汉 027   宜昌 0717   北京 010   上海 021   则输出结果为   武汉-027#宜昌-0717#北京-010#上海-020   */ int main() { #if 1     //long long int i;     //long long int j=0;//j用于储存回车的个数     int i, j;     int ch, num;     char s[1024];     //输入     scanf("%d", &num);     getchar(); //for '\n'      i = j = 0;     while(j < num)     {         ch = getchar();          if(ch == '\n')             j++;         s[i++] = ch;     }      for(j = 0; j < i-1;  j++)     {         if(s[j]==' ')             printf("-");         else if (s[j]=='\n')             printf("#");         else             printf("%c",s[j]);     }     putchar(s[j]); #else      char city[16];     char no[16];     char dst[128];     int i;     int num, len, pos;      scanf("%d", &num);      i = 0;     len = pos = 0;     while (i < num) {         scanf("%s %s", city, no);         if (pos)             snprintf(dst+pos, 128-pos, "#%s-%s", city, no);         else             snprintf(dst+pos, 128-pos, "%s-%s", city, no);         len = strlen(dst+pos);         pos += len;         i++;     }     puts(dst); #endif     return 0; } 字符数组没有'\0'怎么能成为字符串，又怎么能用strlen。提示的越界是指字符数组越界了，而非i, j越界～

user: user-2
content: #include<stdio.h> #include<string.h> /*键盘中输入一个数表示要输入的行政区域的个数,再根据个数输入相应的数据   如   4   武汉 027   宜昌 0717   北京 010   上海 021   则输出结果为   武汉-027#宜昌-0717#北京-010#上海-020   */ int main() {/*     long long int i;     long long int j=0;//j用于储存回车的个数     char ch;     char s[1024];     //输入     scanf("%lld",&i);     i=0;     while(j!=5)     {         ch=getchar();         s[i++]=ch;         if(ch=='\n')  j++;     }     for(i=1; i<strlen(s)-1; i++)     {         if(s[i]==' ')  printf("-");         else if (s[i]=='\n')  printf("#");         else printf("%c",s[i]);     }     */      char city[16];     char no[16];     char dst[128];     int i;     int num, len, pos;      scanf("%d", &num);      i = 0;     len = pos = 0;     while (i < num) {         scanf("%s %s", city, no);         if (pos)             snprintf(dst+pos, 128-pos, "#%s-%s", city, no);         else             snprintf(dst+pos, 128-pos, "%s-%s", city, no);         len = strlen(dst+pos);         pos += len;         i++;     }     puts(dst);      return 0; } 供参考～   越界不是i, j的问题，而是

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-0 提问: 小白求解问题

回复:
user: user-1
content: 所以指针变量不是地址咯 多简单

user: user-2
content: 引用 4 楼 qq_46001652 的回复:[quote=引用 2 楼 user-2的回复:]指针变量指的是这个变量分配的内存中保存的是个地址，本身他也是个变量，当然可以赋值了 假如 int *p=0; p分配在了  0x400004 那这个地址中保存的就是0,p=XXXX,就相当于0x400004这个地址保存了XXXX,*p就相当于*(XXXX)读取XXXX地址的值 赋值后是不是就失去变量m的地址了呢大佬。[/quote] 那当然了，重新赋值就改变了他的内容了

user: user-0
content: 引用 2 楼 user-2的回复:指针变量指的是这个变量分配的内存中保存的是个地址，本身他也是个变量，当然可以赋值了 假如 int *p=0; p分配在了  0x400004 那这个地址中保存的就是0,p=XXXX,就相当于0x400004这个地址保存了XXXX,*p就相当于*(XXXX)读取XXXX地址的值 赋值后是不是就失去变量m的地址了呢大佬。

user: user-0
content: 引用 2 楼 user-2的回复:指针变量指的是这个变量分配的内存中保存的是个地址，本身他也是个变量，当然可以赋值了 假如 int *p=0; p分配在了  0x400004 那这个地址中保存的就是0,p=XXXX,就相当于0x400004这个地址保存了XXXX,*p就相当于*(XXXX)读取XXXX地址的值 那么int *p=&a,就是相当于把变量a的地址存到指针p的地址里面嘛，赋值的情况下就是相当于这个指针p没有指向别的变量，还是保持指向自己的内存空间嘛。

user: user-2
content: 指针变量指的是这个变量分配的内存中保存的是个地址，本身他也是个变量，当然可以赋值了 假如 int *p=0; p分配在了  0x400004 那这个地址中保存的就是0,p=XXXX,就相当于0x400004这个地址保存了XXXX,*p就相当于*(XXXX)读取XXXX地址的值

user: user-0
content: 引用 楼主 qq_46001652的回复:指针变量本身不是内存地址嘛，为什么可以赋值？ 前面的代码 #include<stdio.h> int *fun(int *p, int *q); int main() {
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: int main(){     int d,i,j,n,x1,y1,x2,y2,a[100][100];     int sum=0;     for(i=0;i<100;++i){         for(j=0;j<100;++j)             a[i][j]=0;     }     scanf("%d",&n);     for(d=0;d<n;++d){         scanf("%d %d %d %d",&x1,&y1,&x2,&y2);         for(i=x1;i<x2;++i){             for(j=y1;j<y2;++j)                 a[i][j] = 1;         }     }     for(i=0;i<100;++i){         for (j=0;j<100; ++j) {             sum += a[i][j];         }     }     printf("%d",sum);     return 0; }
user-0 提问: 程序运行无结果，求指教

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

user: user-2
content: for(i=0;a[i]!='#';i++)  { scanf("%c",&a[i]); n++;  }  这个也不对， 每次循环之后，都是i++之后，再来判断a【ℹ️】 ！= ‘#’ 这句永远也没有达到， 因为上轮刚输入了的是a[i-1]

user: user-0
content: 引用 1 楼 寻开心 的回复：for(j=0;j<n;j++)  { if(a[j]>='0'&&a[j]<='9') { r[a[j]-'0']++; }  }  这样改还是不行哦

user: user-2
content: for(j=0;j<n;j++)  { if(a[j]>='0'&&a[j]<='9') { r[a[j]-'0']++; }  }  这样改
user-0 提问: C语言

回复:
user: user-0
content: 引用 1 楼 user-1的回复:用scanf输入，选择判断一下，计算输出结果就行，先动手写一下哦 求大神解答如何度过C语言考试

user: user-1
content: 用scanf输入，选择判断一下，计算输出结果就行，先动手写一下哦
user-0 提问: 实训作业找帮忙啊！   信息统计功能模块
  (可以按平均成绩及格或不及格统计学生人数(共20人)，计算出所占比例，并输出统计报表。

回复:
user: user-0
content: 救救孩子啊                    啊啊啊

user: user-1
content: 红圈内的地方是贴代码的

user: user-0
content: 引用 楼主 hj18475180938的回复:实训作业   信息统计功能模块   (可以按平均成绩及格或不及格统计学生人数(共20人)，计算出所占比例，并输出统计报表。 怎么贴图？我自己写的还没贴。。
user-0 提问: 从键盘上输入两个正整型数据，求这两个整数的最大公约数和最小公倍数。 要求 设计一个函数来同时实现求两个数的最大公约数和最小公倍数，主函数中调用该函数， 然后输出

回复:
user: user-1
content: 引用 3 楼 qq_40791730 的回复:[quote=引用 1 楼 datoulaile123的回复:]int f(int m, int n) { 	int t; 	int s; 	s = m*n; 	do 	{ 		t = m%n; 		m = n; 		n = t; 	} while (t > 0); 	printf("%d %d", m, s / m); 	return 0; } 这样试试看呢，直接while循环t，而t没有被初始化 你好，我想问一下，比如输入的数是120和1000，取余不是小于0吗，这样为什么不会陷入循环？[/quote] 不明白什么叫做陷入循环，而且取余要么等于0要么大于0，大于0就继续循环，等于0就结束循环，你要是输入120和1000，那必定会进入下一次循环啊

user: user-2
content: 引用 1 楼 datoulaile123的回复:int f(int m, int n) { 	int t; 	int s; 	s = m*n; 	do 	{ 		t = m%n; 		m = n; 		n = t; 	} while (t > 0); 	printf("%d %d", m, s / m); 	return 0; } 这样试试看呢，直接while循环t，而t没有被初始化 你好，我想问一下，比如输入的数是120和1000，取余不是小于0吗，这样为什么不会陷入循环？

user: user-3
content: t没有初始化，在是随机数

user: user-1
content: int f(int m, int n) { 	int t; 	int s; 	s = m*n; 	do 	{ 		t = m%n; 		m = n; 		n = t; 	} while (t > 0); 	printf("%d %d", m, s / m); 	return 0; } 这样试试看呢，直接while循环t，而t没有被初始化
user-0 提问: 在界面的边界换行，指定的列换行，考虑到整个单词的完整性，或者指定的列前没有空白。尽可能考虑多的情况，参考word的换行。

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 帮忙看一下简单的c程序

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

user: user-2
content: void strmcpy(char *s, char *t, int m) {     char *p = s;     t += m;     while (*t != 0)     {       *p++ = *t++;     }     *p = 0;     printf(s); }
user-0 提问: unresolved external symbol "void __cdecl input(int *)" (?input@@YAXPAH@Z)

回复:
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: input这些函数放前面
user-0 提问: 请教 *,(int char) 指针的 用法已经注意事项. 以及传参; 请大佬讲讲,

回复:
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: 请参考C++中《strlen与sizeof处理字符数组和字符指针》 《C++中指针的数组和数组的指针》 《C++中字符数组》 《C++中的指针数组与数组指针》 希望能够帮到你！

user: user-3
content: str1 指向一个字符串常量， 这个字符串常量占据了5个字符，4个a一个0； 字符串常量的内容是不可改变的 str2是一个数组， 它就占据了10个字节， 无论你给予它什么内容，他就是占据10个字节的空间 str3是一个指针，它指向了str2【5】的位置

user: user-3
content: char *str1 = "aaaa";   // sizeof(str1) = 8 它就是一个指针的大小， str指向的内容没有关系                                  // 32位系统下，这个是4； 64位系统下是8  char str2[10] = "bbb"; // sizeof（str2） 它是10， 就是数组的大小和赋予的值没有关系  char * str3 =  str2 + 5; // 也是8， 同样是指针的大小，和内容没有关系  sizeof（int*） 同样是8，还是因为它是指针  sizeof（“abc” ） 这个东西是4， 因为三个字符加一个0结尾
user-0 提问: 在Github上提交了一个数独计算程序，欢迎大家下载测试

回复:
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: 看来要根据运算符号的不同，选择运算结果的类型 乘法结果放到 unsigned long里面，单独输出 加和除法和减法用long就可以了，因为题目说了都是正整数，那就可以排除除法当中除数是0的情况，放心用

user: user-2
content: 这个破题目貌似有问题 ，两个 unsigned int的四则运算是会超出long int的范围的，只能用  unsigned long， 那样减法又不对 用 long long，很多编译器又不支持 long long  可以不去考虑这个东西，就当 long可以容纳得下吧。  %u%c%u的格式输入a，c和b, %u保证是 无符号的 整数 然后根据c是什么字符运算就是了， 运算结果用 long int 类型来存储 和输出
user-0 提问: 求助数据结构大神

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

user: user-2
content: 参考博客： https://blog.csdn.net/user-2/article/details/99734501
user-0 提问: C语言求助  为什么第43行sort（a）后面的代码不执行？

回复:
user: user-0
content: 引用 2 楼 自信男孩 的回复:#include<stdio.h> #include<string.h>  #define N 3  struct stu{     int num;     char name[20];     char sex;     float Cscore;     float Mscore;     float Escore;     float ave; //}a[N-1],*pstu; }a[N],*pstu;  struct stu input() {     struct stu u;     scanf("%d %s %c %f %f %f",&u.num,u.name,&u.sex,&u.Cscore,&u.Mscore,&u.Escore);     u.ave=(u.Cscore+u.Mscore+u.Escore)/3.0;     return u; } struct stu output() {     printf("%10d %10s %3c %6.2f %6.2f %6.2f\n",(*pstu).num,(*pstu).name,(*pstu).sex,(*pstu).Cscore,(*pstu).Mscore,(*pstu).Escore,(*pstu).ave); } void swap(struct stu *b,struct stu *c){     struct stu t;     t=*b;*b=*c;*c=t; } void sort(struct stu b[]){     int i,j;     for(i=0;i<N;i++)         //for(j=i+1;i<N;j++)   //这里的判断应该是j < N吧         for(j=i+1;j<N;j++)             if(b[i].ave<b[j].ave) swap(b+i,b+j); } int main() {     int i,n;     for(i=0;i<N;i++)   //越界了，这里应该i < N -1;,要么把a的长度定义成N     {         a[i]=input();     }     printf("--------------------\n");     for(i=0;i<N;i++){         pstu=&a[i];         output();     }     sort(a);     for(i=0;i<N;i++){         pstu=&a[i];         output();     } } 供参考～  按照上面的改一下再试一下～我这个N是录入的人数，咱们方法不一样但都是对的，错误在我把36行的j<N打错成 i<N了，感谢指正！

user: user-1
content: #include<stdio.h> #include<string.h>  #define N 3  struct stu{     int num;     char name[20];     char sex;     float Cscore;     float Mscore;     float Escore;     float ave; //}a[N-1],*pstu; }a[N],*pstu;  struct stu input() {     struct stu u;     scanf("%d %s %c %f %f %f",&u.num,u.name,&u.sex,&u.Cscore,&u.Mscore,&u.Escore);     u.ave=(u.Cscore+u.Mscore+u.Escore)/3.0;     return u; } struct stu output() {     printf("%10d %10s %3c %6.2f %6.2f %6.2f\n",(*pstu).num,(*pstu).name,(*pstu).sex,(*pstu).Cscore,(*pstu).Mscore,(*pstu).Escore,(*pstu).ave); } void swap(struct stu *b,struct stu *c){     struct stu t;     t=*b;*b=*c;*c=t; } void sort(struct stu b[]){     int i,j;     for(i=0;i<N;i++)         //for(j=i+1;i<N;j++)   //这里的判断应该是j < N吧         for(j=i+1;j<N;j++)             if(b[i].ave<b[j].ave) swap(b+i,b+j); } int main() {     int i,n;     for(i=0;i<N;i++)   //越界了，这里应该i < N -1;,要么把a的长度定义成N     {         a[i]=input();     }     printf("--------------------\n");     for(i=0;i<N;i++){         pstu=&a[i];         output();     }     sort(a);     for(i=0;i<N;i++){         pstu=&a[i];         output();     } } 供参考～  按照上面的改一下再试一下～

user: user-2
content: 这里sort应该接收两个参数，sort(a,a+SIZE);
user-0 提问: 萌新求助:我哭了，这哪错了....

回复:
user: user-0
content: 引用 2 楼 自信男孩的回复:#include <stdio.h> #include <string.h>  #define N 5  int main() {     //int sort(int st[n]);     void sort(int *st, int n);     int i;     int a[N],*p;      printf(" the original numbers:");     for(i=0;i<N;i++)         scanf("%d",&a[i]);      printf("\n");     p=a;     sort(p, N);     //for(p=a,i=0;i<n;i++);     for(p=a, i=0; i < N;i++)     {         printf("%d\t",*p);         p++;     }     putchar(10);      return 0; }  //int sort(int st[n]) void sort(int *st, int n) {     int i,j,t,temp;     for(i=0;i<n-1;i++)     {         t = i;         for(j=i+1;j<n;j++)             if(st[j]>st[t])                 t=j;         if (t != i) {             temp = st[t];             st[t] = st[i];             st[i] = temp;         }     } } 供参考～  有些代码我感觉可以优化一下，就给你改了，并不是说是错误：比如宏定义大写，参数用2个，而不是一个。  有几处错误是有问题的，建议对比代码找一下。  要有耐心，调试代码需要有耐心和细心，有一个地方for后面跟分号；这是不细心或者学的不仔细导致的。  遇到问题不要着急，慢慢来，初学者都会犯这些低级错误～正常，坚持写下去，慢慢就好了～ 虽然我写的时候总是找不到错误，但是我会努力进步的!!!!不过谢谢大佬啊啊啊啊啊啊啊啊啊啊

user: user-0
content: 引用 1 楼 user-2的回复:第15行最后多了一个分号 啊啊啊啊啊啊啊啊啊啊对了感谢感谢

user: user-1
content: #include <stdio.h> #include <string.h>  #define N 5  int main() {     //int sort(int st[n]);     void sort(int *st, int n);     int i;     int a[N],*p;      printf(" the original numbers:");     for(i=0;i<N;i++)         scanf("%d",&a[i]);      printf("\n");     p=a;     sort(p, N);     //for(p=a,i=0;i<n;i++);     for(p=a, i=0; i < N;i++)     {         printf("%d\t",*p);         p++;     }     putchar(10);      return 0; }  //int sort(int st[n]) void sort(int *st, int n) {     int i,j,t,temp;     for(i=0;i<n-1;i++)     {         t = i;         for(j=i+1;j<n;j++)             if(st[j]>st[t])                 t=j;         if (t != i) {             temp = st[t];             st[t] = st[i];             st[i] = temp;         }     } } 供参考～  有些代码我感觉可以优化一下，就给你改了，并不是说是错误：比如宏定义大写，参数用2个，而不是一个。  有几处错误是有问题的，建议对比代码找一下。  要有耐心，调试代码需要有耐心和细心，有一个地方for后面跟分号；这是不细心或者学的不仔细导致的。  遇到问题不要着急，慢慢来，初学者都会犯这些低级错误～正常，坚持写下去，慢慢就好了～

user: user-2
content: 第15行最后多了一个分号
user-0 提问: c语言问题，请哪位大哥帮忙解决一下

回复:
user: user-0
content: 👍，谢谢了哈哈，再请教一下你，就是a[0]是杂数，但是为什么是偶数之和输出的是杂数而不是奇数之和输出杂数呢

user: user-1
content: 改一下：  while (p < a + 4) {     scanf("%d", p);     p++ } 供参考～  第一个输入你不是写到a[0]里了，你是写到a[1]里面去了，第一个a[0]就是随机数，所以比较大。注意while里p++之后,scanf输入的p是p+1的地址。 其他还有问题再提出来～
user-0 提问: 大整数乘法

	

求两个不超过200位的非负整数的积。

回复:
user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <string.h>  #define MAX_NUM_LEN 2048  int cal_factorial(unsigned char *num_list, int num_size, int n);  int cal_val(unsigned char *num_list, int num_size, int base, int num) {     int i = 0, j;     int len = 1, tmp, carry_bit;      num_list[1] = 1;      while (i < num) {         carry_bit = 0;         for (j = 1; j <= len; j++) {             tmp = num_list[j] * base + carry_bit;             num_list[j] = tmp % 10;             carry_bit = tmp / 10;             if (j >= len && carry_bit != 0)                 len++;             if (num_size-1 < len) {/* overflow */                 printf("Overflow!\n");                 return num_size-1;             }         }         i++;     }      return len; }   int main(void) {     unsigned char num_list[MAX_NUM_LEN];     int num_len, i;     int base, power;      memset(num_list, 0, sizeof(num_list));     printf("Please input two numbers: ");     scanf("%d%d", &base, &power);      if (base < 0 && power % 2)         num_list[0] = 1; /* negative number */     else         num_list[0] = 0;     base = abs(base);      num_len = cal_val(num_list, MAX_NUM_LEN, base, power);     printf("len = %d\n", num_len);     if (num_list[0])         putchar('-');     for (i = num_len; i >= 1; i--)         printf("%d", num_list[i]);     printf("\n");     return 0; }   int cal_factorial(unsigned char *num_list, int num_size, int n) {     int carry_bit, i, j, len = 1;     int tmp;      num_list[1] = 1;     for (i = 2; i <= n; i++)     {         carry_bit = 0;         for (j = 1; j <= len; j++) {             tmp = num_list[j] * i + carry_bit;             num_list[j] = tmp % 10;             carry_bit = tmp / 10;             if (j >= len && carry_bit != 0)                 len++;             if (num_size -1 < len) { /* overflow */                 printf("Overflow!\n");                 return num_size-1;             }         }      }      /*     for (i = len; i >= 1; i--)//逆序输出数组就是结果         printf("%d", a[i]);     printf("\n");     */     return len; } 供参考～  改改试试～
user-0 提问: 问题

回复:
user: user-1
content: 用数组或者指针都行 从两头向中间成对儿比较就行了 写个简单的递归： int  judge(char * p, int n) {     if ( 1 >= n ) return 1;     if ( p[0] == p[n-1] ) return judge(p+1, n-2); else return 0; }
user-0 提问: 求一个字符串中小写字母的个数和大写字母的个数。为啥我的程序不累计小写字母的个数？

回复:
user: user-1
content: 能这样返回吗。不能吧。就算结果是对的，但是不严谨的。 printf应该要求的地址吧，c语言是要地址，其他的一些打印输出好像有些不要。 不知道记错了没

user: user-0
content: 引用 3 楼 自信男孩的回复:#include <stdio.h> #include <ctype.h>  int lower(char a[]) {     int sum1;     char *p;     sum1=0;     for(p=a;*p!='\0';p++)     {         //if(islower(*p)==1)         if(islower(*p))             sum1++;     }     return sum1; } int upper(char a[]) {     int sum2;     char *p;     sum2=0;     for(p=a;*p!='\0';p++)     {         //if(isupper(*p)==1)         if(isupper(*p))             sum2++;     }     return sum2; } int main(void) {     char s[100],*t;     fgets(s, 100, stdin);     printf("小写字母%d个，大写字母%d个\n",lower(s),upper(s));     return 0;  } 供参考～  注意isupper和islower的返回值：  The values returned are nonzero if the character c falls into the tested class, and zero if not.  这句话的意思是返回值是非0值，若匹配测试的字符类，若不匹配返回0。 没说是匹配返回1哦。 噢噢噢，好的，谢谢你啦！

user: user-2
content: #include <stdio.h> #include <ctype.h>  int lower(char a[]) {     int sum1;     char *p;     sum1=0;     for(p=a;*p!='\0';p++)     {         //if(islower(*p)==1)         if(islower(*p))             sum1++;     }     return sum1; } int upper(char a[]) {     int sum2;     char *p;     sum2=0;     for(p=a;*p!='\0';p++)     {         //if(isupper(*p)==1)         if(isupper(*p))             sum2++;     }     return sum2; } int main(void) {     char s[100],*t;     fgets(s, 100, stdin);     printf("小写字母%d个，大写字母%d个\n",lower(s),upper(s));     return 0;  } 供参考～  注意isupper和islower的返回值：  The values returned are nonzero if the character c falls into the tested class, and zero if not.  这句话的意思是返回值是非0值，若匹配测试的字符类，若不匹配返回0。 没说是匹配返回1哦。

user: user-0
content: 引用 1 楼 黑洞中潜水的猪的回复:if(islower(*p)==1)改为if(islower(*p)) 谢谢，可以了，但是我想问一下这个和直接等于1有什么区别吗？

user: user-3
content: if(islower(*p)==1)改为if(islower(*p))
user-0 提问: 哪位大佬能帮忙写一下

回复:
user: user-1
content: 网上先搜一下，有类似的代码和讲解的。

user: user-2
content: 前一段有人问过类似问题，论坛应该都有

user: user-3
content: 百度合并排序
user-0 提问: 给定一个正整数 Ｎ，如果 Ｎ 是另一个正整数的平方，则 Ｎ 为平方数， 定义一个函数isSquare，判断一个正整数Ｎ是否为平方数。main函数负责读取整数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-2
content: 引用 2 楼 寻开心 的回复:int isSquare(int n) {     int i,sum=0;     int a[n+1];     for(i=0;i<n;i++)     {         a[0]=1;         a[i+1]=a[i]+2;         sum=sum+a[i];         if ( sum < n ) continue;         if ( sum == n  ) {             printf("yes");             return ++i;         } else {             printf("no");             return -1;         }     };     return -1; }  这个函数应该这样写 如果是N是平方数，输出yes并返回它是谁的平方； 如果不是平方数返回-1 a[n+1];//此处建议用malloc/free

user: user-2
content: 引用 2 楼 寻开心 的回复:int isSquare(int n) {     int i,sum=0;     int a[n+1];     for(i=0;i<n;i++)     {         a[0]=1;         a[i+1]=a[i]+2;         sum=sum+a[i];         if ( sum < n ) continue;         if ( sum == n  ) {             printf("yes");             return ++i;         } else {             printf("no");             return -1;         }     };     return -1; }  这个函数应该这样写 如果是N是平方数，输出yes并返回它是谁的平方； 如果不是平方数返回-1  int a[n+1]; 这样定义本身就是有问题的吧，n是一个可变参数，n的值不确定的～

user: user-3
content: #include <stdio.h> #include <math.h>  int isSquare(int n) {   return n < 0 ? 0 : (int)sqrt((float)n) * (int)sqrt((float)n) == n ? 1 : 0; }  int main() {   for (int n; scanf("%d", &n) == 1;)     printf("%s\n", isSquare(n) ? "yes" : "no");    return 0; }

user: user-4
content: int isSquare(int n) {     int i,sum=0;     int a[n+1];     for(i=0;i<n;i++)     {         a[0]=1;         a[i+1]=a[i]+2;         sum=sum+a[i];         if ( sum < n ) continue;         if ( sum == n  ) {             printf("yes");             return ++i;         } else {             printf("no");             return -1;         }     };     return -1; }  这个函数应该这样写 如果是N是平方数，输出yes并返回它是谁的平方； 如果不是平方数返回-1

user: user-4
content: int a[n]; // 这里应该 a【n+1】， 另外，有的编译器可能不支持这种数组定义 for(i=0;i<n;i++) { a[0]=1; a[i+1]=a[i]+2; // 这个会越界，  a定义数组要多一个才行 sum=sum+a[i]; }   没有明白你这个是个什么算法 1 + 3 + 5 + 。。。 + 2n-1  = n*n 这个始终成立啊，  所以你的那个n*n == sum 永远是真
user-0 提问: 帮忙看一下，哪里错了

回复:
user: user-1
content: 不知道你的目的是要做什么，但是：  1  scanf 语句里面，&a[m][n] 总给这个地方赋值是怎么个意思。 是 &a【I】【j】吧  2       if  ( a[I][j+1]==0 ) j的循环范围本来就是0到n，还使用j+1会越界的  3 因为前面的scanf错误， a【I】【j】== 1 的判断始终就没有成立过

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: 8行就是消除字符串前面的空格

user: user-3
content: 第8行是指让p指向第一个非空格的字符。

user: user-4
content: while(*p == ' ') p++;  // 这是要找到第一个不是空格的位置，让p指向这个位置 后面的q和这个类似， 通过p和q的这种操作找到，分别把p和q定位到首和尾第一个不是空格的字符  后面 就是从两头向中间来比较是否字母相同，从而判断是否是回文
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: 老哥，别说你是中南自动化的

user: user-2
content: 那啥，我们是不是一个学校的，我的跟你一抹一样，借我抄抄

user: user-3
content: 你看他的要求，是按照用餐人数分的，那么一开始就应该初始化大中小餐桌的数量、名称，最好搞个结构管理一下，来人了那就取出其中的用餐人数，根据人数分配，至于餐桌和订单如何对应看具体情况吧，可以在订单结构体中创建一个餐桌的字段或者在餐桌上标记订单或者单独设立一个结果管理，自由发挥
user-0 提问: 字符串连接， 这个程序没怎么看懂  使用 strcat() 连接两个字符串。

回复:
user: user-0
content: 对 是的。 我一开始 没看到 那个分号 以为2个循环一起进行呢。

user: user-1
content: 第一个for的作用就是让i指向到s1的字符串尾部，第二个for的作用就是就S2拼接到S1的尾部 s1[i]=s2[j]；假设第一个字符串长度是5的话，执行的效果是 s1[5]=s2[0] s1[6]=s2[1]

user: user-0
content: 不好意思 我看懂了。 哈哈。     for(i = 0; s1[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: 参考博客： https://blog.csdn.net/user-2/article/details/99734501
user-0 提问: 各位大佬帮忙看看这个从txt里读取数据哪里错了，谢谢大佬们

回复:
user: user-1
content: 你的stu是野指针呢，你传递到ReadFile函数里，也是不能直接使用的。要么定义成数组，要么动态申请空间。  另外，去掉name之前的&，因为name是数组，本身就是地址
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: 一个链表，用递归的方法建立，更简单，参考博客： https://gitee.com/shallwing/C-3P/blob/master/DataStructure-OS/DataStructure/linearList/list.cpp

user: user-3
content: #include<stdio.h> #include<malloc.h>  typedef struct node {     int data;     struct node *next; }Pnode;  Pnode *Build() {     int n;     printf("请输入节点数n:");     scanf("%d",&n);     Pnode *head,*now,*front;     //head==NULL;     head=NULL;     for(int i=0;i<n;i++)     {         now=(Pnode *)malloc(sizeof(Pnode));         scanf("%d", &now->data);         now->next=NULL;         if(head==NULL)         {             head=now;             front=now;         }         else         {             front->next=now;             front=now;         }     }     return head; } int main() {     Pnode *p;     p=Build();     printf("节点元素为\n");     while(p!=NULL)     {         printf("%3d",p->data);         p=p->next;     }     return 0; } 楼主的代码有个问题，已改正，供参考～  楼主的逻辑并没有对输入的随机数据建立一个有序链表，只能通过手动输入一个有序的链表～