Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
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-2
content: 直接贴代码吧～

user: user-0
content: 引用 2 楼 unjoker 的回复：#include"stdio.h"  int func(int y,int m,int d) {     int number=0,x;     if((y%4==0&&y%100!=0)||y%400==0){         for(x=1;x<m;x++)         {             if(x==1||x==3||x==5||x==7||x==8||x==10||x==12)                 number+=31;             else if(x==2)                 number+=29;             else                 number+=30;         }         number+=d;     }     else     {         for(x=1;x<m;x++)         {             if(x==1||x==3||x==5||x==7||x==8||x==10||x==12)                 number+=31;             else if(x==2)                 number+=28;             else                 number+=30;         }         number+=d;     }     return number; } int main() {     int y,m,d,number;     scanf("%4d/%2d/%2d",&y,&m,&d);     number=func(y,m,d);     printf("%d",number);     return 0; } PS：我自己也是刚学，刚刚写出来的，可能有的部分有点啰嗦，欢迎批评指正！#include <stdio.h> struct { 	int year,month,day; }date; int main(void) { 	int i,days=0; 	int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 	scanf("%d%d%d",&date.year,&date.month,&date.day); 	for(i=1;i<date.month;i++) 	{ 		days=days+day_tab[i];  	} 	days=days+date.day; 	if(date.year%400==0&&date.month>2) 	{ 		days+=1; 	} 	printf("%d\n",days); }

user: user-3
content: #include"stdio.h"  int func(int y,int m,int d) {     int number=0,x;     if((y%4==0&&y%100!=0)||y%400==0){         for(x=1;x<m;x++)         {             if(x==1||x==3||x==5||x==7||x==8||x==10||x==12)                 number+=31;             else if(x==2)                 number+=29;             else                 number+=30;         }         number+=d;     }     else     {         for(x=1;x<m;x++)         {             if(x==1||x==3||x==5||x==7||x==8||x==10||x==12)                 number+=31;             else if(x==2)                 number+=28;             else                 number+=30;         }         number+=d;     }     return number; } int main() {     int y,m,d,number;     scanf("%4d/%2d/%2d",&y,&m,&d);     number=func(y,m,d);     printf("%d",number);     return 0; } PS：我自己也是刚学，刚刚写出来的，可能有的部分有点啰嗦，欢迎批评指正！
user-0 提问: 求问!

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

user: user-2
content: s++和t++为什么放到最后没有返回呢？还是贴出完整代码吧

user: user-3
content: 你的s++，t++都改变指针的位置了，返回值就不是原来字符串的初始位置了。

user: user-4
content: char* fun(char *s, char* t) {     char *p = s, *q=t;     while (*p**q)  p++, q++;    if ( *p || *q )      return (*p) ? s : t;   else      return s; }
user-0 提问: 为什么程序没有语法错误却运行不了？

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

user: user-2
content: scanf输入需要给地址不是变量名，建议case排版排排好，没错 ，纯粹是为了美观和检查方便

user: user-3
content: scanf("%d",num);  输入 需要把变量的地址传过去，不穿地址的话 它会把变量的随机值当作地址，取访问这个地址 导致异常退出了，没往下运行 scanf("%d",&num);

user: user-4
content: 有语法错误，编译不通过怎么可能运行呢，编译不过是不会生成可执行程序的。
user-0 提问: vc++6.0为什么会出现这种情况求大佬啊

回复:
user: user-0
content: 引用 8 楼 柒贰伍玖的回复:代码问题的可能性比较大，把代码贴出来看看 我不会贴代码啊，错误我找到了谢谢

user: user-0
content: 谢谢大佬解释，我发现了我scanf错了

user: user-1
content: 代码问题的可能性比较大，把代码贴出来看看

user: user-2
content: 0错误0警告只是代表没有编译的问题，不等于运行时正确。  #include <stdio.h> int main() { char * s = NULL; scanf("%s", s); } 这个程序就能通过编译，只要一运行，就出和你看到的一样的错误。

user: user-3
content: 引用 2 楼 m0_45923086 的回复:[quote=引用 1 楼 liups的回复:]多半是程序错了，不是VC的锅 可是程序0错误0警告啊 到内一步执行就崩溃[/quote] 程序问题！具体两种可能： 1、代码有问题；2、运行时错误，比如输入了不恰当的内容

user: user-4
content: 你的代码呢？问题还是出在代码逻辑上~

user: user-1
content: 代码发出来看看

user: user-0
content: 引用 1 楼 liups的回复:多半是程序错了，不是VC的锅 可是程序0错误0警告啊 到内一步执行就崩溃

user: user-3
content: 多半是程序错了，不是VC的锅

user: user-5
content: 有没有用到读文件，文件路径是不是正确，先用绝对路径试试，相对路径很麻烦
user-0 提问:  定义可选参数的函数，以及调用时的参数提示

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

user: user-0
content: 引用 1 楼 user-2 的回复：咋可能边输入边有提示，那你输入输出都在一行了后面都没办法读进去，而且你输入不结束也没有输出啊我用过这种，不会写

user: user-2
content: 咋可能边输入边有提示，那你输入输出都在一行了后面都没办法读进去，而且你输入不结束也没有输出啊
user-0 提问: 一直输出0，不知道哪儿有问题

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

user: user-2
content: 判断函数需要改一下 先判断 是不是7 的倍数，因为你再判断某位是7的时候，再改变number的值了，最后number为0，对7取余肯定是0,等于是是输入的所有数都是与7相关了  判断函数开始 if(!number)     return 0;  if(0 == (number%7))     return 1;  循环里面 if(digit == 7)     return 1;  最后函数返回 return 0;

user: user-3
content: #include<stdio.h> #include<math.h>  bool judgement(int number)//写一个判断是不是与7相关的函数。 {     int digit, tmp = number;      while (1) {         digit = tmp % 10;         if (digit == 7)             return true;         tmp /= 10;         if (tmp == 0)             break;     }     if (number / 7 == 0)         return true;      return false;     /*     int digit;     bool condition1=0,condition2=0;     while(1)     {         digit=number%10;         number/=10;         if(digit==7)         {             condition1=1;//1真0假。         }         if(number==0)         {             break;         }     } //判断是否符合条件1。     if(number%7==0)         condition2=1;//判断是否符合条件2。     if(condition1==1||condition2==1)         return 1;     else return 0;     */ } //满足其中一个就是与7相关。  int main() {     int n;     scanf("%d",&n);     long sum=0;     int i;     for(i=1;i<=n;i++)     {         if(judgement(i)==0)         {             sum += pow(i,2);         }//求与7无关的平方和。     }     printf("%ld\n",sum);     return 0; } 供参考～  楼主的这行代码：  if(number%7==0)         condition2=1;//判断是否符合条件2 有问题。因为number已经是0了，不然不会从while中跳出的。  自己好好想想这个问题～
user-0 提问: 将有序数组转换为二叉搜索树

回复:
user: user-1
content: struct TreeNode* fuzhi(int* nums, int left, int right); struct TreeNode* sortedArrayToBST(int* nums, int numsSize){      if(numsSize == 0)         return NULL;     return fuzhi(nums, 0, numsSize - 1); } struct TreeNode* fuzhi(int* nums, int left, int right) {     if(left > right || left < 0)         return NULL;     struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));     int mid = left + (right - left) / 2;     root->val = nums[mid];     root->left = fuzhi(nums, left, mid - 1);     root->right = fuzhi(nums, mid + 1, right);     return root; }

user: user-2
content: 引用 1 楼 寻开心 的回复:贴代码， 谁知道你写的是啥啊   哈哈，他可能让你翻译翻译。哈哈哈

user: user-3
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-2
content: 2楼正解，内存对齐，32位系统，默认是4字节，也可以自己自定对齐字节数

user: user-3
content: 结构体对齐补齐，补前面一个数据字节的最小倍数超过4按4，指针在32位系统不管类型都是4

user: user-4
content: 建议楼主查一下结构体对齐，为了读写内存效率高，编译器会对结构体补齐，按照结构体中占用内存最大的变量对齐（Linux默认是32位系统里4字节对齐），int是占4字节，month虽然是char，但是后面会补齐4字节，因此会填充3字节。最后是12字节。  指针，对于32为系统，占用4字节（所有的指针都是一样的）
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-2
content: 买瓶杀虫剂，自己喷一下，也许代码就自己出来了，就不用自己去搜了
user-0 提问: 大神求帮忙

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

user: user-2
content: 自己写，有问题再提部
user-0 提问: 为啥  “for”那行有4个报错？

回复:
user: user-0
content: Excel写习惯了。。。。。。

user: user-1
content: for(i=0;(2i+1)<=max;i++) pi += 4*pow(-1,i)/(2i+1); 乘号不能省略 2*i+1

user: user-2
content: 2i应该是2*i吧

user: user-3
content: 2i+1 是复数

user: user-3
content: for(i=0; (2*i+1)<=max; i++)     pi += 4*pow(-1,i)/(2*i+1);
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-2
content: 把你们老师叫上来，让我们给他上上课    我们当老师的时候，估计他还在读书呢

user: user-3
content: 枚举类型值默认从0开始依次加一，如果给了初始值，则从那个值开始加一（枚举变量从左往右）

user: user-4
content: c1最后被赋值white，根据枚举类型的值向后递增，应该是6.

user: user-5
content: #include "stdio.h" #include "stdlib.h" //#include<windows.h>  int main() { 	enum color{red, yellow, blue = 4, green, white}c1; 	c1 = yellow,c1 = white; 	printf("%d\n",c1); 	system("pause"); }    运行结果： 6 请按任意键继续. . .

user: user-6
content: 写代码运行一下就可靠

user: user-0
content: 对啊!但老师给我们这试卷答案选B我就懵了现在看应该是老师给错答案了

user: user-2
content: c1=yellow, c1=white; 逗号运算符，先执行做面的后执行右边的， 最后就是c1=white  按照定义。red=0， yellow=1， blue=4， green=5， white=6  最后c1就是6

user: user-2
content: D 6 从blue开始，后面每一个比前面的那个大一
user-0 提问: 输入输出有问题

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

user: user-2
content: double 对应 %lf float 对应 %f scanf函数 仔细看看

user: user-0
content: 就是这个5555我是sb   蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹蟹

user: user-3
content: int main( ) 排版问题还是漏了，按理说正常的缩进应该是可以在这个位置看到的

user: user-0
content: 这个error已改（前面不小心删了一个“{”）谢谢 然后又有新问题了555555求........

user: user-4
content: a的定义发一下，最好把更多的代码发一下
user-0 提问: C语言制作简单计算器

回复:
user: user-1
content: c1还没初始化，是一个随机值。注意getchar()会把第一次输入的换行符获取到（前提是第一个输入就回车）

user: user-2
content: do while下应该是不需要先初始化的，当然不同的编译器可能不同 要么其他地方错了 一般变量声明最好立即初始化

user: user-0
content: 引用 1 楼 user-3的回复:c1得先初始化值后再用于while循环 不对啊，我用do while试了一遍，还是无法通过编译啊，这怎么解释呢？

user: user-0
content: 引用 1 楼 user-3的回复:c1得先初始化值后再用于while循环 哦哦，懂了，一语惊醒梦中人啊，刚刚咋也没看出来

user: user-3
content: c1得先初始化值后再用于while循环
user-0 提问: 啊啊啊啊啊求助大佬

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

user: user-2
content: 哭也是没有用呢，自己先谢谢，要不把你的生活费贡献出现，让别人帮你写。  只提需求，一行代码不写的，这是让别人“做项目”，需要费用的～

user: user-3
content: 自己写的，就是再烂，也值得鼓励，你可以把你写的程序贴出来，让人帮你提提建议，做一些修改

user: user-0
content: 暴风式哭泣的楼主
user-0 提问: 指针问题

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

user: user-0
content: 引用 7 楼 寻开心 的回复：根本就不是二维的 第一个【】返回了char* ， 第二个【】取字符串的元素 是两步【】合并到一起的，并不是二维数组 你可以认为是 (p[1])[1]懂了懂了谢谢了

user: user-2
content: 根本就不是二维的 第一个【】返回了char* ， 第二个【】取字符串的元素 是两步【】合并到一起的，并不是二维数组 你可以认为是 (p[1])[1]

user: user-2
content: 看你自己的定义  char *p[]= ｛"one", "two", "three"｝  p[1] 就是 “two”这个字符互串的指针  对于字符串来说，【1】就是取第二个字符 所以 p【1】【1】 就是w

user: user-0
content: 引用 2 楼 寻开心 的回复：printf("%c", p[1][1]); p[1] 是 two p【1】【1】就是w了为什么p.1.1就是w了。为啥是二维的

user: user-2
content: 没有越界啊 这个不是char【】【】，尽管用了两个【】 p是一维的char*数组，内容是指针  p【1】返回的是指针， 内容是“two”

user: user-3
content: 这个不会越界嘛？第三个字符串 指针与数组名本质一样，都是地址，p[][]就可以了第一个[]代表是第几个字符串，也就是二维数组的行，后面的是列

user: user-2
content: printf("%c", p[1][1]); p[1] 是 two p【1】【1】就是w了

user: user-4
content: 建议贴出代码，先在机器上运行一下，然后贴出代码。这样可以更好的帮你解决问题。图片你是方便了，解决问题的人不方便呢
user-0 提问: 对单链表的就地逆转

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

user: user-2
content: 三个指针 定义三个指针 Linklist pLast, pCur, pNext;   分别表示：     pLast：上一个， 已经逆转过的，next指针已经指向更前一个了     pCur： 当前要逆转的， next指针正常指向下一个     pLast： 下一个指针，接下来要逆转的  初始化：    if ( NULL = head ) return;    pLast = head;    if ( pHead->next ）       pCur = head->next;    else       return; // 就一个节点指针，不用逆转    pLast->next = NULL;    while （pCur） ｛          pNext = pCur->next；          pCur->next = pLast;          pLast = pCur;          pCur = pNext;   ｝   head = pCur; }
user-0 提问: c#编写一个应用程序

回复:
user: user-0
content: 引用 1 楼 柒贰伍玖的回复:自己先写代码，不会的地方把代码贴出来，大家帮你， 会编写1-100能被7整除的数，和5个数相加的和 不会写这样的运行界面:7+14+21+28+35=105

user: user-1
content: 自己先写代码，不会的地方把代码贴出来，大家帮你，

user: user-0
content: 引用 4 楼 柒贰伍玖的回复:先算，后打印 把能被7整除的数依次放到一个数组里面，算完之后然后打印 5个5个的打 sum = 0; i = 0; while(i < 总数) {     printf(a[i]);     sum +=  a[i];     i++;          if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     printf(sum+换行);     sum = 0; } 好的，已经解决了，谢谢

user: user-1
content: 先算，后打印 把能被7整除的数依次放到一个数组里面，算完之后然后打印 5个5个的打 sum = 0; i = 0; while(i < 总数) {     printf(a[i]);     sum +=  a[i];     i++;          if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     if(i < 总数)     {         printf("+%d",a[i]);         sum+= a[i];         i++;     }     printf(sum+换行);     sum = 0; }

user: user-2
content: 引用 2 楼 qq_45718830 的回复:[quote=引用 1 楼 柒贰伍玖的回复:]自己先写代码，不会的地方把代码贴出来，大家帮你， 会编写1-100能被7整除的数，和5个数相加的和 不会写这样的运行界面:7+14+21+28+35=105[/quote] 作一行输出就是了
user-0 提问: 将有序数组转换为二叉搜索树——runtime error

回复:
user: user-1
content: root->val = nums[mid]; -> root.val = nums[mid];试试

user: user-2
content: 你的调用是错误的吧？ TreeNode* fuzhi(int* nums, int left, int right) 然而你调用 fuzhi(root->left, left, mid - 1);  第一个参数不对，人家要求的是整形指针（或者说是一个整形数组），你给的是struct TreeNode* ，怎么能对？

user: user-3
content: 检测nums,是否调用正确
user-0 提问: 请问这两个程序有错吗？？

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

user: user-2
content: 好像少了个分号。你可以打出来咯

user: user-3
content: 为啥不在编译器上编译运行一下呢？要走程序员这条路，还是要注重实践的～

user: user-4
content: 貌似莫的

user: user-5
content: 都能跑

user: user-6
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-0 提问: 如何用fscanf函数读取多行txt文件

回复:
user: user-1
content: 兄弟怎么解决的？

user: user-2
content: 引用 2 楼 被偷走的时光 的回复: 空格分隔  多一个分号 while(fscanf(fp,"%s%s%s%s%d%d%d%f%d",             p->num,p->name,p->grade,p->major,             &p->mark[0],&p->mark[1],&p->mark[2],             &p->avemark,&p->totalmark)!=EOF); while后多一个分号，了解了吗？

user: user-0
content: 空格分隔

user: user-2
content: 循环读取不就可以读取多行了吗？ 另外，你把你的文件内容格式发一下～
user-0 提问: c语言怎么用vc++在运行的程序中添加背景音乐

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

user: user-2
content: 没有帮助，打广告的不要点进去大家，会受骗的

user: user-3
content: 引用 8 楼 菜鸡新手gsy的回复:[quote=引用 7 楼 user-3的回复:][quote=引用 6 楼 菜鸡新手gsy的回复:][quote=引用 5 楼 user-3的回复:][quote=引用 4 楼 菜鸡新手gsy的回复:][quote=引用 3 楼 user-3的回复:]你是拿什么界面库写的小游戏呢？一般都有音频播放函数 啥？界面库是什么？？？我脑子里好像没这个概念[/quote] 没有界面你写的什么游戏？[/quote] 就很简单的五子棋......用基础的c语言写的，没有很复杂......[/quote] 就是没有用画图api，一个控制台（黑框）程序吗？[/quote] 对啊刚学c语言，只懂一点点[/quote] 可以用一下easyX的函数，使用windowsAPI应该也能播放

user: user-0
content: 引用 7 楼 user-3的回复:[quote=引用 6 楼 菜鸡新手gsy的回复:][quote=引用 5 楼 user-3的回复:][quote=引用 4 楼 菜鸡新手gsy的回复:][quote=引用 3 楼 user-3的回复:]你是拿什么界面库写的小游戏呢？一般都有音频播放函数 啥？界面库是什么？？？我脑子里好像没这个概念[/quote] 没有界面你写的什么游戏？[/quote] 就很简单的五子棋......用基础的c语言写的，没有很复杂......[/quote] 就是没有用画图api，一个控制台（黑框）程序吗？[/quote] 对啊刚学c语言，只懂一点点

user: user-3
content: 引用 6 楼 菜鸡新手gsy的回复:[quote=引用 5 楼 user-3的回复:][quote=引用 4 楼 菜鸡新手gsy的回复:][quote=引用 3 楼 user-3的回复:]你是拿什么界面库写的小游戏呢？一般都有音频播放函数 啥？界面库是什么？？？我脑子里好像没这个概念[/quote] 没有界面你写的什么游戏？[/quote] 就很简单的五子棋......用基础的c语言写的，没有很复杂......[/quote] 就是没有用画图api，一个控制台（黑框）程序吗？

user: user-0
content: 引用 5 楼 user-3的回复:[quote=引用 4 楼 菜鸡新手gsy的回复:][quote=引用 3 楼 user-3的回复:]你是拿什么界面库写的小游戏呢？一般都有音频播放函数 啥？界面库是什么？？？我脑子里好像没这个概念[/quote] 没有界面你写的什么游戏？[/quote] 就很简单的五子棋......用基础的c语言写的，没有很复杂......

user: user-3
content: 引用 4 楼 菜鸡新手gsy的回复:[quote=引用 3 楼 user-3的回复:]你是拿什么界面库写的小游戏呢？一般都有音频播放函数 啥？界面库是什么？？？我脑子里好像没这个概念[/quote] 没有界面你写的什么游戏？

user: user-0
content: 引用 3 楼 user-3的回复:你是拿什么界面库写的小游戏呢？一般都有音频播放函数 啥？界面库是什么？？？我脑子里好像没这个概念

user: user-3
content: 你是拿什么界面库写的小游戏呢？一般都有音频播放函数

user: user-0
content: ～～～～～～～～～～～～～～

user: user-0
content: 大佬们！！！！！！！！
user-0 提问: PTA出租车计价

回复:
user: user-1
content: 你的变量类型 和 scanf指定的类型没有保持一致吧 double 对应 %lf float 对应 %f 他们没有匹配上，输入的内容就是不正确的， 你可以在scanf之后，加一句printf 把输入的内容再输出出来，看看是不是一样 比如， 你scanf指定%lf，而参数是float类型的时候， 你接下来的printf就会发现， 输出的结果和你输入的不是一样的啦   你可以把代码里面的double都改成float，同时把scanf里面的%lf改成%f，再运行看看， 不会有错的  flaot和double的区别有两个，一个是有效数字的长度，一个是可表示的范围 选择用哪种取决于数的范围 对于本题来说，float类型足够了
user-0 提问: 提问

回复:
user: user-1
content: 结贴这个问题只能扔锅给CSDN，就像淘宝一样，买了东西收到没有问题买家就忘记这个事情了，是不是卖家都得饿死？

user: user-2
content: APP端好像不能结帖

user: user-0
content: 引用 2 楼 寻开心的回复:对于这种提问了八个问题，重来不结贴的人，可以考虑拉黑了   什么是结贴啊？怎么样算结贴呢？

user: user-3
content: 这代码真的是秀的我头皮发麻，写这样的代码不是高手，是傻X

user: user-4
content: 对于这种提问了八个问题，重来不结贴的人，可以考虑拉黑了

user: user-5
content: a*=a  a=144 a-=a  a=0 a+=a a=0 所以最后结果为0
user-0 提问: 有人帮忙改一下课程设计吗

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

user: user-2
content: 先自己写写，遇到问题再提出来吧～
user-0 提问: 求大佬教教我

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

user: user-2
content: strstr函数去了解下，应该能解决你的问题

user: user-3
content: strcat函数就可以了，判断存不存在，存在strcat（字符串首地址，字符地址）； 如char str【100】={],ch;判断...strcat(str,&ch);数组名是首地址，可以直接用。变量需要取地址
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-2
content: 引用 3 楼 qtwl666666 的回复:[quote=引用 2 楼 user-2的回复:]加string.h头文件 可以写完整代码给我吗[/quote] 思路告诉你了，加上写的，这基本都出来了，你要自己去写一下啊，你自己不去想不去写那你做这个训练题有什么意义呢？

user: user-0
content: 引用 2 楼 user-2的回复:加string.h头文件 可以写完整代码给我吗

user: user-2
content: 加string.h头文件

user: user-2
content: 定义个存储长度的变量，然后strlen去获取字符串的长度累加 int sum=0;int i=0;char str[81]={}; scanf("%d",&n);//要加判断条件 getchar(); while(i<n) { gets(str)； sum+=（int）strlen（str）；//大概可以，不行的话就定义个变量接收返回值，然后在sum+这个变量的值 memset（str，'\0',81）；把str清空，方便下一次读，避免出错，也可以不用 } 再输出sum就可以了，大概思路就这样，你先自己写一下，写不出来我再给你代码，这样学的比较多 我代码里有中文输入的，不能直接复制，自己敲一下
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-2
content: #include "stdio.h"  #include <string.h>  int main(int argc,char *argv[]){    char s[100][81];  int i,n;  printf("Enter n(int 0<n<101)...\nn=");  if(scanf("%d",&n)!=1 || n<1 || n>100){  printf("Input error, exit...\n");  return 0;  }  printf("Please enter %d strings...\n",n);  getchar();  for(i=0;i<n;i++)  fgets(s[i],81,stdin);//代替gets(s[i]);,能限制长度为80  for(i=0;i<n;i++)  printf("The string %d's length is %d.\n",i+1,strlen(s[i]));  return 0;  }  用fgets接收的字符串，最后把打入的回车也接收了，所以测出的长度看起来要多一个。改为gets就没有这事了，但gets不能限制长度，要人式控制长度不能越界。
user-0 提问: 大佬，求解释详细一点

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

user: user-2
content: 真假对应int的值就是1和0.宏定义就是等价替换，并且是在预编译阶段，即生成可执行程序前就替换了～

user: user-3
content: 宏替换是单纯的复制粘贴替换，不考虑语法 其他主要考虑符号优先级

user: user-4
content: 楼上思路正解

user: user-5
content: 1：1  比较1小于0不成立结果为0，再这个结果跟5比较结果成立为1 2：define先宏展开不运算，第一个展开是i+2<3？5:6-->(3+2)<3?5:6所以是6，而后面的加了括号就是i+(2<3?5:6)先运算括号，也就是5再加i的值也就是8 了
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: 他没错啊，你求得就是跟平方根有关，只不过这个特殊在一开始就有个成立的，你输出平凡解会输出一遍，然后while循环会去找第二个，如果你只想输出一个的话 bool flog=false;//要加头文件stdbool.h，你也可以定义个int的值，反正只要可以判断就好了 if(n==t*t)  /*输出平凡解*/ { x=1;     printf("n=%2d  x=%3.0f  x*x=%6.0f",n,x,x*x); printf("  y=%3.0f  n*y*y+1=%6.0f\n",y,n*y*y+1); flog=true; } while循环前先判断flog是否为false，是则进入循环，否则不进 是这个意思吧？我的理解是这样
user-0 提问: 哪里错了，编程输入全班前51名同学的成绩，用冒泡法将成绩排序，并求出前25名同学的平均分比后25名同学的平均分高

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

user: user-2
content: #include<stdio.h> void sort(int arr[],int n){         int i,j,t;         for(i=0;i<n;i++){                 int flog=0;                 for(j=1;j<n-i;j++){                         if(arr[j-1]>arr[j]){                                 t=arr[j];                                 arr[j]=arr[j-1];                                 arr[j-1]=t;                                 flog=1;                         }                 }                 if(flog==0){                         break;                 }         } } int main() {         int arr[50]={},i,max_sum=0,min_sum=0;         for(i=0;i<50;i++){                 scanf("%d",&arr[i]);         }         sort(arr,50);         for(i=0;i<50;i++){                 if(i<25){                         max_sum+=arr[i];                 }                 else{                         min_sum+=arr[i];                 }         }         double higt=(max_sum-min_sum)*1.0/25;         printf("%.2f\n",higt);         return 0; } 程序不是最简，可以自己尝试简化，加强理解

user: user-2
content: 你的排序呢？这程序看不出来跟你的题目关系在哪
user-0 提问: C语言谁会解

回复:
user: user-0
content: 引用 5 楼 qq_1457346882的回复:你这个式子卷子打错了吧，第三个值应该是7/11，不然就这几项是没有办法推出规律的，得不到后面的值 对的，卷子错了，之后才改

user: user-1
content: 3/4  4/7  7/11  11/15 .... 这样才有规律啊  构造一个序列 3， 4， 7， 11， 15， 26， ..... 斐波那契数列啊 奇数项目就是 3/4   7/11  15/26  先把这个数列做出来，放到数组里面，然后再循环一次计算， 注意转换成浮点数再做除法，很简单的  int ary[50] = {3, 4, }; int i=0;  for (i=2; i<50;i++)  ary[i] = ary[i-1] + ary[i-2]; float v=0; for (i=0; i<50/2; i++)     v = ary[2*i] * 1.0 / ary[2*i+1]; 输出v结束

user: user-2
content: 你这个式子卷子打错了吧，第三个值应该是7/11，不然就这几项是没有办法推出规律的，得不到后面的值

user: user-3
content: 你这个规律是啥？

user: user-0
content: 引用 1 楼 user-3的回复:找出规律，自己动手写一下，用代码提问 #include<stdio.h> int main() { 	int i, a, b, t, f; 	float sum; 	sum = 0; 	f = 1; 	a = 3; 	b = 4; 	for(i=1; i<=50; i++) 	{ 		if(i%2 == 1) 		{ 			sum += 1.0*a/b;	 		} 		t = a+b; 		if(f == 1) 		{ 			a = b; 			f = 0; 		} 		if(f == 0) 		{ 			f == 1;	 		} 		b = t; 	}  	printf("%.2f", sum); 	return 0; }

user: user-0
content: 引用 1 楼 user-3的回复:找出规律，自己动手写一下，用代码提问 额😓，不会，我不是学这个的

user: user-3
content: 找出规律，自己动手写一下，用代码提问
user-0 提问: 用Dev-C++运行的，到第二次循环计算的时候1.	keep函数中，符号总是判断不正确； 2.	judge函数的运算次数有问题，不确定；跪求大佬解答！

回复:
user: user-0
content: 谢谢大佬，这样正确了。 我还想请教一下，像这个程序，怎么加入三角函数的运算比较好？

user: user-1
content: float keep(float y)          //Y：继续； {     char t;     float x3; fflush(stdin);     printf("请继续输入\n");     scanf("%c%f",&t,&x3); y = analyze(y,t,x3);        //赋完值后进行:算式分析和计算；     printf("%5.2f",y);     return y; } void judge(float y)        //判断是否继续计算； {     fflush(stdin);     printf("    continue？\n");//输入Y/else；     char answer;     scanf("%s",&answer);     if(answer=='Y')     { y=keep(y);           //进行继续赋值；         return judge(y);     }     else         printf("按任意键结束结束！");  }

user: user-0
content: 就算是改成 t= analyze(y,t,x3);  但在之后的运算中，运算符号还是没有被识别出来，结果就输出为0了

user: user-1
content: 怎么可能保存啊，形参和实参的问题，y和t依然是老值，和传参之前相比不会变化的

user: user-0
content: 前面的analyze函数是float型，最后的return语句可以返回得到的y值，应该是会保存的吧； 主要是这个程序在第二次执行时，没办法识别运算符号，eg：+，-，*，/。

user: user-1
content: 应该是 t= analyze(y,t,x3); 或者y=analyze(y,t,x3); 没有保存返回的结果，后面的分析和printf输出就没有意义了

user: user-1
content: float keep(float y)          //Y：继续； { char t; float x3; printf("请继续输入\n"); scanf("%c%f",&t,&x3); analyze(y,t,x3);        // 这个计算结果你就木有保存啊，后面的分析的都不是这个返回值 /* switch(t) { case '+':y=y+x3;break; case '-':y=y-x3;break; case '*':y=y*x3;break; case '/':y=y/x3;break; case '%':y=(int)y%(int)x3;break; // case 'sin':y=sin(x2*3.1415926/180);break; // case 'cos':y=cos(x2*3.1415926/180);break; // case 'tan':y=tan(x2*3.1415926/180);break; default: printf("input have a error\n"); }      */ printf("%5.2f",y); return y; }
user-0 提问: 求助C语言程序解释

回复:
user: user-1
content: 引用 楼主 山海路人不见经 的回复:程序中并没有详细注明具体怎么从A柱通过C柱到B柱，或者从B柱通过A柱到C柱，计算机是如何实现的？ 这些可能有点抽象，但是就是这样反复递归就实现了，你仔细想想

user: user-1
content: 引用 2 楼 山海路人不见经 的回复:[quote=引用 1 楼 user-1的回复:][quote=引用 楼主 山海路人不见经 的回复:] 程序中并没有详细注明具体怎么从A柱通过C柱到B柱，或者从B柱通过A柱到C柱，计算机是如何实现的？ 这些可能有点抽象，但是就是这样反复递归就实现了，你仔细想想[/quote] 吃完饭递推了一下，是我愚钝了谢谢[/quote] 1、是递归！不是递推； 2、只是思想没有转过弯，你在书上划的4条红杠足以解决此问题，提示一句，每次盘子都在减少，最后盘子少到一定程度你就明白了

user: user-0
content: 引用 1 楼 user-1的回复:[quote=引用 楼主 山海路人不见经 的回复:] 程序中并没有详细注明具体怎么从A柱通过C柱到B柱，或者从B柱通过A柱到C柱，计算机是如何实现的？ 这些可能有点抽象，但是就是这样反复递归就实现了，你仔细想想[/quote] 吃完饭递推了一下，是我愚钝了谢谢
user-0 提问: (以下几个变量都是指向int类型的指针)middle=end-(end-start)/2;

回复:
user: user-1
content: 地址如果是指针， 那么也是同样的 两个指针的减法结果也是整数， 指针加减整数的结果是指针。  没有两个指针类型之间的+*/这种运算  所以，end start middle是指针也好， 是整数类型的下标也好， 都是统一的

user: user-0
content: 引用 1 楼 寻开心的回复:就算法本身来说，是左边和右边都无所谓 按照你的这个公式则是右边 end =3， start=0 计算一下看看，  （end-start）/2 结果是1，因为是整数除法；    middle=2， 位于右侧了 好吧，谢谢，地址也是这样算的吗？我知道整除，但是不知道这个地址也是这样的

user: user-1
content: 就算法本身来说，是左边和右边都无所谓 按照你的这个公式则是右边 end =3， start=0 计算一下看看，  （end-start）/2 结果是1，因为是整数除法；    middle=2， 位于右侧了

user: user-2
content: 最好自己打印一下middle的值，这样可以验证自己想要的结果。
user-0 提问: c语言简单题

回复:
user: user-1
content: 输出123 把sizeof(int)用4替换掉，就是 *((p+=4) - 4 ) p是char* a是int数组，p每次加4才能指向下一个整数，否则只是指向整数的从低位到高位的不同字节  p+=4的重点是p每次循环中， 指向的位置分别是a[1], a[2], a[3]， p的值变了。  如果没有等号是。p+sizieof（int） 那么每次循环都是同一个p  再减4后变成 a[0], a[1], a[2]  因为输出的格式是整数， 所以实际上三次循环输出的就是数组的头三项
user-0 提问: 求大神指教

回复:
user: user-0
content: 引用 1 楼 等风、来的回复:可以自己写六个函数，每个函数实现一个需求，最后用主函数调用即可 老铁    这儿发不了文件    加我qq      帮我改一下行吗？    1844901229

user: user-0
content: 我写了一个  但是运行不了

user: user-1
content: 可以自己写六个函数，每个函数实现一个需求，最后用主函数调用即可
user-0 提问: 复习时遇到的问题

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

user: user-2
content: 宏在编译时执行替换操作

user: user-3
content: 同意4楼，括号！ 另外，使用函数或内联函数更好

user: user-4

user: user-5
content: 宏定义在预编译阶段就等价替换了，所以运行时是这样的表达式：f(a) / f(b)，6 * 6 / 2 * 2 = 自己算一下

user: user-6
content: define的不安全性，运算中没有括号，6*6/2*2=36

user: user-7
content: 最终宏定义替换后是这样的    c=a*a/b*b = 36
user-0 提问: 颠倒五个数输出、为什么错了

回复:
user: user-1
content: #include <stdio.h>  int main( ) {     int  arr[ 5],i;     void reverse(int arr[ ] ,int n);     for(i=0;i<5;i++)     {         printf("input a number:\n");         //scanf("%d\n",&arr[i]);         scanf("%d",&arr[i]);     }     //void reverse(arr,5);     reverse(arr,5);     return 0; }   void reverse(int arr[ ],int n) {     int t,i;     //for(i=0;i<n/2;n++)     for(i=0;i<n/2;i++)     {         t=arr[i];         arr[i]=arr[n-1-i];         arr[n-1-i]=t;      }     for(i=0;i<n;i++)         printf("%d\n",arr[i]); } 供参考～

user: user-2
content: 楼上正解。结贴吧

user: user-3
content: void reverse(int arr[ ] ,int n);  int main( ) {     int  arr[ 5],i;     for(i=0;i<5;i++)     {         printf("input a number:\n");         scanf("%d\n",&arr[i]);     }     reverse(arr,5);     return 0; } void reverse(int arr[ ],int n) {     int t,i;     for(i=0;i<n/2;i++)     {         t=arr[i];         arr[i]=arr[n-1-i];         arr[n-1-i]=t;     } for(i=0;i<n;i++) printf("%d\n",arr[i]); }
user-0 提问: 求过程，急

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

user: user-2
content: a=3, b=2, c=1 c-=++b; // b=3,c=-2; b*=a+c;   //b=3; //所以第二个printf中的b和c就是这里的b和c，b=3, c=-2  b=5,c=12 c/=b*2;   // c=1 a-=c; //  a=2  所以第一个printf中的a、b、c等于2,5,1  a += --c;  // c=0; a=2;  所以第二个printf的a也等于2
user-0 提问: 我这个程序为什么没有返回值？

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

user: user-0
content: 引用 3 楼 寻开心 的回复：这样无论你输入几个字符（不超过19个， 因为字符串结束标记0也要占数组一个位置； 超过19个会让数组容纳不下而溢出） 然后回车， 就可以调用你的计数程序了 之前的一个一个字符的输入方法下，即便你输入了20个字符， 计数函数里面的循环也会因为数组里面没有0，所以循环会跑出数组外面继续循环，也会造成破坏性的后果。谢谢

user: user-0
content: 谢谢谢谢谢谢大佬

user: user-2
content: 这样无论你输入几个字符（不超过19个， 因为字符串结束标记0也要占数组一个位置； 超过19个会让数组容纳不下而溢出） 然后回车， 就可以调用你的计数程序了 之前的一个一个字符的输入方法下，即便你输入了20个字符， 计数函数里面的循环也会因为数组里面没有0，所以循环会跑出数组外面继续循环，也会造成破坏性的后果。

user: user-2
content: 你这个程序强制要求输入20个字符， 没有返回值恐怕是你一直没有输入够20个字符 改成字符串输入，不要for循环 scanf（“%s”， a）； 这样就可以了

user: user-3
content: 代码应该没问题 #include<stdio.h> #include <string.h> int countlets(char str[]); int main() { 	 	char a[20]; 	int i; 	printf("input a string:\n"); 	for (i = 0; i < 20; i++) 	{ 		scanf("%c", &a[i]); 	} 	printf("%d", countlets(a)); 	return 0; }  int countlets(char a[]) { 	int i; 	int n = 0; 	for (i = 0; a[i]; i++) 	{ 		if ((a[i] >= 65 && a[i] <= 90) || (a[i] >= 97 && a[i] <= 122)) 		{ 			n++; 		} 	} 	return n; } VS2015 C++环境调试

user: user-4
content: 楼主的字符数组并不是以'\0'结束的，因此不能成为字符串。而自定义函数里却要判断是不是'\0'，因此程序不能正常结束
user-0 提问: 求大佬告知我这段代码错在哪，我一运行就会崩溃

回复:
user: user-0
content: 谢谢

user: user-1
content: while (s[idx] != '0'){  // 这里应该是 ！= 0          idx++;     }  你的字符串里面没有字符0， 所以会一直找下去并超过字符串的尾巴。 字符串结尾是'\0' 不是’0‘
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-2
content: 可否具体，，，，，，

user: user-3
content: 好难的问题， 看不懂啊。 举例说明一下呗
user-0 提问: 为什么我的计算器实验程序有16处报错？

回复:
user: user-1
content: 引用 11 楼 寻开心 的回复:main函数原型是什么就是什么啊 它只有两种：    int main（）    int main（int， char** ）   编译器自己支持，不代表编译器就是对的， 只有c/c++标准才是对的  就和现在一些汉字的读法类似（比如角色 呆板）， 因为一些无知的人习惯，把过去严格强调的字的读法给硬生生的改了， 这都是不负责任的行为！ 这个比喻不认同。 像我记得过去曝光，最早就应该是pu的标准读音。但后来读bao的人多了，字典后也做出更变，以符合大家的习惯。 事实>理论>规则 后者无论任何的改变都应该服从于前者。发生不可调和的矛盾时应该更正后者而非前者。 不过，就main这个事情来说，还没有到这样的程度。用int main的人也不少。且int main有返回值也符合实际上的情况

user: user-2
content: #include <stdio.h> int main() { float x,y; char op; printf("请输入算式：\n"); scanf("%f%c%f",&x,&op,&y); switch(op) { case '+': printf("%.2f%c%.2f=%.2f\n",x,op,y,x+y); break; case '-': printf("%.2f%c%.2f=%.2f\n",x,op,y,x-y); break; case '*': printf("%.2f%c%.2f=%.2f\n",x,op,y,x*y); break; case '/':  if(y==0.0) printf("ERROR\n");  else printf("%.2f%c%.2f=%.2f",x,op,y,x/y); } return 0;  }

user: user-3
content: main函数原型是什么就是什么啊 它只有两种：    int main（）    int main（int， char** ）   编译器自己支持，不代表编译器就是对的， 只有c/c++标准才是对的  就和现在一些汉字的读法类似（比如角色 呆板）， 因为一些无知的人习惯，把过去严格强调的字的读法给硬生生的改了， 这都是不负责任的行为！

user: user-4
content: 引用 4 楼 Bill_Kwok 的回复:曾怡老师的培训课件上的代码用的就是void  main()。我一直不太明白这个返回值到底怎么控制程序的。改成 int   main()后问题确实解决了。  编译器不一样，老式的编译器都是这样的～不能怪老师，而是看你在什么编译器上开发～

user: user-3
content: 管他张姨还是李姨， 错了就是错了  c/c++标准才是是唯一的标准

user: user-3
content: main函数的返回值不是给这个程序自身用的  而是给调用这个程序的程序用的  main函数的一般来说是表示程序以什么方式结束的， return 0表示正常结束 其他的数值也都有不同的意义，具体什么意义是写程序的人定义的 比如，你的程序负责生成一堆数据，然后写入磁盘。 这个事儿，可能做成了，也可能没有做成 你可以return 0表示成功， 1表示不成功  别人的程序调用你的程序来完成这个数据的生成， 通过你的返回值知道成功与否，再决定他自己的函数如何处理  就现在初学者来说，你就记住了， return 0就对了。其他的可以先不管，别闲的无聊随意返回别的值，这个习惯不好。

user: user-0
content: 这是曾怡老师上课时候给的代码。

user: user-3
content: 猪头老师多了去了。  误人子弟的不奇怪。

user: user-3
content: case '+':printf("%.2f%c%.2f=%.2f\n"，x,op,y,x+y);break;  告诉你啦。 这个逗号是中文全角的， 你要换成英文的逗号

user: user-0
content: 曾怡老师的培训课件上的代码用的就是void  main()。我一直不太明白这个返回值到底怎么控制程序的。改成 int   main()后问题确实解决了。

user: user-0
content: #include <stdio.h> int main() { 	float x,y; 	char op; 	printf("Please enter x,operation, y："); 	scanf("%f%c%f",&x,&op,&y); 	switch(op) 	{ 	case '+':printf("%.2f%c%.2f=%.2f\n"，x,op,y,x+y);break; 	case '-':printf("%.2f%c%.2f=%.2f\n"，x,op,y,x-y);break; 	case '*':printf("%.2f%c%.2f=%.2f\n"，x,op,y,x*y);break; 	case '/': 		if(y==0.0) printf("ERROR\n");  		else printf("%.2f%c%.2f=%.2f"，x,op,y,x/y); 	} 	return 0; }  还是报错16个错误。多有的错误都在4个printf语句中。但是我的源程序和上课老师的源程序貌似完全相同啊。

user: user-4
content: #include <stdio.h> //void main() int main() {     float x,y;     char op;     printf("请输入算式：");     scanf("%f%c%f",&x,&op,&y);     switch(op)     {         case '+': printf("%.2f%c%.2f=%.2f\n", x,op,y,x+y); break;         case '-': printf("%.2f%c%.2f=%.2f\n", x,op,y,x-y); break;         case '*': printf("%.2f%c%.2f=%.2f\n", x,op,y,x*y); break;         case '/':                   if(y==0.0) printf("ERROR\n");                   else printf("%.2f%c%.2f=%.2f", x,op,y,x/y);     }      return 0; } 供参考～  输入的时候注意不要加空格，尤其是第一个x输入之后不要有空格，直接输入'+', '-'

user: user-3
content: 1. int main() 2. 找到并把中文符号替换会英文符号去，  printf里面的逗号 3.最后补充个return 0；
user-0 提问: 怎么用MATLAB或者C实现33节点的遍历

回复:
user: user-1
content: C和C++完整教程：https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 楼主找到了嘛？我也想求一个，quser-2，看到回复，万分感谢

user: user-0
user-0 提问: 请问C语言中ASCII码为2（十进制）即STX的字符（一个实心圆）怎么打印出来？

回复:
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: 引用 7 楼 weixin_45949073 的回复：我的 你要在黑黑的这个东西里右击选择设置，把字体改为点阵字体就会出效果

user: user-2
content: 我的

user: user-0
content: 引用 5 楼 user-3 的回复：标准ascii实际上是7位的，所以是128个。IBM公司搞了扩充，到8位，所以是有256个。 具体的百度一下就知道了知道了，谢谢！

user: user-3
content: 标准ascii实际上是7位的，所以是128个。IBM公司搞了扩充，到8位，所以是有256个。 具体的百度一下就知道了

user: user-0
content: 引用 3 楼 user-3 的回复：！！原来是这样！我知道了！

user: user-3

user: user-0
content: 我是按照教材里面查看的，2是一个实心圆

user: user-3
content: ASCII码表再查一下吧
user-0 提问: 求答案

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

user: user-2
content: 7

user: user-3
content: 自己把9参数带进去，然后分别计算一下

user: user-4
content: f(9)=9-f(7) =9-(7-f(5)) =9-(7-(5-f(3))) =9-(7-(5-(3-f(1)))) =7
user-0 提问: 提问

回复:
user: user-1
content: 逗号运算符，表达式的结果是逗号最后一个变量的值（或者最后一个逗号后的表达式的值）

user: user-0
content: 所以结果就应该是输出m。

user: user-2
content: 逗号操作符， 用来分隔多个表达式 先执行左边，再执行右边 返回的就是最后执行的，也就是右边的表达式的结果  所以对于两个数来说， （a1，a2） 就是 a2
user-0 提问: 提问

回复:
user: user-1
content: 静态变量 函数里面的静态变量，在函数多次被调用的时候，每次都能保留上一次调用时候的值  自己看书吧， 这种基础概念， 看书， 书上讲的最明白

user: user-0
content: 那static是什么意思呢

user: user-1
content: 无非是考a的有效区域和static的知识点， 至于搞这么长的代码吗   main（）里面的a，就是第一个图的全局变量a 初始化为2，此后除了给s做初始化， 就没有它啥事儿了。 s初始值就是2 此后 s+=f（I）就是s = 2 + f（0） + f（1） + f（2）  关于f函数，为了说明方便， 这个函数里面先后顺序显示的三个static分别叫做a1，a2和a3吧，return部分的a也是a1 （直接把那三个变量自己改一下名字，就非常明显了） 计算f（0） 是第一次进入，结果是8    此时a1是3，n是0， t是0    走a3所在的分支， a3=5； t=a++后，t是5，a3是6    return的是t+a1=5+3=8；  此后a1是4 计算f（1）返回的也是8    a1=4， n=1， t=0    进入a2所在的分支 a2=4，  t=4后a2是5    return t+a1=4+4=8， 此后a1是5 计算f（2）返回 11    a1=5， n=2， t=0    进入a3分枝，此时a3是6了， t=a++后， t是6， a3是7    return的时候 t+a1 = 6 + 5 = 11 此后a1是6  所以，最终的s就是2+8+8+11 = 29
user-0 提问: 求助，关于函数调用和for循环

回复:
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: int div(int x, int y) { int m, i; m = min(x, y); for (i = m; i >= 1; i--) if (x % m == 0 && y % m == 0) //这里应该是对m取模，不是对m { printf("%d和%d最大公约数是:%d\n", x, y, m); break; } }
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-2
content: 打开你的c语言的书 把范例的部分都撕掉 剩下的都是考点了
user-0 提问: 这个错误怎么回事

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

user: user-2
content: 引用 8 楼 自信男孩 的回复:[quote=引用 7 楼 柒贰伍玖 的回复:] [quote=引用 6 楼 自信男孩 的回复:] [quote=引用 5 楼 柒贰伍玖 的回复:] 实现语句 要放在函数体里，不能放外面，这是C语言标准的 甲鱼臀部——规定 当然你可以自己搞一个语言出来，把它放外面  “gg[i]=&num[i];”  不需要取地址 直接赋值“gg[i]=num[i]；”就好 &是取地址符 那gg类型也不应该是int吧，应该是unsigned long[/quote]  两个数组 都是 int  看他的输出 没必要改类型 简单赋值就好  没必要取地址 32位平台，int就够了；  64位平台才需要long吧[/quote] int最高位是符号位，地址信息最高位也是符号位？并且，int不能显示出系统的位数，long是跟系统位数是匹配的。但是，地址没有符号之说，都是unsigned的[/quote]  只要位数够，什么类型都可以表示地址的吧，符不符号 看自己怎么用喽

user: user-3
content: 引用 7 楼 柒贰伍玖 的回复:[quote=引用 6 楼 自信男孩 的回复:] [quote=引用 5 楼 柒贰伍玖 的回复:] 实现语句 要放在函数体里，不能放外面，这是C语言标准的 甲鱼臀部——规定 当然你可以自己搞一个语言出来，把它放外面  “gg[i]=&num[i];”  不需要取地址 直接赋值“gg[i]=num[i]；”就好 &是取地址符 那gg类型也不应该是int吧，应该是unsigned long[/quote]  两个数组 都是 int  看他的输出 没必要改类型 简单赋值就好  没必要取地址 32位平台，int就够了；  64位平台才需要long吧[/quote] int最高位是符号位，地址信息最高位也是符号位？并且，int不能显示出系统的位数，long是跟系统位数是匹配的。但是，地址没有符号之说，都是unsigned的

user: user-2
content: 引用 6 楼 自信男孩 的回复:[quote=引用 5 楼 柒贰伍玖 的回复:] 实现语句 要放在函数体里，不能放外面，这是C语言标准的 甲鱼臀部——规定 当然你可以自己搞一个语言出来，把它放外面  “gg[i]=&num[i];”  不需要取地址 直接赋值“gg[i]=num[i]；”就好 &是取地址符 那gg类型也不应该是int吧，应该是unsigned long[/quote]  两个数组 都是 int  看他的输出 没必要改类型 简单赋值就好  没必要取地址 32位平台，int就够了；  64位平台才需要long吧

user: user-3
content: 引用 5 楼 柒贰伍玖 的回复:实现语句 要放在函数体里，不能放外面，这是C语言标准的 甲鱼臀部——规定 当然你可以自己搞一个语言出来，把它放外面  “gg[i]=&num[i];”  不需要取地址 直接赋值“gg[i]=num[i]；”就好 &是取地址符 那gg类型也不应该是int吧，应该是unsigned long

user: user-2
content: 实现语句 要放在函数体里，不能放外面，这是C语言标准的 甲鱼臀部——规定 当然你可以自己搞一个语言出来，把它放外面  “gg[i]=&num[i];”  不需要取地址 直接赋值“gg[i]=num[i]；”就好 &是取地址符

user: user-3
content: #include <stdio.h> int num [4]={1,3,5,8}; int i; int *gg[4];  int main() {     for(i=0;i<=4;i++)     {         gg[i]=&num[i];     }     for(i=0;i<=4;i++)     {         //printf("%x",gg[i]);         printf("%p\t", gg[i]);     }     putchar(10); } 供参考～   表达式不能脱离函数而存在。

user: user-4
content: 就不让用！ 不服气，你就找定义标准的人打一架去。  代码都是从main函数开始执行的，也是在main这儿结束返回 如果在main里面不调用，就永远没有机会执行

user: user-0
content: 为什么不能用

user: user-5
content: 在函数外不能使用基本语句
user-0 提问: 救救孩子吧，不理解呀

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

user: user-2
content: 逗号运算符，先执行逗号前面的，后执行逗号后面的。 因为x%y没有改变x和y本身，所以当作无效结果  表达式等同于 z = x/y

user: user-0
content: 引用 2 楼 寻开心的回复:属于未定义的行为  c语言没有规定 加法运算符的两个操作数的执行顺序  编译器可以自己定义 先算那一头，  所以结果在不同的编译器或者不同的版本的编译器上有不同的结果 那大佬你能帮我看看这个z=(x%y,x/y)是怎么个运行方式？？

user: user-3
content: 理解这样的表达式没有意义吧，建议不要写这样的代码～

user: user-4
content: 因为属于未定义的行为，所以不应该出这样的题目

user: user-2
content: 属于未定义的行为  c语言没有规定 加法运算符的两个操作数的执行顺序  编译器可以自己定义 先算那一头，  所以结果在不同的编译器或者不同的版本的编译器上有不同的结果

user: user-5
content: 这个问题没意义，这样的代码也不要写
user-0 提问: 有点问题，求助

回复:
user: user-1
content: 引用 2 楼 weixin_46146701 的回复:[quote=引用 1 楼 user-2 的回复：]好好排版一下  #include<stdio.h> main() { 	int Allheadnum, Allfeetnum; int chick, rabbit;  	printf("Please Input Allheadnumber:"); 	scanf("%d", Allheadnum);  	scanf("%d", Allfeetnum);  	Allheadnum = chick + rabbit; 	4 * Allheadnum - 2 * chick = Allfeetnumber;		//你这是对谁进行赋值？ 	if (int(chick) != chick) printf("数值不合法"); 	if (int(chick) = chick) 	{ 		printf("Chicknumber=", chick); rabbit = Allheadnum - chick; printf("Rabbit number=", rabbit); 	} 	return 0; } 这是方程哈哈哈[/quote]  其实计算机本身是不会解方程的

user: user-0
content: 引用 1 楼 user-2 的回复：好好排版一下  #include<stdio.h> main() { 	int Allheadnum, Allfeetnum; int chick, rabbit;  	printf("Please Input Allheadnumber:"); 	scanf("%d", Allheadnum);  	scanf("%d", Allfeetnum);  	Allheadnum = chick + rabbit; 	4 * Allheadnum - 2 * chick = Allfeetnumber;		//你这是对谁进行赋值？ 	if (int(chick) != chick) printf("数值不合法"); 	if (int(chick) = chick) 	{ 		printf("Chicknumber=", chick); rabbit = Allheadnum - chick; printf("Rabbit number=", rabbit); 	} 	return 0; } 这是方程哈哈哈😂

user: user-2
content: 好好排版一下  #include<stdio.h> main() { 	int Allheadnum, Allfeetnum; int chick, rabbit;  	printf("Please Input Allheadnumber:"); 	scanf("%d", Allheadnum);  	scanf("%d", Allfeetnum);  	Allheadnum = chick + rabbit; 	4 * Allheadnum - 2 * chick = Allfeetnumber;		//你这是对谁进行赋值？ 	if (int(chick) != chick) printf("数值不合法"); 	if (int(chick) = chick) 	{ 		printf("Chicknumber=", chick); rabbit = Allheadnum - chick; printf("Rabbit number=", rabbit); 	} 	return 0; }
user-0 提问: 求助C语言！！

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:C. ++pt->x 因为->优先级比++还要高， 所以它就是 ++(pt->x)   也就是 c【0】.x  加1 [] () -> . 这种是最高优先级的运算符， 其次才是 ++ -- *  & ！ ～ 等  A  *p->y.  是。*(p[0].y) 也就是  a[0] = 2 B  pt->x  是 c[0].x.  = 10 D. (pt++)->x 是 c[1].x = 20; 啊我懂了，  谢谢！！

user: user-1
content: C. ++pt->x 因为->优先级比++还要高， 所以它就是 ++(pt->x)   也就是 c【0】.x  加1 [] () -> . 这种是最高优先级的运算符， 其次才是 ++ -- *  & ！ ～ 等  A  *p->y.  是。*(p[0].y) 也就是  a[0] = 2 B  pt->x  是 c[0].x.  = 10 D. (pt++)->x 是 c[1].x = 20;
user-0 提问: 输入三位数 Ｎ, 求两位数 ＡＢ (个位数字为 Ｂ, 十位数字为 Ａ, 且有 ０ < Ａ < Ｂ < ９), 使６０ 下述等式成立: ＡＢ∗ＢＡ ＝ Ｎ .

回复:
user: user-1
content: 笨办法： 因为       AB * BA  = 101*A*B + 10*A*A + 10 *B*B 所以 输入n for（A=0； A<=9; A++ )      for (B=A; B<=9; B++)          if ( n == 101*A*B+10*A*A + 10*B*B )               输出( "%d=%d%d*%d%d", n,A,B,B,A)  代码自己写
user-0 提问: 求助：如何提高速度

回复:
user: user-1
content: double f(int n,double a[],double x) {     int i;     double f  = a[0];     double xi = 1.0;     for(i=1;i<=n;i++)     {         xi *=x;         f += a[i] * xi;     }     return f; };
user-0 提问: 跪求C语言for语句中间结束条件有两个的话是满足其中一个条件就可以继续循环吗

回复:
user: user-0
content: 我明白啦 谢谢各位大佬

user: user-1
content: 少了大括号了吧   不建议这样做 for（；；） {         x/=2;         y+=2; } 建议使用大括号括起来

user: user-2
content: 标题的提问和内容的提问不同啊   标题的问题和内容的问题都是关于逗号表达式的问题  逗号表达式，是把多个语句串联到一起了，多个语句之间是从左到右的顺序执行的，先逗号左边再逗号右边， 最右边的那个语句的返回值就是整个逗号表达式的返回值  所以，在for循环的终止条件语句里面， 用逗号分隔的两个语句， 真正有效的判断只是右侧的那个 y<10  起效果； 前面的 x>=10执行了 ，但是结果是不被采纳直接抛弃掉的， 完全可以删除掉这个判断而不会对整个代码产生任何影响，可以说是废代码  for循环体里面的逗号语句的作用只是节省了花括号一对儿而已。

user: user-3
content: 应该用逻辑运算符在判断语句

user: user-2
content: 逗号表达式，作用是把多个语句串联到一行里面 左右如同一楼所说， 节省了{ }  但是不推荐这么干， 即不提高运行效率， 也容易产生错误

user: user-4
content: 应该是用分号的话只执行x/=2 分号是这个语句已经结束了  没有括号的情况下只执行for语句后的第一句 想让他们都执行就加大括号
user-0 提问: 关于输入函数puts的问题

回复:
user: user-1
content: fgets（word，stdin）这里把回车符号也接受了， puts的时候等同于字符串一个回车，puts命令自带一个回车 fputs只输出了字符串自带的回车，没有自己的回车

user: user-0
content: 首先空行那里为什么会空行我就没搞懂
user-0 提问: 大佬们帮忙看个题

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

user: user-0
content: 引用 3 楼 寻开心的回复:不是那样解释的 和有没有初值没有关系， 你可以自己做实验，给p1和p2赋予初值，依然会是报错的  p1 += 3； p1  -= 3； 这样的对整数的运算是可以的，但是不能对指针做这样的运算 p1 - p2 是可以的，但是结果是整数类型，不是指针类型  p1*p2， p1/p2 没有这样的定义 哦哦，了解，谢谢(*°∀°)=3

user: user-2
content: 不是那样解释的 和有没有初值没有关系， 你可以自己做实验，给p1和p2赋予初值，依然会是报错的  p1 += 3； p1  -= 3； 这样的对整数的运算是可以的，但是不能对指针做这样的运算 p1 - p2 是可以的，但是结果是整数类型，不是指针类型  p1*p2， p1/p2 没有这样的定义

user: user-0
content: 谢谢(*°∀°)=3

user: user-3
content: bcd不是赋值语句，是算术运算。 报错的原因是没有初始化变量。
user-0 提问: C语言子字符串个数

回复:
user: user-1
content: 引用 2 楼 CSDNQVictor的回复:[quote=引用 1 楼 _NoBug_的回复:][quote=引用 楼主 CSDNQVictor的回复:]输入一个字符串和一个给定的子字符串，计算字符串中包含的连续给定的子字符串的个数。 求指教。 用栈解决，子字符串先入栈，再出栈与字符串匹配，若字符全部出栈则匹配成功，个数＋1，依次往复[/quote] 我是超级小白，不懂数据结构[/quote] 那就用数组也可以解决的

user: user-0
content: 引用 1 楼 _NoBug_的回复:[quote=引用 楼主 CSDNQVictor的回复:]输入一个字符串和一个给定的子字符串，计算字符串中包含的连续给定的子字符串的个数。 求指教。 用栈解决，子字符串先入栈，再出栈与字符串匹配，若字符全部出栈则匹配成功，个数＋1，依次往复[/quote] 我是超级小白，不懂数据结构

user: user-0
content: 引用 1 楼 _NoBug_的回复:[quote=引用 楼主 CSDNQVictor的回复:]输入一个字符串和一个给定的子字符串，计算字符串中包含的连续给定的子字符串的个数。 求指教。 用栈解决，子字符串先入栈，再出栈与字符串匹配，若字符全部出栈则匹配成功，个数＋1，依次往复[/quote] 我是超级小白，不懂数据结构

user: user-1
content: 引用 楼主 CSDNQVictor的回复:输入一个字符串和一个给定的子字符串，计算字符串中包含的连续给定的子字符串的个数。 求指教。 用栈解决，子字符串先入栈，再出栈与字符串匹配，若字符全部出栈则匹配成功，个数＋1，依次往复
user-0 提问: 好玩的C语言小程序有哪些

回复:
user: user-1
content: easyx很好用

user: user-0

user: user-2
content: easyx做小游戏还可以，全靠绘制，做界面不方便。

user: user-3
content: 这个论坛里面， 带原码提问的小程序都很好玩儿 你要是分分钟都能看懂，找出问题所在并能解决， 就是大神了

user: user-4
content: easyX搞个贪吃蛇玩玩么  确实比较好上手

user: user-2
content: easyx 官网 字数字数
user-0 提问: 求解

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

user: user-0
content: 引用 4 楼 user-2的回复:[quote=引用 3 楼 weixin_45798902 的回复:] [quote=引用 1 楼 user-2的回复:]6?z=()<x?():x,如果（）<x就取（），否则取x。prt=a0的地址，加y分别是a0到a2的值，都比x小,所以取*（prt+y）的值，循环到最后应该是a2 主要是z那一部分看不懂[/quote] z就是一个简单的左值，去接收你后面运算的结果而以，?:这两个组合用叫三目运算符，用法是  z=判断的式子？成立则取这个值：不成立则取这个值 就是判断问号前面的比较的式子成立不成立，如果成立，则z等于问号后面冒号前面的值。如果不成立则取冒号后面的值，这里显然成立，取问号后冒号前的值，也就是*(prt+y)prt是a0的地址，加y相当于后移y位。*是取值符号，是取这个地址存储的内容，这里就是你数组的值[/quote] 哈哈，谢谢辣，那天你讲完以后我就懂了，所以就没看了，谢谢小哥哥认真回答，嘻嘻

user: user-2
content: 引用 3 楼 weixin_45798902 的回复:[quote=引用 1 楼 user-2的回复:]6?z=()<x?():x,如果（）<x就取（），否则取x。prt=a0的地址，加y分别是a0到a2的值，都比x小,所以取*（prt+y）的值，循环到最后应该是a2 主要是z那一部分看不懂[/quote] z就是一个简单的左值，去接收你后面运算的结果而以，?:这两个组合用叫三目运算符，用法是  z=判断的式子？成立则取这个值：不成立则取这个值 就是判断问号前面的比较的式子成立不成立，如果成立，则z等于问号后面冒号前面的值。如果不成立则取冒号后面的值，这里显然成立，取问号后冒号前的值，也就是*(prt+y)prt是a0的地址，加y相当于后移y位。*是取值符号，是取这个地址存储的内容，这里就是你数组的值

user: user-0
content: 引用 1 楼 user-2的回复:6?z=()<x?():x,如果（）<x就取（），否则取x。prt=a0的地址，加y分别是a0到a2的值，都比x小,所以取*（prt+y）的值，循环到最后应该是a2 主要是z那一部分看不懂

user: user-0
content: 引用 1 楼 user-2的回复:6?z=()<x?():x,如果（）<x就取（），否则取x。prt=a0的地址，加y分别是a0到a2的值，都比x小,所以取*（prt+y）的值，循环到最后应该是a2 对，答案是6，

user: user-2
content: 6?z=()<x?():x,如果（）<x就取（），否则取x。prt=a0的地址，加y分别是a0到a2的值，都比x小,所以取*（prt+y）的值，循环到最后应该是a2
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-2
content: 建议直接贴代码～

user: user-0
content: 艾玛，忽略了……晓得了。谢谢！

user: user-3
content: 输入性别哪儿也要取变量的地址， sex应该是char类型，输入也需要地址的，你传递的参数是个数值，不是个地址
user-0 提问: 数据结构C语言求大佬解答

回复:
user: user-1
content: 总长度就是每个字符的个数 * 每个字符编码的长度啊， 统计结果都出来，算一下就知道了

user: user-2
content: 引用 楼主 weixin_45903622的回复:一组字符(a,b,c,d)在文中出现的次数分别为(7，6，3，5)，字符＇d＇的哈夫曼编码的长度 会算总长度的长度怎么算 规定左0右1，左小右大，d编码为01，d编码长度为2

user: user-2
content: 构造哈夫曼树，写出哈夫曼编码，就可以求出来了
user-0 提问: 求教

回复:
user: user-0
content: 请问程序结束后，小数点后为什么多了几位呢？怎么得的呀？

user: user-1
content: float类型，有效数字6～7位， 不是只能表述6～7位多了就没有了； 多了也有，只是不一定精确了 有效数字从哪儿算的，不是小数点后，而是第一个非零的数字开始的，包括小数点前面的
user-0 提问: 输出是f和lf区别?

回复:
user: user-1
content: 输出只要使用 %f，虽然 %lf 的功能和 %f 完全一样，但部分实现可能仍不支持 %lf，所以不推荐输出用 %lf。

user: user-0
content: 引用 楼主 ??13?的回复:float和double类型 输入时，float对应％f；double对应％lf 输出时，f和lf不论是(float和double)哪个类型都可以用啊？ 标题中的 是 应该是 时，打错字了
user-0 提问: 求教

回复:
user: user-1
content: 更正：第一种情况下，也就是楼主的定义情况下。SQR(k+m)/SQR(k+m) 的运算结果就是7。 16/7 = 2  记住#define 只是替换， 原文不变的替换

user: user-1
content: #define SQR（X）X*X  不同于 #define SQR(X) (X)*(X) 按照前者的定义，你的表达式被替换成 a/=k+m*k+m/k+m*k+m;  // 2+2+0+2+1=7.      a = 16/6 =2 b=k+m*k+m/k+m*k+m;  //   b =7 按照后者的定义的话 a/=(k+m)*(k+m)/(k+m)*(k+m);  // 3*3/3*3 = 9.   a/=9 b=(k+m)*(k+m)/(k+m)*(k+m);   // b=9  #define SQR(X) ((X)*(X)  结果就会又不同 a /= ((k+m)*(k+m))/((k+m)*(k+m)) ;  //. a/=1.
user-0 提问: 请帮忙编写出详细程序

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

user: user-2
content: int monkey_beach(void) { 	int total_beach; 	for (size_t j = 0; j < 1500; j++) 	{ 		total_beach = j; 		for (size_t i = 1; i < 10; i++) 		{ 			total_beach = total_beach - (total_beach / 2 + 1); 		} 		if (total_beach == 1) 		{ 			printf("%d\n", j); 			break; 		} 	} 	return 0; }

user: user-3
content: 用递归理解 f(n+1) = f(n)/2 - 1; 所以 f(n) = (f(n+1) + 1)*2  int monkey(int n) {     if(n == 10)         return 1;          return 2*(monkey (n+1)+ 1); }  用循环就是 int main() {     int i;     int j;     int sum = 1;     for(i = 0; i < 10; i++)     {         sum = (sum+1)*2;     }     printf("%d",sum); }

user: user-4
content: #include <stdio.h> int main() { 	int day=9,peach=1,i;  	for(i=0;i<day;i++) 	{ 		peach=(peach+1)*2; 	} 	printf("猴子第一天摘的桃子个数为：%d\n",peach);  	return 0; }

user: user-5
content: 应当是2的10次方-1吧，这猴子肚子真大

user: user-6
content: 不知道对不对 int last = 1; 	int days = 9; 	int sum = 1; 	for (int i = days - 1; i >= 1; i--)  	{ 		sum = (last+1) * 2; 		last = sum; 	} printf("%d\n", sum);
user-0 提问: 新手入门：为啥输入90，结果是2*3*3*5而不是2*3*5*3？

回复:
user: user-1
content: i是递增的，怎么会是2*3*5*3呢  while循环内，第一次满足n%i==0之后n改变，i并没有改变，第二次n%i依旧成立则继续循环，否则退出while循环，for循环中i++才改变i

user: user-2
content: 因为这段语句， 在n=45， i为3的时候进来，while循环体执行了两次，第一次是45， 第二次是15，在第三次n为5的时候while条件不满足才继续循环上层的for循环。  while(n!=i) {   if(n%i==0)  //  {   printf("%d*",i);      	n=n/i; }   else   break; } 最后一个5是倒数第二行的那个printf函数输出的
user-0 提问: 复习中遇到的问题

回复:
user: user-1
content: 显然 (a>b)==c 是对的。

user: user-2

user: user-3
content: vs通过

user: user-4
content: 没有错啊。 系统算出来的真通常是取1

user: user-0
content: 引用 2 楼 柒贰伍玖的回复:布尔值 和 其他类型值得原因 真值不一定是 1， 非零值都可以是真值 哦，好像是这样子的

user: user-5
content: 布尔值 和 其他类型值得原因 真值不一定是 1， 非零值都可以是真值

user: user-0
content: 值是不是应该是“1”呀？
user-0 提问: 关于puts函数和fputs函数的问题

回复:
user: user-1
content: 你把数组初始化成这样 char word[] = "123\n"; 然后puts(word); 两次。 就能知道字符串本身带了一个回车，puts又生成了一个回车 fgets（word， stdin）回来的字符串就有会车在里面的  再去看fpus（word），连续调用两次。它也生成了回车，但是它只输出了一个回车； 这个回车是字符串里面的，还是fputs生成的呢？ 你可以改造word为 char word[]="123\n\n";  再来测试fputs，发现这个时候多了空行。这说明回车是字符串里面带的。  对比可以看到puts和fputs对于回车处理是一样的，不同的是，在用stdout作为输出的时候， 转化不同 类似的gets和fgets也有一定差异，  gets获取回来的字符串尾巴没有回车， 而fgets是把回车带到数组尾巴上了。  遇到这样的问题， 多做几个测试就发现问题了。 而且，有些结论是和编译器/操作系统相关的， 不是c/c++标准所定义的， 实践的时候做好实验测试吧。
user-0 提问: c语言简单题

回复:
user: user-1
content: 首先正常写代码，不会写这种阅读性这么差的代码，练练逻辑就行了，不要模仿这种代码风格 一个个字符来： 第一个字符 ‘0’ 这时 r = 0   进的 case 0， 执行完case  r = 0 第二个字符 ‘1’ 这时 r = 0   进的 case 0， c == ‘1’满足条件 r = 1 第三个字符 ‘0’ 这时 r = 1   进的 case 1， c == ‘0’满足条件三目运算符 返回2， r = 2 第四个字符 ‘1’ 这时 r = 2   进的 case 2， c == ‘1’if不满足条件 r还是2 字符串结束，退出循环 最终结果 r = 2

user: user-2
content: 瞅准谁是关键，这里的r，是你要模拟运行跟紧的。
user-0 提问: 能不能帮我把这个详细运行过程写下。

回复:
user: user-1
content: 在printf()函数调用fun()时，fun()的实参值分别是 c的值[0xcc, 0x43, 0x44, 0x45, 0x46,  0x47] a的值 'E' n的值是5 在fun()函数中，执行了 *s = a; 之后，c的值变为[0x45, 0x43, 0x44, 0x45, 0x46,  0x47] 执行while循环，第一次循环时*s的值是0x45，而s[j]即s[5]的值是0x47，条件成立，j自减后变为4； 第二次循环时*s的值是0x45，而s[j]即s[4]的值是0x46，条件成立，j自减后变为3； 时*s的值是0x45，而s[j]即s[3]的值是0x45，条件不成立成立，while循环退出； 此时j的值是3.

user: user-2
content: c[6] = {E, C, D, E, F, G},  所以 fun返回3