Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 求大佬指点，数据结构与算法

回复:
user: user-1
content: void insertList(DLNode * p, ElementType x) {        if ( NULL== p ) return;        DLNode * pT = (DLNode*) malloc (sizeof(DLNode));        if (!pT)             return NULL;        pT->data = x;        pT->prior = p->prior;        pT->next = p;        p->prior = pT; }  多加一句对pT申请空间之后的判断。 另外，这个函数还有问题，如果p是头结点，那么这样的函数还能可以吗？需要考虑p的位置是头还是中间，还是尾。  引用 1 楼 寻开心 的回复:void insertList(DLNode * p, ElementType x) {        if ( NULL== p ) return;        DLNode * pT = (DLNode*) malloc (sizeof(DLNode));        pT->data = x;        pT->prior = p->prior;        pT->next = p;        p->prior = pT; }

user: user-2
content: 头尾节点没有所谓的， p的prior或者next节点正确设置了就好，可以在调用方处理 如果想更通用，要改造一下， 有返回就好了  DLNode* insertList(DLNode * p, ElementType x) {        if ( NULL== p ) return NULL;        DLNode * pT = (DLNode*) malloc (sizeof(DLNode));        if (NULL == pT) return NULL;        pT->data = x;        pT->prior = p->prior;        pT->next = p;        p->prior = pT;        return pT;         }  把插入位置有效性的检测放到函数实现里面，还是在调用之前检测各有各的好处 放在外面就要求使用者更清楚自己要做什么， 可以减少函数内部的判断， 提高函数自身的执行效率 放在函数里面，函数可以更稳健

user: user-2
content: void insertList(DLNode * p, ElementType x) {        if ( NULL== p ) return;        DLNode * pT = (DLNode*) malloc (sizeof(DLNode));        pT->data = x;        pT->prior = p->prior;        pT->next = p;        p->prior = pT; }
user-0 提问: C语言

回复:
user: user-1
content: 可以这么做，但是不建议这么做，因为需要考虑代码的可读性。

user: user-0
content: 引用 3 楼 关于0318的回复:害，楼上说得太多了吧，一楼说得对。 刚开始不要有那么多顾虑，甚至不要考虑格式什么的，虽然好习惯要坚持，但是不要把“最好那么做”和“必须那么做”混为一谈。 收到，谢谢指教

user: user-0
content: 引用 2 楼 寻开心的回复:连续加是允许的 不过还是建议你分开写， 出问题的时候容易调试  开数组，用循环加这种同类的数还是更方便一些 包括你那个scanf函数也是 scanf那么多数据， 自己数的过来吗？对不上就是错误了 同样是建议分开写 好的，谢谢指教

user: user-2
content: 害，楼上说得太多了吧，一楼说得对。 刚开始不要有那么多顾虑，甚至不要考虑格式什么的，虽然好习惯要坚持，但是不要把“最好那么做”和“必须那么做”混为一谈。

user: user-3
content: 连续加是允许的 不过还是建议你分开写， 出问题的时候容易调试  开数组，用循环加这种同类的数还是更方便一些 包括你那个scanf函数也是 scanf那么多数据， 自己数的过来吗？对不上就是错误了 同样是建议分开写

user: user-4
content: 可以连续加，这是最基本的表达式啊
user-0 提问: 用递归的方法将一个整数n转换成字符串。例如输入256，输出"256"

回复:
user: user-0
content: 引用 1 楼 user-2的回复:第一次调用递归函数n=256，n/10==25，递归          第二次调用递归函数n=25，n/10==2，递归                  第三次调用递归函数n=2，n/10==0，不递归，打印2%10=2，退出函数          第三次调用函数退出后，回到第二次调用的代码，接着后面的代码打印25%10=5，退出函数  第二次调用函数退出后，回到第一次调用的代码，接着后面的代码打印256%10=6，退出函数  整个递归函数调用结束，主程序退出 谢谢谢谢                    谢谢谢谢

user: user-0
content: 引用 3 楼 qq_45464245的回复:[quote=引用 2 楼 寻开心的回复:]voidtranvers(intn) {tie    if(n/10!=0)      tranvers(n/10);   // 先调用这个函数，就是先处理10位以上的部分， 它会递归输出10以上部分的数字      printf("%c",n%10+'0'); //  后执行这个不分，就是后输出个位上的数字； 和前一个调用结合得到256这种从高到底的输出顺序 // 把上面这两行颠倒一下，得到的就是652的顺序了 }  此外，也提问了好几次了，该给满意的帖子结账了吧。 总是提问不结贴就没人再给你答复啦 怎么结贴          怎么结贴[/quote] 我刚用  不知道怎么弄

user: user-0
content: 引用 2 楼 寻开心的回复:voidtranvers(intn) {tie    if(n/10!=0)      tranvers(n/10);   // 先调用这个函数，就是先处理10位以上的部分， 它会递归输出10以上部分的数字      printf("%c",n%10+'0'); //  后执行这个不分，就是后输出个位上的数字； 和前一个调用结合得到256这种从高到底的输出顺序 // 把上面这两行颠倒一下，得到的就是652的顺序了 }  此外，也提问了好几次了，该给满意的帖子结账了吧。 总是提问不结贴就没人再给你答复啦 怎么结贴          怎么结贴

user: user-1
content: voidtranvers(intn) {tie    if(n/10!=0)      tranvers(n/10);   // 先调用这个函数，就是先处理10位以上的部分， 它会递归输出10以上部分的数字      printf("%c",n%10+'0'); //  后执行这个不分，就是后输出个位上的数字； 和前一个调用结合得到256这种从高到底的输出顺序 // 把上面这两行颠倒一下，得到的就是652的顺序了 }  此外，也提问了好几次了，该给满意的帖子结账了吧。 总是提问不结贴就没人再给你答复啦

user: user-2
content: 第一次调用递归函数n=256，n/10==25，递归          第二次调用递归函数n=25，n/10==2，递归                  第三次调用递归函数n=2，n/10==0，不递归，打印2%10=2，退出函数          第三次调用函数退出后，回到第二次调用的代码，接着后面的代码打印25%10=5，退出函数  第二次调用函数退出后，回到第一次调用的代码，接着后面的代码打印256%10=6，退出函数  整个递归函数调用结束，主程序退出
user-0 提问: 这个值怎么判定的

回复:
user: user-1
content: 从左往右计算，0

user: user-2
content: 引用 8 楼 自信男孩 的回复:[quote=引用 1 楼 ?Victor.?? 的回复:] 0 1.0/b==0; 0*a==0; 你的理解有问题的.  1.0/b = 1.0/2 = 0.500000 0.500000*a = 0.500000 * 1 = 0.500000  最后c = 0;因为c是整型数据,因此会取整得0.[/quote] 抱歉，我搞混了，先运算，再int类型转换

user: user-3
content: 引用 4 楼 qq_45464245 的回复:[quote=引用 1 楼 ?Victor.??的回复:]0 1.0/b==0; 0*a==0; 这个1.0÷b不应该＝0.5吗[/quote] 不要忘记有类型隐式提升, 1.0/b会按照double类型的除法计算,1.0/b *a;都会按照double类型数据计算

user: user-3
content: 引用 1 楼 ?Victor.?? 的回复:0 1.0/b==0; 0*a==0; 你的理解有问题的.  1.0/b = 1.0/2 = 0.500000 0.500000*a = 0.500000 * 1 = 0.500000  最后c = 0;因为c是整型数据,因此会取整得0.

user: user-2
content: 你用int 定义a,b,c; 除了强制类型转换，否则怎么运算都不会出现小数

user: user-4
content: 我觉得 1.0/b=0.5 c语言中，整数除以浮点数得出结果是浮点数。  当除数或者被除数之一（只要有一个）是浮点数（或double），进行的就是浮点数除法，会把另一个除数或者被除数转换为精度更高的进行除法（例如int转为float，float转为double）结果为浮点数。只有当除数和被除数都是int类型时，显示的结果值才是整数。

user: user-5
content: 引用 4 楼 qq_45464245 的回复:[quote=引用 1 楼 ?Victor.??的回复:]0 1.0/b==0; 0*a==0; 这个1.0÷b不应该＝0.5吗[/quote] 那么 int d=0.5;d等于多少？？

user: user-0
content: 引用 1 楼 ?Victor.??的回复:0 1.0/b==0; 0*a==0; 这个1.0÷b不应该＝0.5吗

user: user-5
content: 我目测是0吧

user: user-6
content: 1.0/b==0; 当然是 0.5 呀  引用 1 楼 ?Victor.?? 的回复:0 1.0/b==0; 0*a==0;

user: user-2
content: 0 1.0/b==0; 0*a==0;
user-0 提问: c语言新手，为何用整型常量定义数组长度并初始化时，会报错说不能初始化

回复:
user: user-0
content: 引用 4 楼 與蘤舊縐 的回复:[quote=引用 3 楼 穷人没资格上闲鱼 的回复:] [quote=引用 2 楼 與蘤舊縐 的回复:] 除了刚才说的，你这里错误的原因还有={0}，这是不允许用在用变量定义长度的数组初始化的 您好，感谢您的解答，请问想让该长度10的数组所有元素都为0，那是用for循环逐一赋值比较好吗？是否有更简洁的还不报错的初始化方法呢？[/quote]  你的赋值在一般情况下是可以的，一般来说for循环赋值看起来麻烦了点，其实效率还是不错的，想搞点高级的那就用string.h的memse函数，直接把数组的所有值都重置为0，但对于长度10的数组来说，可能效率还不如for循环[/quote] 感谢您的耐心解答，懂了！

user: user-1
content: 引用 3 楼 穷人没资格上闲鱼 的回复:[quote=引用 2 楼 與蘤舊縐 的回复:] 除了刚才说的，你这里错误的原因还有={0}，这是不允许用在用变量定义长度的数组初始化的 您好，感谢您的解答，请问想让该长度10的数组所有元素都为0，那是用for循环逐一赋值比较好吗？是否有更简洁的还不报错的初始化方法呢？[/quote]  你的赋值在一般情况下是可以的，一般来说for循环赋值看起来麻烦了点，其实效率还是不错的，想搞点高级的那就用string.h的memse函数，直接把数组的所有值都重置为0，但对于长度10的数组来说，可能效率还不如for循环

user: user-0
content: 引用 2 楼 與蘤舊縐 的回复:除了刚才说的，你这里错误的原因还有={0}，这是不允许用在用变量定义长度的数组初始化的 您好，感谢您的解答，请问想让该长度10的数组所有元素都为0，那是用for循环逐一赋值比较好吗？是否有更简洁的还不报错的初始化方法呢？

user: user-1
content: 除了刚才说的，你这里错误的原因还有={0}，这是不允许用在用变量定义长度的数组初始化的

user: user-1
content: C语言用const修饰的变量依旧是变量，可以叫做常变量或者只读变量，因为该变量依旧可以通过指针修改，只是不能直接改，在C++中这样的操作是可行的，另外C99之后已经可以用变量定义数组长度，但在此之前该变量需要初始化，不同编译器对该特性的支持不同，所以尽量还是不要这么用
user-0 提问: visual stdio2019

回复:
user: user-1
content: 重新启动或配置头文件，自己写一个头文件，我的博客里面有一个专栏就是各种各样的c++库 https://blog.csdn.net/cool99781/category_9720519.html 自己找吧

user: user-0
content: 引用 2 楼 初学小菜的回复:说明你没有这个头文件 我会注意这个问题的，谢谢

user: user-0
content: 谢谢谢谢，麻烦了

user: user-0
content: 引用 1 楼 自信男孩的回复:不会是中英文的问题吧 绝了，还真是，谢谢大哥

user: user-2
content: 说明你没有这个头文件

user: user-3
content: 不会是中英文的问题吧
user-0 提问: 求大神解答

回复:
user: user-0
content: 引用 2 楼 自信男孩的回复:建议分开写,不要++和--前置和后置放在一起. 这样的表达式有副作用,对于代码移植性很差. 好的，谢谢大神指点

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:自增自减运算符只能单独使用，a+a++和以及你这种写法都是不可以的 好的，谢谢大神

user: user-0
content: 引用 3 楼 阿帕奇Hehe的回复:这种同一个变量的自加自减出现在同一个语句中，在C中约定俗成的是不允许这样使用的。不同的编译器可能出现不一样的结果，初学者不要这样编写代码。要分开。 好的，这是看视频课件老师给讲的内容，可能是特意拿出来的

user: user-1
content: 这种同一个变量的自加自减出现在同一个语句中，在C中约定俗成的是不允许这样使用的。不同的编译器可能出现不一样的结果，初学者不要这样编写代码。要分开。

user: user-2
content: 建议分开写,不要++和--前置和后置放在一起. 这样的表达式有副作用,对于代码移植性很差.

user: user-3
content: 自增自减运算符只能单独使用，a+a++和以及你这种写法都是不可以的
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 dx=x2-x1， dy=y2-y1; if (dx == 0  )  return dy-1; if (dy == 0  )    return dx-1;  此时dx和dy都不是0了 计算 dx和dy的最大公因数c return （dx-1）/ (dx/c); 或者 return  (dy-1) /(dy/c);

user: user-2
content: int dx=x2-x1， dy=y2-y1; if (dx == 0  )  return dy-1; if (dy == 0  )    return dx-1;  此时dx和dy都不是0了 计算 dx和dy的最大公因数c return （dx-1）/ (dx/c); 或者 return  (dy-1) /(dy/c);

user: user-2
content: x1，y1， x2，y2构成直线  y  =  y1 +    (y2-y1) / (x2-x1) * (x-x1)     其中 x1< x < x2 把(y2-y1)/(x2-x1)做成最简分数a/b ，(x2-x1-1) / b 就是答案  考虑到， 有可能线段是一条垂直的线段， 所以要判别一下，如果是垂直的用另外一一组公式 x = x1 + (x2-x1) / (y2-y1) * (y-y1),   其中y1<x <y2
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: pn.data = (PolyTerm *)malloc(sizeof(PolyTerm) * n);

user: user-3
content: float Evaluate(SqPoly pn,float x);   int main(void) {    int i,n;    SqPoly pn;    PolyTerm data;    float x,f1;    clrscr();    printf("Please input the terms of number of the pn:\n");    scanf("%d",&n);    pn.data = (PolyTerm*) malloc( sizeof(PolyTerm) * n );       pn.length=n;    printf("Please input the coef of the pn:\n");    for (i=0;i<n;i++)   scanf("%d",&pn.data[i].coef);    printf("Please input the exp of the pn:\n");    for (i=0;i<n;i++)   scanf("%d",&pn.data[i].exp);    printf("Please input the x to solve:");    scanf("%f",&x);    Evaluate(pn,x);    return 0; }
user-0 提问: C语言，实在做不出来

回复:
user: user-0
content: 引用 2 楼 lin5161678的回复:首先你写一个 给数字排序的代码 然后 这段代码里面  2个数字的比较 改成字符串的比较 2个数字的交换 改成字符串的交换 完事 谁能帮我补一下sort函数啊

user: user-0
content: 引用 2 楼 lin5161678的回复:首先你写一个 给数字排序的代码 然后 这段代码里面  2个数字的比较 改成字符串的比较 2个数字的交换 改成字符串的交换 完事 是做C语言题，要求就是写一个sort函数

user: user-1
content: sort(a,a+3)

user: user-2
content: 可以用现成的字符串比较函数

user: user-3
content: 首先你写一个 给数字排序的代码 然后 这段代码里面  2个数字的比较 改成字符串的比较 2个数字的交换 改成字符串的交换 完事

user: user-0
content: 有没有人帮帮我啊

user: user-4
content: #include<stdio.h> #include<string.h>  void bubble_sort(char (*a)[10], int n) {     int i,j;     char tmp[10];      for (i = 0; i < n; i++)         for (j = 0; j < n - i - 1; j++)             if (strcmp(a[j], a[j+1]) > 0) {                 strcpy(tmp, a[j]);                 strcpy(a[j], a[j+1]);                 strcpy(a[j+1], tmp);             } }  int main( ) {     char a[3][10];     int i;     for(i=0;i<3;i++)         gets(a[i]);     bubble_sort(a, 3);     for(i=0;i<3;i++)         puts(a[i]);      return 0; } 供参考~

user: user-5
content: #include<stdio.h> #include<string.h> void sort(char a[4][10]) { 	int i,j; 	for(i=0;i<2;i++) 	for(j=i+1;j<3;j++) 	if(strcmp(a[i],a[j])>0) 	{ 		strcpy(a[3],a[i]); 		strcpy(a[i],a[j]); 		strcpy(a[j],a[3]); 	} }  int main( ) {     char a[3][10];     int i;     for(i=0;i<3;i++)         gets(a[i]);     sort(a);     for(i=0;i<3;i++)         puts(a[i]); } 你看能行不！

user: user-0
content: 求大佬帮忙看一下啊
user-0 提问: vc.6.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: 引用 楼主 ??(Dream)的回复:每次编译都出现 工程名.exe- 2errors 搞定啦已经解决问题啦

user: user-2
content: 什么错误写清楚，神也猜不出来
user-0 提问: 代码出现乱码恢复

回复:
user: user-0
content: 麻烦可以说下怎么用二进制打开吗

user: user-1
content: 用二进制打开。或者另存为其他编码格式。 一般存为多字节编码就可以。

user: user-0
content: 我没用记事本打开啊。我用的ue

user: user-1
content: 那个fffe，是记事本的文件头，你用记事本打开，会自动给你加上。

user: user-0
content: 大佬怎么用二进制方式打开啊。我就16进制查看我的代码是这样的。开头的FF FE 怎么都删不掉。删掉了或者更改了保存重新打开还是在。

user: user-2
content: 用二进制方式打开这个文件，找到你复制过来的哪个部分，删除掉不行吗？ 显然后面的这个图是用文本方式打开的
user-0 提问: gcc内嵌汇编堆栈计算出错

回复:
user: user-0
content: 补充一下 我写错了 应该是ebp+6 因为16位下是 ip 不是eip ip 2字节 + push ebp 4字节 应该访问ebp+6

user: user-0
content: 你在你编译的C上加上  __asm__(".code16\r\n");

user: user-1
content: 16位下，能访问32为寄存器？？
user-0 提问: 编写一个mul函数求一到十的乘积，帮忙看一下代码哪里错了，为什么结果不对

回复:
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: 没有返回值,即自定义函数没有将返回值返给main函数,所以main函数里的n还是一个随机值.  修改的方法:  int mul(void) {     int i, n = 1;     for (i = 1; i < 10; i++)         n = n * i;     return n; }  int main(void) {       int n;     n = mul();     printf("%d\n", n);

user: user-3
content: 不对很正常，2个错误，1：mul的n是形参，不是指针或者引用，值无法传递出去. 2.printf，不用取地址，你这个是打印N的地址，不是值.  3. 换一个编译器吧，比如vs2017，别用这种上古编译器了

user: user-4
content: 调用函数没有返回值，要用int mul (int n)

user: user-5
content: 可以看一下参数按值传递和引用传递的区别 void mul(int n)修改为void mul(int &n)
user-0 提问: 大一菜鸟求救课设

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:初一的菜鸟要代码也是没有 课设的问题都不是论坛能解决的， 不是多难， 而是几百行代码没人闲的无聊写这个。 你有具体问题不会的话，贴自己的代码出来，一般来说还是会有人回答的 纯要代码， 自己百度吧 完全不会写

user: user-0
content: 引用 2 楼 ?Victor.??的回复:事实证明，课设报告这种东西只是个形式，你东拼西凑都可以，没人会仔细运行你的代码，看有没有bug，水一水就过去了，重要的是文采要好，显得你的项目多么高大上 主要是答辩过程不行

user: user-1
content: 事实证明，课设报告这种东西只是个形式，你东拼西凑都可以，没人会仔细运行你的代码，看有没有bug，水一水就过去了，重要的是文采要好，显得你的项目多么高大上

user: user-2
content: 初一的菜鸟要代码也是没有 课设的问题都不是论坛能解决的， 不是多难， 而是几百行代码没人闲的无聊写这个。 你有具体问题不会的话，贴自己的代码出来，一般来说还是会有人回答的 纯要代码， 自己百度吧
user-0 提问: 求大佬指点

回复:
user: user-1
content: 这个是c函数的定义？ C里面还能这么定义函数吗？   c里面没有引用的说法， &是取地址，但是这个是函数定义阶段啊，  只能void( linklist *p);   c++里面void void f(linklist &p);   这是引用，和后者的区别是它等同于把调用时候传参的变量传递进去了，而不是变量的值，因此函数里面对p的修改，可以带回到函数外面； 后后者对p值的修改只在函数内部有效。

user: user-2
content: 区别大了，前者是地址传递（虽然是变相寻址实现的），后者是值传递（指针传递也属于值传递） LZ测试一下看看，哪个函数的参数的地址和main函数的变量的地址一样？  void t1(int &a) { //地址传递     printf("%p\n", &a); }  void t2(int a) { //值传递     printf("%p\n", &a); }  void t3(int *a) { //值传递     printf("%p\n", &a); }  int main(int argc, const char * argv[]) {     int p = 0;     int &p1 = p;     int *p2 = &p;     printf("main: %p\n", &p);     t1(p1);     t2(p);     t3(p2);     return 0; }
user-0 提问: 数据结构

回复:
user: user-1
content: i=0，执行n次 i=1，执行n-1次 i=2，执行n-2次 ... i=n-1，执行1次 所以一共执行 n+(n-1)+(n-2)+...+1 = n*(n+1)/2次，也就是O(n^2)
user-0 提问: 根据火车出发时间和到达时间，编写整个旅途所用的时间

回复:
user: user-0
content: 引用 6 楼 寻开心的回复:int main() {     intks,js,xs,fz;      scanf("%d%d",&ks,&js);    // ks 开始时间， js结束时间     xs=js/100-ks/100;              // js/100 提取的是到达时候是几点， 1404到达， 1404/100 就是14；这是计算时差       fz=js%100-ks%100;           // js%100是提取结束时间是几分， 1404到达， 1404%100 就是4；这是计算分差     if(fz<0){xs=xs-1;fz=60+fz;}  // 也是在判断，分上做减法不足底情况；如果不足借来一小时不足     printf("%02d:%02d",xs, fz);      return0; } 想法没有什么差别  关键是你自己想明白， 不用计算机，你自己用脑袋怎么算的， 计算机实现的是你脑子里面都想法 不需要和别人的想法一样， 只要你的想法对就可以 嗯嗯       谢谢

user: user-1
content: int main() {     intks,js,xs,fz;      scanf("%d%d",&ks,&js);    // ks 开始时间， js结束时间     xs=js/100-ks/100;              // js/100 提取的是到达时候是几点， 1404到达， 1404/100 就是14；这是计算时差       fz=js%100-ks%100;           // js%100是提取结束时间是几分， 1404到达， 1404%100 就是4；这是计算分差     if(fz<0){xs=xs-1;fz=60+fz;}  // 也是在判断，分上做减法不足底情况；如果不足借来一小时不足     printf("%02d:%02d",xs, fz);      return0; } 想法没有什么差别  关键是你自己想明白， 不用计算机，你自己用脑袋怎么算的， 计算机实现的是你脑子里面都想法 不需要和别人的想法一样， 只要你的想法对就可以

user: user-0
content: 引用 4 楼 寻开心的回复:拆开eTime1404，后eH=14哈  自己算时间差也是这样啊，  分钟不够减，借来一个小时呗， 一个小时是60分钟 你好  可以帮我看看这个程序吗这个是这个题的答案有点看不懂 #include<stdio.h> intmain() { intks,js,xs,fz; scanf("%d%d",&ks,&js); xs=js/100-ks/100; fz=js%100-ks%100; if(fz<0){xs=xs-1;fz=60+fz;} printf("%02d:%02d",xs,fz); return0; }

user: user-1
content: 拆开eTime1404，后eH=14哈  自己算时间差也是这样啊，  分钟不够减，借来一个小时呗， 一个小时是60分钟

user: user-1
content: 开始时间sTime 1220  拆开 sH=12（12小时），  sM=20（20分钟）    结束时间eTime 1404 拆开 eH=13，  eM=04  em比sM小啊，  直接做减法不行， 所以要从小时那儿借来一个小时，也就是60分钟， 变成 60+04 = 64 再减去20 ，就是44分钟 然后eH-sH-1  就是14 - 12 -1 = 1 用时 1小时44分钟

user: user-0
content: 引用 1 楼 寻开心的回复:int sTime, eTime； 开始时间 和 到达时间  拆分出来小时和分钟 int  sH, sM, eH, eM; sH = sTime / 100;  sM = sTime % 100; eH = eTime/100; eM = eTime%100;  if ( eM< sM ) {      用的分钟数：  eM+60-sM      用的小时数：  eH-sH-1; // 被上分钟哪儿借走了一小时 } else {      用的分钟数：  eM-sM;      用的小时数：  eH-sH;  }  代码自己写吧， 也不知道你要求的输出格式是什么 这个能在具体点吗  有点看不懂

user: user-1
content: int sTime, eTime； 开始时间 和 到达时间  拆分出来小时和分钟 int  sH, sM, eH, eM; sH = sTime / 100;  sM = sTime % 100; eH = eTime/100; eM = eTime%100;  if ( eM< sM ) {      用的分钟数：  eM+60-sM      用的小时数：  eH-sH-1; // 被上分钟哪儿借走了一小时 } else {      用的分钟数：  eM-sM;      用的小时数：  eH-sH;  }  代码自己写吧， 也不知道你要求的输出格式是什么
user-0 提问: C语言求大佬解答

回复:
user: user-0
content: 引用 5 楼 寻开心的回复:  眼神不好， 看不明白那都是啥， 眼神好的继续回答吧   emmmmm

user: user-1
content: 眼神不好， 看不明白那都是啥， 眼神好的继续回答吧

user: user-0
content: 引用 1 楼 寻开心的回复:关键的f函数都做了什么都不知道，如何解答？ 把看不清的部分，自己敲成代码，贴文字出来再提问 我用笔写出来了呀。。

user: user-2
content: int * r[] = {  int 地址,   int 地址 }

user: user-2
content: *p 取p地址指向的值 或者取数组的第一个值，  **r 可以理解为 地址的地址指向的值，也可以理解成 地址数组中的第一个地址 指向的值。  int   a = 10 ; int  *p = a ; int **r= & p ;  或者  int p[] = { 10, ... } ;    即:  *p == p[0] ;  int * r = { &p[1], &p[2] } ;    这里 r 是地址数组， **r = *r[0]  , 就是取地址数组中的第一个地址，然后再取指向的值

user: user-1
content: 关键的f函数都做了什么都不知道，如何解答？ 把看不清的部分，自己敲成代码，贴文字出来再提问
user-0 提问: C语言问题

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

user: user-2
content: 这么简单，自己先写，出问题再说
user-0 提问: 为什么这个赋值会失败呢？

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

user: user-2
content: 少一句ret = sushu(a); 需要ret去接受sushu函数的返回值.

user: user-3
content: sushu（）里面的return出来的返回值，在主函数要有个变量接收啊 没有变量接收， 返回值就丢了  main函数里面的ret和sushu里面的ret不是同一个变量， 风牛马不相及  好好看看书，关于函数部分， 函数如何返回值，主要就三种 1 借助全局变量 2 函数的return val； 3 函数的指针/引用类型的参数  借助文件什么的传递数据就不算了

user: user-4
content: 作用域问题 ret=sushu(a);
user-0 提问: c语言while输出

回复:
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: linux下用sleep()/usleep();Windows下可以用Sleep()  注意下参数的表示意义可能不一样,不如有的是秒,有的是毫秒

user: user-3
content: 肯定会，你这个是单线程的

user: user-4
content: while(n<maxSize){ if (n%100000==0){输出} n++ }

user: user-5
content: #include <stdio.h> #include <windows.h>  int main(void) { 	int nDelayTime = 0; 	while(1) 	{ 		nDelayTime++; 		if(nDelayTime == 1000) 		{ 			nDelayTime=0; 			printf("hello world\n"); 		} 		Sleep(1); 	} 	return 0; } 每次延时1ms，积累1000次也就是1s，这样做不会影响其他部分

user: user-6
content: sleep()函数
user-0 提问: 求解这道题！！！

回复:
user: user-1
content: 这个不是直接写就行了嘛……哪里不会呢

user: user-2
content: 基础题，自己做 错了贴代码来提问，就有人回答了 要源代码的基础题或者课设题，都没有答案

user: user-0
content: 还没有人帮我一下吗？！？！

user: user-0
content: 顶

user: user-0
content: 顶
user-0 提问: 编程实现字符串连接函数strcat的功能，将字符串t连接到字符串s的尾部

回复:
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: 连接完数组a溢出了，把a[]改成a[10]
user-0 提问: leetcode回文串问题提交出现heap-buffer-overflow

回复:
user: user-0
content: 我好像找到问题在哪里了     for (k = output_head_position, l = 0; k <= output_tail_position; k++, l++)     {         output_s[l] = s[k];     } 这个地方中的out_put_s是由     char *output_s = (char *)malloc(sizeof(char) * (size)); 动态分配定义的，在输入了最后一个字符到output_s变量后，由于没有字符串的结束标志，所以在leetcode提交后会继续向最后有一个字符之后遍历，所以出现了越界问题，但是当我将生成的空间多预留一位，并且手动加入'\0'标志后，输出结果是这样的  请问该如何解决啊

user: user-1
content: heep是堆，越界了，超限

user: user-0
content: 引用 2 楼 自信男孩 的回复:[quote=引用 1 楼 自信男孩 的回复:] for (x = i + 1, y = j - 1; x <= y; x++, y--)    16                 {    17                     if (s[x] == s[y] && x != y) {    18                         length += 2;    19                     } else if (x == y) {    20                         length += 1;    21                     } else if (s[x] != s[y]){    22                         length = 0;    23                         break;    24                     }    25                 }  楼主有没有考虑到,当外层循环i=size-1时,x = i+1,就是x=size已经越界了吧 另外,x++还继续增长[/quote] 这个地方在第for里面是有个x<=y的判断条件的，当i=size-1的时候，x=size，j=size-1，y=size-2，x>y，后面的代码应该会跳过执行，为什么还是会出现这种错误啊

user: user-2
content: 引用 1 楼 自信男孩 的回复:for (x = i + 1, y = j - 1; x <= y; x++, y--)    16                 {    17                     if (s[x] == s[y] && x != y) {    18                         length += 2;    19                     } else if (x == y) {    20                         length += 1;    21                     } else if (s[x] != s[y]){    22                         length = 0;    23                         break;    24                     }    25                 }  楼主有没有考虑到,当外层循环i=size-1时,x = i+1,就是x=size已经越界了吧 另外,x++还继续增长

user: user-2
content: for (x = i + 1, y = j - 1; x <= y; x++, y--)    16                 {    17                     if (s[x] == s[y] && x != y) {    18                         length += 2;    19                     } else if (x == y) {    20                         length += 1;    21                     } else if (s[x] != s[y]){    22                         length = 0;    23                         break;    24                     }    25                 }  楼主有没有考虑到,当外层循环i=size-1时,x = i+1,就是x=size已经越界了吧
user-0 提问: c语言斐波那契数列，运行失败求解

回复:
user: user-0
content: 引用 6 楼 寻开心的回复:又一个不知道那位体育老师教的代码结构 int main () {  ....   return 0; } 是标准的结构  另外， 这种递归实现的方法， n不能天大，否则非常的慢甚至堆栈溢出 更适合用递推的方式来解决 int fun(int n) {     int f1 = 0;    int f2 = 1;    int f =0;    for ( int j=2; j<=n; j++ ) {         f = f2 + f1;          f1=f2;          f2=f;    } return f; };  真的，感谢感谢！

user: user-1
content: 又一个不知道那位体育老师教的代码结构 int main () {  ....   return 0; } 是标准的结构  另外， 这种递归实现的方法， n不能天大，否则非常的慢甚至堆栈溢出 更适合用递推的方式来解决 int fun(int n) {     int f1 = 0;    int f2 = 1;    int f =0;    for ( int j=2; j<=n; j++ ) {         f = f2 + f1;          f1=f2;          f2=f;    } return f; };

user: user-0
content: 引用 4 楼 程序mode的回复:它可以提示你哪里错了 哇哦  真的哎谢谢！

user: user-2
content: 它可以提示你哪里错了

user: user-2
content: 你可以用vs2019的IDE

user: user-0
content: 引用 1 楼 程序mode的回复:主函数用整型或空类型运算就是int main（），或者void main（） 真的哎没错了， 非常谢谢！

user: user-2
content: 主函数用整型或空类型运算就是int main（），或者void main（）
user-0 提问: 前辈们救救孩子吧！-非常感谢！

回复:
user: user-1
content: 算法有问题吧，小数点1万位，超出double的精度了 借用LS的代码修改一下  int main() {     int n, m, p;     int i, k=0;     while (scanf("%d%d%d", &n, &m, &p) == 3) {         n %= m; //取余，为了计算小数         for (i = 0; i < p; i++) {             n *= 10; //像减法一样借位，借10倍             k = n / m; //借位后求出商即为小数点数             n %= m; //继续取余求下一位小数         }        printf("%d\n", k);     }     return 0; }

user: user-2
content: 引用 3 楼 _肆 的回复:总的逻辑是上面这样，for循环可以用math库里面的double pow(double x, double y)求次方函数代替，要往严谨了说，输入值的范围的限制得写一套提示，输入格式说“测试数据有多组，执行到文件结尾”，不知道是写个数组一次接收多组输入呢，还是读文本文件中的输入数据，都有对应的一套固定写法  执行到文件结尾不是必须从文件中读.不要忘了标准输入也是可以输入EOF的.Linux下是ctrl+d,windows下是ctrl+z.

user: user-2
content: 引用 4 楼 Kyrieup 的回复:[quote=引用 3 楼 _肆的回复:]总的逻辑是上面这样，for循环可以用math库里面的double pow(double x, double y)求次方函数代替，要往严谨了说，输入值的范围的限制得写一套提示，输入格式说“测试数据有多组，执行到文件结尾”，不知道是写个数组一次接收多组输入呢，还是读文本文件中的输入数据，都有对应的一套固定写法 嗯，应该是从文件读取，其他的都试了都不对[/quote] 执行到文件结尾不是必须从文件中读.不要忘了标准输入也是可以输入EOF的.Linux下是ctrl+d,windows下是ctrl+z.

user: user-0
content: 引用 3 楼 _肆的回复:总的逻辑是上面这样，for循环可以用math库里面的double pow(double x, double y)求次方函数代替，要往严谨了说，输入值的范围的限制得写一套提示，输入格式说“测试数据有多组，执行到文件结尾”，不知道是写个数组一次接收多组输入呢，还是读文本文件中的输入数据，都有对应的一套固定写法 嗯，应该是从文件读取，其他的都试了都不对

user: user-0
content: 引用 7 楼 qybao的回复:算法有问题吧，小数点1万位，超出double的精度了 借用LS的代码修改一下  int main() {     int n, m, p;     int i, k=0;     while (scanf("%d%d%d", &n, &m, &p) == 3) {         n %= m; //取余，为了计算小数         for (i = 0; i < p; i++) {             n *= 10; //像减法一样借位，借10倍             k = n / m; //借位后求出商即为小数点数             n %= m; //继续取余求下一位小数         }        printf("%d\n", k);     }     return 0; } 这个算法真的很巧，多谢(o^^o)

user: user-2
content: #include <stdio.h>    int main(void) {     int n, m, p;     int i;     double output;      while (scanf("%d%d%d", &n, &m, &p) == 3) {         output = n * 1.0/ m;          for (i = 0; i < p; i++)             output *= 10;          printf("%d\n", (int)output % 10);     }       return 0; }     供参考~

user: user-3
content: 首先将float output=(float)n/m 转为浮点数， 获取第一位小数：(output*10)%10 获取第二位小数：(output*100-)%10 其他类似

user: user-4
content: 总的逻辑是上面这样，for循环可以用math库里面的double pow(double x, double y)求次方函数代替，要往严谨了说，输入值的范围的限制得写一套提示，输入格式说“测试数据有多组，执行到文件结尾”，不知道是写个数组一次接收多组输入呢，还是读文本文件中的输入数据，都有对应的一套固定写法
user-0 提问: 结构体问题

回复:
user: user-0

user: user-1
content: 那就不清楚了。 struct note{}； 既不叫声明，也不叫定义，而是叫模板。  struct note game;才叫声明或定义，试试在这里赋值，或改成。 struct {     char name_0[5][10] = {"zhang","wang","zhao","liu","miao"};     int numble[5]; }game;

user: user-0
content: 结果对了，但是警告还在，第五行那里

user: user-1
content: scanf("%s",&name_1[10]); 应该是         scanf("%s",name_1);          for(int j = 0;j < n;j++) 应该是         for(int j = 0;j < 5;j++)
user-0 提问: 二级C语言的程序设计题

回复:
user: user-0
content: 引用 3 楼 寻开心 的回复：float只有6～7位有效数字， 1234.567， 从1开始数， 到了6和7，已经是有效数字的边缘了，后面再折腾也准不了 double有12～13位可以支持你的折腾解决了 非常感谢

user: user-0
content: 引用 3 楼 寻开心 的回复：float只有6～7位有效数字， 1234.567， 从1开始数， 到了6和7，已经是有效数字的边缘了，后面再折腾也准不了 double有12～13位可以支持你的折腾我再试试

user: user-0
content: 引用 1 楼 寻开心 的回复：自己仔细看看题目 要求的是double类型 你的float类型 精度不够啊1234.567 float型够了呀

user: user-1
content: float只有6～7位有效数字， 1234.567， 从1开始数， 到了6和7，已经是有效数字的边缘了，后面再折腾也准不了 double有12～13位可以支持你的折腾

user: user-1
content: double f;     scanf("%lf", &f);     int v = f* 100+0.5;     f = v/100.0;     printf("%lf\n", f);

user: user-1
content: 自己仔细看看题目 要求的是double类型 你的float类型 精度不够啊
user-0 提问: C语言求助 找不出bug

回复:
user: user-1
content: 明显不可以，第一个，内存没有NEW或者malloc,第二，一级指针不能修改指针地址，如果不明白第二个就搜二级指针。第一个都不明白的话就够呛了。

user: user-0
content: 引用 2 楼 user-3 的回复:void CS(char* src) {      char *srcptr, *replaceptr;       int srcLength = strlen(src);    //这里得到的值不一定就是15，有可能是大于等于0的任何数，      char replacement[15] = "C is awesome!";      srcptr = src;      replaceptr = replacement;      if (srcLength >= 15) {          for (int i = 0; i < 15; i++)       *srcptr++ = *replaceptr++;      } }   char * replace_string() {     char str[15];     CS(str);     return str; }  str是一个局部变量，且是指针，当这个函数执行完成后，内存被系统回收了，所以返回值这个指针是有问题的。 解决方法一。将str以指针的方式通过形参和实参进行传值。 解决方法二。将char str[15]修改为：char * str = (char *) malloc(15),当然处理完str后记得要free  void CS(char* src) {      char *srcptr, *replaceptr;       int srcLength = strlen(src);    //这里得到的值不一定就是15，有可能是大于等于0的任何数，      char *replacement = "C is awesome!";      srcptr = src;      replaceptr = replacement;       }  改成这样可以吗 char * replace_string() {     char *str;     CS(str);      }  int main(int argc, char ** argv) {     char * ret = replace_string();     printf("replaced string = %s\n", ret);     return 0; }

user: user-2
content: if (srcLength >= 15) {          for (int i = 0; i < 15; i++)       *srcptr++ = *replaceptr++;      } 加这句话有什么意义吗，长度就是0呀

user: user-3
content: void CS(char* src) {      char *srcptr, *replaceptr;       int srcLength = strlen(src);    //这里得到的值不一定就是15，有可能是大于等于0的任何数，      char replacement[15] = "C is awesome!";      srcptr = src;      replaceptr = replacement;      if (srcLength >= 15) {          for (int i = 0; i < 15; i++)       *srcptr++ = *replaceptr++;      } }   char * replace_string() {     char str[15];     CS(str);     return str; }  str是一个局部变量，且是指针，当这个函数执行完成后，内存被系统回收了，所以返回值这个指针是有问题的。 解决方法一。将str以指针的方式通过形参和实参进行传值。 解决方法二。将char str[15]修改为：char * str = (char *) malloc(15),当然处理完str后记得要free

user: user-1
content: 语法有严重的问题，replace_string返回的是临时内存，离开replace_string内存就释放了，你还用指针指向它.
user-0 提问: 咬文嚼字

回复:
user: user-0
content: 引用 1 楼 與蘤舊縐的回复:不能这么说，你感觉C++项目里写C语言也可以编译运行，但实际上不过是编译器自动识别了C++和C而已  两个语言还是有不可互通之处的，比如C99之后的标准支持用变量给数组定义长度，这种特性是C++不具备的，具体可百度，什么名字不记得了 提交了，这是一道多选题 选项是ABCD，都是奇奇怪怪的问题 我选了ABCD

user: user-1
content: 不能这么说，你感觉C++项目里写C语言也可以编译运行，但实际上不过是编译器自动识别了C++和C而已  两个语言还是有不可互通之处的，比如C99之后的标准支持用变量给数组定义长度，这种特性是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: #include<stdio.h> int main() {     double w,h,BMI;     //BMI=w/(h*h);     printf("请输入体重(kg)\n");     scanf("%lf", &w);     printf("请输入身高(m)\n");     scanf("%lf",&h);     BMI=w/(h*h);     //printf("BMI=%f\n",BMI);     printf("BMI=%lf\n",BMI);     return 0; }  供参考~

user: user-3
content: 引用 4 楼 寻开心的回复:[quote=引用 1 楼 ?Victor.?? 的回复:] scanf("%lf")爱鸥，不是I  这是10.0的眼神儿才能看出来的， l和I的区别啊[/quote] 艾欧更高一些

user: user-0
content: 引用 3 楼 寻开心的回复:#include<stdio.h> int main() {     double w,h,BMI;     BMI=w/(h*h);             // w和h 都不知道是几呢， 就开始算个鬼啊     printf("请输入体重(kg)\n");     scanf("%If",&w);     printf("请输入身高(m)\n");     scanf("%If",&h);     printf("BMI=%f\n",BMI);     return 0; } 知道了，非常感谢

user: user-0
content: 引用 1 楼 ?Victor.??的回复:scanf("%lf")爱鸥，不是I 为什么输出的结果一直是-0.000000

user: user-0
content: 引用 1 楼 ?Victor.??的回复:scanf("%lf")爱鸥，不是I 感谢感谢，改过来了

user: user-4
content: 引用 1 楼 ?Victor.?? 的回复:scanf("%lf")爱鸥，不是I  这是10.0的眼神儿才能看出来的， l和I的区别啊

user: user-4
content: #include<stdio.h> int main() {     double w,h,BMI;     BMI=w/(h*h);             // w和h 都不知道是几呢， 就开始算个鬼啊     printf("请输入体重(kg)\n");     scanf("%If",&w);     printf("请输入身高(m)\n");     scanf("%If",&h);     printf("BMI=%f\n",BMI);     return 0; }

user: user-3
content: 爱鸥，艾弗，不是爱，艾弗

user: user-3
content: scanf("%lf")爱鸥，不是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-0
content: 谢谢大佬，我去康康

user: user-2
content: 你的算法肯定是有问题的 输入一个1  2006 2 你自己看看会出来什么 if （first==0 ） first = 7；
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: 自己根据代码推导出， 一共进行了多少次关于n的计算 如果是  an+b ， a和b是系数， 那么复杂度就是O（n） 如果是。an^2 + bn+c , a,b,c是系数，那么复杂度就是O（n^2) 以此类推 遇到指数的情况，比如2^n, 那就比多项式要高， 复杂度就是O（2^n）  简单的说，得到计算公式后，忽略所有的系数， 只看影响最大的项目
user-0 提问: c语言输出一个三位数的逆数

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

user: user-2
content: #include <stdio.h>  void reverse_num(int num); int main(void) {     reverse_num(123);     putchar(10);     return 0; }  void reverse_num(int num) {     if (num == 0)         return;      printf("%d", num%10);     reverse_num(num / 10); } 供参考~

user: user-3
content: 这道题还有进价版本，输入int整数，int范围，2^-31~2^31-1,需要考虑溢出问题。 输入123  输出321 输入-123 输入-321 输入xxx ，假如逆序溢出，就输出0

user: user-0
content: 谢谢，已经做出来了。

user: user-4
content: 引用 5 楼 與蘤舊縐 的回复:不用递归怎么对得起这题目  getchar if ch!='0' putchar 对，还有这种非常规操作，利用递归乾坤大挪移

user: user-5
content: 不用递归怎么对得起这题目  getchar if ch!='0' putchar

user: user-4
content: 引用 3 楼 寻开心 的回复:a = m / 100; c = m%10; b = m/10%10; 对，这就是我不久前接触到的升级版本

user: user-6
content: a = m / 100; c = m%10; b = m/10%10;

user: user-6
content: 你到是当作字符串输入啊， 反向循环多简单

user: user-4
content: #include<stdio.h> int main() { 	int a,b,c; 	int m,n; 	scanf("%d",&m); 	a=m/100; 	b=(m-a*100)/10; 	c=m-100*a-10*b; 	n=c*100+b*10+a; 	printf("%d",n); 	return 0; } 刚开始学时的版本
user-0 提问: 结构体qsort排序

回复:
user: user-1
content: （sorry*)a 就已经指针类型转换了    转换完用->zhifu访问就是了

user: user-1
content: return strcmp((*(sorrt *)a)->zhifu,(*(sorrt *)b)->zhifu); 多了个星 return strcmp (  ((sorry*)a)->zhifu,  ((sorry*)b)->zhifu );
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: fmod() 用来对浮点数进行取模（求余），其原型为：     double fmod (double x);  设返回值为 ret，那么 x = n * y + ret，其中 n 是整数，ret 和 x 有相同的符号，而且 ret 的绝对值小于 y 的绝对值。如果 x = 0，那么 ret = NaN。  fmod 函数计算 x 除以 y 的 f 浮点余数，这样 x = i*y + f，其中 i 是整数，f 和 x 有相同的符号，而且 f 的绝对值小于 y 的绝对值。

user: user-3
content: 负数的有些区别，这个百度有
user-0 提问: for语句细节问题3

回复:
user: user-0
content: 引用 5 楼 user-1的回复:[quote=引用 4 楼 weixin_45718499 的回复:] [quote=引用 1 楼 user-1的回复:]第一个问题，不会INTJ=INTI+1只会改变INTJ的值 if(intP!=intI)intI不会改变 第二个问题,是循环五次才会继续执行 如果是intJ=intI++就会改变吗？[/quote] 这个你需要看看基础知识 i++;这个表达式他相当于i=i+1; i+1;这个表达式他相当于编译器给这个表达式的结果分配了一个同类型的内存，用来保存这个表达式的结果，如果你使用了这个结果他就会赋值，如果没有，比如 只有i+1;那么编译器不同处理可能不同，有些直接就优化掉了，因为你没有使用到这个值，编译之后的汇编码是没有i+1;这句对应的汇编的，有些会有，不同的编译器处理不同。而intJ=intI++;改变了intI的值在前，然后才有赋值，所以会改变[/quote] 感谢回复，我会好好巩固基础知识的

user: user-1
content: 引用 4 楼 weixin_45718499 的回复:[quote=引用 1 楼 user-1的回复:]第一个问题，不会INTJ=INTI+1只会改变INTJ的值 if(intP!=intI)intI不会改变 第二个问题,是循环五次才会继续执行 如果是intJ=intI++就会改变吗？[/quote] 这个你需要看看基础知识 i++;这个表达式他相当于i=i+1; i+1;这个表达式他相当于编译器给这个表达式的结果分配了一个同类型的内存，用来保存这个表达式的结果，如果你使用了这个结果他就会赋值，如果没有，比如 只有i+1;那么编译器不同处理可能不同，有些直接就优化掉了，因为你没有使用到这个值，编译之后的汇编码是没有i+1;这句对应的汇编的，有些会有，不同的编译器处理不同。而intJ=intI++;改变了intI的值在前，然后才有赋值，所以会改变

user: user-0
content: 引用 1 楼 user-1的回复:第一个问题，不会INTJ=INTI+1只会改变INTJ的值 if(intP!=intI)intI不会改变 第二个问题,是循环五次才会继续执行 如果是intJ=intI++就会改变吗？

user: user-0
content: 如果是intJ=inyI++就会改变吗？

user: user-1
content: 第一个问题，不会INTJ=INTI+1只会改变INTJ的值 if(intP!=intI)intI不会改变 第二个问题,是循环五次才会继续执行
user-0 提问: getch()获取键值，为什么横坐标的数据感觉是反的？

回复:
user: user-1
content: 屏幕坐标， 左上角是0，0， x向右增加， y向下增加

user: user-0
content: 上面这段代码，实际测试中，*号按左键向右走，按右键向左走。
user-0 提问: 用getch()获取方向键，怎么感觉横坐标方向是反的？

回复:
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 <iostream> #include <conio.h>  using namespace std;  int main(){ 	char ch1; 	ch1= getch(); 	cout << "刚才的输入是：" << int(ch1) << endl; 	return 0; }   ↑这是getch用法  #include <iostream> #include <conio.h>  using namespace std;  int main(){ 	char ch1; 	ch1= getch(); 	cout << "刚才的输入是：" << int(ch1) << endl; 	ch1= getch(); 	cout << "刚才的输入是：" << int(ch1) << endl; 	return 0; }   这是getch读入方向键    ------- 这个是方向键判断（主要看这个）  #include<iostream> #include<fstream> #include <conio.h> using namespace std;   void keyTest(){ 	char ch1;     while(true)     {         ch1=getch();         cout<<int(ch1)<<endl;         // 按一个键，返回两个值，第一个是224          switch(ch1){ 	        case 72: 	        	cout << "向上移动" << endl;  	            break; 	        case 80: 	        	cout << "向下移动" << endl;  	            break; 	        case 75: 	        	cout << "向左移动" << endl;  	            break; 	        case 77: 	        	cout << "向右移动" << endl;  	            break;         } 	} } int main(){ 	keyTest();  }  看懂了一定要结贴给分 点击结贴，点击平均给分，下面有个蓝色的结贴给分，点啊！ 我很想要分
user-0 提问: for语句细节问题2

回复:
user: user-1
content: 那就给分吧

user: user-0
content: 引用 1 楼 cool99781的回复:for没有{}所以只包括一组if 给分 感觉我这些基础问题就是给你送分的

user: user-1
content: for没有{}所以只包括一组if 给分
user-0 提问: 求大佬求解，为什么这一段没有代码

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: C语言中数组的基本操作（插入元素、删除元素、定位元素）我在写代码时出现了一些问题，希望能得到大佬们的解答！感谢！

回复:
user: user-1
content: 希望对你有帮助：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: local_sort函数  if(a[i]==k)     {          {         t=i; break;           }          return t;     }  这么写， 找到了之后break退出了循环， return t到后年马月都执行不到；  删除break语句吧

user: user-3
content: 楼上正解，都break了，return t不起作用。直接:  for(i=0; i<n; i++){   if(a[i] == k){      return i;    } }  return -1; //表示找不到  删除元素的话，你删除了，还得把后面的元素往前移一个位置。
user-0 提问: C语言指针

回复:
user: user-1
content: 实参变量和形参变量之间的数值传递是单向的值传递，  函数调用不可能改变实参指针变量的值，但可以改变实参指针变量所指变量的值。实参的P1，P2和形参的P1，P2不是同一个指针，只是你把名字改成一样。

user: user-2
content: int temp； temp = *p1； *p1 = *p2； *p = temp；  基础知识： 函数的形参和实参——仔细的看书，所有的教材都会有关于这个部分的说明，举例也都是说的交换数据这个破事儿 核心思想就是：传递给函数的都是变量的值， 在函数里面对值的修改，和原来的变量之间一毛钱关系都没有 上面的代码可以生效， 是因为传递进来的是地址，地址改变不了， 能改变的是地址指向的内容
user-0 提问: 日常一贴，大佬瞧瞧

回复:
user: user-0
content: 引用 8 楼 寻开心 的回复:C11标准在这点上就是更加严格的要求你必须非常清楚自己在干什么 通过这种错误警告，让你知道他们是不同的类型，不能随便乱用；  你非要用，而且自己清楚后果，强制转换后还是可以用的 我还是乖乖听话吧

user: user-1
content: C11标准在这点上就是更加严格的要求你必须非常清楚自己在干什么 通过这种错误警告，让你知道他们是不同的类型，不能随便乱用；  你非要用，而且自己清楚后果，强制转换后还是可以用的

user: user-0
content: 引用 5 楼 寻开心 的回复:char * 指针指向的内容是可更改的 const char *指向的内容是只读的 这是两种不同的类型  "abc"这种字符串，符合const char *的要求， 不符合char*的要求 懂了

user: user-0
content: 引用 4 楼 寻开心 的回复:本来类型就不相同，你非要用，非要用，非要用， 那就只能强制转化了呗 这不能怪我呀，书上说的，是不是跟什么C11，C几几的标准有关，很古老的编译器是可以用的？

user: user-1
content: char * 指针指向的内容是可更改的 const char *指向的内容是只读的 这是两种不同的类型  "abc"这种字符串，符合const char *的要求， 不符合char*的要求

user: user-1
content: 本来类型就不相同，你非要用，非要用，非要用， 那就只能强制转化了呗

user: user-0
content: 引用 1 楼 寻开心 的回复:"abc" 这种就是const char * ， 这种字符串都分配在只读内存， 不可更改的 要编译无警告：     const char *arr[]={"abc","qwer","sssssss"};     char *arr[] = { (char*)"abc", (char*)"qwert", ....}; 强制转换？

user: user-1
content: char *arr[] = { (char*)"abc", (char*)"qwert", （char*）“sssss”}; 这种虽然可以骗过编译器， 但是你还是不可以取修改这些字符串里面的内容， 否则后果自负，勿谓言之未预也！

user: user-1
content: "abc" 这种就是const char * ， 这种字符串都分配在只读内存， 不可更改的 要编译无警告：     const char *arr[]={"abc","qwer","sssssss"};     char *arr[] = { (char*)"abc", (char*)"qwert", ....};
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: int main() {     printf("请输入学生学号：\n");     J=FindStudent(b);     do     {         if(J>=0)             printf("该学生成绩为：%d\n",a[J]);         else             printf("查无此人\n");         printf("是否继续查询(y/n):\n");         scanf("%c",&ch);     }     while(ch=='y');     return 0; } 为什么这样while还是不起作用？

user: user-0
content: 这个也不能实现无限次查询呀

user: user-2
content: #include<stdio.h>  int a[3]={45,77,21},b[3]={1001,1008,1007};//,i,n=3,sum=0,cont=1,v,f,jude,G,J,m,t=1; int n = 3; //char ch; int FindStudent(int b[]) {     int i, no;     scanf("%d",&no);     for(i=0; i<n; i++)     {         if(b[i]==no)             return i;     }     return -5; } int main() {     int idx, ch;      printf("请输入学生学号：\n");     idx=FindStudent(b);     //if(idx>0)     if(idx >= 0)         printf("该学生成绩为：%d\n",a[idx]);     else         printf("查无此人\n");     do     {         printf("是否继续查询(y/n):\n");         while ((ch = getchar()) == '\n')             ;         //scanf("%c",&ch);         if(ch=='y')         {             printf("请输入学生学号：\n");             idx=FindStudent(b);             //if(idx>0)             if(idx >= 0)                 printf("该学生成绩为：%d\n",a[idx]);             else                 printf("查无此人\n");         }         /*         else             t =-1;         */     } while(ch != 'y');      return 0; }  供参考~

user: user-3
content: 应该是系统编码的问题

user: user-4
content: 理想很丰满，现实就那样 后面还有一个 J>0 的判断，在do {} while()循环体内  中文乱码， 要看你从哪儿copy过来的文字了， 文字有很多编码， GB23123/GBK的双字节编码才对。  如果是unicode/utf-8/utf-16之类的就不行了

user: user-4
content: 1001就是b[0] 返回了0， 可你的 if(J>0)     printf("该学生成绩为：%d\n",a[J]); else printf("查无此人\n");  就是查无此人啦  J>=0 才对

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: 引用 4 楼 qq_46374834 的回复：[quote=引用 2 楼 初学小菜的回复:]原题是陶陶摘苹果，百度有 嗯，但是我觉得那种代码太复杂了[/quote]这个就是个结构体呀……可有简单的代码呢

user: user-3
content: 你换成我说的数据也对了吗？你就假设高度都相同，然后按照我举例子的力气来输入数据，看看结果是不是对的？

user: user-0
content: 引用 2 楼 初学小菜的回复:原题是陶陶摘苹果，百度有 嗯，但是我觉得那种代码太复杂了

user: user-0
content: 引用 1 楼 user-3的回复:是你把问题想简单了，还是我把问题想复杂了？ 比如力气胜3，以下的苹果需要的力气（高度先不考虑） 苹果1 力气3 苹果2 力气2 苹果3 力气1 苹果4 力气1 苹果5 力气1 按照你的逻辑，最多只能摘1个苹果（苹果1），力气就用完了，而我觉得应该摘3个苹果（苹果3，苹果4，苹果5）才是摘得的苹果数最多。 代码是对的，我在编译器上换了几组数据都是对的勒

user: user-2
content: 原题是陶陶摘苹果，百度有

user: user-3
content: 是你把问题想简单了，还是我把问题想复杂了？ 比如力气胜3，以下的苹果需要的力气（高度先不考虑） 苹果1 力气3 苹果2 力气2 苹果3 力气1 苹果4 力气1 苹果5 力气1 按照你的逻辑，最多只能摘1个苹果（苹果1），力气就用完了，而我觉得应该摘3个苹果（苹果3，苹果4，苹果5）才是摘得的苹果数最多。
user-0 提问: int数据在txt中的大小问题

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

user: user-2
content: 我们说的占4个字节都是指内存,而不是文件哦.

user: user-3
content: 如果你存一个 int i=567，你会发现是3个字节。 这是因为你是以文本方式保存的。 以文本格式保存，系统会把每一位数字都当成一个字符（字节） 也就是文本中存了5、6、7这三个字符。

user: user-4
content: 你在txt中看到的是字符，不是字节，你用二进制的方式来写文件才会是字节。所以txt看到的4是1个字符，占1个字节（c里1个char是1个字节），21是两个字符，所以是两个字节。

user: user-5
content: int 32最大值有10位呢， 你写到txt里面就是10个字节了哦 表示的方式不同啊， 内存当中就是用固定大小的内存来表示int的， 文本文件当中不是，是多少位占多少位 和内存对应的文件是二进制文件，二进制文件里面一个int也是4字节

user: user-6
content: 你能看到的都是字符，是经过编码的，真存个1进去你就看不懂了
user-0 提问: 建立单向链表
输入打乱顺序
输出按从小到大的顺序

回复:
user: user-1
content: 和普通单链表一样，只不过增加一个排序sort的算法

user: user-2
content: #include <stdio.h> #include <stdlib.h> #include <string.h>   typedef struct ListType { int n; struct ListType * next; } List;  // 创建一个带有头节点的单项链表 List * CreateList(int n, int * v) {     if (n<=0 ) return NULL;     List * pHead = (List*) malloc(sizeof(List));     List *p = pHead;     pHead->n = n;  // 头节点的n，用来记录链表的长度了     while (n--) {         p->next = (List*) malloc(sizeof(List));         p->next->n = *v++;         p = p->next;     };     p->next = NULL;     return pHead; };  void PrintList(List * pList) {     List * p = pList;     while (p->next) {         printf("%d ", p->next->n);         p = p->next;     }     printf("\n"); }  void SortList(List * pList) {     if ( NULL == pList) return ; // 空     if ( pList->n <2 ) return;  // 只有一个或者是没有，排个屁     int x=0;     while ( x < pList->n ) {         List * p = pList->next;         List * pNext = p->next;         while ( p && p->next ) {             if ( p->n > pNext->n) {                 int t = p->n;                 p->n = pNext->n;                 pNext->n = t;             }             p = pNext; pNext=pNext->next;         }         x++;     } } int main() {     int init[] = {3, 8, 4, 7, 6, 2};     List * pList = CreateList(6,init);     PrintList(pList);     SortList(pList);     PrintList(pList);     return 0; }

user: user-3
content: https://blog.csdn.net/qq_45861670/article/details/104324788  这个可能有帮助
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: 编译器是Devc++
user-0 提问: 【入门菜鸟求助！QAQ】一用scanf就段错误！

回复:
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 楼 cool99781 的回复：学会了吗 学会了结贴给分怎么结贴

user: user-0
content: 引用 2 楼 cool99781 的回复：学会了吗 学会了结贴给分靠 我真是智障

user: user-2
content: 学会了吗 学会了结贴给分

user: user-2
content: 写错了 #include <stdio.h>  int main() { int i; scanf("%d", &i); scanf("%d\n",i); return 0; } 就行了
user-0 提问: 字符数组排序

回复:
user: user-1
content: #define N 10; int main(){     char a[N];     for(int i = 0; i < N; i++){         a[i] = getchar();     }           for(int i = 0; i < N - 1; i++){         int k = i;         for(int j = i + 1; j < N; j++){             if(a[k] > a[j]) {                 k = j;             }             if(k != i){                 int t = a[i];                 a[i] = a[k];                 a[k] = t;             }         }     }   }

user: user-2
content: 后面的代码当中 循环找到k之后， 要做的是a[k]和a[i]的交换 t=a[k]； a[k]=a[i]; a[i]=t; 这个顺序不能换， 顺序换了就错了  按照你原来的代码 t=a[k]； a[i]=t; // 这两句的结果就是t=a[i]=a[k]三者都是同一个值了  a[k]=a[I]; //这句就没有任何意义了，数值都是一样的了， 赋值与否没有任何区别了  仔细体会一下 t=a[k]； a[k]=a[i]; a[i]=t; 这个结果可不会导致三者全等

user: user-3
content: for(i = 0 ; i < 2 ; i++) {      k = i;      for( j = i+1; j < 2; j++)           {                  if(a[k] > a[j])                   {                         t = a[i];                         a[i] = a[j];                         a[j] = t;                    }            } }
user-0 提问: 关于Visual Studio 2019调试一维数组的错误数据

回复:
user: user-1
content: 引用 4 楼 AKK188888881 的回复:老哥 高明啊   但是为什么把断点设置在return 0就行了呢？  我之前的方法是，先按F10（逐过程），然后Shift+F9(快速监视)，输入变量，得出变量，这是网上的方法。那断点方法设置在return 0上为什么就行了呢？ 代码是一句一句依次执行。到了return 0那句时，前面的语句执行完了，当然会起效果。 如果想知道怎么起的效果，可以Ctrl+Alt+D看一下反汇编。

user: user-0
content: 老哥 高明啊   但是为什么把断点设置在return 0就行了呢？  我之前的方法是，先按F10（逐过程），然后Shift+F9(快速监视)，输入变量，得出变量，这是网上的方法。那断点方法设置在return 0上为什么就行了呢？

user: user-2
content: 你把断点设置在return 0；上再看

user: user-1
content: 关键是还没运行到那行代码
user-0 提问: 求详细解答获取衣服除去\n的方法

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:getchar就是从键盘获得一个字符，每次调用只取一个字符 上次输入的回车被getchar获取后，因为flag是1的缘故，能进入循环体的， z=c把回车赋值给了z， flag成为了0 此后getchar获得正去的字符了，满足c不等于回车的条件，循环继续进入，z=正确的字符 如果这一行你输入了多个字符，那么z最后保留的是最后的那个字符 然后再回车， 此时c不等于回车条件不满足，flag也早就变成了0，所以循环条件不成立，循环结束，返回的z就是最后输入的那个字符  比如，你输入123回车， 返回的就是z  满意答案就给揭帖去， 总是提问不揭帖，就没有人再给你答复了。 我不知道有揭贴这个功能，sorry,sorry

user: user-1
content: getchar就是从键盘获得一个字符，每次调用只取一个字符 上次输入的回车被getchar获取后，因为flag是1的缘故，能进入循环体的， z=c把回车赋值给了z， flag成为了0 此后getchar获得正去的字符了，满足c不等于回车的条件，循环继续进入，z=正确的字符 如果这一行你输入了多个字符，那么z最后保留的是最后的那个字符 然后再回车， 此时c不等于回车条件不满足，flag也早就变成了0，所以循环条件不成立，循环结束，返回的z就是最后输入的那个字符  比如，你输入123回车， 返回的就是z  满意答案就给揭帖去， 总是提问不揭帖，就没有人再给你答复了。
user-0 提问: C语言结构体先定义再一次性赋值的问题

回复:
user: user-1
content: 这种形式vs2015以后C语言才会支持，还有我用vs2017c++来编译也不支持，换成c才通过

user: user-0
content: 1楼说的改成cpp文件 试了下也不行。

user: user-2
content: 你这个c文件， 按照c语言的规则来的 你改成cpp文件看看吧

user: user-3
content: 你不用(struct student)，直接(student)就行了

user: user-4
content: s2 = { 10, 20 }; 这个是列表初始化，是 C++11 引入的，你的 VS2010 明显不可能支持。 s2 = (struct student) { 10, 20 }; 这个是赋值语句加上复合字面量，并不是所谓的强制转换后赋值，在 C99 引入，VS2010 也不支持。(从 VS2013 开始，这种语法被支持)

user: user-5
content: 各版本vs对c++11标准的支持

user: user-6
content: too old

user: user-0
content: 引用 6 楼 ?Victor.??的回复:[quote=引用 4 楼 myomnipotence 的回复:] [quote=引用 3 楼 真相重于对错的回复:]s2 = {10,20 }; 这个已经试过了 也没编译通过。[/quote] 这个是可以的呀[/quote] 看大家回复，应该是用的VS2010的问题。

user: user-5
content: 引用 4 楼 myomnipotence 的回复:[quote=引用 3 楼 真相重于对错的回复:]s2 = {10,20 }; 这个已经试过了 也没编译通过。[/quote]你用的是vs2010吧？ 换vs2015，你的编译器不支持c++11

user: user-6
content: 引用 4 楼 myomnipotence 的回复:[quote=引用 3 楼 真相重于对错的回复:]s2 = {10,20 }; 这个已经试过了 也没编译通过。[/quote] 这个是可以的呀

user: user-6
content: 编译器的问题 vs规定 后跟初始值设定项列表的带圆括号类型是一个非标准的显式类型转换语法 dev-c++就不会报错

user: user-7
content: 那这个怎么解决请问

user: user-6
content: 我vs已经卸载了，也不知道呀，但这种强制类型的转换不是很好的编程习惯，而且和环境有很大关系

user: user-0
content: 引用 3 楼 真相重于对错的回复:s2 = {10,20 }; 这个已经试过了 也没编译通过。

user: user-7
content: 这个是可以的

user: user-5
content: s2 = {10,20 };
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: 你可以去C#版块看看 .NET技术-------C#

user: user-0
content: 引用 1 楼 ?Victor.??的回复:你可以去C#版块看看 .NET技术-------C# 新手，其实就是想知道这个跟主窗体Form1特有语法还是人为命名的方法？
user-0 提问: 萌新遇到一个小问题

回复:
user: user-0
content: 引用 7 楼 cool99781 的回复：明显是while   n-1次，其他零碎不管，就是O（n）了 给分吧还有前面的hxd已经帮我了嘿嘿

user: user-0
content: 引用 7 楼 cool99781 的回复：明显是while   n-1次，其他零碎不管，就是O（n）了 给分吧咋给分啊，我复习↓这个软件

user: user-1
content: 明显是while   n-1次，其他零碎不管，就是O（n）了 给分吧

user: user-0
content: 引用 4 楼 寻开心 的回复：是B 看循环执行的次数和i的关系 明显循环执行了n-1次， 这是线性关系， 所以是O（n） 执行次数不管是100n 还是10000n，也不管后面加或减多大的固定数值， 它都是O（n）  算复杂度，就看执行次数和n的关系，而且只看多项式最高的项目，或者指数之类的，对整个表达式起决定性作用的项，忽略其他的以及各种系数和常数  比如  2^n + n^8 只看2^n,  毕竟指数增长比n的多少次方这种增长的快， 复杂度就是O（2^n)好的，感谢，基本懂了

user: user-0
content: 引用 3 楼 初学小菜 的回复：通俗的可以理解为循环的个数，具体得看看书哈，这题选b网上刚学的网课，没书——

user: user-0

user: user-2
content: 是B 看循环执行的次数和i的关系 明显循环执行了n-1次， 这是线性关系， 所以是O（n） 执行次数不管是100n 还是10000n，也不管后面加或减多大的固定数值， 它都是O（n）  算复杂度，就看执行次数和n的关系，而且只看多项式最高的项目，或者指数之类的，对整个表达式起决定性作用的项，忽略其他的以及各种系数和常数  比如  2^n + n^8 只看2^n,  毕竟指数增长比n的多少次方这种增长的快， 复杂度就是O（2^n)

user: user-3
content: 通俗的可以理解为循环的个数，具体得看看书哈，这题选b

user: user-0
user-0 提问: 求解

回复:
user: user-1
content: 可能是有程序在运行没有关掉，就是运行的黑框，都关掉，再运行。 满意给分

user: user-2
content: 代码没有问题，具体原因对照着找找吧 https://blog.csdn.net/qq_45861670/article/details/104015023

user: user-3
content: exe文件输出没有成功 360安全卫士那个夯货， 认为是病毒给杀掉了吧。 看截图，那夯货在呢
user-0 提问: c数据结构删除链表

回复:
user: user-1
content: 原始题目不都给了你说明了吗， 要删除的节点是除了第一个和最后一个的， 01当中0就是第一个，1就是最后1个 要删除第一个，删除后头指针就变了， 按照那个函数给的原型，头指是传递进来的，因为无法把删除的结果反馈给上级调用，那么删除了就乐子大了。  删除的写法是找到下一个节点和要删除的内容匹配， 也没有节点的下一个节点是头节点啊。 要删除也要特殊写代码，还要改函数的原型才合理

user: user-2
content: 因为你是node节点的next节点开始遍历的，而且你的遍历的判断的顺序也存在问题（应该判断节点是否为空后判断节点的值），即修改代码 r=s=node; while(s!=null&&s->val!=n) {//先判断节点是否为空     r=s;     s=s->next; } if (s==NULL) return; //如果没找到 r->next = s->next; //如果s是头节点，还要重新设置head（因为你的参数只传node进来，所以head指针的问题不讨论，这里只是为了告诉你为何你的程序删除不了第一个节点） free(s);
user-0 提问: 求解

回复:
user: user-1
content: 直接建立一个临时变量temp，temp=a，if temp<b，temp=b，c同理

user: user-2
content: 懂了揭帖啊，给分

user: user-0
content: 引用 4 楼 程序代码的回复:'>>'改成'>',还有程序少考虑了相当的情况，如a=2，b=2，c=1，则输出c 嗯嗯明白了多谢假期没怎么看忘了不少

user: user-2
content: >>、<<这是位运算符，你现在先不用知道，大于是>，小于是< 呵呵

user: user-3
content: '>>'改成'>',还有程序少考虑了相当的情况，如a=2，b=2，c=1，则输出c

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:>>  查查这是什么运算符吧 哦哦哦哦我竟然把这给忘了

user: user-4
content: 引用 1 楼 與蘤舊縐 的回复:>>  查查这是什么运算符吧 这是啥呀，求告知，cout<<,cin>>,

user: user-1
content: >>  查查这是什么运算符吧
user-0 提问: 求助，C语言线性表问题

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:为啥要定义？       首先这不是必须      1 重新定义后， 不必每次使用这个类型的时候，都带上struct 这个关键词， 只用LinearList就可以了      2 以后想给struct 改个名字的时候，不用重新改代码，只改这个typedef就好了  ElementType GetElem(LinearList *L, int i) {    //在0->n-1中查询     return (i < 0 || i >= L->Last) ? NULL : L->data[i]; } 函数的返回值是ElementType，按照前面的定义就是int类型， 而NULL是指针类型， 不匹配； 如何修改，取决于你的数据范围，如果正常的数据都是正整数，那么把NULL改成0，或者-1什么的，用这个特殊的数值来表示返回错误是可以的。 如果这个有效数据范围是整个int范围，那么这个函数就不应该这么写， 调用这个函数之前就要自己去检查参数是否是有效范围内的 就好比，你自己定一个数组 int  ary[10];   你很清楚就不应该访问ary[-1], ary[10]这样的操作 这个范围检测的工作交给了程序员， 而不是实现数组功能的编译器 谢谢大佬谢谢大佬！！

user: user-1
content: tyepdef 简单理解就是给旧类型取别名。

user: user-2
content: 重定义（typedef)一部分考虑是代码的可读性，其实如果不重定义也没关系。用结构体直接定义变量也是可以的。  自定义函数返回的事int类型，但是函数内return了NULL。

user: user-3
content: typedef struct linearList LinearList;就是以后你可以直接使用LinearList来定义结构体变量，而不是使用struct linearList，当然你要使用struct linearList也是可以的。注意一个是L开头，一个是小写l开头。

user: user-4
content: 为啥要定义？       首先这不是必须      1 重新定义后， 不必每次使用这个类型的时候，都带上struct 这个关键词， 只用LinearList就可以了      2 以后想给struct 改个名字的时候，不用重新改代码，只改这个typedef就好了  ElementType GetElem(LinearList *L, int i) {    //在0->n-1中查询     return (i < 0 || i >= L->Last) ? NULL : L->data[i]; } 函数的返回值是ElementType，按照前面的定义就是int类型， 而NULL是指针类型， 不匹配； 如何修改，取决于你的数据范围，如果正常的数据都是正整数，那么把NULL改成0，或者-1什么的，用这个特殊的数值来表示返回错误是可以的。 如果这个有效数据范围是整个int范围，那么这个函数就不应该这么写， 调用这个函数之前就要自己去检查参数是否是有效范围内的 就好比，你自己定一个数组 int  ary[10];   你很清楚就不应该访问ary[-1], ary[10]这样的操作 这个范围检测的工作交给了程序员， 而不是实现数组功能的编译器
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