Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 这个是怎么回事？

回复:
user: user-0
content: 引用 12 楼 自信男孩 的回复：ch建议定义为int类型，而不是char 类型，因为EOF是int类型～好的，一会儿试试

user: user-1
content: ch建议定义为int类型，而不是char 类型，因为EOF是int类型～

user: user-0
content: 引用 3 楼 user-2 的回复：这个是一边写一边读可能会有影响写和读不是共用一个位置指针吗

user: user-0
content: 引用 9 楼 wowpH 的回复：引用 8 楼 马振宇 的回复:引用 5 楼 wowpH 的回复：你的第20行在第二个参数减1？那不是①读一个字符，②指针向前移动一位，③写入一个字符，④有把刚才写的字符读出来。。。。循环。这永远结束不了吧。只是在没有第22行时才进入死循环，可是第22行是地位到当前位置啊，并没有改变指针的指向，起了什么作用有点道理，可不可以贴一下代码，我也试试。按照图片敲一下吧，没有多少字

user: user-0
content: 引用 5 楼 wowpH 的回复：你的第20行在第二个参数减1？那不是①读一个字符，②指针向前移动一位，③写入一个字符，④有把刚才写的字符读出来。。。。循环。这永远结束不了吧。只是在没有第22行时才进入死循环，可是第22行是地位到当前位置啊，并没有改变指针的指向，起了什么作用

user: user-0
content: 是读取一个字符，指针向前移动一位，以后-1，指针又回到原来的位置，执行putc()将原来的字符替换为大写。我的理解是执行putc()之后，指针又向后移动一位，所以下次getc()读取的应该是下一个字符

user: user-0
content: 是读取一个字符，指针向前移动一位，以后-1，是回到之前的位置，将原来的字符替换为大写。我的理解是执行putc()之后，指针应该又移动一位，所以下次getc()读取时应该是读取下一个字符

user: user-0
content: 有人知道吗？

user: user-2
content: 这个是一边写一边读可能会有影响

user: user-0
content: 引用 1 楼 user-2 的回复：跟踪一下位置看看有什么差别有和没有前后位置一样

user: user-2
content: 跟踪一下位置看看有什么差别
user-0 提问: 代码大佬帮忙写一下，我不太懂

回复:
user: user-1
content: 引用 2 楼 youhehu的回复:[quote=引用 1 楼 user-1的回复:]就是个分支结构，，，，搞不懂哪儿难了  不会这个用if-else也可以啊。    #include <stdio.h>  int main(void) { 	double a, b, ans = 0; 	char op; 	while (scanf_s("%lf%c%lf", &a, &op, 1, &b) != EOF) { 		switch (op) { 		case '+': 			ans = a + b; 			break; 		case '-': 			ans = a - b; 			break; 		case '*': 			ans = a * b; 			break; 		case '/': 			ans = a / b; 			break; 		default: 			; 		} 		printf("%.8lf\n", ans); 	} 	return 0; }   运行不了，while那儿有问题[/quote] 我用的Visual Studio 2019。  改为scanf("%lf%c%lf",&a,&op,&b);就可以了。

user: user-0
content: 引用 1 楼 user-1的回复:就是个分支结构，，，，搞不懂哪儿难了  不会这个用if-else也可以啊。    #include <stdio.h>  int main(void) { 	double a, b, ans = 0; 	char op; 	while (scanf_s("%lf%c%lf", &a, &op, 1, &b) != EOF) { 		switch (op) { 		case '+': 			ans = a + b; 			break; 		case '-': 			ans = a - b; 			break; 		case '*': 			ans = a * b; 			break; 		case '/': 			ans = a / b; 			break; 		default: 			; 		} 		printf("%.8lf\n", ans); 	} 	return 0; }   运行不了，while那儿有问题

user: user-1
content: 就是个分支结构，，，，搞不懂哪儿难了  不会这个用if-else也可以啊。    #include <stdio.h>  int main(void) { 	double a, b, ans = 0; 	char op; 	while (scanf_s("%lf%c%lf", &a, &op, 1, &b) != EOF) { 		switch (op) { 		case '+': 			ans = a + b; 			break; 		case '-': 			ans = a - b; 			break; 		case '*': 			ans = a * b; 			break; 		case '/': 			ans = a / b; 			break; 		default: 			; 		} 		printf("%.8lf\n", ans); 	} 	return 0; }
user-0 提问: 发生访问冲突怎么解决，求大佬指教

回复:
user: user-1
content: 引用 5 楼 weixin_45760275 的回复:引用 4 楼 user-2 的回复：VC++6.0里面用的是scanf谢谢，我大概知道原因了那就结贴，谢谢。

user: user-0
content: 引用 4 楼 user-2 的回复：VC++6.0里面用的是scanf谢谢，我大概知道原因了

user: user-2
content: VC++6.0里面用的是scanf

user: user-0
content: 引用 1 楼 wowpH 的回复：scanf_s("%lf%c%lf", &a, &b, 1, &c);  字符，字符串类型的要加上读取的大小问题解决了，谢谢，能多问一句吗？是编译器不同的原因吗？我看的视频教程他是用的VC++6.0。他的代码没有加入读取的大小呢

user: user-2
content: 查一下scanf_s参数，应该是不对的

user: user-1
content: scanf_s("%lf%c%lf", &a, &b, 1, &c);  字符，字符串类型的要加上读取的大小
user-0 提问: 转换进制出错，不能输出

回复:
user: user-0
content: 我找到错误了，是大小写的问题

user: user-1
content: x/8 改成 int(x/8)

user: user-2
content: 引用 2 楼 qqdreamypp 的回复:我用两个编译器都有问题 不能输出 你的代码我一点都没有动，在VS2015中没问题

user: user-0
content: 我用两个编译器都有问题 不能输出

user: user-2
content: VS2015+Windows10运行  似乎没问题
user-0 提问: 求助：约瑟夫环问题

回复:
user: user-1
content: 又一个用C+语言的。

user: user-0
content: 补充题目：从键盘输入人数N（N<50）及N个人的编号，正向建立带头节点的循环链表； 输出循环链表各结点的值； 输入开始报数的人的编号S、间隔的个数M和剩余人数X； 在循环链表中查找到编号为S的结点； 从1开始向后报数，将报M的人（结点）从循环链表中删除，并输出该人的编号； 从刚才被删除人的下一个人开始重复步骤5，直至最后只剩下 X 个人为止； 输出最后剩余的人的编号。
user-0 提问: 涂色问题

回复:
user: user-1
content: 引用 6 楼 youhehu 的回复:[quote=引用 5 楼 user-1的回复:]你为什么不把输入示例也截图，是有秘密吗？ 这个到没有，我已经解决了[/quote]赞

user: user-0
content: 引用 5 楼 user-1的回复:你为什么不把输入示例也截图，是有秘密吗？ 这个到没有，我已经解决了

user: user-1
content: 你为什么不把输入示例也截图，是有秘密吗？

user: user-1
content: 引用 2 楼 youhehu 的回复:[quote=引用 1 楼 user-1的回复:]这不很简单吗。看看区间格子的奇数个数和r是否相等，偶数个数是否和g相等。 能具体写出来吗求代码[/quote]可以搜搜题解啊，一般都有的。

user: user-1
content: 哎，你自己用几个数手算试一试就知道了。。。

user: user-0
content: 引用 1 楼 user-1的回复:这不很简单吗。看看区间格子的奇数个数和r是否相等，偶数个数是否和g相等。 能具体写出来吗求代码

user: user-1
content: 这不很简单吗。看看区间格子的奇数个数和r是否相等，偶数个数是否和g相等。
user-0 提问: 求大佬看一下问题在哪，万分感谢

回复:
user: user-1
content: 现在就好比：你叫我拿个篮子去果园，但是不告诉我摘什么水果，也不告诉我摘多少。那我只能随便摘了（等价于你的代码没问题。）

user: user-1
content: 你要这么说的话，那我只能说，你这代码没问题。 引用 3 楼 qq_45763902 的回复:[quote=引用 1 楼 wowpH的回复:]你的问题是什么？ 就是这个代码的结果是有问题的，但我没有发现问题在哪，所以求助[/quote]

user: user-0
content: 引用 1 楼 wowpH的回复:你的问题是什么？ 就是这个代码的结果是有问题的，但我没有发现问题在哪，所以求助

user: user-2
content: printf("请输入身高h,体重w:");     getchar();    -------------------------这个没必要     scanf("%f%f",&h,&w);   ------------%f加空格

user: user-1
content: 你的问题是什么？
user-0 提问: 计算每一对数组组成的点距离(1，1)的总和

回复:
user: user-0
content: 引用 4 楼 與蘤舊縐的回复: 你这个程序应该不是书上写的吧 哦，pow用错了，被打死...

user: user-1
content: 引用 5 楼 wowpH 的回复:[quote=引用 3 楼 ²⁰¹⁹₀₉.₀₁清梦 的回复:] [quote=引用 2 楼 與蘤舊縐的回复:]not a number？？ 不是数字，是这个:nan[/quote]不知道不会搜一下？[/quote]帮你搜好了。https://baike.baidu.com/item/nan/7455322?fr=aladdin

user: user-2
content: 神奇，从未见过这玩意

user: user-1
content: 引用 3 楼 ²⁰¹⁹₀₉.₀₁清梦 的回复:[quote=引用 2 楼 與蘤舊縐的回复:]not a number？？ 不是数字，是这个:nan[/quote]不知道不会搜一下？

user: user-2
content: 你这个程序应该不是书上写的吧

user: user-0
content: 引用 2 楼 與蘤舊縐的回复:not a number？？ 不是数字，是这个:nan

user: user-2
content: not a number？？

user: user-0
content: 填写部分有错误吗？运行结果显示nan是什么鬼？ 真是太难了，搞不懂
user-0 提问: 数组长度和大小一样吗

回复:
user: user-1
content: 有的，size是占用内存字节数，length是字符串长度

user: user-0
content: str.size()有这个用法吧

user: user-1
content: length指的是什么呢？数组元素个数吗？size指的是sizeof吗？sizeof=元素个数*单位字节数
user-0 提问: C语言编程

回复:
user: user-1
content: while(输入) {     if(都为小写)     {         输出大写         跳出循环     } } 填空可以吧...

user: user-0
content: 引用 1 楼 @宁兰的回复:判断大小写的依据是 判断输入的字母是否在ASCII码中大（小）写字母所对应的的数字范围 用while条件中实现判断，如果不是就一直输入给字符型变量赋新值 提示一下，直接给代码就不好玩了嘛 你说这的个我都知道，我只是想知道怎么个循环法

user: user-2
content: 判断大小写的依据是 判断输入的字母是否在ASCII码中大（小）写字母所对应的的数字范围 用while条件中实现判断，如果不是就一直输入给字符型变量赋新值 提示一下，直接给代码就不好玩了嘛
user-0 提问: 删除数组中n个数使得最大公约数增加，这个题太难了，求大佬帮帮我。

回复:
user: user-1
content: 不对吧，你这个例子至少要删除2个数才行啊。 删除7之前gcd=1，删除后也是1，至少要删除2个数。 引用 11 楼 o^┢┦aｐΡy ^0^ 的回复:我感觉要先考虑素数然后在考虑其他的数，我先设计了一个排序，先遍历数组把数组中的素数提取出来，并且让素数变0，然后素数排序，在把素数数组放到原来的数组这样原来的数组排序就是先是素数从小到排列然后是其他的数从小到大排列，并且去除了1应为有1最大公约数只可能是1，但是这样是错误的，比方说我输入 5 3 5 7 15 21 排序后是 3 5 7 15 21 最小的删除 删除3最大公约数不能扩大，然后删除5，也不行然后在删除7扩大了 这样从小到大依次删除3个数最大公约数才会扩大 但是其实这个例子的答案只删除一个7就能使最大公约数扩大

user: user-0
content: 我感觉要先考虑素数然后在考虑其他的数，我先设计了一个排序，先遍历数组把数组中的素数提取出来，并且让素数变0，然后素数排序，在把素数数组放到原来的数组这样原来的数组排序就是先是素数从小到排列然后是其他的数从小到大排列，并且去除了1应为有1最大公约数只可能是1，但是这样是错误的，比方说我输入 5 3 5 7 15 21 排序后是 3 5 7 15 21 最小的删除 删除3最大公约数不能扩大，然后删除5，也不行然后在删除7扩大了 这样从小到大依次删除3个数最大公约数才会扩大 但是其实这个例子的答案只删除一个7就能使最大公约数扩大

user: user-2
content: 有没先排序一下？ 可以这样考虑一下，比方先从最小的数开始，如果它跟其它数两两gcd，存在不超过所有数gcd，是不是可以先排除？然后再试其它的。好好想想

user: user-0
content: 主要是试过之后才来求助的，实在是没办法了，要是我能自己做出来肯定就自己做了，没试过我肯定是不会问的

user: user-0
content: 在pta上提交后运行超时

user: user-0
content: 这个我已经试过了，超时

user: user-2
content: 有时候程序先写出来，然后就会想出办法来优化，如果只是坐在那里发呆，然后什么都没做出来。好方法有时候是基于笨办法的基础上的，笨办法总比没办法要好一些

user: user-2
content: 先试试看，说不定不需要一秒钟呢

user: user-0
content: 有1秒的时间限制，而且遍历不太可能，比方说第一次减少一个数，数组中每个数都去掉一次求最大公约数，发现只去掉一个不能，然后去掉两个数，但是去掉两个数的情况就太多了，要是两个不行去掉三个，数就更大了。数字的个数可能是个5位数，所以说遍历基本不可能实现。

user: user-2
content: 笨办法，遍历过去，找到能使gcd变大的数

user: user-0
content: 我这还有个例子 输入 5 3 5 7 15 21 输出 1 只需要删除7就能使得最大公约数扩大。

user: user-0
content: pta中的题目，实在是做不出来了，求助大佬
user-0 提问: C语言数组

回复:
user: user-1
content: 数组越界访问是未定义行为，所谓未定义即不知道能否正确，是随机的～

user: user-2
content: 引用 3 楼 没痛的伤害 的回复:[quote=引用 1 楼 user-2的回复:]&a[7]的数组名a是数组起始地址，而a[7]相当于(a+7)，其实就是后面第7个地址，这个逻辑并没有错。编译是可以通过的。但是会警告。 那个没有明显数组元素个数的话系统编译时默认的数组元素个数是5吧，那么在给这个数组分配空间时，只分配了5个元素的空间，且分配的空间数据类型是int型的，再往后的空间应该不再属于数组的空间了吧，为何a[7]都超出定义的空间范围内了，还能这样表示，而且没有分配的空间还是可以用整型的数组数据类型通过取地址来表示已经定义好的数组空间的后面空间的地址，这样理解是哪儿有问题呢？[/quote]举个例子吧：我有100个盘子，前面5个盘子每个里面放了几个苹果，现在我要拿第7个盘子，你说我能不能拿到。这不很明显吗，我数数到第7个，把盘子拿走，这为什么不行呢？ 还是那句话，数组名也是个地址。

user: user-0
content: 引用 2 楼 user-2的回复:至于为什么是7，因为指针是int型的，所以和数组下标一样，结果肯定也是7。  数组名其实就是首地址。本质还是个地址。 这儿的7我是知道得，谢谢

user: user-0
content: 引用 1 楼 user-2的回复:&a[7]的数组名a是数组起始地址，而a[7]相当于(a+7)，其实就是后面第7个地址，这个逻辑并没有错。编译是可以通过的。但是会警告。 那个没有明显数组元素个数的话系统编译时默认的数组元素个数是5吧，那么在给这个数组分配空间时，只分配了5个元素的空间，且分配的空间数据类型是int型的，再往后的空间应该不再属于数组的空间了吧，为何a[7]都超出定义的空间范围内了，还能这样表示，而且没有分配的空间还是可以用整型的数组数据类型通过取地址来表示已经定义好的数组空间的后面空间的地址，这样理解是哪儿有问题呢？

user: user-0
content: 哦哦，懂了，还是对这个a是地址没有彻底理解，谢谢

user: user-2
content: 至于为什么是7，因为指针是int型的，所以和数组下标一样，结果肯定也是7。  数组名其实就是首地址。本质还是个地址。

user: user-2
content: &a[7]的数组名a是数组起始地址，而a[7]相当于(a+7)，其实就是后面第7个地址，这个逻辑并没有错。编译是可以通过的。但是会警告。
user-0 提问: 细节问题

回复:
user: user-1
content: printf("a=%%%d, b=%%%d", a, b);

user: user-2
content: 引用 4 楼 OYJJO的回复:[quote=引用 3 楼 636f6c696e的回复:]%表示转义符，%%表示输出%，所以%%d输出的结果是%d [quote=引用 2 楼 OYJJO 的回复:] [quote=引用 1 楼 user-4的回复:]printf("a=%d,b=%d",a,b); printf（“a=%%d,b=%%d”）;就是这个式子[/quote][/quote] 我以为是会输出a=%2,b=%4[/quote] 那你需要用%%%d格式的

user: user-0
content: 引用 3 楼 636f6c696e的回复:%表示转义符，%%表示输出%，所以%%d输出的结果是%d [quote=引用 2 楼 OYJJO 的回复:] [quote=引用 1 楼 user-4的回复:]printf("a=%d,b=%d",a,b); printf（“a=%%d,b=%%d”）;就是这个式子[/quote][/quote] 我以为是会输出a=%2,b=%4

user: user-3
content: %表示转义符，%%表示输出%，所以%%d输出的结果是%d 引用 2 楼 OYJJO 的回复:[quote=引用 1 楼 user-4的回复:]printf("a=%d,b=%d",a,b); printf（“a=%%d,b=%%d”）;就是这个式子[/quote]

user: user-0
content: 引用 1 楼 user-4的回复:printf("a=%d,b=%d",a,b); printf（“a=%%d,b=%%d”）;就是这个式子

user: user-4
content: printf("a=%d,b=%d",a,b);
user-0 提问: 单链表的插入和删除，求教！

回复:
user: user-0
content: 引用 1 楼 user-1的回复:所以你是来秀你的字体的吗？ 不是呀，字体是手机自带的

user: user-1
content: 所以你是来秀你的字体的吗？
user-0 提问: 大神求解

回复:
user: user-1
content: 正如楼上朋友所说的，把if(year=0) break;改为 if(year==0) break; 为什么if(year=0) break;中始终无法break呢？  从上图可以看到year=0的赋值语句，把year的值赋值为0，而且该赋值表达式的值返回的是year的值，即0. 所以，if语句的判断条件始终是0，无法break

user: user-0
content: 好像还是不能return 0

user: user-2
content: 及时结贴，谢谢。  不要做伸手党。

user: user-2
content: if(year=0) break; 改为 if(year==0) break; 试试

user: user-0
content: 引用 1 楼 user-2的回复:贴一下代码。 #include "stdio.h" int main() { 	int year,month; 	for(;;)  { 	printf("请输入一个年份："); 	scanf("%d",&year); 	printf("请输入一个月份："); 	scanf("%d",&month); 	if(year=0) break; 	switch(month) 	{ 		case 1: 		case 3: 		case 5: 		case 7: 		case 8: 		case 10: 		case 12:printf("该月为31天\n");break; 		case 4: 		case 6: 		case 9: 		case 11:printf("该月为30天\n");break; 		case 2:if((year%4==0)&&(year%100!=0)||(year%400==0)) 		        printf("该月为29天\n"); 		       else 		        printf("该月为28天\n");break; 	}  } 	return 0; }

user: user-2
content: 贴一下代码。
user-0 提问: 回调函数 打印任意数组

回复:
user: user-0
content: 引用 4 楼 qq_33437675的回复:[quote=引用 3 楼 qq_33437675的回复:][quote=引用 2 楼 gouyanfen的回复:][quote=引用 1 楼 user-2 的回复:] 在线抓伸手党。 发贴10个，结贴0%,没兴趣回贴了。[/quote] 什么是结帖。玩的少，还请多多指教。[/quote] 特意去查了一下，这就去结帖[/quote] 要电脑结帖的，明天再结。

user: user-0
content: 引用 3 楼 qq_33437675的回复:[quote=引用 2 楼 gouyanfen的回复:][quote=引用 1 楼 user-2 的回复:] 在线抓伸手党。 发贴10个，结贴0%,没兴趣回贴了。[/quote] 什么是结帖。玩的少，还请多多指教。[/quote] 特意去查了一下，这就去结帖

user: user-0
content: 引用 2 楼 gouyanfen的回复:[quote=引用 1 楼 user-2 的回复:] 在线抓伸手党。 发贴10个，结贴0%,没兴趣回贴了。[/quote] 什么是结帖。玩的少，还请多多指教。

user: user-1
content: 引用 1 楼 user-2 的回复:在线抓伸手党。 发贴10个，结贴0%,没兴趣回贴了。

user: user-2
content: 在线抓伸手党。
user-0 提问: 问题出在哪呢？

回复:
user: user-1
content: 你能想办法把那个if写短点吗，一个if不要写的太长，不方便理解。  你的错误就出在这儿

user: user-0
content: n代表要输入的那个值，1到n中若数位出现2 0 1 9这四个数就加

user: user-1
content: 引用 3 楼 weixin_45311188 的回复:[quote=引用 1 楼 user-1的回复:]你想要的结果是多少？ 题目：小明对数位中含有 2、0、1、9 的数字很感兴趣（不包括前导 0），在 1 到 40 中这样的 数包括 1、2、9、10 至 32、39 和 40，共 28 个，他们的和是 574。[/quote]那你为什么要输入n，而且题目的问题呢？

user: user-0
content: 引用 1 楼 user-1的回复:你想要的结果是多少？ 题目：小明对数位中含有 2、0、1、9 的数字很感兴趣（不包括前导 0），在 1 到 40 中这样的 数包括 1、2、9、10 至 32、39 和 40，共 28 个，他们的和是 574。

user: user-0
content: 引用 1 楼 user-1的回复:你想要的结果是多少？ 我可能小学除法有问题，我把3/10等于了3好笨喔

user: user-1
content: 你想要的结果是多少？
user-0 提问: 求助

回复:
user: user-1
content: 引用 2 楼 qq_45766511的回复:搜不到啊。。。。。。。 前几天就有人问。我就搜到过。。。。

user: user-0
content: 搜不到啊。。。。。。。

user: user-1
content: 不贴代码的话，还不如直接搜答案来的快。
user-0 提问: c语言编程求助。。（捂脸）

回复:
user: user-0
content: 引用 2 楼 user-1的回复:不断右移，相与，右移，直到为0。 引用 1 楼 user-1 的回复:最后一位与1，如果结果是1说明这个位数的卡片有这个数。 呃呃，能编写代码吗？ 这样太抽象了（其实是我看不懂）

user: user-0
content: 呃呃，能编写代码吗？ 这样太抽象了（其实我看不懂）

user: user-1
content: 不断右移，相与，右移，直到为0。 引用 1 楼 user-1 的回复:最后一位与1，如果结果是1说明这个位数的卡片有这个数。

user: user-1
content: 最后一位与1，如果结果是1说明这个位数的卡片有这个数。
user-0 提问: 新手求教

回复:
user: user-0
content: 引用 1 楼 user-1的回复:都行的。。。。。 我现在有点烦，有的书讲的深，有的…书讲的浅，有的书讲的跟本不一样，有的书连内容完全不是一致的，一个讲这个，一个讲那个，一个侧重点在这儿，一个侧重点在那儿，到底哪些才是该注意的？写书的人就不能写的标准，说的全面吗

user: user-1
content: 都行的。。。。。
user-0 提问: 【求助】linux/c  调用chdir函数后，malloc行为异常。

回复:
user: user-1
content: 调试时候并不是根据分配长度来显示的，你+1是因为0也是要复制过去的，不然目标字符串没有结束标志，分配的长度也要+1

user: user-0
content: 引用 1 楼 user-1 的回复:楼主啊，这个malloc分配出来的空间，并没有长度标志，调试时候显示的内容是依据0出现的位置，也就是说一直显示到0出现为止，如果没有0出现，就会显示很长的内容。  按照你的方法修改，问题解决。问题原理还是有点不明白（结账等解决完这个疑问再结）。 你的意思是说调试器显示的malloc长度不是实际分配长度。这个和strnpy参数要n+1有什么关联（刚刚查阅过资料，复制长度大于字符串长度，会将多余位置null）？是字符串结束符‘\0'的原因么？那malloc动态分配的字节长度的n也要加1吧。

user: user-1
content: 所以，你strncpy里面，参数要用n+1

user: user-1
content: 楼主啊，这个malloc分配出来的空间，并没有长度标志，调试时候显示的内容是依据0出现的位置，也就是说一直显示到0出现为止，如果没有0出现，就会显示很长的内容。

user: user-1
content: 引用 6 楼 chasing_freedom的回复:[quote=引用 5 楼 user-1 的回复:] 字符串长度n实际上占用n+1字节的空间，所以malloc的时候也要n+1。并且你这样一直调用malloc也是不对的，空间都没释放 懂了，十分感谢。空间释放由del_arg函数负责。[/quote] 不对，你赋值之前的那个地址没释放，就被覆盖丢失了

user: user-0
content: 引用 5 楼 user-1 的回复:字符串长度n实际上占用n+1字节的空间，所以malloc的时候也要n+1。并且你这样一直调用malloc也是不对的，空间都没释放 懂了，十分感谢。空间释放由del_arg函数负责。

user: user-1
content: 字符串长度n实际上占用n+1字节的空间，所以malloc的时候也要n+1。并且你这样一直调用malloc也是不对的，空间都没释放
user-0 提问: 斐波那契

 

回复:
user: user-1
content: 引用 3 楼 A1314942199的回复:[quote=引用 2 楼 user-1的回复:]https://blog.csdn.net/weixin_44895666/article/details/102662257 可以看一下这个 写的不错，互相关注，加个关注哈，兄弟[/quote] 共同进步（好好学习天天向上. jpg）

user: user-0
content: 引用 2 楼 user-1的回复:https://blog.csdn.net/weixin_44895666/article/details/102662257 可以看一下这个 写的不错，互相关注，加个关注哈，兄弟

user: user-1
content: https://blog.csdn.net/weixin_44895666/article/details/102662257 可以看一下这个
user-0 提问: 求助C语言练习题

回复:
user: user-0
content: 引用 1 楼 SuperDay 的回复：循环会写吗？把年份遍历过去，一个个判断是否闰年。知道什么是闰年吗？把闰年的定义复习一下统计个数具体该怎么操作呢

user: user-1
content: 循环会写吗？把年份遍历过去，一个个判断是否闰年。知道什么是闰年吗？把闰年的定义复习一下

user: user-2
content: 设置一个变量i=0，每循环一次就是找到一个闰年，就i++
user-0 提问: 报错莫名其妙怎么办

回复:
user: user-1
content: 程序不能放在有中文的文件夹中(mingw也是)

user: user-0
content: 引用 1 楼 user-1的回复:程序不能放在有中文的文件夹中(mingw也是) 额，之前一直都在中文文件夹里，并没有什么问题，今天突然抽风了
user-0 提问: 水仙花题目（PTA）

回复:
user: user-0
content: 第一次发帖，适合和我一样的小萌新

user: user-1
content: 如果输入大于1000，你后续会多打印yes或no  #include<stdio.h> int main() { int x,y,z,i; scanf("%d",&i); x=i%10; y=i/10%10; z=i/100; if(i<100||i>999) printf("Invalid Value!\n");  else if(i==x*x*x+y*y*y+z*z*z) printf("Yes\n");  else printf("No\n"); return 0;  }

user: user-2
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-0 提问: C语言问题

回复:
user: user-1
content: getchar()-'0'将getchar()获得的字符数转换为整型数

user: user-0
content: 引用 1 楼 45045399 的回复：getchar()-'0'将getchar()获得的字符数转换为整型数谢谢你，能再问您一个问题吗，您有时间才看， 一个数组 inode[i]=-1 怎解

user: user-0
content: 谢谢了，谢谢你

user: user-2
content: 有用的话记得把贴结了

user: user-2
content: getchar（）获得一个字符，将它转换成ASCII码和'0'的ASCII码相减，得到的值去进行case判断
user-0 提问: 求问哪里有错误

回复:
user: user-1
content: 解决了问题，明白了就要及时结贴 引用 6 楼 qq_45766479 的回复:哦哦，明白了，谢谢哈

user: user-0
content: 哦哦，明白了，谢谢哈

user: user-1
content: 你自己写的invert需要传入的是指针，head的类型就是 node*。

user: user-0
content: 嗯嗯，那个懂了，最后的不懂

user: user-2
content: 楼上说的对，是少了"}"

user: user-0
content: 引用 1 楼 fireyou的回复: #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct node  {     int data;     node *next; } node, *List; void create(int n) {     int a;     List s, L;     L = (List)malloc(sizeof(node));     printf("输入第一个数据:");     scanf("%d", &a);     L->data = a;     for (int i = 2; i <= n; i++)     {         s = (List)malloc(sizeof(node));         printf("输入第i个数据:");         scanf("%d", &a);         s->data = a;         L->next = s;         L = L->next;     } }   //这里少了一个 }     void invert(node *head)     {         node *p, *q;         p = head->next;         head->next = NULL;         while (p != NULL)         {             q = p;             p = p->next;             q->next = head->next;             head->next = q;         }     }     int main()     {         int n;         node *head;         printf("输入链表的长度:");         scanf("%d", &n);         create(n);         printf("输出逆置后的链表:");         invert(head);   //这里用 head     } 最后为什么要用head

user: user-1
content: #include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct node  {     int data;     node *next; } node, *List; void create(int n) {     int a;     List s, L;     L = (List)malloc(sizeof(node));     printf("输入第一个数据:");     scanf("%d", &a);     L->data = a;     for (int i = 2; i <= n; i++)     {         s = (List)malloc(sizeof(node));         printf("输入第i个数据:");         scanf("%d", &a);         s->data = a;         L->next = s;         L = L->next;     } }   //这里少了一个 }     void invert(node *head)     {         node *p, *q;         p = head->next;         head->next = NULL;         while (p != NULL)         {             q = p;             p = p->next;             q->next = head->next;             head->next = q;         }     }     int main()     {         int n;         node *head;         printf("输入链表的长度:");         scanf("%d", &n);         create(n);         printf("输出逆置后的链表:");         invert(head);   //这里用 head     }
user-0 提问: 64位windows有什么反汇编器吗?

回复:
user: user-0
content: 引用 3 楼 user-1 的回复:百度应该有结果。 ollydbg od没有64位。

user: user-1
content: 百度应该有结果。 ollydbg

user: user-0
content: 有人回复怎么没内容
user-0 提问: C语言题目不会写，求帮忙

回复:
user: user-0
content: 好像不对｛do｝有问题

user: user-1
content: #include<stdio.h> int main(void) { 	do 	{ 		int nCount = 0; 		printf("Please total count: \n"); 		if ((0 == scanf_s("%d", &nCount)) || (nCount <= 0)) { printf("Input count error!"); break; }  		int* pBuffer = new int[nCount]; 		if (NULL == pBuffer) { printf("Alloc memory failed!"); break; }  		printf("please input numbers: \n"); 		int i = 0; 		while (i < nCount) 		{ 			int num = 0; 			if ((0 == scanf_s("%d", &num)) || (num < 0)) { break; } 			 			char c = getchar();  			pBuffer[i++] = num;  			if (c == '\n') { break; } 		}  		if (i < nCount) { printf("Input numbers error!"); break; }  		int nMax = pBuffer[0]; 		for (i = 1; i < nCount; ++i) 		{ 			if (nMax < pBuffer[i]) { nMax = pBuffer[i]; } 		} 		printf("Max number: %d\n", nMax);  		delete[] pBuffer; 		pBuffer = NULL;  	} while (0);  	return 0; }

user: user-1
content: #include<stdio.h> int main(void) { 	do 	{ 		int nCount = 0; 		printf("Please total count: \n"); 		if (0 == scanf_s("%d", &nCount)) { printf("Input count error!"); break; }  		int* pBuffer = new int[nCount]; 		if (NULL == pBuffer) { printf("Alloc memory failed!"); break; }  		printf("please input numbers: \n"); 		int i = 0; 		while (i < nCount) 		{ 			int num = 0; 			if (0 == scanf_s("%d", &num)) { break; } 			 			char c = getchar();  			pBuffer[i++] = num;  			if (c == '\n') { break; } 		}  		if (i < nCount) { printf("Input numbers error!"); break; }  		int nMax = pBuffer[0]; 		for (i = 1; i < nCount; ++i) 		{ 			if (nMax < pBuffer[i]) { nMax = pBuffer[i]; } 		} 		printf("Max number: %d\n", nMax);  		delete[] pBuffer; 		pBuffer = NULL;  	} while (0);  	return 0; }

user: user-0
content: 我知道for循环，可是操作起来一头雾水

user: user-2
content: for循环，从前往后查找
user-0 提问: 有未处理的异常，写入时发生冲突

回复:
user: user-0
content: 可以啦，谢谢

user: user-1
content: #include <stdio.h> #include <math.h>  //void main() int main() {     char sign;     double a,b,c;      printf("输入一个计算式(如: 2.5+7.5):\n");     //scanf_s("%lf%c%lf",&a,&sign,&b);     scanf_s("%lf%c%lf",&a,&sign, 1, &b);   //指定sign的长度      switch (sign) {         case '+':             c=a+b;             printf("%.2lf+%.2lf=%.2lf\n",a,b,c);             break;          case '-':             c=a-b;             printf("%.2lf-%.2lf=%.2lf\n",a,b,c);             break;          case '*':             c=a*b;             printf("%.2lf*%.2lf=%.2lf\n",a,b,c);             break;          case '/':             c=a/b;             printf("%.2lf/%.2lf=%.2lf\n",a,b,c);             break;          default:             printf("输入错误!!!\n");             break;     }     if(sign=='+'){         c=a+b;         printf("%.2lf+%.2lf=%.2lf\n",a,b,c);     }     else if(sign=='-'){         c=a-b;         printf("%.2lf-%.2lf=%.2lf\n",a,b,c);     }     else if(sign=='*'){         c=a*b;         printf("%.2lf*%.2lf=%.2lf\n",a,b,c);     }     else if(sign=='/'){         c=a/b;         printf("%.2lf/%.2lf=%.2lf\n",a,b,c);     }     else{         printf("输入错误!!!\n");     } }  供参考～

user: user-2
content: scanf_s("%lf%c%lf", &a,&sign,10, &b); scanf_s 接收字符的时候，需要指定长度，

user: user-2
content: 用 scanf 试试

user: user-3
content: 看着没问题。
user-0 提问: 关于二进制补码范围的疑问

回复:
user: user-0
content: 呃呃。。。。。。。。。

user: user-1
content: 这个老师，哎…………

user: user-2
content: 引用 5 楼 sako.c的回复:[quote=引用 3 楼 早打大打打核战争的回复:]正数的补码和原码相同，负数的补码是原码取反+1，根本原因在于原码反码的编码中0有正0和负0两种形式，多占了一个编码空间，而补码的编码中每个值有唯一的编码，就可以用原码的负0表示-2^(N-1) 所以这个负零就代表-8是吗？[/quote] 1000就是-8呀，8的原码1000，取反0111，再加1结果为1000，最高为为1，仍为1000。 1000为负数，数据位为000，取返111，再加1为1000，十进制为8，由于是负数，所以为-8

user: user-2
content: 引用 5 楼 sako.c的回复:[quote=引用 3 楼 早打大打打核战争的回复:]正数的补码和原码相同，负数的补码是原码取反+1，根本原因在于原码反码的编码中0有正0和负0两种形式，多占了一个编码空间，而补码的编码中每个值有唯一的编码，就可以用原码的负0表示-2^(N-1) 所以这个负零就代表-8是吗？[/quote] 补码就没有负0，补码时所有数值范围内的都有唯一编码

user: user-3
content: 引用 5 楼 sako.c 的回复:[quote=引用 3 楼 早打大打打核战争的回复:]正数的补码和原码相同，负数的补码是原码取反+1，根本原因在于原码反码的编码中0有正0和负0两种形式，多占了一个编码空间，而补码的编码中每个值有唯一的编码，就可以用原码的负0表示-2^(N-1) 所以这个负零就代表-8是吗？[/quote] 补码中没有-0

user: user-0
content: 引用 6 楼 早打大打打核战争的回复:[quote=引用 5 楼 sako.c 的回复:] [quote=引用 3 楼 早打大打打核战争的回复:]正数的补码和原码相同，负数的补码是原码取反+1，根本原因在于原码反码的编码中0有正0和负0两种形式，多占了一个编码空间，而补码的编码中每个值有唯一的编码，就可以用原码的负0表示-2^(N-1) 所以这个负零就代表-8是吗？[/quote]  如果是4位数那就是-8，8位数就是-128... [/quote] 哦哦，好的，懂了。。。。

user: user-4
content: 引用 5 楼 sako.c 的回复:[quote=引用 3 楼 早打大打打核战争的回复:]正数的补码和原码相同，负数的补码是原码取反+1，根本原因在于原码反码的编码中0有正0和负0两种形式，多占了一个编码空间，而补码的编码中每个值有唯一的编码，就可以用原码的负0表示-2^(N-1) 所以这个负零就代表-8是吗？[/quote]  如果是4位数那就是-8，8位数就是-128...

user: user-0
content: 引用 3 楼 早打大打打核战争的回复:正数的补码和原码相同，负数的补码是原码取反+1，根本原因在于原码反码的编码中0有正0和负0两种形式，多占了一个编码空间，而补码的编码中每个值有唯一的编码，就可以用原码的负0表示-2^(N-1) 所以这个负零就代表-8是吗？

user: user-3
content: 引用 2 楼 liups 的回复:1000怎么就不是-8了？明明就是-8嘛 4位补码范围是-8到+7，其中-8的二进制表示为1000，-1为1111，0为0000，1为0001，7为0111

user: user-4
content: 正数的补码和原码相同，负数的补码是原码取反+1，根本原因在于原码反码的编码中0有正0和负0两种形式，多占了一个编码空间，而补码的编码中每个值有唯一的编码，就可以用原码的负0表示-2^(N-1)

user: user-3
content: 1000怎么就不是-8了？明明就是-8嘛

user: user-5
content: 这里是有点绕，时不时就忘了，1000表示-8  但是还是不知道为什么。。。
user-0 提问: 使用API创建控件的问题

回复:
user: user-1
content: 直接用MFC啊

user: user-0
content: 原来没有引用#include <CommCtrl.h>，以为一个Windows.h就行了，窗口类也可以使用它定义的了，如cw_treeview,加油
user-0 提问: 求能否指点一二，儒生无能，找不出自己的错误所在...

回复:
user: user-1
content: double funcos(double e, double x) {   double f0 = 1, f = 1, s = 1, v;    for (int i = 1; s += (v = (f = -f * x * x) / (f0 *= i * i + i)), abs(v) >= e; i += 2);    return s;     }

user: user-2
content: #include <stdio.h> #include <math.h>  double funcos(double e, double x);  int main() { 	double e, x;  	scanf("%lf %lf", &e, &x); 	printf("cos(%.2f) = %.6f\n", x, funcos(e, x)); 	system("pause"); 	return 0; }  int fact(int x) { 	int s = 1; 	int i; 	for (i = 1; i <= x; i++) 		s = s*i; 	return s; }  double funcos(double e, double x) { 	double s = 1; 	double item; 	int i = 2; 	int j = 1; 	item = (double)pow(x, i) / fact(i); 	while (item > e) 	{ 		if (j % 2 == 1) 			s = s - item; 		else 			s = s + item; 		i = i + 2; 		j++; 		item = (double)pow(x, i) / fact(i); 	}  	if (j % 2 == 1) 		s = s - item; 	else 		s = s + item; 	return s; }

user: user-3
content: double funcos,s=1,b,y; 这里给funcos赋一个初值 funcos = 100;随便一个数就行，要不循环可能进不去 楼主可以自己调试一下应该就看出来了

user: user-0
content: 能否指点一二啊？我真的很晕 可能很多函数用的条件不当 ..
user-0 提问: 字符串中去除A

回复:
user: user-1
content: 引用 楼主 weixin_45714880的回复:为啥我的程序运行出来第一个单词没了……怎么解决啊（orz 删除scanf那一行的代码就可以了

user: user-2
content: 没问题了记得结下贴

user: user-0
content: 引用 6 楼 user-3的回复:[quote=引用 5 楼 weixin_45714880的回复:][quote=引用 2 楼 user-3的回复:]第一个单词已经由scanf输入到a了，但是接下来a[i]=getchar又覆盖掉了，这个单词接这样被你搞没了 所以可以问问要怎么做吗？谢谢！！[/quote] 3搂楼会给你试出来的[/quote] 好了hhhhh谢谢你！

user: user-0
content: 引用 7 楼 喜欢做我自己的回复:int main() { int i = 1000; char a[i]; //scanf("%c",a); for(i = 0;(a[i] = getchar()) != '\n';i++) { 	if(a[i] != 'A') 	printf("%c",a[i]); } }  输入：abcdefgABCDEFG 输出：abcdefgBCDEFG   你确定有漏的？ 噢噢噢我懂了！谢谢你！！

user: user-0
content: 引用 7 楼 喜欢做我自己的回复:int main() { int i = 1000; char a[i]; //scanf("%c",a); for(i = 0;(a[i] = getchar()) != '\n';i++) { 	if(a[i] != 'A') 	printf("%c",a[i]); } }  输入：abcdefgABCDEFG 输出：abcdefgBCDEFG   你确定有漏的？ 我把scanf那行删掉就没有漏的了

user: user-2
content: 输入：abcdefg Abcdefg ABcd 输出：abcdefg bcdefg Bcd

user: user-2
content: int main() { int i = 1000; char a[i]; //scanf("%c",a); for(i = 0;(a[i] = getchar()) != '\n';i++) { 	if(a[i] != 'A') 	printf("%c",a[i]); } }  输入：abcdefgABCDEFG 输出：abcdefgBCDEFG   你确定有漏的？

user: user-3
content: 引用 5 楼 weixin_45714880的回复:[quote=引用 2 楼 user-3的回复:]第一个单词已经由scanf输入到a了，但是接下来a[i]=getchar又覆盖掉了，这个单词接这样被你搞没了 所以可以问问要怎么做吗？谢谢！！[/quote] 3搂楼会给你试出来的

user: user-0
content: 引用 2 楼 user-3的回复:第一个单词已经由scanf输入到a了，但是接下来a[i]=getchar又覆盖掉了，这个单词接这样被你搞没了 所以可以问问要怎么做吗？谢谢！！

user: user-0
content: 引用 3 楼 喜欢做我自己的回复:int main() { int i = 1000; char a[i]; //scanf("%c",a); for(i = 0;(a[i] = getchar()) != '\n';i++) { 	if(a[i] != 'A') 	printf("%c",a[i]); } } 我试过这样🙈这个就是丢失第一个字母orz

user: user-2
content: int main() { int i = 1000; char a[i]; //scanf("%c",a); for(i = 0;(a[i] = getchar()) != '\n';i++) { 	if(a[i] != 'A') 	printf("%c",a[i]); } }

user: user-3
content: 第一个单词已经由scanf输入到a了，但是接下来a[i]=getchar又覆盖掉了，这个单词接这样被你搞没了

user: user-0
content: 我没看出来问题救救孩子吧
user-0 提问: 求助C语言大神！！数组在内存发配中总为null

回复:
user: user-1
content: 你又没赋值，也没分配内存、

user: user-1
content: 刚声明的这个变量，怎么会有值呢？

user: user-2
content: int bracketmatch(char *str) {     //SeqStack *ss;                       //程序运行到这边显示ss是null     SeqStack ss_node;     SeqStack *ss;                       //程序运行到这边显示ss是null     initSeqStack(&ss_node);     ss = &ss_node;     int i = 0;     while (str[i] != '\0') {         push(ss, str, i);         if (str[i] == ')') {             destorySeqStackA(ss);         }         if (str[i] == ']') {             destorySeqStackB(ss);         }         if (str[i] == '}') {             destorySeqStackC(ss);         }         if (destorySeqStackA(ss) == 0 || destorySeqStackB(ss) == 0 || destorySeqStackC(ss) == 0) {             return 0;         }     }     return 1; }  供参考～  另外一个问题，楼主的代码里没有判断栈空的情况，建议把这种情况加进去～

user: user-3
content: 对，是垃圾值，什么值都有可能！ 引用 4 楼 user-4 的回复:引用 3 楼 fireyou 的回复:局部变量申明时不初始化，一般都会有一个默认的值，指针一般默认为NULL错了是垃圾值

user: user-4
content: 引用 3 楼 fireyou 的回复:局部变量申明时不初始化，一般都会有一个默认的值，指针一般默认为NULL错了是垃圾值

user: user-3
content: 局部变量申明时不初始化，一般都会有一个默认的值，指针一般默认为NULL
user-0 提问: 突然发现，csdn很多都是伸手党。

回复:
user: user-1
content: 第一次见这种写法，，，，

user: user-2
content: a%10计算这么多次，要先用个变量算一下，直接printf带%d参数就行了，不需要这么多if

user: user-0
content: 引用 8 楼 jiht594 的回复：int arr[] = {0,1,2,3,...,9} 余数 = a % 10; printf("%d\n", arr[余数]);  能短点直接把余数赋值进去不直接好了嘛，用数组就多了一步了吧

user: user-0
content: 引用 7 楼 fireyou 的回复： if(a>=10&&a<=99) {     printf("个位数是%d\n, a%10"); } else if(a>=100&&a<=999) {     printf("%d\n", a/100);     printf("%d\n", a%10); } 	if(a>=10&&a<=99)    //两位数 	printf("两位数\n个位数：%d\n",a%10); 	if(a>=100&&a<=999)	//三位数 	printf("三位数\n%d*%d\n",a/100,a%10); 这样写的，应该更短，把两个放一块

user: user-3
content: int arr[] = {0,1,2,3,...,9} 余数 = a % 10; printf("%d\n", arr[余数]);  能短点

user: user-4
content: if(a>=10&&a<=99) {     printf("个位数是%d\n, a%10"); } else if(a>=100&&a<=999) {     printf("%d\n", a/100);     printf("%d\n", a%10); }

user: user-5
content: 引用 5 楼 CSDN新手乐园常驻人口 的回复:[quote=引用 3 楼 fireyou 的回复：]楼上的是好办法 不用if， 直接  printf("个位数是%d\n, a%10");可是三位数和两位数给的条件不一样啊 [/quote] 你不可以自己研究一下吗？至少每一位可以类似的写法嘛

user: user-0
content: 引用 3 楼 fireyou 的回复：楼上的是好办法 不用if， 直接  printf("个位数是%d\n, a%10");可是三位数和两位数给的条件不一样啊

user: user-0
content: 哇，谢谢，这样子一写少一半啊

user: user-4
content: 楼上的是好办法 不用if， 直接  printf("个位数是%d\n, a%10");

user: user-5
content: 引用 1 楼 CSDN新手乐园常驻人口 的回复:除了那个条件可以写成switch语句，还有啥可以优化的 if(a%10==2) printf("2\n"); 这种语句太多了，难道不可以这样写吗： printf("%d\n",a%10); if也不需要了

user: user-3
content: 引用 10 楼 CSDN新手乐园常驻人口 的回复:[quote=引用 8 楼 jiht594 的回复：]int arr[] = {0,1,2,3,...,9} 余数 = a % 10; printf("%d\n", arr[余数]);  能短点直接把余数赋值进去不直接好了嘛，用数组就多了一步了吧[/quote] 没错. 不过如果数据没有规律, 就得用数组了. 比如int arr[] = {10,111,22,36,...,9}

user: user-0
content: 引用 12 楼 wowpH 的回复：第一次见这种写法，，，，初学者，low确实挺low

user: user-6
content: 我来吐槽下，楼主说的不错，回了好多帖子，很多问题都解决了，但大部分就是不结贴，很无语

user: user-0
content: 除了那个条件可以写成switch语句，还有啥可以优化的
user-0 提问: 为什么q输出不是21呢？

回复:
user: user-1
content: 编译器不一样，结果不一致，可能不同编译器计算顺序不一样。 VS结果 q为24

user: user-2
content: q=(++j)+(++j)+(++j) =(j=6)+(++j)+(++j) =(j=7)+(j=7)+(++j) =14+(++j) =14+8 =22

user: user-3
content: 百度序列点，你就会知道你的问题都是毫无意义的，答案是未定义的
user-0 提问: CRC校验

回复:
user: user-1
content: 代码本身没有问题，可能是代码的计算方式和数据的计算方式不一样 你需要知道你需要校验的数据的CRC计算方式是什么 你现在代码的多项式是x16+x15+x2+1，还有其他的例如x16+x12+x5+1 CRC计算有不同的标准，主要是计算多项式和初始值不一样
user-0 提问: C语言中exit (0)和exit (1)的区别

回复:
user: user-1
content: Terminates the calling process. The exit function terminates it after cleanup; _exit and _Exit terminate it immediately.

user: user-2
content: 不是只有exit(0)表示正常退出，其他的数都是异常退出吗？

user: user-3
content: 我自己的理解就是，return是函数退出，命令目标是调用者。exit是程序退出，目标也是调用者（系统）
user-0 提问: 请举例说明下面代码里的b 和 c 该怎么用。谢谢

回复:
user: user-1
content: 说错了，楼上的B是函数指针类型，b是一个函数类型，区别用法： b *func_b = .... B func_B = ....

user: user-2
content: typedef int (*b) (int c); 供参考～  楼主定义的看着别扭，应该是如上的定义吧。 这是定义了一个函数指针类型，即是类型。

user: user-1
content: b是一个定义的函数指针类型，c就是函数指针的一个参数名，可以省略，定义这个函数的时候，c的名字也可以改成其他名字。

user: user-3
content: ?  typedef int(*B)(int c);
user-0 提问: C语言题目，不会做，求助大家

回复:
user: user-1
content: #include<stdio.h> int main(void) {     int n, m;     int i = 0;     printf("Please input your two number \n");     scanf("%d %d",&n, &m);     while (i < n)     {         int j = 0;         while (j < n)         {             printf("%d  ", m);             j++;         }         printf("\n");         i++;     }     getchar();     getchar();     return 0; }

user: user-0
content: 好的，谢谢大家

user: user-1
content: while (j < n) 改成while (j <= i)即可  引用 4 楼 wenyehuang 的回复:从键盘输入数N和M，请使用循环来输出N行由数M组成的图形。  输入     输入两个整数N和M，两数间用空格隔开。  输出     输出相关数字图形。  输入示例     4 35  输出示例     35    3535    353535    35353535  数据范围     输入为int范围的整数

user: user-2
content: 上面的代码中while (j < n) 一行修改成 while (j < i)

user: user-0
content: 从键盘输入数N和M，请使用循环来输出N行由数M组成的图形。  输入     输入两个整数N和M，两数间用空格隔开。  输出     输出相关数字图形。  输入示例     4 35  输出示例     35    3535    353535    35353535  数据范围     输入为int范围的整数

user: user-2
content: 你要输出怎样的图形？？

user: user-0
content: 输出的结果不对呀
user-0 提问: c语言错误

回复:
user: user-1
content: 不是考试的话，可以敲敲代码看看。

user: user-2
content: 问题很多，其中最严重的是倒数第2行，s的值不能确定

user: user-3
content: 都是错，先编译过再说吧
user-0 提问: 怎么编译多文件程序

回复:
user: user-1
content: 新建项目后，在从项目里新建新的文件或者导入写好的文件 就可以了

user: user-0
content: 引用 4 楼 user-2的回复:[quote=引用 3 楼 weixin_45589388 的回复:] [quote=引用 1 楼 user-2的回复:]新建项目，选择第二个App开头的那个，然后新建文件都放在同一个目录下就可以了。 windows application?是这个嘛？[/quote]Console Application[/quote] 文件目录就是项目名？

user: user-2
content: 引用 3 楼 weixin_45589388 的回复:[quote=引用 1 楼 user-2的回复:]新建项目，选择第二个App开头的那个，然后新建文件都放在同一个目录下就可以了。 windows application?是这个嘛？[/quote]Console Application

user: user-0
content: 引用 1 楼 user-2的回复:新建项目，选择第二个App开头的那个，然后新建文件都放在同一个目录下就可以了。 windows application?是这个嘛？

user: user-0
content: windows application?是这个嘛？

user: user-2
content: 新建项目，选择第二个App开头的那个，然后新建文件都放在同一个目录下就可以了。
user-0 提问: c语言

回复:
user: user-1
content: int main() { 	 	float bmi_val,tizhong,shenggao; 	printf("输入身高CM:"); 	scanf("%f",&shengao); 	printf("输入体重Kg:"); 	scanf("%f",&tizhong); 	 	bmi_val = tizhong/(shengao*shengao/10000); 	printf("BMI:%f\n",bmi_val);  return 0; }   我随手敲的，没调试，你自己测试一下。
user-0 提问: c语言程序

回复:
user: user-1
content: int main() { 	int m=1,n=1,shang_val=0;yushu=0; 	shang_val = m/n;  	yushu = m%n;  	 	printf("%d,%d",shang_val,yushu); 	 	return 0; 	 } 随手敲的，自己调试。 应该自己动手去尝试。

user: user-2
content: 取余用这个符号：%
user-0 提问: 如果不是使用scanf函数的%s格式或gets函数输入字符串(例如getchar),请一定要在输入的每个字符串后加‘\0',否则printf和puts输出字符串

回复:
user: user-1
content: 引用 4 楼 weixin_45713744 的回复:[quote=引用 1 楼 wowpH 的回复:] 你贴的代码又没加结束符‘\0’。  #include<stdio.h> int main() { 	char str[15]; 	int i; 	for (i = 0; i < 4; i++) { 		str[i] = getchar(); 	} 	str[i] = '\0'; 	puts(str); 	return 0; }为什么使用DEV不会出现上述问题？[/quote]    从上图可以看到，DevCpp也是会出错的。 第14行是输入前的str的内存信息。有两个地方是错的。但是其他地方都初始化为0了。我也不知道为什么。 但是至少能看出来：不初始化字符数组是不安全的。 从黑框框的第1行输出可知。  我输入8个字符后，在左边可以看到后面一位刚好是\034，这并不是结束符。所以黑框框的第3行是乱码。  如果你输入的字符不是8个，而是1个，2个等等的话，由于后面一位就是结束符'\0'，所以就出现了你说的情况。  总之，两种做法，1、初始化（如第3行所示）；2、末尾加结束符。才能保证安全。  另外，DevCpp很垃圾的。。。至少我这么认为的。

user: user-2
content: 引用 1 楼 wowpH 的回复:你贴的代码又没加结束符‘\0’。  #include<stdio.h> int main() { 	char str[15]; 	int i; 	for (i = 0; i < 4; i++) { 		str[i] = getchar(); 	} 	str[i] = '\0'; 	puts(str); 	return 0; }为什么使用DEV不会出现上述问题？

user: user-0
content: 引用 1 楼 wowpH 的回复:你贴的代码又没加结束符‘\0’。  #include<stdio.h> int main() { 	char str[15]; 	int i; 	for (i = 0; i < 4; i++) { 		str[i] = getchar(); 	} 	str[i] = '\0'; 	puts(str); 	return 0; }  噢噢噢！明白明白了，谢谢。嘻嘻。

user: user-1
content: 你贴的代码又没加结束符‘\0’。  #include<stdio.h> int main() { 	char str[15]; 	int i; 	for (i = 0; i < 4; i++) { 		str[i] = getchar(); 	} 	str[i] = '\0'; 	puts(str); 	return 0; }
user-0 提问: 明显调用的表达式前的括号必须具有（指针）函数型；项不会计算为接受1个参数的函数

回复:
user: user-1
content: 第56行的变量名和函数名同名了。

user: user-2
content: 首先 1. 二维数组作为函数参数一般不这么定义  double getA(double R[M][M])  2. scanf_s("%f", &R[i][j]);  函数的用法你先确定是这么用的吗？ 一般用scanf("%f", &R[i][j]);  3. printf("%f\n", getA(R[M][M]));  当M为3的时候， R[3][3] 是不存在的，已经越界了，数组下标是从0开始的。
user-0 提问: 小白一枚，各位高手帮忙看一下哪里出错了，我20翻转出来是2不是02

回复:
user: user-0
content: 引用 4 楼 wowpH 的回复：可以当成一个字符串来收，反着输出即可。谢谢，已经解决了。

user: user-1
content: 可以当成一个字符串来收，反着输出即可。

user: user-0
content: 引用 2 楼 自信男孩 的回复：[quote=引用 1 楼 自信男孩 的回复:]  if (tmp < -10 || tmp > 10)     printf("%02d\n", r); else     printf("%d\n", r);  改成这样试试~  tmp是放在scanf之后，tmp  = n;即保存输入的n值，因为下面是对n计算了，值变了。 不严谨，改成这样：  if (tmp <= -10 || tmp >= 10)[/quote]😂测试了一下好像还是有点错误，应该是我自己的原因。还是非常感谢🙏

user: user-2
content: 引用 1 楼 自信男孩 的回复: if (tmp < -10 || tmp > 10)     printf("%02d\n", r); else     printf("%d\n", r);  改成这样试试~  tmp是放在scanf之后，tmp  = n;即保存输入的n值，因为下面是对n计算了，值变了。 不严谨，改成这样：  if (tmp <= -10 || tmp >= 10)

user: user-2
content: if (tmp < -10 || tmp > 10)     printf("%02d\n", r); else     printf("%d\n", r);  改成这样试试~  tmp是放在scanf之后，tmp  = n;即保存输入的n值，因为下面是对n计算了，值变了。
user-0 提问: errow c4430到底是怎么回事？  VS跟C++的语言编写一样吗？

回复:
user: user-1
content: 需要指定函数返回类型

user: user-1
content: #include<stdio.h> int main() {     printf("hello");     return 0; }  需要制定main的返回类型
user-0 提问: c语言

回复:
user: user-1
content: 你输入的是什么？ 如果是数字串，那么结果是“a是数字”那是正常的。 如果输入的是字母还是输出“a是数字”那就是有问题了。

user: user-2
content: 引用 1 楼 MRS1995 的回复:char ch; 大写字母   ch > 'A' && ch < 'Z' ; 小写字母   ch > 'a' && ch <'z' ; 数字          ch > '0' && ch < '9' ; 至于控制字符，我不知道是什么 其他都算控制字符

user: user-3
content: char ch; 大写字母   ch > 'A' && ch < 'Z' ; 小写字母   ch > 'a' && ch <'z' ; 数字          ch > '0' && ch < '9' ; 至于控制字符，我不知道是什么
user-0 提问: C语言$的运用

回复:
user: user-1
content: 里面的$和*这些应该是正则表达式，不过没看懂这个正则匹配的是什么。

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

user: user-3
content: 没见过，C语言里$没有特殊作用吧，你这代码能编译运行吗

user: user-0
content: 有大佬知道么。。。分不多，不胜感激
user-0 提问: 本人大一小白，求指导

回复:
user: user-0
content: 引用 1 楼 自信男孩的回复:建议直接贴代码～并把问题描述清楚～ 问题是图1问题，我敲的代码是图二

user: user-1
content: 建议直接贴代码～并把问题描述清楚～

user: user-2
content: #include <stdio.h> int main(int argc,char *argv[]) {         int centimeter;         float foot,inch;         scanf("%d",¢imeter);         foot = centimeter / 30.48;         inch = centimeter / (30.48 / 12) - (int)foot * 12 ;         printf("foot = %d\tinch = %d\n",(int)foot,(int)inch);         return 0; } 不知道有没有问题
user-0 提问: 大佬指点一下

回复:
user: user-1
content: float类型的输入格式是%f，不是%lf  另外，c1是和'A'比较吧，不是和A比较。  这些编译时会给出相应的error和warning

user: user-0
content: 多组输入不能输出，老哥，这又是为什么呢？

user: user-1
content: 引用 2 楼 casere 的回复:[quote=引用 1 楼 自信男孩的回复:]float类型的输入格式是%f，不是%lf  另外，c1是和'A'比较吧，不是和A比较。  这些编译时会给出相应的error和warning 需用对‘A’定义吗？[/quote] 不需要，因为'A'是常量.可以看一下'A'对应的十进制值。

user: user-0
content: 引用 1 楼 自信男孩的回复:float类型的输入格式是%f，不是%lf  另外，c1是和'A'比较吧，不是和A比较。  这些编译时会给出相应的error和warning 需用对‘A’定义吗？
user-0 提问: 菜鸟关于fread()函数读取文本文件出现的问题，求指点

回复:
user: user-0
content: 引用 3 楼 赵4老师 的回复:fopen “rt”此处应改为“rb" fread非常感谢您的指点，但将“rt”改为“rb"后，上面三处的打印结果没有改变，问题仍没能解决

user: user-1
content: fopen “rt”此处应改为“rb" fread

user: user-0
content: 引用 1 楼 赵4老师 的回复:不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n，写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换，遇到\x1a仍继续读;读写的内容当字节看待 弄混了麻烦赵老师，细说一下，实力太弱，未能看懂与我代码间存在问题的关系

user: user-1
content: 不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n，写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,ftell,fread,fwrite,fgetc,fclose //不作以上替换，遇到\x1a仍继续读;读写的内容当字节看待 弄混了

user: user-2
content: #include <stdio.h> #include <string.h> #include<stdlib.h>  #define SIZE 30000  struct IMU_data {     //char time[9];     char time[16];     double Accex;     double Accey;     double Accez;     double Gyrox;     double Gyroy;     double Gyroz;     //double Magnetx;     //double Magnety;     //double Magnetz;     int Magnetx;     int Magnety;     int Magnetz;  }imu[SIZE];  int main() {     int i = 0; long curpos, len1, len2;     FILE* fp = fopen("INS_d.txt", "rt");     if (NULL == fp)     {         printf("failed to open dos.txt\n");         exit(0);     }     fseek(fp, 0L, SEEK_END);     len1 = ftell(fp);     fseek(fp, 0L, SEEK_SET);     len2 = ftell(fp);     while (len2 != len1)     {         fread(&imu[i].time, 16, 1, fp);         fread(&imu[i].Accex, 8, 1, fp);         fread(&imu[i].Accey, 8, 1, fp);         fread(&imu[i].Accez, 8, 1, fp);         fread(&imu[i].Gyrox, 8, 1, fp);         fread(&imu[i].Gyroy, 8, 1, fp);         fread(&imu[i].Gyroz, 8, 1, fp);         fread(&imu[i].Magnetx, 4, 1, fp);         fread(&imu[i].Magnety, 4, 1, fp);         fread(&imu[i].Magnetz, 8, 1, fp);         //printf("%-9s %1.9f %1.9f %1.9f %1.4f %1.4f %1.4f,%2d,%2d,%2d\n", imu[i].time, imu[i].Accex, imu[i].Accey, imu[i].Accez, imu[i].Gyrox, imu[i].Gyroy, imu[i].Gyroz, imu[i].Magnetx, imu[i].Magnety, imu[i].Magnetz); //此处打印出现多余值，详见图1；         printf("%-9s %1.9lf %1.9lf %1.9lf %1.4lf %1.4lf %1.4lf,%2d,%2d,%2d\n", imu[i].time, imu[i].Accex, imu[i].Accey, imu[i].Accez, imu[i].Gyrox, imu[i].Gyroy, imu[i].Gyroz, imu[i].Magnetx, imu[i].Magnety, imu[i].Magnetz); //此处打印出现多余值，详见图1；         i++;         len2 = ftell(fp);     }     fclose(fp);     i = 0;     //printf("%-8s,%.9f,%.9f,%.9f,%.4f,%.4f,%.4f,%4d,%4d,%4d", imu[i].time, imu[i].Accex, imu[i].Accey, imu[i].Accez, imu[i].Gyrox, imu[i].Gyroy, imu[i].Gyroz, imu[i].Magnetx, imu[i].Magnety, imu[i].Magnetz);//此处尝试再次打印第1个结构体数组，但结果打印出全部数据，且再结尾处出现多余值，详见图2；     printf("%-8s,%.9lf,%.9lf,%.9lf,%.4lf,%.4lf,%.4lf,%4d,%4d,%4d", imu[i].time, imu[i].Accex, imu[i].Accey, imu[i].Accez, imu[i].Gyrox, imu[i].Gyroy, imu[i].Gyroz, imu[i].Magnetx, imu[i].Magnety, imu[i].Magnetz);//此处尝试再次打印第1个结构体数组，但结果打印出全部数据，且再结尾处出现多余值，详见图2；     printf("\n");     printf("%.9f", imu[9].Accex);//尝试调用任一结构体数组里的值，但输出为“0.00000”，详见图3；      return 0; }  供参考～  如果你的文件内容不是fwrite写入的，那么用fread读取可能不能正确解析到。 因此，如果是图2的文件内容，建议用fscanf读取～
user-0 提问: C语言问题，跪求大神解决。

回复:
user: user-1
content: 你可以Debug模式下F10单步执行看看就很清楚了`

user: user-0
content: 本人主编python，对C小白一枚，大神也可用python逻辑讲解，在此先谢谢了！
user-0 提问: 【求助】关于回调函数的一个小问题

回复:
user: user-0
content: 引用 4 楼 自信男孩的回复:因为类型不匹配，你定义的函数指针是没有返回值的:void，但是指向的函数是有返回值的:void *  第二个程序可以考虑这样： void* (*pocketFunc)(); 这样定义一个返回值是void *的函数指针就可以编译成功了～ 嗯嗯可以用了！谢谢老哥！

user: user-0
content: 引用 3 楼 提及的回复:点错了   void *pocketSwitch()  返回的是 void* 类型  你应该使用 typedef   typedef void(*Fp)();  Fp pocketSwitch(){ return normalPocket;}   啊啊啊可以用了！谢谢老哥！

user: user-1
content: 这时候就需要 赵4老师 了  见 https://bbs.csdn.net/topics/394731057  请问 x00 是什么

user: user-2
content: 因为类型不匹配，你定义的函数指针是没有返回值的:void，但是指向的函数是有返回值的:void *  第二个程序可以考虑这样： void* (*pocketFunc)(); 这样定义一个返回值是void *的函数指针就可以编译成功了～

user: user-1
content: 点错了   void *pocketSwitch()  返回的是 void* 类型  你应该使用 typedef   typedef void(*Fp)();  Fp pocketSwitch(){ return normalPocket;}

user: user-1
content: void *pocketSwitch()  返回的是 void* 类型  你应该使用 typedef   typedef void(*Fp)();

user: user-3
content: 有些变量为什么定义为寄存器变量呢，我把那些变量改为正常变量后，程序是可以正常运行的
user-0 提问: 大佬们，你们知道这个怎么分析吗

回复:
user: user-1
content: ASCII码也是int范围内的。ASCII码都有对应的十进制。

user: user-2
content: ？？c打印字符，d打印数字。97 98 a b

user: user-3
content: 这个需要分析吗？9798就是0x61 0x62，字符显示就是a b，整数显示还是9798
user-0 提问: 求救

回复:
user: user-1
content: 兄弟，你再去确认下题目

user: user-2
content: 有多少种情况还差不多

user: user-2
content: 我想你多半看错题干了

user: user-0
content: 题就是这样的啊  不会

user: user-2
content: 最少不就是都用5角~~ 都没条件，怎么玩？？
user-0 提问: 求教！

回复:
user: user-1
content: 一个程序有且只能有一个mani()函数

user: user-2
content: 一个程序里不能有两个main，相当于程序执行有两个入口，要进入那个入口？ 一山不容二虎～

user: user-3
content: 一个程序，只能有一个main。

user: user-0
content: 好哒好哒好哒，谢谢各位大佬
user-0 提问: 跪求大神帮找C语言全排列的错误

回复:
user: user-1
content: 仅供参考：//qplw.cpp #include <stdio.h> #include <string.h> #include <stdlib.h> int v=0; int w=0; int m;//记录字符串长度 int n;//记录字符串中的字符种类数 char map[256];//记录是哪几种字符 int count[256];//记录每种字符有多少个 int stack[1000];//递归用的栈，并记录当前生成的排列 void Make_Map(char *str) {//统计字符串的相关信息     int s[256];     int i;     memset(s,0,sizeof(s));     memset(count,0,sizeof(count));     m=strlen(str);     if (w<1 || m<w) w=m;     while(*str) {         s[*str]++;         str++;     }     n=0;     for (i=0;i<256;i++)         if (s[i]) {             map[n]=i;             count[n]=s[i];             n++;         } } void Find(int depth) {//递归式回溯法生成全排列     if (depth==w) {         int i;         for (i=0;i<depth;i++) putchar(map[stack[i]]);         putchar('\n');     } else {         int i;         if (v && depth>0) {             for (i=0;i<depth;i++) putchar(map[stack[i]]);             putchar('\n');         }         for (i=0;i<n;i++)             if (count[i]) {                 stack[depth]=i;                 count[i]--;                 Find(depth+1);                 count[i]++;             }     } } void main(int argc,char**argv) {     if (argc<2) {         printf("%s 要产生全排列的字符串 [限定长度|-1]\n",argv[0]);         return;     }     if (argc>=3) w=atoi(argv[2]);     if (-1==w) v=1;     Make_Map(argv[1]);     Find(0); } //C:\test>qplw //qplw 要产生全排列的字符串 [限定长度|-1] // //C:\test>qplw 123 //123 //132 //213 //231 //312 //321 // //C:\test>qplw 123 2 //12 //13 //21 //23 //31 //32 // //C:\test>qplw 122333 3 //122 //123 //132 //133 //212 //213 //221 //223 //231 //232 //233 //312 //313 //321 //322 //323 //331 //332 //333 // //C:\test>qplw 123 -1 //1 //12 //123 //13 //132 //2 //21 //213 //23 //231 //3 //31 //312 //32 //321 //  “给定一个小点的输入，完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门！ 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出
user-0 提问: 哪位大佬救救我？

回复:
user: user-1
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

user: user-2
content: printf参数写错了，改成 printf("%x",a);

user: user-3
content: 去掉printf中的&,加上&就是a的地址，不是a变量的值了。
user-0 提问: 冒泡排序

回复:
user: user-1
content: 引用 3 楼 自信男孩 的回复:[quote=引用 1 楼 就叫我小王吧 的回复:] 所以楼主是来送分的吗 没看出楼主的冒泡排序有问题吗？ 内层循环的判断跑哪去了？  if (nums[j] < nums[j+1]) //这儿根据是升序还是降序来决定是>还是<[/quote]  楼主都没问问题，我没有看他的代码，还以为他是要直接送分

user: user-2
content: 引用 1 楼 就叫我小王吧 的回复:所以楼主是来送分的吗 没看出楼主的冒泡排序有问题吗？ 内层循环的判断跑哪去了？  if (nums[j] < nums[j+1]) //这儿根据是升序还是降序来决定是>还是<

user: user-0
content: 引用 1 楼 就叫我小王吧的回复:所以楼主是来送分的吗 哈哈，最近报班学的嵌入式c基础. ，刚考完试，没咋打好，来求点分数安慰

user: user-1
content: 所以楼主是来送分的吗
user-0 提问: c语言求平均值，为什么这样不行

回复:
user: user-1
content: 首先double类型用%lf，所以把输入和输出都改成%lf即可～  另外，注意scanf中的逗号，输入时应该注意和scanf中的保持一致

user: user-2
content: 引用 3 楼 weixin_45761167 的回复:[quote=引用 1 楼 就叫我小王吧的回复:]scanf("%d,%d",&a,&b); 其中的%d代表整型，你的ab都是double型，应该用%f 问了同学，说要用lf%不是f%，不过还是谢谢你[/quote]   1、printf输出float和double都可以用%f，double还可以用%lf。 2、 scanf输入float用%f，double输入用%lf，不能混用。对于scanf，情况不同于printf，它接受指针，这里没有类似的类型提升。（通过指针）向float存储和向double存储大不一样，因此，scanf区别%f和%lf。

user: user-2
content: 引用 2 楼 weixin_45761167 的回复:问了同学，说要用lf%不是f%，不过还是谢谢你  不用谢。%f和%lf都可以输出实型数，只是保留的小数点后面的位数不一样，看想要的精度来选择。

user: user-3
content: 引用 楼主 weixin_45761167的回复: 要保留多少精度？可以把double改为float，输出时用%f也行，%f和%lf差别不大

user: user-0
content: 好的，我明白了问题的所在

user: user-0
content: 引用 1 楼 就叫我小王吧的回复:scanf("%d,%d",&a,&b); 其中的%d代表整型，你的ab都是double型，应该用%f 问了同学，说要用lf%不是f%，不过还是谢谢你

user: user-0
content: 问了同学，说要用lf%不是f%，不过还是谢谢你

user: user-2
content: scanf("%d,%d",&a,&b); 其中的%d代表整型，你的ab都是double型，应该用%f
user-0 提问: 新手请教，为什么字符串输入输出为什么要用数组呢？scanf还能理解，printf根本不需要啊？

回复:
user: user-1
content: printf没说要数组呢，可以这样的： char *str = "string"; printf("%s\n", str); 但是str就不能用scanf去修改了（写），因为str是只读的～
user-0 提问: 请问float 和double有什么区别

回复:
user: user-1
content: 你的两个图也没体现float和double啊， 类型一样，就是精度不同，可以理解为小数点后几位极限不一样。 还有你的输入输出要格式对，输入&取址，int是%d，double，float是%lf %f，输出的时候也一样， 还有%不要漏了，不然不会把你的f转义去用后面变量的值代替

user: user-2
content: float是单精度浮点数，double是双精度浮点数，就是小数点后面多少问题，float少，double多 输入格式控制 %d  对应 int %f  对应 float %lf 对应double %c 对应char 等等

user: user-3
content: float是单精度的，double是双精度的，比float精度更高

user: user-4
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

user: user-5
content: 和 float double 没关系 你的第一张图  %d输入double 当然GG
user-0 提问: 简单的C语言小问题

回复:
user: user-0
content: 引用 7 楼 pengbolan的回复:建议以后写这样的语句：if(i == 1)时，这样写：if(1 == i) ,这时，如果少写一个 = ，编译时就会报错，自然就不会再出现这样的问题，这时编码习惯 谢谢！get到了！！！感觉很实用

user: user-1
content: 建议以后写这样的语句：if(i == 1)时，这样写：if(1 == i) ,这时，如果少写一个 = ，编译时就会报错，自然就不会再出现这样的问题，这时编码习惯

user: user-2
content: 引用 5 楼 weixin_45753055 的回复:[quote=引用 3 楼 N_n_n_n_n_N的回复:]while循环条件是i<=n 所以if(i>n)没用 if(i==1)你写成if(i=1) 一个等号是赋值 所以循环次数跟你所预期的不同 ！！额谢谢谢谢谢 找到原原因了 [/quote] 麻烦结贴 谢谢

user: user-0
content: 引用 3 楼 N_n_n_n_n_N的回复:while循环条件是i<=n 所以if(i>n)没用 if(i==1)你写成if(i=1) 一个等号是赋值 所以循环次数跟你所预期的不同 ！！额谢谢谢谢谢 找到原原因了

user: user-0
content: 引用 1 楼 user-3的回复:为什么都喜欢传图片，不直接把代码复制上来。。。 好。。。不好意思啊 下次注意

user: user-2
content: while循环条件是i<=n 所以if(i>n)没用 if(i==1)你写成if(i=1) 一个等号是赋值 所以循环次数跟你所预期的不同

user: user-2
content: int main() { 	int mynumber, yournumber, n; 	int i = 0; 	scanf_s("%d%d", &mynumber, &n); 	while (i <= n) 	{ 		printf("Enter your number:"); 		scanf_s("%d", &yournumber); 		i++; 		if (yournumber < 0) 		{ 			break; 		} 		if (yournumber == mynumber) 		{ 			if (i == 1) 			{ 				printf("Bingo!\n"); 				break; 			} 			else if (i > 1 && i <= 3) 			{ 				printf("Lucky you!\n"); 				break; 			} 			else 			{ 				printf("Good Guess!\n"); 				break; 			} 		} 		else if (yournumber > mynumber) 		{ 			printf("Too big\n"); 		} 		else 		{ 			printf("Too small\n"); 		} 	} 	if (i > n) 	{ 		printf("Game over!\n"); 	}     return 0; }

user: user-3
content: 为什么都喜欢传图片，不直接把代码复制上来。。。
user-0 提问: 这个是哪里出错啊 可以输入但是没有输出显示出来

回复:
user: user-1
content: scanf("%d%f",&h,&r); Scanf()里换行符无效。你这个应该死在Scanf了 ，查查这个函数定义。

user: user-2
content: d=(4.0/3)*3.14*r*r*r; 在函数最后加一句system("pause");试试 或者加一条语句getchar();

user: user-3
content: 没错啊，没有输出显示出来是什么意思。 是一闪而过了？
user-0 提问: 简单 单词组倒序输出

回复:
user: user-0
content: 引用 3 楼 自信男孩 的回复:[quote=引用 2 楼 weixin_45234990 的回复:] 怎么了？我没有问题啊 ，就是分享 那可以把代码写的更好一些。建议循环变量用i, j, k等等 注释没必要那么多，简单的，能看懂的不建议加注释。 注释多了会起反作用。[/quote]好的 谢谢 嘿嘿

user: user-0
content: 引用 4 楼 自信男孩 的回复:还有变量定义根据需要定义长度～额。。。这个输入的字符串是不确定长度的，是以回车作为结束标志的

user: user-1
content: 还有变量定义根据需要定义长度～

user: user-1
content: 引用 2 楼 weixin_45234990 的回复:怎么了？我没有问题啊 ，就是分享 那可以把代码写的更好一些。建议循环变量用i, j, k等等 注释没必要那么多，简单的，能看懂的不建议加注释。 注释多了会起反作用。

user: user-0
content: 怎么了？我没有问题啊 ，就是分享

user: user-1
content: #include<stdio.h>  int main() {     //char a[1000];     char a[128];     int i, j;     int total;      a[0]=' ';     printf("请输入需要倒序的内容：");     for(i = 1; i < 128; i++)     {         scanf("%c", &a[i]);         if (a[i] == '\n')             break;     }     a[i] = ' ';     total = i;      printf("你输入的内容为：");     for(i = 0; i < total; i++)         printf("%c", a[i]);      printf("\n单词倒序输出为：");     for(i = total-1; i >= 0; i--)     {         if(a[i]==' ')         {             for(j = i + 1; ; j++) {                 if(a[j]!=' ')                     printf("%c",a[j]);                 else                     break;             }             printf(" ");         }     }      return 0; } 供参考~  楼主是什么问题？
user-0 提问: c小白求大神指教

回复:
user: user-1

user: user-1
content: int main() { 	for (int i = 1; i < 10000;i++) { 		long a = i * i; 		int j = 1; 		int iTemp; 		for (j = 0,iTemp = i;iTemp != 0;j++) { 			iTemp = iTemp / 10; 		} 		int num = 1; 		for (int k = 1; k <= j;k++) { 			num *= 10; 		} 		if (a % num == i) { 			cout << i << "\t" << a << endl; 		} 	} }

user: user-2
content: for循环判断当前数字几位 取乘积的后几位 与当前数字每一位比较 全部相等即为同构数  376*376=141376    376是三位数 用表达式取出个位十位百位数字 再取141376的个位十位百位数字 进行比较 相等就是同构数