Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 二维数组的一个问题，一直没懂。

回复:
user: user-1
content: 电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

user: user-2
content: 其实二维三维四维，对于计算机来说都是一维，只不过我们人为划定了界限，A[2][2]和A【4】一样，只不过我们认为的规定a【0】【0】=a【0】

user: user-3
content: 就存在数组变量的内存里 a的内存保存的是a[0]的地址（a的内存保存的是一个指针，这个指针指向a[0]） a[0]的内存保存的是a[0][0]的地址（a[0]的内存保存的是一个指针，这个指针指向a[0][0]） a[1]的内存保存的是a[1][0]的地址（a[1]的内存保存的是一个指针，这个指针指向a[1][0]） a[2]的内存保存的是a[2][0]的地址（a[2]的内存保存的是一个指针，这个指针指向a[2][0]）

user: user-1
content: http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素 http://edu.csdn.net/course/detail/2516 C语言指针与汇编内存地址-三.数组和二维数组

user: user-4
content: 引用我们知道，a,  a[0], a[1], a[2]都是常量指针我们并不是这样知道的 我们知道的是 a a[0] a[1] a[2] 都是数组 数组都不是指针   引用指针都存放在哪儿指针不一定要存放 也有不需要存放的指针

user: user-5
content: 这些所谓的“指针”并没有单独的空间存放，就像数组名是数组的首地址一样。  数组不能等价指针，指针有自己的变量空间，而数组没有。

user: user-6
content: 内存里都是一维,不用想太复杂.
user-0 提问: c语言中基础

回复:
user: user-1
content: 缺少库文件吧估计

user: user-2
content: link错喽。

user: user-3
content: 路径不对？   问题图片什么的倒是放出来啊

user: user-4
content: 没有代码往哪猜
user-0 提问: 新手求助 大佬留步

回复:
user: user-0
content: 引用 8 楼 與蘤舊縐 的回复：今天犯蠢太多次了~~~不是a赋值给b，b自增~~~，没有初始化b，就这样嗯应该是初始化 我改出来了 谢谢

user: user-0
content: 引用 6 楼 喜欢做我自己 的回复：给数组a[]赋值你从a[[1]开始到a[5]了，但实际上应该是a[0]到a[4];数组下标是从0开始的，你初始化赋值跳过了a[0]，导致赋值出错，系统不支持这样跳着初始娿，到导致数据异常的好的谢谢

user: user-1
content: b105=｛0｝这就赋了一个值b0，用循环赋值

user: user-1
content: 今天犯蠢太多次了~~~不是a赋值给b，b自增~~~，没有初始化b，就这样

user: user-0
content: 引用 4 楼 與蘤舊縐 的回复：刚才没仔细看，原来不是排序  你的b数组没有初始化，a赋值给b的时候需要条件，有些位置没有存进去很正常改成b105=｛0｝？

user: user-2
content: 给数组a[]赋值你从a[[1]开始到a[5]了，但实际上应该是a[0]到a[4];数组下标是从0开始的，你初始化赋值跳过了a[0]，导致赋值出错，系统不支持这样跳着初始娿，到导致数据异常的

user: user-0
content: 引用 3 楼 與蘤舊縐 的回复：好吧你从1开始存储  看你这种情况多半越界了，在哪里自己先找找吧，调试很容易找出来  另外不要这么写~~~从0开始存好的谢啦 看下私信

user: user-1
content: 刚才没仔细看，原来不是排序  你的b数组没有初始化，a赋值给b的时候需要条件，有些位置没有存进去很正常

user: user-1
content: 好吧你从1开始存储  看你这种情况多半越界了，在哪里自己先找找吧，调试很容易找出来  另外不要这么写~~~从0开始存

user: user-0
content: 引用 1 楼 與蘤舊縐 的回复：for(int i=0;i<n;i++)数组下标越界emmmm？没太懂 哪里越界了

user: user-1
content: for(int i=0;i<n;i++)数组下标越界
user-0 提问: 求大佬告知

回复:
user: user-1
content: scanf("%d", &n ); 另一点，你的程序的逻辑问题有点大

user: user-2
content: #include <stdio.h>  int fun(int n) {     int ge, shi, bai;     ge = n % 10;     shi = n / 10 % 10;     bai = n / 100;     if (n == ge * ge * ge + shi * shi * shi + bai * bai * bai)         return 1;     else         return 0; }  int main() {     int n, flag;     printf("输入一个三位整数");     scanf("%d", &n);      flag = fun(n);     if (flag)     {         printf("是");     }     else     {         printf("不是");     }      return 0; } 在你的原代码基础上略作了改动。

user: user-3
content: 代码冗余 改成 int flag; flag=fun(flag);优化代码

user: user-3
content: 除了输入语句错误其他都ok

user: user-4
content: int n是变量的声明，这一条语句使得n获得了一块存储空间，但是存的是什么就随缘了 int n=10;既完成了声明，又对n进行了初始化 如果是static int n，则n默认被初始化为0

user: user-0
content: 引用 2 楼 csucxy的回复:你这个程序应该是编译通不过的。1、main函数第二行，使用了未初始化的变量n，编译应该会报错。2、fun函数第三行，scanf函数调用也是错的。 其它没细看。 对，我现在已经把scanf改对了，n变量没有初始化是什么意思？能否解释一下

user: user-2
content: 你这个程序应该是编译通不过的。1、main函数第二行，使用了未初始化的变量n，编译应该会报错。2、fun函数第三行，scanf函数调用也是错的。 其它没细看。

user: user-5
content: 加断点，F5调试。鼠标点击行号左边就可以加断点
user-0 提问: 写一个通用显示函数

回复:
user: user-1
content: 引用 1 楼 qq_33437675 的回复:现在只是想到了字符数组和整形数组，后面还有浮点型数组，感觉好难呀 那就用函数指针。  #include <stdio.h>  typedef void show_arr(void *arr, int len);  void visit(void *arr, int len, show_arr pfunc) {     pfunc(arr, len); }   void show_int(void *arr, int len) {     int i;      int *array = (int *)arr;      for (i = 0; i < len; i++)         printf("%d ", array[i]);     putchar(10); }  void show_char(void *arr, int len) {     int i;     char *array = (char *)arr;      for (i = 0; i < len; i++)         printf("%c ", array[i]);     putchar(10); }  void show_float(void *arr, int len) {     int i;     float *array = (float *)arr;      for (i = 0; i < len; i++)         printf("%f ", array[i]);     putchar(10); }  void show_double(double *arr, int len) {     int i;     double *array = (double *)arr;      for (i = 0; i < len; i++)         printf("%lf ", array[i]);     putchar(10); }  void show_string(void *arr, int len) {     int i;     char **str = (char **)arr;      for (i = 0; i < len; i++)         printf("%s ", str[i]);     putchar(10); }  int main(void) {     int arr[8] = { 1, 2, 3, 5 };     char *str[3] = {"hello", "world"};      visit(arr, 8, show_int);     visit(str, 3, show_string);      return 0; } 通用函数visit；

user: user-0
content: 现在只是想到了字符数组和整形数组，后面还有浮点型数组，感觉好难呀

user: user-2
content: 模板

user: user-3
content: C++的话可以用模版(这个估计才是完美的解决方案) 纯C的话，如2L所说用函数指针，或者也可以考虑用一个变量来判断类型（这些方法都有缺陷，不能覆盖所以类型） viod printAny(void* a, int len, int kind) {     switch (kind) {     case 0: //char*         char *c = (char*)a;         for (int i=0; i<len; i++) {             print("%c ", c[i]);         }         break;     case 1: //int*         //依此类推     case 2: //long*     ...     default:     } }
user-0 提问: 为什么运行之后是这个结果

回复:
user: user-1
content: 建议查一下\r的原理～

user: user-0
content: 引用 5 楼 與蘤舊縐的回复:不过是\r回到了行首，然后f替换了a，\t使得光标跳到了de前面，g替换了d，你手机上的其实是\t把前面的都覆盖掉了，而电脑上只是光标移动了 。。。。。。。明白了谢谢

user: user-0
content: 引用 4 楼 zjq9931的回复:\r是回到这一行的开始。 区别在于\t这个制表符占几个字节。这个是可以设定的。 我明白了，感谢大佬们。

user: user-2
content: 不过是\r回到了行首，然后f替换了a，\t使得光标跳到了de前面，g替换了d，你手机上的其实是\t把前面的都覆盖掉了，而电脑上只是光标移动了

user: user-3
content: \r是回到这一行的开始。 区别在于\t这个制表符占几个字节。这个是可以设定的。

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:  自己分解试一下，手机上的编译器和电脑上的一般不一样 搞不懂电脑上的运行结果

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:  自己分解试一下，手机上的编译器和电脑上的一般不一样 第一种结果是电脑上的用的是vc和dev c++

user: user-2
content: 自己分解试一下，手机上的编译器和电脑上的一般不一样
user-0 提问: C语言输入输出求大神解答一下下

回复:
user: user-0
content: 引用 3 楼 自信男孩 的回复：a3是接收到了'\n'，直接返回了。因为这个'\n'是scanf即输入a1, a2后的回车你好为什么gets接收/n就返回了

user: user-1
content: a3是接收到了'\n'，直接返回了。因为这个'\n'是scanf即输入a1, a2后的回车

user: user-0
content: 引用 1 楼 user-2 的回复：gets可以用来输入带空格的字符串，而scanf() 以 空格 或 回车符 结束读取，空格 或 回车符 会遗留在缓冲区。然后我还是不懂为啥选A

user: user-2
content: gets可以用来输入带空格的字符串，而scanf() 以 空格 或 回车符 结束读取，空格 或 回车符 会遗留在缓冲区。
user-0 提问: 为什么？？

回复:
user: user-1
content: ++a的结果返回给a，a还会跟着后面a变化，直到拿去算？+？的时候

user: user-1
content: 同理（a++）+（a++）=3 （++a）+（++a）=6,3+3=6

user: user-1
content: a++看成tmp=a，a=a+1 ++a看成a=a+1 1+3=4 3+2=5

user: user-2
content: 引用 楼主 ZG991205 的回复:a=1 (a++)+(++a)=4 (++a)+(a++)=5  莫中了老师的毒 不同编译器理解不同，完全脱离正常计算顺序 现在考试基本也没认出这种题了

user: user-3
content: 未定义的行为！不要纠结这种写法了，虽然能编译运行，但是结果是没准的
user-0 提问: 求1!+2!+3!+4!+···+20!

回复:
user: user-1
content: sum = 1；

user: user-2
content: 你可以写一个递归函数计算x的阶乘，然后循环相加就好了

user: user-0
content: 引用 7 楼 qybao的回复:因为sum的值可以继续使用 比如第一次 sum=1*1=1! 第二次 sum = sum*2 = 1!*2 = 2! 第三次 sum = sum*3 = 2!*3 = 3! 依次类推  其实第二个for实际上就是让j每次使用完以后j=i，所以第二个for可以不要，直接用第一个for的i就可以了 哦哦，懂了(￣∀￣) 谢谢(*°∀°)=3

user: user-3
content: 因为sum的值可以继续使用 比如第一次 sum=1*1=1! 第二次 sum = sum*2 = 1!*2 = 2! 第三次 sum = sum*3 = 2!*3 = 3! 依次类推  其实第二个for实际上就是让j每次使用完以后j=i，所以第二个for可以不要，直接用第一个for的i就可以了

user: user-0
content: 引用 4 楼 qybao的回复:如LS说的sum在j循环前初始化一下，或者如下for循环改一下 for (i=1, j=1; i<=20; i++) {     for (; j<=i; j++) } 或者根本就不需要第二层for循环 for (i=1; i<=20; i++)  {     sum = sum*i;     total = total + sum; } 我有个问题，把j=1放到第一个for循环中为什么就不用重置sum=1了呢？

user: user-0
content: 引用 4 楼 qybao的回复:如LS说的sum在j循环前初始化一下，或者如下for循环改一下 for (i=1, j=1; i<=20; i++) {     for (; j<=i; j++) } 或者根本就不需要第二层for循环 for (i=1; i<=20; i++)  {     sum = sum*i;     total = total + sum; } 谢谢(*°∀°)=3(抱大腿)

user: user-3
content: 如LS说的sum在j循环前初始化一下，或者如下for循环改一下 for (i=1, j=1; i<=20; i++) {     for (; j<=i; j++) } 或者根本就不需要第二层for循环 for (i=1; i<=20; i++)  {     sum = sum*i;     total = total + sum; }

user: user-0
content: 引用 2 楼 Eleven的回复:在第一个for语句中需要重置sum = 1; 非常感谢╰(*´︶`*)╯

user: user-4
content: 在第一个for语句中需要重置sum = 1;

user: user-5
content: sum重置。。。。。。
user-0 提问: 请大家看看我这一元二次方程求根程序哪错了

回复:
user: user-1
content: #include<stdio.h> #include<math.h> /*     有两个不等的实根即d=b*b-4*a*c > 0     有两个相等的实根即d=b*b-4*a*c = 0  */  int main() {      float a,b,c,d,q,x1,x2;      scanf("%f %f %f", &a,&b,&c);      d = b*b-4*a*c;     //q = sqrt(d);      if(d>0)     {         q = sqrt(d);   //放在这里比较合适，不然d<=0时，调用sqrt不合适         x1 = ((-1)*b+q)/2*a;         x2 = ((-1)*b-q)/2*a;          printf("x1=%f,x2=%f",x1,x2);     //} else if(d = 0)     } else if(d == 0)     {         x1 = (-1)*b/2*a;         printf("x1=x2=%f",x1);     }else     {         printf("没有实数根！");     }      return 0;  }  供参考～

user: user-2
content: 这一句应当在判断有实根后再执行。  q = sqrt(d);
user-0 提问: 请大家看看我这一元二次方程求根程序哪错了

回复:
user: user-1
content: #include<stdio.h> #include<math.h> /*      有两个不等的实根即d=b*b-4*a*c > 0      有两个相等的实根即d=b*b-4*a*c = 0   */   int main() {       float a,b,c,d,q,x1,x2;       scanf("%f %f %f", &a,&b,&c);       d = b*b-4*a*c;     //q = sqrt(d);       if(d>0)     {         q = sqrt(d);   //放在这里比较合适，不然d<=0时，调用sqrt不合适         x1 = ((-1)*b+q)/2*a;         x2 = ((-1)*b-q)/2*a;           printf("x1=%f,x2=%f",x1,x2);     //} else if(d = 0)     } else if(d == 0)     {         x1 = (-1)*b/2*a;         printf("x1=x2=%f",x1);     }else     {         printf("没有实数根！");     }       return 0;   } 供参考～  从代码角度分析道的问题，可以对比代码找一下自己的问题～

user: user-2
content: /2*a改为 /(2*a)
user-0 提问: 什么叫通用显示函数。通用函数是什么

回复:
user: user-1
content: 通用就是后面说的，可以显示任何数组的元素的函数。通用，一般都能用的。  void show_array(int *arr, int len);//数组首地址和数组长度 如果是任何类型的，可以考虑使用void *arr；函数内处理是需要特殊一些

user: user-2
content: void show_array<T>(T *arr, size_t len);
user-0 提问: 求助：c语言简单程序

回复:
user: user-1
content: 引用 1 楼 赤马零伊 的回复:简单： 看代码~ # include <stdio.h> # include <string.h> # define N 11 char S[N]={"%A.Blf"},T[N]; char A[N],B[N]; double D=1.123456789; int BF(char *A,char *B,char *C,char *D) {//将A[]中的所有B[]换成C[] 所形成的新字符串存到D[]中     int i=0,j=0,k=0,m=0,n=0;//返回替换的个数     do{         if (B[j]&&A[i++]==B[j])j++;         else         {             if(!B[j]&&++n) while(C[m])D[k++]=C[m++];             else  (i-=j)&&(D[k++]=A[i-1]);             j=m=0;         }     }while(A[i-1]);     return n; } int main() {     char X[]={"A"},Y[]={"B"};     scanf("%s%s",A,B);     BF(S,X,A,T);//将S字符串当中的'A'用A替换  形成的新字符串存到T里     BF(T,Y,B,S);//将T字符串当中的'B'用B替换  形成的新字符串存到S里     printf(S,D);//以S的格式输出D }  这个代码，你输入的即使是3位数  也能运行    也可以输入 -8  10    让他靠左定格~  自己整理的BF函数，拿走给分不谢

user: user-1
content: 简单： 看代码~ # include <stdio.h> # include <string.h> # define N 11 char S[N]={"%A.Blf"},T[N]; char A[N],B[N]; double D=1.123456789; int BF(char *A,char *B,char *C,char *D) {//将A[]中的所有B[]换成C[] 所形成的新字符串存到D[]中     int i=0,j=0,k=0,m=0,n=0;//返回替换的个数     do{         if (B[j]&&A[i++]==B[j])j++;         else         {             if(!B[j]&&++n) while(C[m])D[k++]=C[m++];             else  (i-=j)&&(D[k++]=A[i-1]);             j=m=0;         }     }while(A[i-1]);     return n; } int main() {     char X[]={"A"},Y[]={"B"};     scanf("%s%s",A,B);     BF(S,X,A,T);//将S字符串当中的'A'用A替换  形成的新字符串存到T里     BF(T,Y,B,S);//将T字符串当中的'B'用B替换  形成的新字符串存到S里     printf(S,D);//以S的格式输出D }
user-0 提问: c语言

回复:
user: user-1
content: （int）就是取浮点数的整数部分，自己计算一下就明白了了

user: user-0
content: 引用 2 楼 starytx的回复:这个函数大概作用就是把传入的参数小数点后第三位进行四舍五入处理 为什么要这么写啊。。

user: user-0
content: 引用 1 楼 自信男孩的回复:这几句那句你不明白，可以直接指出来。代码不复杂的～ 主要不明白为什么四舍五入处理要这么写。。

user: user-1
content: 这个函数大概作用就是把传入的参数小数点后第三位进行四舍五入处理

user: user-2
content: 这几句那句你不明白，可以直接指出来。代码不复杂的～

user: user-3
content: float fun(float h) { int tmp=(int)(h*1000+5）/10; return （(float)tmp）/100.0; }  这样写可能更明确一些。当float强制转换成int时，会丢弃小数后的数据，注意是直接丢弃，不会进行四舍五入。为了保小数点后3位小数。并且第小数点后3位是四舍五入得到的。

user: user-1
content: 引用 6 楼 自信男孩 的回复:[quote=引用 2 楼 starytx 的回复:] 这个函数大概作用就是把传入的参数小数点后第三位进行四舍五入处理 不是四舍五入吧，int是取整的吧[/quote]我说的是整个函数的作用

user: user-2
content: 引用 2 楼 starytx 的回复:这个函数大概作用就是把传入的参数小数点后第三位进行四舍五入处理 不是四舍五入吧，int是取整的吧
user-0 提问: c语言

回复:
user: user-1
content: 函数fun接受一个float类型的参数，并返回一个float类型的返回值 定义一个int类型的变量tmp，用强制类型转换把float类型的变量h转换为int类型，然后与1000相乘再加5的和除以10 用强制类型转换把int类型的变量tmp转换成float类型的变量然后再与100相除，最后把值返回给主调函数  才学c语言1个多月，如果解释错了勿怪 还有发帖子要把主要问题写清楚，就写个“c语言”谁没事会进来看

user: user-2
content: 就是数学运算吧，没啥不好理解的

user: user-3
content: 这几句那句你不明白，可以直接指出来。代码不复杂的～
user-0 提问: C语言 求大佬救一救新手小白！！

回复:
user: user-1
content: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { 	FILE* file; 	file = fopen("test.txt", "r"); 	if (file == NULL) { 		printf("the file : test.txt not found!\n"); 		exit(-1);// stdlib.h 	} 	int length[26]; 	memset(length, 0, sizeof(length)); 	while (!feof(file)) { 		char str[26]; 		memset(str, 0 , sizeof(str)); 		int tmp = fscanf(file, "%s", str); 		++length[strlen(str)];// string.h 	} 	for (int i = 1; i < 26; ++i) { 		if (length[i] > 0) { 			printf("length %d : %d\n", i, length[i]); 		} 	} 	fclose(file); 	return 0; } /**************************************************** 编译环境：Visual Studio 2019 测试样例： test.txt文件 a ab afe fsge eogej iohger fwjie jwei fhw fe e e wtkengwo wtkengwo wtkengwo 你好  输出： length 1 : 3 length 2 : 2 length 3 : 2 length 4 : 3 length 5 : 2 length 6 : 1 length 8 : 3 请按任意键继续. . . ****************************************************/
user-0 提问: c语言问题

回复:
user: user-0
content: 懂了，谢谢，一直都以为子函数的返回值可以一直返回到main函数输出

user: user-1
content: 不是吧，你的f()的返回值没有变量接受，显示不出来的。 可以的话，发个截图看看。 你把程序这样写试试，a输出的就是返回值。 #include<stdio.h> int f(){return 1;} int main(){ int a; a=f(); printf("%d",a); return 0; }

user: user-0
content: 子函数里应该是写的return -1,然后运行一下看到的返回值

user: user-1
content: 你是用什么方法知道返回值的，说说看看

user: user-2
content: 就你写的这一行看，不存在这种情况，莫不是你的编译器炸了
user-0 提问: 怎么写出第一个程序

回复:
user: user-1
content: 不过就逻辑稍微比1/2两个水题复杂了点，你可以把题目分步，慢慢实现每一步，比如你先实现一下起步里程之内怎么回事，然后在慢慢往后做，不论多么复杂的程序都是这么搞出来的，等你熟悉了就可以一把写完了

user: user-0
content: 引用 8 楼 與蘤舊縐的回复:明显让你自己输进去一个限速，再输进去一个时速，然后比较一下输出一个结果（一句话）  爱怎么写怎么写，题目没的要求，自己发挥 第3个是真的不会啊。。。

user: user-1
content: 多个几个if而已，整理一下思路，理清因果关系，然后写呗 师傅领进门，修行靠个人

user: user-1
content: 明显让你自己输进去一个限速，再输进去一个时速，然后比较一下输出一个结果（一句话）  爱怎么写怎么写，题目没的要求，自己发挥

user: user-0
content: 引用 5 楼 與蘤舊縐的回复:[quote=引用 4 楼 qq_45689538 的回复:] [quote=引用 2 楼 與蘤舊縐的回复:]1、用三个变量，存储输入的三个整数，比较大小，从小到大输出（感觉你还没学到数组） 2、写不下去了~~~太水了 ？？？啥。。。。。。。。。[/quote]  前面总有例题吧，模仿一下，不至于几个if   else的问题自己还解决不了吧[/quote] 不对不对，是第3个怎么写！？？

user: user-0
content: 引用 5 楼 與蘤舊縐的回复:[quote=引用 4 楼 qq_45689538 的回复:] [quote=引用 2 楼 與蘤舊縐的回复:]1、用三个变量，存储输入的三个整数，比较大小，从小到大输出（感觉你还没学到数组） 2、写不下去了~~~太水了 ？？？啥。。。。。。。。。[/quote]  前面总有例题吧，模仿一下，不至于几个if   else的问题自己还解决不了吧[/quote] 那第二个呢怎么写？。。。。。

user: user-1
content: 引用 4 楼 qq_45689538 的回复:[quote=引用 2 楼 與蘤舊縐的回复:]1、用三个变量，存储输入的三个整数，比较大小，从小到大输出（感觉你还没学到数组） 2、写不下去了~~~太水了 ？？？啥。。。。。。。。。[/quote]  前面总有例题吧，模仿一下，不至于几个if   else的问题自己还解决不了吧

user: user-0
content: 引用 2 楼 與蘤舊縐的回复:1、用三个变量，存储输入的三个整数，比较大小，从小到大输出（感觉你还没学到数组） 2、写不下去了~~~太水了 ？？？啥。。。。。。。。。

user: user-2
content: 手敲键盘，眼看屏幕，保存文件，编译运行

user: user-1
content: 1、用三个变量，存储输入的三个整数，比较大小，从小到大输出（感觉你还没学到数组） 2、写不下去了~~~太水了

user: user-0
content: 还有第二个程序怎么写。。。。
user-0 提问: 希望各位大神指导技术小白

回复:
user: user-0
content: 不说别的了，继续去敲代码了。

user: user-0
content: 嗯，确实，我自己也会去尝试用不同的方法敲出来的，敲出来也会发出来的。

user: user-1
content: 引用 3 楼 qq_45719513 的回复:[quote=引用 2 楼 tb_youth的回复:]#include <stdio.h> #include <math.h> int main() {    double a,b,c,p,S;    scanf("%lf%lf%lf",&a,&b,&c);    p = (a+ b + c) / 2;    S = sqrt(p*(p-a)*(p-b)*(p-c));    printf("%lf\n",S);    return 0; } 谢谢，虽然是在你的指导下完成的作业，但我还是重新对编程充满了信心。[/quote]  这是指导吗？这是赤裸裸的抄袭！

user: user-0
content: 引用 2 楼 tb_youth的回复:#include <stdio.h> #include <math.h> int main() {    double a,b,c,p,S;    scanf("%lf%lf%lf",&a,&b,&c);    p = (a+ b + c) / 2;    S = sqrt(p*(p-a)*(p-b)*(p-c));    printf("%lf\n",S);    return 0; } 谢谢，虽然是在你的指导下完成的作业，但我还是重新对编程充满了信心。

user: user-2
content: #include <stdio.h> #include <math.h> int main() {    double a,b,c,p,S;    scanf("%lf%lf%lf",&a,&b,&c);    p = (a+ b + c) / 2;    S = sqrt(p*(p-a)*(p-b)*(p-c));    printf("%lf\n",S);    return 0; }

user: user-1
content: 开始写吧
user-0 提问: 3.已知三角形的三边 a=3,b=4,c=5,求其面积s

提示:假设有一个三角形,边长分别为a、b、c,三角形的面积s
=

回复:
user: user-1
content: 使用三角形面积公式s=根号下（p(p-a)(p-b)(p-c)），p为半周长
user-0 提问: 3.已知三角形的三边 a=3,b=4,c=5,求其面积s

提示:假设有一个三角形,边长分别为a、b、c,三角形的面积s
=

回复:
user: user-1
content: 百度百科：海伦公式。

user: user-2
content: 因为a^2 +b^2 = c^2 所以是直角三角形 double  s = 0.5*3*4 = 6; cout<<s;
user-0 提问: 麻烦看一下这是什么问题

回复:
user: user-1
content: 引用 6 楼 自信男孩 的回复:[quote=引用 4 楼 Ls970711 的回复:] scanf()函数是不可以对float类型的变量进行操作的，建议去看下scanf()函数原型~ 你的描述有问题吧，怎么不能对float类型的变量操作呢？%f不就是针对float的吗？[/quote] 确实描述的有问题，我重新看了下，scanf是不能对%4.2f这种带精度的进行操作

user: user-2
content: 楼主的代码没发现什么问题，建议楼主贴出错误信息～

user: user-3
content: 楼主的代码没发现什么问题，建议楼主贴出错误信息～

user: user-3
content: 引用 4 楼 Ls970711 的回复:scanf()函数是不可以对float类型的变量进行操作的，建议去看下scanf()函数原型~ 你的描述有问题吧，怎么不能对float类型的变量操作呢？%f不就是针对float的吗？

user: user-4
content: float x,y;     scanf("%f",&x);     if(x < 1)     {     	y = x; 	} 	else if(x < 10) 	{ 		y = 2*x -1; 	} 	else 	{ 		y = 3*x - 11; 	} 	printf("%f\n",y);    执行没问题，估计是你哪里用来中文字符

user: user-1
content: scanf()函数是不可以对float类型的变量进行操作的，建议去看下scanf()函数原型~

user: user-5
content: 是不是if（）和else if（）这里的括号是中文字符

user: user-0
content: 有error,执行不出来

user: user-6
content: 问题是什么？？？
user-0 提问: 不知道是哪里出了问题，输出字符的时候输出个问好出来？

回复:
user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h>  #define MAXSIZE 100  //顺序栈存储空间的初始分配量  typedef struct       //顺序栈的存储结构 {     char *base;     char *top;     int stacksize; }SqStack;  void task_1(void); /*void task_2(void);   void task_3(void);*/ SqStack* InitStack(SqStack *S); SqStack* Push(SqStack *S,char *ch); char Pop(SqStack *S); char GetTop(SqStack *S); bool StackEmpty(SqStack *S); void Matching_1(SqStack *S);  int main() {     int flag = 1;     while(flag)     {         printf("实验四一共有三个任务，请输入对应数字打开任务，输入0结束任务：\n");         scanf("%d",&flag);         switch(flag)         {             case 1:                 printf("您选择了任务一\n");                 task_1();                 break;                 /*case 2:                   printf("您选择了任务二\n");                   task_2();                   break;                   case 3:                   printf("您选择了任务三\n");                   task_3();                   break;*/             default:                 printf("请输入0、1、2或3\n");                 break;         }     }     return 0; }  void task_1(void) {     SqStack *S = NULL;      S = (SqStack *)malloc(sizeof(SqStack));     if (!S)         exit(0);      //S = InitStack(&S);     S = InitStack(S);     printf("1p %d\n",S->stacksize);     printf("该算法意在判断判断字符串中是否有中心对称关系。\n");     Matching_1(S); } void Matching_1(SqStack *S) {     char ch;     int i,n;     int flag = 1;     printf("有多少个字符：");     scanf("%d",&n);     printf("请输入%d个字符：",n);     for(i = 0;i < n/2;i++)     {         scanf(" %c",&ch);         printf("2p %c\n",ch);         S = Push(S,&ch);         printf("5p %c\n", *(S->top));     }     if(n%2 == 1)         scanf(" %c",&ch);     n = n/2;     while(n--)     {         scanf(" %c",&ch);         if(ch != Pop(S))             flag = 0;     }     printf("\n%d\n",flag); }  SqStack* InitStack(SqStack *S) {     S->base =(char*)malloc(sizeof(char) * MAXSIZE);     S->top=S->base;     S->stacksize = MAXSIZE;      return S; }  bool StackEmpty(SqStack *S) {     if(S->top == S->base)         return 0;     else         return 1; }  SqStack* Push(SqStack *S,char *ch) {     printf("3p %c\n",*ch);     if(S->top - S->base == S->stacksize)     {         printf("栈满/n");         return S;     }     *S->top = *ch;     printf("4p %c %c\n",*S->top,*S->base);     S->top++;     return S; }  char Pop(SqStack *S) {     int ch;     if(S->top == S->base)     {         printf("栈空");         return 0;     }     ch = *S->top;     S->top--;     printf("666\n%c\n666",ch);     return ch; } char GetTop(SqStack *S) {     char ch;     if(S->top!=S->base)     {         ch = *(S->top-1);         return ch;     }     return 0; } 供参考～
user-0 提问: 运算

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

user: user-2
content: 无满意结贴了吧，免得留在这儿挡着别人

user: user-2
content: 实践是检验真理的唯一标准。  几行代码敲一遍远远比问要体会深刻。

user: user-0
content: 引用 1 楼 lin5161678的回复:能上网为什么不能自己打开编译器写代码运行呢 下次会注意的，不好意思啦

user: user-0
content: 引用 2 楼 user-4的回复:为什么这样的题目都不会做？到底有没上过课？有没看过书？有没写过程序？ 实在不好意思，我不是这个意思，下次会改的

user: user-0
content: 实在不好意思，我不是这个意思，下次会改的

user: user-3
content: 能上网为什么不能自己打开编译器写代码运行呢

user: user-4
content: 为什么这样的题目都不会做？到底有没上过课？有没看过书？有没写过程序？
user-0 提问: 求助

回复:
user: user-1
content: for循环中每条语句之间用分号;

user: user-2
content: for循环中也要用;而不是,

user: user-0
content: 谢谢谢谢

user: user-0
content: 好的，谢谢了！！！！！

user: user-3
content: 光标都在那了，不加个分号么？？？

user: user-3
content: So, what happened?
user-0 提问: c语言

回复:
user: user-1
content: 1：没直接关系 2：要转化，可以查表，也可以用类型转换 3：类型转换， char c='1'; int i=c;

user: user-2
content: 引用 楼主 weixin_45706940 的回复:ascll码值与一般数值有关系吗，比如说1的值与他的ascll码值有关系吗，如果将字符1转化为整数怎么写  一般数值在ascll表中存在的只有0~9，这十个数从小到大排在一起，0和'0'对应的ASCII值没有直接关系，'0'的值只是ASCII字符排列的结果，要从'7'得到7，使用强制类型转换是不行的，这样会将'7'变成其ASCII值，需要用'7'-'0'得到7
user-0 提问: 这个咋回事啊？来个人帮我解决解决一下呗！

回复:
user: user-1
content: 不对呀，dev c++ 就是一个 ide啊，编译器还是 gcc，难道dev c++ 的默认编译选项 有 -m16 ？？

user: user-2
content: 重新安装dev c++64位的版本，居然还有默认设置16位的~换个安装包吧

user: user-1
content: 噗，编译内容发一下（软件下面的小窗口

user: user-0
content: 引用 1 楼 提及的回复:什么编译器？ 编译选项？  怎么生成 16位程序了 dev-c++ 我也不知道，咋搞呀

user: user-1
content: 什么编译器？ 编译选项？  怎么生成 16位程序了
user-0 提问: 一小段代码

回复:
user: user-0
content: 感谢各位大佬指点，我有点粗心了，感谢😂😂😂。

user: user-1
content: 当然实际不能这样写，太麻烦了。

user: user-1
content: 代码应该是sum=sum+(-1)^i，思路是 i 从1循环到n，逐项计算项的值并累加到sum中。

user: user-1
content: 这个数列共n项，从1开始编号的话最后一项的编号也是n。 某个数的n次方就是有n个该数自乘，比如最后一项表示有n个-1相乘，如果n是偶数这项就等于1，n是奇数这项就等于-1。

user: user-0
content: 那这个题目的意思是负一，一，一直这样循环，最后那个负一的n次方就是总共出现了多少个负一吗？

user: user-2
content: 伪代码不像伪代码，代码不像代码，异或也不是这么用的 sum+=pow(-1,i);

user: user-3
content: 明显代码敲错了，sum 那一句应该是  sum=sum+(-1)^i;
user-0 提问: c语言题目

回复:
user: user-1
content: 用一个char型变量存储一个字符，可以根据ascii码表查找出这个字符存储在这个变量里的值是多少，所以同面值转换就是把数组字符转换为该字符对应的数值存储起来。来一张码表：  比如说字符char a =‘3’；那么a的值就是51，那么a='3'-'0';就是a=51-48;不能再解释了就这么明白

user: user-2
content: ASCII码表中，数字字符从'0'到'9'是连续的，数字字符的ASCII码值减去字符'0'的ASCII码值等于该字符对应的整型值。
user-0 提问: 求大佬指导一下

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:1. city 输出错误，是因为打印语句错了，应该是： printf("%s %s\n",list[i].name,list[i].city); 你写成了： printf("%s &s\n",list[i].name,list[i].city);  2. 单条搜索找不到，是因为 select() 函数里面，没有给变量 i 赋初值：int i;  感谢大佬，都怪我写代码不认真

user: user-1
content: 1. city 输出错误，是因为打印语句错了，应该是： printf("%s %s\n",list[i].name,list[i].city); 你写成了： printf("%s &s\n",list[i].name,list[i].city);  2. 单条搜索找不到，是因为 select() 函数里面，没有给变量 i 赋初值：int i;
user-0 提问: vs code用疯了，编写c语言的时候运用scanf函数闪退

回复:
user: user-1
content: 引用 10 楼 qqdreamypp 的回复:不是这个问题，所有东西都已就绪，没有任何错误  所以，说了半天，你还是没有将代码放上来

user: user-0
content: 引用 2 楼 提及的回复:那是因为缓存问题，输入的时候会带上你按的回车键，就是 `\n`  而你的getchar() 就读取了 \n， 就不会等待了 那有什么解决方案吗?

user: user-2
content: Visual C++ 2010 Express简体中文版http://pan.baidu.com/s/1bnwRVLt

user: user-0
content: 引用 9 楼 自信男孩的回复:[quote=引用 5 楼 提及 的回复:] 比如  int x = 0; scanf("%d", x); 需要这样吧： scanf("%d", &x);[/quote] 不是这个问题，所有东西都已就绪，没有任何错误

user: user-3
content: 新手老老实实用vs不好吗?

user: user-4
content: 引用 5 楼 提及 的回复:比如  int x = 0; scanf("%d", x); 需要这样吧： scanf("%d", &x);

user: user-1
content: 比如  int x = 0; scanf("%d", x);

user: user-1
content: 还有可能程序出错了，导致直接退出

user: user-5
content: 可是pause也没用诶😩😩

user: user-1
content: 那是因为缓存问题，输入的时候会带上你按的回车键，就是 `\n`  而你的getchar() 就读取了 \n， 就不会等待了

user: user-5
content: vs code~搞死新手型
user-0 提问: 【求问】C语言printf对整数带符号位+输出？ 

回复:
user: user-1
content: Flag Directives The first optional field of the format specification is flags. A flag directive is a character that justifies output and prints signs, blanks, decimal points, and octal and hexadecimal prefixes. More than one flag directive may appear in a format specification.   Table R.4   Flag Characters  Flag Meaning Default  – Left align the result within the given field width.  Right align.  + Prefix the output value with a sign (+ or –) if the output value is of a signed type. Sign appears only for negative signed values (–).  0 If width is prefixed with 0, zeros are added until the minimum width is reached. If 0 and – appear, the 0 is ignored. If 0 is specified with an integer format (i, u, x, X, o, d) the 0 is ignored.  No padding.  blank (' ') Prefix the output value with a blank if the output value is signed and positive; the blank is ignored if both the blank and + flags appear. No blank appears.  # When used with the o, x, or X format, the # flag prefixes any nonzero output value with 0, 0x, or 0X, respectively. No blank appears.    When used with the e, E, or f format, the # flag forces the output value to contain a decimal point in all cases.  Decimal point appears only if digits follow it.    When used with the g or G format, the # flag forces the output value to contain a decimal point in all cases and prevents the truncation of trailing zeros.  Ignored when used with c, d, i, u, or s.  Decimal point appears only if digits follow it. Trailing zeros are truncated.

user: user-0
content: 引用 2 楼 user-3 的回复：%+d 的确是一个比较少用的格式谢谢🙏太感谢了

user: user-2
content: 嗯，这个没办法都记住，要查手册

user: user-3
content: %+d 的确是一个比较少用的格式

user: user-2
content: 格式控制里面查一下，可能会有的
user-0 提问: c语言菜鸡可学

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

user: user-0
content: 哇塞，感谢大佬

user: user-2
content: 印象笔记or有道笔记

user: user-3
content: 总结得不错，楼主可以试着写博客或者blink
user-0 提问: 求助数据结构单链表查找报错c2676

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

user: user-2
content: 建议贴出源码，尤其是一些变量的定义，声明；从错误内容可知是类型未定义～

user: user-0
content: 引用 3 楼 user-4 的回复：C语言的话可以用内存比较函数memcmp，用法请自行百度谢谢

user: user-3
content: 引用 2 楼 qq_45424859 的回复:引用 1 楼 gouyanfen 的回复：出错提示写的很清楚，ElementType这个结构没有定义!=操作符的意义，结构体断定是不是不相等，需要自己重载操作符，或者你直接对比不相等的条件我直接对比的。 你需要对比结构中的元素是否不相等，链表里面有指向下个的指针，这个值一般是不会相等的

user: user-4
content: C语言的话可以用内存比较函数memcmp，用法请自行百度

user: user-0
content: 引用 1 楼 gouyanfen 的回复：出错提示写的很清楚，ElementType这个结构没有定义!=操作符的意义，结构体断定是不是不相等，需要自己重载操作符，或者你直接对比不相等的条件我直接对比的。

user: user-3
content: 出错提示写的很清楚，ElementType这个结构没有定义!=操作符的意义，结构体断定是不是不相等，需要自己重载操作符，或者你直接对比不相等的条件
user-0 提问: 题目：求0—7所能组成的奇数个数。

回复:
user: user-0
content: 错了错了，刚才运行了一下所有的结果，发现重复了

user: user-1
content: 首位不为0，个位不为偶数，中间位不重复的所有排列，总共17280种 通过排列组合公式也可以验证个位为奇数的全排列有7的阶乘*4=20160 //个位是4种选择（1357） 除去首位为0的情况 1*6的阶乘*4 //首位为0（1种选择），个位为奇数4种选择=2880 所以一共有20160-2880=17280种组合 void main() {     int[] num = {0, 1, 2, 3, 4, 5, 6, 7};     int[] idx = {0, 0, 0, 0, 0, 0, 0, 0};     int count = 0, exist = 0;     for (idx[0]=1; idx[0]<8; idx[0]++) { //首位不为0         for (idx[7] = 1; idx[7]<8; idx[7]+=2) { //个位不为偶数             if (idx[7] == idx[0]) continue;             while (true) { //中间位不重复                 for (int i=6; i>1; i--) {                     if (idx[i] >= 8) {                         idx[i] = 0;                         idx[i-1]++;                     }                 }                 if (idx[1] >= 8) {                     for (int i=1; i<7; i++) {                         idx[i] = 0;                     }                     break;                 }                 exist = 0;                 for (int i=1; i<7; i++) {                     if (idx[i] == idx[0] || idx[i] == idx[7]) {                         exist = 1;                         break;                     }                     for (int j=i+1; j<7; j++) {                         if (idx[i] == idx[j]) {                             exist = 1;                             break;                         }                     }                     if (exist == 1) break;                 }                 if (exist == 0) {                     int n = idx[0];                     for (int i=1; i<7; i++) {                         n = 10*n + num[idx[i]];                     }                     n = 10*n + num[idx[7]];                     printf("%d\n", n);                     count++;                 }                 idx[6]++;             }         }     }     printf("%d\n", count); // }

user: user-0
content: 引用 4 楼 qybao 的回复:用排列组合公式可以吗？ 0-7一共8个数字做全排列=8的阶乘=40320 减去 数字0排在第一位的情况（出去0的7个数字做全排列）=7的阶乘=5040  然后总的排列情况分布是，奇数偶数各一半（因为个位数1357，0246各占一半） 所以结果是 （40320-5040）/ 2 = 17640

user: user-0
content: 引用 7 楼 qq_33437675的回复:[quote=引用 4 楼 qybao的回复:]用排列组合公式可以吗？ 0-7一共8个数字做全排列=8的阶乘=40320 减去 数字0排在第一位的情况（出去0的7个数字做全排列）=7的阶乘=5040  然后总的排列情况分布是，奇数偶数各一半（因为个位数1357，0246各占一半） 所以结果是 （40320-5040）/ 2 = 17640 我靠，还有这种方法，可以可以。[/quote] 不过用这种方法这道题就没有一点乐趣了

user: user-0
content: 引用 4 楼 qybao的回复:用排列组合公式可以吗？ 0-7一共8个数字做全排列=8的阶乘=40320 减去 数字0排在第一位的情况（出去0的7个数字做全排列）=7的阶乘=5040  然后总的排列情况分布是，奇数偶数各一半（因为个位数1357，0246各占一半） 所以结果是 （40320-5040）/ 2 = 17640 我靠，还有这种方法，可以可以。

user: user-2
content: 引用 5 楼 qq_33437675 的回复:0--7组成的8位数，每个数只能有一个。然后求奇数按照 #4的说法做就可以了

user: user-0
content: 0--7组成的8位数，每个数只能有一个。然后求奇数

user: user-1
content: 用排列组合公式可以吗？ 0-7一共8个数字做全排列=8的阶乘=40320 减去 数字0排在第一位的情况（出去0的7个数字做全排列）=7的阶乘=5040  然后总的排列情况分布是，奇数偶数各一半（因为个位数1357，0246各占一半） 所以结果是 （40320-5040）/ 2 = 17640

user: user-2
content: 无限个 哪怕不停1重复 都能构造无限个奇数  把你的题目描述完整

user: user-0
content: 这个应该对了吧 谁帮我看看
user-0 提问: 浮点数

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

user: user-2
content: 讲一下第一题： float在计算机中通常占32位：1位符号位，23位尾数部分，8位阶码。  b = 2.0e20+1.0 = 0.200000000000000000001e21  尾数部分是 0.200000000000000000001 转成二进制后远不止23位（小数转二进制乘2取整数部分就行），于是多余的丢弃了。而这里很显然丢弃的是那0.000000....1。 因此存储的数和 2.0e20 是一样的。他们相减也就是0了。
user-0 提问: 如何判断一个C函数支持多线程

回复:
user: user-1
content: 判断是否可重入，两个线程同时调用会不会对对方造成影响

user: user-2
content: 一般用到静态变量的都是不支持多线程的

user: user-3
content: 百度搜相关关键字。
user-0 提问: 兼容DC的问题

回复:
user: user-0
content: 引用 6 楼 Intel0011 的回复:这个是Windows管理资源的方式，避免资源泄漏 经过测试和推测，我觉得之前之所以不行的原因是因为一个位图不能同时加入两个DC，之前的DC没删，使得下一次创建DC后，那个位图句柄依然加入的是上个DC，使得加入当前DC失效。我将位图放到WM_PAINT中产生，依然不删除DC，这次可行了。把原DC还原可行的原因应该也是释放了hbitmap。

user: user-1
content: 这个是Windows管理资源的方式，避免资源泄漏

user: user-0
content: 引用 4 楼 Intel0011 的回复:是不同的DC  case WM_PAINT: {         HBITMAP hOldBitmap;     ValidateRect( h , NULL );     hdc = GetDC( h );     hmdc= CreateCompatibleDC( hdc );      //printf("%d\n", hmdc );     hOldBitmap = SelectObject( hmdc , hbitmap ); //加了接收返回值     BitBlt( hdc , 0 , 0 , cx , cy , hmdc , 0, 0 , SRCCOPY );     SelectObject( hmdc , hOldBitmap); //将hbitmap2改为hOldBitmap     //DeleteDC( hmdc );     ReleaseDC( h , hdc );     return 0;  }  竟然真的成功了，可是为什么会这样呢？创建的是不同的DC，为什么需要在删除前把原位图加进去？ 我测试了下，之后图片加入新DC得到的返回值确实是0，也就是加入失败，也就是说这些DC共用的同一个位图吗？不应该吧

user: user-1
content: 是不同的DC  case WM_PAINT: {         HBITMAP hOldBitmap;     ValidateRect( h , NULL );     hdc = GetDC( h );     hmdc= CreateCompatibleDC( hdc );      //printf("%d\n", hmdc );     hOldBitmap = SelectObject( hmdc , hbitmap ); //加了接收返回值     BitBlt( hdc , 0 , 0 , cx , cy , hmdc , 0, 0 , SRCCOPY );     SelectObject( hmdc , hOldBitmap); //将hbitmap2改为hOldBitmap     //DeleteDC( hmdc );     ReleaseDC( h , hdc );     return 0;  }

user: user-0
content: 引用 1 楼 Intel0011 的回复: hOldBitmap = SelectObject(hmdc, hbitmap); BitBlt(hdc, 0, 0, cx, cy, hmdc, 0, 0, SRCCOPY); SelectObject(hmdc, hOldBitmap); //将原来的放回去  老哥，你的回答没有对应我的问题呀，你的是对于同一个DC的加入和释放，我的是对于不同的DC的处理，我的问题也是为什么新创建的DC无法显示

user: user-2
content: https://bbs.csdn.net/topics/390374955

user: user-1
content: hOldBitmap = SelectObject(hmdc, hbitmap); BitBlt(hdc, 0, 0, cx, cy, hmdc, 0, 0, SRCCOPY); SelectObject(hmdc, hOldBitmap); //将原来的放回去
user-0 提问: C语言自增自减的运用

回复:
user: user-1
content: ++在前 先加后用 ++在后 先用后加

user: user-2
content: 不要在一条表达式里对一个变量自增两次就对了，不同编译器可能结果不同

user: user-3

user: user-3
content: 首先弄清楚x是变量，x++和++x是表达式 表达式首先有自己的功能，比如x++和++x的功能都是使x+1 然后表达式有自己的值，x++的值是未进行运算之前的x的值，而++x的值是运算之后x的值（这是定义下来的，不需要讲什么道理） 最后像(x++)+(++x)+(x++)+(++x)...的操作也就出卷子的老师喜欢玩了
user-0 提问: c语言相关问题

回复:
user: user-1

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

user: user-3
content: i--不是返回i原先的值么？所以就是一样的
user-0 提问: 猴子分桃   谁能用逆向分析给写一下这题，设第五只猴拿走了n个桃

回复:
user: user-1
content: 各位路过大佬，有关必回，感谢！

user: user-2
content: 支持，期待回访

user: user-3
content: #include <stdio.h>  int main(void) {         int i = 0, n = 1, t = n;         for(i = 0; i < 4; i++){                 if(n%5 == 1 && n%4 == 0)                         n = n/4*5 + 1;                 else                         i = -1, n = ++t;         }         printf("%d\n", n);          return 0; }

user: user-4
content: #include<stdio.h> #include<stdlib.h>  int main()  { 	int n,i,t;  	for (n = 6; ; n++) 	{ 		t = n; 		 		 		for (i = 1; i <= 5; i++) 		{ 			{ 				if ((t - 1) % 5 != 0)  				break;   			    t = 4 * (t - 1) / 5;  				  				 			}  		}  		  		 		if (i >5)  		{ 			printf("%6d", n);  			break; 		}

user: user-5
content: 每次 ans*5）+1

user: user-6
content: 学这个好难吧

user: user-7
content: 引用 2 楼 qybao的回复:说错了，不是那么简单，第四只拿走后剩5*n+1，所以拿走前应该是(5*n+1)除以5分之4加1，所以还要考虑整除4，所以不能单纯以最后一只猴子拿走为输入，应该是循环判断 他说了最少有几个那就是相当于最后一只猴子拿了一个鸭

user: user-7
content: 最少嘛最后一只猴子只拿了1个也就是第4只拿了（1*5＋1）6个以此类推喽，最后的结果挺大的

user: user-8
content: 不知道，不明白

user: user-9
content: 这是什么东西啊，挺深啊的

user: user-10
content: 假设一开始桃子数为X，存在一个数Y。使得X+Y=Sum。Sum能够被5整除且减去Sum/5后，仍旧能被5整除，如此能被整除5次，也就是说Sum最小为5的5次方（3125）。我们把五个桃子作为一个整体，总数除以5总是余1。所以我们可以想一开始就缺少4个桃子，即Y为4。所以X为3125-4=3121。

user: user-10
content: 好难啊，没看懂。。。。

user: user-11
content: 你的代码运行结果是对的，但不是逆向分析，也就是不是从后往前推（你的代码是从前往后推，也就是先第一只猴子判断，符合后再第二只猴子判断，等等），逆向分析的代码在4楼有，你可以看看区别（先从第五只猴子判断，符合后再判断第四只，等等）。

user: user-12
content: 同意11楼，这个问题比较简单

user: user-13
content: 感谢楼主无私分享，希望能早日学会

user: user-14
content: 引用 16 楼 wowpH 的回复：[quote=引用 4 楼 qybao的回复:]void main() {     int total = 0;     for (int n=1, i=0; ; n++) {         total = 5 * n + 1;         for (i=0; i<4; i++) {             if (total % 4 != 0) break;             total = total * 5 / 4 + 1;         }         if (i==4) break;     }     print("total=%d", total); } 说实话我也没看懂。 n = 1 第5只猴子拿了 1 个桃子。 运行结果 3121，顺着推的话， (3121 - 1) / 5 * 4 = 2496 (2496 - 1) / 5 * 4 = 1996 (1996 - 1) / 5 * 4 = 1596 (1596 - 1) / 5 * 4 = 1276 (1276 - 1) / 5 = 255 第5只拿的是255个桃子。这不矛盾了啊。[/quote]一只猴子能拿这么多吗  他开车来的吗

user: user-15

user: user-0
content: 引用 36 楼 coder_wangp 的回复:6*5+1=31 31*5+1=156 156*5+1=781 781*5+1=3906再认真想一下

user: user-16
content: 我太难了。。。。

user: user-17
content: 写的非常好！
user-0 提问: 新手，求解释过程

回复:
user: user-1
content: 仅供参考：#include <stdio.h> long a=10000; long b; long c=2800; long d; long e; long f[2801]; long g; int main() {     for(;b-c;) f[b++]=a/5; //  while (1) { //      if (0==b-c) break; //      f[b]=a/5; //      b++; //  }      //f[0 - 2800] = 10000/5     for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)           for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); //  while (1) { //      d=0; //      g=c*2; //      if (0==g) break; //      b=c; //      while (1) { //          d+=f[b]*a; //          f[b]=d%--g; //          d/=g--; //          --b; //          if (0==b) break; //          d*=b; //      } //      c-=14; //      printf("%.4d",e+d/a); //      e=d%a; //  }  	return 0; }  代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-2
content: while判断时a++和b--都是后增和后减，因此先判断表达式的值在计算。所以结果是0,1
user-0 提问: C语言新手求救

回复:
user: user-0
content: 引用 3 楼 user-1的回复:[quote=引用 2 楼 xghrdvhh的回复:][quote=引用 1 楼 user-1的回复:]之前好像给你写过。不过现在看不到那个帖子了。大概是你删了或者管理员删了。 内什么，之前的应该不是我，新人第一次发求助帖[/quote] 哦哦，我看到题目一样。以为是一个人。。。。。[/quote] 找到了，谢谢大佬啦，谢谢谢谢

user: user-0
content: 引用 3 楼 user-1的回复:[quote=引用 2 楼 xghrdvhh的回复:][quote=引用 1 楼 user-1的回复:]之前好像给你写过。不过现在看不到那个帖子了。大概是你删了或者管理员删了。 内什么，之前的应该不是我，新人第一次发求助帖[/quote] 哦哦，我看到题目一样。以为是一个人。。。。。[/quote] 求问怎么改 谢谢大佬_(:з」∠)_

user: user-1
content: 引用 4 楼 user-1的回复:我用#CSDN#这个app发现了有技术含量的博客，小伙伴们求同去《c语言求解答》, 一起来围观吧 https://bbs.csdn.net/topics/394670751 一模一样的题目。。。。

user: user-1
content: 我用#CSDN#这个app发现了有技术含量的博客，小伙伴们求同去《c语言求解答》, 一起来围观吧 https://bbs.csdn.net/topics/394670751

user: user-1
content: 引用 2 楼 xghrdvhh的回复:[quote=引用 1 楼 user-1的回复:]之前好像给你写过。不过现在看不到那个帖子了。大概是你删了或者管理员删了。 内什么，之前的应该不是我，新人第一次发求助帖[/quote] 哦哦，我看到题目一样。以为是一个人。。。。。

user: user-0
content: 引用 1 楼 user-1的回复:之前好像给你写过。不过现在看不到那个帖子了。大概是你删了或者管理员删了。 内什么，之前的应该不是我，新人第一次发求助帖

user: user-1
content: 之前好像给你写过。不过现在看不到那个帖子了。大概是你删了或者管理员删了。
user-0 提问: 用C#编写程序，键盘输入整数数组元素，然后将数组元素倒置（即前后对应元素互换），并输出数组元素值。

回复:
user: user-1
content: 有问题的地方很多 1、n实始化为数组的个数，最好在循环中使用了，虽然你的程序逻辑没有问题。 2、没有数据的输入 3、数组没有倒置
user-0 提问: 请教问题谢谢大佬

回复:
user: user-1
content: 7的二进制为0000 0111 3的二进制为0000 0011 ^异或符号，相同为0，不同为1 4的二进制为0000 0100 把1、2、4行对比一下

user: user-2
content: 引用 1 楼 user-3 的回复：4就是0000 0100，取反就是1111 1011 题二明显是转化成二进制 好好去做作业吧这个a=7^3运行下来是4，怎么理解

user: user-3
content: 4就是0000 0100，取反就是1111 1011 题二明显是转化成二进制 好好去做作业吧
user-0 提问: 求助

回复:
user: user-1
content: 如果在循环里，那么每次循环t=1;都会被赋值1，和你的需求应该是不匹配的

user: user-2
content: t = i*2 -1

user: user-3
content: 在循环体里面赋值t=1，这样的话t递增2变成无效操作
user-0 提问: c语言动态链表输出乱码

回复:
user: user-1
content: 引用 2 楼 Gnglas 的回复：引用 1 楼 user-2 的回复:printf("%d %c\n",asd->fen,asd->name);改成%s改成%s他会警告说printf引用字符形式什么意思？

user: user-0
content: 引用 1 楼 user-2 的回复:printf("%d %c\n",asd->fen,asd->name);改成%s那愉快的结贴了

user: user-0
content: 引用 1 楼 user-2 的回复:printf("%d %c\n",asd->fen,asd->name);改成%s好吧你是对的

user: user-0
content: 引用 1 楼 user-2 的回复:printf("%d %c\n",asd->fen,asd->name);改成%s改成%s他会警告说printf引用字符形式

user: user-2
content: printf("%d %c\n",asd->fen,asd->name);改成%s
user-0 提问: c语言链表，程序出问题，求助

回复:
user: user-0
content: 引用 9 楼 與蘤舊縐 的回复: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Node { 	int num = NULL; 	struct Node* next;  }Node; int main() { 	Node* head=(Node*)malloc(sizeof(Node)); 	Node* newNode = NULL; 	Node* temp = head; 	int isContinue = 1; 	while (isContinue == 1) { 		Node* newNode = (Node*)malloc(sizeof(Node)); 		scanf_s("%d", &newNode->num); 		newNode->next = NULL; 		temp->next = newNode; 		temp = newNode; 		printf("to choose if continue\n"); 		scanf_s("%d", &isContinue); 	} 	temp = head->next;//注意在头指针中不存储数据 	while (temp != NULL) { 		printf("%d\n", temp->num); 		temp = temp->next; 	} 	return  } 我感觉26行可以省略

user: user-0
content: 引用 9 楼 與蘤舊縐的回复: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Node { 	int num = NULL; 	struct Node* next;  }Node; int main() { 	Node* head=(Node*)malloc(sizeof(Node)); 	Node* newNode = NULL; 	Node* temp = head; 	int isContinue = 1; 	while (isContinue == 1) { 		Node* newNode = (Node*)malloc(sizeof(Node)); 		scanf_s("%d", &newNode->num); 		newNode->next = NULL; 		temp->next = newNode; 		temp = newNode; 		printf("to choose if continue\n"); 		scanf_s("%d", &isContinue); 	} 	temp = head->next;//注意在头指针中不存储数据 	while (temp != NULL) { 		printf("%d\n", temp->num); 		temp = temp->next; 	} 	return 0; }  谢谢。。。。。。。。

user: user-1
content: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Node { 	int num = NULL; 	struct Node* next;  }Node; int main() { 	Node* head=(Node*)malloc(sizeof(Node)); 	Node* newNode = NULL; 	Node* temp = head; 	int isContinue = 1; 	while (isContinue == 1) { 		Node* newNode = (Node*)malloc(sizeof(Node)); 		scanf_s("%d", &newNode->num); 		newNode->next = NULL; 		temp->next = newNode; 		temp = newNode; 		printf("to choose if continue\n"); 		scanf_s("%d", &isContinue); 	} 	temp = head->next;//注意在头指针中不存储数据 	while (temp != NULL) { 		printf("%d\n", temp->num); 		temp = temp->next; 	} 	return 0; }

user: user-1
content: vs里面用的_getch()，但是vs2019似乎不认，我感觉它抽风了，，问题不大，我给你重写个参考一下

user: user-0
content: 引用 5 楼 與蘤舊縐的回复:你把while里的改过来了吗，我的vs不认你的_getch()，我也很无奈啊 我好像记得有getch这函数

user: user-0
content: 引用 3 楼 與蘤舊縐的回复:哦，不好意思，p1才是头指针 改了多少遍，都快烦死了

user: user-1
content: 你把while里的改过来了吗，我的vs不认你的_getch()，我也很无奈啊

user: user-0
content: 引用 3 楼 與蘤舊縐的回复:哦，不好意思，p1才是头指针 大哥，现在怎么办。。。。。

user: user-1
content: 哦，不好意思，p1才是头指针

user: user-1
content: 我想你的hard应该是head吧，另外拿头指针去遍历的话下次要用头指针可没有了哦

user: user-1
content: while(a=1)
user-0 提问: 这个错误百分之七十

回复:
user: user-0
content: 引用 2 楼 與蘤舊縐的回复:a+b>c足以，不知道你加这么多干嘛，如果你是想增强判断效率的话也不是这么写的，而且这么简单的判断大可不必 嗯，谢谢，好像可以了

user: user-1
content: a+b>c足以，不知道你加这么多干嘛，如果你是想增强判断效率的话也不是这么写的，而且这么简单的判断大可不必

user: user-1
content: 你的判断有问题
user-0 提问: 讨论一下链表和数组的好与坏？

回复:
user: user-1
content: 引用 3 楼 htoom 的回复:[quote=引用 1 楼 轻箬笠 的回复：]链表删除节点，内存依然被占用？难道楼主删除节点的时候，不释放内存的？ 链表和数组的差别就在于查询和插入操作的快慢吧。删除节点不只是把指针指向改变了吗？[/quote]  指针设置为null之前先释放内存

user: user-2
content: 引用 3 楼 htoom 的回复:[quote=引用 1 楼 轻箬笠 的回复：]链表删除节点，内存依然被占用？难道楼主删除节点的时候，不释放内存的？ 链表和数组的差别就在于查询和插入操作的快慢吧。删除节点不只是把指针指向改变了吗？[/quote] 删除节点，需要改变指针指向，并且free被删除的节点。

user: user-0
content: 引用 1 楼 轻箬笠 的回复：链表删除节点，内存依然被占用？难道楼主删除节点的时候，不释放内存的？ 链表和数组的差别就在于查询和插入操作的快慢吧。删除节点不只是把指针指向改变了吗？

user: user-3
content: 链表不能随机访问啊，二者差别太大，比较没有意义

user: user-2
content: 链表删除节点，内存依然被占用？难道楼主删除节点的时候，不释放内存的？ 链表和数组的差别就在于查询和插入操作的快慢吧。
user-0 提问: C语言基础刚看完，请问接下来可以做些什么呢？

回复:
user: user-1
content: 引用 20 楼 qq_39082825的回复:[quote=引用 18 楼 與蘤舊縐的回复:]引用可是不知道接触哪几类，其实都不太了解，以前学过一小段php，现在都忘了，就记得each，所以也不知道学啥，家里也在催出去找工作，头大  那就先找份和编程无关的工作，慢慢提升编程能力，然后跳槽呗 web前端html+css+js是入门标配，后端php开发可以小型网站，大的就用java了，当然还可以用别的，移动端开发差不多 这几个入门应该比较容易，不需要太高深的数理知识的支撑，但是想成大佬一样很难 其他的像做游戏等等都是可行的方向 当然像人工智能这种就省省吧，没得学历估计都没得展现实力的机会 打算去尝试一下java，大佬有视频之类的吗？[/quote] Java学习视频我有，私聊

user: user-2
content: 学学物联网嵌入式挺好(计算机专业与电信类专业均可选择)

user: user-3
content: 看完基础就多刷刷题，学点数据结构和算法，巩固基础后以后学啥都是几天的事情

user: user-4
content: 继续看基础，看到随心所欲，把指针数组搞得服服帖帖的，

user: user-5
content: 去bilibili知乎刷刷，还早，想学啥学啥

user: user-6
content: 引用 7 楼 qq_39082825 的回复：[quote=引用 3 楼 不知道用什么名字。 的回复:] 自己搞个完整的项目试试 项目？  入门应该做不出来，  还需要进阶，但不知道以后做哪方面 听同学说只学C不太容易找工作[/quote]我觉得你可以去网上找找题做做，（推荐蓝桥杯题目，不是特别简单，只要去做，能做出来的。）或者去买本书看看。

user: user-7
content: 刷题的话 洛谷 力扣 都可以

user: user-1
content: 去看看Java，以后去工作了基本上都会用Java的

user: user-8
content: 引用 20 楼 qq_39082825的回复:[quote=引用 18 楼 與蘤舊縐的回复:]引用可是不知道接触哪几类，其实都不太了解，以前学过一小段php，现在都忘了，就记得each，所以也不知道学啥，家里也在催出去找工作，头大  那就先找份和编程无关的工作，慢慢提升编程能力，然后跳槽呗 web前端html+css+js是入门标配，后端php开发可以小型网站，大的就用java了，当然还可以用别的，移动端开发差不多 这几个入门应该比较容易，不需要太高深的数理知识的支撑，但是想成大佬一样很难 其他的像做游戏等等都是可行的方向 当然像人工智能这种就省省吧，没得学历估计都没得展现实力的机会 打算去尝试一下java，大佬有视频之类的吗？[/quote] c和c++都要学会，然后再去学Java，不然你干4到5年还是个码农，工作中也要学习，数据结构，算法导论，离散数学，

user: user-9
content: 引用 楼主 qq_39082825的回复:做什么比较好就业，求大佬指点迷津 c学完了，还有c+，c#啊！你还要学java啊！

user: user-10
content: 可以多多刷题 然后做一些项目

user: user-11
content: 系统的看书，整体把握，对于知识点的讲解和实践可以看CSDN博客文章，人家有讲解并且有实例代码，自己多调试代码就可以学的差不多。

user: user-12
content: 引用 楼主 qq_39082825的回复:做什么比较好就业，求大佬指点迷津 算法和编程，大数据和逆向分析

user: user-13
content: 引用 楼主 qq_39082825的回复:做什么比较好就业，求大佬指点迷津 可以做做基础练习  看看掌握度

user: user-14
content: 基础不牢地动山摇，自己做做项目

user: user-15
content: 数据结构化设计方法记得吗走吧走吧

user: user-16
content: 还需要继续努力学习呗

user: user-17
content: 试着自己做做题，数据结构和算法也最好懂一些

user: user-18
content: 0.0000000000000000000

user: user-19
content: 写代码，做项目不香吗？这个贪吃蛇试试
user-0 提问: 不兼容vc6.0

回复:
user: user-1
content: 确实不兼容，但是可以不理它，仍然可以基本正常使用。另外，VC6在64位Windows7下调试的时候，再结束调试，程序无法退出，这是有一个补丁可以解决的，建议下载使用。

user: user-2
content: 引用 楼主 Hero2902 的回复:我的电脑Windows7与vc6.0不兼容 跪求大佬教一教怎么弄 亲测可以解决兼容问题的： 1.打上VC6.0 sp6补丁 2.下载vc6.0 filetools工具并安装，解决打开项目工程文件崩溃的问题。https://download.csdn.net/download/zyf1109/4074133  以上均为微软官方提供的补丁，可以安全放心使用。

user: user-3
content: 百度上方法很多 https://jingyan.baidu.com/article/3a2f7c2e637f5f26aed61155.html 实在不行的话换系统成本有点高，要不换个编辑器吧
user-0 提问: 不兼容vc6.0

回复:
user: user-1
content: "D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE"

user: user-1
content: 引用 13 楼 Hero2902 的回复:[quote=引用 11 楼 赵4老师的回复:][quote=引用 10 楼 Hero2902 的回复:] [quote=引用 9 楼 赵4老师的回复:]VC6EN https://pan.baidu.com/s/1_t4HPLJZCdiIaJKecguK_A 你好 这中文版需要怎么弄[/quote] 据说微软从来就没有出过VC6的中文版。 英文版凑合用吧。[/quote] 打开没问题 运行时 又是不兼容[/quote] 你不会在资源管理器中在exe文件上点鼠标右键，属性，兼容性里面设置以WindowsXP兼容模式运行吗？

user: user-0
content: 引用 11 楼 赵4老师的回复:[quote=引用 10 楼 Hero2902 的回复:] [quote=引用 9 楼 赵4老师的回复:]VC6EN https://pan.baidu.com/s/1_t4HPLJZCdiIaJKecguK_A 你好 这中文版需要怎么弄[/quote] 据说微软从来就没有出过VC6的中文版。 英文版凑合用吧。[/quote] 打开没问题 运行时 又是不兼容

user: user-1
content: VC6EN https://pan.baidu.com/s/1_t4HPLJZCdiIaJKecguK_A

user: user-2
content: 找一个绿色版即可，没必要再安装上找麻烦 如果不需要IDE，直接用命令行也行，也就不存在兼容的问题

user: user-3
content: 都什么年代了，考试还用VC6啊。。。。。。中国这教育真是。。。。啧啧

user: user-1
content: 引用 10 楼 Hero2902 的回复:[quote=引用 9 楼 赵4老师的回复:]VC6EN https://pan.baidu.com/s/1_t4HPLJZCdiIaJKecguK_A 你好 这中文版需要怎么弄[/quote] 据说微软从来就没有出过VC6的中文版。 英文版凑合用吧。

user: user-0
content: 引用 9 楼 赵4老师的回复:VC6EN https://pan.baidu.com/s/1_t4HPLJZCdiIaJKecguK_A 你好 这中文版需要怎么弄

user: user-0
content: 引用 6 楼 csucxy的回复:现在考试还用VC6？ 全国计算等级考试，二级C、C++： 考试环境 操作系统：中文版 Ｗｉｎｄｏｗｓ ７。 开发环境：Ｍｉｃｒｏｓｏｆｔ Ｖｉｓｕａｌ Ｃ＋＋ ２０１０ 学习版。 我见过的一些高校自己的考试系统也基本如此，不知道你参加的是什么类型的考试？ 我还没考试过 刚来大学一个月

user: user-4
content: 为什么非得用二十多年前的VC6？

user: user-4
content: 现在考试还用VC6？ 全国计算等级考试，二级C、C++： 考试环境 操作系统：中文版 Ｗｉｎｄｏｗｓ ７。 开发环境：Ｍｉｃｒｏｓｏｆｔ Ｖｉｓｕａｌ Ｃ＋＋ ２０１０ 学习版。 我见过的一些高校自己的考试系统也基本如此，不知道你参加的是什么类型的考试？

user: user-5
content: 鞋子不合适，你可以有两个办法彻底解决。  1）更换一双合适的鞋子。  2）更换一双合适的足。  你选那个

user: user-6
content: 去搜索一下vc的兼容补丁包下载下来安装

user: user-0
content: 引用 3 楼 csucxy的回复:为什么非得用二十多年前的VC6？ 新入门小白， 老师推荐，而且说考试时也是那个软件

user: user-7
content: 确实不兼容，但是可以不理它，仍然可以基本正常使用。另外，VC6在64位Windows7下调试的时候，再结束调试，程序无法退出，这是有一个补丁可以解决的，建议下载使用。
user-0 提问: 新人求教

回复:
user: user-0
content: 引用 7 楼 SuperDay的回复:break提前退出内层循环，循环控制条件j <= (i/ j)还是满足，到了外层的if，就不满足j > (i / j)，也就不会printf出质数提示 j<=(i/j)不是会判断为假的吗，i=2、j=2、2/2怎么>=2

user: user-1
content: break提前退出内层循环，循环控制条件j <= (i/ j)还是满足，到了外层的if，就不满足j > (i / j)，也就不会printf出质数提示

user: user-2
content: break是跳出当前这个循环 上一条语句是判断i能否被j整除

user: user-0
content: 这个我知道，把整个程序运行过程说详细点

user: user-0
content: 引用 2 楼 與蘤舊縐的回复:if(i%j)表示如果i%j==0就不运行 这句解释一下 i%j如果等于0，那么就相当于if(0) 大神说一下运行过程呗

user: user-0
content: 这个我知道，我问的是第二条for语句，还有break是跳出去哪里

user: user-3
content: if(i%j)表示如果i%j==0就不运行 这句解释一下 i%j如果等于0，那么就相当于if(0)

user: user-3
content: if(!(i%j))相当于if(i%j==0)，首先搞清楚c语言中if(0)不运行，if(i%j)表示如果i%j==0就不运行，那么if(!i%j)就表示如果i%j!=0就不运行，也就是if(i%j==0)就运行
user-0 提问: C语言求助，急！！

回复:
user: user-1
content: 那么盈数是什么？ 楼主是不是准备写程序的时候脑子一片空白？大多数人包括我自己都是这样过来的，但越是这样子就越是要亲自写，想依靠csdn来解决你的问题只能是一时的，除非你不想迈过这个坎，就此放弃，否则终究是要去面对的。 与楼主共勉！

user: user-2
content: 不明白第二点 看着现在的90后和00后坐在教室里学编程，心里很是羡慕。 想想自己当年的摸黑自学路，太酸了

user: user-3
content: 引用 1 楼 张科技 的回复:求助！！别沉 所以你卡在哪了呢

user: user-0
content: 求助！！别沉
user-0 提问: 大佬们我是萌新，现在我有一个问题想寻求帮助。

回复:
user: user-1
content: 方案三，由于随机数随机范围是2字节，因此2个或4个随机数相乘混合，得到4字节随机数或8字节随机数，然后指针转为float或double long long a = (long long) rand() * rand() * rand() * rand() * rand();  //4个可能乘不满，乘5个溢出 double b = *(double*)&a;

user: user-1
content: 方案一：两个或多个随机数相乘后得到大随机数，然后除以1000或10000之类的以得到小数。 方案二：两个随机数以转double型相除，得到更随机的小数。 上述结果乘以pow(-1, rand()%2)可以随机正负

user: user-2
content: 这种需求，问题浮点数范围那么大，你如何限定？实现起来并不难，关键是要先把需求捋顺了

user: user-3
content: 额不好意思这是c语言如果要返回的话~~不知道auto可行不，塞进容器到是可以

user: user-3
content: 我觉得你可以自己封装一个函数，根本上用的rand()，但是可以实现随机出来的数运算得到你想要的数，为了同时有整数和浮点数可以设置几种计算方法，比如a+b、a/b等，然后给每一种算法都设置几率，最后如果是直接输出随机数的话就没什么难度，如果要返回的话~~不知道auto可行不，塞进容器到是可以
user-0 提问: c语言大括号怎么使用

回复:
user: user-1
content: 你把三个语句写一行里面，它还是三个语句，加不加括号差别大着呢。除非你把中间的分号改成逗号，就成了一个语句

user: user-2
content: 引用 2 楼 hhtttz 的回复:[quote=引用 1 楼 與蘤舊縐的回复:]if语句执行出了问题，它找不到正确的要执行的语句了，可能它只执行了max=a[i][j];，而row=i;colum=j;就到了if外面，每次for循环都会被执行 但是为什么会为3,4呢，不应该是2,3吗[/quote]  你的for循环也没有大括号，你的结果只能说明执行row=i;colum=j语句之前for循环已经全部执行完了 类似这样  for{      for{} } row=i;colum=j

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:if语句执行出了问题，它找不到正确的要执行的语句了，可能它只执行了max=a[i][j];，而row=i;colum=j;就到了if外面，每次for循环都会被执行 但是为什么会为3,4呢，不应该是2,3吗

user: user-2
content: if语句执行出了问题，它找不到正确的要执行的语句了，可能它只执行了max=a[i][j];，而row=i;colum=j;就到了if外面，每次for循环都会被执行
user-0 提问: C语言编程习题推荐

回复:
user: user-0
content: 嗯，我会试着编下，谢谢建议

user: user-1
content: 引用 4 楼 weixin_45589388 的回复:那怎么提高编程能力呢，还有什么其他方法吗  对什么感兴趣就去做什么呗，比如做简单的小游戏也可以锻炼编程思路和技巧，偶尔也能锻炼一把算法和数据结构~~（仅供参考，兴趣万岁）

user: user-0
content: 那怎么提高编程能力呢，还有什么其他方法吗

user: user-1
content: 大概是应试尚未结束，同志还需努力吧

user: user-2
content: 应试教育体制留下来的后遗症，学编程居然也是通过刷题来提高编程能力的

user: user-1
content: https://www.luogu.org推个网站
user-0 提问: C语言

回复:
user: user-1
content: 引用 楼主 qq_45714244 的回复:Devc++在win10系统下运行很慢是什么回事呢！?  你莫不是装了32位的？？ 如果程序不复杂的话32位也不会很慢，另外可能是你另外的进程占用电脑资源太多了
user-0 提问: 如何让数组输出直接有空格

回复:
user: user-0
content: 解决了  是最后空格问题，谢谢两位大哥

user: user-0
content: 引用 10 楼 user-2的回复:引用 9 楼 user-2 的回复:PE是格式错误的意思。最后一个空格不要。online judge的老套路了。 好的  我再去试试。

user: user-1
content: 引用 9 楼 user-2 的回复:PE是格式错误的意思。最后一个空格不要。 可能就是这个毛病吧 你把最后一个独立出来，不要输出空格

user: user-0
content: 引用 8 楼 與蘤舊縐的回复:我的图上用的就是你的代码，题目还有别的要求么？ 题目没有其他要求了，

user: user-2
content: 引用 9 楼 user-2 的回复:PE是格式错误的意思。最后一个空格不要。online judge的老套路了。

user: user-2
content: PE是格式错误的意思。最后一个空格不要。

user: user-1
content: 我的图上用的就是你的代码，题目还有别的要求么？

user: user-0
content: 引用 6 楼 與蘤舊縐的回复:[quote=引用 4 楼 weixin_45715083 的回复:] [quote=引用 2 楼 與蘤舊縐的回复:]另外你的循环语句没有大括号，很容易出问题 现在我加了大括号也是presentation error[/quote]  我想你们的检测系统还测不出来有没有给数组逆序排列[/quote] 那我的代码是可以的吗，针对这个题目来说

user: user-1
content: 引用 4 楼 weixin_45715083 的回复:[quote=引用 2 楼 與蘤舊縐的回复:]另外你的循环语句没有大括号，很容易出问题 现在我加了大括号也是presentation error[/quote]  我想你们的检测系统还测不出来有没有给数组逆序排列

user: user-1
content: 你加了大括号没

user: user-0
content: 引用 2 楼 與蘤舊縐的回复:另外你的循环语句没有大括号，很容易出问题 现在我加了大括号也是presentation error

user: user-0
content: 谢谢，现在输出有空格了，能帮我看看我我这个代码有什么问题吗，题目是 输入10个整数存入一维数组，再按逆序重新存放后再输出。 输入包括一行。  10个以空格格开的整数 输出 逆序的10个整数，整数以空格格开  我提交后还是显示presentation error

user: user-1
content: 另外你的循环语句没有大括号，很容易出问题

user: user-1
content: 引用 楼主 weixin_45715083 的回复:请教一下，如何让下面这个程序输出的数组中间有空格 #include<stdio.h> int main(){ 	int i,a[10]; 	for(i=0;i<10;i++) 	scanf("%d",&a[i]); 	for(i=9;i>=0;i--) 	printf("%d",a[i]); 	return 0;  	  } printf("%d打个空格",a[i])