Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: c语言桌面程序无响应

回复:
user: user-1
content: 代码完整贴上来。

user: user-0
content: 引用 1 楼 user-2的回复:个人觉得SDK纯API方式编写Windows程序已经过时了，效率太低，了解一下原理就可以了，主要是消息机制。  图形用户界面（GUI）编程可以学习C++ Builder，架构先进（和C#一样拖控件），入门比较容易。  　　C++ Builder是真正的可视化的开发工具。C++ Builder可以用鼠标拖拉控件加上设置属性轻松的“设计”出一个程序的图形用户界面，利用可视的组件/控件像“搭积木”一样，以“所见即所得”的方式搭建应用程序的界面，这也是C++ Builder这个名字中Builder的概念。这样，只需要用C++语言编写业务逻辑代码，类似于DOS下文本界面编程，只要专注于实现业务逻辑功能就可以了，代码非常简洁。数据的输入和表现，都在图形用户界面，非常直观、易用。这就是RAD开发（Rapid Application Development，快速应用程序开发）。  书籍推荐： 《C++Builder 6程序设计教程（第二版）》 （陆卫忠，刘文亮　等编著 /2011-04-01 /科学出版社）（当当网） 《C++Builder 6编程实例精解》（赵明现），PDF，是数字版的，非扫描版的，里面还有一个俄罗斯方块游戏的完整实现。 《精彩C++Builder 6程序设计》（台湾 吴逸贤），里面有10几个简单小游戏的实现，可以自己看懂以后再重写，才是自己掌握的。 《C++ Builder 5高级编程实例精解》（刘滨 编著）都是较大的实用的程序。  C++ Builder 6.0几个示例程序项目源代码下载：       C++ Builder第一个程序（模拟聊天室）v1.11 C++ Builder模拟数字双时钟示例（未完成）v0.2.1 C++ Builder纸牌游戏Demo v0.05 C++ Builder不规则图像透明贴图（位图的透明显示）三种方法及简单动画v1.3 C++ Builder写的《ZEC 四则运算练习程序》 海底海星情景v0.9.2 C++ Builder简单电话簿Demo例子v1.11 不是就是想简单尝试一下，但是总是找不到bug在哪，一开始输入数据好好的，每次到了一定程度就卡死不动了

user: user-2
content: 个人觉得SDK纯API方式编写Windows程序已经过时了，效率太低，了解一下原理就可以了，主要是消息机制。  图形用户界面（GUI）编程可以学习C++ Builder，架构先进（和C#一样拖控件），入门比较容易。  　　C++ Builder是真正的可视化的开发工具。C++ Builder可以用鼠标拖拉控件加上设置属性轻松的“设计”出一个程序的图形用户界面，利用可视的组件/控件像“搭积木”一样，以“所见即所得”的方式搭建应用程序的界面，这也是C++ Builder这个名字中Builder的概念。这样，只需要用C++语言编写业务逻辑代码，类似于DOS下文本界面编程，只要专注于实现业务逻辑功能就可以了，代码非常简洁。数据的输入和表现，都在图形用户界面，非常直观、易用。这就是RAD开发（Rapid Application Development，快速应用程序开发）。  书籍推荐： 《C++Builder 6程序设计教程（第二版）》 （陆卫忠，刘文亮　等编著 /2011-04-01 /科学出版社）（当当网） 《C++Builder 6编程实例精解》（赵明现），PDF，是数字版的，非扫描版的，里面还有一个俄罗斯方块游戏的完整实现。 《精彩C++Builder 6程序设计》（台湾 吴逸贤），里面有10几个简单小游戏的实现，可以自己看懂以后再重写，才是自己掌握的。 《C++ Builder 5高级编程实例精解》（刘滨 编著）都是较大的实用的程序。  C++ Builder 6.0几个示例程序项目源代码下载：       C++ Builder第一个程序（模拟聊天室）v1.11 C++ Builder模拟数字双时钟示例（未完成）v0.2.1 C++ Builder纸牌游戏Demo v0.05 C++ Builder不规则图像透明贴图（位图的透明显示）三种方法及简单动画v1.3 C++ Builder写的《ZEC 四则运算练习程序》 海底海星情景v0.9.2 C++ Builder简单电话簿Demo例子v1.11
user-0 提问: 要求是回文数又是素数，为什么两个代码运行出来不一样。

回复:
user: user-1
content: 两个方法都存在漏洞和错误，第一种里，for(f=2;f<=e;f++)if(b%f==0)return 0; ，如果b素数时，if(b%f==0)return 0; 这条语句不会被执行到，也就意味着到函数运行结束，也没有一个明确的返回值，主函数里的if()判断靠什么去判断呢， 这是潜在的隐患。第二种是错上加错，不但第一种的隐患没排除，还把判断if(b%f!=0) return 1; 条件搞反了，把不是 素数的也归到素数里去了，假如b=9时，9%2!=0成立，马上return 1。

user: user-0
content: 引用 2 楼 qzjhjxj的回复:修改第一个，供参考：#include<stdio.h> #include<math.h> int sushu(int b); int huiwen(int c); int main() {     int a;     for(a=100;a<1000;a++)     {         if(sushu(a) && huiwen(a))            printf("%d\n",a);     }          return 0; }  int sushu(int b) {     int e,f;     e=sqrt(b);     for(f=2;f<=e;f++)        if(b%f==0)return 0;     return 1; }  int huiwen(int c) {     int g,h;     g=c/100;     h=c%10;     if(g==h)        return 1;     return 0; } 第二种方法的，第二个自定义函数为啥不对。

user: user-0
content: 引用 1 楼 user-2的回复:两个都不对啊，验证素数的函数总得既能返回0又能返回1吧？这样才符合逻辑啊。 错在第二个自定义函数if的判断

user: user-0
content: 引用 1 楼 user-2的回复:两个都不对啊，验证素数的函数总得既能返回0又能返回1吧？这样才符合逻辑啊。 第一个对的，第二个不对

user: user-1
content: 修改第一个，供参考：#include<stdio.h> #include<math.h> int sushu(int b); int huiwen(int c); int main() {     int a;     for(a=100;a<1000;a++)     {         if(sushu(a) && huiwen(a))            printf("%d\n",a);     }          return 0; }  int sushu(int b) {     int e,f;     e=sqrt(b);     for(f=2;f<=e;f++)        if(b%f==0)return 0;     return 1; }  int huiwen(int c) {     int g,h;     g=c/100;     h=c%10;     if(g==h)        return 1;     return 0; }

user: user-2
content: 两个都不对啊，验证素数的函数总得既能返回0又能返回1吧？这样才符合逻辑啊。
user-0 提问: 请问这个杨辉三角的第五行的113是怎么得到的啊？

回复:
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 楼 舉杯邀明月的回复:代码有BUG呗，第5行的数据是 1 4 6 4 1 才对。  怎么解决啊？

user: user-3
content: 代码有BUG呗，第5行的数据是 1 4 6 4 1 才对。
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: 引用 5 楼 qzjhjxj的回复:怎么不对？可以把sum <=3000条件改小点，改为sum <=10 看看是否是正确。 没错谢谢是自己电脑问题

user: user-0
content: 引用 5 楼 qzjhjxj的回复:怎么不对？可以把sum <=3000条件改小点，改为sum <=10 看看是否是正确。 谢啦

user: user-0
content: 引用 5 楼 qzjhjxj的回复:怎么不对？可以把sum <=3000条件改小点，改为sum <=10 看看是否是正确。 应该没错，我不管改成多少他这个结果都和我第一次输入的数据算出来的结果一样，可能电脑有点问题

user: user-2
content: 怎么不对？可以把sum <=3000条件改小点，改为sum <=10 看看是否是正确。

user: user-0
content: 引用 2 楼 qzjhjxj的回复:供参考：#include<stdio.h>  void main() {      int i=1,sum=0;      while(sum<=3000)      {          sum += i;          i++;      }      printf("1+2+3+...+%d=%d\n",--i,sum);       } 为什么我这个运行以后的结果好像不太对

user: user-3
content: 变量i没有被初始化

user: user-2
content: 供参考：#include<stdio.h>  void main() {      int i=1,sum=0;      while(sum<=3000)      {          sum += i;          i++;      }      printf("1+2+3+...+%d=%d\n",--i,sum);       }

user: user-4
content: 声明一下，我只是看 main 函数的返回类型是 void 觉得不顺眼，所以回复一下，哈哈哈。 # include <stdio.h>  int main (void) {     int n = 1, sum = 0;      while ((sum += n ++) <= 3000) ;      printf ("%d\n", n); }
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: 引用 1 楼 浪客的回复:楼主太懒，提示中把题目答案几乎都给出来了。   #include <stdio.h>  void print(int A[4])  //后面都是相同的输出，图省事 { 	for (int i = 0; i < 4; i++) 	{ 		printf("%d\t", A[i]); 	} 	printf("\n"); }  int main() { 	int C[4][4], AB[4], BB[4], AC[4], i, j; 	int A[4][4] = { 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 }; 	int B[4][4] = { 2,4,6,8,10,12,14,16,18,20,22,24,46,28,30,32 };  	// C=A+B 	for (i = 0; i < 4; i++) 	{ 		for (j = 0; j < 4; j++) 		{ 			C[i][j] = A[i][j] + B[i][j]; 		} 	}  	printf("Array C[4][4]:\n"); 	for (i = 0; i < 4; i++) 	{ 		for (j = 0; j < 4; j++) 		{ 			printf("%d\t", C[i][j]); 		} 		printf("\n"); 	}  	// AB 	for (i = 0; i < 4; i++) 	{ 		AB[i] = A[1][i];	//第二行：A[1][0]...A[1][3] 	} 	printf("\nArray AB[4]:\n"); 	print(AB);  	// BB 	for (i = 0; i < 4; i++) 	{ 		BB[i] = B[i][2];	//第三列：B[0][2]...B[3][2] 	} 	printf("\nArray BB[4]:\n"); 	print(BB);  	// AC 	for (i = 0; i < 4; i++) 	{ 		AC[i] = A[i][i]+B[i][i];	//这个数组中，对角线行列索引相等 	} 	printf("\nArray AC[4]:\n"); 	print(AC);  	return 0; }   为什么运行有错误

user: user-2

user: user-3
content: 楼主太懒，提示中把题目答案几乎都给出来了。   #include <stdio.h>  void print(int A[4])  //后面都是相同的输出，图省事 { 	for (int i = 0; i < 4; i++) 	{ 		printf("%d\t", A[i]); 	} 	printf("\n"); }  int main() { 	int C[4][4], AB[4], BB[4], AC[4], i, j; 	int A[4][4] = { 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 }; 	int B[4][4] = { 2,4,6,8,10,12,14,16,18,20,22,24,46,28,30,32 };  	// C=A+B 	for (i = 0; i < 4; i++) 	{ 		for (j = 0; j < 4; j++) 		{ 			C[i][j] = A[i][j] + B[i][j]; 		} 	}  	printf("Array C[4][4]:\n"); 	for (i = 0; i < 4; i++) 	{ 		for (j = 0; j < 4; j++) 		{ 			printf("%d\t", C[i][j]); 		} 		printf("\n"); 	}  	// AB 	for (i = 0; i < 4; i++) 	{ 		AB[i] = A[1][i];	//第二行：A[1][0]...A[1][3] 	} 	printf("\nArray AB[4]:\n"); 	print(AB);  	// BB 	for (i = 0; i < 4; i++) 	{ 		BB[i] = B[i][2];	//第三列：B[0][2]...B[3][2] 	} 	printf("\nArray BB[4]:\n"); 	print(BB);  	// AC 	for (i = 0; i < 4; i++) 	{ 		AC[i] = A[i][i]+B[i][i];	//这个数组中，对角线行列索引相等 	} 	printf("\nArray AC[4]:\n"); 	print(AC);  	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-0
content: 引用 1 楼 weixin_57293030的回复:第一个 if 写的不对  if(n>m)  好像是m>n

user: user-0
content: 引用 2 楼 weixin_57293030的回复:第一个回复写反了，应该是  if(m>n)

user: user-2
content: 供参考：#include<stdio.h> void main() {     int m,n,t,i,sum=0,count=0;     printf("Enter m,n:");     scanf("%d%d",&m,&n);     if( m > n){t=m;m=n;n=t;}     for(i=m;i<=n;i++)        if(i%3==0 && i%5!=0)        {           sum += i;           count++;        }     printf("sum=%d;count=%d\n",sum,count);      }

user: user-3
content: 第一个回复写反了，应该是  if(m>n)

user: user-3
content: 第一个 if 写的不对  if(n>m)
user-0 提问: 谁能帮我写个完整的C语言程序，解决这个问题，谢谢！

回复:
user: user-1
content: 供参考：#include<stdio.h> #include<math.h>  int sort(float *a,int n) {     int   i,j;     float t;     for(i=0;i<n-1;i++)         for(j=0;j<n-i-1;j++)             if(fabs(*(a+j)) < fabs(*(a+j+1)))//从大到小                {                   t      =*(a+j);                   *(a+j) =*(a+j+1);                   *(a+j+1)=t;                } }  int main() {     float a[10];     int   i;     for(i=0;i<10;i++)         scanf("%f",&a[i]);     sort(a,10);     for(i=0;i<10;i++)         printf("%.2f%c",a[i],i<9?',':'\n');      return 0; }

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: user-2
content: int main 是不是要return一个int呢？

user: user-3
content: 楼主这个代码没什么问题，解释见注释，供参考：//程序内容是实现回文数的判断：  //还有一个问题： //为了存储输入数字每一位上的数，我在程序中定义了一个容量为9999的数组，怎么实现根据输入数字 //的位数来定义数组的容量啊？？   #include <stdio.h>  int main() {             //问题一：     int b[10];//C语言中int的取值范围为：-2147483648 ~ 2147483647，十进制最大是10位数，所以b[？]不用这么大      int a,n=0,i=0,j=0,c;     printf("请输入一个数\n");     scanf("%d",&a);     c=a;     //如果在这里加入动态数组的定义，最前面的 int b[10]; 定义需删除或在头部加'//' 改为注释     //根据输入数字的位数来定义数组容量：你先需计算出输入数字的位数n，     //然后: int *b = (int *)malloc(sizeof(int)*n); memset(b,0,sizeof(int)*n);      for(a=c;a>=10;a=a/10)     {         b[i]=a%10;         i=i+1;     }     b[i]=a%10;     if(i%2==1)     {        for(n=0;n<(i+1)/2;n++)        {           if(b[n]==b[i-n])           {              j=j+1;           }        }        if(j==(i+1)/2)           printf("True");        else           printf("False");     }     else     {       for(n=0;n<=i/2;n++)       {           if(b[n]==b[i-n])           {              j=j+1;           }       }       if(j==i/2+1)          printf("True");       else          printf("False");     }     //如果定义b[]是动态的，在代码结束语句之前输入：free(b);显式释放数组，或不加 = 隐式释放。          return 0; }   //问题二： // error: redefinition of 'main'编译错误,main的重复定义 //这个题库的操作方法就是：只需要补上 欠缺的代码 即可
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: 重点在第8行末或第9行末的‘;'号 ，scanf("%d%d",&hour2,&minute2); int t1 = hour1 * 60 + minute1; #include<stdio.h>  int main() {      int hour1,minute1;      int hour2,minute2;      scanf("%d%d",&hour1,&minute1);      scanf("%d%d",&hour2,&minute2);      int t1 = hour1 * 60 + minute1;      int t2 = hour2 * 60 + minute2;      int t  = t2-t1;      printf("时间差是%d小时%d分钟。",t/60,t%60);            return 0; }

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: 引用 3 楼 qzjhjxj的回复:两句scanf() 输入在后，计算t值在前，它们用什么计算呢？这样改下，供参考：#include<stdio.h>  int main() {      int hour1,minute1,t1,t2,t;      int hour2,minute2;       scanf("%d%d",&hour1,&minute1);      scanf("%d%d",&hour2,&minute2);       t1 = hour1 * 60 + minute1;      t2 = hour2 * 60 + minute2;      t  = t2-t1;      printf("时间差是%d小时%d分钟。",t/60,t%60);            return 0; } 感谢！学会了！

user: user-2
content: 两句scanf() 输入在后，计算t值在前，它们用什么计算呢？这样改下，供参考：#include<stdio.h>  int main() {      int hour1,minute1,t1,t2,t;      int hour2,minute2;       scanf("%d%d",&hour1,&minute1);      scanf("%d%d",&hour2,&minute2);       t1 = hour1 * 60 + minute1;      t2 = hour2 * 60 + minute2;      t  = t2-t1;      printf("时间差是%d小时%d分钟。",t/60,t%60);            return 0; }

user: user-3
content: scanf后面写t1=hour1*60+minute1；t2=hour2*60+minute2;t=t2-t1;

user: user-3
content: 输入完后再赋值，hour1，minute1，hour2，minute2，还没开始输入数值赋值，你初始化时就用来给t1和t2和t赋值了，后面输入完数据后又没有给t1，t2，t，赋值。
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> #include <ctype.h> #include <stdlib.h> #define NUMBER '0' #define N 10  //输入浮点数个数  int main(void) {     int i,c,getfloat(char *);     float tmp,a[N], *s,*p = a;     char b[100];      i=0;     printf("请输入10个浮点数(空格或回车符分隔): \n");     while (i < N && (c = getfloat(b)))     {         if (c == NUMBER)         {             *p++ = atof(b);             i++;         }         else if ((c == '\n' || c == EOF) && i < N)             printf("已输入%d个数, 请继续输入%d个数: ",                    i, N - i);         else         {             printf("error: 请输入浮点数.");             exit(1);         }     }     for (p = a + i - 1; p > a; p--)         for (s = a; s <= p - 1; s++)             if (abs(*s) < abs(*(s + 1)))             {                 tmp = *s;                 *s = *(s + 1);                 *(s + 1) = tmp;             }     for (p = a; p < a + i; p++)         printf("%2.2f ", *p);      return 0; }  int getfloat(char *s) {     int c;     static int lastc = 0;      if (lastc == 0)         c = getchar();     else     {         c = lastc;         lastc = 0;     }     while (isspace(s[0] = c) && c != '\n' && c != EOF)         c = getchar();     s[1] = '\0';     if (isdigit(c) || c == '-' || c == '.')     {         while (isdigit(*++s = c = getchar()) || c == '-' || c == '.')             ;         *s = '\0';         lastc = c;         return NUMBER;     }     return c; }

user: user-3
content: #include <stdio.h> #include <stdlib.h> #include <math.h>  #define N 10  int main(){     float *p;          p=(float *)malloc(sizeof(float)*N);          for(int i=0;i<N;i++)     {       scanf("%f",p+i);      }          float tmp;     for(int i=0;i<N-1;i++)     {         for(int j=i;j<N;j++)         {             if(fabs(*(p+i)) < fabs(*(p+j)))              {                 tmp=*(p+i);                 *(p+i)=*(p+j);                 *(p+j)=tmp;              }         }     }          for(int i=0;i<N;i++)     {         printf("%.2f\n",*(p+i) );     }          return 0; }

user: user-0
content: 引用 1 楼 浪客的回复:大概这样子。  float a[10],*p,tmp; p=a; for(int i=0;i<9;i++) {   for(int j=1;j<10;j++)   {     if(abs(*(p+i))<abs(*(p+j)))     {       tmp=*(p+i);*(p+i)=*(p+j);*(p+j)=tmp;     }   } }   能写个完整的程序吗，有点不能理解，希望写个完整的程序，谢谢！

user: user-3
content: 大概这样子。  float a[10],*p,tmp; p=a; for(int i=0;i<9;i++) {   for(int j=1;j<10;j++)   {     if(abs(*(p+i))<abs(*(p+j)))     {       tmp=*(p+i);*(p+i)=*(p+j);*(p+j)=tmp;     }   } }
user-0 提问: 函数

回复:
user: user-0
content: 引用 1 楼 user-2的回复:供参考对照：#include<stdio.h>  int isprime(int a) {     int i;     if(a<=3)return a>1;     for(i=2;i*i<=a;i++)     {         if(a%i==0)return 0;     }     return 1; }  int outprime(int z) {      int j,cnt=0;      for(j=2;j<z;j++)      {          if(isprime(j))          {             printf("%4d",j);             cnt++;             if(cnt%6==0)printf("\n");          }      } }  int main() {      int t;      printf("请输入你想要求哪一个数范围内的质数:");      scanf("%d",&t);      outprime(t);            return 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 isprime(int a) {     int i;     if(a<=3)return a>1;     for(i=2;i*i<=a;i++)     {         if(a%i==0)return 0;     }     return 1; }  int outprime(int z) {      int j,cnt=0;      for(j=2;j<z;j++)      {          if(isprime(j))          {             printf("%4d",j);             cnt++;             if(cnt%6==0)printf("\n");          }      } }  int main() {      int t;      printf("请输入你想要求哪一个数范围内的质数:");      scanf("%d",&t);      outprime(t);            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-0
content: 引用 1 楼 阿麦的回复:存在 x !=y, 但f(x)=f(y)，就不存在反函数，否则存在反函数  大概是这个代码，没验证，意思到了。  const int N=100; int main() {     int cnt[N]={0};     bool Yes=True;     for(int x=0;x<n;x++) {         cnt[f(x)]++;     }     for(int x=0; x <n && Yes; x++) {         Yes = cnt[x] < 2;     }     // Yes 为 True 就是存在反函数，否则不存在     return 0; } 谢谢大哥 牛逼

user: user-2
content: 存在 x !=y, 但f(x)=f(y)，就不存在反函数，否则存在反函数  大概是这个代码，没验证，意思到了。  const int N=100; int main() {     int cnt[N]={0};     bool Yes=True;     for(int x=0;x<n;x++) {         cnt[f(x)]++;     }     for(int x=0; x <n && Yes; x++) {         Yes = cnt[x] < 2;     }     // Yes 为 True 就是存在反函数，否则不存在     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: 供参考：//用筛法求N之内的素数  #include<stdio.h> int main() { 	int n; 	bool prime[1000]; 	for(int i=0;i<1000;i++) 	{ 		prime[i]=0;//假设所有数都是素数 	} 	scanf("%d",&n); 	for(int i=2;i<=n;i++) 	{ 		if(prime[i]==0)//每次将一个素数的所有倍数标记为非素数 		{ 			for(int j=i*2;j<=n;j=j+i)//从二倍开始标记素数的倍数为非素数 			{ 				prime[j]=1; 			} 		} 	} 	for(int i=2;i<=n;i++) 	{ 		if(prime[i]==0)printf("%d\n",i); 	}     //system("pause");     return 0; }

user: user-0
content: 看不懂

user: user-3
content: #include<stdio.h> void main() {     int m,n;      scanf("%d%d",&m,&n);     for (int j, i = m; i <= n; i++)     {          for (j = 2; j  < i; j++)         {             if (i % j == 0)                 break;         }         if(j==i)printf("%d ",i);     } }

user: user-0
content: 搞错了，代码是这个： #include <stdio.h> #include <stdlib.h> #define N 100 void Siftprime(int a[], int n); void DoublePrime(int a[],int n);  //筛法求素数 void Siftprime(int a[], int n) { 	int i,j; 	for (i=2;i<=n;i++) 	{ 		a[i]=i; 	} 	for (i=2;i<=n;i++) 	{ 		for (j=i+1;j<n;j++) 		{ 			if (a[i]!=0&&a[j]!=0&&a[j]%a[i]==0) 				a[j]=0; 		} 	} }  void DoublePrime(int a[],int n) { 	int i; 	for (i=3;i<n;i++) 	{ 		if (a[i]!=0&&a[i+2]!=0) 			printf("%4d/%d",i,i+2); 	} }  int main() { 	int a[N+1]; 	Siftprime(a,N); 	DoublePrime(a,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: 随机必然有重复，所谓“不重复的随机”实际上是洗牌。洗牌算法参考下面： #include <stdio.h> #include <stdlib.h> #include <time.h> int d[6]; int i,n,a,b,t; int c,j; void main() {     srand(time(NULL));     printf("shuffle 0..n-1 demo\n");     for (n=1;n<=5;n++) {/* 测试1～5个元素 */         printf("_____n=%d_____\n",n);         j=1;         for (c=1;c<=n;c++) j=j*c;/* j为n! */         j*=n*2;         for (c=1;c<=j;c++) {/* 测试n*2*n!次 */             for (i=0;i<n;i++) d[i]=i;/* 填写0～n-1 */             for (i=n;i>0;i--) {/* 打乱0～n-1 */                 a=i-1;b=rand()%i;                 if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}             }             printf("%04d:",c);             for (i=0;i<n;i++) printf("%d",d[i]);             printf("\n");         }     }     printf("shuffle 1..n demo\n");     for (n=1;n<=5;n++) {/* 测试1～5个元素 */         printf("_____n=%d_____\n",n);         j=1;         for (c=1;c<=n;c++) j=j*c;/* j为n! */         j*=n*2;         for (c=1;c<=j;c++) {/* 测试n*2*n!次 */             for (i=1;i<=n;i++) d[i]=i;/* 填写1～n */             for (i=n;i>1;i--) {/* 打乱1～n */                 a=i;b=rand()%i+1;                 if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}             }             printf("%04d:",c);             for (i=1;i<=n;i++) printf("%d",d[i]);             printf("\n");         }     } }

user: user-3
content: 大概这样子吧   #include <stdbool.h>  //引入bool类型  bool chachong(int *arr, int index, size_t n) { 	if (!index || !n)   //忽略0值和第一个值 	{ 		return true; 	}  	while (n) //从数组中找重复的值 	{ 		if (arr[n - 1] == index) 		{ 			return true; 		} 		n--; 	}  	return false; }  //////////////// int arr[13] = {0}; size_t i=0; while (i < 13) { 	do 	{ 		arr[i] = rand() % 55; 	} while (chachong(arr, arr[i], i)); 	 	i++; }

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-0
content: 引用 2 楼 自信男孩的回复:strcmp不是比较地址值的大小，而是比较地址内数据的大小～ 兄弟，谢了，总以为数组和指针都是一个东西

user: user-2
content: strcmp不是比较地址值的大小，而是比较地址内数据的大小～

user: user-2
content: int mystrcmp(const char *a, const char *b) {     assert(a && b);       while (*a && *b) {         if (*a > *b)             return 1;         if (*a < *b)             return -1;         a++, b++;     }      if (*a == 0 && *b == 0)   //0即'\0'         return 0;     if (*a == '\0')         return -1;     if (*b == '\0')         return 1;      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: 参见eigen。
user-0 提问: GIS粘贴出大问题！求大神解救！

回复:
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: Excel中复制的内容粘贴在谷歌阅览器中的特定网址中才会变成相同乱码

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-2
content: 在C99之前，严格来说，C语言是没有布尔类型的。但是这并不妨碍C语言的工作，以及它和其它语言的接口，毕竟在编程语言里的惯例是0为假，非0为真。问题在于，很多人觉得这是一个和语言完备性有关的瑕疵和缺陷，就好比别人家里煮奶有专用的奶锅，你家里炒菜和煮奶都用同一个铁锅。  在WG14，很多委员都具有C++的背景，这些捣子特别喜欢往C标准里添加C++的玩意儿，但多数不会被标准委员会采纳，因为里面很多都是私货。也就是厂商的代表都希望把自己公司的扩展特性加入到标准里。  也许是起哄的人太多，WG14最终妥协了，决定把布尔类型加入到C语言的下一个标准C99里。理想情况下，这需要引入一个关键字boolean，或者至少是一个好记的bool。但是，在此之前，有很多完美主义的程序员为了图方便，满足自己的语言洁癖，已经在程序中定义了自己的“bool”，而且这样的程序肯定有成千上万。为了能够正常编译这些已有的程序，C99决定引入一个带有下划线的关键字_Bool，这样就很难有冲突了。  关键字_Bool被用作类型指定符，用来声明变量，或者函数的参数和返回类型。这种类型的变量具有以下特点：  1，它是一种无符号整数类型； 2，至少可以保存0和1两个值； 3，将任何标量值转换为_Bool类型时，零值转换为零，非零值转换为1；  C语言规定，除了位域（bit-fields），任何对象（变量）都是由一个或多个连续的字节组成。因此，_Bool类型的长度至少是一个字节。  为了方便，在C语言的标准库部分增加了一个头<stdbool.h>。这个头非常简单，就定义了几个宏：  # define bool	_Bool  # define true	1 # define false	0  # define __bool_true_false_are_defined	1  最后一个宏__bool_true_false_are_defined是个标记，用于表明前面的三个宏已经定义，可以使用。

user: user-3
content: 引用 2 楼 淘豚 的回复:[quote=引用 1 楼 自信男孩的回复:]枚举定义的，FALSE=0，TRUE=1；  enum是一个关键字，类似struct，union 在布尔形式c语言中到底起什么作用？[/quote] 它就是一种整型值，真或假；

user: user-0
content: 引用 1 楼 自信男孩的回复:枚举定义的，FALSE=0，TRUE=1；  enum是一个关键字，类似struct，union 在布尔形式c语言中到底起什么作用？

user: user-3
content: 枚举定义的，FALSE=0，TRUE=1；  enum是一个关键字，类似struct，union
user-0 提问: 救救孩子吧

回复:
user: user-1
content: 怎么理解：int *y=0;  就算是C语言太灵活而不够稳定吧？编译器确实可能把*y和*z按照野指针处理了。

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: #include <stdio.h> #pragma warning(disable:4996) void separate(float x, int* y, float* z); int main() { 	float data, z; 	int y; 	printf("从键盘输入一个实型数据："); 	scanf("%f", &data); 	separate(data, &y, &z); 	printf("%d,%f", y, z); } void separate(float x, int* y, float* z) { 	*y = x; 	*z = x - *y;   }

user: user-4
content: 引用 6 楼 智者知已应修善业 的回复:  void separate(float x, int *y, float *z) { 	*y = (int)x; 	*z = x - *y; }   	float data, *z = (float*)malloc(1); 	int *y = (int*)malloc(1); 	printf("从键盘输入一个实型数据："); 	scanf_s("%f", &data); 	separate(data, y, z); 	printf("%d,%f", *y, *z); 误人子弟第一名  你就不能好好看看 malloc的参数是什么意思么 全部传递1哦

user: user-4
content: 引用 4 楼 智者知已应修善业 的回复: 	float data, *z = (float*)malloc(1); 	int *y = (int*)malloc(1); 错的 新朋友别学

user: user-5
content: void separate(float x, int *y, float *z) { 	*y = (int)x; 	*z = x - *y; }   	float data, *z = (float*)malloc(1); 	int *y = (int*)malloc(1); 	printf("从键盘输入一个实型数据："); 	scanf_s("%f", &data); 	separate(data, y, z); 	printf("%d,%f", *y, *z);

user: user-6
content: #include <stdio.h>  void separate(float x,int *y,float *z);  //void main () int main (void) {     //float data, *z;     float data, z;     //int *y;     int y;      printf ("从键盘输入一个实型数据：");     scanf ("%f",&data);     printf("%f\n", data);     separate (data, &y, &z);     //printf ("%d,%f",*y,*z);     printf ("%d,%f", y, z); }  void separate(float x,int *y,float *z) {     *y = (int)x;     *z = x - *y; } 供参考～  两个指针都是野指针，需要分配空间，或者直接用普通变量吧

user: user-5
content: float data, *z = (float*)malloc(1); 	int *y = (int*)malloc(1);

user: user-7
content: z和y是指针没有指向数据的空间

user: user-8
content: void separate(float x,int *y,float *z); int main() {     float data, z;     int y;     printf ("从键盘输入一个实型数据：");     scanf ("%f",&data);     separate (data, &y, &z);     printf ("%d,%f",y, z); } void separate(float x,int *y,float *z) {      *y = (int)x;     *z = x - *y;  }

user: user-0
content: 引用 楼主 栀九lyp的回复: #include <stdio.h> void separate(float x,int *y,float *z); void main () { 	float data, *z; 	int *y; 	printf ("从键盘输入一个实型数据："); 	scanf ("%f",&data); 	separate (data,y,z); 	printf ("%d,%f",*y,*z); } void separate(float x,int *y,float *z) {  	*y = (int)x; 	*z = x - *y;    } 为什么我这样总是运行不出来
user-0 提问: vs写的cpp里中文莫名其妙乱码

回复:
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/qq_42956179/article/details/106075025

user: user-3
content: 原因就是： 比如原来的汉字编码是utf8的； 但被无脑编辑器误当gbk进行了一次gbk到utf8的转换。
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: 引用 1 楼 赵4老师的回复:#include <stdio.h> void main() {     int x,y;     int *maxaddress(int *a,int*b);     int *minaddress(int *a,int*b);     void process(int *a,int *b,int *(*fun)(int *a,int *b));     printf("从键盘输入两个整数，逗号分隔：");     scanf("%d,%d",&x,&y);     printf("最大地址为：");     process(&x,&y,maxaddress);     printf("最小地址为：");     process(&x,&y,minaddress); }  int *maxaddress(int *a,int*b) {     if (*a>*b) return a;     else return b; }  int *minaddress(int *a,int*b) {     if (*a<*b) return a;     else return b; }  void process(int *a,int *b,int *(*fun)(int *a,int *b)) {     printf("%p\n",fun(a,b)); } //从键盘输入两个整数，逗号分隔：1,2 //最大地址为：003FFAA0 //最小地址为：003FFA9C //  谢谢老师指导

user: user-2
content: #include <stdio.h> void main() {     int x,y;     int *maxaddress(int *a,int*b);     int *minaddress(int *a,int*b);     void process(int *a,int *b,int *(*fun)(int *a,int *b));     printf("从键盘输入两个整数，逗号分隔：");     scanf("%d,%d",&x,&y);     printf("最大地址为：");     process(&x,&y,maxaddress);     printf("最小地址为：");     process(&x,&y,minaddress); }  int *maxaddress(int *a,int*b) {     if (*a>*b) return a;     else return b; }  int *minaddress(int *a,int*b) {     if (*a<*b) return a;     else return b; }  void process(int *a,int *b,int *(*fun)(int *a,int *b)) {     printf("%p\n",fun(a,b)); } //从键盘输入两个整数，逗号分隔：1,2 //最大地址为：003FFAA0 //最小地址为：003FFA9C //
user-0 提问: MinGW合并静态库有没有简单点的办法？

回复:
user: user-1
content: mkdir libABC cd libABC ar x lib/A.a ar x lib/B.a ar x lib/C.a ar rcs libABC.a *.o

user: user-1
content: 引用 楼主 六道佩恩 的回复:目前找到的方法都是ar把.a解开成.o再合并 感觉这样挺麻烦的，有没有更简单的方法 像MSVC的lib合并静态库就好方便  如果实在只能用这种方法的话，怎样让分解的目标文件都集中到一个文件夹？不然ar合并*.o容易把不相关的.o文件合并进来 mkdir libABC cd libABC ar x lib/A.a ar x lib/B.a ar x lib/C.a ar rcu libABC.a *.o ranlib libABC.a //Generate an index to speed access to archives

user: user-1
content: 引用 6 楼 六道佩恩 的回复:刚简单测试了下，用lib合并.o为.a是可行的 .o和.obj应该都是符合PE结构的，.a和.lib应该也都是吧，这样看的话，用lib管理应该是可以的吧？ 可以用十六进制编辑器对比一下.a和.lib，看看是否符合PE的格式 就算在Windows下可以用lib来管理，但在Linux下还是要使用ar的方式 另外，在Windows下，也是建议使用先提取obj，再合并，这样可以去除不必要的obj，只选取需要的obj再合并为lib  方法1: lib.exe lib1.lib lib2.lib /out:new.lib   方法12: lib.exe可以把lib文件里的obj文件取出来，然后把这些obj文件重新合并成一个lib文件即可。 步骤如下： 1、列出lib文件中的obj文件      lib lib1.lib /list      lib lib2.lib /list 2、提取出obj文件，大小写一定要和上一步列出的一致      lib lib1.lib /extract:.\Debug\lib1.obj /out:lib1.obj      lib lib2.lib /extract:.\Debug\lib2.obj /out:lib2.obj 3、合并obj文件到新的lib      lib lib1.obj lib2.obj /out:new.lib

user: user-2
content: 程序猿的问题用程序解决嘛，手工能做，仅仅是麻烦的这种事是最适合写代码解决的了。 看哪个工具命令好用就自己仿一个。

user: user-0
content: 引用 3 楼 Intel0011 的回复:mkdir libABC cd libABC ar x lib/A.a ar x lib/B.a ar x lib/C.a ar rcs libABC.a *.o 刚简单测试了下，用lib合并.o为.a是可行的 .o和.obj应该都是符合PE结构的，.a和.lib应该也都是吧，这样看的话，用lib管理应该是可以的吧？

user: user-0
content: 引用 3 楼 Intel0011 的回复:mkdir libABC cd libABC ar x lib/A.a ar x lib/B.a ar x lib/C.a ar rcs libABC.a *.o 可以问下.o和.lib的区别吗，如果兼容的话，用lib来合并如何？

user: user-0
content: 引用 3 楼 Intel0011 的回复:mkdir libABC cd libABC ar x lib/A.a ar x lib/B.a ar x lib/C.a ar rcs libABC.a *.o  也就是，没办法更简单的办法或相关工具是吗
user-0 提问: 整理了62套C需要小游戏源码，送给大家

回复:
user: user-1
content: 链接怎么进去啊

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

user: user-4
user-0 提问: 请问这第一题怎么用C语言完成啊

回复:
user: user-0
content: 引用 1 楼 qzjhjxj的回复:供参考：#include<stdio.h> #define N 6 //200  int main() {     int i,score[N],cnt_fail=0;     printf("请输入%d个学生成绩:",N);     for(i=0;i<N;i++)         scanf("%d",&score[i]);     for(i=0;i<N;i++){         if(score[i]<60){            printf("%d ",score[i]);            cnt_fail++;         }     }     printf("\n");     for(i=0;i<N;i++){         if(score[i]>=60)            printf("%d ",score[i]);     }     printf("\n");     printf("cnt_fail:%d, cnt_pass:%d\n",cnt_fail,N-cnt_fail);          return 0; } 虽然考试过了还是谢了

user: user-1
content: 供参考：#include<stdio.h> #define N 6 //200  int main() {     int i,score[N],cnt_fail=0;     printf("请输入%d个学生成绩:",N);     for(i=0;i<N;i++)         scanf("%d",&score[i]);     for(i=0;i<N;i++){         if(score[i]<60){            printf("%d ",score[i]);            cnt_fail++;         }     }     printf("\n");     for(i=0;i<N;i++){         if(score[i]>=60)            printf("%d ",score[i]);     }     printf("\n");     printf("cnt_fail:%d, cnt_pass:%d\n",cnt_fail,N-cnt_fail);          return 0; }

user: user-2
content: #include <stdio.h>  #define N   200 int main(void) {     int total, score[N], tmp, ret;     int i, cnt_fail = 0, idx;      idx = 0;     for(i=0;i<N;i++) {         ret = scanf("%d", &tmp);         if (ret != 1)             break;         if(tmp < 60){             cnt_fail++;             printf("%d ", tmp);         } else  {             score[idx++] = tmp;         }     }     total = i;      for (i = 0; i < total - cnt_fail; i++)         printf("%d ", score[i]);     putchar(10);      printf("%d %d\n", cnt_fail, total-cnt_fail);      return 0; } 供参考～  在第一个循环里可以完成尽可能多的事情～

user: user-3
content: 你没有必要2个循环判断，一个for就能统计完所有的了
user-0 提问: 为啥没有输出哇？好奇怪

回复:
user: user-1
content: 就是你代码里的指针呀，跟1楼比较一下，那个是正确的，先给指针定个小目标嘛。

user: user-0
content: 引用 1 楼 user-2 的回复:变量，指针变量，指针，地址，供参考：#include<stdio.h>  int main() {     int *A,*B,*C,a,b,c,t;     scanf("%d%d%d",&a,&b,&c);     A=&a;B=&b;C=&c;     printf("1:%d,%d,%d\n",*A,*B,*C);     if(*A > *B)     {         t =*A;         *A=*B;         *B=t;     }     if(*A > *C)     {         t =*A;         *A=*C;         *C=t;     }     if(*B > *C)     {         t =*B;         *B=*C;         *C=t;     }     printf("2:%d,%d,%d\n",*A,*B,*C);          return 0; } 可以解释一下为什么要这么做吗？

user: user-0
content: 引用 2 楼 forever74 的回复:向无目标指针的目标写入数据，有可能引起核弹意外发射。 无目标指针是什么意思？

user: user-2
content: 需要对指针变量、地址各是什么，深入的学习下，结合上面代码的找找感觉。我们定义：int *A,*B,*C; 三个是指针变量，这三个变量里只能放得下地址门牌号，我们把他们看成三个抽屉。我们又定义了：int a,b,c;  三个变量，我们把他们看成是三间房子，然后把三个宝贝放到三间房子里。现在，我们想把放在a 和 b 房子里的宝贝据为己有，那怎么才能找到他们？我们拉开抽屉A找到a家地址，然后驱车前往取得，然后从抽屉B里得到b家地址，同样驱车前往拿到他们，就是这么个感觉。

user: user-1
content: 向无目标指针的目标写入数据，有可能引起核弹意外发射。

user: user-2
content: 变量，指针变量，指针，地址，供参考：#include<stdio.h>  int main() {     int *A,*B,*C,a,b,c,t;     scanf("%d%d%d",&a,&b,&c);     A=&a;B=&b;C=&c;     printf("1:%d,%d,%d\n",*A,*B,*C);     if(*A > *B)     {         t =*A;         *A=*B;         *B=t;     }     if(*A > *C)     {         t =*A;         *A=*C;         *C=t;     }     if(*B > *C)     {         t =*B;         *B=*C;         *C=t;     }     printf("2:%d,%d,%d\n",*A,*B,*C);          return 0; }
user-0 提问: 关于宏定义与指针

回复:
user: user-0
content: 引用 2 楼 user-1 的回复:供参考：#include<stdio.h>  #define change(a,b)  t=(a),(a)=(b),(b)=t #define compare(a,b) (a)>(b)?change((a),(b)):NULL  int main() {     int *a,*b,*c,t,A,B,C;     scanf("%d%d%d",&A,&B,&C);     a=&A;b=&B;c=&C;     printf("1: %d,%d,%d\n",*a,*b,*c);      compare((*a),(*b));     compare((*a),(*c));     compare((*b),(*c));     printf("2: %d,%d,%d\n",*a,*b,*c);      return 0; } 感觉和我另一个帖子犯的错误好像啊

user: user-1
content: 深入理解指针、地址、变量的概念，然后结合上面的代码再找找感觉。

user: user-1
content: 供参考：#include<stdio.h>  #define change(a,b)  t=(a),(a)=(b),(b)=t #define compare(a,b) (a)>(b)?change((a),(b)):NULL  int main() {     int *a,*b,*c,t,A,B,C;     scanf("%d%d%d",&A,&B,&C);     a=&A;b=&B;c=&C;     printf("1: %d,%d,%d\n",*a,*b,*c);      compare((*a),(*b));     compare((*a),(*c));     compare((*b),(*c));     printf("2: %d,%d,%d\n",*a,*b,*c);      return 0; }

user: user-0
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: 数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

user: user-3
content: 修改如下，供参考：#include<stdio.h> #include<stdlib.h>  typedef struct Syracuse {     int    value;     struct Syracuse *next; } Syracuse_t;  void display_SyracuseSeq(Syracuse_t *ptrL);//头指针ptrL，作用带替printf输出序列 Syracuse_t * create_SyracuseSeq(int n);//运行函数，当值到1就结束 void destroy_SyracuseSeq(Syracuse_t **adptrL);//释放内存函数  int main(int agrc, char *argv[])//argc记录了用户在运行程序的命令行中输入的参数的个数。 {     Syracuse_t *ptrL;     int n=4; // value of u0     ptrL=create_SyracuseSeq(n);     display_SyracuseSeq(ptrL);     destroy_SyracuseSeq(&ptrL);     display_SyracuseSeq(ptrL);          return EXIT_SUCCESS; } void display_SyracuseSeq(Syracuse_t *ptrL)//头指针ptrL，作用带替printf输出序列 {     Syracuse_t *p;     p=ptrL->next; //p=ptrL;     printf("Syracuse sequence starts with: ");     while(p)  //->value!=1)     {        printf(" %d ", p->value);        p=p->next;     }               //printf(" %d ", p->value);     printf("\n"); } Syracuse_t * create_SyracuseSeq(int n) {     Syracuse_t *ptrL,*tail;     Syracuse_t *p;     ptrL=(Syracuse_t * )malloc(sizeof(Syracuse_t));     ptrL->value=n;     ptrL->next=NULL;     tail=ptrL;     while(n >= 1)//while(ptrL&&ptrL->value!=1)     {         p=(Syracuse_t * )malloc(sizeof(Syracuse_t));         if (n%2 == 0)             p->value = n/2;         else             p->value = 3*n + 1;         p->next=NULL;         tail->next=p;         tail=p;         n--;     }     return ptrL; } void destroy_SyracuseSeq(Syracuse_t **adptrL) {     Syracuse_t *p;     p=(*adptrL)->next;     while(p!=NULL) //NUll     {         (*adptrL)->next=p->next;         free(p);         p=(*adptrL)->next;     } }
user-0 提问: 大佬帮帮忙keil程序问题

回复:
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 提问: 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语言编程 和 中国人用筷子吃饭 一样。
user-0 提问: 求，哪个人可以帮帮我

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

user: user-2
content: 第二题，供参考：#include<stdio.h>  int sort_mid(int *p,int n);  int main() {     int s[256],i=0,max=0,min=101,avg=0;     while(scanf("%d",&s[i])==1 && s[i] != -1){           if(max < s[i]) max = s[i];           if(min > s[i]) min = s[i];           avg += s[i];           i++;     }     printf("max=%d,min=%d,avg=%.1f,mid=%d\n",max,min,(float)avg/i,sort_mid(s,i));          return 0; } int sort_mid(int *p,int n)//取中位数 {    int i,k,mid,t;    int *a = (int *)malloc(sizeof(int)*n);    for(i=0,k=0;i<n;k++,i++)        a[k] = p[i];    for(i=0;i<n-1;i++){ //排序       for(k=0;k<n-i-1;k++){           if(a[k]>a[k+1]){              t     = a[k];              a[k]  = a[k+1];              a[k+1]= t;           }       }    }    if(n%2==0)         mid=(a[n/2]+a[n/2-1])/2;    else         mid=a[(n-1)/2];    free(a);    return mid; }

user: user-3
content: #include <stdio.h> int main(int argc, char* argv[]) {      int a, b, c;  	scanf("%d%d%d", &a, &b, &c); 	 	if(a==b || a==c || b==c) 	{ 		printf("是\n"); 	} 	else 	{ 		printf("不是\n"); 	}  	return 0; }

user: user-4
content: std::set<int> val; 	val.insert(a); 	val.insert(b); 	val.insert(c);  	switch (val.size()) 	{ 	case 1: 		// 等边三角形 		break; 	case 2: 		// 等腰三角形 		break; 	default: 		// 其他 		break; 	}

user: user-4
content: 第一题，其实可以简化为统计数量，只要其中两条一样就是等腰，三条全等我不知道你们老师是否算等腰。

user: user-0
content: 引用 1 楼 ggglivw的回复:这些题目都很简单啊，都是课程简单的循环统计就可以搞定 大神，现在特别急

user: user-0
content: 引用 1 楼 ggglivw的回复:这些题目都很简单啊，都是课程简单的循环统计就可以搞定 求，帮帮忙了

user: user-5
content: #include <stdio.h>  int main(void) {      int a, b, c;      scanf("%d%d%d", &a, &b, &c);      if (a + b < c || a + c < b || b + c < a) {         printf("Not a triangle!\n");         return 0;     }      if (a == b || b == c || a == c) {         printf("an isosceles triangle!\n");         return 0;     } else {         printf("Not an isosceles triangle!\n");     }      return 0; } 供参考～

user: user-2
content: 百度上搜索。

user: user-0
content: 帮我做一下，谢谢了。

user: user-4
content: 这些题目都很简单啊，都是课程简单的循环统计就可以搞定
user-0 提问: 新手使用vs2015遇到问题了

回复:
user: user-0
content: 解决了，中英转换，输入法害人

user: user-1
content: 把main的返回值设定为int，另外，注意下中英文的字符～

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

user: user-3
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-4
content: int main（void）像极了输入了中文括号。
user-0 提问: C语言嵌套循环

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

user: user-2
content: 用字符串处理比较合适，

user: user-3
content: int是有范围的，你的i=i+b*pow会超出int范围 按字符一个以输出就好，不需要转成int再输出
user-0 提问: 变长十六进制字符串赋值到结构体，该如何写，请指点下

回复:
user: user-1
content: #pragma warning(disable:4996 4838) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS” #include <stdio.h> #include <string.h> #include <malloc.h> #include <stdlib.h> #pragma pack(push) #pragma pack(1) struct CHANNEL {     short int Stat;     float Data; }; struct DATA {     char Start;     char Address[4];     char Command[2];     char BinaryBlocSize[2];     char StartChannel;     unsigned char NumberOfChannel;     struct CHANNEL *Channel; } data; #pragma pack(pop) void swapbyte(char *a,char *b) {     char t;     t=*a;*a=*b;*b=t; } int main() {     char b[]={         0x1B,         0x41,0x46,0x32,0x32,         0x32,0x34,         0x00,0x2C,         0x01,         0x07,          0x02,0x00,         0xBD,0xD6,0xD4,0x57,          0x02,0x00,         0x43,0xF5,0x14,0x03,          0x02,0x00,         0x43,0x18,0x48,0x9B,          0x02,0x00,         0x44,0x77,0xAF,0xE5,          0x02,0x00,         0x41,0xA0,0x21,0x12,          0x02,0x00,         0x42,0x48,0x02,0xAB,          0x02,0x00,         0x45,0x24,0x5B,0x7C,          0x41,0x36,         0x03};     memcpy((void *)&data,(const void *)&b[0],1+4+2+2+1+1);     int NBC=(int)(data.NumberOfChannel);     printf("NBC:%d\n",NBC);     printf("sizeof(struct CHANNEL):%d\n",sizeof(struct CHANNEL));     data.Channel=(struct CHANNEL *)malloc(NBC*sizeof(struct CHANNEL));     memcpy((void *)(data.Channel),(const void *)&b[1+4+2+2+1+1],NBC*sizeof(struct CHANNEL));     for (int i=0;i<NBC;i++) {         swapbyte(0+(char *)&(data.Channel[i].Data),3+(char *)&(data.Channel[i].Data));         swapbyte(1+(char *)&(data.Channel[i].Data),2+(char *)&(data.Channel[i].Data));     }     for (int i=0;i<NBC;i++) {         printf("%d %hd %f\n",i,data.Channel[i].Stat,data.Channel[i].Data);     }     free(data.Channel);     return 0; } //NBC:7 //sizeof(struct CHANNEL):6 //0 2 -0.104897 //1 2 490.156342 //2 2 152.283615 //3 2 990.748352 //4 2 20.016148 //5 2 50.002605 //6 2 2629.717773 //

user: user-0
content: NBYTE    字段  00 2C  表示长度，  我主要不知道怎么 把   4个字节放到一个 变量里去，用循环模式， 例如 ：41 46 32 32 放到一个结构体的变量   BD D6 D4 57放到一个结构体的变量  请指点这里怎么写即可，

user: user-2
content: 既然是变长的，那前面是不是有指示这个长度是多长呢？如果没有，有没有这个边长的结束标识？这两个条件有其一就可以解析～

user: user-2
content: 引用 3 楼 2004v2004 的回复:NBYTE    字段  00 2C  表示长度，  我主要不知道怎么 把   4个字节放到一个 变量里去，用循环模式， 例如 ：41 46 32 32 放到一个结构体的变量   BD D6 D4 57放到一个结构体的变量  请指点这里怎么写即可， 那就先解析到可变长度的具体长度，把这个长度值获取后，这这样就知道接下来读取结果字节，后面的就完全匹配了。

user: user-3
content: 它这个是大端字节序

user: user-3
content: (NBYTE - 4) / sizeof(float)就是浮点数据的数量
user-0 提问: 初学者求解决

回复:
user: user-1
content: 你是不是编译了错误的.cpp文件呢？再检查一下，你现在编译的是那个文件？

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: 因为隔壁孩子犯错误你就要打自家孩子一顿？ 看清楚出错的是  源2 缺乏联系的独立程序不要都弄进一个项目，应单立项目，否则接下来还是有错。
user-0 提问: 关于赋值到结构体的问题，我没理解请指点下

回复:
user: user-1
content: 你这打印的都是指针值

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-0
content: 谢谢了，自信男孩，

user: user-3
content: #include <stdio.h> #include <string.h>  struct DATA {     char Start[1];     char Address[4];     char Command[2];     char Date[6];     char StatusCode[1];     char Alarmcode[1]; } data;  int main() {     char b[] = {         0x02,         0x41, 0x43, 0x33, 0x32,         0x31, 0x36,         0x32, 0x31, 0x30, 0x34, 0x32, 0x36,         0x01,         0x07};     int i;     //memcpy((void *)&data, (const void *)&b[0], 1+4+2+6+1+1);     memcpy(&data, &b[0], 1+4+2+6+1+1);       printf("Start:%.2X\n", data.Start);     //printf("Address:%s\n", data.Address);     printf("Address:");     for (i = 0; i < 4; i++)         putchar(data.Address[i]);     putchar(10);    //'\n'     //printf("Command:%s\n", data.Command);     printf("Command:");     for (i = 0; i < 2; i++)         putchar(data.Command[i]);     putchar(10);    //'\n'     //printf("Date:%s\n", data.Date);     printf("Date:");     for (i = 0; i < 6; i++)         putchar(data.Date[i]);     putchar(10);    //'\n'     printf("StatusCode:%.2X\n", data.StatusCode[0]);     printf("Alarmcode:%.2X\n", data.Alarmcode[0]);  } 供参考～  拷贝没问题，问题在于用%s输出你得有'\0'结束，申请4个字节，全用有效数值填充了，'\0'在哪呢？  后两个code，既然定义了数组，那就应该用下表去访问值。
user-0 提问: 请问有没有做过通信模块 AT指令 数据发送 和 解析的大佬

回复:
user: user-0
content: 引用 7 楼 赵4老师 的回复:[quote=引用 6 楼 lyy26655 的回复:][quote=引用 2 楼 赵4老师 的回复:]了解一下有限状态自动机  您好 去用了状态机 真的牛逼 大幅缩短了等待时间 没有用到delay_ms 感谢 目前调试了大半 还算顺利[/quote] 听大神一句话，胜读十年书，胜写1000行代码，胜调试10000行代码！ [/quote]  哈哈哈哈哈感谢

user: user-1
content: 引用 6 楼 lyy26655 的回复:[quote=引用 2 楼 赵4老师 的回复:]了解一下有限状态自动机  您好 去用了状态机 真的牛逼 大幅缩短了等待时间 没有用到delay_ms 感谢 目前调试了大半 还算顺利[/quote] 听大神一句话，胜读十年书，胜写1000行代码，胜调试10000行代码！

user: user-0
content: 引用 2 楼 赵4老师 的回复:了解一下有限状态自动机  您好 去用了状态机 真的牛逼 大幅缩短了等待时间 没有用到delay_ms 感谢 目前调试了大半 还算顺利

user: user-0
content: 引用 2 楼 赵4老师 的回复:了解一下有限状态自动机  好的，谢谢您

user: user-0
content: 引用 1 楼 xws245925587 的回复:串口接收到的数据，丢进循环fifo里，然后主线程一直去读fifo，然后做字符协议解析，这种模块的通讯都有固定格式的，一般是以\r\n结尾的  感谢您，看了一些资料感觉还是需要一个专门的框架去解析

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

user: user-2
content: 串口接收到的数据，丢进循环fifo里，然后主线程一直去读fifo，然后做字符协议解析，这种模块的通讯都有固定格式的，一般是以\r\n结尾的

user: user-3
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 提问: 用for循环怎么编，我一脸懵

回复:
user: user-1
content: 找规律，行数和行号，空格的个数与行号的关系；把这些理清楚了，就好写了吧

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: 供参考：#include<stdio.h>  int main() {     int i,j,n=6;     //scanf("%d",&n);     for(i=0;i<n;i++)     {         for(j=0;j<i+1;j++)             printf(" ");         for(j=0;j<n;j++)             printf("%c",i%2==0?'#':'*');         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: 先读取文本，然后解析，创建节点，存放在单词或标点；
user-0 提问: 请问 关于c 语言 如何解析 32 bits floating point IEEE format 如下

回复:
user: user-1
content: #pragma warning(disable:4996 4838) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”  #include <stdio.h>  #include <string.h>  #include <malloc.h>  #include <stdlib.h>  #pragma pack(push)  #pragma pack(1)  struct CHANNEL {      short int Stat;      float Data;  };  struct DATA {      char Start;      char Address[4];      char Command[2];      char BinaryBlocSize[2];      char StartChannel;      unsigned char NumberOfChannel;      struct CHANNEL *Channel;  } data;  #pragma pack(pop)  void swapbyte(char *a,char *b) {      char t;      t=*a;*a=*b;*b=t;  }  int main() {      char b[]={          0x1B,          0x41,0x46,0x32,0x32,          0x32,0x34,          0x00,0x2C,          0x01,          0x07,            0x02,0x00,          0xBD,0xD6,0xD4,0x57,            0x02,0x00,          0x43,0xF5,0x14,0x03,            0x02,0x00,          0x43,0x18,0x48,0x9B,            0x02,0x00,          0x44,0x77,0xAF,0xE5,            0x02,0x00,          0x41,0xA0,0x21,0x12,            0x02,0x00,          0x42,0x48,0x02,0xAB,            0x02,0x00,          0x45,0x24,0x5B,0x7C,            0x41,0x36,          0x03};      memcpy((void *)&data,(const void *)&b[0],1+4+2+2+1+1);      int NBC=(int)(data.NumberOfChannel);      printf("NBC:%d\n",NBC);      printf("sizeof(struct CHANNEL):%d\n",sizeof(struct CHANNEL));      data.Channel=(struct CHANNEL *)malloc(NBC*sizeof(struct CHANNEL));      memcpy((void *)(data.Channel),(const void *)&b[1+4+2+2+1+1],NBC*sizeof(struct CHANNEL));      for (int i=0;i<NBC;i++) {          swapbyte(0+(char *)&(data.Channel[i].Data),3+(char *)&(data.Channel[i].Data));          swapbyte(1+(char *)&(data.Channel[i].Data),2+(char *)&(data.Channel[i].Data));      }      for (int i=0;i<NBC;i++) {          printf("%d %hd %f\n",i,data.Channel[i].Stat,data.Channel[i].Data);      }      free(data.Channel);      return 0;  }  //NBC:7  //sizeof(struct CHANNEL):6  //0 2 -0.104897  //1 2 490.156342  //2 2 152.283615  //3 2 990.748352  //4 2 20.016148  //5 2 50.002605  //6 2 2629.717773  //

user: user-0
content: typedef union {     float a;     char b[4]; } Packet;  Packet packet;  float IEEE2Float(const unsigned int NumFloat32) {     unsigned char i = 0;     unsigned long int Temp32;     float f_Temp;      Temp32 = NumFloat32; // ;     for (int i = 0; i < 4; i++)     {         packet.b[i] = (unsigned char)(Temp32 >> (i * 8));     }     f_Temp = packet.a;     printf("%.3f\n", f_Temp);     return f_Temp; }  调用 IEEE2Float(0xBDD1F210); 得到是 -0.103   这个值是正确的  0200  是分隔符号，  BDD1F210 = -0.10251247882843018 43F6AB0B =493.336273193  4318540D =152.3283233642578 4477AF9D =990.74395752 41A0201E =20.015682220458984 424804DB =50.0047416687 452464CC=2630.2998046875 计算是这么计算的

user: user-2
content: 恩，直接拷贝到float变量里就可以了。memcpy可以试一下～

user: user-3
content: 直接截取，然后拷贝到一个float里面
user-0 提问: 萌新有个关于补码方面的问题

回复:
user: user-0
content: 各位 我懂了 异号补码相减可能会溢出 所以结果会出现错误

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，所以你的式子不全对

user: user-3
content: 你一点都不提背景和代码，所以没法对症下药。 只能说，设计补码这种东西就是为了程序员省心的，所以大概率是你想多了。