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-0
content: ddddddd

user: user-2
content: #include<stdio.h> #include <math.h> #include <ctype.h>  int main() {     int n;     int i = 1, sum = 1;     double e = 1, tmp;;      scanf("%d", &n);      if (n > 16)         n = 16;     if (n < 1) {         printf("%.2lf\n", 1.0);         return 0;     }     do {         sum *= i;         tmp = 1.0/sum;         e += tmp;         printf("i = %d, sum = %d\n", i, sum);         i++;     } while (fabs(tmp) > 1e-6 && i < n);      printf("%.2lf\n", e);     return 0; } 供参考～
user-0 提问: 函数传入参数后，实际发生了变化

回复:
user: user-1
content: C/c++编译完哪有什么变量名

user: user-2
content: s1 s2都是struct st的对象，怎么会里面的名字不一样呢？而且如果形参跟实参类型不同，是编译不过去的啊

user: user-3
content: 还得看一下在调用function_2之前是不是对s1进行了修改或覆盖  参数传递之前，即调用function_2之前，打印一下s1的内容，然后在function_2函数内打印一下形参内容，对比一下再看看

user: user-4
content: 是其他原因导致的。

user: user-0
content: 引用 7 楼 自信男孩 的回复:[quote=引用 5 楼 Roi_ 的回复:][quote=引用 3 楼 flying_music 的回复:]s1 s2都是struct st的对象，怎么会里面的名字不一样呢？而且如果形参跟实参类型不同，是编译不过去的啊  s1 s2都是struct st的对象，但是s1.name 和 s2.name是不一样的。形参、实参类型是匹配的，编译也通过了。[/quote]  描述不能代替代码，把涉及到的完整代码发一下吧[/quote]  谢谢大家提供的思路，问题解决了，刚刚在编译机上重新编译替换了。个人粗心导致编译后的代码没有及时替换，导致GDB调试的时候显示的是新代码，实际运行的是旧代码。

user: user-3
content: 引用 5 楼 Roi_ 的回复:[quote=引用 3 楼 flying_music 的回复:]s1 s2都是struct st的对象，怎么会里面的名字不一样呢？而且如果形参跟实参类型不同，是编译不过去的啊  s1 s2都是struct st的对象，但是s1.name 和 s2.name是不一样的。形参、实参类型是匹配的，编译也通过了。[/quote]  描述不能代替代码，把涉及到的完整代码发一下吧

user: user-1
content: 把你的准确信息贴出来，具体代码，具体错误贴图。不合逻辑必有妖。

user: user-0
content: 引用 3 楼 flying_music 的回复:s1 s2都是struct st的对象，怎么会里面的名字不一样呢？而且如果形参跟实参类型不同，是编译不过去的啊  s1 s2都是struct st的对象，但是s1.name 和 s2.name是不一样的。形参、实参类型是匹配的，编译也通过了。
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: 考虑一下：printf("%s\n","abcdef"+1); 它的输出是 bcdef 这说明什么？

user: user-3
content: 比如： const char *str = "helloworld";   //这个赋值（=）表达式的值就是字符串常量的地址赋值给str

user: user-0
content: 有没有例子啊，兄弟们

user: user-3
content: printf("%d",a);//输出的是地址 用%p打印地址； ，这个地址的名字叫做a，这样描述是不对的，而是a是一个指针，把"helloworld"字符串的地址放到a变量了。

user: user-0
content: 比如 char *a="helloworld"; printf("%s",a);//输出helloworld printf("%d",a);//输出的是地址 意思是为helloworld这个字符串指定了一个地址，这个地址的名字叫做a(实际是一串数字，a只是个别名)，另外地址是字符串第一个字符h的地址

user: user-0
content: 引用 2 楼 自信男孩的回复:比如： const char *str = "helloworld";   //这个赋值（=）表达式的值就是字符串常量的地址赋值给str 比如 char *a="helloworld"; printf("%s",a);//输出helloworld printf("%d",a);//输出的是地址 意思是为helloworld这个字符串指定了一个地址，这个地址的名字叫做a(实际是一串数字，a只是个别名)，另外地址是字符串第一个字符h的地址

user: user-0
content: 引用 2 楼 自信男孩的回复:比如： const char *str = "helloworld";   //这个赋值（=）表达式的值就是字符串常量的地址赋值给str 了解了，谢谢兄弟
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: 楼主用的就是指针呢，在reswap函数里，parr是指针，不是数组的～

user: user-3
content: 供参考：#include <stdio.h> #define N 40  void reswap(int *parr,int n);  int main() {     int score[N],n,i;     printf("The number of student:");     scanf("%d",&n);      printf("Input %d student's score:",n);     for(i=0;i<n;i++)     {         scanf("%d",&score[i]);     }      reswap(score,n);          return 0; }  void reswap(int *parr,int n) {     int i,j,temp;     for(i=0;i<n-1;i++)     {         for(j=i+1;j<n;j++)         {             if(*(parr+i) < *(parr+j))//从大到小             {                 temp     = *(parr+i);                 *(parr+i)= *(parr+j);                 *(parr+j)= temp;             }         }     }     for(i=0;i<n;i++)     {         printf("%d ",*(parr+i));     }     printf("\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-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: 简单地说，每个getchar()的执行，就要读入一个字符，并且就地比较，并不保存。 这种行为在东北话里叫做熊瞎子劈（第三声）苞米，劈一根丢一根。

user: user-3
content: #include<stdio.h> #include <ctype.h>  int main() {     //char ch;     int ch;     int count=0;     int i;     while((ch = getchar())!=EOF)     {         if (ch == '\n')             break; #if 1         if(ch >= 'A'&&ch<='Z')         {             count++;         }         else if(ch>='a'&&ch<='z')         {             count++;         } #else         if (isalpha(ch))             count++; #endif         //i=count;     }     //printf("%d",i);     printf("%d\n", count);      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: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。
user-0 提问: 求下列选择题答案！！！

回复:
user: user-0
content: 这个数组元素a[i][j]的行数不应该是（i+1）吗？？ 因为行数是从0开始的呀

user: user-1
content: 正如楼上几位朋友所说，这个题选“B”  对于二维数组，请参考《C++中的二维数组1》 《C++的二维数组2》 希望能够帮到您！

user: user-2
content: m列，那么就是i *m，即i行的个数，+j说明是第j个数。

user: user-3
content: 将m=3，i=1,j=1带入题目中各式，掰手指头数一下。  1 2 3 4 5 6  答案因该是B

user: user-4
content: 特殊值法，把i j都想成0，前面肯定有0个元素

user: user-5
content: 一定要六个字，选B
user-0 提问: 关于while((getchar())!='\n')吃掉回车的问题

回复:
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: 第二个while不一定会执行一次键盘输入（最终的还是键盘输入的），为什么说不一定呢，比如你输入的是ab然后回车，那么内循环的while接收的是b；如果是输入的a回车，那么内循环getchar()接收的是'\n'。

user: user-4
content: 不要使用 while (条件) 更不要使用 while (组合条件) 要使用 while (1) {  if (条件1) break;  //...  if (条件2) continue;  //...  if (条件3) return;  //... } 因为前两种写法在语言表达意思的层面上有二义性，只有第三种才忠实反映了程序流的实际情况。 典型如： 下面两段的语义都是当文件未结束时读字符 while (!feof(f)) {  a=fgetc(f);  //...  b=fgetc(f);//可能此时已经feof了！  //... } 而这样写就没有问题： while (1) {  a=fgetc(f);  if (feof(f)) break;  //...  b=fgetc(f);  if (feof(f)) break;  //... } 类似的例子还可以举很多。  在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 char c; scanf("%c",&c); //时，都改为 char s[2]; char c; scanf("%1s",s); c=s[0]; //自动跳过一个或多个空格或Tab字符或回车换行，读取下一个字符。
user-0 提问: C#如何读取文件的指定行，并且对改行进行编辑，之后保存文件？

回复:
user: user-1
content: 所谓修改删除文件a某位置的内容，其实是读打开文件a，再将‘a中修改删除位置之前的内容＋修改删除的内容＋a中修改删除位置之后的内容’保存到文件b，关闭文件a，删除文件a，将文件b改名为与之前文件a相同的名字，仅此而已。http://bbs.csdn.net/topics/391975224
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: 试着用memset进行初始化为同一个字符或整数；  其实这些推测或疑问，你都可以自己试一下的。比如第一个是不是都初始化为'\0'，那你初始化后，用一个循环可以打出来的～

user: user-3
content: 1. 自己去试一下不就知道了 2. 可以都设置为0，不能随便设置，就像int a[10] = {0}; 3.  普通的二维数组int a[10][10] 形参可以写int a[10][10] 或 int a[][10] 或 int (*a)[10]，实参是a 4. '\0'是其ASCII码值 跟数字0没关系

user: user-4

user: user-5
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！
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: while(~scanf("%d",&a)) 改成这样：  while(scanf("%d",&a)==1) 或者  while(scanf("%d",&a)) 试试

user: user-2
content: 引用 1 楼 user-3 的回复:供参考：#include<stdio.h> int main(){     int a;     int cnt=-2;     int n[100]={0};     while(~scanf("%d",&a)){   //Ctrl+Z 结束输入         for(int i=2;i<=a;i++){             n[i]=i;         }         for(int j=2;j<=a;j++){             for(int k=2;k<j;k++){                 if(n[j]%k==0){                     n[j]=0;                 }             }         }     }     for(int i=0;i<=a;i++){         if(n[i]==0){             cnt++;             continue;         }         else {             printf("%d ",n[i]);         }     }     printf("\n");     printf("%d\n",cnt);         return 0; }  //~是按位取反 //scanf的返回值是输入值的个数 //如果没有输入值就是返回-1 //while(~scanf("%d", &n))就是当没有输入的时候退出循环 //和while(scanf("%d",&n)!=EOF)一个意思 //知识1：只有-1取反（~-1）是0 //知识2：scanf读入到EOF时返回-1 //注：一般这种用法在oj（确保数据正确）上使用，平常基本用不到  //scanf的返回值是输入匹配对象的个数，%d如果输入的是非数字，那么即使是输入了，返回的也是0，因为字母与%d不匹配

user: user-3
content: 供参考：#include<stdio.h> int main(){     int a;     int cnt=-2;     int n[100]={0};     while(~scanf("%d",&a)){   //Ctrl+Z 结束输入         for(int i=2;i<=a;i++){             n[i]=i;         }         for(int j=2;j<=a;j++){             for(int k=2;k<j;k++){                 if(n[j]%k==0){                     n[j]=0;                 }             }         }     }     for(int i=0;i<=a;i++){         if(n[i]==0){             cnt++;             continue;         }         else {             printf("%d ",n[i]);         }     }     printf("\n");     printf("%d\n",cnt);         return 0; }  //~是按位取反 //scanf的返回值是输入值的个数 //如果没有输入值就是返回-1 //while(~scanf("%d", &n))就是当没有输入的时候退出循环 //和while(scanf("%d",&n)!=EOF)一个意思 //知识1：只有-1取反（~-1）是0 //知识2：scanf读入到EOF时返回-1 //注：一般这种用法在oj（确保数据正确）上使用，平常基本用不到
user-0 提问: 一道C语言编程题目，想了好久了，老是WA，请大家帮忙看看

回复:
user: user-1
content: 引用 6 楼 早打大打打核战争 的回复:虽然你结帖了，#1的代码实际是错的~ 相当错 那天急着吃饭就走了 今天才又看到

user: user-0
content: 引用 6 楼 早打大打打核战争的回复:虽然你结帖了，#1的代码实际是错的~ 哦哦，不过我没怎么看，我ac了就结帖了，还是很谢谢哦

user: user-2
content: 虽然你结帖了，#1的代码实际是错的~

user: user-1
content: 供参考：  #include <stdio.h> int main() { 	int ncase, nline, maxx, sumx; 	int line[20]; 	scanf("%d", &ncase); 	while (ncase--) 	{ 		int i; 		maxx = 0; 		sumx = 0; 		for (i = 0; i < 20; i++)line[i] = 0; 		scanf("%d", &nline); 		while (getchar() != '\n'); 		i = 0; 		while (i < 2*nline) 		{ 			switch (getchar()) 			{ 			case 'X': 				line[i%nline]++; 				break; 			case '\n': 				i++; 			} 		} 		for (i = 0; i < nline; i++) 		{ 			sumx += line[i]; 			if (line[i] > maxx)maxx = line[i]; 		} 		printf("%d\n", maxx*nline - sumx); 	} 	return 0; }

user: user-0
content: 我知道了，第一次发帖，谢谢你们的帮助

user: user-3
content: 引用 3 楼 因为天气好 的回复:嗯嗯，但是我还是不知道自己的代码错哪了，样例可以过 楼主的代码，问题出在进入第二轮测试时，第一轮的统计的 max1[100]   max2[100]  sum  sat这些值都没有复位归零。供参考：#include<stdio.h> #include<string.h> char s[1001]; int main() {     int k,n,i,j,sta=0;     int sum=0;     int max1[100];     int max2[100];     int max;     scanf("%d",&k);     while(k--)     {         scanf("%d",&n);         getchar();          sum=0;sta=0;    //这些值需要复位归零         for(i=0;i<100;i++){max1[i]=0;max2[i]=0;}          for(i=0;i<n;i++)         {             gets(s);             for(j=0;s[j]!='\0';j++)             {   if(s[j]==' ')                 {                     sta++;//统计左边零件本身的空格                 }             }             sum=sum+strlen(s);             max1[i]=strlen(s);         }         for(i=0;i<n;i++)         {             gets(s);             for(j=0;s[j]!='X';j++)             {                 ;             }             int temp=j;                 for(;s[j]!='\0';j++)             {   if(s[j]==' ')                 {                     sta++;//统计右边零件本身的空格                 }                              }             sum=sum+j-temp;//j-temp为右边零件长度             max2[i]=j-temp;         }         max=0;         for(i=0;i<n;i++)//求出平凑出来的最长的一行的值             if((max1[i]+max2[i])>max)                 max=max1[i]+max2[i];         sum=n*max-sum;         printf("%d\n",sum+sta);     }          return 0; }

user: user-0
content: 嗯嗯，但是我还是不知道自己的代码错哪了，样例可以过

user: user-2
content: 把这样的左右两个零件紧密地拼在一起！
user-0 提问: 请教泰勒公式求sinx 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: 引用 2 楼 芒光淀 的回复:[quote=引用 1 楼 user-2的回复:]供参考，误差较大：//sin x = x - x^3/3! + x^5/5! - x^7/7! + ... + (-1)n-1x2n-1/(2n-1)!  #include <stdio.h>  int main(void)  {     int i,j,num=0;//x     double n=1,sum=0,x;                       //scanf("%d",x);     scanf("%lf",&x); //x是弧度，所以数据类型应为double     for(i=1;n>=1e-5;i+=2)     {         n=1;         for(j=i;j>0;j--)             n *= ( double)x/j;         if(num%2==0)         {            sum+=n;            //num++;         }         else         {            sum-=n;            //num++;         }         num++;     }     printf("%lf %d",sum,num+1);     return 0;  } 好像还是不对[/quote] 咋不对了？没问题呀，看截图：

user: user-0
content: 引用 1 楼 user-2的回复:供参考，误差较大：//sin x = x - x^3/3! + x^5/5! - x^7/7! + ... + (-1)n-1x2n-1/(2n-1)!  #include <stdio.h>  int main(void)  {     int i,j,num=0;//x     double n=1,sum=0,x;                       //scanf("%d",x);     scanf("%lf",&x); //x是弧度，所以数据类型应为double     for(i=1;n>=1e-5;i+=2)     {         n=1;         for(j=i;j>0;j--)             n *= ( double)x/j;         if(num%2==0)         {            sum+=n;            //num++;         }         else         {            sum-=n;            //num++;         }         num++;     }     printf("%lf %d",sum,num+1);     return 0;  } 好像还是不对

user: user-2
content: 供参考，误差较大：//sin x = x - x^3/3! + x^5/5! - x^7/7! + ... + (-1)n-1x2n-1/(2n-1)!  #include <stdio.h>  int main(void)  {     int i,j,num=0;//x     double n=1,sum=0,x;                       //scanf("%d",x);     scanf("%lf",&x); //x是弧度，所以数据类型应为double     for(i=1;n>=1e-5;i+=2)     {         n=1;         for(j=i;j>0;j--)             n *= ( double)x/j;         if(num%2==0)         {            sum+=n;            //num++;         }         else         {            sum-=n;            //num++;         }         num++;     }     printf("%lf %d",sum,num+1);     return 0;  }
user-0 提问: 球球大佬解决 C语言结构体的一个问题，初学C语言

回复:
user: user-1
content: 修改如下，问题见注释，供参考：#include<stdio.h> #include<stdlib.h> #define N 100  struct fract{        int   fenzi;        int   fenmu;        float shuzhi; };  void shuzhi_paixu(struct fract *fracccc,int n)//从这里开始编译不通过？？？？？？很迷惑 {     fract temp;     for(int i=0;i<n;i++)  // for(int i=0;i<n-1;i++)     {         for(int j=0;j<n-1-i;j++)         {             if(fracccc[j].shuzhi>fracccc[j+1].shuzhi)             {                 temp=fracccc[j+1];                 fracccc[j+1]=fracccc[j];                 fracccc[j]=temp;             }         }     }     printf("\n");     printf("根据数值排序的情况:\n");     for(int i=0;i<n;i++)         printf("%d/%d ",fracccc[i].fenzi,fracccc[i].fenmu);// printf("%d/%d ",fracccc[i],fracccc[i+1]); } static long F(int n)//递归调用 {     if(n==1||n==2)         {return 1;}     else {         return 2*F(n-1)+F(n-2);     } }  int main() {   int m,x;      struct fract frac[N];   //,*pfrac;     printf("请输入数字\n");     scanf("%d",&x);     m=x;     for(int i=0;i<m;i++){       frac[i].fenzi=F(i+1);   // frac[i].fenmu=F(i+1);       frac[i].fenmu=F(i+2);   //frac[i].fenzi=F(i+2);       //frac[i].shuzhi=(float)F(i+1)/F(i+2);       frac[i].shuzhi=(float)frac[i].fenzi/frac[i].fenmu;// 整数/整数 = 0，强制类型转换下     }     for(int i=0;i<m;i++)         printf("%d/%d ",frac[i].fenzi,frac[i].fenmu);// printf("%d/%d ",frac[i].fenmu,frac[i].fenzi);                             //pfrac=frac;     shuzhi_paixu(frac,m);          return 0; }   //请输入数字 //5 //1/1 1/3 3/7 7/17 17/41 //根据数值排序的情况: //1/3 7/17 17/41 3/7 1/1 请按任意键继续. . .

user: user-2
content: void shuzhi_paixu(struct fract *fracccc,int n)//从这里开始编译不通过？？？？？？很迷惑

user: user-3
content: void shuzhi_paixu(struct fract *fracccc,int n)  main函数最后加 return 0;
user-0 提问: SPI通信实验-关于主函数数组const定义相关疑问

回复:
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: 各位大佬帮我看看，谢谢

user: user-0
content: 这是源码程序，具体内容如上

user: user-2
content: 具体原因，没有具体代码，无法说清。 加了const 代表你不能直接修改TEXT_Buffer 的内容

user: user-3
content: 供参考：https://blog.csdn.net/qq_36958104/article/details/89764410?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161801542616780264060131%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161801542616780264060131&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29_name-1-89764410.first_rank_v2_pc_rank_v29&utm_term=const
user-0 提问: 秋梨膏 大佬看看 为什么串口收不到数据

回复:
user: user-0
content: 在主程序中我用串口助手进行调试过程中串口的数据一直为0

user: user-0

user: user-0
content: 是我忘记开中断了，智障了，有个新问题问大佬们，我用串口助手发送1，然后SBUF接收到的是12544请问是什么原因呢
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: 个人觉得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: user-3
content: 定义一个字符串数组，根据输入的字符-'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: foo就当成一个变量，只不过这个变量接收的实参需要是一个相同类型的函数名，即该函数是：返回值是void，参数是void *的函数；  LPrint函数正好是这样的类型，既可以作为实参，在调用TraverseLQueue是，作为第一个参数传进去。  TraverseLQueue(xxx, LPrint); //这样调用，xxx是第一个参数，根据实际情况传入对应的参数；

user: user-3
content: (*foo)是函数指针，用函数名就可以了。LPrint 是打印的意思，打印输出函数。
user-0 提问: 运行错误73%求解！！！

回复:
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>  int main() {     char st[1000];     int digit[10],i,num,place;     while(scanf("%s",st)!=EOF)     {         for(i=0;i<10;i++)         {             digit[i]=0;         }         i=0;num=0;place=0;         while(st[i]!='\0')         {             /*             switch(st[i]-'0')             {                 case 0:a[0]=a[0]+1;break;                 case 1:a[1]=a[1]+1;break;                 case 2:a[2]=a[2]+1;break;                 case 3:a[3]=a[3]+1;break;                 case 4:a[4]=a[4]+1;break;                 case 5:a[5]=a[5]+1;break;                 case 6:a[6]=a[6]+1;break;                 case 7:a[7]=a[7]+1;break;                 case 8:a[8]=a[8]+1;break;                 case 9:a[9]=a[9]+1;break;             }             */             if (isdigit(st[i]))                 digit[st[i] -'0']++;             i++;         }         num = digit[0];         //for(i=0;i<10;i++)         for(i=1;i<10;i++)         {             //if(num>=a[i+1])             if(num < digit[i])             {                 num = digit[i];                 place = i;                 //num=num;                 //place=place;             }             /*             else             {                 num=a[i+1];                 place=i+1;             }             */         }         printf("%d\n",place);     }     return 0; } 供参考～  楼主的操作越界访问：  for(i=0;i<10;i++)         {             if(num>=a[i+1])    //i+1，当i=9时，i+1等于10，数组越界了             {num=num;place=place;}             else             {num=a[i+1];place=i+1;}         }

user: user-3
content: 供参考：#include <stdio.h>  int main() {     char s;     int  a[10]={0},i,num=-1,place=-1;     while(scanf("%c",&s)!= EOF){   //Ctrl+Z 结束输入           switch (s){                      case  ' ':continue;                      case '\n':                                for(i=0;i<10;i++){                                    if(num < a[i]){                                       num = a[i];                                        place = i;                                    }                                }                                printf("%d\n",place);                                for(i=0;i<10;i++)a[i]=0;                                num=-1;                                  place=-1;                                break;                        default:a[s-'0']++;          }     }          return 0; }
user-0 提问: C语言把收到的十六进制数转成对应的10进制

回复:
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 楼 赵4老师 的回复:#include <stdio.h> char buf[]={0x12,0x22,0x33,0x44,0x22,0xff,0x21,0x31,0x41,0x01,0x12,0x13,0x00,0x00,0x13,0x00,0x23, 0x01,0x00,0x00,0x00, 0x02,0x00,0x00,0x00, 0x03,0x00,0x00,0x00, 0x04,0x00,0x00,0x00, 0x05,0x00,0x00,0x00, 0x00,0x11,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x64,0x02,0x00,0x00,0x00,0x01,0x00,0xc1,0x2d,0x23,0xdb,0xa9,0x12}; int a,b,c,d,e; int main() {     a=*(int *)(&buf[17   ]);     b=*(int *)(&buf[17+ 4]);     c=*(int *)(&buf[17+ 8]);     d=*(int *)(&buf[17+12]);     e=*(int *)(&buf[17+16]);     printf("a,b,c,d,e:%d,%d,%d,%d,%d\n",a,b,c,d,e);     return 0; } //a,b,c,d,e:1,2,3,4,5 // 赵4老师就是这么棒，给了个思路，感谢。不对，这是把代码都给我了。哈哈哈哈

user: user-2
content: 了解一下这两个函数：       long int strtol(const char *nptr, char **endptr, int base);         long long int strtoll(const char *nptr, char **endptr, int base);

user: user-3
content: #include <stdio.h> char buf[]={0x12,0x22,0x33,0x44,0x22,0xff,0x21,0x31,0x41,0x01,0x12,0x13,0x00,0x00,0x13,0x00,0x23, 0x00,0x00,0x00,0x01, 0x00,0x00,0x00,0x02, 0x00,0x00,0x00,0x03, 0x00,0x00,0x00,0x04, 0x00,0x00,0x00,0x05, 0x00,0x11,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x64,0x02,0x00,0x00,0x00,0x01,0x00,0xc1,0x2d,0x23,0xdb,0xa9,0x12}; int a,b,c,d,e; char *p; int main() {     p=(char *)&a;for (int i=0;i<4;i++) p[i]=buf[17   +3-i];     p=(char *)&b;for (int i=0;i<4;i++) p[i]=buf[17+ 4+3-i];     p=(char *)&c;for (int i=0;i<4;i++) p[i]=buf[17+ 8+3-i];     p=(char *)&d;for (int i=0;i<4;i++) p[i]=buf[17+12+3-i];     p=(char *)&e;for (int i=0;i<4;i++) p[i]=buf[17+16+3-i];     printf("a,b,c,d,e:%d,%d,%d,%d,%d\n",a,b,c,d,e);     return 0; } //a,b,c,d,e:1,2,3,4,5 //

user: user-3
content: #include <stdio.h> char buf[]={0x12,0x22,0x33,0x44,0x22,0xff,0x21,0x31,0x41,0x01,0x12,0x13,0x00,0x00,0x13,0x00,0x23, 0x01,0x00,0x00,0x00, 0x02,0x00,0x00,0x00, 0x03,0x00,0x00,0x00, 0x04,0x00,0x00,0x00, 0x05,0x00,0x00,0x00, 0x00,0x11,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x64,0x02,0x00,0x00,0x00,0x01,0x00,0xc1,0x2d,0x23,0xdb,0xa9,0x12}; int a,b,c,d,e; int main() {     a=*(int *)(&buf[17   ]);     b=*(int *)(&buf[17+ 4]);     c=*(int *)(&buf[17+ 8]);     d=*(int *)(&buf[17+12]);     e=*(int *)(&buf[17+16]);     printf("a,b,c,d,e:%d,%d,%d,%d,%d\n",a,b,c,d,e);     return 0; } //a,b,c,d,e:1,2,3,4,5 //

user: user-4
content: 首先，十六进制和十进制，对于单片机来说，都是一堆的01，例如十六进制的 temp = 0x0a，如果你想作为十进制进行计算，不需要转，直接用就好了，即 temp + 10 ==> 0x0a+10 ==20；对于你说的标颜色的那部分，意思是说真实数据是32位的，那么你就需要将这四个字节按照大小端的模式，拼接成一个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: 弱弱的问一下 这些任务是在哪里找的啊

user: user-0
content: 引用 3 楼 xiao_yan_1的回复:弱弱的问一下 这些任务是在哪里找的啊 导入了课程应该也有题目

user: user-0
content: 你去传智播客，我这是老师布置的作业

user: user-0
content: 引用 1 楼 user-3的回复:供参考：#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h>  int multiTable(int x) {     int i=0,j=0;     /*----------------------begin-----------------------*/       for(j=1;j<=x;j++){          for(i=1;i<=j;i++)              printf("%d*%d=%2d  ",i,j,i*j);          printf("\n");      }      /*----------------------end-------------------------*/ }  int main() {     int n=0;     printf("请输入乘法表需要打印的行数:");     /*-----------------------begin---------------------*/      scanf("%d",&n);     if(n<0) return -1;      /*-----------------------end-----------------------*/     multiTable(n);          return 0; } 谢谢大佬

user: user-3
content: 供参考：#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h>  int multiTable(int x) {     int i=0,j=0;     /*----------------------begin-----------------------*/       for(j=1;j<=x;j++){          for(i=1;i<=j;i++)              printf("%d*%d=%2d  ",i,j,i*j);          printf("\n");      }      /*----------------------end-------------------------*/ }  int main() {     int n=0;     printf("请输入乘法表需要打印的行数:");     /*-----------------------begin---------------------*/      scanf("%d",&n);     if(n<0) return -1;      /*-----------------------end-----------------------*/     multiTable(n);          return 0; }
user-0 提问: 为什么这个程序会生成LIB文件而不是exe

回复:
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 提问: 求助！for循环改while循环

回复:
user: user-1
content: https://ask.csdn.net/questions/7565396

user: user-2
content: 正像楼上几个朋友所说的，i++的位置应该在for循环之外。 请参考《C++中for循环语句简析》 希望能够帮到您！

user: user-3
content: for (A;B;C) D; //等价于 {  A;  while (1) {   if (!(B)) break;   D;   C;  } }

user: user-4
content: for(j=i+1;j<=n;j++)                  {                          if(factorsum(j)==i&&m==j){                         printf("%d<-->%d\n",i,j);}                         }                         i++;----------------这个放for循环外面吧                 }

user: user-5
content: 每个数求因子太费时间了，好像也没有好办法，和for while 循环应该没什么关系，供参考：#include <stdio.h>  int factorsum(int x){     int a=2,sum=1;     while(a<=x/2){          if(x%a==0)             sum=sum+a;          a++;     }     return sum; }  int main(){     int n,i=2,m;     scanf("%d",&n);     while(i<=n) {           m=factorsum(i);           if(factorsum(m)==i && i<m)                  printf("%d<-->%d\n",i,m);           i++;     }     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-0 提问: C刚入门代码

回复:
user: user-1
content: 修正楼上第8行，多了nprintf("请输入一个大于等于3的正整数："); 求1*2*3*4*5 ,还可以这么写： //求1*2*3*4*5 ：  #include<stdio.h> int main(){ 	int t =1; //乘数     int i =5; //被乘数 	while(t *= i,i--,i>0);     printf("%d",t); 	return 0; }

user: user-1
content: 供参考：//给出一个大于或等于3的正整数，判断它是不是一个素数：  #include<stdio.h> int main(){      int prime(int x); 	int n,i; 	printf("请输入一个大于等于3的正整数：",n);     while(scanf("%d",&n) && n < 3){           printf("请重新输入大于等于3的正整数！\n");     } 	i = prime(n); 	if(i == 1){ 		printf("%d是素数\n",n); 	}else{ 		printf("%d不是素数\n",n); 	}          	return 0; }  int prime(int x){ 	int y; 	if(x <= 3) return x > 1;     for(y = 2;y < x-1;++y)         if(x % y == 0)             return 0;     return 1; }

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: 你乱了吧，怎么答案说“后根遍历对应二叉树的中序遍历”你觉得对，后面你又觉得“后根遍历就是后续遍历”，那问题不就是后根遍历到底对应中序遍历还是对应后续遍历吗？这个问题你应该知道吧。。。

user: user-2
content: “先根遍历对应二叉树的先序遍历，后根遍历对应二叉树的中序遍历”这个是针对树跟对应的转换后的二叉树而说的，这点很关键 答案分析应该有问题，虽然先序跟中序能确定一棵二叉树，但这棵二叉树并不能唯一对应一棵树，因为树转二叉树是唯一的，反过来则不是 你理解的也有点儿问题，一棵树本来就是二叉树，但根据数转二叉树的规则转换后，并不是原来的二叉树（否则上面的规则就不对了） 这个题的答案应该是可以确定，严格证明要用归纳法，一般分析如下：之所以二叉树的先序遍历和后序遍历不能唯一确定一棵二叉树，是由于存在度为1的节点，也就是只有一个子节点，它在左在右对应的先序和后续遍历顺序一样但二叉树不一样，但是树没有左右的概念，只要是子节点确定了，那这个树就确定了，在左在右都是一棵树 大概就是这样吧
user-0 提问: python

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

user: user-0
content: 引用 3 楼 ctrigger的回复:“姓名”做key是不行的，如果同名怎么办？ 建议把“姓名”改成学号。保证key唯一。。 这是老师自己编的题 存在不足  感谢指正

user: user-2
content: student = {} ave = 0.0 for i in range(10):     name = input("请输入第%d个学生姓名："%(i+1))     val1,val2 = eval(input("请输入第%d个学生两门课程的成绩,用逗号分开："%(i+1)))     ave = (val1 + val2)/2     student[name] = ave  print(student)

user: user-3
content: “姓名”做key是不行的，如果同名怎么办？ 建议把“姓名”改成学号。保证key唯一。。

user: user-0
content: 引用 1 楼 user-4的回复:作业都不自己做 那我总得会做吧???服气了

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-0
content: 引用 1 楼 user-2的回复:scanf里的东西跟你输入的要完全一致（里面有逗号 你也得输入一个逗号） 你可以把x y的值输出看一下，看输入对了没 另外你这背景也太秀了吧，我瞎了 谢谢 解决了 果然是scanf的问题 背景确实有点花

user: user-0
content: 引用 1 楼 user-2的回复:scanf里的东西跟你输入的要完全一致（里面有逗号 你也得输入一个逗号） 你可以把x y的值输出看一下，看输入对了没 另外你这背景也太秀了吧，我瞎了 谢谢 解决了 果然是scanf的问题 背景确实有点花

user: user-0
content: 谢谢 解决了 果然是scanf的问题 背景确实有点花😂

user: user-2
content: scanf里的东西跟你输入的要完全一致（里面有逗号 你也得输入一个逗号） 你可以把x y的值输出看一下，看输入对了没 另外你这背景也太秀了吧，我瞎了
user-0 提问: 有没有关于MINGW里所有静态库的介绍？

回复:
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: 学会使用man命令
user-0 提问: C语言关int和char并列的问题

回复:
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: 不多做解释了，看图，其他改进以后看博客。从二进制起任意进制转十进制终极代码，求数组长度循环外，处理O(N)即可包含数据无效检查进制无效检查功能，免去求乘方循环。

user: user-2
content: 而且O(N)即可无需那么多次循环，当然求长度的循环不计在内。

user: user-2
content: 不但要检查字符还需检查进制

user: user-3
content: 你这么歧视十六进制数字F，F知道么？

user: user-4
content: #include<stdio.h> #include<string.h> #include<math.h>  //void check(char *b[20]) void check(char b[20]) {     int n,i,flag=0;     n=strlen(b);     for( i=0;i<n;i++)//判断输入是否正确     {         if((b[i]>='0'&&b[i]<='9')||(b[i]>='A'&&b[i]<='E'))             flag++;         else         {printf("请检查，第%d个数开始有错误\n",i+1);             //return 0;             return;         }         if(flag==n)             printf("数字输入正确\n") ;     } } //int turn(char *c[20],int *cccc[20]) int turn(char c[20],int cccc[20]) {     int s=0,m,k, sum = 0;     while(c[s]!='\0')     {         if((c[s]>='A')&&c[s]<='Z')         {             cccc[s]=c[s]-'A'+10;             s++;             continue;         }         cccc[s]=c[s]-'0';         s++;     }     for(m=0;m<s;m++)         cccc[s-m-1]=cccc[s-m-1]*pow(16,m);     for(k=0;k<s;k++)         sum+=cccc[k];     printf("%d",sum); } int main() {     char a[20];     int m=0,n=0,h=0,aaaa[20];     gets(a);     turn(a,aaaa); } 供参考～  代码编译不通过，做了修改；试试，有问题再问吧
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 提问: C/C++中，函数非正常退出之后会做什么（像exit（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: https://zh.cppreference.com/w/c/program/exit

user: user-3
content: 引用 楼主 weixin_56922977 的回复:是重新再运行一次这个函数直到正常退出吗？  还是回到前面出错的函数，直到电脑按程序正常执行后正常退出；还是跳过这个非正常退出的函数函数（貌似不太可能）。  来自数据结构的线性表 emm 给我整懵逼了，没太懂。 能具体吗?

user: user-4
content: 函数非正常退出有两种，一种是exit，另一种是return;exit退出说明是异常比较重要（非常重要），以至于需要退出整个程序（exit是退出进程）；另一种是比较不重要，那么就return返回； 第一种exit系统会回收程序（所有的函数，变量比如全局变量堆上的空间等等）的资源；return是系统会回收函数栈的资源；这两个回收的范围不一样；
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: scanf=>cin printf=>cout

user: user-3
content: void sum_even(void) {     int num, cnt = 0, sum = 0;       while (scanf("%d", &num) && num) {         if (num > 0) {             cnt++;             sum += cnt;         }     }      printf("sum = %d\n", sum); } 供参考～

user: user-2
content: int a=0,aa=0,aaa=0; while(1) { cin>>a; if(!a)break; if(!(a%2))++aa,aaa+=a; } cout<<aaa<<ends<<aa<<endl;

user: user-0
content: 引用 1 楼 智者知已应修善业的回复: int a=0,aa=0,aaa=0; while(1) { cin>>a; if(!a)break; if(!(a%2))++aa,aaa+=a; } cout<<aaa<<ends<<aa<<endl;  谢谢谢谢，搞出来了，麻烦了。

user: user-0
content: 引用 7 楼 自信男孩的回复:[quote=引用 4 楼 木沁沁 的回复:][quote=引用 2 楼 自信男孩的回复:]void sum_even(void) {     int num, cnt = 0, sum = 0;       while (scanf("%d", &num) && num) {         if (num > 0) {             cnt++;             sum += cnt;         }     }      printf("sum = %d\n", sum); } 供参考～ 不行诶，运行不出来[/quote]  不出来是什么第二个不对吗？ 在这个基础上改改，自己有手有大脑的，自己不能改改吗？  [/quote] 不好意思，真的一点都不懂，麻烦了。现在两个题都搞好了，没事了。还是谢谢你啦。

user: user-2
content: int a=0,aa=0,aaa=0;                  while(1) {                  std::cin>>a;                  if(!a)break;                  if(a>0)++aa,aaa+=a; }                  std::cout<<aaa<<ends<<aa<<endl;

user: user-2
content: int a=0,aa=0,aaa=0; while(1) { std::cin>>a; if(!a)break; if(!(a%2))++aa,aaa+=a; } std::cout<<aaa<<ends<<aa<<endl;                                                                                                                                                                                                                                   cin>>a;==scanf("%d", &a) cout<<aaa<<ends<<aa<<endl;==printf("%d %d\n", aaa,aa);

user: user-3
content: 引用 4 楼 木沁沁 的回复:[quote=引用 2 楼 自信男孩的回复:]void sum_even(void) {     int num, cnt = 0, sum = 0;       while (scanf("%d", &num) && num) {         if (num > 0) {             cnt++;             sum += cnt;         }     }      printf("sum = %d\n", sum); } 供参考～ 不行诶，运行不出来[/quote]  不出来是什么第二个不对吗？ 在这个基础上改改，自己有手有大脑的，自己不能改改吗？

user: user-4
content: 供参考：#include<stdio.h>  int main() {     int ecnt=0,esum=0,n,pcnt=0,psum=0;     while(scanf("%d",&n)==1 && n!=0){          if(n%2==0){    //偶数             ecnt++;             esum += n;          }          if(n>0){      //正数             pcnt++;             psum += n;          }      }     printf("ecnt=%d,esum=%d\n",ecnt,esum);//偶数的累加项数及和     printf("pcnt=%d,psum=%d\n",pcnt,psum);//正数的累加项数及和          return 0; }

user: user-0
content: 引用 1 楼 智者知已应修善业的回复: int a=0,aa=0,aaa=0; while(1) { cin>>a; if(!a)break; if(!(a%2))++aa,aaa+=a; } cout<<aaa<<ends<<aa<<endl;  整不出来诶😣

user: user-0
content: 引用 2 楼 自信男孩的回复:void sum_even(void) {     int num, cnt = 0, sum = 0;       while (scanf("%d", &num) && num) {         if (num > 0) {             cnt++;             sum += cnt;         }     }      printf("sum = %d\n", sum); } 供参考～ 不行诶，运行不出来😣
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: 原型： char * gets ( char * str ); 功能：通过标准输入（stdin）读入字符并存储到C类型的字符串，当检测到换行符或者文件结束符时停止读入。换行符和文件结束符不读入字符串中。'\0'自动添加到字符串的最后。  int puts(const char *string) 功能 puts()函数用来向标准输出设备屏幕输出字符串并换行。具体是把字符串输出到屏幕上，将‘\0’转换为回车换行。 调用方式是：puts(str)。其中str是字符串数组名或者字符串指针。实际上，数组名就是指针。 1、puts()只能输出字符串，不能输出数值或者进行格式转换，即不能要求输出格式增加空格、换行（指的是输出内容的中间进行换行）等要求； 2、可以将字符串直接写入puts()。如：puts("hello world"); 3、puts()和 printf的用法一样,puts()函数的作用与语句“printf("%s\n",s);的作用相同。注意：puts在输出字 符串后会自动输出一个回车符。

user: user-3
content: 应该会默认用'\0'替换掉'\n'这句有问题吧，不是替换，而是'\n'不会加入到你提供的缓存里～

user: user-2
content: 深入学习，脑洞大开是非常幸福的事情

user: user-0
content: 呃 我还有几个问题： 1、定义了字符数组后例如  char b[1024];   如果不对其进行初始化，那么它的各元素的值是随机值还是 '\0' ? 2、gets() 在对一个字符串赋值之后是不是会默认在该字符串末位加上 '\0' ? 3、puts() 打印结束的标志是什么？  望大佬们在百忙之中能够解答一下小弟的疑惑。。。@qzjhjxj @自信男孩
user-0 提问: 求各位大佬帮忙看一下，while和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: user-3
content: 作业还是自己做一遍吧小老弟
user-0 提问: 求指导，C程序运行openssl里面的函数没反应

回复:
user: user-0
content: 已解决，使用MSYS2对openssl库进行编译，生成libssl.a和libcrypto.a

user: user-1
content: 在return 0;前面加一个getc();试试？

user: user-0
content: 引用 4 楼 user-1 的回复:引用 3 楼 qq_31101781 的回复:[quote=引用 1 楼 user-1 的回复:]在return 0;前面加一个getc();试试？还是不行，一跑进Openssl的函数就不行了，SHA1和SHA256都试过，我用powershell看一进SHA1( )函数，就挂死了 如果是函数跑挂了，那可能是环境问题，就不好处理了。。。[/quote]是的，就是找不到问题出在哪里，我安装openssl的时候都是按着网上的教程，安装perl，nasm，vs2017，nmake，nmake test，nmake install来生成库文件的。

user: user-1
content: 引用 3 楼 qq_31101781 的回复:引用 1 楼 user-1 的回复:在return 0;前面加一个getc();试试？还是不行，一跑进Openssl的函数就不行了，SHA1和SHA256都试过，我用powershell看一进SHA1( )函数，就挂死了 如果是函数跑挂了，那可能是环境问题，就不好处理了。。。

user: user-0
content: 引用 1 楼 user-1 的回复:在return 0;前面加一个getc();试试？还是不行，一跑进Openssl的函数就不行了，SHA1和SHA256都试过，我用powershell看一进SHA1( )函数，就挂死了
user-0 提问: 手机适用c语言APP

回复:
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: 这个现在网上搜一下就有吧，怀念初中用功能机瞎学c语言的时候

user: user-0
content: 不是啦因为个人一些原因是用不了电脑的 只有手机  所以问一问

user: user-3
content: c4droid

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: 引用 1 楼 自信男孩的回复:因为输入n之后的回车符号正好放在a[0]位置。解决办法是在输入n的scanf后面加一条getchar()试试 谢谢！确实是这样

user: user-2
content: 因为输入n之后的回车符号正好放在a[0]位置。解决办法是在输入n的scanf后面加一条getchar()试试
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: 引用 7 楼 赵4老师 的回复：输入 1,2 后面跟回车键可是无法输入[face]monkey2:019.png[/face]

user: user-0
content: 引用 9 楼 qzjhjxj 的回复：供参考：https://blog.csdn.net/qq_41852789/article/details/112322996?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control https://blog.csdn.net/qq_20679687/article/details/105549146?ops_request_misc=&request_id=&biz_id=102&utm_term=vs%20code%E4%B8%AD%20%20printf()%E5%87%BD%E6%95%B0%E6%97%A0%E8%BE%93%E5%87%BA&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-105549146.pc_search_result_no_baidu_js https://blog.csdn.net/LaineGates/article/details/88219585?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control好的，谢谢了[face]monkey2:036.png[/face]

user: user-2
content: 供参考：https://blog.csdn.net/qq_41852789/article/details/112322996?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control https://blog.csdn.net/qq_20679687/article/details/105549146?ops_request_misc=&request_id=&biz_id=102&utm_term=vs%20code%E4%B8%AD%20%20printf()%E5%87%BD%E6%95%B0%E6%97%A0%E8%BE%93%E5%87%BA&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-105549146.pc_search_result_no_baidu_js https://blog.csdn.net/LaineGates/article/details/88219585?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

user: user-3
content: 输入 1,2 后面跟回车键

user: user-0
content: 引用 4 楼 qzjhjxj 的回复：第8、第9行之间，插入fflush (stdout);rewind (stdin);加了，但是我还是无法输入两个数去比较大小

user: user-0
content: 引用 3 楼 自信男孩 的回复：楼主的问题是环境使用问题，还是结果未达到预期的问题？ 如果是前者，建议找一下编译器（或工具）使用教程～环境应该没有什么问题，我都是按照网上来的

user: user-2
content: 第8、第9行之间，插入fflush (stdout);rewind (stdin);

user: user-4
content: 楼主的问题是环境使用问题，还是结果未达到预期的问题？ 如果是前者，建议找一下编译器（或工具）使用教程～

user: user-0
content: 引用 1 楼 赵4老师 的回复：在scanf前加一句 fflush(stdout);这样在输出那里显示了请输入a和b，但是我无法输入数据

user: user-3
content: 在scanf前加一句 fflush(stdout);
user-0 提问: 第一行C语言代码，最大值，求和

回复:
user: user-1
content: #define MAX3(x, y, z) (MAX(MAX(x, y), z))

user: user-1
content: 可以不错，加油  #define MAX(x, y) (x > y ? x : y)

user: user-2
content: 挺欢乐啊，哈哈

user: user-0
content: 敬请批评改正

user: user-3
content: 求最大值：x和y的最大值：printf("max = %d\n", x > y ? x:y);

user: user-4
user-0 提问: C语言构建顺序索引链接存储结构的索引表

回复:
user: user-1
content: 你好，请问你现在有这个题的答案了吗，可以发一下吗

user: user-2
content: 你好，你现在有答案了吗，第四步怎么完成

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: struct param {     type data;     struct param *next; };  struct param array[10];
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: void fun(int test) {     while (test--)         system("echo \" \" >> ./test.log"); }

user: user-3
content: void fun(int test) {      char *buffer = (char*)malloc(test);      memset(buffer,0,' ');      fwrite(buffer,test,1,fp);      free(buffer); }

user: user-4
content: 用循环fputc不就可以随意写入空格了吗？ fprintf也是可以的～
user-0 提问: 为什么scanf放在while(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

user: user-3
content: 因为你的循环条件是 1 ，永远为 true，scanf 又在循环外面，导致你没有机会重新输入 c 来更新 c 的值 而 scanf 放在循环里，由于 scanf 本来是阻塞等待输入，因此每一次循环你都可以重新输入 c ，这样你就有机会来退出循环，比如输入 #

user: user-4
content: 把 scanf("%c",&c);放在while(1){......}外面，只读取键盘输入一次，如果这一次机会if(c=='#')break;没把握住，当然死循环了,while(1)是永远为真。当把 scanf("%c",&c);放到while(1){}内时，就会不停的去读键盘输入，然后if(c=='#')break;判断，就有无限次机会了退出了。

user: user-5
content: 不一定呢，如果一开始就输入#就break出循环，不会出现无线循环了。 如果一开始不是输入#，那么while没有break的条件，因此会死循环～
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: 引用 4 楼 给我高高飞起来 的回复:[quote=引用 3 楼 qzjhjxj的回复:]按你写的就可以啊，供参考：typedef int ElemType;        //数据元素的类型为整数  typedef struct LNode{      ElemType   data;       //数据域      struct LNode  *next;   //指针域 }LNode,*LinkList;           // LinkList为指向结构体LNode的指针类型   void MergeList_L(LinkList LA,LinkList LB,LinkList &LC)//函数定义 {      LinkList p;      p=LC; }  //我自身定义LinkList p; //我要怎么样才能使p=LC;  int main() {    LinkList La = (LinkList)malloc(sizeof(LNode));    LinkList Lb = (LinkList)malloc(sizeof(LNode));    LinkList Lc = (LinkList)malloc(sizeof(LNode));    MergeList_L(La,Lb,Lc);    system("pause"); } 朋友，我那个LC是取地址（你可以看到是&LC），然后p是LinkList的变量 ，应该是定义指针变量*p，可是LinkList本身又是指针变量，定义p为指针变量我就不知道怎么引用结构体里的成分了，所以我想问怎么才能让p=LC[/quote] 供参考：typedef int ElemType;        //数据元素的类型为整数 typedef struct LNode{      ElemType   data;       //数据域      struct LNode  *next;   //指针域 }LNode,*LinkList;           // LinkList为指向结构体LNode的指针类型   void MergeList_L(LinkList LA,LinkList LB,LinkList &LC)//函数头这样定义 {      LinkList p=LC;      p->data=20;      p->next=NULL; }  int main() {     LinkList La = (LinkList)malloc(sizeof(LNode));    LinkList Lb = (LinkList)malloc(sizeof(LNode));    LinkList Lc = (LinkList)malloc(sizeof(LNode));     MergeList_L(La,Lb,Lc);     LinkList p=Lc;    while(p){        printf("%d",p->data);        p=p->next;    }    system("pause"); }

user: user-0
content: 引用 3 楼 qzjhjxj的回复:按你写的就可以啊，供参考：typedef int ElemType;        //数据元素的类型为整数  typedef struct LNode{      ElemType   data;       //数据域      struct LNode  *next;   //指针域 }LNode,*LinkList;           // LinkList为指向结构体LNode的指针类型   void MergeList_L(LinkList LA,LinkList LB,LinkList &LC)//函数定义 {      LinkList p;      p=LC; }  //我自身定义LinkList p; //我要怎么样才能使p=LC;  int main() {    LinkList La = (LinkList)malloc(sizeof(LNode));    LinkList Lb = (LinkList)malloc(sizeof(LNode));    LinkList Lc = (LinkList)malloc(sizeof(LNode));    MergeList_L(La,Lb,Lc);    system("pause"); } 朋友，我那个LC是取地址（你可以看到是&LC），然后p是LinkList的变量 ，应该是定义指针变量*p，可是LinkList本身又是指针变量，定义p为指针变量我就不知道怎么引用结构体里的成分了，所以我想问怎么才能让p=LC

user: user-2
content: 按你写的就可以啊，供参考：typedef int ElemType;        //数据元素的类型为整数  typedef struct LNode{      ElemType   data;       //数据域      struct LNode  *next;   //指针域 }LNode,*LinkList;           // LinkList为指向结构体LNode的指针类型   void MergeList_L(LinkList LA,LinkList LB,LinkList &LC)//函数定义 {      LinkList p;      p=LC; }  //我自身定义LinkList p; //我要怎么样才能使p=LC;  int main() {    LinkList La = (LinkList)malloc(sizeof(LNode));    LinkList Lb = (LinkList)malloc(sizeof(LNode));    LinkList Lc = (LinkList)malloc(sizeof(LNode));    MergeList_L(La,Lb,Lc);    system("pause"); }

user: user-0
content: 引用 1 楼 自信男孩的回复:先把链表的创建，链表的遍历写出来吧。  链表合并试着写写 好的，谢谢

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: 引用 2 楼 自信男孩的回复:看这个函数，循环是找到最小值的位置，L.data[pos] = L.data[L.length-1];这句用的比较巧，用最后一个元素覆盖最小值的位置；  这样做不会丢失原队列数据，但是会改变顺序；如果不考虑顺序，这样的做法还是挺好的。 谢谢大佬

user: user-0
content: 引用 1 楼 user-3的回复:Del_Min()   ListDelet(&L,i,&e) 这些都是自定义的函数名称，函数的名称、形参、返回值等不同，表示函数实现的功能作用不相同，Del_Min（）函数实现的功能是删除顺序表一个值最小的元素， ListDelet(&L,i,&e)函数可能实现的功能是删除顺序表中值为e的元素。虽然这两函数实现的具体的功能有差别，但大的功能就是删除某一个元素，所以为了方便记忆及识别，在它们的名称中都出现了del的字样，这样从名称中我们就可以大致判断这个函数所实现的功能，这也是编写代码过程中普遍采用的方式。当然，自定义的函数的名称理论上可以任意编写，只要所取字符不是系统的关键字符，但这样做的意义不大，写个毫无规律的名称，过一段时间，自己都忘了，想拿来用下，怎么也找不到呢。 谢谢大佬

user: user-2
content: 看这个函数，循环是找到最小值的位置，L.data[pos] = L.data[L.length-1];这句用的比较巧，用最后一个元素覆盖最小值的位置；  这样做不会丢失原队列数据，但是会改变顺序；如果不考虑顺序，这样的做法还是挺好的。

user: user-3
content: Del_Min()   ListDelet(&L,i,&e) 这些都是自定义的函数名称，函数的名称、形参、返回值等不同，表示函数实现的功能作用不相同，Del_Min（）函数实现的功能是删除顺序表一个值最小的元素， ListDelet(&L,i,&e)函数可能实现的功能是删除顺序表中值为e的元素。虽然这两函数实现的具体的功能有差别，但大的功能就是删除某一个元素，所以为了方便记忆及识别，在它们的名称中都出现了del的字样，这样从名称中我们就可以大致判断这个函数所实现的功能，这也是编写代码过程中普遍采用的方式。当然，自定义的函数的名称理论上可以任意编写，只要所取字符不是系统的关键字符，但这样做的意义不大，写个毫无规律的名称，过一段时间，自己都忘了，想拿来用下，怎么也找不到呢。
user-0 提问: 求大佬指点

回复:
user: user-1
content: 引用 2 楼 Dream1018 lin 的回复:[quote=引用 1 楼 自信男孩 的回复:]#include <stdio.h> #include <stdlib.h>  int main() {     int i=0;     //char a[5];     char a[16];     a[i]=getchar();     while(a[i]!='\n')     {         i++;         if (i > 5) {             printf("Too big!\n");             return 0;         }         a[i]=getchar();     }     printf("%d\n",i);     for(int j=0; j<i-1; j++)     {         printf("%d ",a[j]-48);     }     printf("%d\n",a[i-1]-48);     for(int j=i-1; j>=0; j--)     {         printf("%d",a[j]-48);     } } 供参考～  数组长度为5不合适，因为也得给'\n'留一个空间的，因为你把'\n'放在了a[i]中。我的修改用了16，个人建议数组长度定义为2^n的空间； 试了一下，可以了，谢谢！可以解释一下为什么要数组长度要定义为2^n吗？[/quote] 因为涉及到内存分配的原理，还有页，表之类的信息，等你深入的了解内存的分配原理就知道了。现在先这么做吧

user: user-0
content: 引用 1 楼 自信男孩 的回复:#include <stdio.h> #include <stdlib.h>  int main() {     int i=0;     //char a[5];     char a[16];     a[i]=getchar();     while(a[i]!='\n')     {         i++;         if (i > 5) {             printf("Too big!\n");             return 0;         }         a[i]=getchar();     }     printf("%d\n",i);     for(int j=0; j<i-1; j++)     {         printf("%d ",a[j]-48);     }     printf("%d\n",a[i-1]-48);     for(int j=i-1; j>=0; j--)     {         printf("%d",a[j]-48);     } } 供参考～  数组长度为5不合适，因为也得给'\n'留一个空间的，因为你把'\n'放在了a[i]中。我的修改用了16，个人建议数组长度定义为2^n的空间； 试了一下，可以了，谢谢！可以解释一下为什么要数组长度要定义为2^n吗？

user: user-1
content: #include <stdio.h> #include <stdlib.h>  int main() {     int i=0;     //char a[5];     char a[16];     a[i]=getchar();     while(a[i]!='\n')     {         i++;         if (i > 5) {             printf("Too big!\n");             return 0;         }         a[i]=getchar();     }     printf("%d\n",i);     for(int j=0; j<i-1; j++)     {         printf("%d ",a[j]-48);     }     printf("%d\n",a[i-1]-48);     for(int j=i-1; j>=0; j--)     {         printf("%d",a[j]-48);     } } 供参考～  数组长度为5不合适，因为也得给'\n'留一个空间的，因为你把'\n'放在了a[i]中。我的修改用了16，个人建议数组长度定义为2^n的空间；