Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 大一萌新请教各位前辈一道C语言习题

回复:
user: user-0
content: 引用 7 楼 寻开心 的回复:#include<stdio.h> int search(int x[], int n, int *count) {     int i;     int *max=x;   // max放最大值，用不到使用指针。  应该是max=x[0]       *count=0;      for(i=0;i<n;i++) {  // max=x[0] 后，这里，i要从1开始         if(x[i]>*max)    *max=x[i];  // if ( x[i]>max ) max = x[i];     }     for(i=0;i<n;i++)  {       if(  x[i]==*max ) *count++; // x[i] == max     }    return max; // 需要补上这一行，  题目要求的函数是有返回值的，返回的就是最大的成绩   } void main() {     int x[10000],i,n,m,j,*count,*max;     scanf("%d",&n);     count=&m; // 这里取得了m的地址，      max=&j;   // 这里取得了j的地址. 没有任何意义了      for(i=0;i<n;i++)     scanf("%d",&x[i]);     j= search(x,n,&m);     // 这里用 search(x, n, count) ; 才不浪费前面的count=&m     printf("%d %d",j,m); // 用m或者*count均可 }谢谢前辈！！！

user: user-0
content: 引用 5 楼 jun木~ 的回复:帮你总结下哈！ 一、你主函数里面有个max指针，然后子函数里面又定义了一个max，两者没有一毛钱关系，所以你子函数里面的max记下的最大值是传不回来的。 二、max在不加※的情况下，去赋值，记下的是别人地址，不是值。 三、子函数如果没有返回值请用void。谢谢前辈！！！

user: user-1
content: #include<stdio.h> int search(int x[], int n, int *count) {     int i;     int *max=x;   // max放最大值，用不到使用指针。  应该是max=x[0]      *count=0;      for(i=0;i<n;i++) {  // max=x[0] 后，这里，i要从1开始         if(x[i]>*max)    *max=x[i];  // if ( x[i]>max ) max = x[i];     }     for(i=0;i<n;i++)  {       if(  x[i]==*max ) *count++; // x[i] == max     } return max; // 需要补上这一行，  题目要求的函数是有返回值的，返回的就是最大的成绩   } void main() {     int x[10000],i,n,m,j,*count,*max;     scanf("%d",&n);     count=&m; // 这里取得了m的地址，      max=&j;   // 这里取得了j的地址. 没有任何意义了      for(i=0;i<n;i++)     scanf("%d",&x[i]);     j= search(x,n,&m);     // 这里用 search(x, n, count) ; 才不浪费前面的count=&m     printf("%d %d",j,m); // 用m或者*count均可 }

user: user-2
content: 引用 4 楼 fireyou的回复:*count++ 改成 (*count)++; 这样次数就对了 你可以玩玩  ”找不同游戏”，啊哈哈哈

user: user-2
content: 帮你总结下哈！ 一、你主函数里面有个max指针，然后子函数里面又定义了一个max，两者没有一毛钱关系，所以你子函数里面的max记下的最大值是传不回来的。 二、max在不加※的情况下，去赋值，记下的是别人地址，不是值。 三、子函数如果没有返回值请用void。

user: user-3
content: *count++ 改成 (*count)++; 这样次数就对了

user: user-2
content: #include<stdio.h>  void search(int x[], int n, int *count, int *max)  {  	int i;  	*max=*x;  	*count=0;  	for(i=0;i<n;i++)  	     {if(x[i]>*max)*max=x[i];}  	for(i=0;i<n;i++)  	     {if(x[i]==*max)(*count)++;}  }  void main()  {  	int x[10000],i,n,m=0,j=0;  	scanf("%d",&n);  	for(i=0;i<n;i++)  	scanf("%d",&x[i]);  	search(x,n,&m,&j);  	printf("%d %d",j,m);  }

user: user-4
content: 第一个if里面，应该是max=&x[i];

user: user-0
content: 求教求教 指针这里感觉好难啊
user-0 提问: 【c语言入门练习题】求和最大的子序列 //oj上输入我的代码显示答案错误，是否有人愿意帮忙找出问题？感谢。

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:给你举一个反例，你就能知道问题在哪儿了 6 -1 1 -2 2 -3 3  你的答案会认为最大子序列和是0， 6个全部在 这个例子的输出答案不应该就是0 6吗？

user: user-1
content: 给你举一个反例，你就能知道问题在哪儿了 6 -1 1 -2 2 -3 3  你的答案会认为最大子序列和是0， 6个全部在

user: user-0
content: 引用 4 楼 user-2的回复: #include <stdio.h> #include <stdlib.h>  int sum(const int *arr, int pos, int len) {     int i;     int tot;      tot = 0;     for (i = 0; i < len; i++)         tot += arr[pos + i];     return tot; }  int main(void) {     int pos;     int len;     int tot;     struct res {         int pos;         int len;         int tot;     } res;      int size;     int *arr;      while (scanf("%d", &size) == 1) {         arr = malloc(sizeof(int) * size);         for (pos = 0; pos < size; pos++)             scanf("%d", &arr[pos]);          res.pos = 0;         res.len = 1;         res.tot = arr[0];         for (pos = 0; pos < size; pos++) {             for (len = 1; len < size - pos + 1; len++) {                 tot = sum(arr, pos, len);                 if (res.tot < tot || res.tot == tot && res.len < len) {                     res.pos = pos;                     res.len = len;                     res.tot = tot;                 }             }         }         printf("%d %d\n", res.tot, res.len);         free(arr);     }     return 0; }  /* 样例输入 5 1 2 3 -1 4 6 1 2 3 -5 3 1 8 1 2 3 0 -10 1 2 3 6 -1 1 -2 2 -3 3 样例输出 9 5 6 3 6 4 3 1 */  非常感谢您特意打代码供我借鉴！

user: user-0
content: 引用 3 楼 寻开心的回复:应该是3 1 最后那个长度是1的子串 好的，我知道了！非常感谢。

user: user-2
content: 根据子序列的开始位置和长度，计算结果，进行比较

user: user-2
content: #include <stdio.h> #include <stdlib.h>  int sum(const int *arr, int pos, int len) {     int i;     int tot;      tot = 0;     for (i = 0; i < len; i++)         tot += arr[pos + i];     return tot; }  int main(void) {     int pos;     int len;     int tot;     struct res {         int pos;         int len;         int tot;     } res;      int size;     int *arr;      while (scanf("%d", &size) == 1) {         arr = malloc(sizeof(int) * size);         for (pos = 0; pos < size; pos++)             scanf("%d", &arr[pos]);          res.pos = 0;         res.len = 1;         res.tot = arr[0];         for (pos = 0; pos < size; pos++) {             for (len = 1; len < size - pos + 1; len++) {                 tot = sum(arr, pos, len);                 if (res.tot < tot || res.tot == tot && res.len < len) {                     res.pos = pos;                     res.len = len;                     res.tot = tot;                 }             }         }         printf("%d %d\n", res.tot, res.len);         free(arr);     }     return 0; }  /* 样例输入 5 1 2 3 -1 4 6 1 2 3 -5 3 1 8 1 2 3 0 -10 1 2 3 6 -1 1 -2 2 -3 3 样例输出 9 5 6 3 6 4 3 1 */

user: user-1
content: 应该是3 1 最后那个长度是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: 这是初级的，如果不行就放弃算了

user: user-0
content: 引用 6 楼 SuperDay的回复:要什么命？多大点事啊！要不就放弃，要不就死命钻研，天天玩手机能搞出什么名堂来？ 佩服您，但是当你做了很长时间东西没做出来感叹一下有错吗？还有你咋知道我是天天玩手机？第一次想通过CSDN问个问题有错吗？我赞成你拼命钻研的精神，但是请您不要以一个学成者的标准去评判其他人，谢谢。

user: user-2
content: 要什么命？多大点事啊！要不就放弃，要不就死命钻研，天天玩手机能搞出什么名堂来？

user: user-0
content: 引用 2 楼 SuperDay的回复:楼主程序写好了吗？？？ 写好啦那天晚上是ddl

user: user-0
content: 引用 1 楼 jun木~的回复:这个应该是用文件fopen获得那个filein.c文件，然后统计这个文件有多少个字节，注释有多少个字节，再输出注释所占百分比吧！ hh写好啦，作为小白这种题目真的要命。。。

user: user-0
content: 写好啦那天是ddl

user: user-2
content: 楼主程序写好了吗？？？

user: user-3
content: 这个应该是用文件fopen获得那个filein.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: 多简单啊。 直接七行 printf    自己尝试写吧。 有问题再提问。 不难的

user: user-3
content: 作业要自己独立完成比较好，帮你写了上半部分，下半部分自己去搞定吧！

user: user-2
content: for（i=0； i<7； i++） {    if ( 0==i ) printf("    A");    else (1==i) printf("  BCD");    。。。。。。。 }     开玩笑的哈  要这 int main(int argc, char *argv[]) { 	int ch = 'A'; 	int i, j; 	for ( i=0; i<7; i++) { 		if (i<=3) { 			for (j=0; j<3-i; j++) printf(" "); 			for (j=0; j<2*i+1;j++) printf("%c",ch++);printf("\n"); 		} else { 			for (j=0; j<i-3; j++) printf(" "); 			for (j=0; j<(6-i)*2+1;j++) printf("%c",ch++);printf("\n"); 		} 	} 	return 0; } v

user: user-0
content: 引用 1 楼 寻开心的回复:多简单啊。 直接七行 printf    自己尝试写吧。 有问题再提问。 不难的 要求要用循环语句写的..
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: 修改后，代码如下： #include<stdio.h> #include<string.h> int main() {     char a[10][10]= {"zero","one","two","three","four","five","six","seven","eight","nine"};     char str[100];     int j,y=0,z=0,sum=0,b=0,d=0,e=0;     while(1)     {         y=0;z=0;sum=0;b=0;d=0;e=0;     while(b==0)     {         scanf("%s",str);         for(j=0; j<10; j++)         {             if(strcmp(str,a[j])==0)             {                 d=j;                 y=y*10+d;             }             if(strcmp(str,"+")==0)             {                 b++;                 break;             }          }     }     while(b==1)     {         scanf("%s",str);         for(j=0; j<10; j++)         {             if(strcmp(str,a[j])==0)             {                 e=j;                 z=z*10+e;             }             if(strcmp(str,"=")==0)                 break;         }         if(strcmp(str,"=")==0)             break;     }      if(y==0 && z==0)         return 0;     sum=y+z;     printf("%d\n",sum);     }     return 0; }

user: user-2
content: 根本就没有扣住题意啊
user-0 提问: 双链表一个疑问

回复:
user: user-1
content: if ( next != null ) 表示不是插入在双向链表的队尾 如果在队尾，next->pre 就不存在了  ， next都是NULL， 再调用其pre就会发生啥事知道吧。

user: user-2
content: 那是最后一个节点了，如果是NULL，就不需要更新信息了

user: user-0
content: 引用 2 楼 寻开心 的回复:if ( next != null ) 表示不是插入在双向链表的队尾 如果在队尾，next->pre 就不存在了  ， next都是NULL， 再调用其pre就会发生啥事知道吧。明白啦~谢谢~

user: user-0
content: 引用那是最后一个节点了，如果是NULL，就不需要更新信息了明白啦~谢谢~
user-0 提问: 大一萌新请教前辈一道C语言题目

回复:
user: user-0
content: 引用 1 楼 寻开心 的回复:divide=&f;   一个是整数指针，一个是float类型，这样当然有警告啦  要把divide定义成 float *， 代码里面是int*的定义谢谢前辈！！！

user: user-1
content: int i,a,b,c,d,e,*sum,*diff,*product,*divide;  改成 int i,a,b,c,d,e,*sum,*diff,*product; float * divide；  就好了

user: user-1
content: divide=&f;   一个是整数指针，一个是float类型，这样当然有警告啦  要把divide定义成 float *， 代码里面是int*的定义
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 main() {    int i,j,n,m;    scanf("%d %d",&n,&m);    for(i=0;i<n;i++,printf("\n"))    {       for(j=0;j<m;j++)          if(i<=j)printf("*");          else printf(" ");    }        return 0;  }

user: user-2
content: 已斜对角线作为一个一次函数，大于或等于则输出星号※，else 输出 空格
user-0 提问: 求大神解答

回复:
user: user-0
content: 哦，下周就学了

user: user-1
content: 没有用指针啊。       指的是 & 取地址？  那都是输入函数所有要求的  c/c++最有趣就是指针，  不想用指针就不用学c/c++啦

user: user-0
content: 引用 1 楼 寻开心的回复:#include <stdio.h> #include <stdlib.h>  int count = 0; int Fib(int n) { 	count ++; 	if (0==n) return 0;  	if (1==n) return 1;  	int v = Fib(n-1) + Fib(n-2); 	return v; }; int main(int argc, char *argv[]) { 	int i, n; 	printf("Input n:"); 	scanf("%d", &n); 	for ( i=1; i<=n; i++ ) { 		count = 0; 		int v = Fib(i); 		printf("Fib(%d)=%d, count=%d\n", i, v, count); 	}; 	return 0; } 谢谢大神，如果不用指针的话是不是很麻烦

user: user-1
content: #include <stdio.h> #include <stdlib.h>  int count = 0; int Fib(int n) { 	count ++; 	if (0==n) return 0;  	if (1==n) return 1;  	int v = Fib(n-1) + Fib(n-2); 	return v; }; int main(int argc, char *argv[]) { 	int i, n; 	printf("Input n:"); 	scanf("%d", &n); 	for ( i=1; i<=n; i++ ) { 		count = 0; 		int v = Fib(i); 		printf("Fib(%d)=%d, count=%d\n", i, v, count); 	}; 	return 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: 这里要考虑数据类型，建议使用double 阶乘的计算可以用下一个值乘以上个阶乘 Double s=0,a=1; for(int i=1;i<=n;i++) {          a=a*i;          s+=1.0/a; } cout <<  s;
user-0 提问: 用codeblocks中的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: while(2)这一段几个意思？属于哪个函数呢？
user-0 提问: 迪杰斯特拉算法 C语言

回复:
user: user-0
content: 引用 1 楼 user-1的回复:请描述你的错误是什么 信号延迟太久了……不好意思，就是这段代码在vc可以实现，在dev就不能实现……现在我已经改用vc了……

user: user-1
content: 请描述你的错误是什么
user-0 提问: 一道简单的选择题

回复:
user: user-1
content: 引用 6 楼 weixin_45846558 的回复:[quote=引用 2 楼 jun木~的回复:]这个考的是三目运算符，当x>0时，y=1；当x<=0时，y=0。搞清楚逻辑关系，再去看选项。 故答案选  C 不能选A吗？。。。。。。。[/quote] 如果A是y=0;if(x>0)y=1;那就没有问题了

user: user-1
content: 引用 6 楼 weixin_45846558 的回复:[quote=引用 2 楼 jun木~的回复:]这个考的是三目运算符，当x>0时，y=1；当x<=0时，y=0。搞清楚逻辑关系，再去看选项。 故答案选  C 不能选A吗？。。。。。。。[/quote] A的话，要是x<=0呢，那y的值就让系统自己决定吗？

user: user-0
content: 引用 2 楼 jun木~的回复:这个考的是三目运算符，当x>0时，y=1；当x<=0时，y=0。搞清楚逻辑关系，再去看选项。 故答案选  C 不能选A吗？。。。。。。。

user: user-0
content: 引用 楼主 weixin_45846558的回复:1、与y=(x>0?1:0);等价的是（        ）    A、if(x>0) y=1;    B、if(x)y=1;else y=0;    C、y=1;if(x<=0)y=0;    D、if(x<=0)y=1; 为什么不能选A啊？？？？？

user: user-2
content: C，可以上机试一下的。

user: user-3

user: user-4
content: 这个考的是三目运算符，当x>0时，y=1；当x<=0时，y=0。搞清楚逻辑关系，再去看选项。 故答案选  C

user: user-5
content: C。(这是用来凑字数的)
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: user-3
content: 自己去看书或者百度吧，这种小事还要求人

user: user-0
content: 引用 1 楼 user-3的回复:控制位数用的。。。。。 能讲得详细一点吗。。。。

user: user-3
content: 控制位数用的。。。。。
user-0 提问: 新学的，还不太会，求大佬解答

回复:
user: user-1
content: char* MyStrcat(char *dst, const char *src) {     assert(dst != NULL && src != NULL);     char *temp = dst;     while (*temp++)         ;     temp--;     while ((*temp++ = *src++) != '\0');       return dst; } 供参考～ 使用assert注意添加头文件assert.h

user: user-2
content: char* MyStrcat(char *dst, const char *src) {     assert(dst != NULL && src != NULL);     char *temp = dst;     while (*temp != '\0')         temp++;     while ((*temp++ = *src++) != '\0');      return dst; }

user: user-3
content: 这么简单的程序，学着先写一下吧，又不难。学个语言搞得跟登月似的

user: user-4
content: 引用 1 楼 SuperDay的回复:论坛里面都有这种问题了，搜索一下就有了 大哥，救下俺的帖子

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-0
content: 引用 1 楼 寻开心 的回复：你还是自己百度 c语言，冒泡 自己找吧。   你自己写出来的，如果运行错误， 发出来大家可以帮忙 上来直接要这最初级的代码， 意义何在啊嗯嗯 谢谢啦

user: user-2
content: 你还是自己百度 c语言，冒泡 自己找吧。   你自己写出来的，如果运行错误， 发出来大家可以帮忙 上来直接要这最初级的代码， 意义何在啊
user-0 提问: 蓝桥杯真题求助C语言

回复:
user: user-1
content: 1. 循环输入字符串是个问题，在输入数字之后的回车可以尝试使用`getchar()`吸收掉 2. i终止条件不对，起码是`i<strlen(s)` 3. 没有处理`Bob` 在 `Alice` 前面 4. 没有处理`Alice`或者`Bob`后面有其它字母的情况 5.。。。

user: user-0
content: 引用 5 楼 寻开心 的回复:从简化逻辑的角度来说， 可以先构造一个函数，类似于：           int findAliceOrBob(const char * str，const int nStart, int * nPos) 作用是在str字符串当中， 从nStart开始，查找其后出现的独立单词Alice或者Bob       返回值是整数，其值0，表示没有找到，1先找了Alice， 2先找到了Bob；       返回值非0的时候， nPos记录Alice或者Bob在str当中的位置（方便以后再次从这个位置开始去寻找下一个Alice或Bob）  有了这个函数后， 再做一个标记变量，表示当前已经找了了Alice还是Bob还是什么都没有呢； 以及当前的Alice或者Bob的位置      而后从头开始调用findAliceOrBob() 找下一个出现的Alice或者Bob      根据标记变量，以及找到的新单词和原来的单词的位置差来计算是否是配对关系  有了findAliceOrBob这个函数，写代码的逻辑部分就会清晰一些。  尽量把这种可以重复使用的功能，弄成一个个独立的小函数，方便调试，也便于组织整体的逻辑关系 欧克，谢谢大佬指点

user: user-2
content: 从简化逻辑的角度来说， 可以先构造一个函数，类似于：           int findAliceOrBob(const char * str，const int nStart, int * nPos) 作用是在str字符串当中， 从nStart开始，查找其后出现的独立单词Alice或者Bob       返回值是整数，其值0，表示没有找到，1先找了Alice， 2先找到了Bob；       返回值非0的时候， nPos记录Alice或者Bob在str当中的位置（方便以后再次从这个位置开始去寻找下一个Alice或Bob）  有了这个函数后， 再做一个标记变量，表示当前已经找了了Alice还是Bob还是什么都没有呢； 以及当前的Alice或者Bob的位置      而后从头开始调用findAliceOrBob() 找下一个出现的Alice或者Bob      根据标记变量，以及找到的新单词和原来的单词的位置差来计算是否是配对关系  有了findAliceOrBob这个函数，写代码的逻辑部分就会清晰一些。  尽量把这种可以重复使用的功能，弄成一个个独立的小函数，方便调试，也便于组织整体的逻辑关系

user: user-0
content: 引用 2 楼 user-3 的回复:gets为什么要循环呢？这样的话只能一行一行分析，然后跨行怎么处理？ 我scanf和gets都用，导致我输入整数后换行ges()直接读取了回车，然后输出个0

user: user-2
content: 1 for（I=0; I<10000; I++). // 这里应该 I<strlen(s)  2 算法里面，没有体现出Alice和Bob两个单词前后不能有字母只能的情况  3 算法里面，也没有考虑Bob在前Alice在后的情况  不要急于写代码， 把你的思路先用文字/伪代码描述清楚，自己觉得合理没有漏洞后再开始去写代码吧

user: user-3
content: gets为什么要循环呢？这样的话只能一行一行分析，然后跨行怎么处理？

user: user-0
content: 顶顶顶顶顶顶顶顶顶顶顶
user-0 提问: 小明种苹果（续）我的代码哪里出现了问题，谢谢

回复:
user: user-1
content: if (Count1 != all_num) {     drop_tree_num++;     isdrops[i] = 1;     Count1 = drops[i][j]; } 这里如果一棵树掉落不止一次，drop_tree_num就会在一棵树上多次加一 我也是因为这个错误得50分，找了好久……

user: user-0
content: 我是这样想的，all是最后的输出，当一行里面除了第一个再次出现正整数的时候我就将此数减去后面的数作为这一行最后的剩余数

user: user-2
content: all_num = apples[i];  all_num = drops[i][j];  你的all_num到底是值apples[i]，还是drops[i][j]呢？ 这个是不是需要区分一下呢？
user-0 提问: PTA中关于统计一行文本的单词个数

回复:
user: user-1
content: 嗯，快去好好学习啊，不然拿鞭子来抽

user: user-0
content: 引用 10 楼 SuperDay的回复:就是一个循环而已嘛，好好写就是了 好，待会我就去学数组，多谢大佬提点

user: user-1
content: 就是一个循环而已嘛，好好写就是了

user: user-0
content: 引用 8 楼 乔碧萝大魔王的回复:[quote=引用 7 楼 SuperDay的回复:]你看看你，程序不好好写，尽想着偷懒，说明还是没长进 我……脑子比较小，想不出只能分析别人的了，没想偷懒，真的……[/quote] 表情包发错了，我以为是叹气

user: user-0
content: 引用 7 楼 SuperDay的回复:你看看你，程序不好好写，尽想着偷懒，说明还是没长进 我……脑子比较小，想不出只能分析别人的了，没想偷懒，真的……

user: user-1
content: 你看看你，程序不好好写，尽想着偷懒，说明还是没长进

user: user-0
content: 引用 2 楼 寻开心的回复:int main() {     char a[1000];  //万一我的字符串长度超过一千了,那就是溢出了。 可以用fgets函数限定读入的字数      gets(a);/*怕a溢出，这fgets（a， 999， “stdin”）来替代gets函数 */     int m, i, j;     m = strlen(a);     if (a[0] == ' ')  /* 算法是从空格后的第一个字符或者整个字符串的第一个字符开始计算单词数量*/         j = 0;     else         j = 1;// 遇到单词的第一个字母的时候开始计数；不是等到单词结束遇到空格计数；这样避免到整个字符串结束后附加的判断      for (i = 0; i<m - 1; i++)//正因为遇到单词的第一个字符开始计数，所以不用管字符串结尾到没到     {//按照这个循环的意思应该是通过空格统计单词吧          if (a[i] == ' ' && a[i + 1] != ' '/*说明遇到下一个单词的第一个字母啦，所以计数器加1*/)             j++;     }     printf("%d\n", j);     return 0; } 好完美的诠释，向大佬低头，大佬祝你开心^_^

user: user-0
content: 引用 1 楼 SuperDay的回复:又是你！1你写的什么程序啊？乱七八糟。2你说的没错 不用麻烦大佬了，有人回答了，哈哈哈哈，避免了您的头痛

user: user-2
content: 第一段代码，老实说， 没看出来哪儿对了， 所以也不知道哪儿错了

user: user-0
content: 引用 1 楼 SuperDay的回复:又是你！1你写的什么程序啊？乱七八糟。2你说的没错 求指导，大佬我错了，我也不想的( °◅° )我知道有点奇怪，但是我感觉那样比较简洁，然后别人的代码那里大佬你还没回答我那个万一我的字符串超过一千了怎么办，以及为什么他可以统计最后一个单词的问题呢，详情注释右拉哦，多谢大佬

user: user-2
content: int main() {     char a[1000];  //万一我的字符串长度超过一千了,那就是溢出了。 可以用fgets函数限定读入的字数      gets(a);/*怕a溢出，这fgets（a， 999， “stdin”）来替代gets函数 */     int m, i, j;     m = strlen(a);     if (a[0] == ' ')  /* 算法是从空格后的第一个字符或者整个字符串的第一个字符开始计算单词数量*/         j = 0;     else         j = 1;// 遇到单词的第一个字母的时候开始计数；不是等到单词结束遇到空格计数；这样避免到整个字符串结束后附加的判断      for (i = 0; i<m - 1; i++)//正因为遇到单词的第一个字符开始计数，所以不用管字符串结尾到没到     {//按照这个循环的意思应该是通过空格统计单词吧          if (a[i] == ' ' && a[i + 1] != ' '/*说明遇到下一个单词的第一个字母啦，所以计数器加1*/)             j++;     }     printf("%d\n", j);     return 0; }

user: user-1
content: 又是你！1你写的什么程序啊？乱七八糟。2你说的没错
user-0 提问: 把下面c加加程序改成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: user-0
content: 引用 1 楼 user-3 的回复：就为了做这区区五十分吗？那你想要多少分

user: user-3
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 提问: ptrace(PTRACE_TRACEME, 0, 0, 0)设置后，pclose为何会被挂住？

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: (C 语言)为什么这个程序一开始输入字母后会出现无限循环"Input days:"?然后如何解决？求巨佬解答

回复:
user: user-1
content: 本来scanf()期望你输入一个int类型的，结果你输入的是字符，所以此时输入流产生了错误，此时再次调用scanf()函数已经不起作用，所以你的代码会一直循环。可以使用rewind()函数清理指定流中的错误指示符以及文件结束指示符。 	int t = 0; 	int ret = 0; 	int n = 0; 	do 	{ 		t = 1; 		printf("Input days:\n"); 		ret = scanf("%d", &n); 		if (ret != 1) 		{ 			rewind(stdin);//-------清理输入流中的错误------------ 			t = 0; 		} 	} while (n <= 0 || t == 0); 	return 0; 此时即时输入的是字符，scanf()也会在下次调用时停下来等待再次输入。 关于rewind()函数的详细用法，请参考《C++中getchar()的使用方法》 希望能够帮到你！

user: user-0
content: 问题找到了，是因为缓冲区未被读取的问题，在后面加一个while(getchar()!='\n');就可以了。

user: user-2
content: 改成while (n <= 0 || t != 0);试试，应该就不会死循环～

user: user-2
content: 若ret==0，那么t = 0;就会执行。但是while里面的n <= 0 || t == 0所以都满足，因为n可能是一个随机数，比较大。

user: user-3
content: 输入怎么ret就会得到0，必须是一直循环的啊
user-0 提问: 先求数组的最大元素的指针pmax，然后将最大元素与最后一个元素互换，最后输出互换后的数组元素。

回复:
user: user-1
content: #include<stdio.h> int main() {     int a[10]={5,6,2,5,89,4,6,21,46,16},*p,*pmax,temp;     //*pmax=a[0];     pmax = &a[0];      //for(p=a;*p!='\0';p++)     for(p=a; p < a + 10; p++)     {         if(*p >= *pmax)         {             //*pmax=*p;             pmax = p;         }     }     //swap      temp = a[9];     a[9] = *pmax;     *pmax = temp;     /*     *p=a[9];     *pmax=temp;     temp=*p;     *p=*pmax;     */     //for(p=a;*p!='\0';p++)     for(p=a; p < a + 10; p++)     {         printf("%d ",*p);     } } 供参考～  不要和字符串搞混了，字符串是判断'\0'，int数组不可以的～

user: user-2
content: 对，循环条件写错了，应该采用计数

user: user-3
content: 引用 9 楼 黄哥Python培训 的回复:错误的地方不少，最致命的错误。 pmax 指针变量没有初始化。 如果我没有记错的话，直接char 数组表示的字符串才能判断最后一个是不是'\0'???  直接char 数组表示的字符串才能判断最后一个是不是'\0'???  修改为 只有char 数组表示的字符串才能判断最后一个是不是'\0'???

user: user-3
content: 错误的地方不少，最致命的错误。 pmax 指针变量没有初始化。 如果我没有记错的话，直接char 数组表示的字符串才能判断最后一个是不是'\0'???

user: user-2
content: 乱码是其它地方问题，不是说你改的这个代码原来就是对的，要去好好调试一下程序

user: user-0
content: 引用 6 楼 SuperDay的回复:[quote=引用 2 楼 SuperDay的回复:]第一句应该是pmax=a 好好改成这个！真是晕啊[/quote] 你好，改成这个就乱码了

user: user-2
content: 引用 2 楼 SuperDay的回复:第一句应该是pmax=a 好好改成这个！真是晕啊

user: user-2
content: 你那是初始化，pmax是不确定的值，然后就直接取值赋值，找死呢？

user: user-0
content: 引用 1 楼 SuperDay的回复:pmax都没初始化，就开始乱搞啊 你好，初始化在第5行

user: user-0
content: 引用 1 楼 SuperDay的回复:pmax都没初始化，就开始乱搞啊 你好，初始化在第5行

user: user-2
content: 第一句应该是pmax=a

user: user-2
content: pmax都没初始化，就开始乱搞啊
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是字符，不能用%s，建议用%c；用%s会越界～

user: user-3
content: 另一个帖子写给你了

user: user-4
content: 字符串应该是a[100]数组啊

user: user-0
content: 引用 1 楼 user-4的回复:输入一个字符串，然后输入十六进制整数 我刚输了，可不出答案。。。所以想来问问

user: user-4
content: 输入一个字符串，然后输入十六进制整数
user-0 提问: C语言的scanf函数

回复:
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: 我看错了，是z，float的情形也是类似的

user: user-2
content: c所在的内存区域是一个栈空间，有的编译器会全部初始化为十六进制的CC，这个在int表现出来就是一个很大的负数。一般定义变量的时候最好初始化一下

user: user-0
content: 但我还是有点不理解结果是一个负数，这个数字是哪来的

user: user-2
content: 第三个应该是没成功输入进去的
user-0 提问: 递归法求n！运行结果不对

回复:
user: user-1
content: #include <stdio.h> double fac(int n) {     if (0 == n || 1 == n)     {         return 1;     }     return n * fac(n - 1); } int main() {     int n;     double y;      printf("Input a integer number: \n");     scanf("%d", &n);     if (n < 0)     {         printf("n<0,data error \n");     }     else     {         y = fac(n);         printf("%d!=%15f \n", n, y);     }     return 0; }

user: user-0
content: 好的👌谢谢了

user: user-2
content: y建议定义为double，并且输出是用%15lf

user: user-3
content: 要找一本新的C 语言的书看看，书写代码时，操作符前后有一个空格是一个好的习惯。

user: user-4
content: y是float，但是你输出用%d，那是整数输出
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 楼 SuperDay的回复:第四行第一个逗号是中文的 谢谢你！！！！！！！

user: user-0
content: 引用 2 楼 SuperDay的回复:第一个printf字符串双引号右边少了一个逗号 谢谢谢谢！超感谢！！

user: user-0
content: 引用 1 楼 user-3的回复:有中文逗号，都检查下标点符号吧 好的好的谢谢谢谢谢谢谢谢！

user: user-2
content: 第四行第一个逗号是中文的

user: user-2
content: 第一个printf字符串双引号右边少了一个逗号

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 楼 qq_45896193 的回复:[quote=引用 1 楼 user-2的回复:]一个字符宽度是1 这里的5d 只是一个显示对齐而已 运行一下看看 再把5改成别的 再运行 对比一下   不要光看代码 要多运行调试 我把5去掉输出的数字就没有间隔了，5换成1到10输出的数字间隔越来越大，还是搞不懂啊[/quote]简直他妈脑残，不用脑子学你妈的编程，回家日你妈去吧

user: user-0
content: 引用 3 楼 user-2的回复:引用 2 楼 qq_45896193 的回复:我把5去掉输出的数字就没有间隔了，5换成1到10输出的数字间隔越来越大，还是搞不懂啊如果你这么笨的话 那我也帮不了你什么了 加油吧 简直他妈有病，不帮忙回答回复你妈回复，回家日尼玛去吧

user: user-2
content: 引用 2 楼 qq_45896193 的回复:我把5去掉输出的数字就没有间隔了，5换成1到10输出的数字间隔越来越大，还是搞不懂啊如果你这么笨的话 那我也帮不了你什么了 加油吧

user: user-0
content: 引用 1 楼 user-2的回复:一个字符宽度是1 这里的5d 只是一个显示对齐而已 运行一下看看 再把5改成别的 再运行 对比一下   不要光看代码 要多运行调试 我把5去掉输出的数字就没有间隔了，5换成1到10输出的数字间隔越来越大，还是搞不懂啊

user: user-2
content: 一个字符宽度是1 这里的5d 只是一个显示对齐而已 运行一下看看 再把5改成别的 再运行 对比一下   不要光看代码 要多运行调试
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: int main() {     int i, j, a[100][100]= {1};     int n = 10; //    scanf("%d", &n);     for ( int i=0; i<=n; i++) for (int j=0; j<=n; j++) a[i][j]=1;     for ( int i=2; i<=n; i++) {         for ( j=1;j<i; j++)             a[i][j] = a[i-1][j-1] + a[i-1][j];     }     for (i=0; i<=n; i++) {         for (j=0; j<=i; j++)             printf("%4d", a[i][j]);         printf("\n");     };     return 0; }

user: user-3
content: #include <stdio.h>  int main(void) {         int n = 0, i, j;         int a[10][10] = { 0 };         printf("please input the max num : ");         scanf("%d", &n);         if (n < 1 || n >= 10)         {                 printf("input error, please check...\n");                 return 0;         }         else         {                 a[0][0] = 1;                 for (i = 1; i < n; i++)                 {                         a[i][0] = a[i-1][0];                         for (j = 1; j <= i; j++)                         {                                 a[i][j] = a[i-1][j-1] + a[i-1][j];                         }                 }                 //print                 for (i = 0; i < n; i++)                 {                         for (j = 0; j <= i; j++)                                 printf("%d    ", a[i][j]);                         printf("\n");                 }         }         return 0; }

user: user-4
content: 这个||条件。。。有什么数是不比1大，又不比100小的呢(没有，所以条件必然成立，和写个if(1==1)的效果一样了)

user: user-5
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: 引用 3 楼 datoulaile123的回复:k被赋值一次1后，后续k的值一直是1了，需要在第一层循环里重置为0 明白了，谢谢你呀，😃

user: user-0
content: 引用 2 楼 user-3的回复:每次内层循环之前，k都要重新置0 哦哦对诶，我明白了，谢谢😄

user: user-2
content: k被赋值一次1后，后续k的值一直是1了，需要在第一层循环里重置为0

user: user-3
content: 每次内层循环之前，k都要重新置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: 引用 5 楼 qq_35378417 的回复:这是一个等差数列：2,4,6,8,10...100。 求和公式： n*a1+n(n-1)d/2  2+4+6+8...+100就是求公差为2的等差数列前50项的和， 用C语言实现就是 int a1=2; int n=50; int d=2; int sum=n*a1+n*(n-1)*d/2; printf("sum = %d  \n", sum);  当输入项数很大的时候，这个会比for循环快很多。  这个会比for循环快。 可惜好多人学编程都学傻掉了！忘记了编程是为了什么

user: user-3
content: 这是一个等差数列：2,4,6,8,10...100。 求和公式： n*a1+n(n-1)d/2  2+4+6+8...+100就是求公差为2的等差数列前50项的和， 用C语言实现就是 int a1=2; int n=50; int d=2; int sum=n*a1+n*(n-1)*d/2; printf("sum = %d  \n", sum);  当输入项数很大的时候，这个会比for循环快很多。  这个会比for循环快。

user: user-4
content: 这个需求,有几个知识点可以说说: 1, 如何记录2+4+6+....+100的值. sum=0;  //初始值为0. sum=sum+2;  //此时,sum=0+2 sum=sum+4; //此时,sum=0+2+4;  所以sum=sum+n是记录所有加数的和的简单算法.  2,如何循环? 2,4,6,8,10, 很明显,两数之间相差为2. 也就是: sum=0; i=0  ->  sum=sum+i  --> 0 + 0 ---> 0 i=2  -> sum=sum+i ---> 0+2  ---> 2 i=4 --> sum=sum+i ---> 2+4 ----> 6 ..... 所以循环初始值从0开始,到100结束,每次循环步长为2: for(i=0;i<=100;i+=2){   sum=sum+i;   //----> sum+=i; }

user: user-5
content: int iI = 0,iSum = 0;  for(iI=2; iI<=100; iI+=2) {     iSum += iI; }

user: user-6
content: int sum = 0;  for(int i=2; i<=100; i+=2 ) sum += i;

user: user-7
content: int i; int sum = 0; for (i = 2; i <= 100; i+=2) {     sum += i; } printf("sum = %d  \n", sum);
user-0 提问: 请问大佬，这个struct 还有这几个数组为什么这样写？

回复:
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: 引用 10 楼 qq_45815575 的回复:[quote=引用 8 楼 liups的回复:]没有[]的不是数组 ,&a[i].score);这个不就是数组吗？[/quote] 按你的问题，a是数组，t不是！

user: user-3
content: struct student a[100]

user: user-3
content: 引用 9 楼 qq_45815575 的回复:[quote=引用 8 楼 liups的回复:]没有[]的不是数组 ,&a[i].score);这个不就是数组吗？[/quote]a本来就是数组 有什么毛病?

user: user-0
content: 引用 8 楼 liups的回复:没有[]的不是数组 ,&a[i].score);这个不就是数组吗？

user: user-0
content: 引用 8 楼 liups的回复:没有[]的不是数组 ,&a[i].score);这个不就是数组吗？

user: user-2
content: 没有[]的不是数组

user: user-0
content: 引用 4 楼 lin5161678的回复:引用 3 楼 qq_45815575 的回复:[quote=引用 2 楼 lin5161678的回复:][quote=引用 1 楼 user-4 的回复:] C语言的struct不能直接赋值可以 请问，为什么char name[21] int score 这两个里面第一个是数组，第二个不是，但是后面都成数组了？？[/quote]说人话?[/quote] 就是在声明结构体的时候，我有点看不懂，为什么一个有[]一个没有[]。

user: user-0
content: 引用 4 楼 lin5161678的回复:引用 3 楼 qq_45815575 的回复:[quote=引用 2 楼 lin5161678的回复:][quote=引用 1 楼 user-4 的回复:] C语言的struct不能直接赋值可以 请问，为什么char name[21] int score 这两个里面第一个是数组，第二个不是，但是后面都成数组了？？[/quote]说人话?[/quote] 就是在声明结构体的时候，我有点看不懂，为什么一个有[]一个没有[]。

user: user-0
content: 引用 4 楼 lin5161678的回复:引用 3 楼 qq_45815575 的回复:[quote=引用 2 楼 lin5161678的回复:][quote=引用 1 楼 user-4 的回复:] C语言的struct不能直接赋值可以 请问，为什么char name[21] int score 这两个里面第一个是数组，第二个不是，但是后面都成数组了？？[/quote]说人话?[/quote] 就是在声明结构体的时候，我有点看不懂，为什么一个有[]一个没有[]

user: user-3
content: 引用 3 楼 qq_45815575 的回复:引用 2 楼 lin5161678的回复:[quote=引用 1 楼 user-4 的回复:] C语言的struct不能直接赋值可以 请问，为什么char name[21] int score 这两个里面第一个是数组，第二个不是，但是后面都成数组了？？[/quote]说人话?

user: user-0
content: 引用 2 楼 lin5161678的回复:引用 1 楼 user-4 的回复:C语言的struct不能直接赋值可以 请问，为什么char name[21] int score 这两个里面第一个是数组，第二个不是，但是后面都成数组了？？

user: user-3
content: 引用 1 楼 user-4 的回复:C语言的struct不能直接赋值可以

user: user-4
content: C语言的struct不能直接赋值
user-0 提问: c语言解密码，az互换，数字不变

回复:
user: user-0
content: 引用 8 楼 liups的回复:[quote=引用 5 楼 qq_45882285 的回复:] [quote=引用 4 楼 liups的回复:]  if(a>='A'&&a<='Z') 这里都知道写字符，为何这里却这样写呢？ a=90-a+65;  互换一下，他们的值如果互换的话正好是这个规律[/quote] 90和65难道不是字符吗？应该直接写字符嘛，写什么90！[/quote] 嗯嗯，我懂你意思了。我当时没想那么多。

user: user-1
content: 引用 5 楼 qq_45882285 的回复:[quote=引用 4 楼 liups的回复:]  if(a>='A'&&a<='Z') 这里都知道写字符，为何这里却这样写呢？ a=90-a+65;  互换一下，他们的值如果互换的话正好是这个规律[/quote] 90和65难道不是字符吗？应该直接写字符嘛，写什么90！

user: user-2
content: 博客或者blink。。。

user: user-0
content: 引用 3 楼 user-2的回复:你可以先到博客或者blink的，分数是发给给你提供帮助的人，分数多的人就会升级 嗯嗯，谢谢。那我只想保存一下应该传到哪儿啊。他们有人说能在这个软件上传的。

user: user-0
content: 引用 4 楼 liups的回复:  if(a>='A'&&a<='Z') 这里都知道写字符，为何这里却这样写呢？ a=90-a+65;  互换一下，他们的值如果互换的话正好是这个规律

user: user-1
content: if(a>='A'&&a<='Z') 这里都知道写字符，为何这里却这样写呢？ a=90-a+65;

user: user-2
content: 你可以先到博客或者blink的，分数是发给给你提供帮助的人，分数多的人就会升级

user: user-0
content: 引用 1 楼 user-2的回复:有什么问题吗？知道怎么提问吗？ 这个分数是干啥的啊？我刚开始用这个软件想把自己写的代码存下来。

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: include没写，有什么问题把编译错误和运行结果发上来

user: user-0
content: 谢谢各位帮忙了，真的很谢谢

user: user-0
content: 我知道怎么做了，就是我做错y=%d\n这个地方了，应该改为％d

user: user-0
content: 引用 7 楼 Chef Liu的回复:[quote=引用 6 楼 weixin_45864703的回复:][quote=引用 3 楼 Chef Liu的回复:]我在vc++里运行了一遍，完全可以运行 不行啊，照你的说法去掉return 0,在PTA那里报错了，显示答案错误[/quote] 你再把int main改为void main[/quote] 也不行，可不可以看看题目做，这多次显示是答案错误

user: user-3
content: 答案错误，你贴一下测试样例。  a, b都收double，得到的结果是int类型。  n = a/b + 1;    //是否考虑小数的问题？

user: user-4
content: 引用 6 楼 weixin_45864703的回复:[quote=引用 3 楼 Chef Liu的回复:]我在vc++里运行了一遍，完全可以运行 不行啊，照你的说法去掉return 0,在PTA那里报错了，显示答案错误[/quote] 你再把int main改为void main

user: user-0
content: 引用 3 楼 Chef Liu的回复:我在vc++里运行了一遍，完全可以运行 不行啊，照你的说法去掉return 0,在PTA那里报错了，显示答案错误

user: user-0
content: 写了include，显示是答案错误，编译错误

user: user-4
content: 你把return 0去掉，这个东西加上没有用。

user: user-4
content: 我在vc++里运行了一遍，完全可以运行

user: user-5
content: 是编译问题还是运行问题。
user-0 提问: 求各位大佬帮忙看一看

回复:
user: user-1
content: scanf第一个加了&，第二个为什么不加呢？

user: user-2
content: #include <stdio.h> int k(int a); int main() { 	int n, s; 	scanf("%d", &n); 	s = k(n); 	printf("s=%d", s);//-------添加输出指令，以便查看结果---------- 	return 0; }  int k(int n) { 	int b, d; 	scanf("%d %d", &b, &d);//-----b和d添加地址符号&------------ 	n = b + d; 	return n; } VS2015调试结果如下  对于scanf()函数的用法 scanf()函数的作用是从标准的输入流中读取数据，并将读取到的数据保存到指定的变量中。其格式为 int scanf( const char *format [, argument]... ); 其中，参数format指定了读取数据的方式；argument是一个参数列表，其类型是变量的地址，scanf()函数读取到的数据就保存到这些变量中。scanf()函数的返回值是保存数据的参数的数量，即对参数列表argument中多少个参数进行了赋值。 以上摘自《scanf()函数的用法》 希望能够帮到你！

user: user-3
content: k里面scanf里面没有写取地址运算符
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-0
content: 引用 4 楼 Donald_Shallwing 的回复：这都是套路： for(i=0;i<n;i++)       for(j=0;j<n-1-i;j++)谢谢，明白了

user: user-1
content: 第二层循环中若j < n - i;那么j+1就越界了。因为当i=0;时，j = n - 1;是，j + 1 == n，越界了。 因此应改成： j < n - i - 1;

user: user-2
content: 这都是套路： for(i=0;i<n;i++)       for(j=0;j<n-1-i;j++)

user: user-0
content: 引用 1 楼 user-4 的回复：i=0的时候，j<n-i到最后一个是4，明显a[j+1]就越界了那这个代码要怎么修改呢？

user: user-3
content: 冒泡的两重循环的范围不对 for（i=0； i<n-2; I++ ) {     // 进来的时候a[0] 到 a[i-1] 已经排好序列啦， 所以j只要从i开始就好，不必每次都从0开始     for ( j=i; j<n-2; j++ ) { // 这里是          .....     } }

user: user-4
content: i=0的时候，j<n-i到最后一个是4，明显a[j+1]就越界了
user-0 提问:  c语言，编程，猜数。求代码。

回复:
user: user-1
content: 可以先baidu，一般都有答案

user: user-0
content: 我。。。知道了。

user: user-2
content: 能自己尝试做的就不要求别人了，自己的事情自己完成，“授人以鱼不如授人以渔”的道理需要了解～
user-0 提问: 关于用折半查找法找一个数的题，不知道哪里出错了

回复:
user: user-0
content: 引用 6 楼 寻开心 的回复:其实我说错了 并没有进入死循环  left=right=14， 进入while的时候  k>a[mid] 按照你的逻辑会如何。left=right+1， 而后就直接退出了  最简单的测试，你在while里面写一句， printf("%d %d %d %d\n", left, right, mid, a[mid]); 就能看到执行的顺序以及最终的结果了  学学调适吧， 不会做断点跟踪，就学会输出中间结果检查执行流程 明白了，非常感谢！！

user: user-1
content: 其实我说错了 并没有进入死循环  left=right=14， 进入while的时候  k>a[mid] 按照你的逻辑会如何。left=right+1， 而后就直接退出了  最简单的测试，你在while里面写一句， printf("%d %d %d %d\n", left, right, mid, a[mid]); 就能看到执行的顺序以及最终的结果了  学学调适吧， 不会做断点跟踪，就学会输出中间结果检查执行流程

user: user-0
content: 引用 4 楼 寻开心 的回复:当k超出范围的时候，你的while循环的最终结果是left=right=0，或者left=right=14 k小于a【0】  while循环的结果就是 left=right=0；而后死循环 k大于a【14】 while循环的结果就是left=right=14；而后死循环 死循环这里明白了，但是还有一点，每次死循环不是应该直接进入最后一种情况，然后无限不断输出“无此数”吗？为什么不是这样？

user: user-1
content: 当k超出范围的时候，你的while循环的最终结果是left=right=0，或者left=right=14 k小于a【0】  while循环的结果就是 left=right=0；而后死循环 k大于a【14】 while循环的结果就是left=right=14；而后死循环

user: user-1
content: 你自己已经找到问题啦。  left=right的时候， k>a[mid] 或者 k<a[mid] 都会陷入死循环  自己在while前加入两个判断解决就好 if ( k<a[left] || k>a[right] ) 输出no，结束

user: user-0
content: 引用 1 楼 寻开心 的回复:else if(k=a[mid])   这里是 == 才对 这个改过后还是不对，就是输入超过范围的数字什么都不显示，问题不在==这里

user: user-1
content: else if(k=a[mid])   这里是 == 才对
user-0 提问: 关于输出1000对孪生素数，不知道哪里写错了

回复:
user: user-0
content: 引用 10 楼 寻开心 的回复:症状轻的 关闭编译器，重启 症状严重的 关机重启 绝症的 卸载重装  不该完整源代码的， 一律当中绝症处理 哈哈哈，真的好了！ 今天的问题你都帮我解决了，真的太谢谢你啦！

user: user-1
content: 症状轻的 关闭编译器，重启 症状严重的 关机重启 绝症的 卸载重装  不该完整源代码的， 一律当中绝症处理

user: user-0
content: 引用 8 楼 寻开心 的回复:除了3和5之外，孪生素数都满足6n-1，6n+1 这样的匹配关系 直接一对儿一对儿的取数，然后分别判断是否是素数就好了 把是否素数写成一个函数 这样代码结构就简单的多了 谢谢，但是我还是想知道程序为什么会报错

user: user-1
content: 除了3和5之外，孪生素数都满足6n-1，6n+1 这样的匹配关系 直接一对儿一对儿的取数，然后分别判断是否是素数就好了 把是否素数写成一个函数 这样代码结构就简单的多了

user: user-2
content: 那好吧，能你自己解决去吧，没空折腾

user: user-0
content: 引用 5 楼 user-2 的回复:中医看病是要望闻问切，如果去看病不让看不让碰，神医也不知道什么毛病。你们这些提问的人好奇怪，我们都要看靠猜吗？ 可我明明贴了代码的啊   你可以用啊

user: user-2
content: 中医看病是要望闻问切，如果去看病不让看不让碰，神医也不知道什么毛病。你们这些提问的人好奇怪，我们都要看靠猜吗？

user: user-0
content: 引用 3 楼 user-2 的回复:最后一个if应该在前一个if里面 现在编译一直显示报错，就还是上面发的图片的那个错误，这是怎么回事？ 那会我用没改的程序又运行，结果也是报错... 明明之前没有的

user: user-2
content: 最后一个if应该在前一个if里面

user: user-0
content: 引用 1 楼 user-2 的回复:每次内层for循环之前，state都要重新清0 刚刚改过运行了，但是运行结果中有的输出2遍，有的输出3遍。 现在编译又开始报错，不知道怎么回事

user: user-2
content: 每次内层for循环之前，state都要重新清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: 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-0
content: 引用 1 楼 user-2的回复:while(cw>0); 这是个死循环 那个地方没有错误而且不是死循环

user: user-2
content: while(cw>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: 初步猜测，       a是给定的数      b循环          用c的循环对b做因数分解          d==2 表示 b是一个素数，因为只有素数才会只有2个因子          e 保存的是a的最大的因子 感觉这个破程序不完善， 目的是找a的最大因子  如果出于这个目的，这个算法可优化的部分很大，找到a最小的素数因子出来，最大因子直接就出来了，何必后面的循环呢

user: user-0
content: 引用 1 楼 user-3的回复:读书百遍，其义自见，多读多写多调试 额，说得真好，只能靠自己了

user: user-3
content: 读书百遍，其义自见，多读多写多调试
user-0 提问: 一道C语言编程题，C语言萌新小白求解答，谢谢啦

回复:
user: user-1
content: 大体的思路：    用一维数组来表示二维的数据    用help数组来记录不包含中心点的8个点，从左上角开始顺时针旋转得到的序列， 借此避免通过二维数组下标找下一个位置的麻烦    help是一个循环数组  其他的没什么好说的了

user: user-1
content: #include <stdio.h> #include <stdlib.h>  // 打印第step操作，result是辅助数组，c是中间点的数值  void output(const int step, const int * result, const int c) { 	printf("%2d%2d%2d\n", result[0], result[1], result[2]); 	printf("%2d%2d%2d\n", result[7], c,         result[3]); 	printf("%2d%2d%2d\n", result[6], result[5], result[4]); 	printf("---%2d---\n", step); };  int main(int argc, char *argv[]) { 	const int index[8] = {0, 1, 2, 5, 8, 7, 6, 3}; 	int chess[9]; 	int help[8]; 	int i,j, c=0, step=0; 	printf("Please enter original order of digits 1~8:\n"); 	for ( i=0; i<9; i++) scanf("%d", &chess[i]); 	for ( i=0; i<8; i++) help[i]=chess[index[i]]; 	printf("The sorting process is as felow:\n"); 	output(step++, help, 0); 	// 确定1所在的位置  	int pos1;  	for (i=0; i<8; i++)	if ( 1 == help[i])	{ 		pos1 = i; break; 	}; 	// 循环定位2-8的位置  	for (i=2; i<7; i++ ) { 		//寻找i的位置 		int posi; 		for (j=0; j<8; j++ )  			if ( i== help[j]) {  				posi=j; 				break; 			}; 		if ((posi+8-pos1)%8 == i-1 ) continue; //无需处理 		c = i;	help[j]=0; 		output(step++, help, i); //   		// 确定i应该放置的正确位置 		int posin = pos1 + i - 1; 		if (posi < posin) posi+=8; 		// 循环处理 posin 到 posi 之间的数据，此时posi是0 		int k =0; 		for(; k<posi-posin; k++) { 			int x, y; 			x = posi-k;  			y = x-1; 			if ( x<0 ) x+= 8;  			if ( x>7 ) x-= 8; 			if ( y<0 ) y+= 8; 			if ( y>7 ) y-= 8; 			int t = help[x]; 			help[x]=help[y]; 			help[y] = t; 			output(step++, help, c); 		}; 		int t = help[posin%8]; 		help[posin%8] = c; 		c = t; 		output(step++, help, 0); 	}  	return 0; };
user-0 提问: c语言设计程序设计50以内加减法

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
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: 嵌套需要退出条件，检查一下。
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 楼 寻开心的回复:ELemType 的第二个字母，大小写 typedef那里是大写L，后面用的是小写l，所以没有定义了 啊，对哦，谢谢谢谢

user: user-2
content: ELemType 的第二个字母，大小写 typedef那里是大写L，后面用的是小写l，所以没有定义了

user: user-0
content: 以下几个错误全是这个

user: user-0

user: user-3
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: 不应该是-1吗？while (i--) ; 因为是后减，因此先判断表达式，然后在计算--,因此遇到i=0时，i--为假，退出，在计算--，最后i = -1;

user: user-3
content: 这道题答案应该等于2吧

user: user-4
content: 不断循环，直到条件为假，i=0

user: user-5
content: 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-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: #include <stdio.h> #include <stdlib.h>  int main() {     int n;     scanf("%d", &n);     float total;     for (int I=0; I<n; I++ ) {         int w; float p;         scanf("%d %f", &w, &p);         total += floor( w*p*10 + 0.499f) / 10;         // floor里面是转换成角为单位，然后再变成分为单位     }     printf("%.2f", total); }

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-0
content: 引用 1 楼 user-3的回复:问题是啥？要问什么？ 对不起啊，编译器故障，判题正确了

user: user-2
content: 我猜他想让你帮他调试。

user: user-3
content: 问题是啥？要问什么？
user-0 提问: 请问冒泡排序法中的for的作用

回复:
user: user-0
content: 引用 3 楼 壹抹尘埃的回复:冒泡排序，本身就是由双层循环实现的。其中外层循环控制排序轮数，一般为要排序的数组长度减1次，因为最后一次循环只剩下一个数组元素不需要对比了。内层循环主要对比数组中每个临近元素的大小，以确定是否交换位置，对比和交换次数随排序轮数而减少。 意思是我删掉了外层循环的话，只给一个数组元素排了序是吗？所以要外层循环才能把所有数组元素都排序完，要完成整个数组的排序的话，外层循环控制排序的次数要与排序的数组元素个数相同才能全部排完是吗

user: user-1
content: 这就是双层循环的，这个程序缩进没学好，上一行一个缩回来，并且不加花括号也不是好习惯

user: user-2
content: 建议在第二层循环执行完之后把所有的数组元素打印出来，看一下每次第二层循环之后数组元素有什么区别。 这样就能看出第一层循环是不是多余的～

user: user-3
content: 你去掉试试不就知道了么？ 冒泡排序只用一次循环，无法变成有序的

user: user-4
content: 冒泡排序，本身就是由双层循环实现的。其中外层循环控制排序轮数，一般为要排序的数组长度减1次，因为最后一次循环只剩下一个数组元素不需要对比了。内层循环主要对比数组中每个临近元素的大小，以确定是否交换位置，对比和交换次数随排序轮数而减少。

user: user-5
content: 跟双重循环for｛for｛｝｝没区别，不带花括号的话默认下一条语句为他的语句块

user: user-0
content: 我也是网上查了很多，都是这样做。而我觉得标记的第一个for语句完全是个摆设...真不知道有什么作用，删掉效果应该一样吧？可偏偏就有区别。两个for语句紧挨在一起也不是我认识的双重循环，真的特别懵

user: user-4
content: 引用 9 楼 qq_45914920 的回复:[quote=引用 8 楼 壹抹尘埃的回复:][quote=引用 7 楼 qq_45914920 的回复:] [quote=引用 3 楼 壹抹尘埃的回复:]冒泡排序，本身就是由双层循环实现的。其中外层循环控制排序轮数，一般为要排序的数组长度减1次，因为最后一次循环只剩下一个数组元素不需要对比了。内层循环主要对比数组中每个临近元素的大小，以确定是否交换位置，对比和交换次数随排序轮数而减少。 意思是我删掉了外层循环的话，只给一个数组元素排了序是吗？所以要外层循环才能把所有数组元素都排序完，要完成整个数组的排序的话，外层循环控制排序的次数要与排序的数组元素个数相同才能全部排完是吗[/quote] 你看一下你的输入。87654321，你删掉外层循环后。仅仅就是 8 7 比较大小进行互换位置，互换之后 ， 8 6再接着比大小互换位置。依次进行比大小判定和位置互换。如此的循环有且只有一次，在进行完这一次的循环后，只有最后一位数是正确的。因此你需要加入外层循环来控制循环次数。具体的我在上面说的很清楚了[/quote] 那没错了 感谢大佬的详细解答！[/quote] 嗯呢，没啥问题的话就把帖子结了。

user: user-0
content: 引用 8 楼 壹抹尘埃的回复:[quote=引用 7 楼 qq_45914920 的回复:] [quote=引用 3 楼 壹抹尘埃的回复:]冒泡排序，本身就是由双层循环实现的。其中外层循环控制排序轮数，一般为要排序的数组长度减1次，因为最后一次循环只剩下一个数组元素不需要对比了。内层循环主要对比数组中每个临近元素的大小，以确定是否交换位置，对比和交换次数随排序轮数而减少。 意思是我删掉了外层循环的话，只给一个数组元素排了序是吗？所以要外层循环才能把所有数组元素都排序完，要完成整个数组的排序的话，外层循环控制排序的次数要与排序的数组元素个数相同才能全部排完是吗[/quote] 你看一下你的输入。87654321，你删掉外层循环后。仅仅就是 8 7 比较大小进行互换位置，互换之后 ， 8 6再接着比大小互换位置。依次进行比大小判定和位置互换。如此的循环有且只有一次，在进行完这一次的循环后，只有最后一位数是正确的。因此你需要加入外层循环来控制循环次数。具体的我在上面说的很清楚了[/quote] 那没错了 感谢大佬的详细解答！

user: user-4
content: 引用 7 楼 qq_45914920 的回复:[quote=引用 3 楼 壹抹尘埃的回复:]冒泡排序，本身就是由双层循环实现的。其中外层循环控制排序轮数，一般为要排序的数组长度减1次，因为最后一次循环只剩下一个数组元素不需要对比了。内层循环主要对比数组中每个临近元素的大小，以确定是否交换位置，对比和交换次数随排序轮数而减少。 意思是我删掉了外层循环的话，只给一个数组元素排了序是吗？所以要外层循环才能把所有数组元素都排序完，要完成整个数组的排序的话，外层循环控制排序的次数要与排序的数组元素个数相同才能全部排完是吗[/quote] 你看一下你的输入。87654321，你删掉外层循环后。仅仅就是 8 7 比较大小进行互换位置，互换之后 ， 8 6再接着比大小互换位置。依次进行比大小判定和位置互换。如此的循环有且只有一次，在进行完这一次的循环后，只有最后一位数是正确的。因此你需要加入外层循环来控制循环次数。具体的我在上面说的很清楚了
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 提问: 输入两数m,n,求两个正整数m,n的最大公约数和最小公倍数。请看下我写的代码哪有问题,谢谢啦。

回复:
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: /**  * @file    gcd.c  * @brief   计算 m, n 的最大公约数和最小公倍数  */  #include <stdio.h>  unsigned int gcd(unsigned int m, unsigned int n) {     unsigned int r;      while (n > 0) {         r = m % n;         m = n;         n = r;     }     return m; }  int main(int argc, char *argv[]) {     int m, n;     int d;      while (scanf("%u%u", &m, &n) == 2) {         d = gcd(m, n);         printf("%u %u\n", d, m / d * n);     }     return 0; }

user: user-3
content: 你n的  int m, n, a, b, t;     scanf("%d,%d", &m, &n);     if (m <= 0 || n <= 0)     {         printf("Input error! \n");     }     else     {         if (m < n)         {             t = m;             m = n;             n = t;         }         a = m;         b = n;         do         {             t = a % b;             a = b;             b = t;         } while (b != 0);     }          printf("最大公约数是%d\n", a);     printf("最小公倍数是%d\n", m*n / a);

user: user-4
content: 编译错误or运行问题说清楚发上来
user-0 提问: 大佬求救，为什么输出的最后一位是-858993460？

回复:
user: user-1
content: 请问你当时怎么解决的哇 我也是后面几个数是负的

user: user-2
content: #include <stdio.h>  #define MAX 100  int calculatePrime(int lim, int aa[MAX]) {     int i, k=0;     for (i = 2; i <= lim; i++) {         int t = 1, j;         for (j = 1; j <= i; j++) {             if (i % j == 0)                 t = t * j;         }         if (t == i) {             aa[k++] = i;         }     }     //for (i = 0;i<MAX; i++) {     for (i = 0;i<k; i++) {    //注意有效值是k个～         printf("%d ", aa[i]);         if (aa[i] <=0)break;     }     return 0; }  int main() {     int lim;     int aa[MAX];     printf("Input lim:\n");     scanf_s("%d", &lim);     printf("All the prime numbers which are less than or equal to lim :\n");     calculatePrime(lim, aa);     return 0; } 供参考～

user: user-3
content: int aa[MAX] = {0}; 初始化一下。

user: user-4
content: 你这个程序中有两个问题，第一个是你没有给aa初始化，第二个是你的calculatePrime函数中，最后打印的时候应该先判断是否小于0，如果小于等于0,break；然后再打印
user-0 提问: C语言

回复:
user: user-0
content: 引用 5 楼 user-1的回复:要用网页版来结贴，手机不行的 谢了，兄弟，爱你哦，，，

user: user-1
content: 可以无满意结贴。。。

user: user-0
content: 贴子，撤不回来

user: user-0
content: 我发现错误了，待会儿再发一下

user: user-1
content: 要用网页版来结贴，手机不行的

user: user-0
content: 引用 3 楼 user-1的回复:可以无满意结贴。。。 在哪儿结束？？？？？
user-0 提问: 怎么把指针变量p2中的字符串赋值到p1中，程序运行到while循环中的赋值时就提示写入位置 0x00FE5858 时发生访问冲突。

回复:
user: user-0
content: 引用 5 楼 自信男孩 的回复:[quote=引用 2 楼 真相重于对错 的回复:] char *p1="ABCDEF"; ===》 char p1[] =ABCDEF"; ================= P2 同理 这样简单的修改是不行的，注意  引用 4 楼 dajkhsdawe 的回复:[quote=引用 2 楼 真相重于对错 的回复:] char *p1="ABCDEF"; ===》 char p1[] =ABCDEF"; ================= P2 同理 不使用数组可以实现字符的复制吗    通过指针变量可以实现字符的复制到另一个指针变量中，这个可以实现吗    [/quote]  实现不了，因为p1, p2都是指针，那么指向的内容又都是字符串常量，不可以修改。复制肯定有写的操作，因此不可以实现。但是p1若是从malloc申请的空间，是可以读写的。  #include<stdio.h> int main(void) {     char p1[] = "ABCDEF";     char *p2 = "abc";     char *string1 = p1;     char *string2 = p2;     while (*string2 != '\0')     {         *string1++ = *string2++;     }     *string1 = '\0';     //printf("%s\n", string1);    //string1已经指向了字符串末尾，因此不能再通过string1输出了，可以考虑把string1再指向p1， 然后在用string1输出是可以的。     printf("%s\n", p1); } 供参考～[/quote] 明白了  感谢感谢

user: user-1
content: char *p1="ABCDEF"; char *p2 = "abc"; p1, p2都是左值，怎么复制呢？

user: user-2
content: 引用 2 楼 真相重于对错 的回复:char *p1="ABCDEF"; ===》 char p1[] =ABCDEF"; ================= P2 同理 这样简单的修改是不行的，注意  引用 4 楼 dajkhsdawe 的回复:[quote=引用 2 楼 真相重于对错 的回复:] char *p1="ABCDEF"; ===》 char p1[] =ABCDEF"; ================= P2 同理 不使用数组可以实现字符的复制吗    通过指针变量可以实现字符的复制到另一个指针变量中，这个可以实现吗    [/quote]  实现不了，因为p1, p2都是指针，那么指向的内容又都是字符串常量，不可以修改。复制肯定有写的操作，因此不可以实现。但是p1若是从malloc申请的空间，是可以读写的。  #include<stdio.h> int main(void) {     char p1[] = "ABCDEF";     char *p2 = "abc";     char *string1 = p1;     char *string2 = p2;     while (*string2 != '\0')     {         *string1++ = *string2++;     }     *string1 = '\0';     //printf("%s\n", string1);    //string1已经指向了字符串末尾，因此不能再通过string1输出了，可以考虑把string1再指向p1， 然后在用string1输出是可以的。     printf("%s\n", p1); } 供参考～

user: user-0
content: 引用 2 楼 真相重于对错 的回复:char *p1="ABCDEF"; ===》 char p1[] =ABCDEF"; ================= P2 同理 不使用数组可以实现字符的复制吗    通过指针变量可以实现字符的复制到另一个指针变量中，这个可以实现吗

user: user-0
content: 引用 1 楼 user-4 的回复:能不能跟踪一下看看是在哪个位置上出问题的？ while语句中的*string1++ = *string2++;提示写入地址访问发生冲突

user: user-3
content: char *p1="ABCDEF"; ===》 char p1[] =ABCDEF"; ================= P2 同理

user: user-4
content: 能不能跟踪一下看看是在哪个位置上出问题的？
user-0 提问: WERTYU,UVA10082

回复:
user: user-0
content: 第一个不懂得地方刚才突然就明白了，但是第二个不懂的地方还是不懂，求教

user: user-1
content: if(s[i])找到对应的字符了，就输出前一个字符，否则输出原来的字符
user-0 提问: 代码改错

回复:
user: user-1
content: strcpy_s(wordT, strlen(str) +1, str); 建议查一下strcpy_s函数，在vs下strcpy_s不支持两个参数；

user: user-0
content: 看了一遍，自己重新写了一份，但是有个错误， #define _SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #include<assert.h>                //库  int saveword(char str[]);//定义saveword   char wordT[100][100]; int count[100] = { 0 }; int q = 0;  int main(void) {                                //main 	int a = 0;//存储一句话中所以英文单词个数 	char str[100] = "an a ab abc a 9,9 a a,cza"; 	//char str[200];//定义一个字符串，用来存放句子 	//gets_s(str);//输入str 	//puts(str);//输出检测str是否正常 	int strLEN;//定义strLEN,用来存放str长度 	strLEN = strlen(str);//strlen函数，字符串长度 	//printf("%d", strLEN);//检测strLEN是否正常 	for (int i = 0; i < strLEN; i++)//统计一句话中所以的英文单词，循环小于句子长度 	{ 		if (isalpha(str[i]) != 0 && isalpha(str[i + 1]) == 0) //如果i是英文，i+1不是英文，则判断为一个单词 		{ 			a++; 		} 	} 	printf("%d\n", a); //输出全部单词数量 	//====分离单词，存储== 	char temp[100];  	int templen = 0; 	for (int i = 0; i < strLEN; i++) 	{ 		if (isalpha(str[i]) != 0) 		{ 			temp[templen] = str[i]; 			templen++; 		} 		else if (templen > 0) 		{ 			temp[templen] = '\0'; 			saveword(temp); 			templen = 0; 		} 	} 	//puts(temp); 	for (int i = 0; i < q; i++) { 		printf("Word: %s, Count: %d\n", wordT[i], count[i]); 	} }  int saveword(char str[]) {                    //saveword 	int i; 	for (int i = 0; i < 100; i++) 	{ 		if (strcmp(wordT[i], str) == 0) 		{ 			count[i]++; 			return 0; 		} 	} 	strcpy_s(wordT, str); 	count[q]++; 	q++; 	return 1; }  strcpy_s(wordT, str);  这句话报错？？是什么原因？  错误 c2660

user: user-2
content: 你先看看wordNum是多少