Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 初学stm32,为什么keil5会出现这样的错误？怎么解决呢？

回复:
user: user-1
content: 我脖子被你弄骨折了，赔医药费！

user: user-2
content: 引用 3 楼 qq_45403798 的回复:[quote=引用 2 楼 ljk02079的回复:]看报错是语法问题，可能是keil5编译器有什么特殊的地方 看看下面的语句是否报错 1.   *(unsigned int *)0x40021018 = 1; 2.   *(unsigned int *)0x40021018 = unsigned int(1); 3.   *(unsigned int *)0x40021018 |= 1; 4.   *(unsigned int *)0x40021018 |= unsigned int(1); 可以解释是什么意思吗[/quote]  请先验证，然后告诉我测试结果。我是在尝试知道为什么会报语法错误，所以写几个语句验证一下，你告诉我1234那个能编译通过，那个不能通过就好

user: user-0
content: 引用 7 楼 user-3的回复:图片上看着  | = 和等号之间有空格，是不是不要有呀？ 对的，有空格。我改一改，试试可不可以

user: user-3
content: 图片上看着  | = 和等号之间有空格，是不是不要有呀？

user: user-0
content: 引用 5 楼 user-3的回复: 你看看这里是啥，成成 -c99 试试 我有改过了，然后也是错的但是--c99上边那行是空白的

user: user-3
content: 你看看这里是啥，成成 -c99 试试

user: user-0
content: 引用 1 楼 user-3的回复:~这个符号是不是被你写成中文的了？ 我都是在英文状态下敲的

user: user-0
content: 引用 2 楼 ljk02079的回复:看报错是语法问题，可能是keil5编译器有什么特殊的地方 看看下面的语句是否报错 1.   *(unsigned int *)0x40021018 = 1; 2.   *(unsigned int *)0x40021018 = unsigned int(1); 3.   *(unsigned int *)0x40021018 |= 1; 4.   *(unsigned int *)0x40021018 |= unsigned int(1); 可以解释是什么意思吗

user: user-2
content: 看报错是语法问题，可能是keil5编译器有什么特殊的地方 看看下面的语句是否报错 1.   *(unsigned int *)0x40021018 = 1; 2.   *(unsigned int *)0x40021018 = unsigned int(1); 3.   *(unsigned int *)0x40021018 |= 1; 4.   *(unsigned int *)0x40021018 |= unsigned int(1);

user: user-3
content: ~这个符号是不是被你写成中文的了？
user-0 提问: 为啥同样一段代码，在g++下AC了，c下面就是WA？求解~

回复:
user: user-1
content: id[34]=0; 这句代码已经越界了。id的长度是34，所以下表是从0开始[0, 33]；  引用 1 楼 user-2 的回复:7个%c，却输入了8个参数 你在数数是不是7个，还是8个%c

user: user-2
content: 7个%c，却输入了8个参数

user: user-0
content: 引用 2 楼 自信男孩 的回复:id[34]=0; 这句代码已经越界了。id的长度是34，所以下表是从0开始[0, 33]；  [quote=引用 1 楼 user-2 的回复:] 7个%c，却输入了8个参数 你在数数是不是7个，还是8个%c  [/quote]噢噢噢噢没注意，我是想初始化整个为0的，写错了…谢谢你！
user-0 提问: 小白++  --求助

回复:
user: user-1
content: 关于C,C++表达式求值顺序 http://blog.csdn.net/fefe82/article/details/37833767，http://bbs.csdn.net/topics/370153775

user: user-2
content: 错误的关键字 printf从右到左入参

user: user-2
content: 关键字  未定义行为 序列点 副作用 错误的关键字 printf从左到右入参   好了 慢慢百度吧  代码错结果没意义

user: user-3
content: 应该都是9吧

user: user-4
content: 直接贴代码吧，贴图片看不清楚和完整的代码～
user-0 提问: char buff[]单字节数据如何比较？

回复:
user: user-1
content: char有符号，unsigned可以  16进制默认表示的应该是无符号类型。

user: user-2
content: 趁机看评论

user: user-3
content: 我也是试了不行啊，咋办

user: user-4
content: 学习中，有收获。

user: user-5
content: 学习到了，感谢！！！

user: user-6
content: 学习了，楼主大牛

user: user-7
content: 都是大佬啊。。

user: user-8
content: 学习了，楼主大牛

user: user-9
content: char是有符号，改成unsign char就可以了，给的值有符号类型二进制前面一位会拿去当符号用

user: user-10
content: Char类型数组的一个索引位不是只能存入一个字节吗

user: user-11
content: 比较时保持类型一致，强转下需要对比的数

user: user-12
content: 应该还是可以的

user: user-13
content: 凡是不看对应汇编指令讨论单字节数据比较的都是隔靴搔痒。

user: user-14
content: if(buf[0]=='\xe3')

user: user-15
content: BYTE buff[];

user: user-16
content: (char[0]&0xFF)==0xE3

user: user-0
content: 最基础的东西，也容易被忽略

user: user-17
content: 666666

user: user-14
content: char buff[1] = { 0xe3 }; 	cout << CHAR_MIN << "~" << CHAR_MAX << "\n"; //获取当前环境char类型取值范围. 我的输出-128~127(C标准char类型与不同编译环境相关). 	cout << 0xe3 << "\n";                        //输出227 	cout << int(buff[0]) << "\n";                //输出-29 	cout << int(char(0xe3)) << "\n";             //输出-29 	/*虽然buff[0]保存0xe3,但是0xe3的数值不是char类型的取值范围,所以在编译或运行的时候,自动截断为char类型的取值范围。 	看输出结果明显知道：227-(-29)=256,即0xe3放进buff[]时减少了256.因为char只能容纳256个字符(-128~127).只要大于CHAR_MAX,就会一直减256,直到减到在范围内,只要小于CHAR_MIN，就会一直加256,直到加到在范围内.  	既然你已经确定传过来的接口数据是char类型,那么根据 0xe3 > 127 可以判断对方编译环境char取值范围为(0~255),也就我当前环境的unsigned char类型. 	如要进行比较,要么要进行转换，要么进行运算. 	*/  	if (buff[0] == 0xe3-256) 		cout << "相等" << "\n"; //输出：相等  	if (buff[0] == char(0xe3)) 		cout << "相等" << "\n"; //输出：相等  	typedef unsigned char u; //定义一个类型,"unsigned char"不方便大量写,简洁一个"u"代表它. 	if (u(buff[0]) == 0xe3) 		cout << "相等" << "\n"; //输出：相等

user: user-18
content: 受教了，很不错！
user-0 提问: 求助

回复:
user: user-1
content: 汇编学太久，好多记不清楚了。但是，int 这种好象只有两个与显示相关的，一个是bios，一个是dos，仅这两种调用。但是，它们都是原样显示！printf这些是做两个事情：1、形成最终输出的内容；2、输出内容。显然int与1无关，2则有可能是通过int实现的。  另外，正如我在2楼说的，计算机不只是x86，很多可能根本没bios这一套

user: user-2
content: 跟输出的格式有关系

user: user-0
content: 引用 2 楼 liups 的回复：没有关系。int 10h这种可能只有x86的机器才有，其他机器可能是别的机制了那是如何判断应该输出是int的值 还是字符呀

user: user-0
content: 引用 1 楼 user-3 的回复：输出是int 21h，但是输出格式是系统调用来实现的，跟int没有关系就是说45h输出成数字69或者是字符e是系统调用的事嘛

user: user-1
content: 没有关系。int 10h这种可能只有x86的机器才有，其他机器可能是别的机制了

user: user-3
content: 输出是int 21h，但是输出格式是系统调用来实现的，跟int没有关系
user-0 提问: 大学刚学C语言这里那不对啊 大佬们

回复:
user: user-0
content: 引用 7 楼 自信男孩 的回复：单词拼写错误，void，scanf有问题。都是一些比较低级的错误，建议写代码时多细心一些～  另外，多写也会解决这个问题～请问scanf这个错误怎么改呢

user: user-1
content: 单词拼写错误，void，scanf有问题。都是一些比较低级的错误，建议写代码时多细心一些～  另外，多写也会解决这个问题～

user: user-0
content: 引用 5 楼 MelonSuika 的回复：  大致就这些错误，编译器都提示你了感谢 感谢 感谢🙏

user: user-2
content: 大致就这些错误，编译器都提示你了

user: user-0
content: 引用 3 楼 风中柳心 的回复：<"stdio.h">用了<>就不需要加入双引号了吧……我觉得是<stdio.h>就行了。 然后第15行scanf("%d%d",&a,&b);少了一个双引号。 我是新手，目前只能发现这么多了谢谢了🙏

user: user-3
content: <"stdio.h">用了<>就不需要加入双引号了吧……我觉得是<stdio.h>就行了。 然后第15行scanf("%d%d",&a,&b);少了一个双引号。 我是新手，目前只能发现这么多了

user: user-0
content: 引用 1 楼 user-4 的回复：注意下中文字符与英文字符的问题  void    不是viod好的 谢谢

user: user-4
content: 注意下中文字符与英文字符的问题  void    不是viod
user-0 提问: strcat,strcpy同时使用出现的问题

回复:
user: user-1
content: “多一少一”问题占程序员常犯错误的10%以上！ 避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断，掰手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个？ <、<=、==、>、>=中的哪个？

user: user-2
content: strcat是把两个字符串拼接，那就是在目的串的末尾连上源串；  你的想法应该是strcpy的原来，即在ss+1的地方拷贝"123"

user: user-3
content: strcat理解有误，遇到\0再拼接，而不是当前位置

user: user-4
content: 引用 3 楼 丶无殇 的回复:[quote=引用 1 楼 user-5 的回复:] 放心 只是你理解错了 strcat的意思  这是连接  你把123 连接到321987后面结果当然是 321987123 至于ss+7 的确连接上去了 但是 和321987没关系 321987 后面有一个'\0' %s遇到这个 0 就停止输出 但是为啥ss+1的时候 结果不是21987123 而是321987123啊， 我感觉ss+1指向了第二位的2了呀[/quote]  因为你打印的是ss， 如果改成 printf("%s\n",ss+1); 就是23987123了

user: user-5
content: 引用 3 楼 丶无殇 的回复:[quote=引用 1 楼 user-5 的回复:] 放心 只是你理解错了 strcat的意思  这是连接  你把123 连接到321987后面结果当然是 321987123 至于ss+7 的确连接上去了 但是 和321987没关系 321987 后面有一个'\0' %s遇到这个 0 就停止输出 但是为啥ss+1的时候 结果不是21987123 而是321987123啊， 我感觉ss+1指向了第二位的2了呀[/quote]那你输出的也不是ss+1呀  你输出的是 ss 所以是321987123 你输入 ss+1 就是 21987123 了

user: user-0
content: 引用 6 楼 636f6c696e的回复:strcat理解有误，遇到\0再拼接，而不是当前位置 谢谢谢谢，非常感谢

user: user-0
content: 引用 5 楼 MelonSuika的回复:[quote=引用 3 楼 丶无殇 的回复:] [quote=引用 1 楼 user-5 的回复:] 放心 只是你理解错了 strcat的意思  这是连接  你把123 连接到321987后面结果当然是 321987123 至于ss+7 的确连接上去了 但是 和321987没关系 321987 后面有一个'\0' %s遇到这个 0 就停止输出 但是为啥ss+1的时候 结果不是21987123 而是321987123啊， 我感觉ss+1指向了第二位的2了呀[/quote]  因为你打印的是ss， 如果改成 printf("%s\n",ss+1); 就是23987123了[/quote] 好嘞好嘞，理解了，谢谢大家哈

user: user-0
content: 引用 4 楼 user-5的回复:[quote=引用 3 楼 丶无殇 的回复:] [quote=引用 1 楼 user-5 的回复:] 放心 只是你理解错了 strcat的意思  这是连接  你把123 连接到321987后面结果当然是 321987123 至于ss+7 的确连接上去了 但是 和321987没关系 321987 后面有一个'\0' %s遇到这个 0 就停止输出 但是为啥ss+1的时候 结果不是21987123 而是321987123啊， 我感觉ss+1指向了第二位的2了呀[/quote]那你输出的也不是ss+1呀  你输出的是 ss 所以是321987123 你输入 ss+1 就是 21987123 了[/quote] 好嘞好嘞，理解了，谢谢啦

user: user-0
content: 引用 1 楼 user-5 的回复:放心 只是你理解错了 strcat的意思  这是连接  你把123 连接到321987后面结果当然是 321987123 至于ss+7 的确连接上去了 但是 和321987没关系 321987 后面有一个'\0' %s遇到这个 0 就停止输出 但是为啥ss+1的时候 结果不是21987123 而是321987123啊， 我感觉ss+1指向了第二位的2了呀

user: user-5
content: 放心 只是你理解错了 strcat的意思  这是连接  你把123 连接到321987后面结果当然是 321987123 至于ss+7 的确连接上去了 但是 和321987没关系 321987 后面有一个'\0' %s遇到这个 0 就停止输出
user-0 提问: 如何使用getch()函数时在键盘上输入EOF

回复:
user: user-0
content: 请各位大神，帮我解决这个难题。我就想知道（c = getch()) != EOF 能不能行，具体不能行的原因是什么。请各位大哥们指教。

user: user-1
content: 引用 1 楼 丶无殇 的回复:用getch()的好像不多吧，而且你的那个c应该是char字符型变量，我一般用的sacnf()！=EOF比较多  #include <stdio.h>  int main() {     char c;     while(scanf("%c",&c)!=EOF)     {         printf("%c", c);     }     return 0; }  c用int类型吧，如果要与EOF比较，还是用int类型。 因为EOF是int类型～

user: user-2
content: ctrl+D试试

user: user-3
content: Ctrl+C 或 Ctrl+Break

user: user-4
content: 别人都说用Ctrl+Z可以。但我就是没试出来

user: user-0
content: 之所以把c定义为int类型，是因为有足够大的空间可以容纳EOF。 另外，求教getch()!= EOF 时，如何输入EOF，从而使程序结束。

user: user-5
content: 用getch()的好像不多吧，而且你的那个c应该是char字符型变量，我一般用的sacnf()！=EOF比较多  #include <stdio.h>  int main() {     char c;     while(scanf("%c",&c)!=EOF)     {         printf("%c", c);     }     return 0; }
user-0 提问: 求助大神！关于C语言的问题！！

回复:
user: user-0
content: 引用 4 楼 棉猴 的回复：为什么 T_Cell stack[top] = { cell.row, cell.colum };   代码会报错呢？原因就是这行代码是定义了一个stack数组，这个数组中的元素是T_Cell，数组中元素的个数是top。但是  也就是说，编译器以为你要定义一个stack数组，所以要求top必须是常量。但是你的top不是常量，故而报错。 解决的方法楼上的朋友已经给出了，不再赘述。或者给T_Cell重载一个=操作符也可以考虑。感谢大神，我终于搞懂了

user: user-1
content: 为什么 T_Cell stack[top] = { cell.row, cell.colum };   代码会报错呢？原因就是这行代码是定义了一个stack数组，这个数组中的元素是T_Cell，数组中元素的个数是top。但是  也就是说，编译器以为你要定义一个stack数组，所以要求top必须是常量。但是你的top不是常量，故而报错。 解决的方法楼上的朋友已经给出了，不再赘述。或者给T_Cell重载一个=操作符也可以考虑。

user: user-0
content: 引用 2 楼 user-2 的回复:改成这样： 			stack[top].row = cell.row; 			stack[top].colum = cell.colum; 感谢！感谢！我找了半天没找出来。谢谢大神

user: user-2
content: 改成这样： 			stack[top].row = cell.row; 			stack[top].colum = cell.colum;

user: user-2
user-0 提问: 菜鸟求救

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

user: user-2
content: 到底是什么意思这种说法？

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

user: user-4
content: 可以运行，for中第一条语句是if语句也是运行。根据for执行顺序来的～

user: user-5
content: 可以的，你能想到的都可以运行

user: user-6
content: 为什么不可以呢  for(int i = 1; i < 100; i++){     if(i % 2 == 0){            //代码块     }else {         //代码块      } }

user: user-2
content: 括号里面的吗？不可以这样写哦
user-0 提问: realloc 动态内存分配时报错

回复:
user: user-1
content: #include <stdio.h> #include <stdlib.h>  //void main() int main() {     int num = 0;      scanf("%d", &num);     double *p = (double *)malloc(sizeof(double)*num);     if (!p)         exit(0);      printf("%x\n", p);     for (double i = 0.0; (int)i < num; (int)i++)     {         p[(int)i] = 1.1 + i;         printf("%f\n", p[(int)i]);     }      int newsize = 0;     scanf("%d", &newsize);       double *newp = (double *)realloc(p, sizeof(double)*newsize);      printf("%x\n", newp);       for (int i = 0; i < newsize; i++)     {         newp[i] = i + 1.2;           printf("%f\n", newp[i]);     }       //free(p);     free(newp);      system("pause"); } 供参考～  虽然一次malloc，一次realloc，但是free只需要一个就可以。原因建议查一下realloc的原理。  楼主的断点错误是因为两次free导致的，去掉第一个free(p);即可～

user: user-1
content: 报的是什么错？
user-0 提问: 各位大虾来指点一下

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:你hello.c文件的路径在哪里？ 没找到路径在哪！自己下了个2017摸索着玩，书上的是2010，没在磁盘找到，但我昨晚后在本地调试成功了！

user: user-1
content: 你hello.c文件的路径在哪里？
user-0 提问: 无法打开文件

回复:
user: user-0
content: 引用 3 楼 user-1的回复:无法打开test.h文件是在哪里报错的？ 一般把函数的定义放到cpp文件中。 好的，懂了，谢谢了，，，

user: user-1
content: 无法打开test.h文件是在哪里报错的？ 一般把函数的定义放到cpp文件中。

user: user-1
content: #define PRICE 30 后面的；分号去掉~

user: user-1
content: total = number * ... 这句后面少了；分号
user-0 提问: 牛顿插值的C语言代码求助

回复:
user: user-1
content: 以前做过的。 A的形式，四个点分别是：（1，5），（2，4），（3，3），（4，9） 	//double A[2][ORDERS] = { 	//	1, 2, 3, 4, 	//	5, 4, 3, 9 	//}; /* 牛顿插值法 @param *A 已知点的值 @param n 点的个数 @param t 要求的点 */ double Newton(double *A, int n, double t) { 	double *Fn, y; 	int i, j; 	Fn = (double*)malloc(n * sizeof(double)); // 申请内存，保存fn 	for (i = 0; i < n; i++) 		Fn[i] = A[n + i]; // 拷贝y 	for (i = 1; i < n; i++) // 循环n-1次 		for (j = n - 1; j >= i; j--) // 求第i阶均差 			Fn[j] = (Fn[j] - Fn[j - 1]) / (A[j] - A[j - i]); // 计算某一均差，相差不是1 	y = Fn[n - 1]; // 最里层直接赋值 	for (i = n - 2; i >= 0; i--) 		y = Fn[i] + (t - A[i]) * y; 	return y; }
user-0 提问: 救命，单链表的创建

回复:
user: user-0
content: 蟹蟹大家，我再查看一下

user: user-1
content: #include <stdio.h> #include <iostream> using namespace std; typedef int Status; typedef int ElemType;  typedef struct Lnode {     ElemType data;     struct Lnode *next; } LinkList;  void Createlist_L(LinkList *L, int n) {      L = (LinkList *)malloc(sizeof(LinkList));     L->next = NULL;     printf("pls input data:\n");      for (int i = n; i > 0; i--)     {         LinkList *P = NULL;         P = (LinkList *)malloc(sizeof(LinkList));         cin >> P->data; //输入元素值         P->next = L->next;         L->next = P;     } }  int main(int argc, char const *argv[]) {     LinkList *temp = NULL;     Createlist_L(temp, 3);     system("pause");     return 0; }  我C不太熟，用C++写的，也是新手，说说自己的理解，你用引用传入的话，不是内存在main函数就应该已经分配内存了吧，这边不需要分配内存了吧

user: user-2
content: scanf("%d", &P->data); 试试这个～

user: user-2
content: scanf有问题，看一下scanf的原型～

user: user-3
content: 数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

user: user-1
content: 你P不是没有声明吗？，而且你mallocP的时候数据类型是结构体，下面data赋值的时候又用了指针的->

user: user-4
content: 没看出来 ，这个报错和main无关 我在VS2019上试了下没问题。 你用的VC6。0？

user: user-5
content: 为什么没有main函数

user: user-0
content: 引用 1 楼 子衿兄的回复:报什么错呢？ 第二张图片上面有写的。

user: user-4
content: 报什么错呢？
user-0 提问: c,将字符串s中的c删除并输出字符串s

回复:
user: user-1
content: #include <stdio.h> #include <string.h> //void main() int main() {     char s[81];int i;     gets(s);     for(i=0;i<strlen(s);) {         if(s[i]=='c')             strcpy(s+i,s+i+1);         else //if(s[i]<='a' && s[i]>='z')             i++;         //puts(s);     }     puts(s);      return 0; } 供参考～ 不知道你说的四处都是需要在哪里填写，但是如果不大else if的条件去掉，程序无法正常退出。  建议自己在环境里编译运行一下

user: user-0
content: 原题4处填空， 1.填写头文件，为strcpy函数提供原型 2.for(__2__;i<strlen(s);)我填i=0 3.if语句下一行空白填空，我填写strcpy(s+i,s+i+1) 搞不懂的是for没有把i++;包含进去怎么实现循环?

user: user-2
content: i++可以写在循环体中
user-0 提问: 为什么这个NO输出不了，编程小白请求大神斧正

回复:
user: user-1
content: float表示时会有精度问题，可能会导于0.1+0.2 > 0.3 有可能。

user: user-2
content: float表示时会有精度问题，可能会导于0.1+0.2 > 0.3

user: user-3
content: 建议把a, b, c定义为int类型，为什么要定义为double呢？ 从你的程序里可以看到没有浮点数比较的影子。 浮点数比较和整型数比较大小是有区别的。建议从网上搜一下浮点数比较大小和浮点数和0比较的方法

user: user-4
content: 你为啥要输入逗号 引用 3 楼 肖亭亭亭亭 的回复:引用 1 楼 與蘤舊縐 的回复：百分号拿来干什么还有，为什么我输入0.1，0.2，0.3电脑输出yes

user: user-5
content: 多了%.........................

user: user-0
content: 引用 1 楼 與蘤舊縐 的回复：百分号拿来干什么还有，为什么我输入0.1，0.2，0.3电脑输出yes

user: user-0
content: 引用 1 楼 與蘤舊縐 的回复：百分号拿来干什么哦哦

user: user-6
content: 百分号拿来干什么
user-0 提问: 萌新求问，c语言if比较数值大小会产生整数值0，1，怎么打印出这个值？

回复:
user: user-1
content: bool可以理解为int类型，那么直接用%d输出即可～

user: user-2
content: %d直接打印呀

user: user-3
content: bool flag = i < j; printf("%d\n",flag);
user-0 提问: 新手求助!

回复:
user: user-1
content: 画个图就出来了：p = p1（p所指的是p1所指 的x） p1=p2（p1所指的是p2所指 的y） p2 = p(p2所指的是p所指 的x) 所以p1->y,p2->x  指针的指向是交换了的。但是。指针其本体你就认为是值传递吧。值传递的特点是里面你对参数如何改变不影响外面的值，所以看似改了p1和p2的内容（指针的内容是地址。指针的内容是地址。指针的内容是地址。），但外面x,y所对应的内存中的数据并没有发生任何改变 所谓指针做参数为什么特殊：就是因为指针所存的是地址而特殊。你在函数里没有对地址中的内容进行改变。那那样的改变就毫无意义，无法影响外部。  说的有点多，具体去百度：指针作为参数传递。有讲解。问老师也行

user: user-2
content: 只是交换了p1,p2指向的地址，结果是p1指向y,p2指向x,但并未改变地址上储存的值

user: user-0
content: 有人康康我吗……😞
user-0 提问: 如何在txt文件中输入文件结尾

回复:
user: user-1
content: 引用 4 楼 自信男孩 的回复:这个文件末尾不是输入进去的，而是程序去读文件时，读到文件的的末尾会自动返回的。  如果要了解更多，建议学习一下文件系统。 应该是这样的

user: user-2
content: 这个文件末尾不是输入进去的，而是程序去读文件时，读到文件的的末尾会自动返回的。  如果要了解更多，建议学习一下文件系统。

user: user-0
content: 引用 2 楼 weixin_40290083 的回复：如果使用文本编辑器的编辑txt文档，保存后自动会在文件结束加上文件结束符，ctrl+z是在使用命令提示符或者某些命统提示符应用程序时用来输入文件结束的。谢谢

user: user-3
content: 如果使用文本编辑器的编辑txt文档，保存后自动会在文件结束加上文件结束符，ctrl+z是在使用命令提示符或者某些命统提示符应用程序时用来输入文件结束的。

user: user-4
content: 后面没数据了不就结束了啊。为什么还要写“文件结尾”。
user-0 提问: 不进这个if 语句这是为什么啊？

回复:
user: user-1
content: if ((strcmp(stl[i].stmc, stl[d].stmc) == 0) && (strcmp(stl[i].number, stl[d].number) == 0))

user: user-0
content: 引用 5 楼 user-2的回复:你查查这个函数说明，先理解这个函数再说吧 似乎，可以了。感谢！

user: user-2
content: 你查查这个函数说明，先理解这个函数再说吧

user: user-0
content: 引用 3 楼 user-2的回复:你的代码没有拍全，看你的代码应该是作业，不涉及商业秘密，没有遮掩，不知道你的d值是如何来的，如果d值正确，那么 st[i].stmc.strcmp(st[d].stmc)，因为你使用的是下标取值也以没有必采使用取址符&， 数值是都是1，还是不进if语句，

user: user-2
content: 你的代码没有拍全，看你的代码应该是作业，不涉及商业秘密，没有遮掩，不知道你的d值是如何来的，如果d值正确，那么 st[i].stmc.strcmp(st[d].stmc)，因为你使用的是下标取值也以没有必采使用取址符&，

user: user-0
content: 引用 1 楼 user-2的回复:C语言中的字符串的比较要使用strcmp，而不是== 那，这个结构体数组还需要加括号嘛？

user: user-2
content: C语言中的字符串的比较要使用strcmp，而不是==
user-0 提问: excel打开csv 用c语言实现

回复:
user: user-0
content: 引用 5 楼 赵4老师的回复:system("./excel abc.csv");//? 一样的错误  找不到.   系统里没安装  不支持吧

user: user-1
content: system("./excel abc.csv");//?

user: user-0
content: liunx系统里没有excel.exe啊   还有别的办法么

user: user-0
content: 引用 1 楼 赵4老师的回复:system("excel.exe abc.csv");  liunx系统里没有excel.exe啊   还有别的办法么

user: user-0
content: 引用 1 楼 赵4老师的回复:system("excel.exe abc.csv"); 还有其他方法么  这个好像不可以

user: user-1
content: system("excel.exe abc.csv");
user-0 提问: 大佬帮萌新解个答呀

回复:
user: user-1
content: 因为int *p没有给它赋初值，那么一般来说默认就是0。这样调用a后，就会给0地址赋值 8,这是严重不允许的。 因为0址是系统内存，你写的程序是应用程序 ，不能直接访问，会出异常。
user-0 提问: 为何这段代码运行时会无限循环

回复:
user: user-1
content: 一下是VS2015调试的结果  另外就是像楼上朋友说的，int a[3]表示a[0],a[1],a[2]。如果想用a[3]，需要 int a[4];

user: user-2
content: a[3]只能存储三个数字，a[0],a[1],a[2],没有a[3]哟
user-0 提问: 新手求教，一个疑问>_<

回复:
user: user-1
content: 你这个max是定义了，不是声明。 如果你光有 int max(int x,int y) 这一行，没有后面大括号的东西才叫声明。

user: user-2
content: 编译器检查规则的问题～不必过于理解，建议用哪个编译器熟悉对应的便器规则～

user: user-0
content: 引用 1 楼 user-3的回复:编译器都有严格和宽松选项的 请问一下知不知道要在哪里改严格呀？

user: user-3
content: 编译器都有严格和宽松选项的

user: user-3
content: 这个要具体看哪个环境，查下手册
user-0 提问: 日历题，卡在一步了，求解决

回复:
user: user-1
content: 输入end，这是输入字符串。那就需要%s。 不建议这么做，可以输入-1结束呢。这样和%d还匹配，改动最小。  if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) { 多出重复的代码，建议用一个函数来实现。 并做如下修改：  if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
user-0 提问: c 语言入门

回复:
user: user-1
content: int max(int x, int y); //下面定义max的后面分号去掉，这里是定义而不是声明 注意区分函数定义和函数声明的区别，函数声明是一条语句，因此后面要加分号；

user: user-2
content: 先定义max函数，再使用main函数

user: user-3
content: max函数的声名放到main外面，定义（就是有函数实体的那个）后面不需要添加分号

user: user-4
content: scanf引号位置错了
user-0 提问: 想问问这个程序运行结果怎么不对啊！谢谢大佬！！

回复:
user: user-0
content: 可以啦！验算的时候忘记中英切换了🙈

user: user-0
content: 引用 6 楼 Ayoko_gmy的回复:ac啊。。。 我现在是先比较ab，再比较ac，最后比较bc，但是还是不行orz

user: user-1
content: ac啊。。。

user: user-0
content: 引用 3 楼 Ayoko_gmy的回复:a=3，b=3,c=4呢 a=3,b=2,c=1呢 那这样最后一次比较还是比较a和b对吗？

user: user-0
content: 引用 3 楼 Ayoko_gmy的回复:a=3，b=3,c=4呢 a=3,b=2,c=1呢 噢噢我懂了！我再试试吧，谢谢！

user: user-1
content: a=3，b=3,c=4呢 a=3,b=2,c=1呢

user: user-0
content: 引用 1 楼 棉猴的回复:a和c还没比呢？ 但是第一步就赋值到a＜b，第二次b＜c应该不用比较a和c了吧

user: user-2
content: a和c还没比呢？
user-0 提问: 《新手求救》各位帮我看看为什么这个题输出成这样了。题目是输入年月日，然后输出是今年第几天，我写完之后运行，无论输入什么都输出这个

回复:
user: user-1
content: scanf是格式化输入，因此需要按照格式输入，这个格式是自己定义的，默认的没有其他符号的，以空格隔开。 自己也可以定义格式，比如逗号，分割。  但是不建议在scanf中加'\n'。

user: user-0
content: 引用 1 楼 user-3的回复:搜一下scanf的用法。  算了，直接告诉你吧。  输入如下数据： 2019 2 6  可以了，感谢可以了，感谢

user: user-0
content: 引用 4 楼 关于现在和未来的我的回复:可以把这个代码，给我复制一下吗？ #include<stdio.h> int main() {   int year,flag,month,day,sum;     scanf("%d%d%d",&year,&month,&day);     if(year%4==0 && year%100!=0 || year%400==0) 	flag=1; 	else 	flag=0; 	if(flag==1) 	{ 		switch(month) 		{ case 1:sum=0;break;  	      case 2:sum=31;break; 	      case 3:sum=59;break;           case 4:sum=90;break; 	      case 5:sum=120;break; 	      case 6:sum=151;break;           case 7:sum=181;break;        	  case 9:sum=243;break;           case 10:sum=273;break;        	  case 11:sum=304;break; 		  case 12:sum=334;break;};}; 	if(flag==0) 	{   switch(month) 	   { case 1:sum=0;break;  	      case 2:sum=31;break; 	      case 3:sum=60;break;           case 4:sum=91;break; 	      case 5:sum=121;break; 	      case 6:sum=152;break;           case 7:sum=182;break;        	  case 9:sum=244;break;           case 10:sum=274;break;        	  case 11:sum=305;break; 		  case 12:sum=335;break;};}; 	      sum=sum+day; 	printf("%d",sum); 	return 0; }

user: user-2
content: 2019  2 6   用空格就可以了

user: user-2
content: 对✓，输入不用用  ，相隔

user: user-3
content: 搜一下scanf的用法。  算了，直接告诉你吧。  输入如下数据： 2019 2 6
user-0 提问: c语言

回复:
user: user-1
content: scanf_s()函数是scanf()函数的安全版本。VS2015中使用scanf()函数，在编译时会报错  error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.  错误信息为“scanf()函数不安全，要使用scanf_s()来代替。如果不显示这些错误信息，则要使用_CRT_SECURE_NO_WARINGS”。除了使用_CRT_SECURE_NO_WARINGS之外，还可以在应用程序向导中进行设置来实现VS2015中使用scanf()函数的目的。 具体内容请参考《VS2015中使用scanf()不报错的设置方法》 希望能够帮到你！

user: user-2
content: 代码最上面加上下面这句或者在IDE里面设置忽略4996的警告即可： #pragma warning(disable:4996)

user: user-3
content: 我运行没毛病啊 是不是你没有引用math的包？ #include <stdio.h> #include <math.h> int main(void) {  	double x,y;     scanf("%lf",&x); 	y=sin(x);     printf("%lf,%lf",x,y); 	return 0; }

user: user-0
content: 不知道出什错了        －－
user-0 提问: 这个错在哪里了，为什么啥都输不出来

回复:
user: user-1
content: #include<stdio.h>  int main() {     /*     int n,i,j=0;     int a,b,c;      scanf("%d",&n);        for(i=100;i<1000;i++)        {        a = i%10;        b = i/10%10;        c=i/100;        if(a+b+c==7)        j++;        }        if(j==n)        printf("%d\n",i);        */      int n, idx, tmp;     int sum = 0, cnt = 0;      scanf("%d",&n);     idx = 100;     while (idx < 1000) {         tmp = idx;         while (tmp) {             sum += tmp % 10;             tmp /= 10;         }         if (sum == 7)             cnt++;         if (cnt >= n)             break;         idx++;         sum = 0;     }      if (cnt == n)         printf("No.%d\n", idx);     else         printf("n is too big!\n");      return 0; } 供参考～  n不能太大，如果太大确实无输出。因为在1000以内的三位数里可能没有n个每位和是7的。

user: user-2
content: 引用 1 楼 ghffffyb 的回复：#include<stdio.h> int main() { 	int n,i,j=0; 	int a,b,c; 	scanf("%d",&n); 	for(i=100;i<1000;i++) 		{    		    a=i%10;b=i/10%10;c=i/100; 			if(a+b+c==7) 			j++; 		} 		if(j==n) 		printf("%d\n",i); 	}if(j==n) printf(“%d”,I); 放到循环里

user: user-3
content: 你应该在for最后j++改为printf("%d ",i);就行了最后的if输出就去掉

user: user-3
content: 只有你输入的n等于 100到999之间等于7的数目才输出

user: user-3
content: 为什么你最后输出的是i

user: user-4
content: #include<stdio.h> int main() {     int n, i, j = 0;     int a, b, c;     int ra[600] = { 0 };     scanf("%d", &n);      for (i = 100; i < 1000; i++)     {         a = i % 10;         b = i / 10 % 10;         c = i / 100;          if (a + b + c == 7)         {             ra[j] = i;             j++;         }     }      if (n <= j + 1)         printf("%d\n", ra[n - 1]);      return 0; } 这样你觉得可行？

user: user-0
content: #include<stdio.h> int main() { 	int n,i,j=0; 	int a,b,c; 	scanf("%d",&n); 	for(i=100;i<1000;i++) 		{    		    a=i%10;b=i/10%10;c=i/100; 			if(a+b+c==7) 			j++; 		} 		if(j==n) 		printf("%d\n",i); 	}
user-0 提问: 我是一个学生  哪位跟我讲解下

回复:
user: user-1
content: 计算公式也可以用mach.h头文件

user: user-1
content: a和b应该也要定义为double类型，然后提示用户输入，在scanf输入a和b，scanf("%lf %lf",&a,&b)，再用你那个s＝2*a*b/((a+b)*(a+b))，在输出s，printf("s＝%.2lf\n",s)
user-0 提问: C语言计算最小公倍数

回复:
user: user-1
content: 求最小公倍数，建议可以顺便算一下最大公约数,比如x, y的最大公约数是z，那么最小公倍数即x * y / z

user: user-2
content: 因为x++这个， 之前你输入6  ，4时候，x变成了2，； 你下次输入3， 3时候，x还是2， 你想想就知道结果了，你把x=1初始化，放在循环内，就可以解决问题了吧

user: user-3
content: 引用 4 楼 user-3 的回复:用编译器调试一下就知道了。  调试时必备的技能之一。 时 -> 是

user: user-3
content: 引用 3 楼 qq_45724609 的回复:[quote=引用 2 楼 user-3的回复:]2 6 4 12 3 3 6 请按任意键继续. . . 您好，谢谢您找出问题，但是输入3 3，则a=3,b=3,3％3=0,那应该直接输出3＊1，即3啊，为什么会输出6呢[/quote]用编译器调试一下就知道了。  调试时必备的技能之一。

user: user-0
content: 引用 2 楼 user-3的回复:2 6 4 12 3 3 6 请按任意键继续. . . 您好，谢谢您找出问题，但是输入3 3，则a=3,b=3,3％3=0,那应该直接输出3＊1，即3啊，为什么会输出6呢

user: user-3
content: 2 6 4 12 3 3 6 请按任意键继续. . .
user-0 提问: 请帮忙讲解一下，谢谢！

回复:
user: user-1
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！

user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-2
content: Debug下单步执行一下就比较清楚了~

user: user-3
content: 因为x=1，所以第一层的switch进入到case1，然后进入到第二层switch，由于y = 0，所以执行第一个case 0，得到a++，即此时a是1； 由于第一层switch的case 1没有break,所以继续执行case2，因此执行a++, b++;break出第一层switch。得到的结果 就是a = 2, b = 1;
user-0 提问: 新手求教

回复:
user: user-1
content: getchar()用来读取输入的字符, 如果输入 '\n' (回车) 则条件不成立,退出循环

user: user-2
content: while里是循环条件，每一次要进行循环体都要判断 这个条件是否成立，成立就进入，不成立就退出循环 ｃｈ　＝　ｇｅｔｃｈａｒ（）　！＝　＇＼ｎ＇就是输入的字符是否等于换行 假如输入ａ，＇ａ＇  不等于＇＼ｎ＇，这个条件成立，就会进入循环里面 假如按了下回车，那么这个不等于条件就不成立，就退出循环。

user: user-0
content: 引用 1 楼 子衿兄的回复:换行，也就是输入的时候如果输了回车键，就退出循环 \n是换行，！＝是判断是否不等于，那连起来什么意思

user: user-2
content: 换行，也就是输入的时候如果输了回车键，就退出循环
user-0 提问: 我是小白，有个问题想请大佬们帮我看看，我看不明白

回复:
user: user-1
content: 引用 4 楼 weixin_45740438 的回复:我弄好了，谢谢大佬，我把前面的数字去掉了，就好了 这种问题，你在编译的时候引入的，还是你拷贝别人的代码引入的。 我猜是第二种可能。

user: user-2
content: 引用 1 楼 user-5 的回复:你把build框报的错说全啊你这行代码是没问题的 代码没有看出来有问题！错误信息不全

user: user-3
content: 要换行加个斜杠 #include <stdio.h> void  main() {     printf("Hello Feiends,Welcome to study C \ language\n"); }

user: user-0
content: 引用 5 楼 自信男孩的回复:[quote=引用 4 楼 weixin_45740438 的回复:] 我弄好了，谢谢大佬，我把前面的数字去掉了，就好了 这种问题，你在编译的时候引入的，还是你拷贝别人的代码引入的。 我猜是第二种可能。[/quote] 我按照教科书，一个字一个字扣在里面了，我以为在电脑里面也是那样的

user: user-0
content: 我弄好了，谢谢大佬，我把前面的数字去掉了，就好了

user: user-4
content: 引用 楼主 weixin_45740438的回复:1   #include <stdio.h> 2   void  main() 3   { 4	     printf("Hello Feiends,Welcome to study C language\n"); 5   }  第四行上下是一行上的，但在这里发布就变成了两行 然后我运行不了，肯定是哪里出错了，但又不懂  HelloFriends.obj - 2 error(s), 0 warning(s)  上面这段是Build 框框里面的 这该怎么弄，大佬们 在language之前有一个换行符，把光标放到language之前回退一下。

user: user-5
content: 你把build框报的错说全啊你这行代码是没问题的
user-0 提问: 新手求教

回复:
user: user-0
content: 哦哦，好的。我还以为只是隔开

user: user-1
content: 这是一个运算符，逻辑或运算，表示两边的表达式，有一个为真，则为真

user: user-2
content: ||是“或”的意思，只要其中一个条件满足就行
user-0 提问: C初学者求救信号发送

回复:
user: user-1
content: 引用 10 楼 Sichongzou32的回复:[quote=引用 9 楼 wowpH的回复:]麻烦提供两组以上的测试数据以及期望的结果。 asdfgfdaa a 3[/quote] 那你这个错的有点离谱。  难道不是先接收字符串，再接受那一个a吗？为什么你的顺序反了。

user: user-0
content: a a a d ffff f 4

user: user-0
content: 引用 9 楼 wowpH的回复:麻烦提供两组以上的测试数据以及期望的结果。 asdfgfdaa a 3

user: user-0
content: 程序不是从上而下运行的么，从上面先运行getchar输入字符串，然后再用scanf载入a

user: user-1
content: 麻烦提供两组以上的测试数据以及期望的结果。

user: user-0
content: 引用 5 楼 况永金的回复:x 没有初始化 如果我思路有什么问题的话指点一下呗，还是我getchar和scanf用法错了，

user: user-0
content: 引用 6 楼 Sichongzou32的回复:[quote=引用 5 楼 况永金的回复:]x 没有初始化 我这个在调试的时候就有问题 第一行以后回车就直接算结果了 就感觉跳过了scanf[/quote] 我想的时候用getchar预存字段然后回车开始第二行 用scanf载入搜索的字符 之后再用循环判定搜索字符在字段中的数量

user: user-0
content: 引用 5 楼 况永金的回复:x 没有初始化 我这个在调试的时候就有问题 第一行以后回车就直接算结果了 就感觉跳过了scanf

user: user-2
content: x 没有初始化

user: user-0
content: 引用 2 楼 user-3的回复:scanf（"%c"，&y）; 问题不是这个 补上&也一样

user: user-0
content: 引用 2 楼 user-3的回复:scanf（"%c"，&y）; 小问题 这个我是我手机打的时候没注意

user: user-3
content: scanf（"%c"，&y）;

user: user-0
content: scanf(%c,y); 打错了
user-0 提问: c语言运算结果出现-1.#IND00怎么回事？

回复:
user: user-0
content: 引用 3 楼 自信男孩的回复:#include<stdio.h> #include<math.h>  //main () int main () {     printf("请输入a,b,c以计算方程ax^2+bx+c=0的解\n");     int a,b,c,dt;     float x1,x2;     scanf("%d%d%d",&a,&b,&c);      //if(a=0)     if(a==0)     {         //if(b=0)         if(b==0)         {             printf("该方程无解");         }         else         {             //printf("该方程的解为x1=x2=%f",(-c)/b);             printf("该方程的解为x1=x2=%f",(-c)*1.0/b);         }     }     else     {         dt=b*b-4*a*c;         if(dt<0)         {             printf("该方程无解");         }         else         {             float g=sqrt(dt);             x1=(-b+g)/(2*a);             //x1=(-b-g)/(2*a);             x2=(-b-g)/(2*a);             printf("该方程的解为x1=%f,x2=%f",x1, x2);         }     }     getchar();     getchar();     return 0; }  供参考～  对比代码，找出自己的问题～  注意=和==的区别～ 谢谢啦！非常感谢帮我解决，我会记住这个问题的！

user: user-1
content: #include<stdio.h> #include<math.h>  //main () int main () {     printf("请输入a,b,c以计算方程ax^2+bx+c=0的解\n");     int a,b,c,dt;     float x1,x2;     scanf("%d%d%d",&a,&b,&c);      //if(a=0)     if(a==0)     {         //if(b=0)         if(b==0)         {             printf("该方程无解");         }         else         {             //printf("该方程的解为x1=x2=%f",(-c)/b);             printf("该方程的解为x1=x2=%f",(-c)*1.0/b);         }     }     else     {         dt=b*b-4*a*c;         if(dt<0)         {             printf("该方程无解");         }         else         {             float g=sqrt(dt);             x1=(-b+g)/(2*a);             //x1=(-b-g)/(2*a);             x2=(-b-g)/(2*a);             printf("该方程的解为x1=%f,x2=%f",x1, x2);         }     }     getchar();     getchar();     return 0; }  供参考～  对比代码，找出自己的问题～  注意=和==的区别～

user: user-2
content: IND即indeterminate，表示计算时出现数值不确定的错误，比如对负数开方

user: user-3
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。
user-0 提问: 请各位大佬指教

回复:
user: user-1
content: Va=4/3*PI*r*r*r; 这句改一下：  Va=4.0/3*PI*r*r*r; 要确保4/3是浮点运算～

user: user-2
content: 你用的是VS2019吧，这个版本scanf是会报错的，用scanf_s就好了。  #include<stdio.h> #include<stdlib.h>  #define PI 3.14 int main() { 	double r, h, C1, Sa, Sb, Va, Vb; 	scanf_s("%lf %lf", &r, &h); 	C1 = PI * r * 2; 	Sa = PI * r * r; 	Sb = 4 * PI * r * r; 	Va = 4 / 3 * PI * r * r * r; 	Vb = PI * r * r * h; 	printf("%.2lf\n", C1); 	printf("%.2lf\n", Sa); 	printf("%.2lf\n", Sb); 	printf("%.2lf\n", Va); 	printf("%.2lf\n", Vb); 	return 0; }

user: user-0
content: 引用 3 楼 自信男孩的回复:楼主的问题是什么？～ 问一下代码儿哪儿错了，每次提交都错误

user: user-1
content: 楼主的问题是什么？～

user: user-3
content: #include <stdio.h> #include <stdlib.h> #define PI 3.14159265 int main() {     double r,h,C1,Sa,Sb,Va,Vb;     scanf ("%lf%lf",&r,&h)；     C1=PI*r*2;     Sa=PI*r*r;     Sb=4.0*PI*r*r;     Va=4.0/3.0*PI*r*r*r;     Vb=PI*r*r*h;     printf("%.2lf\n",C1);     printf("%.2lf\n",Sa);     printf("%.2lf\n",Sb);     printf("%.2lf\n",Va);     printf("%.2lf\n",Vb);     return 0; ｝
user-0 提问: 新手求救

回复:
user: user-1
content: 搜一下选择排序法。你现在用的这个可能是冒泡排序法，但是写错了。

user: user-2
content: 引用 1 楼 大佬求带 的回复:大佬救救孩子吧 有需要加 四六五六一七七二七

user: user-0
content: 大佬救救孩子吧
user-0 提问: 大一新生自学c语言遇到问题

回复:
user: user-0
content: return 0 输入分号后就这样了 C:\Users\Razer\Documents\collect2.exe	[Error] ld returned 1 exit status

user: user-1
content: return 0后面没加分号

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

user: user-3
content: #include <stdio.h>  int main() {     int hour1,minute1;     int hour2,minute2;      scanf("%d,%d", &hour1, &minute1);     //scanf("%d,$%d", &hour2, &minute2);     scanf("%d,%d", &hour2, &minute2);      int t1 = hour1*60+minute1;     int t2 = hour2*60+minute2;      int t=t2-t1;      printf("时间差是%d小时%d分钟",t/60,t%60);      return 0; } 供参考～

user: user-4
content: main函数的函数名输入错误

user: user-5
content: 引用 3 楼 user-6 的回复:int main()  return 0后面加分号 是啊，main拼写错误

user: user-6
content: int main()  return 0后面加分号
user-0 提问: 新手求教

回复:
user: user-1
content: 将     if (c!=' '||c!='\n'||c!='\t')  修改为  if (c!=' ' && c!='\n'&&c!='\t') { 你代码的意思，是当输入的为空格 或换行或制表符时，就输出打印，状态为OUT，下面这个不是这些字符时也打印，状态修改为IN  当第一次输入g 然后空格，，上面和下面的if都会进入。

user: user-0
content: 引用 6 楼 weixin_44930231的回复:[quote=引用 4 楼 子衿兄的回复:]将     if (c!=' '||c!='\n'||c!='\t')  修改为  if (c!=' ' && c!='\n'&&c!='\t') { 你代码的意思，是当输入的为空格 或换行或制表符时，就输出打印，状态为OUT，下面这个不是这些字符时也打印，状态修改为IN  当第一次输入g 然后空格，，上面和下面的if都会进入。  不好意思还是不明白为什么d不会输出。 能否详细说一下呢？ 谢谢[/quote] 已经明白了，谢谢。 是短路特性。

user: user-2
content: 第一个空格的时候status值为IN，不执行if...putchar

user: user-0
content: 引用 4 楼 子衿兄的回复:将     if (c!=' '||c!='\n'||c!='\t')  修改为  if (c!=' ' && c!='\n'&&c!='\t') { 你代码的意思，是当输入的为空格 或换行或制表符时，就输出打印，状态为OUT，下面这个不是这些字符时也打印，状态修改为IN  当第一次输入g 然后空格，，上面和下面的if都会进入。  不好意思还是不明白为什么d不会输出。 能否详细说一下呢？ 谢谢

user: user-0
content: 引用 3 楼 yiyefangzhou24的回复:第一个空格的时候status值为IN，不执行if...putchar 你好，能否详细说一下，为什么第二个字符d不会输出吗？ 谢谢

user: user-0
content: 引用 1 楼 user-3的回复:你的程序的功能是什么。 在编写每行输出一个单词的时候发现这样子的话第二个字母不会输出所以想弄明白😊

user: user-3
content: 你的程序的功能是什么。
user-0 提问: 各位大佬跪求一帮

回复:
user: user-0
content: 引用 8 楼 赵4老师的回复:不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！ 谢谢您啊，领教了，相信事实

user: user-1
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！

user: user-2
content: 你用长度来推测变量类型不科学 应该用 cout<<typeid(变量).name()<<endl; 这是C++11的东西 可以直接打印出来变量类型

user: user-3
content: 1.2这个数值应该是按照double类型来处理的，所以整个表达式是按照double来运算～

user: user-0
content: 引用 2 楼 子衿兄的回复:必定是float 答案是double啊，我有个想法，就是1.2未定义，默认是双精度类型，不知是不是？

user: user-4
content: 必定是float

user: user-0
content: 引用 4 楼 子衿兄的回复:[quote=引用 3 楼 qq_45673225 的回复:] [quote=引用 2 楼 子衿兄的回复:]必定是float 答案是double啊，我有个想法，就是1.2未定义，默认是双精度类型，不知是不是？[/quote]  你说的是对的  [/quote] 哦哦，8字节，看来应该是，谢谢

user: user-4
content: 引用 3 楼 qq_45673225 的回复:[quote=引用 2 楼 子衿兄的回复:]必定是float 答案是double啊，我有个想法，就是1.2未定义，默认是双精度类型，不知是不是？[/quote]  你说的是对的
user-0 提问: C语言 for语句莫名其妙被跳过，若图中name字符串改成字符（包括后续）则可正常运行

回复:
user: user-1
content: #include <stdio.h> #include <string.h> //void main() int main() {     int i, j;     struct candidate     {         char name[10];         int vote;     } a[3] = {         {"aa", 0},         {"bb", 0},         {"cc", 0}     };     for( j=0; j < 8; j++)     {         char s[10];         printf("%d.", j+1);         gets(s);         for( i=0; i < 3; i++)         {             //if( s==a[i].name)             if( strcmp(s, a[i].name) == 0)             {                 a[i].vote += 1;             }         }     }     for( i=0; i < 3; i++)     {         printf("%d\n", a[i].vote);     } } 供参考～

user: user-2
content: #include <string.h>  if(s == a[i].name) 换 if(strcmp(s,a[i].name) == 0)

user: user-0
content: 新手求助

user: user-0
user-0 提问: 救救孩子，不知道为什么程序调试总是出现问题中途结束，代码如下

回复:
user: user-1
content: 引用 1 楼 user-3 的回复:int main() { void creategraph(graphadjlist *g); graphadjlist *a=new graphadjilist; creategraph(a); delete a; }  new改成malloc，delete改成free就可以了

user: user-2
content: C语言没有new和delete吧

user: user-2
content: 函数声明跑到main里面去了。

user: user-0
content: 我运行之后结果就是这样的，调试会说access violation 不明白是为什么

user: user-3
content: int main() { void creategraph(graphadjlist *g); graphadjlist *a=new graphadjilist; creategraph(a); delete a; }
user-0 提问: 大佬求帮

回复:
user: user-1
content: 这是在考查运算符的优先级吧 （）优先级最高， 其次% ＊ ／， 这些是从左往右 然后再是＋ 所以这个式子 其实就是 ((((i%（(int)(x+y)) *j) /2) /3)+y

user: user-2
content: 引用 3 楼 qq_45673225 的回复:那为什么是52.00，不是52.50呢？还有小数点的问题 整数和整数相除结果为整数

user: user-0
content: 那为什么是52.00，不是52.50呢？还有小数点的问题

user: user-0
content: 引用 楼主 qq_45673225的回复:以下程序的运行结果是 _ _ 52.00____ _ 。 #include <stdio.h> void main() {int i=5,j=9;  float x=2.3,y=45;  printf(“% 8.2f \n”,i%(int)(x+y)*j/2/3+y); } 这个程序能运行吗？题目来自百度文库，又怎么算 哦哦，符号打错了，但是还是不知道如何算，不应该是52.5吗？
user-0 提问: C语言指针先交换地址再交换值的问题

回复:
user: user-0
content: 引用 3 楼 MelonSuika 的回复:因为你函数内，x和y始终指向的是a和b这两个不同的变量。 那么只要你执行了下面这句， //交换指针所指向的值     i=*x;     *x=*y;     *y=i; 无论原来是x指向a，y指向b还是x指向b，y指向a， 最终就是交换了a和b的值，区别就是是a和b的值交换还是b和a的值交换罢了  您看我理解的对不对。 在子函数内部,x,y只是a,b的复制，所以交换x,y只是交换了a,b的指向地址，值的交换只是复制品值的交换，并没有影响实参的本身值， 当父函数调用子函数的时候，因为运行了	 	i=*x; 	*x=*y; 	*y=i; 所以父函数的a,b的值发生交换，只不过此时*x指向的是a,*y指向的是b,子函数内部的值的互换并没有实际意义，因为都是复制品， 最终是由主函数调用子函数指针的指向所决定的。

user: user-1
content: 因为你函数内，x和y始终指向的是a和b这两个不同的变量。 那么只要你执行了下面这句， //交换指针所指向的值     i=*x;     *x=*y;     *y=i; 无论原来是x指向a，y指向b还是x指向b，y指向a， 最终就是交换了a和b的值，区别就是是a和b的值交换还是b和a的值交换罢了

user: user-2
content: http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素

user: user-3
content: 交换地址只在函数内部生效

user: user-0
content: 引用 5 楼 MelonSuika 的回复：没什么大问题， //交换指针中的内容     t=x;     x=y;     y=t; 这几句只是实参的一份拷贝值并且是拷贝值之间互相交换。 对实参没什么影响。我明白了谢谢您

user: user-1
content: 没什么大问题， //交换指针中的内容     t=x;     x=y;     y=t; 这几句只是实参的一份拷贝值并且是拷贝值之间互相交换。 对实参没什么影响。
user-0 提问: 求助

回复:
user: user-0
content: 引用 1 楼 與蘤舊縐的回复:其实可以直接printf("********\n        welcome\n**************")（数目不对奥）额，还有个框忘了，加上就行  也可以把图案存进二维数组，然后输出数组，每一行输出一个\n 好的好的谢谢我去试试

user: user-1
content: 其实可以直接printf("********\n        welcome\n**************")（数目不对奥）额，还有个框忘了，加上就行  也可以把图案存进二维数组，然后输出数组，每一行输出一个\n
user-0 提问: 新手求救

回复:
user: user-1
content: for/while循环没有意义，因为循环里的a还是循环外第一次输入的。

user: user-0
content: 谢谢。。。。。。。

user: user-2
content: 你把输入语句放在循环外面，循环里面又没有输入，当然这样
user-0 提问: 娃娃哭了，有木有人免费的写一下，用最通俗易懂的C语言写一写。

回复:
user: user-1
content: 是业务代码，无聊

user: user-2
content: 有问题可以提问题哈。 可以加我的群里，大家一起讨论。

user: user-0
content: 引用 4 楼 子衿兄的回复:吓唬下，没什么。 这个应该是数据结构课程设计的题目吧 C语言程序设计，我代码敲的，差不多了，就是还有一些小问题

user: user-2
content: 吓唬下，没什么。 这个应该是数据结构课程设计的题目吧

user: user-0
content: 引用 1 楼 子衿兄的回复:刚布置完，就上网了找人了？？     PS: 前沿技术-嵌入式 720363947 编程语言C/C++ 718801748 编程算法与数据结构群15035519 这个是干啥的？？？？？？？
user-0 提问: 链表插入问题，请教

回复:
user: user-1
content: #include <stdio.h> #include <stdlib.h>  typedef struct List {     int data;     struct List *Next; }Node,*NodePtr;  NodePtr ListPtr;  void ListInsert(NodePtr L,int i) {     NodePtr p;     NodePtr q;     p = L;     //while(p)     while(p->Next)     {         p = p->Next;     }     q = (Node*)malloc(sizeof(Node));     if (!q)         exit(0);     q->data = i;     printf("111\n");     p->Next = q;     printf("111\n");     p = q;     p->Next = NULL;  }  void ListCreatTail(NodePtr *L) {     *L = (Node*)malloc(sizeof(Node));     if (!(*L))         exit(0);     (*L)->Next = NULL; }   void ListDelete(NodePtr L, int i) {     int j  = 1;     NodePtr p,q;     p=L;     //while(p,j < i)     while(p && j < i)     {         p=p->Next;         ++j;     }     q=p->Next;     p->Next = q->Next;     free(q);  }  void ListPrintf(NodePtr L) {     NodePtr p;     p=L->Next;     while(p)     {         printf("%d\n",p->data);         p=p->Next;     } }  //void main() int main() {     ListCreatTail(&ListPtr);     ListInsert(ListPtr,1);     /* ListInsert(ListPtr,2);        ListInsert(ListPtr,3);        ListInsert(ListPtr,4);        ListInsert(ListPtr,5);        ListDelete(ListPtr,2);*/     ListPrintf(ListPtr);      return 0; }   供参考～

user: user-0
content: 对 明白了非常感谢 我这个方式创建的链表带不带头结点呢，哪个是头结点哪个是头指针呀

user: user-2
content: while(p)  {	    p = p->Next;	   } 这里将p指向了Null，所以在运行到下面：p->Next = q;这条语句时，会出错

user: user-0
content: 我用的VC++6.0编译器
user-0 提问: 设计登录系统找不到bug在哪

回复:
user: user-1
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。  代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-0
content: 又揪掉了一根头发，崩了。
user-0 提问: GCC编译，printf打印的值为什么总在最后呢？求解

回复:
user: user-0
content: 还是不行 ，  不过同一个程序在dos窗口运行显示正常

user: user-0
content: 谢谢啊   我已经直接安装LINUX啦         省的出这么多问题

user: user-1
content: gets前加rewind(stdin);试试看

user: user-2
content: 这是 mingw 的缺陷，所以就有了 winpty

user: user-2
content: 很不友好，可以尝试使用   `winpty`  见 `cat $(which lua)` + `gcc -fexec-charset=GBK`  启动慢慢慢慢慢慢

user: user-1
content: 那就应该是这个窗口对应程序对stdout和stdin管道重定向做的不够好。
user-0 提问: 小白求教大佬

回复:
user: user-1
content: #include<stdio.h>  #define MAX(x,y) ((x)>(y)?(x):(y)) #define MIN(x,y) ((x)<(y)?(x):(y))  int main() {     int a,b,d,m;     float c;     scanf("%d %d", &a,&b);     d = a*5;     m = MAX(d,b)-MIN(d,b);     //if(m=360) m=360-m;     if(m==360)         m=360-m;     printf("At %d:%02d the angle is %.1f degrees.\n",a,b,c=m*6);     return 0; } 供参考～
user-0 提问: C语言  读取位置 0x00000064 时发生访问冲突。 怎么解决？

回复:
user: user-1
content: 1、char r[256]; 是栈内存，函数结束会被销毁 2、char input(char Str[128]) 返回的是char，我猜你想返回char*

user: user-2
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-3
content: #include <stdio.h> #include <string.h> #pragma warning(disable:4996)  //char input(char Str[128]) char *input(char Str[128]) {     //char r[256];     static char r[256];     printf(Str);     //scanf_s("%s", &r,256);     scanf_s("%s", r, 256);     fflush(stdin);     //return &r;     return r; }  int main() {     char a[256];     strcpy(a, input("输入一串文字。>>"));     printf(a);     return 0; }  供参考～

user: user-4
content: input函数写利有问题
user-0 提问: 函数

回复:
user: user-1
content: 上面都说得很清楚了，形参名是一个标识符，标识符定义必须守规矩。

user: user-2
content: 标识符：用来标识常量，变量，函数等的字符序列。  命名规则：必须由字母或下划线开头。

user: user-3
content: 引用 2 楼 qq_45704513 的回复:[quote=引用 1 楼 自信男孩的回复:]int lover (int 1,int 2  ) 参数名不能用数字。 什么意思？没明白，可以详细说一下吗[/quote] 你自己编译一下就知道问题了～

user: user-0
content: 引用 1 楼 自信男孩的回复:int lover (int 1,int 2  ) 参数名不能用数字。 什么意思？没明白，可以详细说一下吗

user: user-3
content: int lover (int 1,int 2  ) 参数名不能用数字。
user-0 提问: 请问Dev c++ 如何生成可独立于开发环境的执行程序？

回复:
user: user-1
content: 加 -static参数

user: user-0
content: 引用 3 楼 秦岭深山土鸡蛋付海波 的回复：编译运行后就会有exe文件存在文件夹啊那个exe不能单独运行

user: user-2
content: 编译运行后就会有exe文件存在文件夹啊

user: user-0
content: 引用 1 楼 taodm 的回复：加 -static参数能详细说一下，我是在Windows下安装的dev c++，谢谢了
user-0 提问: 满足条件的数累加

回复:
user: user-1
content: #include<stdio.h>  int main(void) {     int m, n, tmp;     int i,sum=0;      scanf("%d %d", &m,&n);      if (m > n) {         tmp = m;         m = n;         n = tmp;     }      for (i = m; i <= n; i++) {         if (i % 17 == 0)             sum += i;     }     /*     if(m%17!=0)         m+=17-m%17;     if(n%17!=0)         n*=n/17;     for(i=m;i<=n;i+=17)         sum+=i;     */     printf("%d\n",sum);      return 0; } 供参考～

user: user-2
content: 你输入一下33 35试试

user: user-3
content: n *= n/17 应该是 n = 17 * (n/17); 吧。
user-0 提问: Vs code 命令窗口中文输出乱码

回复:
user: user-1
content: 对电脑而言没有乱码，只有二进制字节；对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A

user: user-2
content: 引用 7 楼 stay黑 的回复:[quote=引用 5 楼 liups的回复:][quote=引用 4 楼 stay黑 的回复:] [quote=引用 3 楼 liups的回复:][quote=引用 2 楼 stay黑 的回复:] [quote=引用 1 楼 sinat_38804017的回复:]右下角有个编码设置，UTF-8，点击选择gbk，然后保存，重新运行就行了 换成Gbk的话，代码里的中文直接在vs code里乱码[/quote] 代码里面修改一下就好了。如果代码很长，可以整体拷到记事本中转换。[/quote] 代码哪里需要修改。。。。[/quote] 乱码的汉字重新输入一下[/quote] 还是乱码，没有用，加入一天printf语句，中文也乱码[/quote] 你首先要GBK或者GB2312这些，然后看源代码中有乱码的给改成不乱码，再然后就没有问题了

user: user-0
content: 引用 5 楼 liups的回复:[quote=引用 4 楼 stay黑 的回复:] [quote=引用 3 楼 liups的回复:][quote=引用 2 楼 stay黑 的回复:] [quote=引用 1 楼 sinat_38804017的回复:]右下角有个编码设置，UTF-8，点击选择gbk，然后保存，重新运行就行了 换成Gbk的话，代码里的中文直接在vs code里乱码[/quote] 代码里面修改一下就好了。如果代码很长，可以整体拷到记事本中转换。[/quote] 代码哪里需要修改。。。。[/quote] 乱码的汉字重新输入一下[/quote] 还是乱码，没有用，加入一天printf语句，中文也乱码

user: user-0
content: 还是乱码，没有用，加入一天printf语句，中文也乱码

user: user-2
content: 引用 4 楼 stay黑 的回复:[quote=引用 3 楼 liups的回复:][quote=引用 2 楼 stay黑 的回复:] [quote=引用 1 楼 sinat_38804017的回复:]右下角有个编码设置，UTF-8，点击选择gbk，然后保存，重新运行就行了 换成Gbk的话，代码里的中文直接在vs code里乱码[/quote] 代码里面修改一下就好了。如果代码很长，可以整体拷到记事本中转换。[/quote] 代码哪里需要修改。。。。[/quote] 乱码的汉字重新输入一下

user: user-0
content: 引用 3 楼 liups的回复:[quote=引用 2 楼 stay黑 的回复:] [quote=引用 1 楼 sinat_38804017的回复:]右下角有个编码设置，UTF-8，点击选择gbk，然后保存，重新运行就行了 换成Gbk的话，代码里的中文直接在vs code里乱码[/quote] 代码里面修改一下就好了。如果代码很长，可以整体拷到记事本中转换。[/quote] 代码哪里需要修改。。。。

user: user-2
content: 引用 2 楼 stay黑 的回复:[quote=引用 1 楼 sinat_38804017的回复:]右下角有个编码设置，UTF-8，点击选择gbk，然后保存，重新运行就行了 换成Gbk的话，代码里的中文直接在vs code里乱码[/quote] 代码里面修改一下就好了。如果代码很长，可以整体拷到记事本中转换。

user: user-0
content: 引用 1 楼 sinat_38804017的回复:右下角有个编码设置，UTF-8，点击选择gbk，然后保存，重新运行就行了 换成Gbk的话，代码里的中文直接在vs code里乱码

user: user-3
content: 右下角有个编码设置，UTF-8，点击选择gbk，然后保存，重新运行就行了
user-0 提问: 不会输入数据。关于scanf

回复:
user: user-1
content: 头扭的很不难受的～

user: user-2
content: 格式规范字段：scanf和wscanf函数  格式规范的格式如下：    %[*][宽度][{h l i64 l}]类型    format参数指定输入的解释，可以包含以下一项或多项：    空白字符：空白（''）；制表符（'\t'）；或换行符（'\n'）。空白字符使scanf读取但不存储输入中的所有连续空白字符，直到下一个非空白字符。格式中的一个空白字符与输入中的任意数字（包括0）和空白字符组合匹配。     非空白字符，百分比符号（%）除外。非空白字符会导致scanf读取而不是存储匹配的非空白字符。如果stdin中的下一个字符不匹配，scanf将终止。     格式规范，由百分号（%）引入。格式规范使scanf读取输入中的字符并将其转换为指定类型的值。该值被分配给参数列表中的参数。  格式是从左到右读取的。格式规范之外的字符应与stdin中的字符序列匹配；stdin中的匹配字符将被扫描但不会存储。如果stdin中的某个字符与格式规范冲突，scanf将终止，并且该字符将保留在stdin中，就好像它没有被读取一样。    当遇到第一个格式规范时，第一个输入字段的值将根据此规范转换并存储在第一个参数指定的位置。第二个格式规范将转换第二个输入字段并将其存储在第二个参数中，依此类推，一直到格式字符串的末尾。    输入字段被定义为所有字符，直到第一个空白字符（空格、制表符或换行符），或者直到第一个不能根据格式规范转换的字符，或者直到达到字段宽度（如果指定）为止。如果给定规范的参数太多，则将计算额外的参数，但忽略这些参数。如果格式规范没有足够的参数，则结果是不可预测的。    格式规范的每个字段都是表示特定格式选项的单个字符或数字。在最后一个可选格式字段之后出现的类型字符确定输入字段是被解释为字符、字符串还是数字。    最简单的格式规范只包含百分号和类型字符（例如%s）。如果百分号（%）后跟一个没有格式控制字符意义的字符，则该字符和以下字符（直至下一个百分号）将被视为普通字符序列，即必须与输入匹配的字符序列。例如，要指定输入百分号字符，请使用百分号。    百分号后面的星号（*）禁止分配下一个输入字段，该字段被解释为指定类型的字段。字段已扫描但未存储。
user-0 提问: 编程中出问题了

回复:
user: user-1
content: &a，&b，这个参数要用指针

user: user-0
content: 我知道了，但确实他通过了

user: user-0
content: 引用 5 楼 user-2的回复:scanf("%d %d", a,b); 这样能行？ 额。。这个问题出在哪呢

user: user-2
content: scanf("%d %d", a,b); 这样能行？

user: user-0
content: 引用 3 楼 user-2的回复:不相信能通过编译 图片上写了没有错误哇

user: user-2
content: 不相信能通过编译

user: user-0
content: 引用 1 楼 user-2的回复:这能通过编译？ 可以啊，没出问题，就是输出不了东西，挺奇怪的

user: user-2
content: 这能通过编译？
user-0 提问: 新手 望解答  （输入一个字符，判断是否为字母，如果是进行大小写转换, 否则直接输出此字符）

回复:
user: user-1
content: Ayanamilove你加减写反了

user: user-2
content: char judge(char c) {   if(c<='Z'&&c>='A')//大写与小写ANSII码差32     c-=32;   else if(c<='z'&&c>='a')     c+=32;   return c      }

user: user-3
content: https://blog.csdn.net/qq_38181865/article/details/95440624   这篇大佬的帖子应该能够满足你的需求

user: user-4
content: QChar::isLower()  判断是否为小写   然后转换

user: user-5
content: C语言有许多字符转换、判断的库函数， https://blog.csdn.net/BadAyase/article/details/102383630 具体参考08节

user: user-6
content: 根据ASCII码来做
user-0 提问: 大神们，请教一下VS里面不加malloc.h的情况下，int malloc() 函数哪来的

回复:
user: user-1
content: 你需要脱离IDE，学习手写makefile

user: user-2
content: 不奇怪的，C没有强制要求必须声明的，调用参数入栈也没问题，但是返回参数都是int，只是你这里都做了转换指针，所以就可以用了。C++比较严格，这样写是编译不过的

user: user-2
content: 不奇怪的，C没有强制要求必须声明的，调用参数入栈也没问题，但是返回参数都是int，只是你这里都做了转换指针，所以就可以用了。C++比较严格，这样写是编译不过的

user: user-0
content: 引用 14 楼 SuperDay的回复:[quote=引用 11 楼 嘎油啊~ 的回复:] [quote=引用 8 楼 SuperDay的回复:]楼主到底想干嘛？？？ 我想知道这个int返回类型的malloc函数哪里来的[/quote]  对于C语言来说，所有没有声明过的函数，都默认原型int (*)()[/quote] 但是他没申明是没声明，但关键他还能用我就很奇怪

user: user-2
content: 引用 11 楼 嘎油啊~ 的回复:[quote=引用 8 楼 SuperDay的回复:]楼主到底想干嘛？？？ 我想知道这个int返回类型的malloc函数哪里来的[/quote]  对于C语言来说，所有没有声明过的函数，都默认原型int (*)()

user: user-0
content: 引用 6 楼 Eleven的回复:或许是其它头文件中#include了malloc.h了~ 没其他头文件了呀

user: user-2
content: 楼主到底想干嘛？？？

user: user-2
content: 那就去使用！！！！！

user: user-3
content: 或许是其它头文件中#include了malloc.h了~

user: user-0
content: 引用 3 楼 SuperDay的回复:malloc应该是是在stdlib.h里面，但是有些头文件应该也可以间接引用到它比如string.h memory.h什么的 但是我没有使用这些头文件呀

user: user-4
content: 引用 2 楼 嘎油啊~ 的回复:[quote=引用 1 楼 赵4老师的回复:]VS IDE中，在不明白的符号malloc上点鼠标右键，选转到定义。 老师，就是转不进去呀[/quote] 你的库目录配置中Windows SDK没配置好。

user: user-2
content: malloc应该是是在stdlib.h里面，但是有些头文件应该也可以间接引用到它比如string.h memory.h什么的

user: user-0
content: 引用 12 楼 自信男孩的回复:环境不一样头文件也不一样：Linux下是用stdlib.h声明malloc/windows下有些IDE应该是在malloc.h中声明的 首先，Windows下malloc.h和stdlib.h都可以声明malloc函数，而且使用了头文件的malloc函数对于这个程序来说是完全正确的(这个正确的malloc返回类型是void*)，现在就是我偶然发现我不加任何有关malloc函数的头文件，他冒出来一个int返回类型的malloc函数，而且恶心的是这个int返回类型的malloc函数申请内存失败了，但是我现在就是想搞清楚后面这个malloc是哪来的？

user: user-5
content: 环境不一样头文件也不一样：Linux下是用stdlib.h声明malloc/windows下有些IDE应该是在malloc.h中声明的

user: user-0
content: 引用 8 楼 SuperDay的回复:楼主到底想干嘛？？？ 我想知道这个int返回类型的malloc函数哪里来的

user: user-4
content: 引用 9 楼 嘎油啊~ 的回复:[quote=引用 6 楼 Eleven的回复:]或许是其它头文件中#include了malloc.h了~ 没其他头文件了呀[/quote] 有的IDE默认#include了一些常用头文件，就跟有的IDE默认link一些常用的库类似。

user: user-0
content: 引用 1 楼 赵4老师的回复:VS IDE中，在不明白的符号malloc上点鼠标右键，选转到定义。 老师，就是转不进去呀

user: user-4
content: VS IDE中，在不明白的符号malloc上点鼠标右键，选转到定义。
user-0 提问: 纯小白，问问哪里出错了

回复:
user: user-1
content: 第一个：第六行 if 后面不应该跟分号 第二个：printf 里的 a 前面不需要取地址符&.  建议：    注意下格式和代码习惯比较好。    比如注意缩进，和 if 后面必须跟上{}
user-0 提问: 在VS2019中if 语句的条件没用。求解答。

回复:
user: user-1
content: 问题可能出现在你的 输入语句 scanf_s("%d,%d", &n, &m);   的两个分好之间的逗号，跟你在黑框框输入的时候的逗号不一致，逗号有两种，一种是英文下的逗号，一种是中文下的逗号。所以，要确保这两个逗号是同一种，最好都使用英文下的逗号。 所以，建议你把逗号都确保是英文下的逗号，在调试。 或者，把逗号去掉，改成空格，是最好的。 输入语句改成：scanf_s("%d %d", &n, &m); 然后黑框框，输入的时候输入：2 空格 3回车。试试！

user: user-2
content: scanf_s("%d，%d")两个%d之间的逗号如果用的是英文的话 在输入时 也要用英文逗号

user: user-3
content: 请判断scanf_s函数的返回值。

user: user-0
content: 引用 2 楼 自信男孩的回复:建议在scanf_s下加一条语句打印出n, m的值，然后根据结果看一下是否是你想要的输入或者和你的输入是否一致 还真不是我所输入的值。但这要怎样解决呢？

user: user-0
content: 引用 1 楼 赵4老师的回复:全角逗号和半角逗号不是一回事。 那么程序也就运行不了。我的问题主要就是：在我键入2和3两个数之后，去判断if语句，n<m的它应该执行的是else，但它执行的却是n>m的。

user: user-0
content: 引用 1 楼 赵4老师的回复:全角逗号和半角逗号不是一回事。 你没看清楚吧！全部都是半角逗号。如果出现全角逗号的话会报错的。

user: user-4
content: 建议在scanf_s下加一条语句打印出n, m的值，然后根据结果看一下是否是你想要的输入或者和你的输入是否一致

user: user-3
content: 全角逗号和半角逗号不是一回事。
user-0 提问: 请问在vs2017中编写max和min函数为什么会提示应输入标识符？

回复:
user: user-1
content: "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt\stdlib.h"       28: // Minimum and maximum macros       29: #define __max(a,b) (((a) > (b)) ? (a) : (b))       30: #define __min(a,b) (((a) < (b)) ? (a) : (b))
user-0 提问: 请问在vs2017中编写max和min函数为什么会提示应输入标识符？

回复:
user: user-1
content: "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt\stdlib.h"       28: // Minimum and maximum macros       29: #define __max(a,b) (((a) > (b)) ? (a) : (b))       30: #define __min(a,b) (((a) < (b)) ? (a) : (b))

user: user-2
content: STL版本的位于头文件algorithm中，windows宏定义位于头文件windows.h中
user-0 提问: for(ptr=head;ptr;ptr=ptr->next)是什么意思呢？

回复:
user: user-1
content: 这是一个单向链表的遍历操作；

user: user-2
content: ptr=head while(ptr!=null){  ptr=ptr->next; }

user: user-3
content: 遍历链表 6字6字

user: user-4
content: for (A;B;C) D; //等价于 {  A;  while (1) {   if (!(B)) break;   D;   C;  } }
user-0 提问: 大一c语言 repeat次数 输入四数求四数最小值

回复:
user: user-0
content: 引用 2 楼 自信男孩 的回复：第一把scanf的'\n'去掉； 出现最小值还是第一次repeat的原因，e在第二次甚至是第三次没有再次初始化； 先把'\n'去掉再试试～把n去掉运行 只能在同一行输入多组数据 不能分行输入 怎么回事啊？

user: user-1
content: 第一把scanf的'\n'去掉； 出现最小值还是第一次repeat的原因，e在第二次甚至是第三次没有再次初始化； 先把'\n'去掉再试试～

user: user-2
content: 把第二个scanf()里的\n去掉
user-0 提问: 散列表，这种解法对吗？？？

回复:
user: user-1
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！