Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: C语言小白，请教大佬们

回复:
user: user-0
content: 引用 1 楼 user-2的回复:int n重定义，i未初始化，在用i的for里用i当作临时变量，sushu的逻辑也有问题 下面是改好的 #include <stdio.h>  int sushu(int a) {     int b;     for (b = 2; b < a; b++)     {         if (a % b == 0)             return 0;     }     return a; } int main() {     int sum = 0, n, i, tmp;     printf("请输入一个数");     scanf_s("%d", &n);     for (i = 3; i <= n; i++)     {         tmp = sushu(i);         sum += tmp * tmp;     }     printf("3~%d素数的平方和为%d\n", n, sum); } 感谢大佬呀！

user: user-0
content: 引用 2 楼 自信男孩的回复:#include <stdio.h>  int sushu(int a) {     int b;     for(b=2;b<a;b++)     {         if(a%b==0)             return 0;     }      return 1; } int main () {     int n,i,sum=0;     int ret;     //int n = i;     printf("请输入一个数");     scanf("%d",&n);     for(i=3;i<=n;i++)     {         //i = sushu(n);         ret = sushu(i);         if (ret)             sum+=i*i;     }     printf("3~%d素数的平方和为%d",n,sum); } 供参考～ 感谢大佬呀！

user: user-1
content: #include <stdio.h>  int sushu(int a) {     int b;     for(b=2;b<a;b++)     {         if(a%b==0)             return 0;     }      return 1; } int main () {     int n,i,sum=0;     int ret;     //int n = i;     printf("请输入一个数");     scanf("%d",&n);     for(i=3;i<=n;i++)     {         //i = sushu(n);         ret = sushu(i);         if (ret)             sum+=i*i;     }     printf("3~%d素数的平方和为%d",n,sum); } 供参考～

user: user-2
content: int n重定义，i未初始化，在用i的for里用i当作临时变量，sushu的逻辑也有问题 下面是改好的 #include <stdio.h>  int sushu(int a) {     int b;     for (b = 2; b < a; b++)     {         if (a % b == 0)             return 0;     }     return a; } int main() {     int sum = 0, n, i, tmp;     printf("请输入一个数");     scanf_s("%d", &n);     for (i = 3; i <= n; i++)     {         tmp = sushu(i);         sum += tmp * tmp;     }     printf("3~%d素数的平方和为%d\n", n, sum); }
user-0 提问: 字符串拷贝/空间申请一个小问题

回复:
user: user-1
content: retS没有初始化，retS那一行换成 char* retS = (char*)calloc(len + 1, sizeof(char)); 另外你这个程序弄不到第一个单词

user: user-0
content: 引用 1 楼 user-1 的回复:retS没有初始化，retS那一行换成 char* retS = (char*)calloc(len + 1, sizeof(char)); 另外你这个程序弄不到第一个单词 ...我竟然没注意开头没初始化
user-0 提问: 【小白求解】

回复:
user: user-1
content: 引用 1 楼 真相重于对错 的回复:我用小米，发现路上还有人用小米，奇怪吗？一点都不奇怪 不明白群主为啥会问这种问题

user: user-0
content: 引用 1 楼 真相重于对错的回复:我用小米，发现路上还有人用小米，奇怪吗？ 谢谢大佬，我太较真了。

user: user-0
content: 引用 2 楼 棉猴的回复:	int i = 1; 	int j = 1; 下面就是i和j在内存中的值，都是0x00000001，地址不同，但是值是相同的  谢谢大佬，我明白了。

user: user-2
content: int i = 1; 	int j = 1; 下面就是i和j在内存中的值，都是0x00000001，地址不同，但是值是相同的

user: user-3
content: 我用小米，发现路上还有人用小米，奇怪吗？
user-0 提问: 这种报错一般是什么问题

回复:
user: user-1
content: 你之前的程序还在运行，生成新程序会覆盖原程序的，它还在运行所以就无法覆盖了（没记错的话应该是这个）

user: user-0
content: 引用 1 楼 ?Victor.??的回复:https://blog.csdn.net/qq_45861670/article/details/104015023  供参考~ 感谢感谢感谢

user: user-2
content: https://blog.csdn.net/qq_45861670/article/details/104015023  供参考~
user-0 提问: 为什么输入负数时结果不正确？

回复:
user: user-1
content: scanf("%d,%d,%d",&a,&b,&c); //输入负数时，逗号只能是英文逗号,用空格间隔没有问题

user: user-2
content: printf("average=%.1f\n",average);  改成这样，去掉%d，因为average和%d匹配了

user: user-0
content: 我知道了，输入负数时电脑自动改成了中文“，”所以错了

user: user-0
content: 还是不正确啊，输出的结果是-429496736.0。

user: user-3
content: printf("average=%.1f\n%d",average); 这里有两个格式控制符，为啥只有一个变量？ %d可以输入负数，但要注意几点 1. 是否超出int的范围了？ 2. 是否完全按照scanf里写的来输入的？ "%d,%d"表示你要输入： 数字 英文逗号 数字

user: user-4
content: printf("average=%.1f\n%d",average) 这里多了%d 运行时输入  -20，-10 两个数中间要有逗号。
user-0 提问: 关于循环变量的值是多少

回复:
user: user-1
content: 其实把for改成while你就明白了 for相当于下面的while循环 i=0;//for初始化部分 while(i<(*N)){//for循环条件     sum=arr[i]/100+sum; //for循环体处理     if(sum>=(*us)*1000) {         sum=sum-arr[i];         break;     }      i++;//for每次循环结束处理 }

user: user-1
content: 你的跳出指break的话，i不会继续加1 你的跳出指正常循环结束的话，i会最终达到和*N相等

user: user-2
content: 问题不明，何为加一？和哪个数相比？

user: user-3
content: 不会，因为跳出循环就不会继续执行i++了。所以不会自增1.
user-0 提问: C语言编程题

回复:
user: user-1
content: 程序没发现什么问题，应该是程序没有收到ctrl+z。 Linux下是用ctrl+d（直接键盘输入就可以退出输入循环，无需回车，已测试），Windows下是输入ctrl+z

user: user-2
content: 按下ctrl z之后再按一下回车

user: user-0
content: 引用 2 楼 自信男孩的回复:程序没发现什么问题，应该是程序没有收到ctrl+z。 Linux下是用ctrl+d（直接键盘输入就可以退出输入循环，无需回车，已测试），Windows下是输入ctrl+z 谢谢，解决了

user: user-0
content: 解决了，谢谢

user: user-0
content: 这样真的就可以了，谢谢你！
user-0 提问: 请教设计一个合格的xp上运行的程序监控软件最少需要掌握哪些技能？

回复:
user: user-1
content: 不算太难吧。很简单。思路是远程控制。截屏得到程序界面。然后只要界面是固定的，然后手工截取对应数据rect.然后用图片识别文字ocr。 图片识别文字比较low.最好还是hack程序，代码获取程序界面edit框内容。也不算太难。

user: user-2
content: 看你用什么程序写了，不会用汇编去写，C#  QT mfc等都可以
user-0 提问: 哪个大神的帮我写一下这一题，顺便告诉我一下为啥？

回复:
user: user-0
content: 引用 4 楼 m0_46505358的回复:[quote=引用 1 楼 自信男孩的回复:]逗号运算符，返回最后一个逗号之后表达式的值，从左向右依次计算，将最后表达式的值返回，那就是a+5的值。即15+5= 20 大神我不知道怎么把这个分数给你，你能告诉我怎么办吗？ [/quote] 就是我怎么引用你的答案。

user: user-0
content: 引用 1 楼 自信男孩的回复:逗号运算符，返回最后一个逗号之后表达式的值，从左向右依次计算，将最后表达式的值返回，那就是a+5的值。即15+5= 20 大神我不知道怎么把这个分数给你，你能告诉我怎么办吗？

user: user-0
content: 引用 1 楼 自信男孩的回复:逗号运算符，返回最后一个逗号之后表达式的值，从左向右依次计算，将最后表达式的值返回，那就是a+5的值。即15+5= 20 谢谢你的答案。

user: user-1
content: 应该是先算a=3*5，这时a=15， 然后printf（%d）,这个值取后边括号里最后一个表达式的值，即a+5=15+5=20，所以打印20

user: user-2
content: 逗号运算符，返回最后一个逗号之后表达式的值，从左向右依次计算，将最后表达式的值返回，那就是a+5的值。即15+5= 20

user: user-2
content: 引用 4 楼 m0_46505358 的回复:[quote=引用 1 楼 自信男孩的回复:]逗号运算符，返回最后一个逗号之后表达式的值，从左向右依次计算，将最后表达式的值返回，那就是a+5的值。即15+5= 20 大神我不知道怎么把这个分数给你，你能告诉我怎么办吗？ [/quote] 分不重要，主要是问题要解决了～
user-0 提问: 疑似越界问题

回复:
user: user-0
content: 引用 9 楼 自信男孩的回复:[quote=引用 8 楼 kasami_ 的回复:] [quote=引用 7 楼 自信男孩的回复:]free(*a); 这句改成  free(a); 还是触发了断点呢，调试时在一进入循环就报错了[/quote] 你要做什么功能？说一下你的需求[/quote] 把释放a和b都改为free（a）和free（b）就解决了。我想请问一下为什么不free（a[i]）和*a呢？

user: user-1
content: 引用 8 楼 kasami_ 的回复:[quote=引用 7 楼 自信男孩的回复:]free(*a); 这句改成  free(a); 还是触发了断点呢，调试时在一进入循环就报错了[/quote] 你要做什么功能？说一下你的需求

user: user-2
content: 异常: 0xC0000005:   指针异常 写入位置 0xCDCDCDCD   debug模式下某个指针空的未初始化就被调用了

user: user-1
content: free(b[i]);//释放b         free(*b); 这是怎么回事？free(b[i])也不在循环里呢？你没加大括号呢？所以b[i]肯定是越界，free(b[i]);肯定会出错。

user: user-0
content: 引用 7 楼 自信男孩的回复:free(*a); 这句改成  free(a); 还是触发了断点呢，调试时在一进入循环就报错了

user: user-1
content: free(*a); 这句改成  free(a);

user: user-0
content: 引用 5 楼 自信男孩 的回复:[quote=引用 4 楼 kasami_ 的回复:] [quote=引用 2 楼 user-2的回复:]异常: 0xC0000005:   指针异常 写入位置 0xCDCDCDCD   debug模式下某个指针空的未初始化就被调用了 是的。前面给b分配内存时分配错误了。在解决已知问题再运行后，在释放a时显示已触发一个断点，请问是怎么回事啊？要如何解决呢？[/quote] 处理和b一样，需要循环把a[i]释放，你直接在外面free(a[i]);那么i是几呢？是不是也越界了呢？ [/quote] 给您看看更改后释放a的部分： for (i = 0; i < 3; i++) 	   free(a[i]);//释放a 	free(*a); 我就只是在原来的基础上引入了一个循环，我觉得这没什么问题才对的。再次感谢您的回答。

user: user-1
content: 引用 4 楼 kasami_ 的回复:[quote=引用 2 楼 user-2的回复:]异常: 0xC0000005:   指针异常 写入位置 0xCDCDCDCD   debug模式下某个指针空的未初始化就被调用了 是的。前面给b分配内存时分配错误了。在解决已知问题再运行后，在释放a时显示已触发一个断点，请问是怎么回事啊？要如何解决呢？[/quote] 处理和b一样，需要循环把a[i]释放，你直接在外面free(a[i]);那么i是几呢？是不是也越界了呢？

user: user-0
content: 引用 2 楼 user-2的回复:异常: 0xC0000005:   指针异常 写入位置 0xCDCDCDCD   debug模式下某个指针空的未初始化就被调用了 是的。前面给b分配内存时分配错误了。在解决已知问题再运行后，在释放a时显示已触发一个断点，请问是怎么回事啊？要如何解决呢？

user: user-0
content: 引用 1 楼 自信男孩的回复:        free(b[i]);//释放b         free(*b); 这是怎么回事？free(b[i])也不在循环里呢？你没加大括号呢？所以b[i]肯定是越界，free(b[i]);肯定会出错。 是的。这是这个代码的问题之一。我把它修正过来之后调试。在释放b的时候正常，在释放a时显示触发一个断点。请问是怎么一回事啊？
user-0 提问: c语言能否实现类似JavaScript里面的用变量作为属性

回复:
user: user-1
content: 这个c做不到，除非自己写个变量成员字段管理库（或反射管理类库）以及一些映射存储如map之类的，否则o变量有没有属性叫age，底层是不知道的

user: user-0
content: 引用 3 楼 真相重于对错 的回复:c 里面有结构体可以达到你的要求 typedef struct _M{    int age;    char name[20]; }M; M m1; m1.age=18; strcpy(m1.name,"hello world";谢谢您，但是我的问题可能您没看清，假设我定义了一个字符串型的变量，并且我并不知道这个变量的值是什么，假设这个值是我通过控制台输入的，假设我在控制台输入"age", 我如何得到18

user: user-2
content: 有现成的json.对象，数组，都可以存放。

user: user-3
content: c 里面有结构体可以达到你的要求 typedef struct _M{    int age;    char name[20]; }M; M m1; m1.age=18; strcpy(m1.name,"hello world";

user: user-4
content: C语言本身没有这个功能，可以通过C++的一些特性或者stl的容器的一些功能可以做到类似的

user: user-5
content: 键—>值：有哈希容器，C++标准库里有unordered_map，还有平衡树，也能实现，c++中有map
user-0 提问: c语言

回复:
user: user-1
content: 也就2分钟的事情，给你写一个参考吧  #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, const char * argv[]) {     int num, i, tmp;     char gaming = 'y';     srand((unsigned)time(NULL));     while (gaming!='n' && gaming != 'N') {         printf("游戏开始！！！\n");         num = rand()%100 + 1;         for (i=0; i<10; i++) {             printf("请输入第%d次猜测的数：", i+1);             scanf("%d", &tmp);             if (tmp==num) break;             else if (tmp > num) {                 printf("大了，再往小方向猜！\n");             } else {                 printf("小了，再往大方向猜！\n");             }         }         if (i==10) {             printf("本次游戏你输了！");         } else {             printf("恭喜你，本次游戏你赢了！");         }         printf("（正确答案：%d）\n", num);         printf("是否继续游戏？（输入 n 或 N 退出游戏）\n");         getchar();         scanf("%c", &gaming);     }     printf("游戏结束，欢迎下次继续挑战！\n");     return 0; }

user: user-2
content: 思路： 1.随机产生一个数 2.输入一个数 3.判断 输入的数和随机数是否相等，如不相等，用一个变量作计数器，大于10则结束

user: user-0
content: 求大佬们帮我看看，怎么编
user-0 提问: C语言

回复:
user: user-0
content: 我好了！！！！！

user: user-0
content: 引用 2 楼 自信男孩的回复:scanf缺少&，year, month, day都是int类型。 另外，weeday函数实参和形参不一致。 怎么改？第一次发这个，不知道怎么发源码

user: user-1
content: scanf缺少&，year, month, day都是int类型。 另外，weeday函数实参和形参不一致。

user: user-1
content: 贴源码吧，不建议发图片。
user-0 提问: 为什么找不到这个.c文件，它明明就在项目里

回复:
user: user-1
content: #include "graphics.h" ---> #include "include/graphics.h"

user: user-2
content: 路径不对吧，头文件在include里？而源文件和头文件不在同一路径下吧～

user: user-3
content: main 与  graphics.h 是否在同一个目录下，如果不在要带上路径。一般像楼上那么书写。
user-0 提问: C#

回复:
user: user-1
content: 图像的坐标有没有随时间改变？

user: user-2
content: 没有实现你预期的效果，就是代码错了

user: user-0
content: 好的，我晓得了。谢谢(*°∀°)=3

user: user-3
content: 只要不是按照自己期望的结果，那就是错了

user: user-4
content: 我猜你的代码有问题
user-0 提问: code::blocks  调试问题

回复:
user: user-1
content: CB 可以同时保存多个视图，编辑，调试 可以自动切换

user: user-0
content: 引用 1 楼 user-2 的回复:单步执行一下试试  为什么设置断点，然后调试。调试工具栏 就会莫名其妙的消失了？？ 等到调试完毕后，按 shift+F8 结束调试，工具栏又回来了！ 如此循环下去，郁闷！

user: user-2
content: 单步执行一下试试
user-0 提问: 大一作业，帮看一下

回复:
user: user-1
content: 用mfc吧。

user: user-2
content: electronic 也可以做客户端开发，试一下。

user: user-2
content: 用QML吧，脚本语言很快。

user: user-3
content: 用QT吧。你需要的东西都可以用QT实现，用MFC不好实现动画
user-0 提问: C语言求助

回复:
user: user-0
content: #include<stdio.h>  void keep(char neicun[][8],int*max)  {   int i,j;      char ch;  	FILE *fPtr=fopen("dict.dic","r"); 	for(i=0;!feof(fPtr);i++) 	{   	    ch=fgetc(fPtr);  	      for(j=0;j<8&&ch!='/n';j++) 		{ 		   neicun[i][j]=ch; 		   ch=fgetc(fPtr);  		} 	} 	*max=i;  	fclose(fPtr);  }

user: user-1
content: 代码呢？ 用fscanf
user-0 提问: 递归返回的限制

回复:
user: user-1
content: #include <stdio.h>//交换a[1]~a[7] a[2]~a[6]... //#include <unistd.h>  //void move(int a,int b) void move(int *a,int *b) {     int l;     l  = *a;     *a = *b;     *b = l; }  int dg(int a[10],int g,int t) {     printf("g = %d, t = %d\n", g, t);     move(a+g, a+t);     //sleep(1);     if(t==4||g==4)         return 1;     //else     //return dg(a[10],g++,t--);     //return dg(a, g++,t--);     return dg(a, ++g, --t); }  int main(int argc, char *argv[]) {     int i,b[10]={0,1,2,3,4,5,6,7,0,0};     //dg(b[10],1,7);     dg(b,1,7);     for(i=0;i<10;i++)         printf("%d",b[i]);     return 0; }   供参考～  建议楼主注意下b[10]作为参数和int b[10]的区别。其他的问题，建议楼主好好思考和学习一下。
user-0 提问: C语言字符串修改

回复:
user: user-1
content: while((chs=getchar())!='\n'&&k<MAXSIZE)建议改成  while((chs=getchar())!='\n'&&k<MAXSIZE-1) 因为至少要给'\0'留一个字符空间  if(S->ch[0]=='\0') printf("空串"); 这个判断是多余的吧，因为当k是0时，能从while (s->len > 2)的循环中跳出来？

user: user-2
content: 参考getline(char s[],int MAXLINE)写，教科书上有。
user-0 提问: C语言打开文件

回复:
user: user-1
content: 1、使用绝对路径，你用的IDE 不能确定你的文本文件和你的项目运行的文件是在同一个目录，所以不一定能找到。在使用绝对路径的时候，有的编译器在window下，要注意\转义字符的使用，有的在区分目录结构的时候要使用两个斜杠\\。 2、使用error.h中的perror（）函数可以搜集错误代码，不知道错误代码的含义，可以用strerror（）来解释错误代码。 3、是否将文件存在管理员区，就是没有读的权限，这个可能性很少。

user: user-2
content: 注意文件名是否一致，另外，楼主这样的打开文件，那么需要被打开的文件和可执行程序在同一路径下。要么就写绝对路径～

user: user-3
content: 如果不确定fopen的文件的相对路径，最好就用绝对路径 比如fopen("C:\\xxx\f12-1.txt", "r")

user: user-4
content: 引用 4 楼 其实一开始我是拒绝的 的回复:[quote=引用 3 楼 user-5的回复:][quote=引用 2 楼 其实一开始我是拒绝的的回复:][quote=引用 1 楼 user-5的回复:]看一下返回值是什么，通常是找不到文件 返回空指针，找不到文件，但是我有建立这个文件了[/quote] 调试一下看看什么错误原因 应该是文件不在当前运行目录下面，你用绝对路径试一下[/quote] 怎样放到同一目录？[/quote] .exe文件所在的那个目录,放在那里就行了

user: user-0
content: 引用 3 楼 user-5的回复:[quote=引用 2 楼 其实一开始我是拒绝的的回复:][quote=引用 1 楼 user-5的回复:]看一下返回值是什么，通常是找不到文件 返回空指针，找不到文件，但是我有建立这个文件了[/quote] 调试一下看看什么错误原因 应该是文件不在当前运行目录下面，你用绝对路径试一下[/quote] 怎样放到同一目录？

user: user-5
content: 引用 2 楼 其实一开始我是拒绝的的回复:[quote=引用 1 楼 user-5的回复:]看一下返回值是什么，通常是找不到文件 返回空指针，找不到文件，但是我有建立这个文件了[/quote] 调试一下看看什么错误原因 应该是文件不在当前运行目录下面，你用绝对路径试一下

user: user-0
content: 引用 1 楼 user-5的回复:看一下返回值是什么，通常是找不到文件 返回空指针，找不到文件，但是我有建立这个文件了

user: user-5
content: 看一下返回值是什么，通常是找不到文件
user-0 提问: 一道c语言的函数题目

回复:
user: user-0
content: 您这个思路我看懂了，您能不能帮忙看看我的思路，我把最后那个return（s）去掉了，还是不正确，想问一下您如果按照我这个思路应该怎么改？

user: user-1
content: void Shift( char *s ) {         int i,j,x;char c[3];         x=strlen(s);         for(i=0;i<3;i++)         {                 c[i]=s[i];         }         for(j=0;j<x-3;j++)         {                 s[j]=s[j+3];         }         for(i=0;i<3;i++)         {                 s[j+i]=c[i];         } }

user: user-1
content: 首先void类型函数没有返回值，你还return
user-0 提问: 约瑟夫环问题，提交了总是程序运行超时，请各位大佬帮忙看看

回复:
user: user-1
content: 修改 memset(p,1,n*sizeof(int)); 按照提示模拟的算法，复杂度O（m*n）。m*n<1e7不会超时

user: user-2
content: 首先你的memset用法有两个错误： memset(p,1,sizeof(p));   1，第三个参数写法上应为n*sizeof(int)； 即使更正错误1之后，仍然有错误： 2，memset不能这样用整数1填充数组。
user-0 提问: C语言难题！！求大神帮忙看看！！拜托了！

回复:
user: user-1
content: void EncryptEvenNumberWord(void) {     char cArraySrc[]    = "This is a string test: encrypt Even number word.";     char *pcSrc         = cArraySrc;     char *pcDst         = cArraySrc;     char cTemp          = 0;     bool bResetStart    = true;     int iIndexChar      = 0;     int iIndexWordStart = 0;     int iIndexWordStop  = 0;     int iIndexWord      = 0;     int iWordLen        = 0;     printf("src[%s]", cArraySrc);      while(0 != *pcSrc)     {         //单词处理         if(!((('a' <= *pcSrc) && ('z' >= *pcSrc)) || (('A' <= *pcSrc) && ('Z' >= *pcSrc))))         {             bResetStart = true;             iWordLen = iIndexWordStop - iIndexWordStart;              //单词字母个数不是偶数，不处理             if(0 != iWordLen % 2)             {                 pcSrc ++;                 iIndexChar ++;                 iIndexWordStop ++;                 continue;             }              //单次加密             //a-r o-z  ；o-r之间的需如何处理?             //a-r 左移一位             if(((pcDst[iIndexWordStart] >= 'a') && (pcDst[iIndexWordStart] <= 'r'))                || ((pcDst[iIndexWordStart] >= 'A') && (pcDst[iIndexWordStart] <= 'R')))             {                 cTemp = pcDst[iIndexWordStart];                  for(iIndexWord = iIndexWordStart; iIndexWord < iIndexWordStop; iIndexWord++)                 {                     pcDst[iIndexWord] = pcDst[iIndexWord + 1];                 }                  pcDst[iIndexWordStop - 1] = cTemp;             }             //s-z 右移一位             else if(((pcDst[iIndexWordStart] >= 's') && (pcDst[iIndexWordStart] <= 'z'))                     || ((pcDst[iIndexWordStart] >= 'S') && (pcDst[iIndexWordStart] <= 'Z')))             {                 cTemp = pcDst[iIndexWordStop - 1];                  for(iIndexWord = iIndexWordStop - 1; iIndexWord > iIndexWordStart; iIndexWord--)                 {                     pcDst[iIndexWord] = pcDst[iIndexWord - 1];                 }                  pcDst[iIndexWordStart] = cTemp;             }         }         else if((true == bResetStart) && ((('a' <= *pcSrc) && ('z' >= *pcSrc)) || (('A' <= *pcSrc) && ('Z' >= *pcSrc))))         {             bResetStart = false;             iIndexWordStart = iIndexChar;         }          pcSrc ++;         iIndexChar ++;         iIndexWordStop ++;     }      printf("dst[%s]", cArraySrc); }
user-0 提问: 递归求斐波那契数放回值

回复:
user: user-1
content: 不是你理解的，返回时发生了复制，原封不动的把值复制给了调用者

user: user-2
content: 函数返回是先把值给获取者，再释放

user: user-3
content: 函数返回值和函数参数不是一个概念哦

user: user-4
content: 你这个result意义不大，只是相当于一个临时变量，也就是和以下代码等价的 else     return fib(n-2)+fib(n-1); 所以result纯属可有可无，也就是说你这个result只是临时保存了一下返回值，然后就返回了。 函数结束后局部变量的内存空间却是是被回收，也就是局部变量消失了，但作为返回值返回的结果被保留在调用函数的地方（否则就没法获取函数返回值了），所以返回值可以被打印出来

user: user-5
content: 那个result没有累加，所以有问题
user-0 提问: 没有匹配if的非法else

回复:
user: user-1
content: else if ((score > 80 || score == 80) && score < 90);//这里分号不能有 ((score > 90 || score == 90) && score < 100);//这个分号建议也删了，不然结果可能不是你希望的

user: user-2
content: 分号多加了，去掉就不会有这样的编译error了。

user: user-3
content: score > 60 || score == 60  和score >= 60 有区别吗

user: user-4
content: 这一行末尾多了个分号。 else if ((score > 80 || score == 80) && score < 90);

user: user-5
content: #include<stdio.h> void main() { int score; scanf_s("%d", &score); if (score < 60) { printf("the score is E\n"); } else if ((score > 60 || score == 60) && score < 70) { printf("the score is D\n"); } else if ((score > 80 || score == 80) && score < 90);  // 这个if后面不能有; { printf("the score is C\n"); } else if ((score > 90 || score == 90) && score < 100);  // 这里有;，没问题，但下面{}里面的就没有控制了 { printf("the score is B\n"); } }
user-0 提问: 输出结果少好多数据怎么改正呀？

回复:
user: user-1
content: for(;j<len2-1;j++)  if(flag=0) 这两处  #include<stdio.h> #include<string.h> int main(){ 	char str1[80],str2[80]; 	gets(str1); 	gets(str2); 	int len1,len2; 	len1=strlen(str1); 	len2=strlen(str2); 	if(len1<len2){ 	    printf("no reason\n"); 	} 	int i,j=0,k=0,flag=0; 	for(i=0;i<len1-1;i++){ 		for(j = 0;j<len2-1;j++){ 			if(str1[i]==str2[j]){ 				k++; 			}	 		} 		if(k==len2-1){ 			printf("%d ",i-len2+2); 			k=0; 			flag=1; 		} 	} 	if(flag==0){ 		printf("no\n"); 	} 	return 0; }
user-0 提问: HELP：关于使用函数 gets_s 的问题

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:在编译选项里面配置c11支持 理论上是这样，设置了“ -std=c11”，但无效。

user: user-1
content: 在编译选项里面配置c11支持
user-0 提问: 一个程序里面可以用两次begin....goto语句吗？

回复:
user: user-0
content: 那请问还有其他办法返回上一步吗?

user: user-1
content: 不能写两个begin: 吧？ 写一个试试

user: user-2
content: 状态机咯，goto不友好

user: user-3
content: 在同一个函数总，语句的标号要唯一，不能重复。这是基本的语法规定。

user: user-1
content: scanf("%d",&x);         while(x>3 || x < 1)         {                   printf("违反规则，请重新输入：");                  scanf("%d",&x);          }
user-0 提问: 求助！输出结果总是多一些莫名其妙的东西，不知道怎么改正

回复:
user: user-1
content: 引用 4 楼 m0_46659544 的回复:[quote=引用 3 楼 baidu_28726667 的回复:] char s[100] ={0}；  or  memset(s,0x00,sizeof(s));还是不太对啊？ [/quote]  你for循环往前移动字符的时候，并没有解决原来的字符问题。你移动了两次。包括原来最后的r. 所以最后一共打印了3个r

user: user-0
content: 引用 3 楼 baidu_28726667 的回复:char s[100] ={0}；  or  memset(s,0x00,sizeof(s));还是不太对啊？

user: user-1
content: char s[100] ={0}；  or  memset(s,0x00,sizeof(s));

user: user-0
content: 引用 1 楼 user-2 的回复:删除完之后，在新的字符串末尾加个'\0' void delchar(char s[],char c){ 	int len,i,j; 	len = strlen(s); 	for(i=0;i<len;i++){ 		if(s[i]==c){ 			for(j=i;j<len-1;j++){ 				s[j]=s[j+1]; 			} 		} 	} 	len = strlen(s); 	s[len-1]='\0';  } 改成这样还是不对哎

user: user-2
content: 删除完之后，在新的字符串末尾加个'\0'

user: user-1
content: #include<stdio.h> #include<string.h> #include <Windows.h> void delchar(char s[], char c) { 	int seek = 0; 	int len, i, j; 	len = strlen(s); 	for (i = 0; i<len; i++) { 		if (s[i] == c) { 			for (j = i; j<len - 1; j++) { 				s[j] = s[j + 1]; 			 			} 			seek++; 		} 	}  	s[len - seek] ='\0'; } int main() { 	char s[100] = "hapay new aear"; 	char c;  	scanf("%c", &c); 	delchar(s, c); 	printf("%s\n", s); 	system("pause"); 	return 0; }    记录次数，最后补个'\0'截断它
user-0 提问: 请问 easylogger这个库能把日志只打印到 文件上吗？(不想在屏幕显示)

回复:
user: user-1
content: TypedConfigurations::toStandardOutput

user: user-2
content: 在官方自带的elog_port.c文件中将printf屏蔽掉后，就可以打印在文件中不在屏幕上显示了。

user: user-2
content: 请问您是怎么讲日志打印到文件上的，我的只能在屏幕实时打印，谢谢！
user-0 提问: 新手求帮忙，大哥看看这个问题怎么解决

回复:
user: user-1
content: case 必须是常量

user: user-2
content: 改一下试试  int x = x1>x2?x1:x2

user: user-0
content: 引用 3 楼 user-3 的回复:switch结合三目运算，如果x1>x2就返回1，x1<x2就返回-1，x1==x2就会返回0  switch(x1>x2 ? 1 : (x2>x1 ? -1 : 0)) {     case -1:         printf("B方案更优");         break;     case 1:         printf("A方案更优");         break;     default:         printf("两种方案相同");         break;     } 好的，谢谢哥。做出来了，万分感谢

user: user-0
content: 引用 1 楼 5250 的回复:改一下试试  int x = x1>x2?x1:x2 行

user: user-0
content: 好的，谢谢哥

user: user-3
content: switch结合三目运算，如果x1>x2就返回1，x1<x2就返回-1，x1==x2就会返回0  switch(x1>x2 ? 1 : (x2>x1 ? -1 : 0)) {     case -1:         printf("B方案更优");         break;     case 1:         printf("A方案更优");         break;     default:         printf("两种方案相同");         break;     }
user-0 提问: 动态分配出错

回复:
user: user-0
content: 引用 1 楼 user-1的回复:gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间。 if(t=(char*)malloc(sizeof(char))==NULL) 这一句看上去只分配了一个字符的空间 那要这么改？

user: user-1
content: gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间。 if(t=(char*)malloc(sizeof(char))==NULL) 这一句看上去只分配了一个字符的空间

user: user-1
content: 不用maolloc直接定义个字符数组
user-0 提问: 关于DEBUGHOOKINFO结构体的问题（DEBUG HOOK的结构体）

回复:
user: user-1
content: 引用 8 楼 六道佩恩 的回复:[quote=引用 6 楼 zgl7903 的回复:] id 说明了就是线程ID 句柄的话一般不会用指针类型， 尽可能兼容64位系统 这些头文件里句柄的原型不就是指针吗？  如果是线程ID的话，那么就是MSDN的说明错了，是吧？[/quote]  抱歉， 误写, 本来是想说句柄不会用DWORD，用指针，尽可能兼容64为系统

user: user-0
content: 引用 3 楼 user-3 的回复:按句柄的本质来看，应是8字节的指针 这个理解明显错误, 你可以尝试CreateFile, OpenProcess,等打开一个句柄, 然后看这个实际值是多少  句柄的本质就是指针啊，这是几个头文件中对句柄的定义： ntdef.h:  typedef void *HANDLE; ntdef.h:  typedef PVOID HANDLE; winnt.h:  typedef void *HANDLE; winnt.h:  typedef PVOID HANDLE; wtypesbase.h:  typedef void *HANDLE;  你不能根据它值的大小来说事啊，你对变量取地址得到的值一般也不到4字节上限，但显然不能因为它的值总是在4字节以内而拿4字节整型来存储吧？

user: user-1
content: id 说明了就是线程ID 句柄的话一般不会用指针类型， 尽可能兼容64位系统

user: user-2
content: 引用 4 楼 六道佩恩 的回复:[quote=引用 3 楼 user-3 的回复:] 按句柄的本质来看，应是8字节的指针 这个理解明显错误, 你可以尝试CreateFile, OpenProcess,等打开一个句柄, 然后看这个实际值是多少  句柄的本质就是指针啊，这是几个头文件中对句柄的定义： ntdef.h:  typedef void *HANDLE; ntdef.h:  typedef PVOID HANDLE; winnt.h:  typedef void *HANDLE; winnt.h:  typedef PVOID HANDLE; wtypesbase.h:  typedef void *HANDLE;  你不能根据它值的大小来说事啊，你对变量取地址得到的值一般也不到4字节上限，但显然不能因为它的值总是在4字节以内而拿4字节整型来存储吧？[/quote] 要学习内核知道，要学会用windbg,OD等调试工具而不是强行理解，强行解释。

user: user-2
content: 引用 7 楼 六道佩恩 的回复:[quote=引用 5 楼 gouyanfen 的回复:] 要学习内核知道，要学会用windbg,OD等调试工具而不是强行理解，强行解释。 您能给出解答吗？[/quote] 怎么还在这里如果呢，你弄个双机调试，去调试一下，看看他指向的东西具体是句柄还是id。我给你解释不了这个，我也没用到这个结构。

user: user-0
content: 引用 6 楼 zgl7903 的回复:id 说明了就是线程ID 句柄的话一般不会用指针类型， 尽可能兼容64位系统 这些头文件里句柄的原型不就是指针吗？  如果是线程ID的话，那么就是MSDN的说明错了，是吧？

user: user-0
content: 引用 5 楼 gouyanfen 的回复:要学习内核知道，要学会用windbg,OD等调试工具而不是强行理解，强行解释。 您能给出解答吗？

user: user-3
content: 按句柄的本质来看，应是8字节的指针 这个理解明显错误, 你可以尝试CreateFile, OpenProcess,等打开一个句柄, 然后看这个实际值是多少

user: user-0
content: 引用 1 楼 user-3 的回复:变量命名每个人习惯不一样, msdn也是人写的, 应该以说明为准 对于DWORD，HANDLE, 在内核来说都是一样的东西, 很多系统底层的东西都是这样  你的意思应该认为是句柄？ 按句柄的本质来看，应是8字节的指针，而DWORD只有4字节，怎么也不可能是句柄吧，既然是人写的，我是认为他们写错了

user: user-3
content: 变量命名每个人习惯不一样, msdn也是人写的, 应该以说明为准 对于DWORD，HANDLE, 在内核来说都是一样的东西, 很多系统底层的东西都是这样
user-0 提问: 没搞懂为什么会这样

回复:
user: user-1
content: 数组崩溃，一般是下标越界了

user: user-2
content: 我觉得传入的是 input数组的地址，sizeof(input)并不能得到数组的大小，只得到了指针的大小

user: user-3
content: 能查一下调用堆栈吗？ 或者你搜一下串里有几个分隔符， 一次性分配splitstruct->str的空间，别重新申请了

user: user-4
content: 数组越界，sizeof了指针，你可以用strncpy或者其他的，做好越界保护处理机制

user: user-0
content: 引用 3 楼 Simple-Soft 的回复：数组崩溃，一般是下标越界了我debug的时候是realloc出的问题，所以我一直没想明白为什么

user: user-0
content: 引用 2 楼 chxchxkkk 的回复：我觉得传入的是 input数组的地址，sizeof(input)并不能得到数组的大小，只得到了指针的大小跟sizeof没啥关系

user: user-0
content: 引用 1 楼 focuslight 的回复：能查一下调用堆栈吗？ 或者你搜一下串里有几个分隔符， 一次性分配splitstruct->str的空间，别重新申请了因为每次输入不一样所以不能一次分配，我也没想太明白为什么会core dump
user-0 提问: 各位大神，能不能帮忙看看，为啥数组读不进去啊

回复:
user: user-1
content: 论坛有帖代码的工具不用，你总要给人一个好的阅读感。

user: user-2
content: 这个排版感人完全没法看

user: user-0
content: 确实有点感人
user-0 提问: C语言scanf

回复:
user: user-1
content: 你牛逼，自己为难自己

user: user-2
content: scanf("a=%d,b=%d",&a,&b);留下了一个'\n' 由于scanf("%f,%e",&x,&y);只读取浮点数忽略了'\n',同时该语句剩余一个'\n'没读 scanf("%c%c%c",&c1,&c1,&c2);读取了'\n'赋值给c1,接下来应该输入 c1和c2的值,所以该语句读取的仍然是两个字符,赋值给c1和c2

user: user-3
content: 因为'\n'正好和第一个%c匹配

user: user-4
content: 删掉一个不就行了

user: user-5
content: 你scanf读取了2次

user: user-6
content: 可以不用输入二次呀，修改一下就ok
user-0 提问: 初学，求指点一下，为什么我的循环走歪路啊

回复:
user: user-1
content: scanf遇到非整数就停止了，因此输入15.5，num读到15，n为1；缓冲区里还剩下.5，再执行scanf读小数点发生错误，n为0，程序结束。

user: user-0
content: 初学，但是通过多运行几个，各种尝试性输入，证明你这种解释是合理的。
user-0 提问: 关于多文件之间的问题 初学者

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:最好不要用#include cpp的方式来使用，把函数的什么和实现分块，.h文件中进行函数什么，在cpp中实现，使用的时候保护h文件就可以。请问能详细一点讲一下吗，我不是很懂，谢谢！

user: user-1
content: 最好不要用#include cpp的方式来使用，把函数的什么和实现分块，.h文件中进行函数什么，在cpp中实现，使用的时候保护h文件就可以。
user-0 提问: C语言编写函数做矩阵算法之后，无法输出全部答案？

回复:
user: user-1
content: 我觉得b[]在子函数结束后就被释放了，传出来的指针指向的数组也不存在了

user: user-2
content: 函数的返回值是int。是一个整数。
user-0 提问: 请教大佬

回复:
user: user-1
content: 1.定义一个判断最小公倍数的函数 2.循环从90~99，判断n和其中数的最小公倍数 3.定义2个变量，一个保存当前数，一个保存当前数的最小公倍数 4.如果循环的最小公倍数比3中最小公倍数大，更新3中的2个变量。 5.循环结束后，输出3中个变量  就是你要的结果
user-0 提问: 请教大佬

回复:
user: user-0
content: 引用 2 楼 弦之弈的回复:先写一个函数判断是不是素数 int judge_prime(int num) {  for()  //2到num-1  {   能否整除   if(能) break; return 0;  }  return 1; }  int judge = judge_prime(num) if(judge==) sum = sum+num*num; 大概是这样，放在循环里面就可以 感谢大佬呀！

user: user-1
content: 先写一个函数判断是不是素数 int judge_prime(int num) {  for()  //2到num-1  {   能否整除   if(能) break; return 0;  }  return 1; }  int judge = judge_prime(num) if(judge==) sum = sum+num*num; 大概是这样，放在循环里面就可以

user: user-2
content: 把代码发出来看看哪儿不对
user-0 提问: 萌新求解

回复:
user: user-1
content: // 单词加密：使用指针方式，将任意单词的第一个字母移到该单词的末尾，再加上"ay"。 #include <stdio.h> #include <stdio.h>  int main() { 	char first_c, str[100], *p; 	scanf("%s", str); 	p = str; 	first_c = *p++;			//保存第一个字符  	for ( ; *p!='\0'; p++ ) 	{	*(p-1) = *p;		 	} 	*(p-1) = first_c;		//将第一个字符移到最后  	strcpy(p, "ay");		//拼接后缀ay  	printf("%s", str); 	return 0; }
user-0 提问: 为什么C语言编的程序无缘无故就自己结束呢？

回复:
user: user-1
content: 引用 9 楼 chenqiqideshanzi 的回复:我现在再反馈给大家一下吧，现在我已经把中文逗号改掉了，也把%c改成%d了，最后我也每次使用完scanf都及时清空输入缓存： scanf("%*[^\n]"); scanf("%*c");  但是现在情况是在输入顶点序号后，停顿一两秒，它就自动结束了。   scanf("%c",G.vexs[i]); 第60行的代码为什么不加&   其他的地方都加了 是瞧不起这个函数嘛

user: user-0
content: 我现在再反馈给大家一下吧，现在我已经把中文逗号改掉了，也把%c改成%d了，最后我也每次使用完scanf都及时清空输入缓存： scanf("%*[^\n]"); scanf("%*c");  但是现在情况是在输入顶点序号后，停顿一两秒，它就自动结束了。

user: user-0
content: 谢谢大家对我的指正，我的程序已经可以运行了！

user: user-2
content: 你输得是中文逗号

user: user-0
content: 谢谢大家给我的指导，我现在就去试一试！

user: user-3
content: scanf是从输入缓存中读取指定类型的输入数据，保存到你的目标地址当中，你在读完两个int之后，缓存里面还残存着许多垃圾数据，比如输完数据点的回车(也就是'\n'字符)，你后面再来一堆scanf("%c", &xxx)读取的都是之前输入缓存中剩下的垃圾数据  每次使用完scanf都应该及时清空输入缓存： scanf("%*[^\n]"); // 读走输入缓存中'\n'前的所有字符 scanf("%*c"); // 读走输入最后剩下的字符(通常是'\n')  在输入多个int类型数据的时候，应当避免使用逗号进行间隔 应当尽可能避免在一个scanf中读取多个数据 应当竟可能避免使用scanf("%c", &xxx)

user: user-1
content: Status CreateUDN(MGraph G) {     VertexType v1, v2;     int w, i, j, k;     int a[3];     printf("请输入无向网G的顶点数，弧数，并用逗号隔开\n");     scanf("%d,%d", &G.vexnum, &G.arcnum);     printf("请依次输入无向网G的顶点名称，用空格隔开\n");  //getchar();    读入一个字符想干嘛 删掉     for (i = 0; i < G.vexnum; ++i)     {   scanf("%d", &G.vexs[i]);     //输入的是整形     }     for (i = 0; i < G.vexnum; ++i)     {         for (j = 0; j < G.vexnum; ++j)         {             G.arcs[i][j].adj = INFINITY;         }     }

user: user-0
content: 引用 3 楼 user-4 的回复:把scanf(“%c”, G.vexs[i]) 改成scanf(“%d”, &G.vexs[i])  注意类型是vexs的类型是int，而且scanf的参数是&G.vexs[i]（地址形式） 这个也改了，但是没什么影响，之前存在的代码跳过的问题现在还是有

user: user-4
content: 把scanf(“%c”, G.vexs[i]) 改成scanf(“%d”, &G.vexs[i])  注意类型是vexs的类型是int，而且scanf的参数是&G.vexs[i]（地址形式）

user: user-0
content: 引用 1 楼 user-4 的回复:你的输入值里是不是用了中文的逗号了？你在输入完顶点数后打印一下G.vexnum看看，是不是和输入值一样 试过了，打印的G.vexnum和输入值一样，现在的问题就是在输入完顶点名称之后，敲击回车，过一两秒就直接结束了，中间那些代码都不运行了，不知道咋回事

user: user-4
content: 你的输入值里是不是用了中文的逗号了？你在输入完顶点数后打印一下G.vexnum看看，是不是和输入值一样
user-0 提问: 统计二叉树的叶结点个数并判断两棵树是否相等

回复:
user: user-1
content: void  InOrderTraverse(BiTree T)  //输出中序遍历结果 {    if(T)      {  InOrderTraverse(T->lchild);           printf("%c",T->data);                   InOrderTraverse(T->rchild);      } } 这是中序遍历的算法，逐个计数/比较即可

user: user-2
content: 可以采用中序遍历的思想，用递归实现。
user-0 提问: 问题求助

回复:
user: user-1
content: 引用 1 楼 user-1 的回复:#include <stdio.h>  int main ( ) {       unsigned char  ch,  n=0;    while((ch = getchar()) != '\r')  {     if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))    {         n++;    }  }     printf("n=%d\n",  n);      return  0;  } /************************************************************************************/ #include <stdio.h>  int main ( )  {   unsigned char  ch,  n=0;      for( ch=getchar();  ch != '\r';  ch = ch )      {          if((ch >= 65 && ch <= 90) || ch>=97 && ch<=122 )   n++;      }      printf("n=%d\n",  n);      return  0;  }  回车好像是'\n’，把'\r'替换成'\n’

user: user-1
content: #include <stdio.h>  int main ( ) {       unsigned char  ch,  n=0;    while((ch = getchar()) != '\r')  {     if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))    {         n++;    }  }     printf("n=%d\n",  n);      return  0;  } /************************************************************************************/ #include <stdio.h>  int main ( )  {   unsigned char  ch,  n=0;      for( ch=getchar();  ch != '\r';  ch = ch )      {          if((ch >= 65 && ch <= 90) || ch>=97 && ch<=122 )   n++;      }      printf("n=%d\n",  n);      return  0;  }
user-0 提问: 一个问题，请大佬们帮忙看下

回复:
user: user-1
content: 楼上的正解，写代码要仔细。你这题就出现在仔细不仔细上。

user: user-2
content: char name;只能装一个字符（没法存字符串，也就是多个字符），且是个字符变量（在读取指针的地方会出现问题），按照楼上的方法改应该是对的

user: user-3
content: 吧char name定义成char name[20]
user-0 提问: C语言

回复:
user: user-1
content: A，第一个for里面是逗号运算符，顺序执行

user: user-2
content: 第二个for语句()后面有个 ; 号，不起作用，只有第一个for语句起作用

user: user-3
content: 第一个for循环2次（2个i++，相当于i以2递增） 第二个for也是循环2次 所以一共打印4个*

user: user-4
content: 无论什么，两个for循环都不影响print。print只执行一次。
user-0 提问: C语言

回复:
user: user-1
content: 因为SUB宏，那条语句展开后变成 d=(a+b) - (a+b) *c

user: user-2
content: 宏定义只是把表达式展开， SUB(a+b)展开为 (a+b) - (a+b) 外层没有括号的，所以整个表达式展开为 (a+b) - (a+b) *c 如果想要得到0，那就(SUB(a+b))*c 自己在SUB外层加括号
user-0 提问: 求助C语言简单函数实训题

回复:
user: user-1
content: #include<stdio.h>  int perfect(int n) { 	int i,s = 0; 	for(i = 1; i < n; i++) 	{ 		if(n % i == 0) 		s+=i; 	} 	if(n == s) 	    return 1;         else             return 0; }  int main() { 	int i; 	for(i = 1;i <= 1000;i++)        	    if(perfect(i)==1)                 printf("%4d",i); 	return 0; }
user-0 提问: 求助C语言简单函数实训题

回复:
user: user-1
content: #include<stdio.h>  int prime(int n) {     int i;     for(i = 2; i < n; i++)     {         if(n % i == 0)             return 0;      }      return 1; }  int main() {     int i;     for(i = 100; i < 1000; i++)         if(prime(i) == 1)              printf("%4d",i);     return 0; }
user-0 提问: 为什么第一行平均值是真确的，后面两行就错了，求指出程序的错误。

回复:
user: user-1
content: 引用 2 楼 Knight-9hz 的回复:[quote=引用 1 楼 ?Victor.??的回复:]s=s+*(x+4*j+i);  为什么是4*j  应该是20吧 二维数组不是可以这样表示吗[/quote]  1L说的没错，你这个二维数组的是固定20*20，你只是没用完，只用到了3*2，但不代表每一行只有2个元素，也就是说每一行还是20个元素，只是你只用到了每一行的2个元素，所以你计算每行的第一个元素的地址的时候，相对偏移距离还是要用20  其实没必要这么把问题复杂还，没每次给average传参数的时候，直接传每行的首地址就可以了  float average(int *x,int l) //去掉j参数 {     int i;     float s=0.0;     for(i=0;i<l;i++)     {         s=s+*(x+i);     }     s=s/l;     return s; } int main() {     int h,l,a[20][20],i,j;     printf("输入数组的行数：");     scanf("%d",&h);     printf("输入数组的列数：");     scanf("%d",&l);     printf("输入数组：\n");     for(i=0;i<h;i++)         for(j=0;j<l;j++)             scanf("%d",a[i]+j);     for(i=0;i<h;i++)     {         printf("第%d行的平均值为：%f\n",i+1,average(a[i],l)); //直接传每行的首地址     }     return 0; }

user: user-2
content: 引用 2 楼 Knight-9hz 的回复:[quote=引用 1 楼 ?Victor.??的回复:]s=s+*(x+4*j+i);  为什么是4*j  应该是20吧 二维数组不是可以这样表示吗[/quote]  是可以这样表示，但是每行长度是20，要把4改成20

user: user-0
content: 引用 1 楼 ?Victor.??的回复:s=s+*(x+4*j+i);  为什么是4*j  应该是20吧 d ij =*(d(0)+4*i+j)

user: user-0
content: 引用 1 楼 ?Victor.??的回复:s=s+*(x+4*j+i);  为什么是4*j  应该是20吧 二维数组不是可以这样表示吗

user: user-2
content: s=s+*(x+4*j+i);  为什么是4*j  应该是20吧
user-0 提问: 求助C语言简单函数实训题 

回复:
user: user-1
content: 我的第一行是C++的万能头文件，就是一个顶全部的那种，不过代码都是C的代码没用C++的东西。

user: user-2
content: 刚学没多久，只能做到这了 #include <stdio.h> long long  digit(long long n) { 	long p = 1; 	while (n > 0) 	{ 		n = n / 10; 		p = p * 10; 	} 	return p; } long long fun(long long n)  { 	while(1) 	if (n*n%digit(n)==n) 		return 1; 	else 		return 0; } int main() {long long n = 1; 	while (1) { 		if (fun(n)) 			printf("%ld是守形数。\n", n); 		n += 1; 	} 	return 0; }

user: user-0
content: 引用 1 楼 名字在哪啊 的回复:#include<bits/stdc++.h> #define ll long long using namespace std;  const int maxn=1e5+5; const int inf=0x3f3f3f3f; bool fun(ll n){     ll m=n*n;     while(n){         if(m%10!=n%10)return false;         m/=10,n/=10;     }     return true; } int main() {     ll n     while(~scanf("%lld",&n)){         if(fun(n))printf("%lld是守形数\n");         else printf("%lld不是守形数\n");     }     return 0; }第一行我都看不懂。。。不应该是#include<stdio.h>吗

user: user-1
content: #include<bits/stdc++.h> #define ll long long using namespace std;  const int maxn=1e5+5; const int inf=0x3f3f3f3f; bool fun(ll n){     ll m=n*n;     while(n){         if(m%10!=n%10)return false;         m/=10,n/=10;     }     return true; } int main() {     ll n     while(~scanf("%lld",&n)){         if(fun(n))printf("%lld是守形数\n");         else printf("%lld不是守形数\n");     }     return 0; }
user-0 提问: 请问C语言中结构体的问题？

回复:
user: user-1
content: C++这样没问题，C 语言就不行了。建议用C语言编译试一下，看看是否还能通过语法检查～

user: user-2
content: 编译器的问题，建议最好按正确大众化的规则来写。

user: user-3
content: 这里讨论的是c语言，在c++中当然能过。

user: user-0
content: 引用 2 楼 qiu_shaofeng 的回复:typedef是定义新类型，前面可以不写struct。 不写typedef，前面就要写struct。  你这说法不对, struct PNode{ int data; PNode *a; } ;这样写可以编译通过，不信你试

user: user-3
content: typedef是定义新类型，前面可以不写struct。 不写typedef，前面就要写struct。

user: user-4
content: 跟编译器有关，有的gcc版本就不行，vc没问题
user-0 提问: PTA程序报错：运行超时

回复:
user: user-1
content: 根据题目分析，用一百万大小的byte数组表示所有的学生提交记录即可，大约需要内存1MB，查询时间复杂度为O（1）。

user: user-2
content: 要是内存足够，也可以bitmap的方式

user: user-2
content: 因为是排好序的，所以可以用二分查找，一个id最多几十次就结束了

user: user-3
content: n=2000000 m=10000 那你两层循环就是n*m=20000000000次 这肯定超时啊 A​i​​ <=1000000，你用数组标记学生是否提交过，应该就可以
user-0 提问: 救救孩子吧，单链表太难了

回复:
user: user-0
content: 引用 2 楼 Tryagain2006 的回复：        while (temp->next != NULL)             {             temp = temp->next;         }         //这个while循环是什么意思？是否可以删去？  这个循环的意思是：当 temp 没有 指向最后 一个结点时 一直执行循环。退出循环时，指针 temp 指向链表的最后一个结点。可是我删去之后程序还可以正常运行，那这个while循环是不是可有可无？

user: user-0
content: 引用 1 楼 真相重于对错 的回复：找到末尾，把新的节点添加到链表那是否可以删去呢？我删去之后程序还是可以照常运行

user: user-1
content: while (temp->next != NULL)             {             temp = temp->next;         }         //这个while循环是什么意思？是否可以删去？  这个循环的意思是：当 temp 没有 指向最后 一个结点时 一直执行循环。退出循环时，指针 temp 指向链表的最后一个结点。

user: user-2
content: 找到末尾，把新的节点添加到链表
user-0 提问: 新人求助！[Error] invalid conversion from 'int' to 'int*' 这个不知道怎么改正

回复:
user: user-1
content: int dele 这里要不就得改成 int *dele才能和主函数的b对应上

user: user-2
content: 2处修改，可运行，但输出最后一个元素会补0 int * dele(int *a,int len,int d){//2 return  a;//12 再改2处，符合样例 删除a[j]=0; for(i=0;i<len-1;i++){//修改         printf("%d ",b[i]);

user: user-3
content: 有函数定义 int dele(int *a,int len,int d) 。。可以知道，函数 dele 的返回值应该为 int 类型。 而在 main 函数内部，变量 b 为指针，所以， b=dele(num,len,d); 是有问题的。
user-0 提问: 求助C语言简单函数实训题

回复:
user: user-1
content: #include<stdio.h> #include<math.h>  double triangle(double a, double b, double c) {     double p = (a + b +c) / 2;     return abs(p* (p - a) * (p - b) * (p - c)); }  int main() {     double a, b, c;     scanf("%lf%lf%lf", &a, &b, &c);     printf("面积 = %f", triangle(a, b, c));     return 0; }
user-0 提问: VS读取访问权限冲突0xcccccc的变量初始化问题

回复:
user: user-0
content: 引用 1 楼 user-1 的回复：这就是没有初始化导致的，p->next还是没有初始化初始化不是令p->next=NULL么，需要怎么修改呢

user: user-1
content: 这就是没有初始化导致的，p->next还是没有初始化
user-0 提问: 为什么i的返回值是每次是不相同的，小白求解答。

回复:
user: user-0
content: 那为什么我的不对🤔🤔，请教一下。

user: user-1
content: 我这样写，结果正确 #include <stdio.h> int i=0; int num_digit(int n) { 	if(n==0) 	{ 		if(i==0) 		{ 			return 1; 		} 		else 		{ 			return i; 		} 	} 	else 	{ 		i++; 		num_digit(n/10); 	} }  int main() { 	int num; 	scanf("%d",&num); 	printf("%d",num_digit(num)); }

user: user-2
content: LZ的递归逻辑不对  int num_digit(int n) {     if (n==0)     {         if (i==0) return 1;         return i;     }     i++;     return num_digit(n/10); //这里return就好了 }  其实用非递归就可以了 int num_digit(int n) {     if (n==0) return 1;     i = 0;     while(n!=0)     {         n /= 10;         i++;     }     return i; }

user: user-3
content: 递归函数错误了

user: user-3
content: 递归函数错误了
user-0 提问: c语言中如果准确读取txt文件中的一部分数据，求大神指点

回复:
user: user-1
content: 你是文本文件还是二进制文件，如果是文本文件，就不好移动指针，因为不好计算，可以一行一行的读，如果是二进制文件，只要知道位置，直接seek就可以，任意位置都可以

user: user-0
content: 引用 1 楼 user-1 的回复:先定位到要读的那一行，然后读取自己需要的部分 那如何定位到那一行呢  我只知道用Fseek移动文件指针，但是不能跨区域移动啊

user: user-1
content: 先定位到要读的那一行，然后读取自己需要的部分
user-0 提问: C语言怎样在主函数输出子函数变量值

回复:
user: user-1
content: void insertion_sort(int arr[], int len,int *nc) {     int i,j,frr[19];     for ( i = 1; i < len; i++)     {         int temp = arr[i];         for (j = i-1; j >= 0 && arr[j] > temp; j--)         {             arr[j+1] = arr[j];         }         arr[j+1] = temp;         frr[i-1]=i-j+1;     }     for ( i = 0; i < len-2; i++)     {         *nc = *nc+frr[i];     } }  int main() {     int nc=0;     insertion_sort(arr,N, &nc);     printf("%d",nc) } 供参考～  用一重指针，然后传nc地址到函数里。

user: user-2
content: 因为直接在子函数中int nc，是值传递，传到子函数里面，就变成值的拷贝，这样，在子函数中的nc并不是主函数中的nc。  所以你应该用指针传递，即地址传递，这样子函数中的nc的值和主函数中nc的值就是同一个值。 void insertion_sort(int arr[], int len, int *nc) { 	int i, j, frr[19]; 	for (i = 1; i < len; i++) 	{ 		int temp = arr[i]; 		for (j = i - 1; j >= 0 && arr[j] > temp; j--) 		{ 			arr[j + 1] = arr[j]; 		} 		arr[j + 1] = temp; 		frr[i - 1] = i - j + 1; 	} 	for (i = 0; i < len - 2; i++) 	{ 		*nc = *nc + frr[i]; 	} } int main() { 	int nc = 0; 	insertion_sort(arr, N, &nc); 	printf("%d", nc); 	return 0; }  或者你将nc设置成全局变量。但这样不规范。 int nc = 0; void insertion_sort(int arr[], int len, int nc) { 	int i, j, frr[19]; 	for (i = 1; i < len; i++) 	{ 		int temp = arr[i]; 		for (j = i - 1; j >= 0 && arr[j] > temp; j--) 		{ 			arr[j + 1] = arr[j]; 		} 		arr[j + 1] = temp; 		frr[i - 1] = i - j + 1; 	} 	for (i = 0; i < len - 2; i++) 	{ 		nc = nc + frr[i]; 	} } int main() {  	insertion_sort(arr, N, nc); 	printf("%d", nc); 	return 0; }  并且建议，主函数用int main，并且返回return 0；
user-0 提问: 大佬们求助，使用C语言做出这道题

回复:
user: user-0
content: 引用 1 楼 自信男孩 的回复:深度优先遍历和广度优先遍历的问题。课本上就有源码，网上也有很多。 大佬，能不能给一个啊，我翻遍了课本，只有简化版，看不太懂，网上的大都是C++，C语言的也是少之又少。

user: user-1
content: 深度优先遍历和广度优先遍历的问题。课本上就有源码，网上也有很多。
user-0 提问: `scanf`在读入字符串时为什么不需要在数组名前加取地址符号

回复:
user: user-1
content: 数组名就是数组的首地址，因此不需要。

user: user-2
content: 数组名代表数组的首地址，本身就可以理解为一个地址或者指针

user: user-3
content: 数组名本身就是数字的首地址了，再取址就成了地址的地址了，就不对了。但如果你愿意，还是可以写成&a[0]，就也有取址号了！
user-0 提问: 求解答

回复:
user: user-1
content: give you a 思路  https://blog.csdn.net/qq_45861670/article/details/104109693  主要就是随机数

user: user-0
content: 这是我们老师，写的，不过好像没写完整

user: user-0
content: include <stdio.h> #include <stdlib.h> #include <time.h> int get_random1(void); int get_random2(void); void multitable(int a,int b); int input(); int main(void) { 	srand(time(NULL)); 	int sum = 0; 	int score = 10; 	printf("*구구단 문제*\n"); 	for (int i = 1; i <= 10; ++i) { 		int in = input(); 		int a = get_random1, 			b = get_random2; 		printf("%d号 问题：", i); 		multitable(a, b); 		in; 		if (a*b == in) 		{ 			printf("答案%d 正确.", in); 			sum += score; 		} 		else printf("答案%d 错误”，a*b); 		} 	    	printf("总分:%d分", sum); 	return 0; } int get_random1(void) { 	return rand() % 9 + 1; } int get_random2(void) { 	return rand() % 9 + 1; } void multitable(int a,int b) { 	{ 		printf("%d*%d= \n",  a, b); 	} } int input(void) { 	int in; 	scanf_s("%d", &in); 	return in; }

user: user-0
content: include <stdio.h> #include <stdlib.h> #include <time.h> int get_random1(void); int get_random2(void); void multitable(int a,int b); int input(); int main(void) { 	srand(time(NULL)); 	int sum = 0; 	int score = 10; 	for (int i = 1; i <= 10; ++i) { 		int in = input(); 		int a = get_random1, 			b = get_random2; 		printf("%d号问题: ", i); 		multitable(a, b); 		in; 		if (a*b == in) 		{ 			printf("答shi%d 正确.", in); 			sum += score; 		} 		else printf("답은 %d 오답입니다.", a*b); 		}  	printf("점수:%d점", sum); 	return 0; } int get_random1(void) { 	return rand() % 9 + 1; } int get_random2(void) { 	return rand() % 9 + 1; } void multitable(int a,int b) { 	{ 		printf("%d*%d= \n",  a, b); 	} } int input(void) { 	int in; 	scanf_s("%d", &in); 	return in; }
user-0 提问: realloc函数报错

回复:
user: user-0

user: user-1
content: 发完整代码出来吧，暂时没看出什么问题。 另外，建议对malloc/realloc和strtok的返回值做判断

user: user-2
content: 你的InputSplit结构体怎么定义的？参数怎么传进来的？ 另外， Splitstruct->str[i] = (char*)malloc(strlen(word)+1 * sizeof(char)); //长度计算有错，注意加减乘除的优先级 Splitstruct->str[i] = (char*)malloc((strlen(word)+1) * sizeof(char));
user-0 提问: 趣味程序设计＿13高次方数求助

回复:
user: user-1
content: 这样应该是可以的 #include<bits/stdc++.h> #define ll long long using namespace std;  const int maxn=1e5+5; const int inf=0x3f3f3f3f; ll pow_(ll a,ll b){     ll ans=1;     while(b){         if(b&1)ans=(ans*a)%1000;         a=(a*a)%1000;         b>>=1;     }     return ans; } int main() {     ll n;     while(~scanf("%lld",&n)){         printf("%03lld\n",pow_(13,n));     }     return 0; }

user: user-1
content: 这个相当于是13的n次方对1000取模，应该可以用快速幂

user: user-1
content: 老实说.....acm题跑130000000000那么大的循环数据会超时的

user: user-2
content: LZ的代码基本可以，只是n用int不对，130000000000超过了int范围 另外，输入循环不对while(scanf("%d",&n)!=EOF) 改成 scanf("%d",&n)==1，好好查看一下scanf的返回值

user: user-3
content: #include<stdio.h> int main() {     int s, i, n;      	while( scanf("%d",&n)==1 )     {   s=1;         n = n%1000;		//	最后3位          for ( i=0; i<n; i++ )     	{	s = s*13%1000;     	}     	printf("%03d\n",s);     }     return 0; }
user-0 提问: 求助！！！！兄弟们来看看为什么我打印出来的第一个字符总是消失

回复:
user: user-1
content: 程序员数数要从0开始不是1

user: user-2
content: #include<stdio.h>  #define N 100  //void main(void) int main(void) {     int i=0,j=0,n=0,t=0;     int a[N];     printf("请输入要输入数字的个数 \n\r");     scanf("%d",&n); #if 1     while (i < n) {         printf("请输入数字: \n");         scanf("%d",&a[i]);         if (a[i] < 0)             break;         i++;     }     for (i = 0; i < n; i++)         for (j = 0; j < n - i -1; j++)             if (a[j] > a[j+1]) {                 t = a[j];                 a[j] = a[j+1];                 a[j+1] = t;             }      printf("排序后的顺序是：\n");     for (i = 0; i < n; i++)         printf("%5d",a[i]); #else     /*     do     {         printf("请输入数字: \n");         scanf("%d",&a[i]);         i++;     }     while(a[i-1]>=0) ;     */       for(i=1;i<n;i++)    //变量i代表比较的趟数         for(j=1;j<n+1-i;j++)//变最j代表每趟两两比较的次数             if(a[j]>a[j+1])             {                 t=a[j]; //产利用中间变童实现两值互换                 a[j]=a[j+1];                 a[j+1]=t;             }      printf("排序后的顺序是：\n");     for(i=3;i<=n;i++)         printf("%5d",a[i]); #endif     printf("\n");     return 0; } 供参考～  建议用while代替do ... while，因为如果n输入的是0，那么会是什么结果？ 排序也有问题， 输出也有问题，对比代码找出自己的问题吧

user: user-0
content: 引用 1 楼 user-3 的回复：for(i=3;i<=n;i++)为什么要从3开始？不从0开始当时从0开始结果更不靠谱 索性找了个相对靠谱的数字3哈哈哈

user: user-0
content: 引用 3 楼 weixin_41991157 的回复：程序员数数要从0开始不是1大一刚刚学 有点懵逼

user: user-0
content: 引用 2 楼 自信男孩 的回复：#include<stdio.h>  #define N 100  //void main(void) int main(void) {     int i=0,j=0,n=0,t=0;     int a[N];     printf("请输入要输入数字的个数 \n\r");     scanf("%d",&n); #if 1     while (i < n) {         printf("请输入数字: \n");         scanf("%d",&a[i]);         if (a[i] < 0)             break;         i++;     }     for (i = 0; i < n; i++)         for (j = 0; j < n - i -1; j++)             if (a[j] > a[j+1]) {                 t = a[j];                 a[j] = a[j+1];                 a[j+1] = t;             }      printf("排序后的顺序是：\n");     for (i = 0; i < n; i++)         printf("%5d",a[i]); #else     /*     do     {         printf("请输入数字: \n");         scanf("%d",&a[i]);         i++;     }     while(a[i-1]>=0) ;     */       for(i=1;i<n;i++)    //变量i代表比较的趟数         for(j=1;j<n+1-i;j++)//变最j代表每趟两两比较的次数             if(a[j]>a[j+1])             {                 t=a[j]; //产利用中间变童实现两值互换                 a[j]=a[j+1];                 a[j+1]=t;             }      printf("排序后的顺序是：\n");     for(i=3;i<=n;i++)         printf("%5d",a[i]); #endif     printf("\n");     return 0; } 供参考～  建议用while代替do ... while，因为如果n输入的是0，那么会是什么结果？ 排序也有问题， 输出也有问题，对比代码找出自己的问题吧谢谢

user: user-3
content: for(i=3;i<=n;i++)为什么要从3开始？不从0开始
user-0 提问: 自定义类型

回复:
user: user-1
content: typedef int NUM [10];这是把类型个int [10]起个别名NUM，即NUM就代表int [10]即10个int类型元素的类型。 NUM a;即定义了一个int类型的包含10个元素的数组。即int a[10];

user: user-2
content: 引用 2 楼 其实一开始我是拒绝的 的回复:[quote=引用 1 楼 user-4的回复:]这书直接丢了，什么书籍名？ C语言程序设计第三版，课本里面错了？[/quote] 书上没错， typedef 声明提供一种声明标识符为类型别名的方式，以用于替换可能复杂的类型名。 例如struct ,函数指针，都可以用typedef 简化声明和定义。

user: user-0
content: 引用 3 楼 tianyabaiwei的回复:我的理解是，只是改了个数组名字，数组里面的数据存放是没有变动的。因为数组名称即是数组数据的存放的指针名称，这个操作仅仅是数组的名字从a换成了NUM。至于具体的可以电脑上试试，个人认为没什么实际意义。 好............

user: user-3
content: 我的理解是，只是改了个数组名字，数组里面的数据存放是没有变动的。因为数组名称即是数组数据的存放的指针名称，这个操作仅仅是数组的名字从a换成了NUM。至于具体的可以电脑上试试，个人认为没什么实际意义。

user: user-0
content: 引用 1 楼 user-4的回复:这书直接丢了，什么书籍名？ C语言程序设计第三版，课本里面错了？

user: user-4
content: 这书直接丢了，什么书籍名？
user-0 提问: 自定义类型

回复:
user: user-1
content: typedef int NUM [10];这是把类型个int [10]起个别名NUM，即NUM就代表int [10]即10个int类型元素的类型。 NUM a;即定义了一个int类型的包含10个元素的数组。即int a[10];

user: user-2
content: 这个typedef关键字，就是类型别名的意思。  你书上的例子已经说的很清楚了 #include <stdio.h>  typedef int myNum1;//以后可以用myNum1代替int typedef int myNum2[10];//以后可以用myNum2代替int []  int main() { 	myNum1 a1=0;//等价于int a1=0; 	myNum2 a2 = {0,1,2,3,4,5,6,7,8,9};//等价于int a2[10]= {0,1,2,3,4,5,6,7,8,9};  	printf("%d\n", a1);  	for (int i = 0; i < 10; ++i) { 		printf("%d ", a2[i]); 	} 	return 0; }
user-0 提问: C语言

回复:
user: user-1
content: B         verygood

user: user-0
content: 那什么情况下是修改p所指的只能，p前面加上间接寻址运算符吗？

user: user-2
content: ps是指针，里面存放的是地址值，即谁把地址给了ps，它就只想哪里。 ps怎么修改，只要不对数据区域做修改，都不会影响到s. ps += 4;和ps = "nice";都是在修改ps的地址值，没对s数据（或者称为内容）部分做任何修改。

user: user-3
content: B verygood ps="nice"是把ps指针指向了别的地址，和原来的s没有半毛关系
user-0 提问: 求大佬

回复:
user: user-1
content: 引用 4 楼 自信男孩 的回复:[quote=引用 1 楼 ?Victor.?? 的回复:]  #include<stdio.h>  int main() {     int i, s = 1;     for(i = 1; i < 21; i++)           s*= i;     printf("%d", s);     return 0; }  有没有考虑到s溢出的问题？[/quote]  确实 感谢提醒 考虑不周~

user: user-2
content: s考虑用unsigned long long或这 double  引用 4 楼 自信男孩 的回复:[quote=引用 1 楼 ?Victor.?? 的回复:]  #include<stdio.h>  int main() {     int i, s = 1;     for(i = 1; i < 21; i++)           s*= i;     printf("%d", s);     return 0; }  有没有考虑到s溢出的问题？[/quote]

user: user-2
content: 引用 1 楼 ?Victor.?? 的回复: #include<stdio.h>  int main() {     int i, s = 1;     for(i = 1; i < 21; i++)           s*= i;     printf("%d", s);     return 0; }  有没有考虑到s溢出的问题？

user: user-3
content: LS的两种方法都可以，只是结果超出int范围，所以最好把int改成double类型

user: user-4
content: 递归 #include <stdio.h> #include <stdlib.h>   int fac(int n) {     if (n <= 1)     {         return 1;     }     else     {         return n*fac(n - 1);     }      } int main() {     int n = 0;     printf("请输入一个数：");     scanf_s("%d", &n);   //这块输入你求的乘积数 比如你上面的20     int fac(n);     printf("%d\n", fac(n));     system("pause");     return 0; }

user: user-1
content: #include<stdio.h>  int main() {     int i, s = 1;     for(i = 1; i < 21; i++)           s*= i;     printf("%d", s);     return 0; }
user-0 提问: 麻烦帮下忙

回复:
user: user-0
content: 引用 1 楼 user-1 的回复：7/2=3.5 取整（int类型）是多少？那就是去掉小数部分，所以答案是3（也就是选c）好的谢谢

user: user-1
content: 7/2=3.5 取整（int类型）是多少？那就是去掉小数部分，所以答案是3（也就是选c）
user-0 提问: 1234对应的二进制数

回复:
user: user-1
content: 4d2是16进制表示。根据16进制是一个数字表示4位，比如 4==0100 d==1101 2==0010 所以二进制是010011010010

user: user-2
content: 引用 8 楼 其实一开始我是拒绝的 的回复:[quote=引用 7 楼 Tryagain2006的回复:][quote=引用 楼主 其实一开始我是拒绝的 的回复:] 为什么1234对应点二进制数是这样？  您说的是文件上存储的数据吧？[/quote] 对的。。。。。[/quote]  C语言的文件分为文本文件和二进制文件，如果要将一个整数保存到二进制文件中，则系统会将内存中的用 二进制 表示的整数 转换为用 ASCII 表示的字符串，所以内存中整型的 1234 数，在存入文本文件的时候就会被自动自动转换为四个ASCII字符，也是书上说的4个数字 ‘1’，‘2’，‘3’，‘4’。

user: user-0
content: 引用 7 楼 Tryagain2006的回复:[quote=引用 楼主 其实一开始我是拒绝的 的回复:] 为什么1234对应点二进制数是这样？  您说的是文件上存储的数据吧？[/quote] 对的。。。。。

user: user-2
content: 引用 楼主 其实一开始我是拒绝的 的回复:为什么1234对应点二进制数是这样？  您说的是文件上存储的数据吧？

user: user-0
content: 引用 4 楼 真相重于对错的回复:[quote=引用 2 楼 其实一开始我是拒绝的 的回复:] [quote=引用 1 楼 真相重于对错的回复:]1234 转为16进制就是4d2 可是里面说1234对应的是二进制的[/quote] 你截书截了一半，我看不到上下文，哪里知道你的书里写的啥？[/quote] 是我看错了，三楼说了，谢谢

user: user-3
content: 引用 2 楼 其实一开始我是拒绝的 的回复:[quote=引用 1 楼 真相重于对错的回复:]1234 转为16进制就是4d2 可是里面说1234对应的是二进制的[/quote] 你截书截了一半，我看不到上下文，哪里知道你的书里写的啥？

user: user-4
content: 引用 2 楼 其实一开始我是拒绝的 的回复:[quote=引用 1 楼 真相重于对错的回复:]1234 转为16进制就是4d2 可是里面说1234对应的是二进制的[/quote] 看书这么不认真的，人家说的是放到文件文件1234表现的二过制对应的ASCii码值， 放到二进制文件中，则是0x4d2(虽然你没截到图，估计是这样子的)

user: user-0
content: 引用 1 楼 真相重于对错的回复:1234 转为16进制就是4d2 可是里面说1234对应的是二进制的

user: user-3
content: 1234 转为16进制就是4d2