Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 急！！用feof读取文件的问题

回复:
user: user-1
content: PS：结贴会返还一半积分。  实际是我想要积分。

user: user-1
content: 引用 13 楼 weixin_45660023 的回复:[quote=引用 12 楼 user-1的回复:][quote=引用 11 楼 user-1 的回复:] [quote=引用 9 楼 weixin_45660023 的回复:] [quote=引用 8 楼 user-1的回复:]结构体的定义也发一下。 我已经明白了，问题出在文件上，最后一行文件应该在输入一个回车，不然feof返回最后一行最后结尾，问题解决了，谢谢，分数给你。[/quote]我的天。我早就问你了。。。。文件的最后一个字符是数据还是空字符？[/quote]空字符包含换行，空格，tab。 另外，建议最后不要回车。以数据结尾比较好[/quote] 了解了。谢谢。请问为什么最好不要已回车作为结尾呢？[/quote]我上次写的时候，用feof函数他会认为后面还有数据。于是又多循环了一次。。。但那不是我想要的。也不能说建议吧。应该要分情况。你这么用没毛病的话，就这么写也行。

user: user-0
content: 引用 12 楼 user-1的回复:[quote=引用 11 楼 user-1 的回复:] [quote=引用 9 楼 weixin_45660023 的回复:] [quote=引用 8 楼 user-1的回复:]结构体的定义也发一下。 我已经明白了，问题出在文件上，最后一行文件应该在输入一个回车，不然feof返回最后一行最后结尾，问题解决了，谢谢，分数给你。[/quote]我的天。我早就问你了。。。。文件的最后一个字符是数据还是空字符？[/quote]空字符包含换行，空格，tab。 另外，建议最后不要回车。以数据结尾比较好[/quote] 了解了。谢谢。请问为什么最好不要已回车作为结尾呢？

user: user-1
content: 引用 11 楼 user-1 的回复:[quote=引用 9 楼 weixin_45660023 的回复:] [quote=引用 8 楼 user-1的回复:]结构体的定义也发一下。 我已经明白了，问题出在文件上，最后一行文件应该在输入一个回车，不然feof返回最后一行最后结尾，问题解决了，谢谢，分数给你。[/quote]我的天。我早就问你了。。。。文件的最后一个字符是数据还是空字符？[/quote]空字符包含换行，空格，tab。 另外，建议最后不要回车。以数据结尾比较好

user: user-1
content: 引用 9 楼 weixin_45660023 的回复:[quote=引用 8 楼 user-1的回复:]结构体的定义也发一下。 我已经明白了，问题出在文件上，最后一行文件应该在输入一个回车，不然feof返回最后一行最后结尾，问题解决了，谢谢，分数给你。[/quote]我的天。我早就问你了。。。。文件的最后一个字符是数据还是空字符？

user: user-1
content: 从你给的来看。我没看出什么问题。

user: user-0
content: 引用 8 楼 user-1的回复:结构体的定义也发一下。 我已经明白了，问题出在文件上，最后一行文件应该在输入一个回车，不然feof返回最后一行最后结尾，问题解决了，谢谢，分数给你。

user: user-1
content: 结构体的定义也发一下。

user: user-0
content: 引用 3 楼 user-1 的回复:[quote=引用 4 楼 weixin_45660023 的回复:] [quote=引用 3 楼 user-1的回复:][quote=引用 2 楼 weixin_45660023 的回复:] [quote=引用 1 楼 user-1的回复:]CSDN论坛新手指南 好的我下次注意。。。请问大佬我这个问题出在哪呢？[/quote]你把以前的帖子结一下，再说。[/quote] 等下哈，在外面，手机好像不能结。。[/quote]文件的最后一个字符是数据还是空字符？[/quote] 帖子结完了，下面是的文件，麻烦大佬帮看一下 001 Heaven Merry pub1 2008.03.02 48  003 World  Lisa  pub3 2004.11.22 44 004 Wrong  Helen pun5 2010.12.11 31 002 Hell   Tom   pub2 2005.07.04 29

user: user-0
content: 引用 5 楼 user-1的回复:[quote=引用 4 楼 weixin_45660023 的回复:] [quote=引用 3 楼 user-1的回复:][quote=引用 2 楼 weixin_45660023 的回复:] [quote=引用 1 楼 user-1的回复:]CSDN论坛新手指南 好的我下次注意。。。请问大佬我这个问题出在哪呢？[/quote]你把以前的帖子结一下，再说。[/quote] 等下哈，在外面，手机好像不能结。。[/quote]文件的最后一个字符是数据还是空字符？[/quote] 是数字，等下我回去，先把帖子结了，文件也发出来。

user: user-1
content: 引用 4 楼 weixin_45660023 的回复:[quote=引用 3 楼 user-1的回复:][quote=引用 2 楼 weixin_45660023 的回复:] [quote=引用 1 楼 user-1的回复:]CSDN论坛新手指南 好的我下次注意。。。请问大佬我这个问题出在哪呢？[/quote]你把以前的帖子结一下，再说。[/quote] 等下哈，在外面，手机好像不能结。。[/quote]文件的最后一个字符是数据还是空字符？

user: user-0
content: 引用 3 楼 user-1的回复:[quote=引用 2 楼 weixin_45660023 的回复:] [quote=引用 1 楼 user-1的回复:]CSDN论坛新手指南 好的我下次注意。。。请问大佬我这个问题出在哪呢？[/quote]你把以前的帖子结一下，再说。[/quote] 等下哈，在外面，手机好像不能结。。

user: user-1
content: 引用 2 楼 weixin_45660023 的回复:[quote=引用 1 楼 user-1的回复:]CSDN论坛新手指南 好的我下次注意。。。请问大佬我这个问题出在哪呢？[/quote]你把以前的帖子结一下，再说。

user: user-0
content: 引用 1 楼 user-1的回复:CSDN论坛新手指南 好的我下次注意。。。请问大佬我这个问题出在哪呢？

user: user-1
content: CSDN论坛新手指南
user-0 提问: vs2017编写c语言时不能用scanf，为什么啊？

回复:
user: user-1
content: 文件第一行添加 #define _CRT_SECURE_NO_WARNINGS 即可

user: user-2
content: 他认为这个不安全。所以优先支持scanf_s  1、改为scanf_s 2、属性里面取消安全检查 3、加宏定义#define _CRT_SECURE_NO_WARNINGS

user: user-3
content: 不可能吧，肯定是程序哪里不对
user-0 提问: 求大神看

回复:
user: user-1
content: CSDN论坛新手指南

user: user-0
content: 引用 楼主 weixin_45792725的回复:You play your favourite game yet another time. You chose the character you didn’t play before. It has str points of strength and int points of intelligence. Also, at start, the character has exp free experience points you can invest either in strength or in intelligence (by investing one point you can either raise strength by 1 or raise intelligence by 1  ).  Since you’d like to make some fun you want to create a jock character, so it has more strength than intelligence points (resulting strength is strictly greater than the resulting intelligence).  Calculate the number of different character builds you can create (for the purpose of replayability) if you must invest all free points. Two character builds are different if their strength and/or intellect are different.  Input  The first line contains the single integer T (1≤T≤100) — the number of queries. Next T  lines contain descriptions of queries — one per line.  This line contains three integers str , int and exp (1≤str,int≤108, 0≤exp≤108  ) — the initial strength and intelligence of the character and the number of free points, respectively.  Output  Print T  integers — one per query. For each query print the number of different character builds you can create.  Example  Input  4 5 3 4 2 1 0 3 5 5 4 10 6  Output  3 1 2 0  Note  In the first query there are only three appropriate character builds: (str=7,int=5) , (8,4) and (9,3)  . All other builds are either too smart or don’t use all free points.  In the second query there is only one possible build: (2,1)  .  In the third query there are two appropriate builds: (7,6) , (8,5)  .  In the fourth query all builds have too much brains.  我的代码为什么 wrong answer test 3 #include<stdio.h>  int main(void) {     long str,inte,exp;     int T,i;     scanf("%d",&T);     for(i=0;i<T;i++)     {       scanf("%ld%ld%ld",&str,&inte,&exp);      long j=0,a;      a=str+exp;      for(;a>inte;a--,inte++)         j++;      printf("%d\n",j);     } } 自顶自顶，不要沉啊。
user-0 提问: C语言

回复:
user: user-1
content: 0开头八进制我居然忘了。。。  坏习惯要扼杀在摇篮。CSDN论坛新手指南

user: user-2
content: int main() {  	int k = 011; 	printf(" %d\n",k++); 	return 0; } 你代码里有错误 改一下 然后输出结果为9 因为011代表八进制的11
user-0 提问: 新手求教

回复:
user: user-1
content: 这两句话是两个函数的声明 int judgment1(int year); 声明一个返回值为Int的函数，名为judgment1，传入参数为Int类型 int judgment2(int mouth,int m,int day); 声明一个返回值为Int的函数，名为judgment2，传入参数为三个Int类型的值  在程序的其他地方应该有相应的函数定义

user: user-0
content: 这个函数到底可以干什么呢

user: user-2
content: 这两句话是两个函数的声明 int judgment1(int year); 声明一个返回值为Int的函数，名为judgment1，传入参数为Int类型 int judgment2(int mouth,int m,int day); 声明一个返回值为Int的函数，名为judgment2，传入参数为三个Int类型的值  在程序的其他地方应该有相应的函数定义
user-0 提问: 怎么输入三行再出结果

回复:
user: user-1
content: 1.把输入存入数组，全部输入后统一处理 2.把输出存入数组，输入结束后统一输出 3.把输出转化为字符串并拼串，输入结束后输出字符串 ……

user: user-2
content: 可以考虑把结果存到数组里，最后再依次输出
user-0 提问: 初学者请大佬解决

回复:
user: user-1
content: 思路：输入的钱数全部换算成角数，输出的时候，按照角数的百、十、个位数（取模）输出就是对应的结果了。 基本没啥复杂的运算，基本的算术运算自己试着实现以下。

user: user-2
user-0 提问: 请问 这个哪里错了啊，新手作业题

回复:
user: user-1
content: function(*x,*y); printf("%d%d",*x,*y); 改成  function(&x, &y); printf("%d%d", x, y); 取地址&，在main中打印直接输出

user: user-2
content: 所以，代码应该修改为 #include<stdio.h> void function(int *x, int *y) { 	printf("原始值："); 	printf("x=%d, y=%d\n", *x, *y); 	*x = 8; *y = 9; }  int main(int argc, char **argv) { 	int x = 5, y = 6; 	function(&x, &y);//--------将*x和*y改为&x和&y------------- 	printf("修改以后的值："); 	printf("x= %d, y= %d", x, y);//-----------将&x和&y改为x和y----- 	return 0; }  以下是VS2015运行的结果

user: user-3
content: 調用function的時候，參數應該是&x,&y，也就是取x和y的地址，隨後的printf不要加*符號。
user-0 提问: 冒泡思想使带头节点单链表有序

回复:
user: user-0
content: void sort(linklist &L){ Lnode *p=L->next,*pre; Lnode *r=p->next; p->next=NULL; p=r; while(p!=NULL){ r=p->next; pre=L; while(pre->next!=NULL&&pre->next->data<p->data) pre=pre->next; p->next=pre->next; pre->next=p; p=r; } }

user: user-0
content: 指路我用#CSDN#这个app发现了有技术含量的博客，小伙伴们求同去《单链表排序(冒泡排序&快速排序)》, 一起来围观吧 https://blog.csdn.net/weixin_40995778/article/details/82822624?utm_source=app
user-0 提问: 求助算法题

回复:
user: user-1
content: int main() {     int num,low,i,j = 0,n = 0;     int stdno,score;     int temp; 	int stdnohigh[200] = {0};      scanf("%d %d",&num,&low);        // get qualified data     for(i = 0;i < 2*num; i+=2){         scanf("%d %d",&stdno,&score);         if(score >= low){             stdnohigh[j++] = stdno;             stdnohigh[j++] = score;         }     }      // sort     for(i = 0;i < j/2 - 1; i++){ 		for(n = 0; n < j - 2 -i; n+=2){ 			if(stdnohigh[n+1] <= stdnohigh[n+3]){ 				if(stdnohigh[n+1] == stdnohigh[n+3]){ 					if(stdnohigh[n] > stdnohigh[n+2]){ 						temp = stdnohigh[n+2]; 						stdnohigh[n+2] = stdnohigh[n]; 						stdnohigh[n] = temp; 					} 				}else{ 					// exchange score 					temp = stdnohigh[n+3]; 					stdnohigh[n+3] = stdnohigh[n+1]; 					stdnohigh[n+1] = temp;  					// exchange stdno 					temp = stdnohigh[n+2]; 					stdnohigh[n+2] = stdnohigh[n]; 					stdnohigh[n] = temp; 				} 			} 		}        }  	for(i = 0; i < j; i+=2){ 		printf("%d %d\n",stdnohigh[i],stdnohigh[i+1]); 	}  	return 0; } 试一下，但是排序还可以更高级，这里用的是冒泡排序

user: user-2
content: 了解一下sort的自定义排序

user: user-3
content: 可以用stdlib.h的qsort

user: user-0
content: 谢谢大佬
user-0 提问: 用二重循环编程

回复:
user: user-0
content: 非常谢谢你，解决了我的问题！

user: user-1
content: 改成这样就行了：

user: user-1
content: 浮点数不是精确的，本来应该是0.8，但是计算机存储的时候精度丢失。所以变小了。因此最后0.5的时候已经小于0.5了，因此最后一次无法加到sum里面。
user-0 提问: 打印出所有的“水仙花数”。为啥我的代码不能输出？

回复:
user: user-0
content: 引用 3 楼 weixin_40290083的回复:[quote=引用 2 楼 ljn20010724 的回复:] [quote=引用 1 楼 user-2的回复:]再想想s=i/10;能否计算出十位 噢噢噢 我改成了s=i/10-10 可是只输出了一个153[/quote]   s = i/10 % 10[/quote] 非常谢谢你，终于对了

user: user-1
content: 引用 2 楼 ljn20010724 的回复:[quote=引用 1 楼 user-2的回复:]再想想s=i/10;能否计算出十位 噢噢噢 我改成了s=i/10-10 可是只输出了一个153[/quote]   s = i/10 % 10

user: user-0
content: 引用 1 楼 user-2的回复:再想想s=i/10;能否计算出十位 噢噢噢 我改成了s=i/10-10 可是只输出了一个153

user: user-2
content: 再想想s=i/10;能否计算出十位
user-0 提问: 关于return

回复:
user: user-1
content: getchar函数是等待用户输入的，与上面S函数没有关系，在这里你需要的是输出printf。

user: user-2
content: int a; a=s(1. 2) printf

user: user-3
content: 看你对空白的定义了，编译器返回了值，只是你自己不记录，不处理而已.

user: user-4
content: 屏幕上会显示东西是因为你让计算机显示了 但你的程序只是让计算机计算，没有让它显示，所以它就没有显示 printf("%d", S(1 , 2) );

user: user-5
content: 你凭什么说结果是空白，调用函数S后，它的返回值并没有赋给任何变量，也没有使用输出语句输出。 如果将它赋给一个变量，如int a = S(1,2),即使你不输出a,你在调试模式时，也可以跟踪跟踪到a的值，或者你可以直接输出printf("S(1,2)"),在屏幕上可以看到返回的值。

user: user-6
content: 你是凭什么认为调用函数返回的结果是“空白”？

user: user-7
content: S的返回值楼主没有处理。如果要看结果可以 printf("%d\n", S(1, 2));

user: user-8
content: 你得 printf
user-0 提问: C语言变量定义问题

回复:
user: user-1
content: int a,b; 这样定义了a和b，只是没有初始化。 之后执行a = b = 6；对a和b进行赋值  int a = b = 6；编译的理解是将 b 赋值为6，再定义a，将 b 的值赋值给 a 对 a 进行初始化。但是， b 在之前是没有定义的，所以 b = 6 这里会发生错误

user: user-2
content: int a=b=6 意思是定义一个变量a，让它的值赋值为变量b的值 但此时变量b没有定义，因此错误 如果变量b已定义，这句就没问题 定义的变量之间用逗号分开，你a和b之间是使用的=，那么编译器为啥不认为你是在运算而要认为你是在定义a、b两个变量？

user: user-3
content: b没有定义，因此int a = b = 10;是不可以的。

user: user-4
content: 我以为这个是写编译器的人规定的。其他的我就不知道了。
user-0 提问: 编辑器

回复:
user: user-1
content: DEV的调试，可能是软件本身的问题，首先要调整一点设置，这点你可以百度 其次，调试是对可执行程序调试，你得先编译 然后，你得加断点

user: user-2
content: 这个跟运行环境有关系，其实还是在linux平台的vim、gcc、gdb方便，不过是命令行的，一开始可能会不太习惯

user: user-0
content: 引用 3 楼 pengbolan的回复:DEVC++不错的，简单，小巧，功能强大 我用的这个，但是一调试他就直接退出来

user: user-3
content: 编辑器可以用VIM，但是要调试可以考虑用gdb

user: user-2
content: DEVC++不错的，简单，小巧，功能强大

user: user-4
content: VS无敌。哈哈哈

user: user-5
content: 你是要编辑器，还是编译器，还是集成IDE呢
user-0 提问: 为什么我输入一组数据后回车，程序过一会直接结束

回复:
user: user-1
content: int i=0,j,num[20],N,mid;     char name[20][32];     scanf("%d",&N);     if (N > 20)         N = 20;     while(i<=N){         scanf("%s %d",name[i],num[i]);         i++;      }

user: user-2
content: for(i=1;1<=N;i++){ //把1<=N改为i<=N

user: user-3
content: 1、char name[20][30]; 2、第5行的i等于1
user-0 提问: 求C语言1+2+3+4+...100

回复:
user: user-1
content: 引用 楼主 qq_45740576的回复:求C语言1+2+3+4+...100 #include<stdio.h>  int main() {     int i,sum=0;     for(i=1;i<=100;i++)     {         sum=sum+i;     }     printf("sum=%d",sum);     return 0; }

user: user-2
content: #include<stdio.h>  int main() {     int i,sum=0;     for(i=1;i<=100;i++)     {         sum+=i;     }     printf("sum=%d",sum);     return 0; }

user: user-3
content: #include<stdio.h> int main() {    int i,sum=0;     for(i=1;i<=100;i++) {        sum+=i; } printf("%d",sum); return 0; }

user: user-4
content: puts("5050");
user-0 提问: 新手求助

回复:
user: user-1
content: #include <stdio.h>  int main() {   for (int n, i = (scanf("%d", &n), 0), j; scanf("%d", &j), i < n; i++)     putchar(j); puts("");    return 0; }

user: user-2
content: CSDN论坛新手指南

user: user-3
content: #include <stdio.h> int main(void) { 	int n,a; 	scanf_s("%d", &n); 	for (int i = 0;i < n;i++) { 		scanf_s("%d", &a); 		printf("%c", a); 	}     return 0; } 谢谢采纳！
user-0 提问: C语言练习题求助，急今晚要交作业了

回复:
user: user-1
content: baidu  N多现成代码，还要来这里要。

user: user-2
content: 已经过了今晚了，不知道你作业交没。  #include <stdio.h> #include <math.h>  int narcissistic(int number) {     int n[6] = {0};     int i = 0;     int bak = number;     while(number != 0)     {         n[i ++] = (number % 10);         number /= 10;     }     for(int j = 0; j < i; j++)     {         bak -= pow(n[j], i);     }     int re = bak == 0 ? 1 : 0;     return re; }  void PrintN(int m, int n) {     for(int i = m + 1; i < n; i ++)     {         if(narcissistic(i))         {             printf("%d\r\n", i);         }     } }

user: user-3
content: 谢邀，作业好好做，本人不提供代码，谢谢！
user-0 提问: 伪代码快速排序

回复:
user: user-0
content: 引用 1 楼 六道佩恩 的回复：小于，这样循环结束的时候就是它们相等，然后它们就表示的同一个位置了 如果<= 那么循环结束的时候，它们已经相互错过了然后我就懵了

user: user-0
content: 引用 1 楼 六道佩恩 的回复：小于，这样循环结束的时候就是它们相等，然后它们就表示的同一个位置了 如果<= 那么循环结束的时候，它们已经相互错过了但我们老师说不是这样的，他说只有小于号出来的也是错过的

user: user-1
content: 小于，这样循环结束的时候就是它们相等，然后它们就表示的同一个位置了 如果<= 那么循环结束的时候，它们已经相互错过了
user-0 提问: 输出水仙花数

回复:
user: user-0
content: 引用 2 楼 喜欢做我自己的回复:你把c都数字进行改变了，还是原先的数据吗，最后你还和sum比什么？在退出for循环之时c都变成0了，怎么匹配得到 虽然我菜 但是这语气也太冲了吧

user: user-1
content: 有用的话麻烦把贴结了，谢谢

user: user-1
content: 你把c都数字进行改变了，还是原先的数据吗，最后你还和sum比什么？在退出for循环之时c都变成0了，怎么匹配得到

user: user-1
content: #include<stdio.h> int main() { int x,y,z,i; //scanf("%d",&i); for(i = 100 ;i < 1000; i++) {  x=i%10; y=i/10%10; z=i/100; if(i<100||i>999) printf("Invalid Value!\n"); if(i>=100 && i<=999 && i==x*x*x+y*y*y+z*z*z) printf("Yes  %d\n",i); //if(i>=100 && i<=999 && i!=x*x*x+y*y*y+z*z*z) //	printf("No\n");  } return 0; }

user: user-2
content: #include <stdio.h> #include <math.h>  int main() {   int i, n, s, x, y, z[10] = {0, 1};    scanf("%d", &n);   if (n > 2 && n < 8)   {     for (i = 2; i < 10; i++) z[i] = pow((double)i, n);     x = pow(10.0, n - 1);     for (i = x; i < x * 10; i++)     {       for(y = i, s = 0; y; y /= 10) s += z[y % 10];       if (s == i) printf("%d ", i);     }   }    return 0; }

user: user-0
content: 引用 12 楼 喜欢做我自己的回复:关于我回问题的事情，我可能回复语气不对，在这里抱歉了。 有一点要提醒你的是，你已经有四个贴没结了，不是一个哦，麻烦给其他人一个鼓励，回帖与结贴 只是一个交流，但你问题解决了，起码给他人一个感谢吧。 知道了 我一开始用的就是手机版 没有结帖的功能 我一会回去用电脑操作一下

user: user-1
content: 关于我回问题的事情，我可能回复语气不对，在这里抱歉了。 有一点要提醒你的是，你已经有四个贴没结了，不是一个哦，麻烦给其他人一个鼓励，回帖与结贴 只是一个交流，但你问题解决了，起码给他人一个感谢吧。

user: user-0
content: 引用 10 楼 自信男孩的回复:#include<stdio.h> #include <math.h>  int main() {     int i, tmp, sum;;      for(i = 100 ;i < 1000; i++)     {         tmp = i;         sum = 0;          while (tmp) {             sum += pow(tmp % 10, 3);             tmp /= 10;         }         if (sum == i)             printf("%d\t", sum);     }     putchar(10);      return 0; }  供参考～ 咦 我看了一下这个程序好像也是只针对三位数的 。。四位五位好像就不太行了

user: user-3
content: #include<stdio.h> #include <math.h>  int main() {     int i, tmp, sum;;      for(i = 100 ;i < 1000; i++)     {         tmp = i;         sum = 0;          while (tmp) {             sum += pow(tmp % 10, 3);             tmp /= 10;         }         if (sum == i)             printf("%d\t", sum);     }     putchar(10);      return 0; }  供参考～

user: user-0
content: 仔细看了一下 这个程序只是针对于三位数的水仙花数 四位数五位数的就不符合了

user: user-0
content: 结贴率0%，真不错[/quote] 手机版没法结 一会去pc给您结 我也道个歉

user: user-0
content: 引用 6 楼 喜欢做我自己的回复:结贴率0%，真不错 我第一次用帖子问问题 不知道怎么结 你这样嘲讽真的有意义吗

user: user-1
content: 结贴率0%，真不错

user: user-1
content: 最近心情不好，我道歉
user-0 提问: 求大神们帮个忙看一下这读取访问权限问题是为啥，谢谢

回复:
user: user-1
content: 你的代码逻辑有问题。先序遍历，一般实访问本节点，如果右子树不为空，把右子树压入栈中，然后把本节点指向它的左子树，如果本节点为空则从栈中弹出栈顶付给本节点。

user: user-0
content: 引用 2 楼 真相重于对错的回复:p1指向了一个不存在的地址。 具体为什么，请自己调试。 👌谢谢，我去自己调试一下

user: user-0
content: 引用 3 楼 自信男孩的回复:p1->data前要加&，这个&是加给data的。  p1是野指针，所以需要处理一下，否则楼主的代码可能会出现段错误～ 非常感谢大佬回答我再去试一下

user: user-0
content: 引用 1 楼 user-3的回复:加一个取地址符   &p1->data 好的谢谢你啦我去试一下

user: user-2
content: p1->data前要加&，这个&是加给data的。  p1是野指针，所以需要处理一下，否则楼主的代码可能会出现段错误～

user: user-1
content: p1指向了一个不存在的地址。 具体为什么，请自己调试。

user: user-0
content: 引用 7 楼 真相重于对错的回复:你的代码逻辑有问题。先序遍历，一般实访问本节点，如果右子树不为空，把右子树压入栈中，然后把本节点指向它的左子树，如果本节点为空则从栈中弹出栈顶付给本节点。 好的谢谢大佬的耐心解答，我换个算法试试

user: user-3
content: 加一个取地址符   &p1->data
user-0 提问: 求解c语言如何跳过多组数据输入后的缓冲区

回复:
user: user-1
content: 把问题描述的再详细一些～问题比较歧义

user: user-0
content: 引用 1 楼 自信男孩的回复:把问题描述的再详细一些～问题比较歧义 输入三个字符后，按各字符的ASCII码从小到大的顺序输出这三个字符。

user: user-0
content: 引用 2 楼 user-2的回复:把题目发出来，看一看题才好判断 输入三个字符后，按各字符的ASCII码从小到大的顺序输出这三个字符。

user: user-2
content: 把题目发出来，看一看题才好判断
user-0 提问: BITMAP中的三基色顺序？

回复:
user: user-1
content: GetPixel得到的数据是RGB排列的 GetBitmapBits得到的数据是BGR排列的  The GetBitmapBits function copies the bitmap bits of a specified device-dependent bitmap into a buffer. Note  This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the GetDIBits function.

user: user-0
content: 引用 1 楼 user-1 的回复:GetPixel得到的数据是RGB排列的 GetBitmapBits得到的数据是BGR排列的  The GetBitmapBits function copies the bitmap bits of a specified device-dependent bitmap into a buffer. Note  This function is provided only for compatibility with 16-bit versions of Windows. Applications should use the GetDIBits function. 话说GetDIBits和SetDIBits中hdc是不是鸡肋？我设置与hbitmap无关的hdc也照样获取位图数据
user-0 提问: 输出判断2000年到2050年是否为闰年

回复:
user: user-0
content: 引用 4 楼 qq_45674693的回复:[quote=引用 3 楼 自信男孩的回复:] int is_leap_year(int year) {      if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)          return 1;      return 0; }  供参考～  判断是否为闰年～ 这个是判断一个年份的，[/quote] 我后面也试试这个程序，谢谢

user: user-0
content: 引用 3 楼 自信男孩的回复: int is_leap_year(int year) {      if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)          return 1;      return 0; }  供参考～  判断是否为闰年～ 这个是判断一个年份的，

user: user-1
content: int is_leap_year(int year) {      if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)          return 1;      return 0; }  供参考～  判断是否为闰年～

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:year=year+i 2000+1=2001 2001+2=2003  噢噢噢，谢谢谢谢，真的感谢

user: user-2
content: year=year+i 2000+1=2001 2001+2=2003
user-0 提问: 为什么我这个老师负号呀我寻思算法没啥问题啊！

回复:
user: user-1
content: sum没有初始化～

user: user-2
content: 图片歪了。。。。。

user: user-3
content: 让sum=0，应该就能解决了。

user: user-3
content: 应该是sum没有赋初值，系统随机分配值给sum了

user: user-4
content: 变量赋初值，加单步调试
user-0 提问: （C语言）设计程序判断日期的有效性。用户输入日期数据（月／日／年），输出相应判断结果。求大神帮忙

回复:
user: user-1
content: int year = 2012, month = 2, date = 30; 	int mark = 1; 	if (year < 1000) { 		printf("年错误\n"); 		printf("将不再判断月份和日期"); 		mark = mark && 0; 	} 	else { 		mark = mark && 1; 	    if (month < 1 || month > 12) { 		    printf("月错误\n"); 		    printf("月错误将不判断日期\n"); 			mark = mark && 0; 		} 		else { 			mark = mark && 1; 			bool runNian = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); 			switch (month) { 			    case 1: 			    case 3: 			    case 5: 			    case 7: 			    case 8: 			    case 10: 			    case 12: { 					if (date < 1 || date >31) { 						printf("日期错误"); 						mark = mark && 0; 					} 					else { 						mark = mark && 1; 					} 					break; 			    } 				case 2:{ 					if (runNian) { 						if (date < 1 || date > 29) { 							printf("日期错误"); 							mark = mark && 0; 						} 						else { 							mark = mark && 1; 						} 					} 					else { 						if (date < 1 || date > 28) { 							printf("日期错误"); 							mark = mark && 0; 						} 						else { 							mark = mark && 1; 						} 					} 					break; 				} 				case 4: 				case 6: 				case 9: 				case 11: { 					if (date < 1 || date > 30) { 						printf("日期错误"); 						mark = mark && 0; 					} 					else { 						mark = mark && 1; 					} 					break; 				}  			} 		} 	}  	if (mark) { 		printf("年月日正确"); 	}

user: user-2
content: 闰年判断，每月的天数可以用数组保存。

user: user-2
content: if-else的运用吗？这算是。可以贴一下你写的代码。
user-0 提问: 帮忙看一下哦

回复:
user: user-1
content: 误改为勿。。。

user: user-1
content: 1、把以前的帖子结一下 2、图片麻烦摆正 3、描述一下你的问题，而不是看一下。 （而且我已经看了，你是不是该结贴呢？这是一句调侃，误当真。）
user-0 提问: 关于释放内存的疑问

回复:
user: user-1
content: 分配和释放跟类型毫无关系，就是位置（首地址）和大小

user: user-0
content: 引用 1 楼 早打大打打核战争 的回复:malloc返回的指针指向的内存块之前还有一部分多分配的内存是记录分配块信息的 恩，网上找点资料，看了一些原理 。 看到这一点了，是有一块管理信息记录了大小、可用。还有必须指向地址首部时释放

user: user-2
content: malloc返回的指针指向的内存块之前还有一部分多分配的内存是记录分配块信息的
user-0 提问: 求方程实根

回复:
user: user-1
content: 引用 1 楼 qq_45718176 的回复:刚刚发错了，是格式错误，对不起各位请无满意结帖。

user: user-0
content: 刚刚发错了，是格式错误，对不起各位
user-0 提问: printf傻瓜式输出心形

回复:
user: user-1
content: 我很无聊的。。。。  #include<string.h> #include<stdio.h>  void show_char(char* str) {     printf("  *       *\n");     printf(" ****   ****\n");     printf("*************\n");     printf("  ****%s****\n",str);     printf("    *****\n");     printf("      *\n\n"); } int main(void) {     show_char("我");     show_char("爱");     show_char("你");      return 0; }

user: user-2
content: 三个图形除了中间的字不一样，其他的都一样，可以考虑写个函数， void output(char* word) {     // 输出心形 }
user-0 提问: 程序写出来不对(第四题)

回复:
user: user-0
content: 能看出来哪里错了吗？

user: user-1
content: 直接贴代码和需求吧

user: user-0
content: 谢谢大家，我知道怎么错了。 然后我用break语句改了一遍做出来了。

user: user-2
content: 你的代码是每检查一个数是不是num或tra的约数，如果不是，就打印一对数，那问题就来了：当num=7的时候，进入for循环，div1=2，第一个if语句判断为假（7%2！=2），进入else语句，这时tra为9，div2=2，再进入if语句，判断依旧是假，然后你就打印了。。 应该是检查完所有小于num的平方根的数是不是约数才能判断它是不是素数，tra也是相同道理

user: user-3
content: 你这逻辑上有错误，你是在num不能被某个div1整除的情况下再去找一个不能被div2整除的tra,显然均未满足素数要求不能被除本身和1以外的所有数整除。这里提供一个方法，写一个函数，判断是否是素数，然后再进行遍历搜索相差为2的素数
user-0 提问: 一元多项式计算

回复:
user: user-1
content: 解方程还是列式子带入计算

user: user-1
content: 如果这样的话你就模拟一下手算的过程 给你点思路，比如 用数组存储各次幂的系数，具体怎么存随意，比如用三个数组存储式1、式2及结果 设置判断要算什么，加减乘除等，每一个分别用一个函数实现 函数里面写什么是关键，简单还是复杂与之前的存储方式也有关系，加减乘很好解决，就除法可能困难点 你先试试

user: user-1
content: 所以你的意思是多项式的计算，比如(x+1)*(x+1)=x^2+2x+1

user: user-0
content: 随便一个一元多项式的加法减法运算
user-0 提问: 代码有问题

回复:
user: user-0
content: 引用 3 楼 林多 的回复：   string->s = (char*)malloc(sizeof(char)*m);         if(NULL != string->s) {              string->max = m;             string->n = 0;             return NULL;   // 这个地方应该是不小心写错了，不该返回空         }    - 正确    string->s = (char*)malloc(sizeof(char)*m);         if(NULL != string->s) {              string->max = m;             string->n = 0;             return string;  // 返回string         }   嗯谢谢我回去试试

user: user-1
content: string->s = (char*)malloc(sizeof(char)*m);         if(NULL != string->s) {              string->max = m;             string->n = 0;             return NULL;   // 这个地方应该是不小心写错了，不该返回空         }    - 正确    string->s = (char*)malloc(sizeof(char)*m);         if(NULL != string->s) {              string->max = m;             string->n = 0;             return string;  // 返回string         }

user: user-0
content: 不对，我写好啦，不过我复制到这就变形啦

user: user-2
content: 先把代码格式和风格做好吧。自己看自己写的代码不感觉别扭吗？！
user-0 提问: 求大神解题

回复:
user: user-1
content: 去掉scanf中的'\n'

user: user-2
content: 输入和处理各加循环，输入的数据存入数组，输入结束后再统一处理

user: user-2
content: 要求是输入若干个半径，再逐行输出结果 你就只能处理一个 外面加个循环，再设定一下退出循环条件
user-0 提问: 求大佬指教圈出来的部分是什么意思？（c51单片机流水灯程序）

回复:
user: user-0
content: 引用 1 楼 user-2的回复:sbit只是一个自定义类型吧，^只是异或而已，第二个圈第一行应该是写错了吧？编译能过吗？ 是错了，不小心输了个9

user: user-0
content: 引用 2 楼 gouyanfen的回复:sbit 是位变量，单片机的扩展类型 第一个圈定义，对应变量控制的端口 第二个圈 对应的端口控制变量初始值 你好，还想问一下，为什么要定义这五个p1的端口，但是之后的程序中好像并没有用到这五个端口？还有，下边p0=~shift，但是前边的程序并没有定义p0端口，怎么确定led灯接受的就是p0端口的信号呢？

user: user-1
content: sbit 是位变量，单片机的扩展类型 第一个圈定义，对应变量控制的端口 第二个圈 对应的端口控制变量初始值

user: user-2
content: sbit只是一个自定义类型吧，^只是异或而已，第二个圈第一行应该是写错了吧？编译能过吗？
user-0 提问: 一元二次方程共轭复数i如何定义

回复:
user: user-1
content: fabs(a)<1e-10  什么意思  新手不太懂  网上说可能是a<1*10的负十次幂  但是跟这个编程有什么关联呢

user: user-0
content: 引用 1 楼 user-2的回复:不用定义，输出时显示字符'i'就是了 想输出例如3+4i，但输出了别的，能帮忙怎么改吗？

user: user-2
content: 不用定义，输出时显示字符'i'就是了
user-0 提问: 顺序表求解

回复:
user: user-0
content: 引用 2 楼 喜欢做我自己的回复:没有代码，你让人看什么？？？？？？？？？？？ 我自己解决了

user: user-0
content: 引用 2 楼 喜欢做我自己的回复:没有代码，你让人看什么？？？？？？？？？？？ 等等，我这几天有点忙，暂时传不了，不好意思

user: user-1
content: 没有代码，你让人看什么？？？？？？？？？？？

user: user-2
content: 代码呢？？？？
user-0 提问: 新手萌新求大佬帮忙

回复:
user: user-1
content: #include<stdio.h> int main(){ 	int a[5]; 	int sum=0; 	for(int i=0;i<=4;i++){ 	scanf("%d",&a[i]);	 	} 	for(int i=0;i<=4;i++){ 		if(a[i]%2==0){ 			sum+=a[i]*2; 		} 		else{ 			sum+=a[i]; 		} 	} 	printf("%d",sum); 	return 0; } 是这样吗。。。。 我不知道对不对。。。

user: user-2
content: 求和。偶数计算和时计算两次。   什么意思？ 求和：求什么的和，五个一起？ 偶数计算和时计算两次。  什么意思计算什么两次？
user-0 提问: 有没有大佬帮忙看看这代码的问题

回复:
user: user-0
content: 引用 9 楼 user-1的回复:改进一下，把代码发出来就OK啦 我想不明白的是为什么没有结果，这个代码，感觉逻辑好像没什么问题

user: user-1
content: 改进一下，把代码发出来就OK啦

user: user-0
content: 引用 7 楼 user-1 的回复:有时间限制吗？直接除以7，然后取余数另算就可以了  3 10  -------------------------------- Process exited after 8.077 seconds with return value 3221225477 请按任意键继续. . . 输出这种东西了。。我想不通为什么连一个结果都没有。。。就算超时也要有个结果吧。。。

user: user-1
content: 有时间限制吗？直接除以7，然后取余数另算就可以了

user: user-0
content: 引用 4 楼 user-1的回复:代码是大于7以后变成1，从1到7 还是超时。。。。 是不是还有什么问题， 能再帮我看一下吗，大佬

user: user-0
content: ！！！！！！！！我傻了。。。 谢谢大佬

user: user-1
content: 代码是大于7以后变成1，从1到7

user: user-0
content: 引用 1 楼 user-1的回复:数组是从0开始到6的！ 还是不懂。。。。。。

user: user-0
content: 是啊，x超过6不是会重新赋回1吗

user: user-1
content: 数组是从0开始到6的！
user-0 提问: 能不能修改此C代码使控制台两次都输出1？

回复:
user: user-0
content: 好吧，谢谢大家。

user: user-1
content: 引用 6 楼 csdn31314840 的回复:需要用到一个函数，函数的功能一致，想面向对象语言的类那样，调用成员方法。如class1.fun();class2.fun(); fun()的实现完全一致，但不是指向同一个东西。 虽然你这是发在C版的，但是从代码看，完全就是面向对象的啊！虽然你是使用的struct而不是class

user: user-0
content: 需要用到一个函数，函数的功能一致，想面向对象语言的类那样，调用成员方法。如class1.fun();class2.fun(); fun()的实现完全一致，但不是指向同一个东西。

user: user-1
content: 引用 3 楼 csdn31314840 的回复:是不改变fun()函数的前提下，让控制台两次都输出1 你还是说一下你想干什么吧

user: user-2
content: a传参数0，就是个文字游戏吧？

user: user-0
content: 是不改变fun()函数的前提下，让控制台两次都输出1

user: user-1
content: static 改成int

user: user-2
content: 不要用static不就可以了吗？
user-0 提问: C语言之冒泡法

回复:
user: user-0
content: 引用 3 楼 user-1 的回复：恭喜你啦，通过考核了

user: user-1
content: 恭喜你啦，通过考核了

user: user-0
content: 没什么问题，运行可以

user: user-1
content: 有什么问题吗？运行结果如何？
user-0 提问: 使CreateCompatibleBitmap空位图变白色的最简办法？

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:选入DC后 FillRect填充  FillRect(hdc, &rect, (HBRUSH)GetStockObject (WHITE_BRUSH)); 你这个还需要获取RECT啊，已经好几行代码了 刚刚发现最简方法也许是ExtFloodFill 就是不知道有没有更简的方法了

user: user-1
content: 选入DC后 FillRect填充  FillRect(hdc, &rect, (HBRUSH)GetStockObject (WHITE_BRUSH));
user-0 提问: 关于c语言的数据。

回复:
user: user-1
content: 字面量：5、3.14、1.2e3、'A'、"ABC" 常量：字面量、const、&a、arr（数组名）等 变量：int、double等 字面量也是有类型的，比如3.14，它是double型，由于不可修改，于是也有了常量属性 在运算的时候（判断也是运算），不同类型的变量会转成同一种类型去运算（对于变量本身没影响，可以理解为转换的是变量的拷贝）

user: user-0
content: 尤其是对于常量的表现形式区分的意义是什么呢？数据类型是因为判断变量这个盒子放不放的下这个数据，那常量的表现形式的区分意义呢？
user-0 提问: 求助

回复:
user: user-0
content: 引用 3 楼 user-1的回复:malloc，用法你的代码里面都有了 谢大佬谢大佬谢大佬

user: user-1
content: malloc，用法你的代码里面都有了

user: user-0
content: 引用 楼主 sillyss的回复:#include<stdio.h> #include<stdlib.h> #include<math.h>  #define STACK_INIT_SIZE 20 #define STACKINCREMENT 10  typedef char ElemType; typedef struct { 	ElemType *top; 	ElemType *base; 	int stackSize; }sqStack;  void initStack(sqStack *s) { 	s->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType)); 	if(!s->base) 	{ 		exit(0); 	} 	s->top=s->base; 	s->stackSize=STACK_INIT_SIZE; }  void Push(sqStack *s,ElemType e) { 	if(s->top-s->base>=s->stackSize) 	{ 		s->base=(ElemType *)realloc(s->base,(s->stackSize+STACKINCREMENT)*sizeof(ElemType)); 		if(!s->base) 		{ 			exit(0); 		} 	} 	*(s->top)=e; 	s->top++; }  void Pop(sqStack *s,ElemType *e) { 	if(s->base==s->top) 	{ 		return; 	} 	*e=*--(s->top); }  int StackLen(sqStack s) { 	return(s.top-s.base); }  int main() { 	ElemType c; 	int sum=0,len,i; 	sqStack s;  	initStack(&s); 	printf("Please input number,ending by \'#\':\n"); 	scanf("%c",&c); 	while(c!='#') 	{ 		Push(&s,c); 		scanf("%c",&c); 	}  	getchar();  	len=StackLen(s); 	printf("The length of the stack is %d:\n",len); 	for(i=0;i<len;i++) 	{ 		Pop(&s,&c); 		sum=sum+(c-48)*pow(2.0,i); 	} 	printf("The answer is %d",sum);  	return 0; }  main函数中的sqStack s   改成  sqStack *s并同时把后面的&s改成s,s改成*s,机器报错 说错了，是无法运行，没有报错

user: user-1
content: 改成指针要给他分配空间啊
user-0 提问: C语言数据结构链表实现线性表

回复:
user: user-0
content: 引用 2 楼 user-1的回复:另外建议看看课本的结构体，取个别名，你这么长写的挺累的。 嗯嗯，我会试着改变习惯的

user: user-0
content: 引用 1 楼 user-1的回复:第10行括号里面是int_linkedlist_node*的类型的，但是结构里面定义的是int_linkedlist*型的 是指哪个结构呢？我不太懂

user: user-1
content: 另外建议看看课本的结构体，取个别名，你这么长写的挺累的。

user: user-1
content: 第10行括号里面是int_linkedlist_node*的类型的，但是结构里面定义的是int_linkedlist*型的
user-0 提问: 数组难题

回复:
user: user-1
content: 全局变量只能做初始化，常量运算，不能做变量运算

user: user-2
content: 引用 楼主 weixin_45777389 的回复:求大神帮忙，数组中不能进行或运算么？，但是我把这个程序放在主函数中就不报错，能运行 这个要看你的duan的定义,如果duan是二维数组，这样是不可以的
user-0 提问: 输出故障，求解答

回复:
user: user-1
content: 学会提问：https://segmentfault.com/faq?utm_source=sf-footer

user: user-1
content: https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

user: user-2
content: 麻烦将以前的帖子结贴。

user: user-3
content: 先所图调正了
user-0 提问: 递归。。。

回复:
user: user-1
content: #include <stdio.h> #include <math.h>  double digui(double i); int main() {     printf("%lf\n",digui(3.0));   return 0; }  double digui(double i) { 	if(i <= 1.0) 	{ 		return 1.0/3.0; 	} 	else 	{		 		return (i/(2.0*i+1.0)) + digui(i-1.0); 	}  }    好用的话记得结贴
user-0 提问: 数组前一个位置的指针和数组后一个位置的指针都是合法的吗？

回复:
user: user-1
content: 建议都理解为非法就可以了。

user: user-2
content: 不能简单用合法、非法来界定这个问题。 #include <stdio.h>  int main(void) {     int a[3] = { 1,2,3 };     printf("%d\n%d", a[-1], a[3]);      return 0; } 这个程序是可以编译运行的，但是输出结果是两个垃圾值，因为a[-1]、a[3]都越界了。数组a根据指定的数组长度（元素个数）及元素的数据类型分配一段连续的内存空间，理论上，这段内存空间之前/后都会有内存空间，可能是已被分配的内存空间，也可能是未分配的，总之无法确定越界后的内存空间到底是一种什么状态，即便是已分配的内存空间，也无法确定其中存储的是什么，这种越界的访问方式是将那段越界的内存空间当前状态以数组元素数据类型“解析”出来，那其值是什么就更难说了。 因为编译时并不校验是否越界，所以，数组越界是每个程序员都要小心的问题。

user: user-3
content: 引用 7 楼 636f6c696e 的回复:数组本质是偏移，a[-100]都可以写，只是这不是你分配的地址，所以是非法使用 [quote=引用 5 楼 棉猴 的回复:] VC++6.0里面是可以的，定义数组 int a[2] = {1, 2}; 可以得到a[2]和a[-1]的地址  VS2015里面也是可以的[/quote] 那个是监视，相当于读取一个内存位置上的数据，除非是系统保护下的。当然可以， 比如代码改为 a[-1]=10;运行试试？

user: user-4
content: 数组本质是偏移，a[-100]都可以写，只是这不是你分配的地址，所以是非法使用 引用 5 楼 棉猴 的回复:VC++6.0里面是可以的，定义数组 int a[2] = {1, 2}; 可以得到a[2]和a[-1]的地址  VS2015里面也是可以的

user: user-3
content: 就好比电影院的作为，卖个你的票是4排3号，如果4排4号没人你也可以坐，但是不合法。 vc6等老式的编译器因为缺乏检查，所以不一定出错。新式的编译器基本会报错。

user: user-5
content: VC++6.0里面是可以的，定义数组 int a[2] = {1, 2}; 可以得到a[2]和a[-1]的地址  VS2015里面也是可以的

user: user-4
content: 都是非法，a[3]只能用0~2，其他都是非法

user: user-6
content: 数组最后一个元素之后的一个元素的指针 是合法的 前一个位置的指针是越界

user: user-0
content: 为什么看不到

user: user-7
content: 可以这样用，但得看这里的空间有没有经过申请。 比如你数组和变量一起申请，经查看地址，发现变量确实位于数组的前后，那么这么做就没问题，访问的就是数组前后的变量 再比如说二维数组，你对中间的一个数组这样做是可以的，访问到的是前一个数组和后一个数组的数据

user: user-4
content: 不论读写都是问题，越界读也是非法 引用 8 楼 真相重于对错 的回复:[quote=引用 7 楼 636f6c696e 的回复:] 数组本质是偏移，a[-100]都可以写，只是这不是你分配的地址，所以是非法使用 [quote=引用 5 楼 棉猴 的回复:] VC++6.0里面是可以的，定义数组 int a[2] = {1, 2}; 可以得到a[2]和a[-1]的地址  VS2015里面也是可以的[/quote] 那个是监视，相当于读取一个内存位置上的数据，除非是系统保护下的。当然可以， 比如代码改为 a[-1]=10;运行试试？[/quote]

user: user-0
content: 有人知道吗？
user-0 提问: 求助鸡兔同笼。。

回复:
user: user-0
content: 引用 7 楼 wowpH的回复:[quote=引用 6 楼 與蘤舊縐 的回复:] a头，b腿，x兔，y鸡 x=b/2-a； y=a-x;还是你这个清楚，楼主写的把我绕晕了。。。。。[/quote] 还真是输入错了   感谢各位大佬

user: user-1
content: 引用 6 楼 與蘤舊縐 的回复:a头，b腿，x兔，y鸡 x=b/2-a； y=a-x;还是你这个清楚，楼主写的把我绕晕了。。。。。

user: user-2
content: a头，b腿，x兔，y鸡 x=b/2-a； y=a-x;

user: user-1
content: 式子没错的。可能输入错了。  a头 b脚 x兔 y鸡

user: user-3
content: 输入，检验输入值，运算，输出，这几个都要检查一下

user: user-2
content: int  main return 0 你的scanf中间用的,输入时需要用逗号隔开

user: user-3
content: x是兔，y是鸡，是不是对调了？
user-0 提问: 这个问题出现在哪里

回复:
user: user-1
content: 你的输出是a[10],而不是a[i],a[10]对于数组来讲显然是越界了，但是C不检查越界问题，而a[10]正好就是变量i的地址，你的循环中不断的改变I的值，那么a[10]就是i就跟着改变了。

user: user-1
content: 引用 4 楼 weixin_45761167 的回复:不是很明白，能解释清楚一点吗  你了解下变量内存分配的问题，就知道了。

user: user-2
content: 专门找了VC++6.0调试，  从上图可以看到，a[10]的地址与i的地址相同，都是0x0019ff3c，所以， printf(" %d", a[10]); 实际上a[10]就是i。主要原因是，a[9]的地址是0x0019ff38，而a[10]的地址可以看成是a[9]的地址加上4（int的大小），正好是0x0019ff3c。在VC++6.0中，数组a与变量i的地址是紧挨着的，如下图所示。  在VS2015中调试，你的程序输出的就是十个不确定的值了，因为在VS2015中，数组a与变量i的地址是分开的，a[10]的地址与i的地址不相同。 说来说去，还是因为数组中有10个元素，但是不存在a[10]。

user: user-3
content: 这个程序的运行结果一般应该不是楼主图片所示，应该是输出10个垃圾值，原因如1楼所述。如果楼主重编译运行后的运行结果仍是这样，最大可能是恰巧变量i的内存空间在数组a的后面，但我感觉就这个程序来讲，这种概率很低。 数组的下标是从0开始的，所有程序中数组a的下标只是0到9。

user: user-0
content: 不是很明白，能解释清楚一点吗

user: user-4
content: 引用 1 楼 user-6 的回复:因为a[10]越界了，刚好就是占用了i的位置，请楼主好好写程序！

user: user-5
content: 引用 1 楼 user-6 的回复：因为a[10]越界了，刚好就是占用了i的位置，请楼主好好写程序！

user: user-6
content: 因为a[10]越界了，刚好就是占用了i的位置，请楼主好好写程序！
user-0 提问: c语言菜鸟求教

回复:
user: user-1
content: x+1相当于从第一个元素开始的数组，所以里面有i1-1。一般是一定要这么写，直接传x进去就好了，然后i1也不要-1

user: user-2
content: 首先，这玩意为什么要规定i1>1，x[0]完全废掉，但是之前却给x[0]赋了值，令人费解 x作为数组的名字，其实是指向数组第一个元素的指针，x+1就是指把指针后移一格，也就是你的函数中接收到的x数组，其实是原先x数组去掉第一个元素的剩余部分，你可以看到这个for循环中i1-1，就是为了对应元素的位置 无法理解这种操作，多此一举还浪费空间
user-0 提问: 求大神指教---字母翻转---萌新不会

回复:
user: user-1
content: ~~一个二维数组存储字符串 一个用于暂存字符的数组 一个用于存储结果的二维数组 逻辑很简单，没有骚操作 以二维数组的一行为例，把第一个字符放入暂存数组，判断第二个字符是否与第一个字符连续，若为连续字母，把第二个字符放入暂存数组，再判断后面的，直到不连续，把暂存数组中的字符以倒序的形式放进结果数组中，清空暂存数组，若字符串仍未结束，则继续把下一个字符放入暂存数组，重复上述操作 思路很简单，可以优化的地方有很多，但你还是先解决问题再优化吧

user: user-2
content: 怎么指点？把代码写好了给你吗？等一下看看，可能会有人来的
user-0 提问: 成绩百分制转五分制

回复:
user: user-1
content: 一定要用switch，只能呵呵了，套十层，第一层除以十亿，第二层除以一亿……一直到最里面判断六七八九十。这么写不是傻逼吗？谁出的傻逼题目？

user: user-0
content: 引用 7 楼 user-2的回复:[quote=引用 6 楼 user-2 的回复:] [quote=引用 4 楼 user-2 的回复:] case 10:  那行改成 default:if (score==100) printf("A\n") else printf("error\n"); 另外10永远不可能取得 少了一个分号，晕[/quote] 还是不对，还得在前面加上判断输入是否合法的代码[/quote] 要用switch解决

user: user-0
content: 😁😁😁要用switch解决哈

user: user-2
content: 引用 6 楼 user-2 的回复:[quote=引用 4 楼 user-2 的回复:] case 10:  那行改成 default:if (score==100) printf("A\n") else printf("error\n"); 另外10永远不可能取得 少了一个分号，晕[/quote] 还是不对，还得在前面加上判断输入是否合法的代码

user: user-2
content: 引用 4 楼 user-2 的回复:case 10:  那行改成 default:if (score==100) printf("A\n") else printf("error\n"); 另外10永远不可能取得 少了一个分号，晕

user: user-0
content: 这个得用switch解决，help

user: user-2
content: case 10:  那行改成 default:if (score==100) printf("A\n") else printf("error\n"); 另外10永远不可能取得

user: user-0
content: 引用 2 楼 SuperDay的回复:不就是个if的事情吗？ 还请大神说详细些，刚学不懂哈，谢谢😜

user: user-1
content: 不就是个if的事情吗？

user: user-0
content: 输入-99不出结果
user-0 提问: printf傻瓜式输出心形

回复:
user: user-1
content: 好玩

user: user-2
content: 的确挺傻的，连\n可以放到一行里输出都不知道

user: user-3
content: 发了两次。。我也是这么的无聊  #include<stdio.h>  void show_char(char* str) {     printf("  *       *\n");     printf(" ****   ****\n");     printf("*************\n");     printf("  ****%s****\n",str);     printf("    *****\n");     printf("      *\n\n"); } int main(void) {     show_char("我");     show_char("爱");     show_char("你");      return 0; }
user-0 提问: ATMEGA64A的F端口如何绑定

回复:
user: user-0
content: 引用 2 楼 user-1 的回复:这个怕是搞过的人不多吧 大佬不会吗？

user: user-1
content: 这个怕是搞过的人不多吧

user: user-0
content: 需要将F端口改为输出端口，让它绑定LED灯和蜂鸣器，  #define LED_GREEN     PORTA.0 = 1 #define LED_RED       PORTA.1 = 1 //#define LED_YELLOW    { PORTA.1 = 0; PORTA.2 = 0; } #define LED_OFF       { PORTA.0 = 1; PORTA.1 = 1; }  #define BEE_ON        PORTA.2 = 1 #define BEE_OFF       PORTA.2 = 0
user-0 提问: 数学符号用C语音如何表示

回复:
user: user-1
content: 趋近于0可以试试取浮点型的最小值，比如1e-300

user: user-2
content: 楼主应该云看看公式编辑器什么的

user: user-3
content: 引用 8 楼 Excellent? 的回复:[quote=引用 7 楼 wowpH的回复:][quote=引用 6 楼 Excellent? 的回复:] [quote=引用 1 楼 user-5的回复:]π可以 define PI 3.14159 那limx趋近于零或者无穷大呢？[/quote]趋于0，那不就是0吗？无穷大应该无法表示。但是每种数据类型都有极限值。[/quote] 1/x，安零计算的话就不成立了[/quote]那我就不知道了，我觉得不可能。

user: user-0
content: 引用 7 楼 wowpH的回复:[quote=引用 6 楼 Excellent? 的回复:] [quote=引用 1 楼 user-5的回复:]π可以 define PI 3.14159 那limx趋近于零或者无穷大呢？[/quote]趋于0，那不就是0吗？无穷大应该无法表示。但是每种数据类型都有极限值。[/quote] 1/x，安零计算的话就不成立了

user: user-0
content: 引用 7 楼 wowpH的回复:[quote=引用 6 楼 Excellent? 的回复:] [quote=引用 1 楼 user-5的回复:]π可以 define PI 3.14159 那limx趋近于零或者无穷大呢？[/quote]趋于0，那不就是0吗？无穷大应该无法表示。但是每种数据类型都有极限值。[/quote] 1/x，安零计算的话就不成立了

user: user-3
content: 引用 6 楼 Excellent? 的回复:[quote=引用 1 楼 user-5的回复:]π可以 define PI 3.14159 那limx趋近于零或者无穷大呢？[/quote]趋于0，那不就是0吗？无穷大应该无法表示。但是每种数据类型都有极限值。

user: user-0
content: 引用 1 楼 user-5的回复:π可以 define PI 3.14159 那limx趋近于零或者无穷大呢？

user: user-4
content: 居然说我灌水，真是没脑。楼主，你这个问题是想通过C来展现极限公式吗？

user: user-5
content: π可以 define PI 3.14159
user-0 提问: 新人发帖须知！！！（发帖前请看）

回复:
user: user-1
content: https://bbs.csdn.net/topics/394816569  这个链接问的无法回答。~~!

user: user-1
content: 回了N个帖子，问题解决了没人结贴。不结贴这个是需求问题，就像淘宝一样，到时间自动收货，这个得CSDN的产品经理自己好好反省反省。 别个问问题的目的是解决问题，而不是结贴，你买东西拿到手是目的，主动收货不是你逛淘宝的目的。

user: user-1
content: 引用 1 楼 user-5 的回复:[quote=引用 楼主 fireyou 的回复:] 1. 遇到问题，先百度 2. 尽量不要贴图片 3.代码要排版 4. 自己要动手尝试编写，才能知道错在那里，问问题也能更有针对性 5.问题解决了要及时结贴！！！  其它请楼下补充！就算发图片也不要使用照相的方式，可以抓图，照相的完全没法看，有的还需要脖子转动90或180度[/quote]  能治好你的颈椎病

user: user-0
content: 没啥人，没啥意思，下午五点结贴

user: user-2
content: 我来回一个： 1、发图不要发那种90度旋转的，看着脖子疼，没有想看的欲望； 2、发帖问题解决了一定要结贴，上百个回帖，结贴的就几个，问题老早就解决了，楼主人没回信了，回帖的价值都低了，不想去回的 3、问问题，如果是程序的问题，麻烦提供下源代码和错误提示 4、关于代码，不要贴图片，你只贴张图很轻松，别人想运行看下要打半天，没有想看的欲望的 5、关于代码格式，能不能好好的按程序的格式来粘贴，我记得我看一个帖子，代码全挤一起，赋值出来，光格式就得调几分钟 6、关于问题，最好详细点，抛个图片，或者一句话，其它什么都没有，别人知道你想干嘛吗？   楼下的给我顶上去

user: user-0
content: 最近回了几十个帖子，只有一个结贴的。。。

user: user-0
content: 贴图片又模糊，又是旋转的，自己发了没看一眼吗，还有90%的人都不结贴，没辙。

user: user-3
content: 举双手赞同 90度我忍了 180是要我倒立看吗

user: user-4
content: 这个帖子需要版主来个置顶。。。

user: user-5
content: 引用 楼主 fireyou 的回复:1. 遇到问题，先百度 2. 尽量不要贴图片 3.代码要排版 4. 自己要动手尝试编写，才能知道错在那里，问问题也能更有针对性 5.问题解决了要及时结贴！！！  其它请楼下补充！就算发图片也不要使用照相的方式，可以抓图，照相的完全没法看，有的还需要脖子转动90或180度
user-0 提问: 逐个输出Hello,world，Sleep（500）

回复:
user: user-1
content: 引用 2 楼 OYJJO 的回复:[quote=引用 1 楼 N_n_n_n_n_N的回复:]数组元素从0开始 i=1改成i=0 <=11改成<11试试 好像可以了，为啥啊？不能直接改a[12]然后下面i<=12吗[/quote] 想逐个输出你可以用scanf输入更方便一些 getchar会接受空格和回车

user: user-1
content: 引用 2 楼 OYJJO 的回复:[quote=引用 1 楼 N_n_n_n_n_N的回复:]数组元素从0开始 i=1改成i=0 <=11改成<11试试 好像可以了，为啥啊？不能直接改a[12]然后下面i<=12吗[/quote] 数组元素从0开始到元素个数-1结束 你a[12]的数组相当于元素存在a[0]~a[11]中 不是你说想改就可以改的 具体的可以看书查百度看看数组相关的内容

user: user-2
content: 引用 2 楼 OYJJO 的回复:[quote=引用 1 楼 N_n_n_n_n_N的回复:]数组元素从0开始 i=1改成i=0 <=11改成<11试试 好像可以了，为啥啊？不能直接改a[12]然后下面i<=12吗[/quote] 数组越界了

user: user-2
content: a[i]=getchar(); printf("%c",a[i]); 最大问题是这两句，推断本意是输入一个字符就输出一个，实际上却实现不了这个功能！需要按回车

user: user-0
content: 引用 1 楼 N_n_n_n_n_N的回复:数组元素从0开始 i=1改成i=0 <=11改成<11试试 好像可以了，为啥啊？不能直接改a[12]然后下面i<=12吗

user: user-1
content: 数组元素从0开始 i=1改成i=0 <=11改成<11试试
user-0 提问: Ennn我也来问一下PAT乙级 1002题，测试点5（附加：送分）

回复:
user: user-0
content: 引用 6 楼 SuperDay 的回复:你可以搞定的啊！我的天，我真是沙雕了。5楼第一张图片是因为它是八进制的12转成10进制就是10。。。。

user: user-0
content: 引用 6 楼 SuperDay 的回复:你可以搞定的啊！没有，虽然发现了奇怪的地方，但是这个不太可能出现。。。还是无法解决我的疑惑。

user: user-1
content: 你可以搞定的啊！

user: user-0
content: 引用 3 楼 SuperDay 的回复:最后需要换行吗？还有，如果前面出现0怎么处理呢？ 不会换行，下面AC的代码也没换行。代码我没动。  惊呆我了。前面有0的话，值居然会改变。  一个0的话没事。  但是按照我的写法，前面根本不可能出现0啊。

user: user-1
content: 最后需要换行吗？还有，如果前面出现0怎么处理呢？

user: user-0
content: 补充：这是我的提交结果。

user: user-2
content: 一个循环就搞定了吧
user-0 提问: 求助c语言大佬

回复:
user: user-1
content: 想到一个更好的点子——全屏展示  #include "windows.h" #include "stdio.h" #define PIC "E:\\中指.bmp"		//在此修改路径，必须是bmp图片  int main( void )  {  	HDC hdc = GetDC( NULL ); 	HDC mdc= CreateCompatibleDC( hdc ); 	HBITMAP hbitmap = LoadImage( NULL , PIC , 0,0,0,LR_LOADFROMFILE  ); 	SelectObject( mdc , hbitmap );  	BITMAP bitmap; 	GetObject( hbitmap , sizeof(BITMAP), &bitmap ); 	int cx = bitmap.bmWidth; 	int cy = bitmap.bmHeight; 	int w = GetSystemMetrics(0); 	int h = GetSystemMetrics(1); 	StretchBlt(hdc , 0,0,w,h,mdc,0,0,cx,cy,SRCCOPY); 	DeleteDC( mdc ); 	ReleaseDC( NULL, hdc ); 	getchar(); }   实测可行，效果就不截图了，就是放大到全屏，如果希望效果一直持续，可以将StretchBlt那一行延时循环，不过这样做有点缺德

user: user-2
content: 引用 4 楼 六道佩恩 的回复: #include "windows.h" #include "stdio.h" #define PIC "E:\\中指.bmp"		//在此修改路径，必须是bmp图片  int main( void )  {  	HWND h = GetConsoleWindow(); 	SetWindowText( h , "中指" ); 	//设置标题  	HDC hdc = GetDC( h ); 	HDC mdc= CreateCompatibleDC( hdc ); 	HBITMAP hbitmap = LoadImage( NULL , PIC , 0,0,0,LR_LOADFROMFILE  ); 	SelectObject( mdc , hbitmap );  	BITMAP bitmap; 	GetObject( hbitmap , sizeof(BITMAP), &bitmap ); 	int cx = bitmap.bmWidth; 	int cy = bitmap.bmHeight; 	BitBlt( hdc,0,0,cx,cy,mdc,0,0,SRCCOPY ); 	DeleteDC( mdc ); 	ReleaseDC( h , hdc ); 	getchar(); }   需要链接libgdi32.a或者gdi32.lib 这也许是最简的C绘图代码了，你修改第三行的图片路径即可，图片转bmp可以用windows自带的画图工具 如果需要隐藏光标另说 效果如下

user: user-1
content: #include "windows.h" #include "stdio.h" #define PIC "E:\\中指.bmp"		//在此修改路径，必须是bmp图片  int main( void )  {  	HWND h = GetConsoleWindow(); 	SetWindowText( h , "中指" ); 	//设置标题  	HDC hdc = GetDC( h ); 	HDC mdc= CreateCompatibleDC( hdc ); 	HBITMAP hbitmap = LoadImage( NULL , PIC , 0,0,0,LR_LOADFROMFILE  ); 	SelectObject( mdc , hbitmap );  	BITMAP bitmap; 	GetObject( hbitmap , sizeof(BITMAP), &bitmap ); 	int cx = bitmap.bmWidth; 	int cy = bitmap.bmHeight; 	BitBlt( hdc,0,0,cx,cy,mdc,0,0,SRCCOPY ); 	DeleteDC( mdc ); 	ReleaseDC( h , hdc ); 	getchar(); }   需要链接libgdi32.a或者gdi32.lib 这也许是最简的C绘图代码了，你修改第三行的图片路径即可，图片转bmp可以用windows自带的画图工具 如果需要隐藏光标另说 效果如下

user: user-3
content: 你百度一张图片。 百度C语言如何显示图片，应该都有现成的代码。

user: user-0
content: 引用 1 楼 user-3的回复:显示一张竖中指的图片，哈哈 就是那种竖中指的模样 可有源代码

user: user-3
content: 显示一张竖中指的图片，哈哈
user-0 提问: 大佬来看看，萌新求解

回复:
user: user-1
content: 输入什么，得到什么，输出什么，这三个环节都一一核对过去，就完事了啊

user: user-0
content: 大佬还是没有答案呀，不知道什么状况

user: user-0
content: 大佬还是没用，输入后没答案

user: user-0
content: 大佬还是没有用，输入以后不出答案

user: user-2
content: 引用 4 楼 高尚老薛头 的回复:[quote=引用 3 楼 user-2的回复:]90 93 97是整型数别加单引号 谢谢大佬，大佬再看看有什么问题[/quote]  你用测试例子跑一下就知道了 有问题再提出来就好

user: user-0
content: 引用 3 楼 user-2的回复:90 93 97是整型数别加单引号 谢谢大佬，大佬再看看有什么问题

user: user-2
content: 90 93 97是整型数别加单引号

user: user-0
content: 引用 1 楼 SuperDay的回复:可以嵌套，但是'90'是什么鬼啊？九十吗？不要加引号 对对对！谢谢大佬，你再看看有什么问题吗？

user: user-1
content: 可以嵌套，但是'90'是什么鬼啊？九十吗？不要加引号
user-0 提问: 求帮助

回复:
user: user-0
content: 引用 13 楼 user-1 的回复:mega64a.h里面有完整定义 谢谢啊，可以了

user: user-1
content: mega64a.h里面有完整定义

user: user-0
content: 引用 11 楼 user-1 的回复:那你看一下PORTA那些是怎么定义的，打开那个h文件找找 #define BEE_ON        PORTA.2 = 1 #define BEE_OFF       PORTA.2 = 0 这样定义的，这是我没改之前的

user: user-1
content: 那你看一下PORTA那些是怎么定义的，打开那个h文件找找

user: user-0
content: 引用 7 楼 user-1 的回复:[quote=引用 6 楼 小生i的回复:][quote=引用 5 楼 user-1 的回复:] 你这个点号是误敲进去的吗？ 这是绑定芯片上的PF0脚 [/quote] 这样语法不对的，需要调整一下写法[/quote] 我是用CVAVR的

user: user-0
content: 引用 7 楼 user-1 的回复:[quote=引用 6 楼 小生i的回复:][quote=引用 5 楼 user-1 的回复:] 你这个点号是误敲进去的吗？ 这是绑定芯片上的PF0脚 [/quote] 这样语法不对的，需要调整一下写法[/quote] 问题是我改成ABCDE的端口都可以，唯独F不行

user: user-0

user: user-1
content: 引用 6 楼 小生i的回复:[quote=引用 5 楼 user-1 的回复:] 你这个点号是误敲进去的吗？ 这是绑定芯片上的PF0脚 [/quote] 这样语法不对的，需要调整一下写法

user: user-0
content: 引用 5 楼 user-1 的回复:你这个点号是误敲进去的吗？ 这是绑定芯片上的PF0脚

user: user-1
content: 你这个点号是误敲进去的吗？

user: user-1
content: PORTF.0是啥意思？

user: user-0
content: 引用 1 楼 user-1 的回复:楼主不给出代码怎么解决呢？ 代码给出来了

user: user-0
content: #include <mega64a.h>  #define LED_GREEN     {PORTF.0 = 1;PORTF.1 = 0;} #define LED_RED       {PORTF.0 = 0;PORTF.1 = 1;} #define LED_OFF       { PORTF.0 = 0; PORTF.1 = 0; }  #define BEE_ON        PORTF.2 = 1 #define BEE_OFF       PORTF.2 = 0   // Input/Output Ports initialization   // Port A initialization   // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=Out Bit1=Out Bit0=Out   DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (1<<DDA1) | (1<<DDA0);   // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=0 Bit2=1 Bit1=1 Bit0=1   PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (1<<PORTA1) | (1<<PORTA0);   // Port F initialization   // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In   DDRF=(0<<DDF7) | (0<<DDF6) | (0<<DDF5) | (0<<DDF4) | (0<<DDF3) | (1<<DDF2) | (1<<DDF1) | (1<<DDF0);   // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T   PORTF=(0<<PORTF7) | (0<<PORTF6) | (0<<PORTF5) | (0<<PORTF4) | (0<<PORTF3) | (0<<PORTF2) | (0<<PORTF1) | (0<<PORTF0);

user: user-1
content: 楼主不给出代码怎么解决呢？
user-0 提问: 求助！

回复:
user: user-1
content: 学习编程不是写作业，而是编程，现在的老师真的太不尽责了，天天出些奇葩题目，以难倒学生为乐事

user: user-2
content: 多敲多练～学习编程还是不难的，网络上大把资料

user: user-3
content: 大学学习的时候好好学学，如果要吃这碗饭，就要用心，用精力，用时间～
user-0 提问: c语言简单实现人人对战井字棋

回复:
user: user-0
content: 引用 1 楼 自信男孩的回复:建议把代码工整的贴出来，这样才方便看和查找问题~ aha已经没问题啦，新人就想着存一下hhh

user: user-1
content: 建议把代码工整的贴出来，这样才方便看和查找问题~
user-0 提问: 急求一个小程序，排序问题的

回复:
user: user-1
content: CSDN论坛新手指南

user: user-1
content: 自定义排序函数compare 排序使用库函数qsort

user: user-1
content: 可参考：https://blog.csdn.net/pfdvnah/article/details/90239385

user: user-2
content: 最好就说清楚点吧
user-0 提问: 求一个算法

回复:
user: user-1
content: 这个就是组合数学的抽屉问题，相当于n个相同物品（0）放到m个抽屉（数字间的位置），总共方案就是C(n+m-1, n)种 先求n的位数，然后对基本型4 13 22 31 112 121 211 1111分别求需要补0的数量，然后对每个基本型求方案，比如n是5位数，对基本型4，有C(4+1-1, 4)=1种方案，对于13型补3个0则有C(3+2-1, 3)=4种方案，依此类推

user: user-2
content: 引用 15 楼 fireyou 的回复:按楼上的，写个正则表达式，把每个数字中的0去掉，与正则表达式比较。 这样是不是快点。 应该快不了！因为14楼和我的方法，需要处理的数据比从4到n-1少太多了

user: user-3
content: 按楼上的，写个正则表达式，把每个数字中的0去掉，与正则表达式比较。 这样是不是快点。

user: user-1
content: 基本型只有4 13 22 31 112 121 211 1111这几种，其他都是在数字间插入若干0获得的

user: user-3
content: 验证是很快的，就看输出 光验证，一秒应该就能验证10亿个数字吧。

user: user-2
content: 引用 10 楼 qq_45675114 的回复:[quote=引用 9 楼 fireyou的回复:]是啊，所以让楼主参考，自己修改一下，不难，自己动手。。不能要人写完整代码吧。 [quote=引用 8 楼 liups 的回复:] [quote=引用 6 楼 fireyou 的回复:] 参考这个，自己改一下 https://blog.csdn.net/weixin_42726779/article/details/81096394 可以把检查各位数之和是否为4写成一个函数，而且不能照搬这里，只要当前和大于4就可以返回了[/quote][/quote] 可是这样时间也太长了啊，几十亿个数字每个都进行验证那得多久[/quote] 那就用2楼思路。再给你细化一下： 1、n为1位，只有4一种，且后面0为0个。 2、n为2位，有4，3、1，2、2，注意4后面有1个0，其他0个0。 3、n为3位，有4，3、1，2、2，2、1、1几种，后面0自己搞。 4、n为4位，有4，3、1，2、2，2、1、1，1、1、1、1几种，后面0自己想。 然后排列组合时有些要注意的：比如0不能在首位，如何不重复，如何保证从小到在（这个可以和不重复结合起来）

user: user-0
content: 引用 9 楼 fireyou的回复:是啊，所以让楼主参考，自己修改一下，不难，自己动手。。不能要人写完整代码吧。 [quote=引用 8 楼 liups 的回复:] [quote=引用 6 楼 fireyou 的回复:] 参考这个，自己改一下 https://blog.csdn.net/weixin_42726779/article/details/81096394 可以把检查各位数之和是否为4写成一个函数，而且不能照搬这里，只要当前和大于4就可以返回了[/quote][/quote] 可是这样时间也太长了啊，几十亿个数字每个都进行验证那得多久

user: user-3
content: 是啊，所以让楼主参考，自己修改一下，不难，自己动手。。不能要人写完整代码吧。 引用 8 楼 liups 的回复:[quote=引用 6 楼 fireyou 的回复:] 参考这个，自己改一下 https://blog.csdn.net/weixin_42726779/article/details/81096394 可以把检查各位数之和是否为4写成一个函数，而且不能照搬这里，只要当前和大于4就可以返回了[/quote]

user: user-2
content: 引用 6 楼 fireyou 的回复:参考这个，自己改一下 https://blog.csdn.net/weixin_42726779/article/details/81096394 可以把检查各位数之和是否为4写成一个函数，而且不能照搬这里，只要当前和大于4就可以返回了

user: user-0
content: 引用 4 楼 user-4的回复:[quote=引用 3 楼 qq_45675114的回复:][quote=引用 1 楼 liups的回复:]简单，循环一下，从4到n-1，对于每一个检查各位数之和是否为4就OK了 n会非常大，几十亿甚至更高[/quote] 那么多的数字如何输出呢？数量巨大[/quote] 需要输出的数不多，因为还有第二次筛选，

user: user-3
content: 参考这个，自己改一下 https://blog.csdn.net/weixin_42726779/article/details/81096394

user: user-2
content: 引用 3 楼 qq_45675114 的回复:[quote=引用 1 楼 liups的回复:]简单，循环一下，从4到n-1，对于每一个检查各位数之和是否为4就OK了 n会非常大，几十亿甚至更高[/quote] long够吗？不够就long long!

user: user-4
content: 引用 3 楼 qq_45675114的回复:[quote=引用 1 楼 liups的回复:]简单，循环一下，从4到n-1，对于每一个检查各位数之和是否为4就OK了 n会非常大，几十亿甚至更高[/quote] 那么多的数字如何输出呢？数量巨大

user: user-0
content: 引用 1 楼 liups的回复:简单，循环一下，从4到n-1，对于每一个检查各位数之和是否为4就OK了 n会非常大，几十亿甚至更高

user: user-2
content: 另一个方法（可能要难一点），先算n是几位数，然后考虑4能分解成哪几种自然数及0的和，然后排列组合一下（进阶方案需要考虑排序及重复的情况，所以难度大些）

user: user-2
content: 简单，循环一下，从4到n-1，对于每一个检查各位数之和是否为4就OK了
user-0 提问: 求大神教教我

回复:
user: user-1
content: i=j/k，不管j是7还是9，都等于1

user: user-0
content: 引用 7 楼 user-1的回复:那就没办法了，这些写书的，这些教书的，邪恶控制世界。 我认为，只要有一种大家都能看得懂的编程方式就足够了。玩花样不算本事，那些大师们也不玩花样 哈哈哈哈，有道理，该学的还是要跟着学

user: user-1
content: 那就没办法了，这些写书的，这些教书的，邪恶控制世界。 我认为，只要有一种大家都能看得懂的编程方式就足够了。玩花样不算本事，那些大师们也不玩花样

user: user-0
content: 还有这种事，我刚开始上C语言，目前上了3大节大课和3大节机房课，现在进度学基础知识到了循环结构程序设计(还在努力理解学习中)，目前书上的例子啥的都是这种合适（我也觉得有点绕）

user: user-1
content: 举这样的例子真的很无语啊，C语言有一些弊端，当初设计者一开始比较随意，所以这个语言是有缺陷的。然后很多人喜欢捧臭脚，拿着这些缺陷折腾学生。就你这个表达式而言，存在操作顺序影响最后结果的问题，这样的例子真不科学。学编程的人，需要搞清楚那么多的情况吗？只要懂得如何好好的写程序就够了，这些东西就是糟粕

user: user-0
content: 这是书上的一个例题（逗号表达式应用事例），结果我看别的地方有点没看懂

user: user-1
content: 引用 2 楼 qq_45773996 的回复:[quote=引用 1 楼 user-1的回复:]i=j/k，不管j是7还是9，都等于1 谢谢你，我懂了，之前书上没看仔细。[/quote]、  没事，又是作业题吗？ 说实话，i=(j=j+2,j/k) ; 到底是先j=j+2，还是先j/k，这个真让人琢磨不透啊，总是出这种题目真让人无语，明明就是两句话，非要并成一句话来说，真有必要吗？ i = j / k; j += 2; 这样写清晰简单明白，写程序不是做题目，学编程不是为了考试

user: user-0
content: 引用 1 楼 user-1的回复:i=j/k，不管j是7还是9，都等于1 谢谢你，我懂了，之前书上没看仔细。
user-0 提问: 简单的四舍五入实现求解

回复:
user: user-1
content: 引用 4 楼 ！.！ 的回复:[quote=引用 3 楼 user-1的回复:]输入x=0.005 ×100后等于0.500000 ＋0.5后等于1.000000 转成int后等于1 因此m=1 ÷100.0后等于0.01000 于是就进位了。 小于的话第三行就不会进1，结果就是0.000000 嗯，理解了[/quote]理解了，就麻烦结贴，谢谢。

user: user-0
content: 引用 3 楼 user-1的回复:输入x=0.005 ×100后等于0.500000 ＋0.5后等于1.000000 转成int后等于1 因此m=1 ÷100.0后等于0.01000 于是就进位了。 小于的话第三行就不会进1，结果就是0.000000 嗯，理解了

user: user-1
content: 输入x=0.005 ×100后等于0.500000 ＋0.5后等于1.000000 转成int后等于1 因此m=1 ÷100.0后等于0.01000 于是就进位了。 小于的话第三行就不会进1，结果就是0.000000

user: user-0
content: 原谅我抢了沙发

user: user-0
content: 就是，为什么        m = x * 100+0.5;        x = m / 100.0; 这两行可以实现所述的功能，是怎么实现的？
user-0 提问: 题目   编写算法，实现带头结点单链表的逆置算法    链表创建成功，但是不能遍历  大神帮帮忙看下什么问题

回复:
user: user-1
content: 你的代码变量太乱了，我稍微修改了下  你可以看看和你的代码有哪儿不同  就知道你错哪儿了。  #include<stdio.h> #include<malloc.h> #include<stdlib.h>  typedef int ElementType;  typedef struct Node { ElementType data; struct Node *next; }Node,*Stu;  Stu CreateList(Stu List) { int len; int val; List->next = NULL;  printf("请输入节点个数:"); scanf("%d",&len); int i; for( i=0;i<len;i++) { Stu New=(Stu)malloc(sizeof(Node)); if(New==NULL) { printf("分配新节点失败\n"); exit(-1); } printf("请输入第%d个节点的数据:",i+1); scanf("%d",&val);     New->data = val;     New->next = List->next;     List->next = New; } printf("创建链表成功\n"); return List; }  Stu Fuu(Stu a); void stamp(Stu r);  int main() {  Stu List=CreateList(List); List = Fuu(List); stamp(List); return 0; }  Stu Fuu(Stu head) {     Stu p1,p2;     p1 = head->next;     while(p1->next){  //从head之后第二个点开始，如果只有一个点，没有必要反转  head点没有数据         p2 = p1->next;         p1->next = p2->next;         p2->next = head->next;         head->next = p2;     } printf("链表逆序完毕\n"); return head; }  void stamp(Stu List) { Stu s=List->next; printf("链表的数据是："); while(s!=NULL) { printf("%d",s->data); s=s->next; } }