Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 求大佬搭救，找不出错误

回复:
user: user-1
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-2
content: 逗号是中文字符了吧，从编译提示上看到是这样的

user: user-0
content: 引用 3 楼 LEooW的回复:change前面的逗号是中文字符吧，换成英文的逗号 十分谢谢你，对我很有帮助，祝你生活如意

user: user-3
content: change前面的逗号是中文字符吧，换成英文的逗号

user: user-4
content: chage前面是个全角，改成,

user: user-5
content: 贴代码，这玩意儿看不清
user-0 提问: 如何获取标题栏的高度？

回复:
user: user-1
content: 我就说这个问题还能难倒我？

user: user-1
content: cxsizeframe+titlebarheight+cxborder+edgewidth

user: user-0
content: 引用 1 楼 赵4老师 的回复:仅供参考：             titlebarheight = win32api.GetSystemMetrics(win32con.SM_CYSIZE)             edgewidth = win32api.GetSystemMetrics(win32con.SM_CXEDGE)             cxborder = win32api.GetSystemMetrics(win32con.SM_CXBORDER)             cxsizeframe = win32api.GetSystemMetrics(win32con.SM_CXSIZEFRAME) #           print(titlebarheight,edgewidth,cxborder,cxsizeframe)             cx=left+cxsizeframe+edgewidth             cy=top+cxsizeframe+titlebarheight+cxborder+edgewidth+3  SM_CYSIZE得出来的是22。。。也不符合

user: user-1
content: 仅供参考：             titlebarheight = win32api.GetSystemMetrics(win32con.SM_CYSIZE)             edgewidth = win32api.GetSystemMetrics(win32con.SM_CXEDGE)             cxborder = win32api.GetSystemMetrics(win32con.SM_CXBORDER)             cxsizeframe = win32api.GetSystemMetrics(win32con.SM_CXSIZEFRAME) #           print(titlebarheight,edgewidth,cxborder,cxsizeframe)             cx=left+cxsizeframe+edgewidth             cy=top+cxsizeframe+titlebarheight+cxborder+edgewidth+3
user-0 提问: C语言scanf语句

回复:
user: user-1
content: 这个双精度浮点数变量命名不是要的d开头吗。

user: user-2
content: 引用 3 楼 bsnow 的回复:第一个正确输入"a=1b=3c=2" 中间不要空格  对不起以上我乱写的。  你第一句根本就输入不进去，因为你要求输入的字符 %c

user: user-2
content: 第一个正确输入"a=1b=3c=2" 中间不要空格

user: user-3
content: 第一输入有问题，你可以在scanf后面加一条语句打印出a, b, c，看一下是不是输入的。 第一个程序的正确输入是a=1 b=3 c=2

user: user-4
content: 输入需要严格按照你scanf中的格式进行输入，你想输入1 3 2 应该按格式输入 a=1 b=3 c=2，最好把你scanf中那些a=去掉
user-0 提问: c语言小白求助大佬

回复:
user: user-0
content: 主要是我真的不喜欢原来专业的。我尽力去尝试吧!还有1年多，多学多问

user: user-1
content: 先确认一下你的输入是不是放到m, n的内存中，可以在scanf后通过printf打印出m, n的值。

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: 输入的时候。121,11逗号不要用中文输入法。用英文输入法。 跨专业考研有点悬。除了编程语法，还有计算机组成原理，操作系统，网络知识，数据库等都要去学。 除了windows操作系统，linux操作系统也是一个面试的考题，考官或多或少都会问一些基本知识或者一些基本操作的问题。 另外一个就是英语口语。。

user: user-4
content: 你121 和11之间用了中文的逗号
user-0 提问: (江湖救急)--VS2015 命令参数设置后调试接收不到

回复:
user: user-1
content: 注意图中红框标出部分，你设置的是Release/Win32的属性，我猜你调试运行的可能是Debug或者是Release/X64的。 项目属性设置时要注意Debug/Release及Win32/X64四种情况。你的截图中只设置了其中一种。 如果调试运行与设置是对应的，运行结果应该是

user: user-2
content: 你注意配置是Release而不是Debug了吗？
user-0 提问: 关于用c语言将mysql数据库某个表数据导入到sqlserver

回复:
user: user-0
content: 我这要求就是只通过c语言编写的程序来进行数据转移，不能用其他数据库的管理软件。。。。

user: user-1
content: mysql导出为csv 用bcp将csv导入SQLServer
user-0 提问: C语言采用头文件做函数声明，源文件实现，之后main函数引用一直出错，求大神帮忙看看

回复:
user: user-0
content: 引用 3 楼 赵4老师 的回复：KeyWord_Index.c 和 LinkList.c 里面都定义了 _smaller _equal _bigger这几个函数我只写在了define.h中，但是多次导入，不过有经过头文件预编译，正常来说，不是不会重复么

user: user-1
content: KeyWord_Index.c 和 LinkList.c 里面都定义了 _smaller _equal _bigger

user: user-0
content: 引用 1 楼 user-2 的回复：看错误信息，应该是你把smaller, bigger, equal_in这几个函数的代码，写道某个.h文件中引起的。我把几个代码写进了define.h中，但有进行预编译，应该不会造成头文件重复吧？

user: user-2
content: 看错误信息，应该是你把smaller, bigger, equal_in这几个函数的代码，写道某个.h文件中引起的。
user-0 提问: 江湖救急

回复:
user: user-0
content: 引用 2 楼 636f6c696e的回复:垃圾代码，死钻牛角尖没意义 这代码拉不垃圾都好，我们都要从这脚步开始学习的。

user: user-1
content: 垃圾代码，死钻牛角尖没意义

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

user: user-3
content: 引用 3 楼 qq_45444545 的回复:[quote=引用 2 楼 636f6c696e的回复:]垃圾代码，死钻牛角尖没意义 这代码拉不垃圾都好，我们都要从这脚步开始学习的。[/quote] 学习编代码为了什么？还不是为了更好的写好代码，好的代码除了执行效率高之外，还要要求容易理解。 你目前写的代码没看出有什么效率的问题，反而是不易理解，所以不建议写～ 实际项目中写这样的代码，不会给自个加分，可能会减分

user: user-1
content: 都说了是牛角尖，你非要去钻，走好不送，别乱代表别人 引用 3 楼 qq_45444545 的回复:[quote=引用 2 楼 636f6c696e的回复:]垃圾代码，死钻牛角尖没意义 这代码拉不垃圾都好，我们都要从这脚步开始学习的。[/quote]

user: user-4
content: 这还不算垃圾代码啊？一条语句有这么多等号。就象中学里面的证明题，你得一步一步写出来。 除了对变量进行赋值之外，一条语句尽量不要出现超过两个等号。

user: user-5
content: #include <stdio.h>  int main(void) {    int ivalue = 7;    ivalue += ivalue * ivalue / ivalue - 5;    /*    ivalue = 7, ivalue * ivalue = 49,  ivalue * ivalue / ivalue = 7,  ivalue * ivalue / ivalue - 5 = 2 (注意ivalue的值并没有变)     ivalue += ivalue * ivalue / ivalue - 5;等价 ivalue =ivalue + ivalue * ivalue / ivalue - 5; --> ivalue = 7 + 2 = 9    */    printf("%d\n", ivalue);        ivalue = 7;    ivalue += ivalue *= ivalue /= ivalue - 5;    /*    根据运算符优先级，先从右边算    ivalue /= ivalue - 5;等价ivalue = ivalue / (ivalue - 5); 所以ivalue = 7 / 2 = 3(整数除法，不计小数) --> 注意ivalue的值已近改变    因为ivalue = ivalue / (ivalue - 5); 的结果为3    所以ivalue *= ivalue /= ivalue - 5;等价于ivalue *= 3且ivalue = 3，故算的 ivalue = 9    所以ivalue += ivalue *= ivalue /= ivalue - 5;等价于ivalue += 9且ivalue = 9，故算的 ivalue = 18    */    printf("%d\n", ivalue);    return 0; }  实际代码中还是不要这么写，要简洁明了，不要浪费脑细胞，当然学习一下还是可以的
user-0 提问: 数据结构(第2版）朱昌杰 肖建于编著课后习题答案

回复:
user: user-1
content: 建议把代码输入编译器里，编译运行。有问题建议贴代码并描述清除问题和需求；  编程更注重动手和调试，相比理论动手能力更重要些。
user-0 提问: 数据结构(第2版)朱昌杰 肖建于 编著 课后习题答案

回复:
user: user-1
content: 建议把代码输入编译器里，编译运行。有问题建议贴代码并描述清除问题和需求；  编程更注重动手和调试，相比理论动手能力更重要些。
user-0 提问: 如何在非客户区绘图

回复:
user: user-1
content: 应该是可以的，完全由你决定

user: user-0
content: 引用 1 楼 user-1 的回复:随便写了一个，会把标题栏整残了，要漂亮自己画吧 可以设置标题栏的背景色并重绘吗？就像客户区那样

user: user-0
content: 引用 1 楼 user-1 的回复:随便写了一个，会把标题栏整残了，要漂亮自己画吧 case WM_NCPAINT:          {             RECT        rcWnd, rcClient, rcCaption;             if (IsIconic(hwnd)) break;             hdc = GetWindowDC(hwnd);             GetWindowRect(hwnd, &rcWnd);             GetClientRect(hwnd, &rcClient);             rcCaption.left = 0;             rcCaption.right = rcCaption.left + (rcWnd.right - rcWnd.left);             rcCaption.top = 0;             rcCaption.bottom = rcCaption.top + (rcWnd.bottom - rcWnd.top) - (rcClient.bottom - rcClient.top) - ((rcWnd.right - rcWnd.left) - (rcClient.right - rcClient.left)) / 2;             DrawText(hdc, TEXT("Hello, Windows 98!"), -1, &rcCaption, DT_SINGLELINE | DT_CENTER | DT_VCENTER);             Rectangle(hdc, 5, 5, 30, 30);             ReleaseDC(hwnd, hdc);          }          return TRUE; // 关键  看来是我误会了，我原本想要的是在现有的标题栏上绘图，不过就现在来看，是我理解错了，原本的标题栏就是独立绘图的一部分，不过我还是有一点不明白，如果在绘图后执行DefWindowProc，那么可以理解为它把我的绘图遮盖了，但如果先执行DefWindowProc再绘图不是应该就可以了吗，我的绘图应该会显示在标题栏上才对吧

user: user-1
content: 随便写了一个，会把标题栏整残了，要漂亮自己画吧 case WM_NCPAINT:          {             RECT        rcWnd, rcClient, rcCaption;             if (IsIconic(hwnd)) break;             hdc = GetWindowDC(hwnd);             GetWindowRect(hwnd, &rcWnd);             GetClientRect(hwnd, &rcClient);             rcCaption.left = 0;             rcCaption.right = rcCaption.left + (rcWnd.right - rcWnd.left);             rcCaption.top = 0;             rcCaption.bottom = rcCaption.top + (rcWnd.bottom - rcWnd.top) - (rcClient.bottom - rcClient.top) - ((rcWnd.right - rcWnd.left) - (rcClient.right - rcClient.left)) / 2;             DrawText(hdc, TEXT("Hello, Windows 98!"), -1, &rcCaption, DT_SINGLELINE | DT_CENTER | DT_VCENTER);             Rectangle(hdc, 5, 5, 30, 30);             ReleaseDC(hwnd, hdc);          }          return TRUE; // 关键
user-0 提问: C语言输出缓冲问题

回复:
user: user-1
content: vc++编译器的标准输出好像是无缓冲，gcc是行缓冲

user: user-2
content: 你的程序执行完，系统会回收资源并将输入缓存里的数据刷到终端（输出终端）～
user-0 提问: 结构体中指针所占有的内存问题？

回复:
user: user-1
content: https://www.cnblogs.com/veis/p/7073076.html

user: user-2
content: 引用 2 楼 zjq9931 的回复:是的，大小未知，不过你可以用指针代替这一项，就可以了。 这个好像不能用指针代替吧？虽然使用方法跟指针一样。

user: user-3
content: 是的，大小未知，不过你可以用指针代替这一项，就可以了。

user: user-4
content: 百度柔性数组
user-0 提问: 为什么获取的数据长度一直是4，是代码出了问题吗

回复:
user: user-1
content: int的取值范围啊

user: user-0
content: 引用 1 楼 Emy_Happy的回复:a是int，就是4和字节，你输出a看看是什么就知道了 那怎么才是正确的呢，我想知道那串数字的长度

user: user-0
content: 引用 1 楼 Emy_Happy的回复:a是int，就是4和字节，你输出a看看是什么就知道了 我定义a是155575657655呀

user: user-1
content: a是int，就是4和字节，你输出a看看是什么就知道了

user: user-2
content: 你首先要知道sizeof的作用啊， 如果sizeof(a)的结果等于a，那还要sizeof干什么？ sizeof求的是变量的大小，不是变量的数值 sizeof就像求是的杯子a的容积，而155575657655就像杯子里的水分子的数量 显然，这两个并没有必然的联系，水分子的个数并不影响杯子的容积
user-0 提问: 为什么我每次用typedef定义之后，总是说我未定义变量，请大佬帮忙

回复:
user: user-0
content: 引用 3 楼 liups的回复:2楼说得对！ void main() { init();	 	 u8 num; 对于C语言来说，u8应该放在init前面，C++则都可以 多谢大佬，讲的很详细

user: user-0
content: 引用 2 楼 Operating System的回复:把变量的定义放在函数的首句，试一试 多谢大佬，刚才试了一下，果然没问题了

user: user-1
content: 2楼说得对！ void main() { init();	 	 u8 num; 对于C语言来说，u8应该放在init前面，C++则都可以

user: user-2
content: 把变量的定义放在函数的首句，试一试

user: user-0
content: 请大佬帮帮忙

user: user-3
content: 说明这个版本的编译器未支持新的C语言标准。

user: user-0
content: 引用 6 楼 user-3的回复:只是老的C语言是这样，新标准C和C++一样可以在使用变量前再定义。 我这个是用keil4写的，不知道为什么也这样，但是把u8 num写前面就没事了

user: user-3
content: 只是老的C语言是这样，新标准C和C++一样可以在使用变量前再定义。
user-0 提问: 求大佬帮忙

回复:
user: user-1
content: 可以用空格和*直接打印

user: user-2

user: user-3
content: 引用 9 楼 BakenJ 的回复:如果是9行，前5行一个大循环，后4行一个大循环，大循环里面空格一个小循环，*一个小循环就OK了哦，这是一个菱形

user: user-3
content: 如果是9行，前5行一个大循环，后4行一个大循环，大循环里面空格一个小循环，*一个小循环就OK了

user: user-4
content: 循环 打印空格 打印* 打印空格 打印回车 第三个可以省略

user: user-5
content: 填充二维空间  #include<stdio.h> int main(){ 	int size,i,j; 	scanf("%d", &size); 	for (i = 1; i <= size; ++i) { 		for (j = 0; j < size - i; ++j) 			printf(" "); 		for (j = 0; j < 2 * i - 1; ++j) 			printf("*"); 		printf("\n"); 	} }

user: user-6
content: 可以直接用空格键和*构建一个金字塔

user: user-0
content: 引用 1 楼 莯绿和熙的回复:可以直接用空格键和*构建一个金字塔 你这回答也是，，，

user: user-0
content: 引用 3 楼 636f6c696e的回复:循环 打印空格 打印* 打印空格 打印回车 第三个可以省略 但是上下层的*是不在一条线上的

user: user-7
content: 想象下电脑屏幕就是一个个的点阵。就类似 ............ ............ ............ ............ ............ ............ 那现在你要在这个点阵上面显示金字塔，大致的想法就是放个金字塔上去，金字塔遮住的地方都输出*，其他地方不做处理。

user: user-8
content: 思路的话，，，你可以认为是输出一个长方形，长方形你总会吧，然后金字塔的部分判断后输出*，非金字塔的部分判断后输出空格
user-0 提问: C语言小白

回复:
user: user-1
content: 1，先了解内存，主要是要区分堆和栈，其他的存储区域可以暂时不去看 2，用内存的思想，自己试着去解释指针 3，函数的参数传递 4，结构体什么的 5，容器和算法

user: user-2
content: C语言教程（附带C语言100例）http://download.csdn.net/detail/zhao4zhong1/8830817

user: user-3
content: 不管做什么，实战是快速提升自身实力最有效的办法，环境越迫切，实力提升越快（当然，前提是不能超过自身承受能力），生死关头，进步神速。  但是，实战也是需要一定基础才能做的，必须楼上的说让你看书，就是为了掌握最基础的理论，而刷题，其实就是一种实战。  但是实战不局限于刷题，生活中能用程序解决的问题，比比皆是，只要你用心观察。

user: user-0
content: 谢谢大家，我会好好看看的

user: user-4
content: 就看书写代码，什么网课什么的没必要

user: user-5
content: 我联系你可以在网上找一些相关的视频，推荐你看郝冰c语言

user: user-6
content: 引用 1 楼 tb_youth 的回复：先找一本书看两遍，再在oj上刷题这大哥说的简单直接有效，我学C快一个月了，我才发现身边有个架构师能都帮不到你什么，能帮你的只是告诉你什么东西可以忽略重点学什么，应该怎么样学

user: user-7
content: 先找一本书看两遍，再在oj上刷题
user-0 提问: C语言做一个系统弹窗

回复:
user: user-1
content: 字符集不对  设置方法：    或改为： MessageBox(0, L"你的机器将于5分钟后重启。", L"提示",0);

user: user-2
content: 出错信息是什么？？？ 加入一下指令试试 #pragma comment(lib, "user32")
user-0 提问: 素数表(函数专题） 为什么我写的老是时间超限？

回复:
user: user-1
content: 试试这个？   #include<stdio.h> #include<stdbool.h> #include<stdlib.h> #include<time.h>   #define N 5   long long QuickPow(long long a,long long n,long long MOD){     long long ret=1,tmp=a%MOD;     while(n){         if(n&1) ret=ret*tmp%MOD;         tmp=tmp*tmp%MOD;         n>>=1;     }     return ret; }   bool Miller_Rabin(long long x, long long a) // a^(x-1) = 1 (mod x) {     long long tmx = x - 1;     long long s2 = tmx & -tmx;     long long res = QuickPow(a, tmx/s2, x);     if(res == 1 || res == tmx)         return 1;     while(s2>1)     {         res=(res*res)%x;         if(res == 1)             return 0;         if(res == tmx)             return 1;         s2>>=1;     }     return 0; }   bool prime(long long x) {     int k = N;     if(x == 2 || x == 3) return 1;     if(x < 2 || x%2 == 0 || x%3 == 0) return 0;     while(k--)         if(!Miller_Rabin(x, rand()%(x-2)+2))             return 0;     return 1; }  int main(){ 	long long m,n; 	scanf("%lld %lld",&m,&n); 	for(;m<=n;m++){ 	if(prime(m)==1) printf("%d ",m); 	} 	return 0; }

user: user-2
content: #include<stdio.h>  int prime(int n){     int i,x=0;     if(n<2)         return 0;     for(i=2;i<=n/2;i++){         if(n%i==0) {             x++;             break;         }     }     if(x == 0)         return 1;     else         return 0; }  int main() {     int m,n;     scanf("%d %d",&m,&n);     for(;m<=n;m++){         if(prime(m)==1) printf("%d ",m);     }     return 0; } 供参考～

user: user-3
content: 百度一下，查找素数的算法。 for(i=1;i<=n/2;i++){//i应该从2开始 if(n%i==0) x++;//当你发现他不是素数时，难道还要继续下去，而不是返回0？你的意思难道是求他的所有因数？ }
user-0 提问: 大神帮我看看这个冒泡哪里错了

回复:
user: user-1
content: if (a[j] > a[j+i])j和j+1比较，而不是和j+i比较。

user: user-2
content: 估计是抄别人的抄错了吧😂

user: user-3
content: if (a[j] > a[j+i]) --> if (a[j] > a[j+1])
user-0 提问: BeginPaint无法在控制台上绘图，而GetDC可以，为什么？

回复:
user: user-1
content: 引用 4 楼 六道佩恩 的回复:把GetDC+ValidateRect用在WM_PAINT里不也是可以的吗？ 从原理上来说，是可以的，因为在WM_PAINT中只要使无效变为有效即可

user: user-0
content: 引用 5 楼 user-1 的回复:[quote=引用 4 楼 六道佩恩 的回复:] 把GetDC+ValidateRect用在WM_PAINT里不也是可以的吗？ 从原理上来说，是可以的，因为在WM_PAINT中只要使无效变为有效即可 [/quote] 啊我终于成功了！在BeginPaint前加了一行InvalidateRect( h , NULL , 0 ) 终于可行了

user: user-0
content: 引用 3 楼 user-1 的回复:[quote=引用 2 楼 六道佩恩 的回复:] HWND hwnd = GetConsolewindow( ); GetDC( hwnd ); 这样你主动获取了控制台的DC，你当然可以对其为所欲为 BeginPaint一般是WM_PAINT消息触发而由程序自己来处理的，是被动的[/quote] 如果从本质来看，它们的区别是什么？把GetDC+ValidateRect用在WM_PAINT里不也是可以的吗？

user: user-1
content: 引用 2 楼 六道佩恩 的回复:HWND hwnd = GetConsolewindow( ); GetDC( hwnd ); 这样你主动获取了控制台的DC，你当然可以对其为所欲为 BeginPaint一般是WM_PAINT消息触发而由程序自己来处理的，是被动的

user: user-0
content: 引用 1 楼 user-1 的回复:BeginPaint无法在控制台上绘图是什么意思 HWND hwnd = GetConsolewindow( ); GetDC( hwnd );

user: user-1
content: BeginPaint无法在控制台上绘图是什么意思
user-0 提问: 请教 下图程序是由什么语言编写的。

回复:
user: user-1
content: 应该是VB或者更早的QB

user: user-2
content: basic其实已经算是失败者了，但它毕竟得到过微软和老比的大力支持，再加上它确实有很多方便的地方，所以，basic衍生出无数的变种，最常见的就是windows下的vbs和office里面的vba.  而早期的basic其实是电脑硬件中内置的语言。从你的代码注释来看，我比较怀疑这里的basic是一个方言版本，通过COM端口来控制工业机器人。  其实编程很多东西都是相通的，到了实际应用阶段，语法什么的都是小问题，查查资料就能了解，而算法和业务，才是核心。

user: user-2
content: 这是basic语言代码，但具体是哪种basic不好说。  像这种goto语句，早期的basic代码中出现得很多，而print #1这种语句，貌似我只在basic中见过。

user: user-3
content: 引用 2 楼 邦德猪 的回复:[quote=引用 1 楼 user-3 的回复:] 好像是vcscript    还有吗？ 前辈！   我想调这个岗位却不懂这个，我想学这个！ [/quote] 不了解这个产品背景，总体上来说VBScript已经是属于小众工具，但是也许在你这个产品上永远都不会淘汰，看场景吧。

user: user-0
content: 引用 3 楼 user-3 的回复：[quote=引用 2 楼 邦德猪 的回复:] [quote=引用 1 楼 user-3 的回复:] 好像是vcscript    还有吗？ 前辈！   我想调这个岗位却不懂这个，我想学这个！ [/quote] 不了解这个产品背景，总体上来说VBScript已经是属于小众工具，但是也许在你这个产品上永远都不会淘汰，看场景吧。 [/quote]好的，谢谢前辈！

user: user-0
content: 引用 1 楼 user-3 的回复:好像是vcscript    还有吗？ 前辈！   我想调这个岗位却不懂这个，我想学这个！

user: user-3
content: 好像是vcscript
user-0 提问: 我是一名准大一，初学c语言。有个问题想要请教

回复:
user: user-1
content: 你理解了字符串的本质了就会了，很简单

user: user-2
content: #include<stdio.h> int main() { 	char info[20]; 	printf("请输入身份证号码:"); 	scanf("%s",info); 	printf("生日：%c%c%c%c年%c%c月%c%c日\n",info[6],info[7],info[8],info[9],info[10],info[11],info[12],info[13]); 	return 0; }

user: user-0
content: 引用 1 楼 自信男孩的回复:公民身份号码是特征组合码，由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为：六位数字地址码，八位数字出生日期码，三位数字顺序码和一位数字校验码。 这是身份证的结构形式，自己试试写写～ 那个可以帮忙写个代码吗

user: user-3
content: 公民身份号码是特征组合码，由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为：六位数字地址码，八位数字出生日期码，三位数字顺序码和一位数字校验码。 这是身份证的结构形式，自己试试写写～
user-0 提问: 一样的程序运行完全不一样，用的dev

回复:
user: user-1
content: 不好意思看错了 引用 3 楼 自信男孩 的回复:[quote=引用 2 楼 636f6c696e 的回复:] status哪里赋值了，你这个程序就是个不可预期的 status是接收的scanf的返回值。[/quote]

user: user-0
content: 第二个程序一下能运行一下不能运行，头疼。 有时候会显示[Error]ld returned 1 exit status.大部分时候是可以的

user: user-2
content: 第一个程序从运行的第一行输出可以知道，并不是运行的第一个程序的exe文件，看第一个程序的第一个输出是"Input a xxx"，而你的运行结果是please xxx  自定义函数里在计算KEL时，cel是未初始化的，计算出来的结果是通过随机数计算出来的值。所以，在计算KEL是不是应该用CEL

user: user-2
content: 引用 2 楼 636f6c696e 的回复:status哪里赋值了，你这个程序就是个不可预期的 status是接收的scanf的返回值。

user: user-1
content: status哪里赋值了，你这个程序就是个不可预期的
user-0 提问: c语言问题

回复:
user: user-0
content: 好的，谢谢各位大佬解释

user: user-1
content: y=3    在while循环里循环了三次直到while(0退出)所以是2³

user: user-0
content: 引用 1 楼 尐东东的回复:"z*=x" 等同于 "z = z * x"，其中“*”换成其他运算符同样成立 最后z为什么等于2的3次方，等于8。我知道pow是求次方的，但循环就有点不明白了

user: user-0
content: 最后z为什么等于2的3次方，8

user: user-2
content: z *= x;等价z = z * x;

user: user-3
content: "z*=x" 等同于 "z = z * x"，其中“*”换成其他运算符同样成立

user: user-4
content: 书看少了，上面都有

user: user-5
content: z*＝x是z＝z*x z－＝x是z＝z－x 以此类推
user-0 提问: 求大神能解释下着代码？

回复:
user: user-1
content: 引用 9 楼 qq_45444545的回复:我想问下为什么int iHours这个ihours为什么要加i！为什么不直接写hours的 前面的i表示变量类型是int,代码编写规范

user: user-0
content: 我想问下为什么int iHours这个ihours为什么要加i！为什么不直接写hours的

user: user-2
content: 其实名字无所谓，都可以，不影响

user: user-3
content: 其实就是变量名写的花里胡哨把你迷住了

user: user-4
content: 这个变量字母太多了吧 你试一下简写

user: user-5
content: 引用 6 楼 Tybrother 的回复：[quote=引用 5 楼 不减20斤不换网名的回复:]int  i ＝8 int  j ＝13 int sum  sum＝i*j 然后输出就好了  手机打的符号这些我就省略，自己加一下。 别人看不懂他自己打的，那就肯定不知道怎么输出呗。。。[/quote]他是吧书上的提示语也打进去了

user: user-4
content: 引用 5 楼 不减20斤不换网名的回复:int  i ＝8 int  j ＝13 int sum  sum＝i*j 然后输出就好了  手机打的符号这些我就省略，自己加一下。 别人看不懂他自己打的，那就肯定不知道怎么输出呗。。。

user: user-5
content: int  i ＝8 int  j ＝13 int sum  sum＝i*j 然后输出就好了  手机打的符号这些我就省略，自己加一下。

user: user-6
content: 定义了3个变量，第一个初始化为8，第二个赋值为13，将这两个的变量的值乘积赋给第三个变量，然后使用printf逐个输出，刚学慢慢来，遇到问题很正常，加油

user: user-0
content: 引用 1 楼 不减20斤不换网名的回复:你是照书上敲的吧 对，书上没有解释 看的太懵了

user: user-5
content: 你是照书上敲的吧
user-0 提问: 有个问题请大神请教

回复:
user: user-1
content: 引用 3 楼 keep_running_man的回复:[quote=引用 1 楼 user-1的回复:]优先级只是决定了表达式的结合次序，而不是运算顺序！ 优先级高，仅仅确定了一层括号，而不会影响运算顺序 https://blog.csdn.net/qq_40946921/article/details/88323975 那运算顺序怎么看，脑子钝。[/quote] 一般是从左到右$-#

user: user-0
content: 引用 1 楼 user-1的回复:优先级只是决定了表达式的结合次序，而不是运算顺序！ 优先级高，仅仅确定了一层括号，而不会影响运算顺序 https://blog.csdn.net/qq_40946921/article/details/88323975 那运算顺序怎么看，脑子钝。

user: user-0
content: 那运算顺序怎么看，脑子钝。

user: user-1
content: 优先级只是决定了表达式的结合次序，而不是运算顺序！ 优先级高，仅仅确定了一层括号，而不会影响运算顺序 https://blog.csdn.net/qq_40946921/article/details/88323975
user-0 提问: C语言关于数组有个小问题请大佬指点一二

回复:
user: user-0
content: 引用 14 楼 Operating System的回复:可以的你放心，相信我 当我没说尴尬😓

user: user-0
content: 引用 14 楼 Operating System的回复:可以的你放心，相信我 我试了不好使啊。。。。

user: user-1
content: 可以的你放心，相信我

user: user-0
content: 引用 12 楼 Operating System的回复:把数组中的数字，在前面#define一下，后面的程序用宏代替，可以吗？ 我记得当初学的时候老师说宏定义也不行

user: user-1
content: 把数组中的数字，在前面#define一下，后面的程序用宏代替，可以吗？

user: user-0
content: 引用 10 楼 Operating System的回复:数组在定义时，大小就一定了 不不，我的意思是以后改程序时方便(以后会改数组大小)

user: user-1
content: 数组在定义时，大小就一定了

user: user-0
content: 引用 8 楼 Operating System的回复: 可是以后数组不一定有十个啊

user: user-1

user: user-0
content: 引用 6 楼 Operating System的回复:dm函数里你要写什么功能？ 判断数组ia有多少个元素

user: user-1
content: dm函数里你要写什么功能？

user: user-0
content: 引用 4 楼 Operating System的回复: 为什么运行结果不对呢？我设想是ia数组里有几个元素，最后输出ia就是从0到n-1

user: user-1

user: user-2
content: int dm(ia)函数里的ia[m]指的是形参ia,而ia并不是数组或指针，所以报错，把形参ia换个名吧

user: user-0
content: 引用 1 楼 user-3的回复:1、定义一个数组ia，并试图用{}形式的初值列表初始化数组，可是{}中不给初值 2、定义一个函数dm，形参不给数据类型。原则上，如果形参必须指定数据类型，如果赖皮不给，则可能会认定为整型(这是指C程序，如果是C++，直接报错)。明显形参ia与前面定义全局的数组ia不是一个东西，也不能是一个东西。 第一条，如果不赋值默认为0吧我记得

user: user-3
content: 1、定义一个数组ia，并试图用{}形式的初值列表初始化数组，可是{}中不给初值 2、定义一个函数dm，形参不给数据类型。原则上，如果形参必须指定数据类型，如果赖皮不给，则可能会认定为整型(这是指C程序，如果是C++，直接报错)。明显形参ia与前面定义全局的数组ia不是一个东西，也不能是一个东西。
user-0 提问: 带有头结点的双链表的实现和相关操作。做好写注释…

回复:
user: user-0
content: 不懂行情…你说个价格！

user: user-1
content: 引用 1 楼 user-2 的回复:哦 你出多少钱? 写不好扣你工资

user: user-2
content: 哦 你出多少钱?
user-0 提问: 求助：写函数，对二维整型数组转置

回复:
user: user-0
content: 引用 3 楼 自信男孩的回复:memcpy(m,b,9)；楼上已经给解答了，第三参数是拷贝的字节数，9说明是拷贝9个字节，而m的字节数是9 * sizeof(int)个，在 32位系统上，int是占4个字节。 懂啦，谢谢谢谢

user: user-0
content: 引用 2 楼 user-2的回复:[quote=引用 1 楼 user-2 的回复:] 函数内部memcpy的参数不对，应该是：  memcpy(m,b, 9*sizeof(int))  更简单的写法是 memcpy(m,b, sizeof(m)) [/quote] 懂啦，谢谢谢谢

user: user-0
content: 引用 1 楼 user-2的回复:函数内部memcpy的参数不对，应该是：  memcpy(m,b, 9*sizeof(int))  懂啦，谢谢谢谢

user: user-1
content: memcpy(m,b,9)；楼上已经给解答了，第三参数是拷贝的字节数，9说明是拷贝9个字节，而m的字节数是9 * sizeof(int)个，在 32位系统上，int是占4个字节。

user: user-2
content: 引用 1 楼 user-2 的回复:函数内部memcpy的参数不对，应该是：  memcpy(m,b, 9*sizeof(int))  更简单的写法是 memcpy(m,b, sizeof(m))

user: user-2
content: 函数内部memcpy的参数不对，应该是：  memcpy(m,b, 9*sizeof(int))
user-0 提问: 这是个什么程序啊？新人，不懂！

回复:
user: user-1
content: 两个for循环，第一个for选定a【i】并将其值赋给q作为参考值，第二轮for令q与数组其余值比较，找出数组中最大值并记下其下标，第二轮for结束后将最大值和数组第一位交换，然后再到第一个for并选定数组中第二个元素做参考，然后找出数组剩余元素最大的放在第二位。故该程序的目的就是将数组中10个元素从大到小排列（另外printf（“%d”，a【i】）

user: user-2
content: 从大到小，printf里面有需要地址符吗

user: user-0
content: 引用 楼主 Sccx271811的回复:main() { int i,j,p,q,s,a[10]; printf("input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { p=i;q=a[i]; for(j=i+1;j<10;j++) if(q<a[j]){p=j;q=a[j];} if(i!=p) { s=a[i]; a[i]=a[p]; a[p]=s; } printf("%d",&a[i]); } } 为啥手机上运行出来不正常，电脑上就正常！！

user: user-3
content: 引用 1 楼 Operating System 的回复:10个数由小到大排序 选择排序方法排序，是从大到小排序。

user: user-4
content: 排序算法，首先输入10个数，然后对其进行排序，这个是选择排序。因为你这个是从小到大的，所以其思想是每一趟都选出来未排序中的最小一个放在已排好序的末位

user: user-5
content: 10个数由小到大排序
user-0 提问: 为什么我用winsock获取的IP是169.254开头的，但是自己IP正常可以上网

回复:
user: user-1
content: 因为你只获取了第一个ip地址啊。 addr[0] 可以获取所有的自己找找代码。

user: user-0
content: 引用 1 楼 user-2 的回复:[quote=引用 楼主 geralt14 的回复:] 获取部分：          char szHost[256]; 	::gethostname(szHost,256); 	HOSTENT*pHost=::gethostbyname(szHost); 	if(pHost!=NULL) 	{ 		CString cstrIP; 		in_addr*addr=(in_addr*)*(pHost->h_addr_list); 		cstrIP.Format(" 本机IP: %s",inet_ntoa(addr[0])); 		m_bar.SetText(cstrIP,0,0); 	}   获取的错误IP：   自己的电脑IP是好好的   一个是内网的，一个是外网的，你的局域网的192.168.2.11 广域网IP是16.254.8.20[/quote]   那怎么获取局域网IP呢

user: user-2
content: 引用 楼主 geralt14 的回复:获取部分：          char szHost[256]; 	::gethostname(szHost,256); 	HOSTENT*pHost=::gethostbyname(szHost); 	if(pHost!=NULL) 	{ 		CString cstrIP; 		in_addr*addr=(in_addr*)*(pHost->h_addr_list); 		cstrIP.Format(" 本机IP: %s",inet_ntoa(addr[0])); 		m_bar.SetText(cstrIP,0,0); 	}   获取的错误IP：   自己的电脑IP是好好的   一个是内网的，一个是外网的，你的局域网的192.168.2.11 广域网IP是16.254.8.20
user-0 提问: pscad与c#接口

回复:
user: user-0
content: 目前，我已经全部改成了兼容的软件，编译时不再报函数未定义的错误，但是又出现了LINK2005这样的重复定义的错误，还在研究其原因

user: user-0
content: 引用 5 楼 super_admi 的回复：一般情况下，如果是C++和C#的相互通信，大致会采用SOCKET和COM两种方式，我一般使用COM方式，即：使用C#写一个COM库，然后在C++中调用。  但按你的说法，PSCAD只支持C，而不支持C++，那么，如果非要和C#通信，建议使用SOCKET方式，因为在C中调用COM库是一个非常麻烦的事情。大致方式如下： 1.使用C#建立一个SOCKET监听服务，每收到请求时，抛给一个新的线程去处理； 2.C通过SOCKET接口，和C#端交互数据。谢谢你的回复，但是我并不是要和C #通讯，请看2楼我的回复，只是我在pscad里用c语言调用vs编译的c语言lib文件时出现读取不了lib里函数的问题

user: user-1
content: 一般情况下，如果是C++和C#的相互通信，大致会采用SOCKET和COM两种方式，我一般使用COM方式，即：使用C#写一个COM库，然后在C++中调用。  但按你的说法，PSCAD只支持C，而不支持C++，那么，如果非要和C#通信，建议使用SOCKET方式，因为在C中调用COM库是一个非常麻烦的事情。大致方式如下： 1.使用C#建立一个SOCKET监听服务，每收到请求时，抛给一个新的线程去处理； 2.C通过SOCKET接口，和C#端交互数据。

user: user-2
content: 引用 2 楼 梦沁兰香 的回复:[quote=引用 1 楼 user-2 的回复:]  C#是要.net环境支持的，pacad能用.net?老老实实用C或fortran写吧，C#是托管代码，调试不会成功的  不好意思，之前一直没注意过这个问题，以为只有C/C++的分别，我仔细看了一下，我用的仅仅是C，不是C#，整个模型里仅有C和fortran两种语言，这也是我一直想不通的问题，PSCAD明明是支持C的，如果我不调用.lib里集成的函数，直接将函数写在.c文件里，PSCAD运行是没有问题的，但是如果我将函数定义放在.lib里，用C调用.lib里的函数，就会报错，在运行说明中出现提示说我调用的函数未定义，但是PSCAD又能找到相应的.lib文件，感觉只是读不出来.lib里定义的函数，但是在VS下采用这种调用方式又不会有问题。[/quote] c++写的包装成C接口，注意编译lib时的平台，和版本要对应

user: user-0
content: 引用 1 楼 user-2 的回复:C#是要.net环境支持的，pacad能用.net?老老实实用C或fortran写吧，C#是托管代码，调试不会成功的  不好意思，之前一直没注意过这个问题，以为只有C/C++的分别，我仔细看了一下，我用的仅仅是C，不是C#，整个模型里仅有C和fortran两种语言，这也是我一直想不通的问题，PSCAD明明是支持C的，如果我不调用.lib里集成的函数，直接将函数写在.c文件里，PSCAD运行是没有问题的，但是如果我将函数定义放在.lib里，用C调用.lib里的函数，就会报错，在运行说明中出现提示说我调用的函数未定义，但是PSCAD又能找到相应的.lib文件，感觉只是读不出来.lib里定义的函数，但是在VS下采用这种调用方式又不会有问题。

user: user-0
content: 引用 3 楼 user-2 的回复: c++写的包装成C接口，注意编译lib时的平台，和版本要对应[/quote]  是的，我刚注意到这个问题，我发现我使用的PSCAD安装的是其自带的GNU Fortran编译器，在编译C文件的时候可能使用了GCC，与我用的Visual Studio编译出来的.lib文件不兼容，现在我准备尝试将PSCAD使用的编译器换成Interl Visual Fortran进行仿真  非常感谢大神的回复！！！谢谢~

user: user-2
content: 引用 楼主 梦沁兰香 的回复:问题背景：现在在做一个pscad的仿真模型，由于对fortran语言不够了解，想用.c文件调用c#工程生成的lib文件，然后用.f文件写一个接口程序调用前面的c文件，最后在pscad里自定义元件调用.f实现自定义元件对c#工程的调用  问题是在vs环境下测试没有问题的用c#调用c#工程生成的lib文件的方式在pscad环境里就会报错，错误为make:***[xxx.exe] Error1  有大神遇到过类似的情况吗？ C#是要.net环境支持的，pacad能用.net?老老实实用C或fortran写吧，C#是托管代码，调试不会成功的
user-0 提问: 请问这道题为什么一定要有-‘0’呢？

回复:
user: user-1
content: '1'是49 '0'是48 '1'-'0'就可以得到1了 '9'-'0'也可以得到9

user: user-0
content: 是因为s1和str都是char类型吗？所以需要减掉字符0

user: user-0
content: 引用 1 楼 自信男孩的回复:'0'~'9'和数字0~9对于十进制数而言，相差0x30，即相差'0'，比如5和'5'就是5 == '5'-'0'; 那后面的时间换算那里呢？str[9]不是十六进制数字呀

user: user-2
content: printf("%d", '0'); 自己做个测试就知道了

user: user-3
content: '0'~'9'和数字0~9对于十进制数而言，相差0x30，即相差'0'，比如5和'5'就是5 == '5'-'0';
user-0 提问: 我是小白，请教几个问题

回复:
user: user-1
content: 引用 11 楼 莯绿和熙 的回复:[quote=引用 10 楼 BakenJ的回复:][quote=引用 9 楼 莯绿和熙 的回复:] [quote=引用 8 楼 BakenJ的回复:][quote=引用 7 楼 莯绿和熙 的回复:] [quote=引用 6 楼 BakenJ的回复:]我也刚学，真的要自己摸索方法，然后与书本对比找不同才能搞懂 主要是没有答案呀！没法对答案呢。？[/quote]教材的题写了吗[/quote] 我准备上大一，听说《阿哈C语言》不错就先买了这本看看，打算预习一下，但买回来发现没答案[/quote]学C语言看<<C语言程序设计>>比较系统吧，而且有解析有答案，不过看个人喜好吧,我是把这本当教材,而且我也是准大一[/quote] 嗯嗯，谢谢你哦，非常感谢！[/quote]不用谢，都是小白，我也在摸索~~

user: user-0
content: 引用 10 楼 BakenJ的回复:[quote=引用 9 楼 莯绿和熙 的回复:] [quote=引用 8 楼 BakenJ的回复:][quote=引用 7 楼 莯绿和熙 的回复:] [quote=引用 6 楼 BakenJ的回复:]我也刚学，真的要自己摸索方法，然后与书本对比找不同才能搞懂 主要是没有答案呀！没法对答案呢。？[/quote]教材的题写了吗[/quote] 我准备上大一，听说《阿哈C语言》不错就先买了这本看看，打算预习一下，但买回来发现没答案[/quote]学C语言看<<C语言程序设计>>比较系统吧，而且有解析有答案，不过看个人喜好吧,我是把这本当教材,而且我也是准大一[/quote] 嗯嗯，谢谢你哦，非常感谢！

user: user-1
content: 引用 9 楼 莯绿和熙 的回复:[quote=引用 8 楼 BakenJ的回复:][quote=引用 7 楼 莯绿和熙 的回复:] [quote=引用 6 楼 BakenJ的回复:]我也刚学，真的要自己摸索方法，然后与书本对比找不同才能搞懂 主要是没有答案呀！没法对答案呢。？[/quote]教材的题写了吗[/quote] 我准备上大一，听说《阿哈C语言》不错就先买了这本看看，打算预习一下，但买回来发现没答案[/quote]学C语言看<<C语言程序设计>>比较系统吧，而且有解析有答案，不过看个人喜好吧,我是把这本当教材,而且我也是准大一

user: user-0
content: 引用 8 楼 BakenJ的回复:[quote=引用 7 楼 莯绿和熙 的回复:] [quote=引用 6 楼 BakenJ的回复:]我也刚学，真的要自己摸索方法，然后与书本对比找不同才能搞懂 主要是没有答案呀！没法对答案呢。？[/quote]教材的题写了吗[/quote] 我准备上大一，听说《阿哈C语言》不错就先买了这本看看，打算预习一下，但买回来发现没答案

user: user-1
content: 引用 7 楼 莯绿和熙 的回复:[quote=引用 6 楼 BakenJ的回复:]我也刚学，真的要自己摸索方法，然后与书本对比找不同才能搞懂 主要是没有答案呀！没法对答案呢。？[/quote]教材的题写了吗

user: user-0
content: 引用 6 楼 BakenJ的回复:我也刚学，真的要自己摸索方法，然后与书本对比找不同才能搞懂 主要是没有答案呀！没法对答案呢。？

user: user-1
content: 我也刚学，真的要自己摸索方法，然后与书本对比找不同才能搞懂

user: user-0
content: 引用 4 楼 Operating System的回复:#include<stdio.h> int main() { 	int n,i,j,k=1; 	printf("请输入:"); 	scanf("%d",&n); 	for(i=1;i<=n;i++){ 		for(j=0;j<i;j++) 			printf("%d  ",k++); 		printf("\n"); 	} 	return 0; } #include<stdio.h> int main() { 	int n,i,j; 	printf("请输入:"); 	scanf("%d",&n); 	for(i=1;i<=n;i++){ 		for(j=0;j<i;j++) 			printf("%d  ",i); 		printf("\n"); 	} 	return 0; } 第一个输出的是k＋＋但你定义的初始是k＝1，那输出不就变成2了吗？还有，k和i.j有什么关系？

user: user-2
content: #include<stdio.h> int main() { 	int n,i,j,k=1; 	printf("请输入:"); 	scanf("%d",&n); 	for(i=1;i<=n;i++){ 		for(j=0;j<i;j++) 			printf("%d  ",k++); 		printf("\n"); 	} 	return 0; } #include<stdio.h> int main() { 	int n,i,j; 	printf("请输入:"); 	scanf("%d",&n); 	for(i=1;i<=n;i++){ 		for(j=0;j<i;j++) 			printf("%d  ",i); 		printf("\n"); 	} 	return 0; }

user: user-0
content: 引用 1 楼 自信男孩的回复:书上都说了动手试一试，找找规律，那你让别人帮你写，怎么算是自己动手呢。 主要是需求不难，建议还是自己先动手写写 谢谢你的提醒，但我还是不太会，可以教教我吗？

user: user-0
content: 最近刚学，真的不太会，我刚才写了半天也没写出来，这才问问你们的

user: user-3
content: 书上都说了动手试一试，找找规律，那你让别人帮你写，怎么算是自己动手呢。 主要是需求不难，建议还是自己先动手写写
user-0 提问: 为什么这个程序让我输入后就没后续了？

回复:
user: user-0
content: 感谢感谢，脑子有点不清醒犯了这种错误。。。还检查了几遍。 总之帮了大忙了

user: user-1
content: while所在行尾多了个分号。
user-0 提问: C语言的基础学习（一）

回复:
user: user-0
content: 引用 1 楼 自信男孩 的回复：在Linux下编写，编译C/C++好像不用下载什么东西，当然也可以安装source Insight/vim等更高级的环境我这个是针对Windows系统的

user: user-1
content: 在Linux下编写，编译C/C++好像不用下载什么东西，当然也可以安装source Insight/vim等更高级的环境
user-0 提问: 经编译后产生目标模块的个数

回复:
user: user-1
content: 《程序员的自我修养——链接、装载与库》

user: user-2
content: 要想深入了解，建议花点功夫看看《程序员的自我修养》，对于你的问题，自己可以写一个hello world源程序，进行探究 . c源文件 . i预编译文件 . s汇编文件 . o目标文件 . exe可执行文件 printf函数将调用一些系统库函数进行系统调用，进入内核中断执行显示驱动程序，这些都是封装好的目标模块，也就是. o文件 再将这些. o文件通过链接器生成. exe文件，这里面牵扯模块中函数和数据的重定位。 . h文件在预编译阶段就展开了，一个. c文件生成一个模块。 最关键的就是：重定位

user: user-3
content: 目标模块, 目标文件这两个东西一般是一样的含义。 源程序编译后产生目标文件, 对于c语言来说，一个源程序编译后产生一个目标文件。 这里源程序是指*.c文件，不是*.h文件。
user-0 提问: C语言文本统计，在读取目录下文件信息的时候会少读一个文件

回复:
user: user-1
content: while(p_current_pos->next!=NULL)， 这句判断是不是有问题呢，改成 while(p_current_pos !=NULL)， 试一下。 如果你用 while(p_current_pos->next!=NULL)， 那么在循环外还要输出一下才能把最后一个文件得到，因为最后一个文件节点的next就是NULL了，所以不会继续执行while的 循环体了。
user-0 提问: C语言上面程序输出的结果筛选后输出

回复:
user: user-0
content: 引用 5 楼 自信男孩 的回复:通过你的代码看不出逻辑是做什么的？建议顺便把需求贴出来～  图下面我写了   图中运行的结果把dss筛选后显示出来

user: user-0
content: 这个可以去掉  我是让t变成十进制字节

user: user-1
content: 通过你的代码看不出逻辑是做什么的？建议顺便把需求贴出来～

user: user-1
content: t=("%d",temp1[i-1]); 这是什么操作？

user: user-0
content: 求给个代码  C语言学了个半吊子

user: user-2
content: 循环遍历判断呗，如果是dss模块则进行输出

user: user-0
content: 我上面已经把两个输出的结果存到了两个数组里了
user-0 提问: 请教，这个程序编译没有显示问题，运行为何不显示输入数组信息

回复:
user: user-1
content: 代码没什么问题，你是否输入了12个整型数据，只有输入满足12个整形数据时才会有输出。

user: user-0
content: 谢谢大虾！谢谢！！！！！

user: user-2
content: 如果你想打印数组也需要自行调用printf

user: user-2
content: 你程序是直接调用scanf的，scanf 本身不提示输入，程序运行后你直接输入就可以了。 你如果希望有提示可以： printf("please input....\n"); scanf(....)
user-0 提问: 马踏棋盘

回复:
user: user-0
content: 引用 4 楼 lin5161678的回复:代码呢? 代码电脑上，用的手机问的，不是很方便弄上去

user: user-0
content: 引用 3 楼 Italink的回复:是用回溯法吗？ 有没有标记去重？ 嗯嗯，回溯了，贪心光回溯太慢了，这个标记去重大概是什么思路啊，在哪个环节标记呢？

user: user-1
content: 代码呢?

user: user-2
content: 是用回溯法吗？ 有没有标记去重？

user: user-3
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。  “给定一个小点的输入，完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门！ 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出

user: user-4
content: 8*8棋盘是有很多解呀
user-0 提问: c语言问题

回复:
user: user-1
content: 根据你的信息长度一点一点的调吧，%s加上宽度设置。比如%10s，或者%-10s，可以查一下这样的格式意义。 %10s长度是10个字符，右对齐；%-10s长度也是10个字符，但是是左对齐。

user: user-2
content: 需要先扫描所有记录，得到每列内容的最大宽度，再按每列最大宽度显示各列。
user-0 提问: 这个代码怎么用

回复:
user: user-0
content: 引用 6 楼 羽墨mcuba 的回复：引用 5 楼 Fick dich 的回复:[quote=引用 2 楼 羽墨mcuba 的回复：]输入当前目录下的一个文件名，程序会把文件里面的内容打印到屏幕上。随便任何一个文件名都可以吗？还是一定要是文本文件？ 这里用文本文件测试比较好，不然打印出来的是乱码。[/quote]好的谢谢

user: user-1
content: 引用 5 楼 Fick dich 的回复:引用 2 楼 羽墨mcuba 的回复：输入当前目录下的一个文件名，程序会把文件里面的内容打印到屏幕上。随便任何一个文件名都可以吗？还是一定要是文本文件？ 这里用文本文件测试比较好，不然打印出来的是乱码。

user: user-0
content: 引用 2 楼 羽墨mcuba 的回复：输入当前目录下的一个文件名，程序会把文件里面的内容打印到屏幕上。随便任何一个文件名都可以吗？还是一定要是文本文件？

user: user-0
content: 引用 3 楼 自信男孩 的回复：#include<stdio.h> #include<stdlib.h>  int main() {     int ch;     FILE*fp;     char fname[50];     scanf("%s",fname);     fp=fopen(fname, "r");     if(fp==NULL)     {         printf("Failed to open file. Bye\n");         exit(1);     }     while((ch=getc(fp))!=EOF)     {         putchar(ch);         //fclose(fp);     }     getchar();     getchar();     fclose(fp);     return 0; } 代码有些问题，fclose不能放在循环内。  另外，怎么用？还是用的时候有问题？我不知道怎么用，我是把书上的代码抄下来了

user: user-2
content: #include<stdio.h> #include<stdlib.h>  int main() {     int ch;     FILE*fp;     char fname[50];     scanf("%s",fname);     fp=fopen(fname, "r");     if(fp==NULL)     {         printf("Failed to open file. Bye\n");         exit(1);     }     while((ch=getc(fp))!=EOF)     {         putchar(ch);         //fclose(fp);     }     getchar();     getchar();     fclose(fp);     return 0; } 代码有些问题，fclose不能放在循环内。  另外，怎么用？还是用的时候有问题？

user: user-1
content: 输入当前目录下的一个文件名，程序会把文件里面的内容打印到屏幕上。

user: user-0
content: 第五行多了一个\，别在意
user-0 提问: sizeof(struct)

回复:
user: user-1
content: sizeof实际上不是函数，在编译阶段就赋值了

user: user-2
content: 写程序得有个电脑的，这种问题一试就知道了

user: user-3
content: 何不试一下呢？写个小程序，在编译器上试一下就知道了。

user: user-4
content: sizeof(结构体名称) 或者sizeof(结构体变量) 都可以求

user: user-5
content: sizeof结构体(名)学习了

user: user-6
content: struct Student { 	char name[10]; 	int age; };  //结构体大小 int len = 0； len = sizeof(struct Student);  sizeof(结构体名称)即可获取结构体的大小。

user: user-7
content: 引用 3 楼 user-8 的回复:[quote=引用 2 楼 机械高 的回复:] [quote=引用 1 楼 gouyanfen的回复:][quote=引用 楼主 机械高 的回复:] 可以这样写嘛？sizeof(struct) 不可以[/quote] 那也就是说，想知道一个结构体类型变量的字节只能自己求？[/quote]不是[/quote] struct a { int b; } sizeof(a);

user: user-8
content: 引用 2 楼 机械高 的回复:[quote=引用 1 楼 gouyanfen的回复:][quote=引用 楼主 机械高 的回复:] 可以这样写嘛？sizeof(struct) 不可以[/quote] 那也就是说，想知道一个结构体类型变量的字节只能自己求？[/quote]不是

user: user-0
content: 引用 1 楼 gouyanfen的回复:[quote=引用 楼主 机械高 的回复:] 可以这样写嘛？sizeof(struct) 不可以[/quote] 那也就是说，想知道一个结构体类型变量的字节只能自己求？

user: user-7
content: 引用 楼主 机械高 的回复:可以这样写嘛？sizeof(struct) 不可以
user-0 提问: 关于一个简单代码的郁闷

回复:
user: user-0
content: 引用 5 楼 半根棒棒糖      จุ๊บ的回复: 看 感谢您的鼎力相助!!

user: user-1
content: 看

user: user-0
content: 引用 3 楼 自信男孩的回复:[quote=引用 2 楼 f_y_h182 的回复:] 是的，打错了。但是改成s=s1*2+s2还是老样子。  #include<stdio.h> #include<math.h>  int main() {     const double pi=acos(-1.0);     double r,h,s1,s2,s;      scanf ("%lf%lf", &r, &h);//这里是字母l     s1 = pi*r*r;     s2 = 2*pi*r*h;     s = s1*2.0 + s2;     printf("%.3f\n",s);     return 0;  } 改成如下，没问题，r,h输入不同的值，结果也不一样。  [/quote] 试过了，可能是"自己的手排斥键盘"，一切正常。感谢各位才高八斗的大佬。

user: user-2
content: 引用 2 楼 f_y_h182 的回复:是的，打错了。但是改成s=s1*2+s2还是老样子。  #include<stdio.h> #include<math.h>  int main() {     const double pi=acos(-1.0);     double r,h,s1,s2,s;      scanf ("%lf%lf", &r, &h);//这里是字母l     s1 = pi*r*r;     s2 = 2*pi*r*h;     s = s1*2.0 + s2;     printf("%.3f\n",s);     return 0;  } 改成如下，没问题，r,h输入不同的值，结果也不一样。

user: user-0
content: 是的，打错了。但是改成s=s1*2+s2还是老样子。

user: user-3
content: 是s= s1*2.0 + s2;吧
user-0 提问: 哪位大神可以帮忙解释下这道题？

回复:
user: user-1
content: 交换的方法，记住就好了

user: user-2
content: 就是a与b的值的交换

user: user-3
content: scanf();//a=1;b=2;c=3;  temp=a=1;a=b=2;b=temp=1;//此句是交换a和b的值，a=2;b=1;c=3;  a2=a1+c1=5;c2=a2-c1=(a1+c1)-c1=a1=2;a3=a2-c2=(a1+c1)-a1=c1=3;//此句是交换a和c的值，a=3;b=1;c=2;

user: user-4
content: 啥疑问？这就是介绍的两种交换变量的方法呀
user-0 提问: 新手提问：一道C语言的乘方计算基础题

回复:
user: user-1
content: signed long long中signed说明是有符号数，long long可以用lld格式输入，总的来说就是用%lld格式输入。

user: user-2
content: 引用 2 楼 user-2 的回复:www.cplusplus.com/reference/cstdio/printf/  默认基本类型都是 signed 所以 signed long long 直接用 %ll 就行了  另外宏定义那里，好像有问题，你应该在 _MAX 后面加上 空格，但是这个是题目内容就错了  错了，是 %lld

user: user-2
content: www.cplusplus.com/reference/cstdio/printf/  默认基本类型都是 signed 所以 signed long long 直接用 %ll 就行了  另外宏定义那里，好像有问题，你应该在 _MAX 后面加上 空格，但是这个是题目内容就错了
user-0 提问: 这个错误怎么改

回复:
user: user-1
content: 引用 9 楼 覆陇黄 的回复:[quote=引用 7 楼 羽墨志 的回复:]  #include <stdio.h>  int main() { 	int a; 	int b; 	int c; 	int d; 	int e;  	printf("请输入一个三位数\n"); 	scanf("%d",&a);  	//提取各位数字 	b = a/100;        //百位数字 	c = a%100/10; //十位数字 	d = a%10;       //个位数字  	//重新组合 	e = d*100+c*10+b;  // 这个如果d是0的话，程序可能就不太合适 	printf("与%d的逆序的数是%d\n",a,e);          printf(与%d的逆序的数是%d%d%d\n",a,b,c,d);  	return 0; }  添加了少量注释，帮助理解。   // 这个如果d是0的话，程序可能就不太合适 printf(与%d的逆序的数是%d%d%d\n",a,b,c,d);[/quote] 谢谢指出，只帮楼主修正了语法错误，没有考虑这些细节。

user: user-0
content: 引用 7 楼 羽墨志的回复: #include <stdio.h>  int main() { 	int a; 	int b; 	int c; 	int d; 	int e;  	printf("请输入一个三位数\n"); 	scanf("%d",&a);  	//提取各位数字 	b = a/100;        //百位数字 	c = a%100/10; //十位数字 	d = a%10;       //个位数字  	//重新组合 	e = d*100+c*10+b; 	printf("与%d的逆序的数是%d\n",a,e);  	return 0; }  添加了少量注释，帮助理解。 太感谢了!

user: user-2
content: 引用 7 楼 羽墨志 的回复: #include <stdio.h>  int main() { 	int a; 	int b; 	int c; 	int d; 	int e;  	printf("请输入一个三位数\n"); 	scanf("%d",&a);  	//提取各位数字 	b = a/100;        //百位数字 	c = a%100/10; //十位数字 	d = a%10;       //个位数字  	//重新组合 	e = d*100+c*10+b;  // 这个如果d是0的话，程序可能就不太合适 	printf("与%d的逆序的数是%d\n",a,e);          printf(与%d的逆序的数是%d%d%d\n",a,b,c,d);  	return 0; }  添加了少量注释，帮助理解。   // 这个如果d是0的话，程序可能就不太合适 printf(与%d的逆序的数是%d%d%d\n",a,b,c,d);

user: user-3
content: 重复定义了，而且前面的abcde都是int型，可以写在一个int后面，用逗号隔开。你的abcde是在主函数里面定义的，所以只能在主函数里面使用

user: user-1
content: #include <stdio.h>  int main() { 	int a; 	int b; 	int c; 	int d; 	int e;  	printf("请输入一个三位数\n"); 	scanf("%d",&a);  	//提取各位数字 	b = a/100;        //百位数字 	c = a%100/10; //十位数字 	d = a%10;       //个位数字  	//重新组合 	e = d*100+c*10+b; 	printf("与%d的逆序的数是%d\n",a,e);  	return 0; }  添加了少量注释，帮助理解。

user: user-4
content: 重定义了，既然上面已经定义声明了，下面就不要在定义了。

user: user-5
content: 请输入三位数那句 你应该是想用scanf输入函数吧

user: user-6
content: 推荐你重新看一遍题目，语义问题也很大。int类型变量a没初始化已经打印，输入a到e，后面却把b到e重新赋值。1声明及定义（初始化）、2打印提示、3输入a、4计算bdce、5打印a到e、6你的程序20行。估计你题目是这个意思

user: user-0
content: 引用 1 楼 user-7的回复:重复定义，前面定义int b; 后面再使用就不用 int b=了 直接b=a%10; 谢谢谢谢谢谢谢谢谢谢你啊!

user: user-7
content: 重复定义，前面定义int b; 后面再使用就不用 int b=了 直接b=a%10;
user-0 提问: c语言playsound函数

回复:
user: user-0
content: 感谢您的帮助！！！😄😄

user: user-1
content: 引用 6 楼 不#曾＆轻听 的回复:[quote=引用 5 楼 赵4老师的回复:]换MCI吧！ VC++6.0或者codeblocks中怎么调用MIC？[/quote] MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix,  MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl

user: user-0
content: 引用 5 楼 赵4老师的回复:换MCI吧！ VC++6.0或者codeblocks中怎么调用MIC？

user: user-1
content: 换MCI吧！

user: user-0
content: 引用 1 楼 user-2的回复:虽然目前尚未用到playsound，不过应该是有快进这个功能的吧，暂停时记录播放位置，再次播放快进到该位置。 希望交流，不喜勿喷 如何记录播放位置，再次播放时怎么快进？

user: user-2
content: 虽然目前尚未用到playsound，不过应该是有快进这个功能的吧，暂停时记录播放位置，再次播放快进到该位置。 希望交流，不喜勿喷
user-0 提问: 求大佬帮忙

回复:
user: user-1
content: 引用 1 楼 user-3 的回复:%.2d是保留两位小数的整形，整形没有小数位的，所以小数位都是0，这就是你运行结果的原因 改成%.2f，用浮点型就可以了  %.2d注意是d，整体还是整型数，所以应该没有小数的事情。 楼主的问题是，把得到的浮点数用整型数输出肯定是有问题的，因为浮点数和整型数在内存中的表示是不一样的，得到结果是0，也是正常的。 正确的输出格式应该是%.2f，这样得到的结果是保留2位小数。 或者用%.2lf也是可以的。

user: user-2
content: 你定义的float变量  输入输出用的是int型 把scanf里的%d换成%f  printf里的%.2d换成%.2f

user: user-3
content: %.2d是保留两位小数的整形，整形没有小数位的，所以小数位都是0，这就是你运行结果的原因 改成%.2f，用浮点型就可以了
user-0 提问: c语言小白求大佬指点

回复:
user: user-1
content: 从0开始啊，你两元的for循环从2开始是什么逻辑

user: user-2
content: for 里的one，two，five都从0开始，因为换零钱，不一定每一种都有，比如3元换6张5角的，one和two都是0

user: user-0
content: 引用 6 楼 user-3的回复:for 里的one，two，five都从0开始，因为换零钱，不一定每一种都有，比如3元换6张5角的，one和two都是0 解决了谢谢大佬麻烦了

user: user-3
content: for 里的one，two，five都从0开始，因为换零钱，不一定每一种都有，比如3元换6张5角的，one和two都是0

user: user-0
content: 引用 3 楼 user-3的回复:返回到上面的循环了，但是if只有一次能够通过，因为你的two是从2开始的。即one=1，two=2，five=5满足if，所以才会只打印一次。其实你的循环都应从0起，比如one=5，two=0，five=5也可以，但是你的循环，决定了3元只有一个结果 什么是循环从零开始呢 是初始化时把one two five 都赋值为0么 如果不是的话麻烦您可以举个例子么 拜托了大佬

user: user-0
content: 什么是循环从零开始呢 是初始化时把one two five 都赋值为0么 如果不是的话麻烦您可以举个例子么 拜托了大佬

user: user-3
content: 返回到上面的循环了，但是if只有一次能够通过，因为你的two是从2开始的。即one=1，two=2，five=5满足if，所以才会只打印一次。其实你的循环都应从0起，比如one=5，two=0，five=5也可以，但是你的循环，决定了3元只有一个结果

user: user-0
content: 引用 1 楼 user-3的回复:因为3元时，five<3*10/5=6，所以five只循环一次 那five那个只循环一次不会返回到上面继续循环么

user: user-3
content: 因为3元时，five<3*10/5=6，所以five只循环一次
user-0 提问: 一个算法题，想问一下改进前后的速度差异为什么这么大

回复:
user: user-1
content: 你那个“while (1)”如果ch不是太多”(”或”)”应该不会怎么用到temp数组和那一堆需要cpu判断的语句，只是判断下是不是回车…改前最多也就4个判断改后3个，还有临时数组应该不至于时间差距那么大。确定一下测试值是否一致，测试时有没有其它应用占用资源。再多的我没看，也许也看不出来

user: user-2
content: 没有缩进，命名乱搞的代码没人有兴趣帮你解答问题

user: user-0
content: 我再说一下我们的思路。读取括号串时先将单串内部的成对括号消除掉，然后计算其左右括号分别的个数，让相应的中的组里对应位置加1表示计数。 处理完所有串后，将所得的数组两两对应。

user: user-0
content: 引用 3 楼 qq_18298599的回复:粗略一看，乱！我这个小白非常确定能看得懂这个程序，懒得分析。7小时没人回复是有原因的，不要站在自己的角度写文章，看到这长长的一篇已经对本文提不起兴趣了……思路还要自己分析… 哈哈，您说得对，我们写的注释不够，命名也不规范，显得表述不是很清晰，还望见谅。

user: user-1
content: 粗略一看，乱！我这个小白非常确定能看得懂这个程序，懒得分析。7小时没人回复是有原因的，不要站在自己的角度写文章，看到这长长的一篇已经对本文提不起兴趣了……思路还要自己分析…

user: user-0
content: 测试用例刚才没截到

user: user-0
content: 改进前： #include <stdio.h> #include <string.h> int main(void){ 	int T =0; 	scanf("%d",&T);    				//输入行数  	getchar();						//把输入T时候的那个回车读掉  	int xx=0;						//输出结果  	int max=0,min=100200; 	int ZHengKuoHao[100100]={0};    //下标代表预处理后左括号的数目，相应的这个数组元素的值为有ZHengKuoHao[i]行经过预处理之后有i个（  	int FuKuoHao[100100]={0};       //同上 这个为）  	int WanJinYou=0; 	for(int i=0;i<T;i++){ 		int count=0;				//这个是我读取输入的时候把预处理之后的输入存进temp数组的下标  		int temp[100020]={0}; 		int zlen=0; 		int flen=0; 		while(1){					//这是候开始边读取一行的输入，边进行预处理，每读取一个元素仅与前面一个元素相比较  			char ch=0; 			scanf("%c",&ch);			 if(ch=='(') { 				temp[count++]=-1; 				flen++; 			} 			else if(ch==')') { 				if(count>0){		//如果形成了一个相邻的合法的括号，那么下标count往前移一位，表示当前读取位与前面一位为合法括号所以可以消除了  					if(temp[count-1]==-1){ 					flen--; 					count--; 					temp[count]=0; 					} 					else{ 						temp[count++]=1; 						zlen++; 					}				 				} 				else { 				temp[count++]= 1; 				zlen++;	 				}				 			} 			else if(ch=='\n') break; 		} 		if(max<flen) max=flen; 		if(max<zlen) max=zlen; 		if(min>flen) min=flen; 		if(min>zlen) min=zlen; 		if(zlen==0&&flen==0) WanJinYou++; 		else if(zlen==0&&flen>0) FuKuoHao[flen]++; 		else if(zlen>0&&flen==0) ZHengKuoHao[zlen]++; 	} 	for(int i=min;i<=max;i++){ 		if(FuKuoHao[i]>=ZHengKuoHao[i]) xx+=ZHengKuoHao[i]; 		else xx+=FuKuoHao[i];		 	} 	xx+=WanJinYou/2; 	printf("%d\n",xx); } 改进后： #include <stdio.h> #include <string.h> int main(void){ 	int T =0; 	scanf("%d",&T);    				//输入行数  	getchar();						//把输入T时候的那个回车读掉  	int xx=0;						//输出结果  	int max=0,min=100200; 	int ZHengKuoHao[100100]={0};    //下标代表预处理后左括号的数目，相应的这个数组元素的值为有ZHengKuoHao[i]行经过预处理之后有i个（  	int FuKuoHao[100100]={0};       //同上 这个为）  	int WanJinYou=0; 	for(int i=0;i<T;i++){ 		int zlen=0; 		int flen=0; 		while(1){					 			char ch=0; 			scanf("%c",&ch);			 if(ch=='(') { 				flen++; 			} 			else if(ch==')') {  				if(flen>0)		{ 					flen--; 				} 				else zlen++; 			} 			else if(ch=='\n') break; 		} 		if(max<flen) max=flen; 		if(max<zlen) max=zlen; 		if(min>flen) min=flen; 		if(min>zlen) min=zlen; 		if(zlen==0&&flen==0) WanJinYou++; 		else if(zlen==0&&flen>0){ 		    if(ZHengKuoHao[flen]>0) { 		    	ZHengKuoHao[flen]--; 		    	xx++; 			} 		    else FuKuoHao[flen]++; 		 }  		else if(zlen>0&&flen==0) { 			if(FuKuoHao[zlen]>0){ 				FuKuoHao[zlen]--; 				xx++; 			} 			else ZHengKuoHao[zlen]++; 		} 	} 	xx+=WanJinYou/2; 	printf("%d\n",xx); }
user-0 提问: #C  扑街群众

回复:
user: user-1
content: 那百度一下π，复制5000位存储到字符串中，输出就行了

user: user-0
content: 引用 楼主 潞黎的回复:#C语言#萌新求问一道题  题目求 派 小数点后5000位的数字  写出来没有结果 清醒后发现貌似码不对题.. 真不是我忘了给，全英文给了也没用

user: user-1
content: 这还不简单吗？百度一下π，复制5000位存储到字符串中，输出不就完了 其实我是想说的，题目呢？题目要求不给，难不成让别人给你猜题目？
user-0 提问: 取高八位与低八位

回复:
user: user-1
content: 255对应的16进制就是0xff，也就是8位bit最大值。对256取模得到的值取值范围是：[0, 255]。所以对256取模可以得到低8位。 但是直接不能得到高八位，可以先把高八位移到低位，然后在取模运算也是可以得到高八位的值。

user: user-2
content: short int right,left,v=0x2244; right = v & 0x00ff; // 取右8位 left = v >> 8; //取左8位 printf("right=%#x, left=%#x\n",right,left);

user: user-3
content: #define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff)) #define HIBYTE(w)           ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))

user: user-4
content: 对于123456这个十进制数，你怎么取低三位？很简单，1取000（10³），那么剩余的高三位呢？÷1000对吧，而short占2字节，共16个二进制位，模256（2^8），就可以得到低八位，这跟十进制是一样的模
user-0 提问: 字母e前和后都一定要有数字才能是浮点型么

回复:
user: user-1
content: 同楼上，字母e是科学记数法中有效数字与10的指数的截断，前后没有数字本就失去了数值的意义。1.2e-.4表示1.2*10^-0.4

user: user-2
content: 这三个都有问题，建议楼主不要停留在理论上，自己写个小程序测试一下。  这个是关于科学计数的表示方法，建议看看书本上的描述

user: user-3
content: C++ Floating-Point Constants Floating-point constants specify values that must have a fractional part. These values contain decimal points (.) and can contain exponents.  Syntax  floating-constant :  fractional-constant exponent-partopt floating-suffixopt digit-sequence exponent-part floating-suffixopt  fractional-constant :  digit-sequenceopt . digit-sequence digit-sequence .  exponent-part :  e signopt digit-sequence E signopt digit-sequence  sign : one of  + –  digit-sequence :  digit digit-sequence digit  floating-suffix :one of  f l F L  Floating-point constants have a “mantissa,” which specifies the value of the number, an “exponent,” which specifies the magnitude of the number, and an optional suffix that specifies the constant’s type. The mantissa is specified as a sequence of digits followed by a period, followed by an optional sequence of digits representing the fractional part of the number. For example:  18.46 38.  The exponent, if present, specifies the magnitude of the number as a power of 10, as shown in the following example:  18.46e0      // 18.46 18.46e1      // 184.6  If an exponent is present, the trailing decimal point is unnecessary in whole numbers such as 18E0.  Floating-point constants default to type double. By using the suffixes f or l (or F or L — the suffix is not case sensitive), the constant can be specified as float or long double, respectively.  Although long double and double have the same representation, they are not the same type. For example, you can have overloaded functions like  void func( double );  and   void func( long double );
user-0 提问: DEV-C++程序编译后运行不显示结果

回复:
user: user-1
content: 保存类型选择 C source files (*.c)

user: user-2
content: 引用 2 楼 大海包养了馒头的回复:为什么我用system("pause"); 不行，用getchar();就可以了？为什么要输入这个？我看的教学视频里，老师没有输入这么一句，也能正常显示。 加头文件 include<windows.h>。 百度也是可以搜到的

user: user-0
content: 为什么我用system("pause"); 不行，用getchar();就可以了？为什么要输入这个？我看的教学视频里，老师没有输入这么一句，也能正常显示。

user: user-3
content: 在return前加一句system("pause");或getchar();试试

user: user-0
content: 引用 1 楼 自信男孩 的回复:在return前加一句system("pause");或getchar();试试  为什么我用system("pause"); 不行，用getchar();就可以了？为什么要输入这个？我看的教学视频里，老师没有输入这么一句，也能正常显示。
user-0 提问: 关于c调用api的问题

回复:
user: user-1
content: #pragma comment(lib, "gdi32") //导入lib库 头文件是编译时用的 lib库是链接时用的

user: user-2
content: 他这用的是gcc，#pragma comment(lib, "gdi32")应该不行，要么把user32.a、gdi32.a加入到工程，要么命令行使用-luser32 -lgdi32选项

user: user-0
content: 引用 1 楼 早打大打打核战争的回复:没有添加gdi32库 请问怎么添加，gdi不是都会自带的吗

user: user-3
content: 《程序员的自我修养——链接、装载与库》

user: user-4
content: 头文件只是声明，函数原型（定义）是在库里的，所以如果提示未定义可能是没有加载对应的库（动态库或静态库）

user: user-2
content: 没有添加gdi32库
user-0 提问: 大佬帮我看看我这里为什么输出不了字符串 ，

回复:
user: user-1
content: 主函数里58行：StrAssign(&s, cstr)，结构体传指针进去赋值

user: user-2
content: #include <stdio.h> #include <stdlib.h> #include <string.h>     //顺序串：串中的字符被依次存放在一组连续的存储单元里。  #define MaxSize 30 typedef struct {     char data[MaxSize];   //存储字符串     int length;           //存储字符串的当前长度 }SqString;  //SqString中的串用length控制 //C语言中的字符串以'\0'标志结束  //将字符串常量cstr赋给串s，即生成其值等于cstr的串s。 void StrAssign(SqString *s, char cstr[]) {     int i;     for (i = 0; cstr[i] != '\0'; i++)     {         s->data[i] = cstr[i];     }     s->length = i; }  //显示串中的字符 void DispStr(SqString s) {     int i;     if (s.length > 0)     {         printf("1\n");         for (i = 0; i < s.length; i++)         {             printf("%c", s.data[i]);         }         printf("\n");     } } int main() {     SqString s;     memset(&s, 0, sizeof(s));     //char cstr[10] = {'d','a','r','k','s','o','u','l','s'};     char cstr[10] = {'d','a','r','k','s','o','u','l','s'};     //puts(cstr);     StrAssign(&s, cstr);     DispStr(s);     system("pause");     return 0; }  供参考～  传地址到StrAssign，否则不能把赋值之后的s带到main函数内。
user-0 提问: 求C语言顺序表删除值为X的所有结点的函数（类型为bool，判断是否删除成功）

回复:
user: user-1
content: 你的代码呢？

user: user-2
content: struct student { 	int id;						//学号 	char name[20];				//姓名 	float chinese;					//语文成绩  	float math;					//数学成绩  	float english;					//英语成绩  	float total;					//总成绩  	struct student * next;			//指向下一个结构体的指针  };   void DeleteInfo( struct student *head ) { 	int id=0; 	struct student *p = head, *q;								//先把信息显示出来方便查看修改 	while(1) 	{ 		printf("\n输入待删除的学号（Ctrl+Z退出）："); 		if( scanf("%d", &id ) <=0 || id<=0 )				//id故意出错也要退出 			break; 		for( q=p=head ; p!=NULL && p->id != id ; q=p , p=p->next );	//找到该结点 		if( p == NULL ) 		{ 			printf("您没有录入过此学号！\n"); 			continue; 		} 		q->next = p->next;								//前一个结点指向当前结点的下一个结点  		if( p != head )									//释放的结点不能是头结点 			free(p);										//释放当前结点  	} }

user: user-1
content: bool ListDeleteElem(SqList*& L, ElemType e)//删除所有元素值为e的结点，删除成功时返回true，否则返回false {     int i = 0, j = 0;//, count = 0;      for (j = 0; j < L->length; j++) {         if (L->data[j] != e) {             L->data[i] = L->data[j];             i++;             //count++;         }     }     if (i > 0)         return true;      return false; } 供参考～

user: user-0
content: bool ListDeleteElem(SqList*& L, ElemType e)//删除所有元素值为e的结点，删除成功时返回true，否则返回false { 	int i = 0, j = 0, count = 0; 	for (j = 0; j < L->length; j++) { 		if (L->data[j] != e) { 			L->data[i] = L->data[j]; 			i++; 			count++; 		}L->length = i; 	} }  网上找到的这种功能的函数都是void型的。我主要想问应该在哪里加上return true、return false。怎么加。希望好心人可以用代码方式解答。
user-0 提问: 程序有一处好像不太明白

回复:
user: user-1
content: 改一下，改成cpu * 1.0 / 2，这样后面表达式就按照浮点数来计算了。  否则cpu是整型数，2也是，所以cpu/2按照整型除法计算了，所以3/2=1。
user-0 提问: 求助，大神帮帮忙

回复:
user: user-0
content: 引用 3 楼 自信男孩 的回复：[quote=引用 2 楼 Arms� 的回复:] [quote=引用 1 楼 自信男孩 的回复：]你的代码呢？ 是不是调用system呢？用的 system(“pause”);[/quote] 那正常，去掉就好了。或者用getchar();替换system("pause");。  这个system在windows的编译器里比较常用，Linux上就没有这个。[/quote]谢谢

user: user-1
content: 引用 2 楼 Arms� 的回复:[quote=引用 1 楼 自信男孩 的回复：]你的代码呢？ 是不是调用system呢？用的 system(“pause”);[/quote] 那正常，去掉就好了。或者用getchar();替换system("pause");。  这个system在windows的编译器里比较常用，Linux上就没有这个。

user: user-0
content: 引用 1 楼 自信男孩 的回复：你的代码呢？ 是不是调用system呢？用的 system(“pause”);

user: user-1
content: 你的代码呢？ 是不是调用system呢？
user-0 提问: 求助:C语言一种奇怪用法

回复:
user: user-1
content: 书中描述可能不太严谨，书中代码是用typedef struct定义了一个类型Lnode， 然后用这个类型定义了一个指针变量LInkList

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

user: user-3
content: 书上定义的LinkList是一个指针变量，类型是Lnode * 除非这样定义：typedef Lnode * LinkList;那么LinkList就是一个类型别名了，可以当成类似char， int类型来看。

user: user-4
content: 书上说是类型就是类型了？LinkList是指向Lnode 类型的指针变量,就是一个指针变量