Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 新手求教

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 2 楼 weixin_56991544 的回复:也就是中间值的时候都是用的int的类型？ 有一个类型隐式提升，可以查一下～ 比如~i会自动将i的类型提升到int类型～

user: user-0
content: 也就是中间值的时候都是用的int的类型？

user: user-2
content: 这中间都掺杂着类型转换，比如i = ~i;首先~i取反会类型提升到int，所以~i的结果是-251（最高位为符号位int类型）； i = ~i;把-251赋值给i会有类型int转成unsigned char（最终转成unsigned char）。
user-0 提问: 该程序编译没问题，输出有错误，求教！！

回复:
user: user-1
content: 供参考：#include <stdio.h>  int  intput(int *p); void enter(int *p,int a);  int  main() {     int s[100],k;//k代表输入数的个数     k=intput(s);     enter(s,k);     system("pause"); }  int intput(int *p) //int input(int *p) 函数名少了‘t' {     int a=0;     do       {        scanf("%d",p++);        a++;            //需要对a设个上限值     }while(*(p-1)>0); //while(*p<0);     return a; } void enter(int *p,int a) {     for(int i=0;i<a;i++)// for(int i=0;i<=a;i++)         printf("%d  ",*(p+i)); }

user: user-2
content: //#include "stdio.h" #include <stdio.h>  int input(int *p, int len); void enter(int *p,int a);  //void main() int main(void) {     int s[100],k;//k代表输入数的个数     //k=intput(s, 100);     k=input(s, 100);     enter(s,k); } int input(int *p, int len) {     int a=0;     do     {         //scanf("%d", p+1);         scanf("%d", p+a);         a++;         if (a >= len)             break;     //} while(*p < 0);     } while(*(p+a-1) > 0);      return a; } void enter(int *p,int a) {     for(int i=0;i<=a;i++)         printf("%d  ",*(p+i)); } 供参考～

user: user-3
content: intput => input
user-0 提问: 求大神解答一下

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 没说解答什么呢；

user: user-3
content: 题目有啥要求？出现啥问题？？说清楚一点吧。
user-0 提问: 有大佬能给个这题的代码吗，我是刚学的小白，这题属实是不会弄了，谢谢了谢谢了

回复:
user: user-1
content: 供参考：#include<stdio.h> #include<math.h>  int main() {     int    i=1;     double temp=1,sum=1,x;     scanf("%lf",&x);     while(fabs(temp)>=1e-6)     {           temp = temp*x/i;           sum += temp;           temp = -temp;           i++;     }     printf("%lf\n",sum);          return 0; }

user: user-2
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-3
content: 这有难度么？为什么自己不动手写一下呢？？

user: user-4
content: 网上搜搜吧，可以看一下别人怎么写的，也能看到别人的讲解～
user-0 提问: C语言

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 完全可以这么写呢，但是你的代码不全，上面这么写，下面肯定也是从i=1开始的，所以要改都改了才行～  另外，N的输入值需要判断一下，不能大于99(100-1）因为从1开始，i <= N-1

user: user-0
content: 确实从1开始才符合这题，但从0也是合理

user: user-3
content: 有的人喜欢把手机放进左边口袋，有的人喜欢放右边，你要是喜欢并且方便，拿在手里也可以。  从这个片段中看不出理由， he or she seems like to do so.
user-0 提问: 简单问题有人能全答对吗

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 不同编译器，不同内核系统，硬件不同，答案也不同，问题很简单。你把整个底层问个遍 吧 引用 楼主 m0_56094393 的回复:Int类型中最多可以表示多少个不重复的自然数?多少个不重复的整数?int类型最大数在计算机中的ascii码是?最小数在计算机中的ascii码是多少?

user: user-3
content: 看一下int类型占几个字节（跟系统、编译器有关系），另外，看一下int的表示范围～

user: user-4
content: 楼主应该问一下上帝：C语言int类型应该占几个字节？
user-0 提问: 球球大佬看一下哪里有问题

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 注意溢出问题，注意unsigned int表示的范围；

user: user-3
content: 1. 外层for循环里面n=1,n<=9是固定循环9次，按照要求应该是给定的n次才对啊 2. 内层for循环应该带上x=x*10+a，这样才可以达到例如2222的这种要求把 就像3楼大佬给的代码那样

user: user-4
content: 输入，输出C=>C++  scanf("%d",&a);=>cin printf("n=?\n");=>cout

user: user-4

user: user-5
content: 仅供参考 #include <stdio.h>  int Mult10(int n) {     int sum=10;     int m;     if(n==0)return 1;     for(m=1;m<n;m++)sum=sum*10;     return sum; }  int main() {     int a,n,sn,x=0;     int i,j;     printf("a=?\n");     scanf("%d",&a);     printf("n=?\n");     scanf("%d",&n);     sn=0;     for(i=0;i<n;i++)     {         for(j=0;j<=i;j++)             x+=a*Mult10(j);         sn+=x;         x=0;     }     printf("sn=%d\n",sn);     return 0; }

user: user-4
content: 内嵌循环x=0；何意？
user-0 提问: 有没有大佬告诉我为什么运行不出正确答案呢？

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 修改如下,供参考：#include<stdio.h> #include<math.h> int main() {    double pi=0.5,term=0.0,n,j=1.0;    int    i=1;      do{         //for(i=1;i>0;i=i+2)         j=j*i/(i+1);         n=1.0/(i+2)*pow(0.5,i+2);         term=j*n;         pi=pi+term;         i+=2;     }while(fabs(term)>=1e-6);     pi=6*pi;     printf("pi=%10.8f\n",pi);          return 0; }
user-0 提问: 求大神解答，关于回文数，吸血鬼数，高位数加法。

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 求素数与判断质数这个解决  大数加法要看使用哪种形式，char数组？

user: user-2

user: user-2
content: 等于反转后的数就是回文数。大数加法把输入部分写出来看看，不同的思路有不同的解法。

user: user-0
content: 引用 1 楼 智者知已应修善业的回复:回文这个解决 啊……这个看不太懂……没学过栈……

user: user-0
content: 引用 3 楼 智者知已应修善业的回复:求素数与判断质数这个解决  大数加法要看使用哪种形式，char数组？ 谢谢！太及时啦!嗯嗯！就是数组的!

user: user-2
content: 回文这个解决
user-0 提问: c语言unsigned？

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 1/3改成1.0f/3目的是将表达式的计算由unsigned int类型转换为float类型。否则1/3得的值为0；

user: user-3
content: 整型相除结果为整型，1/3结果为0

user: user-4
content: 1改成1.0f

user: user-5
content: f1改下：f1=1*1.0/3*c*d*N;
user-0 提问: 有大神可以帮我看看这段代码错在哪里了吗？

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 一个分号引发的惨案

user: user-0
content: 引用 1 楼 user-3的回复:第15行if()语句最后多了‘；’号。 对对对，我真的瞎，这都没发现

user: user-3
content: 第15行if()语句最后多了‘；’号。
user-0 提问: 求助，为什么一直不是回文数

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: #include <stdio.h> int main() {     int a,b,c,d,e,f;      printf("输入一个五位数整数:");     //scanf("d",&a);     scanf("%d",&a); #if 0     b=a/10000;      /*万位数*/     c=a%10000/1000;   /*千位数*/     d=a%1000/100; /*百位数*/     e=a%100/10; /*十位数*/     f=a%10;   /*个位数*/     if (b==f&&c==e)         printf("该数是回文数");     else         printf("该数不是回文数"); #endif      if (a <= 9999 || a > 99999)         return -1;     b = a /10000;     f = a % 10;     if (b != f) {         printf("该数不是回文数");         return -1;     }      c = a % 10000 / 1000;     e = a % 100 / 10;      if (c != e) {         printf("该数不是回文数");         return -1;     }     printf("该数是回文数");      return 0;  } 供参考～

user: user-3
content: 供参考：#include <stdio.h> int main() {     int a,b,c,d,e,f;     printf("输入一个五位数整数:");     scanf("%d",&a);   //scanf("d",&a);     b=a/10000;        /*万位数*/      c=a/1000%10;     /*千位数*/ //c=a%10000/1000; /*千位数*/      d=a/100%10;      //d=a%1000/100;  /*百位数*/      e=a/10%10;       //e=a%100/10;/*十位数*/     f=a%10;         /*个位数*/     if (b==f&&c==e)         printf("该数是回文数\n");     else         printf("该数不是回文数\n");          return 0; }

user: user-4
content: 可参 可参
user-0 提问: 为什么它运行不了

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: ‘//.......’表示它的后面所跟的内容只起说明作用，不会被编译进代码里。//scanf("%d%d%d\n",&a,&b,&c);这句是你提供的代码里的内容。 整体修改如下，供参考：#include<stdio.h> #include<math.h> void main() {     int a,b,c;     double area,s;     printf("请输入三角形的三条边a,b,c:\n");     scanf("%d%d%d",&a,&b,&c);//标注--错误在这句：scanf("%d%d%d\n",&a,&b,&c);     if(a+b>c&&a+c>b&&b+c>a)      {         s=(a+b+c)*0.5;         area=sqrt(s*(s-a)*(s-b)*(s-c));         printf("%.2f\n",area);         if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)               printf("此三角形为直角三角形\n");         else if(a==b||a==c||b==c)               printf("此三角形为等腰三角形\n");         else if((a==b)&&(b==c))               printf("此三角形为等边三角形\n");         else               printf("此三角形为一般三角形\n");      }     else         printf("不能构成三角形\n");      }

user: user-3
content: 等边三角形会被认为是等腰三角形

user: user-2
content: 完善下，供参考：#include<stdio.h> #include<math.h> void main() {     int a,b,c;     double area,s;     printf("请输入三角形的三条边a,b,c:\n");     scanf("%d%d%d",&a,&b,&c);     if(a+b>c&&a+c>b&&b+c>a)      {         s=(a+b+c)*0.5;         area=sqrt(s*(s-a)*(s-b)*(s-c));         printf("%.2f\n",area);         if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b)               printf("此三角形为直角三角形\n");         else if(((a==b||a==c) && b!=c)||((b==c||b==a)&& a!=c))               printf("此三角形为等腰三角形\n");         else if((a==b)&&(b==c)&&(a==c))               printf("此三角形为等边三角形\n");         else               printf("此三角形为一般三角形\n");      }     else         printf("不能构成三角形\n");      }

user: user-0
content: 而且加了那个\n并没有用，依旧运行不了

user: user-0
content: 为啥前面要加斜杠

user: user-2
content: 这句有错误：scanf("%d%d%d",&a,&b,&c);//scanf("%d%d%d\n",&a,&b,&c);
user-0 提问: 麻烦哪位大神和我说说下面给我的警告是啥意思？为啥我感觉用着也没问题呀？

回复:
user: user-1
content: 声明了全局静态数组a[]，却没有给出大小，程序不出错是你的运气。如果你声明了其它静态变量，由于a[]没有给出大小，在scanf向a放入输入字符串的时候，会覆盖其它静态变量，程序必然出错！概念要清晰！

user: user-0
content: 引用 7 楼 forever74 的回复:1、作为一维数组名，a和&a表示的地址值相同是必然的，不是偶然。但更重要的是它们还有区别，位于白马背上的不一定都是猴子的师傅。 2、字符串，是特定的语法概念，其实体结构，开始于某个首地址，结束于码值为0的字符。用首地址表示，同时其语法意义也多半是其首地址。可以放进字符数组这个容器，也可以不放。 字符数组是每个元素占用1字节的数组，可以用来存放字符串也可以用来存放不是字符串的东西。 3、见上，%s引用首地址，打印字符串。碰巧该字符串放在字符数组里，看着好像打印字符数组了。 谢谢

user: user-0
content: 引用 6 楼 user-3 的回复:在CSDN论坛里搜下"字符数组和字符串的区别和联系". scanf()函数用法，参考下：https://blog.csdn.net/luxuejuncarl/article/details/1576513   谢谢

user: user-2
content: 1、作为一维数组名，a和&a表示的地址值相同是必然的，不是偶然。但更重要的是它们还有区别，位于白马背上的不一定都是猴子的师傅。 2、字符串，是特定的语法概念，其实体结构，开始于某个首地址，结束于码值为0的字符。用首地址表示，同时其语法意义也多半是其首地址。可以放进字符数组这个容器，也可以不放。 字符数组是每个元素占用1字节的数组，可以用来存放字符串也可以用来存放不是字符串的东西。 3、见上，%s引用首地址，打印字符串。碰巧该字符串放在字符数组里，看着好像打印字符数组了。

user: user-3
content: 在CSDN论坛里搜下"字符数组和字符串的区别和联系". scanf()函数用法，参考下：https://blog.csdn.net/luxuejuncarl/article/details/1576513

user: user-0
content: 引用 2 楼 forever74的回复:其一，scanf里面第二个参数应该是a，而不是&a。没表现出问题是因为它俩的“值”都是同样的地址值。但是它们的类型不同，乱用是一个很粗浅的错误。 其二，a没有给出长度，未初始化的数组又不给出长度，这应该是个error才对。 兄台我还有三个问题： 1、&a 和a地址值相同是不是一种偶然？ 2、字符数组和字符串有何区别？ 3、以%s格式地址是字符数组首地址，居然能打印出整个字符数组，这是神马情况？

user: user-0
content: 引用 1 楼 user-3的回复:给数组a指定一个长度，如char a[32]. 必须要指定长度吗

user: user-2
content: 这两个问题都不能忽视，不要因为没看出后果就不以为然。 此处省略因措辞严厉而引起读者不适的一百五十字。

user: user-2
content: 其一，scanf里面第二个参数应该是a，而不是&a。没表现出问题是因为它俩的“值”都是同样的地址值。但是它们的类型不同，乱用是一个很粗浅的错误。 其二，a没有给出长度，未初始化的数组又不给出长度，这应该是个error才对。

user: user-3
content: 给数组a指定一个长度，如char a[32].
user-0 提问: 大佬们求助

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: #include<stdio.h>  int main() {     int a=3,b=7,c=5;      //switch(a>0)     switch(a)     {         //case 1:swith(b<0)         case 1:switch(b)                {                    case 1:printf("@");break;                    case 2:printf("!");break;                }                break;   //add break         //case 0:switch(c==5)         case 0:switch(c)                {                    case 0:printf("*");break;                    case 1:printf("#");break;                    case 2:printf("$");break;                }                break;//add break         default:                printf("&");     }     printf("\n");      return 0; }  供参考～  switch注意拼写，别少了c字母  switch()括号里的是一个整型数表达式，不是判断表达式；  如果用a >0，那么下面的case用两个就好了case 0, case 1因为只有两种结果。

user: user-3
content: case 1:swith(b<0)这句，switch,供参考：#include<stdio.h> int main() {    int a=3,b=7,c=5;    switch(a>0)    {            case 1:switch(b<0) //case 1:swith(b<0)                  {                    case 1:printf("@");break;                    case 2:printf("!");break;                  }            //break; 这里是否缺了break            case 0:switch(c==5)                 {                    case 0:printf("*");break;                    case 1:printf("#");break;                    case 2:printf("$");break;                 }            //break; 这里是否缺了break            default:printf("&");    }    printf("\n");        return 0; }  //#& //请按任意键继续. . .
user-0 提问: 求助： C程序 延迟中途如何响应按键？

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: https://blog.csdn.net/fbysss/article/details/2412485 参考这个博客，只要 getch 不阻塞，你就可以sleep 后判断时间，来决定要不要继续循环了

user: user-3
content: 引用 4 楼 proof1 的回复:[quote=引用 2 楼 forever74 的回复:]变通嘛，不要延迟5分钟，做延迟1秒的，然后做个变量计数，转300次再刷字符串。 在300次中，读取键盘状态并相应处理？[/quote] 还是这个循环，你原来怎么处理按键，之后自然还是怎么处理。 仅仅是缩短延迟时间，增加一个计数变量，多一两个if

user: user-4
content: 不是中断处理的吗？

user: user-0
content: 引用 2 楼 forever74 的回复:变通嘛，不要延迟5分钟，做延迟1秒的，然后做个变量计数，转300次再刷字符串。 在300次中，读取键盘状态并相应处理？

user: user-0
content: 弃用sleep() ， delay()  循环获取时间，比较时间，同时读取按键状态？

user: user-3
content: 变通嘛，不要延迟5分钟，做延迟1秒的，然后做个变量计数，转300次再刷字符串。

user: user-5
content: 开个定时器计算没有按键按下的时间咯，如有按键按下，那时间重新计算，如果累计5Min没有按键按下更改显示咯

user: user-2
content: 为什么不用系统 API，监听案件事件？

user: user-6
content: 参考：while (1){  　  sleep(1秒)  计数器+1     读按键 随时响应按键（有按键就退出） 　　if (计数器＝300)  { 　　　　清除字符串 　　　　更改屏幕坐标 　　　　显示字符串 　　　　计数器＝0 　　} }

user: user-0
content: ------------------------------- while (结束标志)  { 　　显示字符串 　　for (i=1; i<=300; i++) 　　　　if  (没有按键)  　　　　　　sleep(1秒) 　　　　else 　　　　　　置结束标志 　　清除字符串 　　更改屏幕坐标 } -------------------------------  ？？？ 有些冗长。

user: user-0
content: 引用 6 楼 forever74 的回复:还是这个循环，你原来怎么处理按键，之后自然还是怎么处理。 仅仅是缩短延迟时间，增加一个计数变量，多一两个if  ------------------------------- while (没有按键)  { 　　sleep(1秒) 　　计数器+1 　　if  (计数器＝300)  { 　　　　清除字符串 　　　　更改屏幕坐标 　　　　显示字符串 　　　　计数器＝0 　　} } -------------------------------  是这样？
user-0 提问: comparison between pointer and integer这个问题

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: i +=strlen(remain_text[index][0]);

user: user-3
content: remain_tex这个是怎么定义的？建议提供更多信息吧  remain_tex的类型是不是是int类型？

user: user-4
content: 题目所述疑似不是这行的问题， 而这行正确与否取决于数组的定义。

user: user-5
content: i +=strlen (remain _text [index]);
user-0 提问: 求一个C语言字符串中运算符相关的题的解法

回复:
user: user-1
content: 或者就像第一句一样加std::cout试看是否还有问题？另外注意看认真看，最后一个else;是有冒号的。

user: user-1
content: 可把前面的输出全部取消，最后输出替换为C语言的，不该连输入输出都不会！  https://z3.ax1x.com/2021/04/05/cQGMjK.png

user: user-0
content: 这个前面的代码是什么，就直接建立工程给的初始代码吗，我看的时候中间倒数第二个else总是报错，而且cout<<  <<ends;的时候也是报错 引用 3 楼 智者知已应修善业 的回复:[img=https://img-bbs.csdn.net/upload/202104/03/1617442385_516357.png" alt="" />   引用 7 楼 智者知已应修善业 的回复:花括号自己添加应该会，输入输出自己也该会。ends用“ ”替代。   https://z3.ax1x.com/2021/04/05/cQGMjK.png

user: user-1
content: 花括号自己添加应该会，输入输出自己也该会。ends用“ ”替代。

user: user-1
content: 发出你的代码看看 引用 4 楼 binv 的回复:这个前面的代码是什么，就直接建立工程给的初始代码吗，我看的时候中间倒数第二个else总是报错，而且cout<<  <<ends;的时候也是报错

user: user-0
content: 这个前面的代码是什么，就直接建立工程给的初始代码吗，我看的时候中间倒数第二个else总是报错，而且cout<<  <<ends;的时候也是报错 引用 3 楼 智者知已应修善业 的回复:[img=https://img-bbs.csdn.net/upload/202104/03/1617442385_516357.png" alt="" />

user: user-0
content: 这个前面的代码是什么，就直接建立工程给的初始代码吗，我看的时候中间倒数第二个else总是报错，而且cout<<  <<ends;的时候也是报错

user: user-1

user: user-2
content: 前四位，前三位啥意思？

user: user-3
content: 先自己写写吧，不懂得再提出来呗。这个应该不难～
user-0 提问: 求一个矩阵快速比较阙值转换成二值化的 算法

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: void photo_get() { 	int num = 0; 	for(num = 0;num < MT9V03X_H;num++) 	{ 		memcpy(dis_image[num],mt9v03x_image[num],MT9V03X_W);//原始数据为mt9v03x_image  结果memcpy  复制到dis_image 	}	 } //以下是大津法  计算得到dis_image 图片的阙值 阙值输出为  threshold  uint8 threshold = 0;  void my_adapt_threshold(uint8 *image, uint16 col, uint16 row)   {    #define GrayScale 256     uint16 width = col;     uint16 height = row;     int pixelCount[GrayScale];     float pixelPro[GrayScale];     int i, j, pixelSum = width * height/4;     uint8* data = image;  //?????????     for (i = 0; i < GrayScale; i++)     {         pixelCount[i] = 0;         pixelPro[i] = 0;     }          uint32 gray_sum=0;           for (i = 0; i < height; i+=2)     {         for (j = 0; j < width; j+=2)         {             pixelCount[(int)data[i * width + j]]++;               gray_sum+=(int)data[i * width + j];                }     }                                     for (i = 0; i < GrayScale; i++)     {         pixelPro[i] = (float)pixelCount[i] / pixelSum;              }           float w0, w1, u0tmp, u1tmp, u0, u1, u, deltaTmp, deltaMax = 0;                             w0 = w1 = u0tmp = u1tmp = u0 = u1 = u = deltaTmp = 0;         for (j = 0; j < GrayScale; j++)                  {                              w0 += pixelPro[j];                   u0tmp += j * pixelPro[j];                              w1=1-w0;                u1tmp=gray_sum/pixelSum-u0tmp;                          u0 = u0tmp / w0;                               u1 = u1tmp / w1;                              u = u0tmp + u1tmp;                             deltaTmp = w0 * pow((u0 - u), 2) + w1 * pow((u1 - u), 2);                 if (deltaTmp > deltaMax)                 {                     deltaMax = deltaTmp;                     threshold = j;                 }                 if (deltaTmp < deltaMax)                 {                 break;                 }                     } //  for(i = 0; i < threshold; i++) //	{ //		Bin_Array[i] = 0; //	} //	for(i = threshold; i < 256; i++) //	{ //		Bin_Array[i] = 1; //	} }
user-0 提问: 求助，C语言编程题，代码运行不了。

回复:
user: user-0
content: 引用 1 楼 user-1的回复:供参考：#include <stdio.h> int main() {     int n;     int time=0;     scanf("%d",&n);     for(;;)     {         if(n==2 || n==3)//if(n==2&&n==3)         {             time++;             printf("%d",time);             break;         }         else         {             if(n%3==0)             {                 time++;                 n=n/3;             }             else             {                 time++;                 n=((n-(n%3))/3)+(n%3);             }         }     }     return 0; } 谢谢！我这属于低级错误。。。。

user: user-1
content: 供参考：#include <stdio.h> int main() {     int n;     int time=0;     scanf("%d",&n);     for(;;)     {         if(n==2 || n==3)//if(n==2&&n==3)         {             time++;             printf("%d",time);             break;         }         else         {             if(n%3==0)             {                 time++;                 n=n/3;             }             else             {                 time++;                 n=((n-(n%3))/3)+(n%3);             }         }     }     return 0; }
user-0 提问: 为什么执行不到else的内容，即使输入else控制的条件，也会执行if后的语句呢

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 1 楼 赵4老师的回复:scanf("%d,&n");改为scanf("%d",&n); scanf("%d",b);改为scanf("%d",&b);  printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。  谢谢大佬！感谢感谢

user: user-2
content: 建议楼主检查一下while， if的条件，条件都是=赋值语句，不是判断语句呢。  scanf第二个参数是（变量）地址，而不是变量值。

user: user-3
content: 判断用==运算符。

user: user-4
content: scanf("%d,&n");改为scanf("%d",&n); scanf("%d",b);改为scanf("%d",&b);  printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
user-0 提问: c语言，这哪里打错了，刚学还不懂

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 楼上都说拉，我就不说拉，水个帖子

user: user-3
content: 给你写的代码，头文件引入有问题，你对比一下之前的程序，头文件是不是有不一样的地方？ 建议要学会看编译警告和错误，学会看懂他们

user: user-4
content: 昨天休息了，就改2行代码就行了，在聊天工具输入代码 会有 乱码  引用 楼主 Congratulation395 的回复:c语言问题，不知道怎么改

user: user-5
content: 鼠标双击报错的提示行，光标会自动定位到出错的源代码行。

user: user-4
content: 第一行包含的头文件 #incldue <stdio.h> 把内容的< 改为<   > 改为> 你是到复制的吧 ，< : < 小于号   > :  > 大于号；这是html 页面的转义字符
user-0 提问: C语言  经典题型 完数的判断

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 这个肯定不是VC6

user: user-3
content: 可参

user: user-4
content: 可能是 dev-c吧。

user: user-5
content: 看界面是大学微机教室里的VC6.0啊

user: user-6
content: 每次执行完i没有对sum初始化，这样每次的执行都是上次基础上继续给sum增加值。 建议在第一层循环for，第一句执行sum = 0;
user-0 提问: 好心人帮忙看下这段代码为什么会出现runtime error，感激不尽！

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: #include <stdio.h> #define y 114514  int main() {     long long int n,c,c1, a[1000],sum=0;//,j=0;     int i, j;      scanf("%lld%lld",&n,&c);     c=c%y;     if (n > 1000)         n = 1000-1;     for (i=0; i<=n; i++) {         c1=1;         scanf("%lld",&a[i]);         a[i]=a[i]%y;         for (j=0; j<i; j++) {             c1=(c1*c)%y;         }         sum+=a[i]*c1;         sum=sum%y;     }     if (c!=0) {         printf("%lld\n",sum);     } else {         printf("0\n");     }      return 0; } 供参考～  没看出无限循环的代码，但是程序有可能越界，因为n的值输入若大于999就会越界。a最大是1000

user: user-0
content: 引用 1 楼 赵4老师 的回复：#include <stdio.h> #define y 114514 int main() {     static long long int a[1000];     long long int n,c,c1,sum=0,j=0;     int i;     scanf("%lld%lld",&n,&c);     c=c%y;     for (i=0; i<=n; i++) {         c1=1;         scanf("%lld",&a[i]);         a[i]=a[i]%y;         for (j=0; j<i; j++) {             c1=(c1*c)%y;         }         sum+=a[i]*c1;         sum=sum%y;     }     if (c!=0) {         printf("%lld\n",sum);     } else {         printf("0\n");     }     return 0; } 您看下私信

user: user-0
content: 引用 2 楼 自信男孩 的回复：#include <stdio.h> #define y 114514  int main() {     long long int n,c,c1, a[1000],sum=0;//,j=0;     int i, j;      scanf("%lld%lld",&n,&c);     c=c%y;     if (n > 1000)         n = 1000-1;     for (i=0; i<=n; i++) {         c1=1;         scanf("%lld",&a[i]);         a[i]=a[i]%y;         for (j=0; j<i; j++) {             c1=(c1*c)%y;         }         sum+=a[i]*c1;         sum=sum%y;     }     if (c!=0) {         printf("%lld\n",sum);     } else {         printf("0\n");     }      return 0; } 供参考～  没看出无限循环的代码，但是程序有可能越界，因为n的值输入若大于999就会越界。a最大是1000谢谢啦

user: user-0
content: 引用 1 楼 赵4老师 的回复：#include <stdio.h> #define y 114514 int main() {     static long long int a[1000];     long long int n,c,c1,sum=0,j=0;     int i;     scanf("%lld%lld",&n,&c);     c=c%y;     for (i=0; i<=n; i++) {         c1=1;         scanf("%lld",&a[i]);         a[i]=a[i]%y;         for (j=0; j<i; j++) {             c1=(c1*c)%y;         }         sum+=a[i]*c1;         sum=sum%y;     }     if (c!=0) {         printf("%lld\n",sum);     } else {         printf("0\n");     }     return 0; } 谢谢啦

user: user-3
content: #include <stdio.h> #define y 114514 int main() {     static long long int a[1000];     long long int n,c,c1,sum=0,j=0;     int i;     scanf("%lld%lld",&n,&c);     c=c%y;     for (i=0; i<=n; i++) {         c1=1;         scanf("%lld",&a[i]);         a[i]=a[i]%y;         for (j=0; j<i; j++) {             c1=(c1*c)%y;         }         sum+=a[i]*c1;         sum=sum%y;     }     if (c!=0) {         printf("%lld\n",sum);     } else {         printf("0\n");     }     return 0; }
user-0 提问: 37个人围城一圈，编上号码（1~37），第一个人从1数起，数到5的人被淘汰，接下来的人继续数，最后剩下的人为赢家

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: fflush()也可用于标准输入（stdin）和标准输出（stdout），用来清空标准输入输出缓冲区 这句fflush(stdin);在windows下的某些编译器可能有效，不等于其他编译器也一定有效；受限于某些编译器～

user: user-0
content: rewind(stdin)清除标准输入的按键缓冲区

user: user-0
content: 头文件：#include<stdio.h>   定义函数：int fflush(FILE * stream); 函数说明：fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中，如果参数stream为NULL，fflush()会将所有打开的文件数据更新。 返回值：成功返回0，失败返回EOF，错误代码存于errno中。 fflush()也可用于标准输入（stdin）和标准输出（stdout），用来清空标准输入输出缓冲区。 stdin是standard input的缩写，即标准输入，一般是指键盘；标准输入缓冲区即是用来暂存从键盘输入的内容的缓冲区。stdout是standard output 的缩写，即标准输出，一般是指显示器；标准输出缓冲区即是用来暂存将要显示的内容的缓冲区。     清空标准输出缓冲区， 刷新输出缓冲区，即将缓冲区的东西输出到屏幕上  如果圆括号里是已写打开的文件的指针，则将输出缓冲区的内容写入该指针指向的文件，否则清除输出缓冲区。 这里的stdout是系统定义的标准输出文件指针，默认情况下指屏幕，那就是把缓冲区的内容写到屏幕上。 可是从代码中看不出缓冲区会有什么内容，所以它实际上没有起什么作用

user: user-3
content: //假设有n个人团团围做，从第1个人开始数数，数到第m个人时候，第m个人出列， //然后继续从1开始数数，数到第m个人退出 #include <stdio.h> #include <conio.h> int i,k,t; int n,m; static char f[1001];//0该座位未出圈,1该座位已出圈 void main() {     while (1) {         printf("Input n m(1000>=n>=m>=1):");         fflush(stdout);         rewind(stdin);         if (2==scanf("%d%d",&n,&m)) {             if (1000>=n && n>=m && m>=1) break;         }     }     t=0;//已出圈总人数     i=1;//座位编号     k=1;//当前要数的数     while (1) {         if (0==f[i]) {             if (m==k) {                 t++;                 f[i]=1;                 printf("%3d ",i);                 if (0==t%10) printf("\n");                 if (t>=n) break;             }             k++;if (k>m) k=1;         }         i++;if (i>n) i=1;     }     cprintf("Press any key ...");     getch(); }
user-0 提问: C++ 数组中元素的相邻元素地址只差为1

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: When two pointers to members of the same array object are subtracted, the difference is divided by the size of a member. The result represents the difference of the subscripts of the two array members.The size of the result is implementation-defined, and its type (a signed integral type) is ptrdiff_t defined in the <stddef.h> header. As with any other arithmetic overflow, if the result does not fit in the space provided, the behavior is undefined. If two pointers that do not point to members of the same array object are subtracted, the behavior is undefined. However, if P points either to a member of an array object or one past the last member of an array object, and Q points to the last member of the same array object, the expression (Q+1) - P has the same value as (Q-P) + 1, even though Q+1 does not point to a member of the array object.  当同一个数组的两个成员的指针相减时，其差值为：地址值的差，再除以一个数组成员的size。这个结果代表了两个指针对应元素的下标之差。    所以大家才遇到了上图中所遇到的问题。这是C语言标准所规定的。  本回答引用  [  https://blog.csdn.net/michaelhan3/article/details/74011258  ]

user: user-3
content: #include <iostream> #include <vector> using namespace std;  int main() {     vector<double>K;     K.resize(5);     int a = &K[1] - &K[0];     int b = &K[2] - &K[0];     int c = &K[3] - &K[2];      cout << a << '\t' << b << '\t' << c << endl;      double k[10];      printf("%lu\n", (k+2) - (k+1));     printf("%lu\n", &k[2] - &k[1]); } 供参考  这样举例子是否能够很好的理解你的问题；  k+2等价&k[2], k+1等价&k[1]; 然后&k[2] - &k[1] == （k+2) - (k+1)==1

user: user-4
content: 可想而知， 既然指针运算+整数1的时候，指向下一个同类型元素， 那自然，它的逆运算就是楼主写的，两个同型元素求地址差，得到的是整数，语义是下标差。

user: user-0
content: 引用 1 楼 真相重于对错 的回复:因为K[1]....这些都是double &K[...]这些代表是double* 所以 &K[1]-&K[0] 是1,这个1代表的是一个double的长度感谢指导

user: user-5
content: C/C++指针+-数值运算，转换成相差元素的个数

user: user-6
content: 因为K[1]....这些都是double &K[...]这些代表是double* 所以 &K[1]-&K[0] 是1,这个1代表的是一个double的长度
user-0 提问: C语言实现数学组合问题

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
user-0 提问: C语言字符串连接

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: #include<stdio.h> int main (void) {      char *a,*p;      gets(a);      gets(p);      puts(a);      puts (p);      return 0; }

user: user-3
content: char ch; int i=0;  cha r* p = a; while(ch=*p++)    arr[i++] = ch;  p = b; while(ch=*p++)    arr[i++] = ch;  arr[i] = '\0';

user: user-4
content: #include <stdio.h>  #define N 20 char arr[N] = {0};  int main() {     char a[]="acegikm";     char b[]="bdfhjnpq";     int i = 0;     for(i = 0;i < sizeof(a)-1;i++)         arr[i] = a[i];     for(i = 0;i < sizeof(b);i++)         arr[i+7] = b[i]; #if 0     for(i = 0;i < sizeof(a) + sizeof(b) - 1;i++)         printf("%c\n",arr[i]); #else      puts(arr); #endif } 供参考～
user-0 提问: C语言标准函数库思维导图

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix,  MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl

user: user-3
content: 这笔记做得不错，哈哈。

user: user-4
content: 你们课业有点重啊，今天全是你的帖子
user-0 提问: 汉罗塔问C语言递归

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 挺好的啊。。

user: user-3
content: 做笔记？可以考虑使用印象或有道笔记～

user: user-4
user-0 提问: 已触发了一个断点问题怎么解决

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: #include <stdio.h> #include <stdlib.h>  #define true 1 #define false 0  int InvertSequence(int m) {     int c,d,e=0;     if (m > 0 && m < 10) {         //printf("%d", m);         return m;     }     else if (m >= 10 && m <= 99)     {         c= m / 10;         d = m - 10 * c;         //printf("%d%d", d, c);          return d * 10 + c;     }     else if (m >= 100 && m < 1000)     {         c= m / 100;         d= (m - 100 * c) / 10;         e= m - 100 * c - 10 * d;         //printf("%d%d%d", e,d , c);         return e * 100 + d * 10 + c;     }      return m; } int loop(int x) {     if (x == InvertSequence(x))         return true;     else         return false; } int main() {     int a=0;     int i = 0;     int b = 0;     int p, q = 0;     //scanf("%d%d", a, b);     scanf("%d%d", &a, &b);      for (i = a; i <= b; i++)     {         //p = InvertSequence(i);         //q = loop(p);         q = loop(i);         if (q == true)         {             //printf("%d\n", p);             printf("%d\n", i);         }     }     system("pause"); } 供参考～  猜测楼主的功能，不一定对。建议楼主补充一下需求～

user: user-3
content: int InvertSequence(int m)没有返回值
user-0 提问: 求助，用c语言打出以下字符和字母

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: https://docs.microsoft.com/en-us/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions?view=msvc-160

user: user-3
content: 印度人口5200万？！

user: user-4
content: 注意输出的位宽，比如%10d, 以及小数点%.2lf，以及%20s等等这些

user: user-5
content: 你需要注意的是printf左对齐和右对齐  1.左对齐 printf(“%d\n”,101010); 默认为左对齐。  printf(“%-10d\n”,101010); “-”表示左对齐，在数字宽度前面加上“-”号即可。 说明：数字宽度为10，如果要打印的位数小于10，则在后面补足空格；如果要打印的位数大于10，则打印所有的数字，不会截断。  2.右对齐 printf(“%10d”,101010); 在%和d之间加上数字宽度，就可以右对齐。 说明：数字宽度为10，如果要打印的位数小于10，左边补足空格；如果要打印的位数大于10，则打印所有的数字，不会截断。
user-0 提问: CCF201909-1，运行错误，有大佬帮忙看看吗？

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 3 楼 qzjhjxj 的回复:供参考：#include<iostream> #include<math.h> using namespace std; struct tree{        int pick;        int sum; }; struct SUM{        int b; };  struct SUM su[100000];//定义全局变量  int main() {     int n,m,a=0;      int max=0;     int c=0;      cin>>n>>m;      tree tr[m];     //struct tree *tr = new struct tree [m];      //struct SUM su[100000];      for(int i=0;i<n;i++){         cin>>tr[i].sum;         for(int j=0;j<m;j++){             cin>>tr[j].pick;             tr[j].pick=abs(tr[j].pick);             tr[i].sum=tr[i].sum-tr[j].pick;             su[i].b=su[i].b+tr[j].pick;         }         c=c+tr[i].sum;         if(su[i].b>su[max].b){              max=i;         }else if(su[i].b==su[max].b&&i<max){             max=i;        }     }     cout<<c<<" "<<max+1<<" "<<su[max].b;     //delete []tr;      } 需要考虑到m!=n 且m < n否则会出现越界问题。因为m是tr变量的长度，但是下面循环是用n做比较的。

user: user-3
content: 供参考：#include<iostream> #include<math.h> using namespace std; struct tree{        int pick;        int sum; }; struct SUM{        int b; };  struct SUM su[100000];//定义全局变量  int main() {     int n,m,a=0;      int max=0;     int c=0;      cin>>n>>m;      tree tr[m];     //struct tree *tr = new struct tree [m];      //struct SUM su[100000];      for(int i=0;i<n;i++){         cin>>tr[i].sum;         for(int j=0;j<m;j++){             cin>>tr[j].pick;             tr[j].pick=abs(tr[j].pick);             tr[i].sum=tr[i].sum-tr[j].pick;             su[i].b=su[i].b+tr[j].pick;         }         c=c+tr[i].sum;         if(su[i].b>su[max].b){              max=i;         }else if(su[i].b==su[max].b&&i<max){             max=i;        }     }     cout<<c<<" "<<max+1<<" "<<su[max].b;     //delete []tr;      }

user: user-0
content: 引用 1 楼 focuslight的回复:什么错误阿，贴出来吧， 我运行这代码没报错阿 我也不知道，但是交上去就是80分了，显示运行错误

user: user-4
content: 什么错误阿，贴出来吧， 我运行这代码没报错阿
user-0 提问: 数字塔，小白想问问c有类似用法么，就是一下子输出字符的几倍，不用for循环输出

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 自己实现一个函数，函数在需要的地方调用这个函数
user-0 提问: 【C语言求助】函数部分：矩阵转置输出奇怪的数

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 3 楼 forever74的回复:主函数里调用时实参写的不对。 PrintArray(array);  //PrintArray(array[3][3]); 不好意思，可以了，谢谢

user: user-0
content: 引用 3 楼 forever74的回复:主函数里调用时实参写的不对。 PrintArray(array);  //PrintArray(array[3][3]); 还是不行呀。

user: user-0
content: 引用 1 楼 user-4的回复:打印函数里，printf ()里arr [i+1 ][j+1]数组下标越界了，直接就是i j 还是不行呀。

user: user-2
content: 上面第一个for里面缺个分号，不可能通过编译，相信是复制时操作马虎造成的。

user: user-2
content: 主函数里调用时实参写的不对。 PrintArray(array);  //PrintArray(array[3][3]);

user: user-3
content: 楼上说的对，为什么要i+1,j+1呢

user: user-4
content: 打印函数里，printf ()里arr [i+1 ][j+1]数组下标越界了，直接就是i j
user-0 提问: miracl大数库编写Paillier同态加密，powmod函数导致计算结果越界怎么解决呢

回复:
user: user-1
content: 有解决方案了吗

user: user-0
content: 引用 2 楼 qq_42039327 的回复:有解决方案了吗 已解决，是大数库使用不正确的问题，先初始化大数mirvar(0),再进行赋值

user: user-2
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: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: str第i个值，存在以下可能  1. i越界 2. str[i]为NULL 3. str[i]为野指针   PS：建议以后添加代码发帖

user: user-3
content: 内存泄露  int index = *str[i]; //err 编译器 会 保留第一次的数据内容，等你第二次调用，你已经解引用 ，把内存数据弄没了，也就是指针指向为NULL空，等你第二次指针指向，当然是内存泄露了，所以这样写是错的 根据需求，你在改一下吧

user: user-4
content: 没看懂楼主的需求。建议楼主发一下执行实例。就是楼主的代码怎么测试。  另外，把需求也描述一下～

user: user-5
content: 嗯，string作为类型可不是C语言风格，另外楼主还试探着把*敲着玩，这俩习惯不好哦。 这个程序作为经验，可以让楼主进一步理解指针，地址和值 了。

user: user-6
content: ... str[i] 不是 string 对象吗？解引用是干啥？还赋值给 int，你这题目是想要干啥？

user: user-7
content: for (int i = 0, len = strlen(*str); i < len; i++)
user-0 提问: 形参为地址上存储的值即20,30，为什么实参的地址值可以传递过去啊？求教！！！

回复:
user: user-1
content: 你是把地址传过去，然后交换的是两个地址空间对应的值呀

user: user-2
content: 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！ 不会单步Release版对应汇编？在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有，然后在IDE中运行。（一般人我不告诉他！）  单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后，就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。  调用约定 https://docs.microsoft.com/zh-cn/cpp/cpp/calling-conventions?view=vs-2017

user: user-0
content: 悟了：在void swap(int *pa,int *pb)中 *pa,*pb是定义其为指针变量； 而在t=*pa,*pb=*pa,*pa=t中 *pa,*pb是指指针指向地址中存储的值。

user: user-3
content: C语言是值传递

user: user-4
content: 你不是传的地址过去吗？参数是指针呀
user-0 提问: 为什么会出现这种结果？

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: #include<stdio.h> #include<stdlib.h>  typedef int datatype; typedef struct node {     datatype data;     struct node *next; }linklist;  void creatlist1(linklist *head,int n) {     linklist *p,*s;     int i;      head->next=NULL;     s=head;     for(i=0;i<n;i++)     {         p=(linklist*)malloc(sizeof(linklist));         scanf("%d",&p->data);         s->next=p;         s=p;     }      s->next = NULL; //last node's next pointer NULL } void displaylist(linklist *head) {     linklist *p;     //int i=0;     p=head->next;     if(p==NULL)     {         printf("这是个空指针\n");         return; //exit from displylist     }     while(p)     {          printf("%d ",p->data);         p=p->next;     } } int main() {     linklist *head;     head=(linklist*)malloc(sizeof(linklist));     creatlist1(head,5);   //创建一个链式列表     displaylist(head);    //输出列表中的元素     return 0; }  供参考～  原因是创建链表的时候没有对最后一个节点做处理，即最后一个节点的next指针应该指向NULL displaylist出现无限循环就是因为没有找到NULL

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

user: user-4
content: 正如楼上朋友说的，代码产生问题的主要原因在于displaylist()函数的 while (p) 	{ 		printf("%d ", p->data); 		p = p->next; 	} 在遍历链表的时候，最后一个元素时，理论上p->next应该指向空指针，但是由于createlist1()函数的for循环中分配内存时，并没有对p->next值进行显式地赋空指针值，导致最后一个元素的p->next不是空指针而是一个随机值，在我调试的VS2015中，这个值是0xcdcdcdcd。这样就导致在displaylist()函数的while()语句中会访问0xcdcdcdcd，而这个地址是不能访问的，就会直接报错。 解决的方法就是在createlist1()函数的for循环中 p = (linklist*)malloc(sizeof(linklist)); 		p->next = nullptr;

user: user-5
content: p=(linklist*)malloc(sizeof(linklist)); p->next=NULL
user-0 提问: c语言打印日历

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 还可以先定义一个二维字符数组，先“定位”输出到这个数组中，最后输出这个数组到屏幕或打印机。

user: user-3
content: 定位不是标准C语言的一部分 所以如果是C语言初学者 这个题目一定不打算让你定位 而是想办法从左上依次输出到右下 中间适当加空格 以达到看起来定位的效果
user-0 提问: C语言中什么时候用%d和%f

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 嗯，你说得很对， 不过printf("b=%.2f",b);可以保留两位小数，这样应该更正确

user: user-3
content: 输出时，%f可用于float，也可用于double 输入时，%f用于float，%lf用于double

user: user-4
content: %d和%f 既用来指明输出的格式，也用来指明对应的实参是什么类型。

user: user-0
content: C语言新手，刚入门，写个博客记录下学习，不足之处，欢迎大家指正，不吝赐教！！

user: user-5
content: 这是广告帖吗？内存里都是二进制数据，用%d输出是一个值，用%f输出是一个值。结果虽然不一样，但是内存了的二进制不变，因为浮点数和整型数表示的方法不一样，即对于相同的二进制数，不同的符号，比如%d和%f，它的解析方法不一样，因此结果是不一样的。

user: user-6
content: 好。。自问自答啊。。。
user-0 提问: Cyv'y求助！！！

回复:
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: x y 嘛，天生就是当坐标的样子

user: user-0
content: 因为我还是个学生，所以电脑现在不在身边，主要是想做个坐标，按w就y++，s就y--那种，你这个应该可以解决吧

user: user-0
content: 引用 2 楼 user-2的回复:按现有内容理解：  char *s[2][2]={"火车站","机场","万达广场","立交桥下"}; ... printf("你来到了%s\n",s[x][y]);  大约就这个意思，参考一下。 明天实验一下，觉得有希望了。。。 终于解决了！

user: user-0
content: 引用 2 楼 user-2的回复:按现有内容理解：  char *s[2][2]={"火车站","机场","万达广场","立交桥下"}; ... printf("你来到了%s\n",s[x][y]);  大约就这个意思，参考一下。 感谢，差不多就是这样，我没有想到。。。 这个坐标方法很好！谢谢！

user: user-2
content: 按现有内容理解：  char *s[2][2]={"火车站","机场","万达广场","立交桥下"}; ... printf("你来到了%s\n",s[x][y]);  大约就这个意思，参考一下。

user: user-2
content: 不太理解你确切的意思，有完整一些的代码表达么？
user-0 提问: 求求大佬们帮帮忙啊(´-ω-`)！这个题目该怎么编程啊

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 要在链式列表中某位置插入一个元素，然后写了下面这个函数来查找该位置的前一个位置并用指针指向它，最后传回该指针，但是感觉这个函数有点问题，求大神们帮我看看，怎么改

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 供参考：linklist * find(linklist *head,int i) {     linklist *p;     if (i==0)return head;//如果表头，返回头结点     p=head;     int j=0;     while(p!=NULL && j<i-1)      {          j++;          p=p->next;      }     if(!p) return NULL:     return p; }

user: user-3
content: linklist * find(linklist *head,int i) {     linklist *p;     p=head;     int j=1;     while(p!=NULL&&j<=i)     {         j++;         p=p->next;     }     if(!p) {         printf("p=NULL");         return NULL;     }     //else     return p;  } 供参考～  如果没找到应该是返回NULL
user-0 提问: C语言

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 可以这么算，但没意义 str[i]-'0'的意思是str[i]是一个'0'到'9'的字符，str[i]-'0'这样可以计算出其数值，比如'2'-'0'正好等于2 str[i]-'a'时，str[i]应该是一个字母对应的字符，比如str[i]-'a'+'A'可以把一个小写字母转成大写字母 上面用到的特性，其实是ASCII中，0-9 a-z A-Z是连续编码的，但0跟a的编码没啥关系，所以不同性质的两个字符相减是没意义的

user: user-3
content: 只要在序列中都是可以计算的,没发现问题.

user: user-4
content: 引用 楼主 m0_45257832 的回复:str[i]-'0' 为什么不会对'a'运算， 'a'-'0'=49，为什么不会这样算  并没有什么机制在阻止这个运算，这样算是完全可以地

user: user-3
content: char a[] = "a"; cout << a[0] - '0';

user: user-5
content: 仅供参考： #include <stdio.h> #include <string.h> FILE *f; char buffer[4096]; int r,a; void HexDump(char *buf,int len,int addr) {     int i,j,k;     char binstr[80];      for (i=0;i<len;i++) {         if (0==(i%16)) {             sprintf(binstr,"%08x -",i+addr);             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         } else if (15==(i%16)) {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);             sprintf(binstr,"%s  ",binstr);             for (j=i-15;j<=i;j++) {                 sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');             }             printf("%s\n",binstr);         } else {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         }     }     if (0!=(i%16)) {         k=16-(i%16);         for (j=0;j<k;j++) {             sprintf(binstr,"%s   ",binstr);         }         sprintf(binstr,"%s  ",binstr);         k=16-k;         for (j=i-k;j<i;j++) {             sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');         }         printf("%s\n",binstr);     } } int main(int argc,char **argv) {     if (argc<2) {         fprintf(stderr,"Usage: %s filename.ext\n",argv[0]);         return 2;     }     f=fopen(argv[1],"rb");     if (NULL==f) {         fprintf(stderr,"Can not open file [%s]!\n",argv[1]);         return 1;     }     a=0;     while (1) {         r=fread(buffer,1,4096,f);         HexDump(buffer,r,a);         a+=r;         if (r<4096) break;     }     fclose(f);     return 0; }

user: user-5
content: 电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

user: user-6
content: 'a'的ASCII对应的十进制是65即0x61，而'0'~'9'对应的是0x30~0x39  一般对于'0'-'9'字符是与'0'比较和做差 一般是'A'-'Z'与'A'比较和做差  同理'a'-'z'与'a'
user-0 提问: 为什么出不来结果

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: scanf("%d", &p->data); 空格问题～

user: user-3
content: scanf("%d ",&(p->data));这句里面"%d   " 后面多了空格符，应该这样：scanf("%d",&(p->data));
user-0 提问: stm32 两个串口在某个时间点需要同时处理任务，请问怎么处理？等三个问题

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

user: user-2
content: 了解一下有限状态自动机。

user: user-0
content: 请问有大佬帮忙看看吗0.0

user: user-0
content: 引用 2 楼 赵4老师 的回复:了解一下有限状态自动机。  感谢您 这就去看看
user-0 提问: codeblocks 环境错误问题

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
user-0 提问: 水仙花数在一定范围内输出。

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 根据楼主的代码，应该是返回的返回值有问题。楼主的逻辑里，z++是在循环里一定会执行的，因为它在for的大循环里，每次都执行到；第二cn函数有返回非0的可能吗？没有，因为最后还是return 0；z只要执行for循环，就一定会执行z++，即使for循环一次不执行，那么最终也会执行return 0；所以，非0从哪里来呢？   int cnt (int n , int m) {      int sum, tmp, i;      int cnt = 0;       if (m > n)          swap(&m, &n);       for (i = m ; i < n; i++) {          tmp = i;          sum = 0;          while (tmp) {              rem = tmp % 10;              sum += pow(rem, 3);   //or rem * rem * rem;              tmp /= 10;          }          if (sum == i) {              printf("%d is narcissus number!\n", i);              cnt++;          }      }       return cnt; } static int swap(int *a, int *b) {     int tmp = *a;     *a = *b;     *b = tmp; }    供参考代码，可以试一下。

user: user-3
content: int cn()函数修改，供对照：int cn(int n,int m) {     int hun,ten,ind,a,flog=1,z=0;     for(a=n;a<=m;a++)      {        hun = a/100;        ten = a/10%10;        ind = a%10;        if(a == hun*hun*hun + ten*ten*ten + ind*ind*ind)          {            printf("%d ",a);            z++;          }      }      if(z==0) flog = 0;      return flog;  }
user-0 提问: C语言

回复:
user: user-1
content: 从网上找一下判断闰年的逻辑，自定义一个函数，然后用一个循环，穷举法就是循环遍历m--n之间的每一个年份，再用判断闰年的函数即可。

user: user-2
content: 课后作业？自己百度一下吧，不难
user-0 提问: C语言求助 指针输出val = 0000000000000001

回复:
user: user-1
content: BTW: 这里的指针变量们其实起到的仍然是非指针普通变量的作用。因为它们没有被解引用。 所以楼主还需要额外注意一下，为了避免总线错误，指针变量实际上是不能随意赋值的。

user: user-2
content: 因为val是将(int *)1传给了fun函数里的a（局部变量），这两个变量是相互独立的，除了传值，没有其他关系；  所以fun函数不会把(int *)3带出来； 所以val还是main函数里初始化的(int *)1；结果自然是这个了。  可以试试这样void fun(int** a) {     *a = (int *)3; } 调用  fun(&val);  再输出来的结果应该就不是这个了。

user: user-3
content: %p 就是按32位或64位，16进制输出。你在程序里修改指针的地址，出了函数依然是原来的地址
user-0 提问: c语言用if怎么写

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 先自己写写吧，首先是不是奇数，if (n % 2)如果是奇数对2取余得到肯定是非0 是不是5位数，if (n / 10000)如果是肯定商是非0；否则商为0呢；同理判断2位数，1位数还是4位数。  这些似乎都是小学的数学问题～

user: user-2
content: #include <stdio.h>  #define MAX_NUM     100000 int main(void) {     int n;     int ret;      printf("Please input a number: ");     while ((ret = scanf("%d", &n)) != 1 && n >= MAX_NUM)         printf("Input err!\n");      if (n % 2) {         printf("%d is an odd number!\n", n);         if (n % 3 == 0)             printf("%d is a multiple of 3!\n", n);         else             printf("%d is not a multiple of 3!\n", n);     } else {         if (n / 10000)             printf("五");         else if (n / 1000)             printf("四");         else if (n / 100)             printf("三");         else if (n / 10)             printf("二");         else             printf("一");         printf("位数.\n");     }      return 0; } 供参考  可以按照要求把打印改改～
user-0 提问: 这个怎么写？

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 楼主富二代吗，不好好学习

user: user-3
content: 没看出楼主指的是那个问题？具体问题都懒得描述了，那你学习上是不是书都懒得看了。  这么懒，大学还怎么进行下去？

user: user-4
content: 这种过于基础的，还是作为训练吧，否则以后...就没有以后了。