Question: 萌新问问c语言文件操作

引用 楼主 mdlx 的回复:如何将写好的复制文件的c语言代码实现，通过cmd向main函数传入参数(ps:这给分数是怎么给分) 或者找到exe文件的位置，在地址栏输入cmd回车也行。 ------------------------------------------------------------------ 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 4、红色的是链接，鼠标左键可点击哦。（这句话写给有超高度近视的人看的） CSDN论坛新手指南 ------------------------------------------------------------------

引用 5 楼 user-3的回复:[quote=引用 4 楼 mdlx 的回复:] [quote=引用 3 楼 weixin_40290083的回复:]你在定义main函数是要么写成main() 要么写成main(int argc, char **argv)第一个参数就是cmd命令参数的个数，包括应用程序本身，argv就是参数，不过是字符串数组的形式，在程序中就可以使用argc,argv两个变量如: for(int i =0;i<argc;i++){     printf("%s",*argv[i]); } 假定你编译好的应用程序名为a0.exe，那么  a0 a1  a2   a3，应用程序就会获得这些参数。至于是如何提交到应用程序的，这个是操作系统干的事情，原理没有深究过。 我在编译器写了c文件，然后生成了可执行文件后，在cmd窗口输入可执行文件名却显示“不是内部或外部命令，也不是可执程序或批处理文件”，这是怎么回事？[/quote]cd 到可执行文件的目录 或者 可执行文件用完整路径[/quote] 谢谢，能弄好了

引用 6 楼 weixin_40290083的回复:看你的错误提示，使用的应该是windows系统，打要把你的当前盘和当前目录定位到你的应用程序所在的目录。 先输入 X：回车（X为程序所在的盘） cd AA/BB/CC  回车 (AA BB CC为文件夹（目录）的名称，最终要定位到你的程序所在的文件夹（目录）) 谢谢，能弄好了，

引用 4 楼 mdlx 的回复:[quote=引用 3 楼 weixin_40290083的回复:]你在定义main函数是要么写成main() 要么写成main(int argc, char **argv)第一个参数就是cmd命令参数的个数，包括应用程序本身，argv就是参数，不过是字符串数组的形式，在程序中就可以使用argc,argv两个变量如: for(int i =0;i<argc;i++){     printf("%s",*argv[i]); } 假定你编译好的应用程序名为a0.exe，那么  a0 a1  a2   a3，应用程序就会获得这些参数。至于是如何提交到应用程序的，这个是操作系统干的事情，原理没有深究过。 我在编译器写了c文件，然后生成了可执行文件后，在cmd窗口输入可执行文件名却显示“不是内部或外部命令，也不是可执程序或批处理文件”，这是怎么回事？[/quote]cd 到可执行文件的目录 或者 可执行文件用完整路径

引用 3 楼 weixin_40290083的回复:你在定义main函数是要么写成main() 要么写成main(int argc, char **argv)第一个参数就是cmd命令参数的个数，包括应用程序本身，argv就是参数，不过是字符串数组的形式，在程序中就可以使用argc,argv两个变量如: for(int i =0;i<argc;i++){     printf("%s",*argv[i]); } 假定你编译好的应用程序名为a0.exe，那么  a0 a1  a2   a3，应用程序就会获得这些参数。至于是如何提交到应用程序的，这个是操作系统干的事情，原理没有深究过。 我在编译器写了c文件，然后生成了可执行文件后，在cmd窗口输入可执行文件名却显示“不是内部或外部命令，也不是可执程序或批处理文件”，这是怎么回事？

引用 1 楼 weixin_40290083的回复:main函数是可以带参数的，而且是两个参数，第一个参数为int型，是cmd命令中单词的个数，第二个参数为char *，是每个参数的字符串数组。 但是在cmd中怎么将参数传入用编译器写好的c文件中


Question: 试定义有理数的逻辑结构并使用语言定义有理数的虚拟存储结构

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html


Question: 刚学c语言不久，求大佬指教

引用 5 楼 user-1的回复:[quote=引用 4 楼 一方通行Accelerator 的回复:] [quote=引用 2 楼 user-1的回复:]4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？[/quote] 你都说了是3行4列的，那第3行第5列是什么数字呢[/quote] a[i][4]这个不算么？

引用 4 楼 一方通行Accelerator 的回复:[quote=引用 2 楼 user-1的回复:]4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？[/quote] 你都说了是3行4列的，那第3行第5列是什么数字呢

引用 2 楼 user-1的回复:4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？

引用 2 楼 user-1 的回复:4门功课，数组下标0-3，不能循环到5  定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？

4门功课，数组下标0-3，不能循环到5

#include<stdio.h> #define N 3 //int fac(float a[N][5]) //{ //	float sum; //	int i, j; //	for (i = 0; i < N; i++) //	{ //		sum = 0.0; //		for (j = 0; j < 4; j++) //		{ //			sum = sum + a[i][j]; //		} //		a[i][4] = sum / 4; //	} //	return 0; //} int main() { 	float a[N][4] = { 76, 89, 87, 80, 80, 88, 67, 77, 66, 78, 80, 90 }; 	float x = 0; 	float sum = 0; 	int i, j; 	for (i = 0; i < N; i++) 	{ 		x = 0;  		sum = 0; 		for (j = 0; j < 4; j++) 		{ 			printf("%.1f\t", a[i][j]); 			sum += a[i][j]; 		} 			 		x = sum / 4; 		printf("平均成绩%.3f\n", x); 	} 	return 0; }

引用 11 楼 user-1的回复:[quote=引用 9 楼 一方通行Accelerator 的回复:] [quote=引用 8 楼 user-1的回复:][quote=引用 7 楼 一方通行Accelerator 的回复:] [quote=引用 5 楼 user-1的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:] [quote=引用 2 楼 user-1的回复:]4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？[/quote] 你都说了是3行4列的，那第3行第5列是什么数字呢[/quote] 就像扩大这个矩阵一样，给它加上第五列，能不能这样呢？[/quote] 那你定义的时候就大一点啊，明明没有的东西你去取，那就越界了啊。。[/quote] 是不是应该把那a[3][4]改成a[3][5],然后后面定义怎么改呢？你写的程序好像是3*4的矩阵，然后每行最后输出平均数，能不能一开始就设计成3*5的矩阵?虽然我觉得好像这样更麻烦，但是我很好奇可不可以这样，谢谢你了[/quote]int main() { 	float a[N][5] = { { 76, 89, 87, 80,0 }, { 80, 88, 67, 77,0 }, { 66, 78, 80, 90,0 } }; 	float x = 0; 	float sum = 0; 	int i, j; 	for (i = 0; i < N; i++) 	{ 		x = 0; 		sum = 0; 		for (j = 0; j < 5; j++) 		{ 			printf("%.1f\t", a[i][j]); 			sum += a[i][j]; 		}  		//x = sum / 4; 		x = sum / 5;  		printf("平均成绩%.3f\n", x); 	} 	return 0; } 这样？？[/quote] 那第五列显示的是0……这样不对吧？算了，我觉得就之前那个就很好了，非常感谢大佬的耐心指导

引用 9 楼 一方通行Accelerator 的回复:[quote=引用 8 楼 user-1的回复:][quote=引用 7 楼 一方通行Accelerator 的回复:] [quote=引用 5 楼 user-1的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:] [quote=引用 2 楼 user-1的回复:]4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？[/quote] 你都说了是3行4列的，那第3行第5列是什么数字呢[/quote] 就像扩大这个矩阵一样，给它加上第五列，能不能这样呢？[/quote] 那你定义的时候就大一点啊，明明没有的东西你去取，那就越界了啊。。[/quote] 是不是应该把那a[3][4]改成a[3][5],然后后面定义怎么改呢？你写的程序好像是3*4的矩阵，然后每行最后输出平均数，能不能一开始就设计成3*5的矩阵?虽然我觉得好像这样更麻烦，但是我很好奇可不可以这样，谢谢你了[/quote]int main() { 	float a[N][5] = { { 76, 89, 87, 80,0 }, { 80, 88, 67, 77,0 }, { 66, 78, 80, 90,0 } }; 	float x = 0; 	float sum = 0; 	int i, j; 	for (i = 0; i < N; i++) 	{ 		x = 0; 		sum = 0; 		for (j = 0; j < 5; j++) 		{ 			printf("%.1f\t", a[i][j]); 			sum += a[i][j]; 		}  		//x = sum / 4; 		x = sum / 5;  		printf("平均成绩%.3f\n", x); 	} 	return 0; } 这样？？

引用 8 楼 user-1的回复:[quote=引用 7 楼 一方通行Accelerator 的回复:] [quote=引用 5 楼 user-1的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:] [quote=引用 2 楼 user-1的回复:]4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？[/quote] 你都说了是3行4列的，那第3行第5列是什么数字呢[/quote] 就像扩大这个矩阵一样，给它加上第五列，能不能这样呢？[/quote] 那你定义的时候就大一点啊，明明没有的东西你去取，那就越界了啊。。[/quote] 是不是应该把那a[3][4]改成a[3][5],然后后面定义怎么改呢？你写的程序好像是3*4的矩阵，然后每行最后输出平均数，能不能一开始就设计成3*5的矩阵?虽然我觉得好像这样更麻烦，但是我很好奇可不可以这样，谢谢你了

引用 7 楼 一方通行Accelerator 的回复:[quote=引用 5 楼 user-1的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:] [quote=引用 2 楼 user-1的回复:]4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？[/quote] 你都说了是3行4列的，那第3行第5列是什么数字呢[/quote] 就像扩大这个矩阵一样，给它加上第五列，能不能这样呢？[/quote] 那你定义的时候就大一点啊，明明没有的东西你去取，那就越界了啊。。

引用 5 楼 user-1的回复:[quote=引用 4 楼 一方通行Accelerator 的回复:] [quote=引用 2 楼 user-1的回复:]4门功课，数组下标0-3，不能循环到5 定义的a[3][4]是一个3行4列的矩形，a[i][4]=sum/4;这个地方不是定义了第五列的么？不能直接循环到5，变成3*5的矩阵吗？[/quote] 你都说了是3行4列的，那第3行第5列是什么数字呢[/quote] 就像扩大这个矩阵一样，给它加上第五列，能不能这样呢？


Question: 请大佬帮忙看下这段代码为什么出队不成功

#include<stdio.h> #include<stdlib.h>  #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2  typedef int Status;  typedef struct QNode {     int data;     struct QNode *next; }QNode, *QueuePtr;  typedef struct LinkQueue{     QueuePtr front;     QueuePtr rear; }LinkQueue;//队列类型  Status Queue_Clear(LinkQueue *Q);   Status Queue_Init(LinkQueue *Q) {     QNode *head;     head = (QNode *)malloc(sizeof(QNode));     if (!head)         return OVERFLOW;     Q->front = Q->rear = head;     Q->front->next = NULL;     return OK; }  Status Queue_Destroy(LinkQueue *Q) {     Queue_Clear(Q);      free(Q->front);     Q->front = Q->rear =  NULL;     /*     while (Q->front->next) {         Q->rear = Q->front->next->next;         free(Q->front->next);         Q->front->next = Q->rear;     }     free(Q->front);     Q->front = NULL;     */     return OK; }  Status Queue_Clear(LinkQueue *Q) {      QueuePtr pcur = Q->front->next;     while (pcur) {         Q->front->next = pcur->next;         free(pcur);         pcur = Q->front->next;     }     Q->rear = Q->front;     //Q->front->next = NULL;     /*     while (Q->front->next)     {         Q->rear = Q->front->next->next;         free(Q->front->next);         Q->front->next = Q->rear;     }     Q->rear = Q->front;     Q->front->next = NULL;     */     return OK; }  Status Queue_Empty(LinkQueue *Q) {     if (Q->front == Q->rear)         return OK;      return FALSE; }  int Queue_Length(LinkQueue *Q) {     int length = 0;     QueuePtr pcur = Q->front->next;      while (pcur) {         length++;         pcur = pcur->next;     }     /*        while (Q.front->next) {        length++;        Q.front->next = Q.front->next->next;        }        */     return length; }  Status Queue_Get_First_Element(LinkQueue Q, int *first_element) {     if (Q.front == Q.rear)         return ERROR;     first_element = &Q.front->next->data;     return OK; }  Status Queue_Enter(LinkQueue *Q, int new_element) {     QNode *new_node;     new_node = (QueuePtr)malloc(sizeof(QNode));     if (!new_node)         return OVERFLOW;     new_node->data = new_element;     new_node->next = NULL;     Q->rear->next = new_node;     Q->rear = new_node;      return OK; }  Status Queue_Delete(LinkQueue *Q, int *delete_element) {     QueuePtr pdel = NULL;     if (Q->front == Q->rear)         return ERROR;     //delete_element = Q->front->next->data;     *delete_element = Q->front->next->data;     pdel = Q->front->next;     Q->front->next = Q->front->next->next;     if (pdel == Q->rear)         Q->rear = Q->front;     free(pdel);     /*     if (Q->front->next == Q->rear) Q->rear = Q->front;     free(Q->front->next);     */     return OK; }  int main() {     Status function_status;     LinkQueue *linkqueue;     int new_element;     int delete_element;     int queue_length = 0;     int count = 0;      linkqueue = (LinkQueue*)malloc(sizeof(LinkQueue));     function_status = Queue_Init(linkqueue);     if (function_status == OK)         printf("\r\n初始化链队列成功！\r\n");     if(function_status == OVERFLOW) {         printf("\r\n初始化链队列失败！\r\n");          return -1;     //初始化失败是不是就应该直接退出呢，后面执行会出问题的     }     //queue_length = Queue_Length(*linkqueue);     queue_length = Queue_Length(linkqueue);     printf("\r\n初始化链队列成功后队列长度为：%d\r\n", queue_length);     function_status = Queue_Empty(linkqueue);     if (function_status == OK)         printf("\r\n链队列为空队列！\r\n");     if (function_status == ERROR)         printf("\r\n链队列为非空队列！\r\n");      queue_length = Queue_Length(linkqueue);     printf("\r\n空链队列长度为：%d\r\n", queue_length);      printf("\r\n请输入三个新的整形元素：");     for (count = 0; count <= 2; count++)     {         scanf("%d", &new_element);         Queue_Enter(linkqueue, new_element);     }     queue_length = Queue_Length(linkqueue);     printf("\r\n元素入队后队列长度为：%d\r\n", queue_length);      function_status = Queue_Delete(linkqueue, &delete_element);     if (function_status == OK)         printf("\r\n元素%d出队成功！\r\n", delete_element);     if (function_status == ERROR)         printf("\r\n元素出队失败！\r\n");      queue_length = Queue_Length(linkqueue);     printf("\r\n一个元素出队后队列长度为：%d\r\n", queue_length);     printf("\n");      Queue_Destroy(linkqueue);     return 0; }  供参考～


Question: 大一学生求解一道c语言题

第二个应该是要求几个数据一行，因此根据要求如果是5个数据一行，那么i % 5

题目要求都没有啊  第二个空应该是限制列数  没说几列啊

题目要求都没有啊  第二个空应该是限制列数  没说几列啊


Question: 冒泡排序代码

你的问题是什么呢，代码功能上没有什么问题吧 你可以把a[L]初始化下a[L] = {0}，然后数组前面空着没太理解(为了中间变量a[0]？)，没必要啊


Question:
#include
int main ()
{
    int max4 (int a,int b,int c,int d);
    int

这不叫函数嵌套，而是函数声明。max4函数在调用之前声明。C语言是不支持函数嵌套定义的。

C 语言没有函数嵌套


Question: 同样一个代码，为什么不同电脑运行结果不一样

fflush(stdin);  fflush对于stdin是未定义的行为，即不一定能将stdin刷新。 所以，建议楼主加一些打印看一下每次的输入是否进入到你想要的变量里， 因为有%c的输入，会导致'\n'匹配%c

给出测试数据啊。   输入的数据是什么， 预期的正确结果会是什么？

建议debug模式调试一下哦

引用 1 楼 user-4的回复:逗号是英文逗号吗 一样的，我直接复制过去的

逗号是英文逗号吗


Question: Qt Creator数据库的查和改

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10794527.html


Question: 帮我一下，谢谢

我觉得挺清楚了啊 输入，输出，if判断这三个基本语法就够了

引用 1 楼 qq_45798109的回复:如果不要求高精度的话，直接输入ab输出a+b 可以跟我提供一下具体过程吗，我自己编了好多次，系统一直把我的认为错

可以利用scanf的返回值来判断是否输入正确

如果不要求高精度的话，直接输入ab输出a+b

引用 3 楼 -?????` 的回复:可以跟我提供一下具体过程吗，我自己编了好多次，系统一直把我的认为错 贴代码 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------


Question: 要求用c语言

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

从给定数开始循环，找到就break

根据给定的整数，然后做判断，若该整数是奇数，则每次加2，若是偶数，则加1，然后在每次加2， 最后判断是否为质数，若是则为最近的质数

引用 5 楼 寻开心 的回复:属示意性伪代码   int m=sqrt(n)  n 可能大于 m*m, 此时n和m*m之间有素数了，不能保证到（m+1）*（m+1）之间一定有素数 例子：n=119时候；  m=10, 那么119到121之间是没有素数的，必须放大一个到12^2 = 144区间去找  sqrt(n-1) 是加的一个反向的保护 n=100的时候， 这个时候m=10， 而用sqrt（n-1) 的话，m就是9； 此时就可以去检查  100到121区间而不是100到144区间这个范围没意义呀   循环退出条件是循环变量是素数  而循环变量是素数 按照你给的规则 这个素数一定小于（n+1）^2 （n+1）^2 永远不可达 没必要操心 如果能优化下界 就比较有价值  优化上界 大可不必

引用 2 楼 寻开心 的回复:如果非要定范围，那么根据素数定理之一，对于正数n， 在 n^2 到 （n+1）^2 之间至少会有一个素数  对于本题，非要弄范围的话，如果给定的正整数是n， 从 n+1到(sqrt(n-1)+2)^2做循环就行了(sqrt(n-1)+2)^2 这个操作看不明白? 怎么理解的

int prime_one(int num) { 	if (num < 2) { 		return 0;// 不是质数 	} 	for (int i = 2; i < num; ++i) { 		if (0 == (num % i)) { 			return 0; 		} 	} 	return 1;// 质数 }  ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------


Question: 数据结构的错误代码

引用 1 楼 user-2的回复:#ifndef _SQLIST_H #define _SQLIST_H  把中间的空格给漏了哦 哈哈哈，懂了，感谢

两个#声明之间我空了一行的呀


Question: 填空


Question: 求解这三题，初学者瑟瑟发抖

引用 1 楼 Italink的回复:如果你不动手写一下，跳过这个从无到有的过程，可能永远都是初学者 写了，后面好多都说错。不会改

如果你不动手写一下，跳过这个从无到有的过程，可能永远都是初学者

引用 3 楼 user-4的回复:[quote=引用 2 楼 Agony_yd 的回复:] [quote=引用 1 楼 Italink的回复:]如果你不动手写一下，跳过这个从无到有的过程，可能永远都是初学者 写了，后面好多都说错。不会改[/quote] 那就尽量自己先改下，实在改不了把有错的代码发上来[/quote] 好的，知道了

我有点好奇18岁的6480天是怎么来的。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

代码多的话别用截图

引用 2 楼 Agony_yd 的回复:[quote=引用 1 楼 Italink的回复:]如果你不动手写一下，跳过这个从无到有的过程，可能永远都是初学者 写了，后面好多都说错。不会改[/quote] 那就尽量自己先改下，实在改不了把有错的代码发上来


Question: 指针变量

不知道是不是这个意思：  void fun(int* a) {     *a = 1;//这样改变     a = 1;//不是这样 }

这不是传回，编程语言中函数中无法修改形参，但可以通过形参，间接寻址，改变其地址中的内容，指针作为函数形参，是将一个变量的地址传入进来，在函数中可以通过这个地址，寻址，然后修改其内容，你无法修改，可能是因为你想修改的就是一个指针，打个比方，你如果想要修改int类型，那么应该传入int*类型，如果你想修改int*类型，那么你应该传入int**类型


Question: 求大神解答，如何如何将元素逆序存放后输出，代码rux

逆置只需要将数组首尾元素交换就行，或者直接倒着输出。  #include <stdio.h> #define MAX 10 void main() { 	int i, j, a[MAX], temp; 	for (i = 0; i < MAX; i++) 		scanf("%d", &a[i]); 	printf("\n"); 	for (i = 0; i < MAX/2; i++) { 		temp = a[i]; 		a[i] = a[MAX-i-1]; 		a[MAX - i - 1] = temp; 	} 	for (i = 0; i < MAX; i++) 		printf("%6d", a[i]); }

没问题啊，冒泡排序，楼主想问啥呢


Question: hdu2019的presentation error 是否有人愿意帮忙看看问题出在哪儿？感谢。

引用 7 楼 SuperDay的回复:[quote=引用 6 楼 weixin_45896922的回复:][quote=引用 5 楼 SuperDay的回复:]printf("\0"); 首先字符串里面不需要写出\0，它会自动加到字符串末尾的； 其次，printf一个空字符串是几个意思呢？ 您好，我想用printf（“\0”）表达不做处理的意思，请问这个用法是不规范吗？如果不规范的话，那应该如何表示不做处理呢？[/quote] 不做处理写一个空语句就可以了，就一个分号[/quote] 好的，我知道了！非常感谢！

引用 6 楼 weixin_45896922的回复:[quote=引用 5 楼 SuperDay的回复:]printf("\0"); 首先字符串里面不需要写出\0，它会自动加到字符串末尾的； 其次，printf一个空字符串是几个意思呢？ 您好，我想用printf（“\0”）表达不做处理的意思，请问这个用法是不规范吗？如果不规范的话，那应该如何表示不做处理呢？[/quote] 不做处理写一个空语句就可以了，就一个分号

引用 5 楼 SuperDay的回复:printf("\0"); 首先字符串里面不需要写出\0，它会自动加到字符串末尾的； 其次，printf一个空字符串是几个意思呢？ 您好，我想用printf（“\0”）表达不做处理的意思，请问这个用法是不规范吗？如果不规范的话，那应该如何表示不做处理呢？

引用 3 楼 user-2的回复:[quote=引用 2 楼 weixin_45896922 的回复:] 您好！我将最后一个else语句中的空格修改之后还是presentation error 请问我还有其他地方有问题吗？ 其他的我还没看。就看了一眼空格问题。将你改了之后的代码贴出来。不要拍照。不要截图。[/quote] 已解决问题！感谢！已以50分结帖，若未收到分数，还麻烦告诉我一声，我再进行结帖给分操作。

引用 2 楼 weixin_45896922 的回复:您好！我将最后一个else语句中的空格修改之后还是presentation error 请问我还有其他地方有问题吗？ 其他的我还没看。就看了一眼空格问题。将你改了之后的代码贴出来。不要拍照。不要截图。

引用 1 楼 user-2的回复:末尾不要空格。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------------------------- 您好！我将最后一个else语句中的空格修改之后还是presentation error 请问我还有其他地方有问题吗？


Question: c语言

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

#include<stdio.h> int main() {     int a[5][5]= {0};     for(int i=0; i<5; i++)     {   for(int j=0; j<5; j++)         {   if(i==j)                 a[i][j]=i+1;             else if(i>j)                 a[i][j]=1;             printf("%4d",a[i][j]);         }         printf("\n");     }     return 0; }

引用 1 楼 qq_45798109的回复:两层循环i,j    从1到5 i小于j    输出1 i=j          输出i i大于j    输出0 有这个的代码吗，不太懂

两层循环i,j    从1到5 i小于j    输出1 i=j          输出i i大于j    输出0


Question: 标识符规则

引用 1 楼 user-5的回复:写在博客哟，论坛是用来讨论问题的 APP找不到入口随便找个地方记下来先了

变量名不能随便起，要有意义，见其名知其人

3、标识符长度是由机器上的编译系统决定的，一般的限制为8字符（注：8字符长度限制是C89标准，C99标准已经扩充长度，其实大部分工业标准都更长）。 ===> C89的外部标识符长度的最低要求是6个字符，不是8个

都9102了 还C99

长度超出的部分被舍弃

写在博客哟，论坛是用来讨论问题的


Question: 字符串的计算

哪个位置看不懂？

引用 2 楼 mymtom的回复: #include <stdio.h> #include <string.h>  char * encode(const char *in, char *out) {     int  k, n;     int  c, c0;     const char *pin;     char *pout;      pin = in;     pout = out;      *pout = '\0';     c0 = -1;     k = 0;     do {         c = *(pin++);         if (c0 == c) {             k++;         } else {             if (k == 1) {                 sprintf(pout++, "%c", c0);             } else if (k > 1) {                 pout += sprintf(pout, "%d%c", k, c0);             }             c0 = c;             k = 1;         }     } while (c != '\0');     return  out; }  int main(int argc, char *argv[]) {     char out[160 + 1];     char in[80 + 1];     char *ptr;      fgets(in, sizeof(in), stdin);     ptr = in + strlen(in) - 1;     for (;ptr >= in && (*ptr == '\n' || *ptr == '\r'); ptr++)         *ptr = '\0';      printf("%s\n", encode(in, out));      return 0; }  谢谢，虽然有点看不懂，但还是要谢谢你

可以先动手写一下，出问题再问 刚好我之前做过类似的题目 仅供参考 https://blog.csdn.net/qq_40946921/article/details/81168111


Question: 求助

引用 1 楼 user-2的回复:写个比较简单的冒泡呗 冒泡不行，超时了，过不了

这个应该是让你重写快速排序或者堆排序 不让你用的那些函数就是题目要让你自己实现这些函数的意思啊

写个比较简单的冒泡呗


Question: 求a^b的个位数

#include <iostream> #include <cmath> using namespace std; int main(){     long long x,y,a;     cin>>x>>y;a=x;     for (int i=2;i<=y;i++){         a*=x;     }     cout<<a%10;     return 0; }  也可以这样： #include <iostream> #include <cmath> using namespace std; int main(){     int x,y,z;     cin>>x>>y;     z=pow(x,y);     cout<<z%10;     return 0; }

引用 10 楼 云起之端的回复:#include<stdio.h> int main() { 	int a,b,i,c; 	scanf("%d %d",&a,&b); 	for(i=2;i<=b;i++) 	{ 		a=a*a; 	} 	c=a%10; 	printf("%d",c); } 这个哪里不对呀。快速蜜  #include <stdio.h> #include <stdlib.h>  int main() {          int a,b,c,res,base;     scanf("%d%d",&a,&b);     c=a^b;     if(c&1){         res=1;   base=1;         while(c){             c>>=1;             base=base*2;             if(c&1)   res=res+base;         }     }     else {         res=0;  base=1;         while(c){             c>>=1;             base=base*2;             if(c&1)   res=res+base;         }     }     res=res%10;     printf("%d",res);     return 0; }

引用 10 楼 云起之端的回复:#include<stdio.h> int main() { 	int a,b,i,c; 	scanf("%d %d",&a,&b); 	for(i=2;i<=b;i++) 	{ 		a=a*a; 	} 	c=a%10; 	printf("%d",c); } #include <stdio.h> #include <stdlib.h>  int main() {          int a,b,c,res,base;     scanf("%d%d",&a,&b);     c=a^b;     if(c&1){         res=1;   base=1;         while(c){             c>>=1;             base=base*2;             if(c&1)   res=res+base;         }     }     else {         res=0;  base=1;         while(c){             c>>=1;             base=base*2;             if(c&1)   res=res+base;         }     }     res=res%10;     printf("%d",res);     return 0; }

没有测试的代码。 一个数相乘后个位数会有回归的现象，这里就是记录下来这些数在第几次产生个位回归现象。 #include <studio.h> int rem_val[10] = {1,1,4,4,2,1,1,4,4,2}; int val[10][4] = {{0,0,0,0},{1,1,1,1},{2,4,8,6},{3,9,7,1},{4,6,4,6},{5,5,5,5},{6,6,6,6},{7,9,3,1},{8,4,2,6},{9,1,9,1}}; int main(){ int base,pow; scanf(“%d%d”,&base,&pow); if(0==pow) printf(“1\n”); else if (0==base) printf(“0\n”); else printf(“%d\n”,val[base%10][pow%rem_val[base%10]]); return 0; }

引用 楼主 唐海华的回复:请仔细阅读右侧代码，根据方法内的提示，在Begin - End区域内进行代码补充，具体任务如下： 给定两个数a，b(0 < a&&b <=2^30)，求a^b的最后一位数。（即a的b次幂的个位数） 提示：这题有一定的难度，小心超时，或超出数字的存储极限。 效果如下： 输入：6667 4454。 输出：9。 测试说明 平台会对您的代码进行运行测试，如果实际输出与预期输出相同，则算通关。  我做了很久，但是好像错了 快速幂对10取模就可以了，时间复杂度O(log n)

给个思路，只取个位数进行计算，每次取得的数都去个位数做a^b的计算，本质是使用循环来做，没去循环的结果取余数

a,b=map(int,input().split()) c=a**b print(str(c)[-1])

只做最后一位的乘法就行了

一边乘一边对十取模进行b次操作就可以了

上面是通过计算得出的表，实际上这个表示死的。基本上那个表只有[1,2,4]这些值，因此你可以直接去最小公倍数4,然后对b取余，后面的只要最多四次幂，就可以得到结果了

稍微写了一下，没仔细测。。#include <iostream> using namespace std; int main() { 	int a = 0; 	int b = 0;  	//计算出个位数的循环情况 	int loopTable[10] = { 0 }; 	for (int i = 0; i < 10; i++) { 		int temp = i; 		while (temp != i || loopTable[i] == 0) { 			temp = (temp*i) % 10; 			loopTable[i]++; 		} 	} 	while (true) { 		std::cin >> a; 		std::cout << "获取a成功，值为：" << a << std::endl; 		std::cin >> b; 		std::cout << "获取b成功，值为：" << b << std::endl;  		//获取a的个位数 		int a_base = a % 10; 		if (b == 0 && a > 0) { 			std::cout << "计算结果为：" << 1 << std::endl; 		}  		//获取 		int b_base = b%loopTable[a_base]; 		if (b_base == 0) { 			b_base = loopTable[a_base]; 		} 		int nResult = (int)std::pow(a_base, b_base) % 10; 		std::cout << "计算结果为：" << nResult << std::endl; 		std::cout << "********************************"<< std::endl; 	} 	return 0; }

这个题目出得好。基本思想就是先用数学方法解出最佳公式，而不是拼命循环！

顺序求a的个数位的1次最多一直到9次的个数位就可以了，看看几次能循环 实际最多4次就够了 0,5都是固定1次 偶数的话：2468，奇数1379

对a^b取模10即所求结果。 1.若b很小，循环遍历b次，中间结果不断%10防止溢出。参考：同余定理。 2.若b很大，循环太慢了，参考：快速幂取模。

引用 11 楼 qq_45822392的回复:我这样为啥不可以 你只求了一次，比如c=625;你求一次后就是c=25; 你应要一个循环  #include <iostream> using namespace std; #include <math.h> int main(){      int a=3,b=4,x=0;      x=pow(a,b);          while(x>10)           x=x%10;     cout << "x的最后一位为:"<< x <<endl;     return 0; }

厉害👍！！！！！！！

我用#CSDN#这个app发现了有技术含量的博客，小伙伴们求同去《N^N最左边和最右边的数（数学）》, 一起来围观吧 https://blog.csdn.net/tb_youth/article/details/95582618?utm_source=app

指数运算至少针对个位数一定有周期

啊，好像不算太复杂：结果只与连乘计算的个位数相关，把a的个位存入过程量c，m=(m*c)%10;  另外，如果把c=0,1;的情况单独讨论，可以加速部分计算结果。


Question: 这道题的代码怎么写，求解答(c语言)。

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

引用 8 楼 Italink的回复:4n改成 4.0*n ，成功了，谢谢大佬

4n改成 4.0*n

#include<math.h>写上了。

引用 5 楼 Italink的回复:[quote=引用 3 楼 weixin_45501932的回复:][quote=引用 1 楼 Italink的回复:]你应该试着动手去写一下，出问题再来问哦 你应该试着动手去写一下，出问题再来问哦[/quote] #include<stdio.h> int main() {int n=5; float r=0.0035,p; p=1000*pow((1+r/4),4n); printf("%.2f",p); return 0;  }[/quote] pow函数位于math.h库中，include一下[/quote] pow函数那怎么写，一直出错

引用 3 楼 weixin_45501932的回复:[quote=引用 1 楼 Italink的回复:]你应该试着动手去写一下，出问题再来问哦 你应该试着动手去写一下，出问题再来问哦[/quote] #include<stdio.h> int main() {int n=5; float r=0.0035,p; p=1000*pow((1+r/4),4n); printf("%.2f",p); return 0;  }[/quote] pow函数位于math.h库中，include一下

引用 1 楼 Italink的回复:你应该试着动手去写一下，出问题再来问哦 你应该试着动手去写一下，出问题再来问哦[/quote] 编译不成功，不知道那错了。

引用 1 楼 Italink的回复:你应该试着动手去写一下，出问题再来问哦 你应该试着动手去写一下，出问题再来问哦[/quote] #include<stdio.h> int main() {int n=5; float r=0.0035,p; p=1000*pow((1+r/4),4n); printf("%.2f",p); return 0;  }

什么不会？是小学数学不会么？

你应该试着动手去写一下，出问题再来问哦


Question: 看不懂2级c题目解析，小白求大神解析一下，蟹蟹

引用 1 楼 自信男孩 的回复:要看到这个程序是做什么：s的元素值作为c的下表，并统计每个下表对应的个数。 如果了解到这一步，是不是就很好理解这个解析了  [quote=引用 1 楼 自信男孩 的回复:] 要看到这个程序是做什么：s的元素值作为c的下表，并统计每个下表对应的个数。 如果了解到这一步，是不是就很好理解这个解析了。谢谢您


Question: C语言求解

引用 3 楼 qq_45896193的回复:[quote=引用 1 楼 asd123214的回复:]表示输出字符宽度为10 字符宽度什么意思啊，和下面输出的结果有什么关系嘛？[/quote] 二楼老哥说得很对，自己打一遍试试就能很容易理解了

引用 1 楼 asd123214的回复:表示输出字符宽度为10 字符宽度什么意思啊，和下面输出的结果有什么关系嘛？

建议输入环境里编译运行一下，看看输出结果和不加10的区别。 另外，还可以把10改成-10，已经把10改成其他数字都尝试一下，看看输出结果有什么不同～

表示输出字符宽度为10


Question: 大佬可以帮我看看这段汇编语言什么意思吗

那是一个函数，根本看不到实现

引用 3 楼 user-2 的回复：这里面并没有要求必须输入数字啊，你怎么看出来的？read six numbers…

这里面并没有要求必须输入数字啊，你怎么看出来的？

有人可以救救我吗？

有木有人呀？？bdbd


有没有人会啊，太难了

引用 1 楼 user-1的回复:程序没有语法错误，但是建议main函数要返回int，并且在正常运行结束的时候返回0 一样的，提示运行程序错误


Question: 编写程序

对了，还要把他转换成2019.11.18    18:22:48这种形式

引用 2 楼 宇琳 的回复:是我方法用错了吗？我百度没搜到 搜索每个函数，可以空格加个c表明是c语言的，然后看每个函数的功能，再将其赋值到你的参数里，看对应的值，比如time_t seconds;seconds = time(NULL);头文件#include<time.h>

是我方法用错了吗？我百度没搜到

百度下自己验证下多简单的事


Question: 新生求指教

字符串b结尾缺少空字符\0

#include <stdio.h> #include<string.h>  int aeiuo(char a[50],char b[50]);  int main( ) {     char a[50],b[50] = {0};     gets(a);     aeiuo(a,b);     puts(b);     return 0; }  //int aeiuo(char a[50],char b[50]){ int aeiuo(char *a, char *b) {     int i=0,j=0;     while(a[i]!='\0'){         if(a[i]==97||a[i]==101||a[i]==105||a[i]==111||a[i]==117){             b[j]=a[i];             j++;         }         i++;     }     b[j] = '\0';   //main中对b初始化或加上这句都可以解决你的乱码问题      return 0; } 供参考～

b没有用NULL（'\0'）来结束字符串


Question: C语言求解

看输入还是输出，输入的话限制位数，不超过10位数，输出的话用于格式对其之类的，不足前补空格，超过的话不截断，全部输出

整数不足十位的话前面补空格，大于等于十位就正常显示

代表设置宽度  %10d就是最大只能输入十位整数


Question: 新人求助：看图，输出得不到我想要的数值，软件是visual studio 2013

引用 5 楼 Amin Zeng 的回复:@ scanf_s 用法和scanf 不一样  这个visual studio 2013，如果我用了scanf，他会给我报错，然后就没然后了。。用法不一样 所以你不能直接套用 scanf 的用法 要么 你重新用scanf  要么 你自己百度查清楚 scanf_s 要怎么用  而不是生搬硬套拿 scanf_s 当scanf

引用 7 楼 Amin Zeng 的回复:[quote=引用 6 楼 datoulaile123 的回复:] [quote=引用 5 楼 Amin Zeng 的回复:] @ scanf_s 用法和scanf 不一样  这个visual studio 2013，如果我用了scanf，他会给我报错，然后就没然后了。。 加句这个#pragma warning(disable:4996)，忽略这个错误[/quote]  试了下，加了这句话就可以用了，并且可以输出正确的结果。这个是什么原因呢？[/quote] VS版本问题吧，我也不是太清楚，我写的这个是忽略4996的错误。让scanf可以使用，不然会报unsafe什么的错误，而且你的代码运行应该也是没有问题的，我也是2013，不知道为什么你的有错

引用 6 楼 datoulaile123 的回复:[quote=引用 5 楼 Amin Zeng 的回复:] @ scanf_s 用法和scanf 不一样  这个visual studio 2013，如果我用了scanf，他会给我报错，然后就没然后了。。 加句这个#pragma warning(disable:4996)，忽略这个错误[/quote]  试了下，加了这句话就可以用了，并且可以输出正确的结果。这个是什么原因呢？

引用 5 楼 Amin Zeng 的回复:@ scanf_s 用法和scanf 不一样  这个visual studio 2013，如果我用了scanf，他会给我报错，然后就没然后了。。 加句这个#pragma warning(disable:4996)，忽略这个错误

引用 2 楼 Amin Zeng 的回复:尝试修改了，但是还是老样子。这题需要求输入字符，它在字母表中前一字符和后一字符，并输出他们的ASCII值scanf_s 用法和scanf 不一样

引用 1 楼 寻开心 的回复:int c1， c2 改成 char类型这个没问题 printf 里面 都一样

int c1， c2 改成 char类型


Question: C语言小白    求解

引用 1 楼 user-3的回复:只要求出来就行了吗？ n是什么数据范围的？ n是整数范围，如果距离一样的话，输出脚小的那个素数

/*************************************************** Function: 检查num是否是质数 Date: 2019-10-18 22:30:35 ***************************************************/ int prime_two(int num) { 	if (num < 2) { 		return 0;// 不是质数 	} 	int square_root = (int)sqrt(num);// 头文件math.h 	int i; 	for (i = 2; i <= square_root; ++i) { 		if (num % i == 0) { 			return 0;// 不是质数 		} 	} 	return 1;// 质数 }   /* Function: 返回斐波那契数列第n项           循环实现 Date: 2019-11-19 13:47:58 */ int fibonacci_one(int n) { 	if (n == 0) { 		return 0; 	} 	int f1, f2, f3, i; 	f1 = f2 = 0; 	f3 = 1; 	for (i = 1; i < n; ++i) { 		f1 = f2; 		f2 = f3; 		f3 = f1 + f2; 	} 	return f3; }  ------------------------------------------------------------------ 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------------------------------------

输入n  计算 f(n)  //  这个可以用一个循环来实现，不要用递归  从f(n)开始向两边（距离最近）找素数呗 ( 没准儿可以找出一对儿呢)  自己写代码，有了问题再问

只要求出来就行了吗？ n是什么数据范围的？


Question: 求帮忙

判断是a[i] 与new比较；（建议用其他变量名字代替new) 接下来是从后面开始，依次向后覆盖～一遍腾出a[i]的位置。即new要赋值的位置。  a[i-1]；

a[i] a[i-1]


Question: 求求大佬给写个C语言程序

引用 1 楼 寻开心的回复:自己写， 给个示范随机数例子，  遇到问题再提问： #include<stdlib.h> #include <time.h>  void main() { 	srand(time(NULL)); 	int n = rand()%10000; 	int m = rand()%100; 	int l = n/m; 	int k = n%m; 	printf("%d %d %d %d", n, m, l, k); } 自己做出来了，嘿嘿谢谢大佬！

引用 3 楼 datoulaile123的回复:#include<stdlib.h> #include <time.h> int main(void) { 	int x = 0, y = 0; 	char z; 	int iRand1, iRand2; 	int num1 = 0,num2 = 0; 	printf("输入被除数和除数随机数最大值,以空格隔开："); 	scanf("%d %d", &num1,&num2); 	while (true) 	{ 		srand(time(NULL)); 		iRand1 = rand()%num1 + 1; 		iRand2 = rand()%num2 + 1;  		printf("产生的被除数为：%d，除数为：%d\n", iRand1, iRand2); 		printf("请同学输入商和余数，以空格隔开："); 		scanf("%d %d",&x,&y);  		if ((iRand1 / iRand2) != x || (iRand1%iRand2) != y) 		{ 			printf("除数错误，正确答案：商 %d,余数 %d\n", iRand1 / iRand2, iRand1%iRand2); 		} 		else 		{ 			printf("回答正确\n"); 		} 		printf("输入其他键继续，q键退出\n"); 		getchar();//读取回车键的\n  		z = getchar(); 		if ('q' == z || 'Q' == z) 		{ 			break; 		} 	} 	return 0; } #include <stdio.h> #include <stdlib.h> #include <time.h>  main()  {     int i,k;    srand( (unsigned)time( NULL ) );     { int n1,n2,x,y,j;     n1=rand()%100;     n2=rand()%100+1;     if (n1>=n2)     {printf("被除数是：%d\n",n1);      printf("  除数是：%d\n",n2);     }     else     {j=n1;      n1=n2;      n2=j;      printf("被除数是：%d\n",n1);      printf("  除数是：%d\n",n2);     }     printf("    商是：");     scanf("%d",&x);     printf("  余数是：");     scanf("%d",&y);     if ((n1/n2)!=x||(n1%n2)!=y)     {         printf("输入错误，正确答案：商：%d，余数：%d\n ",n1/n2,n1%n2);     }     else      {         printf("回答正确！\n");      } 参考大佬的做出来了，谢谢谢谢！

引用 4 楼 datoulaile123的回复:[quote=引用 2 楼 qq_45895629 的回复:] [quote=引用 1 楼 寻开心的回复:]自己写， 给个示范随机数例子，  遇到问题再提问： #include<stdlib.h> #include <time.h>  void main() { 	srand(time(NULL)); 	int n = rand()%10000; 	int m = rand()%100; 	int l = n/m; 	int k = n%m; 	printf("%d %d %d %d", n, m, l, k); } 好狠我自己试试[/quote] 额，正好发完代码发现 你发了自己试试。。[/quote] 哈哈谢谢谢谢大佬，大佬写的很好我在努力学

你的问题是什么呢，或者你的程序在运行过程中出了什么问题。

引用 2 楼 qq_45895629 的回复:[quote=引用 1 楼 寻开心的回复:]自己写， 给个示范随机数例子，  遇到问题再提问： #include<stdlib.h> #include <time.h>  void main() { 	srand(time(NULL)); 	int n = rand()%10000; 	int m = rand()%100; 	int l = n/m; 	int k = n%m; 	printf("%d %d %d %d", n, m, l, k); } 好狠我自己试试[/quote] 额，正好发完代码发现 你发了自己试试。。

引用 1 楼 寻开心的回复:自己写， 给个示范随机数例子，  遇到问题再提问： #include<stdlib.h> #include <time.h>  void main() { 	srand(time(NULL)); 	int n = rand()%10000; 	int m = rand()%100; 	int l = n/m; 	int k = n%m; 	printf("%d %d %d %d", n, m, l, k); } 好狠我自己试试


Question: 我这个代码为什么输入两个数后还得打个等于号才能得出结果？？？

引用 2 楼 寻开心的回复:格式化输入的问题， 把scanf那句里面的\n去掉吧 Ok搞定了

scanf("%d%d\n",&a,&b); 改一下：  scanf("%d%d",&a,&b);

格式化输入的问题， 把scanf那句里面的\n去掉吧

没理解你的意思 你把等号删掉后b和sum是连在一起的。。。 而且你得出sum之后不输出你求他干嘛


Question: 为什么要这样编，刚学C语言，不明白

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

引用 4 楼 user-2的回复: i 行数 空格数 星号数 1  1     4      1 2  2     3      3 3  3     2      5 4  4     1      7 找规律。空格个数和i什么关系？星号个数和i什么关系？  好我明白了，谢谢您耐心解答

那你认为 j 应该从多少开始？为什么？

引用 1 楼 user-2的回复:第 1 个循环是输出 5 层。 第 2 个循环是输出空格。 第 3 个循环是输出星号。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------------------------- j，k那两个循环看不懂，j，k为什么分别从0，1开始，循环条件也不懂


<?xml version="1.0" encoding="GBK"?> ===> <?xml version="1.0" encoding="GB18030"?>  貌似libxml2对GBK支持不完整

<?xml version="1.0" encoding="GBK"?> 改成UTF-8试试

李某的那个某系统不认识吧。 怎么是个长方形啊？


Question: c语言

怎么赶脚楼主的代码是只认为abcd是一位正整数呢？ 原题描述可是abcd是整数， 那就包括正数负数和0，也可以多位吧

输入直接用格式符“%d/%d+%d/%d”就行，能成功输入


Question: acm期末考试之分等级


Question: 有关时间复杂度


Question: 我不懂这道题怎么使用并查集

楼主可以参考一下这个帖子 https://blog.csdn.net/qq_41593380/article/details/81146850

大体思路是：把所有连通在一起的城市都打上相同的标记，也就是第一次开始有连通的城市。 最后统计有多少给没有连通的城市，以及不同的连通区的数量就可以了（因为第一个连通的城市本身也是-1， 也被当做未连通的城市，所以无需单独的统计）

使用并查集可以得到集合的总数，总数-1就是需要的最少路径。

无向图的连通分量？


Question: C语言 OJ题

猜测最可能的原因是求最大公因数的时候两数相乘爆了。

可能数字精度太小，乘积之后就爆炸了

你是要我们猜你写的什么代码，顺便猜一下你哪里错了吗


Question: C语言问题，为什么第三个循环嵌套里计算只执行了一次？


Question: 这程序哪错了


Question: 不知道出现什么问题，逆置的结果没有出来，还是原来的链表

h=(linklist *)malloc(sizeof(linklist)); p=h->next; h->next=null;	 变量h没有初始化。 另外，你没有释放内存，产生泄露。


Question: 怎么算，可以详细的讲解一下吗

先执行循环体一次，b＝b-a＝7,a＝3   whlie时b--，b＝6，不符合小于0跳出循环，选c


Question: 这道题连通是不是指能在三个城市间插入其他城市?那么答案不止一个，是输出最短时间吗?

应该是想输出最短时间，找出两两之间的最短时间，取其中的最短的两条


Question: 求助数据结构大作业


Question: 牛顿迭代公式


Question: C语言，求大佬

引用 1 楼 不闻窗外事的回复:你这个输出样例错了吧，不应该是3 2 1吗，这个太简单了，自己写一下吧 写了。一直显示答案错误，不知道错在哪(⊙o⊙)！

动手写一下，出问题在问

你这个输出样例错了吧，不应该是3 2 1吗，这个太简单了，自己写一下吧


Question: 输入一行字符，统计其中英文字符数字字符空格和其他字符的个数

# include <stdio.h> #include<ctype.h> int main(void) {     int i,number=0,english=0,space=0,other=0;     char a[11];     printf("输入10个字符:");     gets(a);      for(i=0;i<11;i++)     {         if(isalnum(a[i])) number++;         else if(isalpha(a[i])) english++;         else if(isspace(a[i])) space++;         else if(isalnum(a[i])==0&&isalpha(a[i])==0&&isspace(a[i])==0) other++;     }     printf("英文字符共%d个\n数字字符共%d个\n空格字符共%d个\n其他字符共%d个",english,number,space,other);     return 0; }

for(i=0;a[i]!='\0';i++)     {         scanf("%s",a[i]);     } 你能告诉我这是啥操作吗，如果你要输入一个字符串，就不需要for循环，如果你要输入字符，就用%c，不懂你这是在干嘛


Question: 新手学C语言

引用 3 楼 liups 的回复:传统的方式是OLE方式调用word，也有可能是相应的三方控件（dll）来处理 https://blog.csdn.net/witkin/article/details/4752796

传统的方式是OLE方式调用word，也有可能是相应的三方控件（dll）来处理

引用 1 楼 user-3的回复:怎么读取文件，与编译器无关吧。 不好意思，我的意思是怎么怎么写代码可以对word文件中的内容进行处理。

怎么读取文件，与编译器无关吧。


Question: void create(&complex c，float x，float y）中的&

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

如楼上所述，&应该在后面表示对象的引用，引用的好处嘛，主要两点：一是Create函数中针对C的修改结果会得以保存到函数调用结束，如果不是引用，那么Create函数对C的修改在函数调用结束后不可见，二是可以避免了不必要的对象拷贝了，速度快，占用内存小~。

没见过这种写法唉，都是使用Complex &这样的写法表示引用


Question: 刚刚出炉的新手c程序设计疑惑请教与交流。

谢谢帮助我的各位，完美通过的代码见下面： #include<stdio.h> #include<math.h> int main() { 	double r,h,l,s,sq,v,vz; 	double pai=3.14159265; 	printf("请输入圆半径r,圆柱高h:"); 	scanf_s("%lf,%lf",&r,&h); 	l=2*pai*r; 	s=pai*pow(r,2); 	sq=4*pai*pow(r,2); 	v=4/3*pai*pow(r,3); 	vz=pai*pow(r,2)*h; 	printf("l=%7.2lf\n",l); 	printf("s=%7.2lf\n",s); 	printf("sq=%7.2lf\n",sq); 	printf("v=%7.2lf\n",v); 	printf("vz=%7.2lf\n",vz); 	return 0; }

输入的时候注意逗号,因为scanf_s中要求有逗号的.也要注意逗号的中英文。[/quote] 代码问题的原因是输入时scanf_s不能用%f而要用%lf，而printf是没关系的，会自动适应成双精度的[/quote]  按照您以及上面各位的建议，完美解决。 谢谢各位了。

引用 6 楼 自信男孩 的回复:#include<stdio.h> #include<math.h>  int main() {     double r,h,l,s,sq,v,vz;     double pai=3.14159265;      printf("请输入圆半径r,圆柱高h:");     scanf_s("%f,%f",&r,&h);     l = 2 * pai * r;     s = pai * pow(r, 2);     sq = 4 * pai * pow(r, 2);     v = 4.0/ 3 *pai * pow(r,3);     vz = pai * pow(r,2) * h;      printf("l=%6.2lf\n",l);     printf("s=%6.2lf\n",s);     printf("sq=%6.2lf\n",sq);     printf("v=%6.2lf\n",v);     printf("vz=%6.2lf\n",vz);      return 0; } 供参考～  输入的时候注意逗号,因为scanf_s中要求有逗号的.也要注意逗号的中英文。 代码问题的原因是输入时scanf_s不能用%f而要用%lf，而printf是没关系的，会自动适应成双精度的

scanf_s("%f,%f\n",&r,&h,3);改成scanf_s("%lf,%lf", &r, &h);double类型输入不能用%f（不是很明白你在最后写个,3是什么意思）

不对就是不对，肯定要改，我有什么好试的？你的程序不止一个问题，知道吗？就像某楼所说的，要学会调试程序。我早都会了，我会了不等于你会了，你会出什么问题不等于我就会出什么问题

给初学者的建议， 学会debug：     1 对所有的输入数据都要保持怀疑的心态        所有输入的数据，不管是键盘读取的还是文件提取的， 都要先输出一次， 对比是否有误     2 对于长一点的算法， 分出步骤， 对每个步骤的输入和输出数据，也要检查一遍        确保上一阶段的数据是对的，再进行下一阶段的工作     3 断点调试技巧远比语法重要  在你的scanf后面加一句 printf("r:%ld h:%lf\n", r, h); 看看你输入的数据是否是你要的

引用 4 楼 SuperDay 的回复:double的输出格式是%lf，float才是%f  谢谢你的回复，但还是不对。您如果不嫌麻烦，可以在vs2013或更高版本的试一下。  想弄懂这个对我来说有点难。只好用vs2010，学习谭浩强老师的第五版《c程序设计》了。

double的输出格式是%lf，float才是%f

引用 2 楼 不闻窗外事 的回复:scanf_s("%f,%f\n",&r,&h,3);最好不要在scanf中使用\n，很容易让你吐血  你好！去掉\n后倒是可以运行，但明显错误。

我的编译环境是microsoft visual studio ultimate 2013+win10  #include<stdio.h> #include<math.h> int main() { 	double r,h,l,s,sq,v,vz; 	double pai=3.14159265; 	printf("请输入圆半径r,圆柱高h:"); 	scanf_s("%f,%f\n",&r,&h,3); 	l=2*pai*r; 	s=pai*pow(r,2); 	sq=4*pai*pow(r,2); 	v=4/3*pai*pow(r,3); 	vz=pai*pow(r,2)*h; 	printf("l=%6.2f\n",l); 	printf("s=%6.2f\n",s); 	printf("sq=%6.2f\n",sq); 	printf("v=%6.2f\n",v); 	printf("vz=%6.2f\n",vz); 	return 0; }  请教一下热心网友：调式出现问题。输入数据后没有任何反应。实在是郁闷。


Question: C语言题目

对撞指针的典型运用，进一步运用在快排的递归中。建议去查快排，可以直接查到你这个问题的解。或者去学习一下什么是对撞指针。

什么叫数组有元素，但是你这个分为两个子集，可以去查一下快速排序，就是这玩意

求大神帮忙解答一下啊


Question: C语言输出所有的水仙花数，为什么这个代码输不出来

for后要求一次abc a=n/100     b=（n-100a）/10      c=n％10

搞懂了 犯了个很低级的错误

你这程序也太秀了，程序自己把a,b,c给推断出来了

如果改成这个呢？ if（n==a*a*a+b*b*b+c*c*c&&n==a*100+b*10+c） 呢？

if的括号都没捋清楚


Question: 求和

// 类似这个： // 来自：http://c.biancheng.net/view/497.html #include <stdio.h> #include <stdlib.h> #include <math.h> int main(){     float s=1;     float pi=0;     float i=1.0;     float n=1.0;     while(fabs(i)>=1e-6){         pi+=i;         n=n+2;         // 这里设计的很巧妙，每次正负号都不一样          s=-s;          i=s/n;     }     pi=4*pi;     printf("pi的值为：%.6f\n",pi);          return 0; }


Question: C语言如何查看计数函数是否在计数时包含了空字符

printf+debug


Question: 求答案

需要一个while循环 一个sum+=item item=...


Question: 芯片

先明确下芯片吧

这个得问FAE，看芯片手册


Question: alpha为0表示完全透明还是不透明？

引用 3 楼 六道佩恩的回复:[quote=引用 2 楼 寻开心 的回复:] alpha当是不透明度理解。 0是全透，1是完全不透 256个值啊亲[/quote] 有些时候会用[0,1]间的浮点数，我遇到的alpha有些地方0是全透明，有些又是不透明，应该就是你说的那种，具体理解和实现有些不同吧，先写个程序测试一下

引用 5 楼 Italink 的回复:[quote=引用 3 楼 六道佩恩的回复:][quote=引用 2 楼 寻开心 的回复:] alpha当是不透明度理解。 0是全透，1是完全不透 256个值啊亲[/quote] 有些时候会用[0,1]间的浮点数，我遇到的alpha有些地方0是全透明，有些又是不透明，应该就是你说的那种，具体理解和实现有些不同吧，先写个程序测试一下[/quote] 既然你两种情况都遇到过，那就OK了，说明两种情况都是存在的，没有完全统一

引用 1 楼 proorck2019 的回复:你自己编个程序验证一下。 已经说了呀，win32中0是不透明，但百度的结果大部分都是为完全透明，我想这可能是不同的实现方案，不一定是统一的

引用 2 楼 寻开心 的回复:alpha当是不透明度理解。 0是全透，1是完全不透 256个值啊亲

alpha当是不透明度理解。 0是全透，1是完全不透

你自己编个程序验证一下。


Question: 这个判断奇偶数的程序有问题吗？

引用 1 楼 子衿兄的回复:printf的格式化输出 中有一个%d，但是你没有传一个变量给它，那它能输出什么呢。  噢噢噢对，傻了，怪不得

printf("%为偶数\n",a);  printf("%为奇数\n",a);


Question: 编程题求解决

自己写吧，这样才有进步 实在不想写的话，可以悄悄告诉你：网上可以搜到很多现成的


Question: 新手求指教

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

好滴，谢谢大佬 看来我的基本功太差了，我的好好学学再，谢谢啦

#include <stdio.h> #include <stdlib.h>  typedef struct { 	int weight; 	int parent, lchild, rchild; }HTNode, *HuffmanTree;  void InitTree(HuffmanTree &HT, int n)//初始化 { 	int m, i; 	if (n <= 1)  return; 	m = 2 * n - 1; 	memset(HT, 0, sizeof(HuffmanTree)); 	for (i = 1; i <= m; i++) 	{ 		HT[i].parent = 0; 		HT[i].lchild = 0; 		HT[i].rchild = 0; 		HT[i].weight = 0; 	} 	for (i = 1; i <= n; i++) 		scanf("%d", &HT[i].weight); }  void Select(HuffmanTree &HT, int n, int &s1, int &s2)//选选出数组中的两个最小数 { 	int i = 0; 	int min1 = HT[1].weight; 	int min2 = HT[1].weight; 	for (i = 1; i <= n; i++) 	{ 		if (HT[i].weight < min1) 			min1 = HT[i].weight; 		s1 = i; 	} 	for (i = 1; i <= n; i++) 	{ 		if (HT[i].weight < min2&&min2 != min1) 			min2 = HT[i].weight; 		s2 = i; 	}  }  void CreatHuffmanTree(HuffmanTree &HT, int n,int m)//创建哈夫曼树 { 	int s1 = 0, s2 = 0; 	for (int i = 1; i <= n; i++) 		scanf("%d", HT[i].weight); 	for (int i = n + 1; i <= m; i++) 	{ 		Select(HT, i - 1, s1, s2);//选择出HT中的两个最小值 		HT[s1].parent = HT[s2].parent = i; 		HT[i].lchild = s1; HT[i].rchild = s2; 		HT[i].weight = HT[s1].weight + HT[s2].weight; 	}  }  void PrintHuffmanTree(HuffmanTree &HT, int m) { 	int i = 0; 	for (i = 1; i <= m; i++) 	{ 		printf("节点序号为:\n", i); 		printf("权重:\n", HT[i].weight); 		printf("parent:\n", HT[i].parent); 		printf("lchild:\n", HT[i].lchild); 		printf("rchild:\n", HT[i].rchild); 	} } int main() { 	int n; 	int i = 0, m = 0; 	scanf("%d", &n); 	printf("请输入哈夫曼树中的叶子结点的个数:\n", n); 	m = 2 * n - 1; 	HuffmanTree HT; 	//HT = (int *)malloc(siezof()); 	InitTree(HT,n); 	printf("开始创建哈夫曼树\n"); 	for (i = 0; i < n;i++) 	{ 		printf("请输入每个叶子结点的权值", HT[i].weight); 	} 	 	CreatHuffmanTree(HT, n,m); 	PrintHuffmanTree(HT, n); 	system("pause"); 	return 0; } 把你的错改了，功能没帮你看 说实话代码是太乱了，m,n,i这些个参数都不知道哪个是哪个，各种未初始化就使用，函数中没有定义下面代码就在用（不是在main函数里申明了，其它函数就能直接用的，除非是申明成全局变量或者类成员函数)，还有要输出的入参申明加上&，不然函数结束后是无法带出的，然后参数命名自己规范下，除了for循环这些用的用i，j这些，其他的不要用m，n，不然代码长了自己都不知道参数是做什么的，比如把你的n是节点数量你就写成int iNode_Count，让自己的代码更具有可读性

我的报错，全在定义函数那一行，但是我不知道怎么改了

刚刚学数据结构 可能c也不太好

兄嘚！我复制你的代码进编译器，发现红红的，你是刚学c语言还是刚学数据结构啊？


Question: C语言畅通工程代码疑惑

百度一下并查集，然后这个代码就好理解了，父亲为 -1 的是未联通的，反之就联通了。


Question: 请问大大们 以文字游戏为主体 将多个小游戏链接应当如何实现？

把游戏作为普通的函数，多文件项目而已。游戏中不要有exit退出函数，而要用return语句返回主循环。

多文件编译：https://blog.csdn.net/walle2018/article/details/79765330

引用 4 楼 與蘤舊縐 的回复:[quote=引用 2 楼 與蘤舊縐 的回复:] 搞个简单的，主游戏的主循环内搞个判定进入子游戏的判断（你可以拿全局变量控制），然后子游戏用自己的主循环，卡住主游戏的主循环，然后等你玩够了把变量一改，退出子游戏的主循环，又回到了主游戏的主循环 子游戏的主循环需要一个退出循环的判断，依旧是刚才的变量[/quote] 因为有几个小游戏 所以想各自是一个源文件，以文字游戏为主体，某一个case 清屏运行其他的小游戏再回到文字游戏。。。 刚开始学C，麻烦大大耐心赐教了- -

引用 1 楼 ooolinux 的回复:把独立贪吃蛇游戏的main函数改个名。 我打算把每个游戏都写到一个源文件里，比如文字游戏是一个源文件，贪吃蛇是一个源文件，再放到一个project 在文字游戏的某一个case调用贪吃蛇的函数，请问怎么操作呀，是需要写头文件么？刚开始学习C- - 麻烦大大了

引用 2 楼 與蘤舊縐 的回复:搞个简单的，主游戏的主循环内搞个判定进入子游戏的判断（你可以拿全局变量控制），然后子游戏用自己的主循环，卡住主游戏的主循环，然后等你玩够了把变量一改，退出子游戏的主循环，又回到了主游戏的主循环 子游戏的主循环需要一个退出循环的判断，依旧是刚才的变量

把独立贪吃蛇游戏的main函数改个名。


Question: C语言的简单问题(大佬们就孩子吧)

scanf遇到空格就结束了，gets遇到换行符结束


Question: C语言金字塔

兄弟，把代码贴出来，这样谁知道是啥玩意


Question: 输入一串字符然后倒叙输出C语言

a已经被i-1赋值了。为什么还要多一步printf赋值呢。

贴代码。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

运行结果是什么样的呢？


Question: 三天打鱼两天晒网问题求助！有一组测试用例总是通不过。程序如下：

已经成功了非常感谢!(之前没有调试好，错误是在days没有初始化

而且还发现我其实用了continue 之后没有必要引入flag了！（再次蟹蟹！

#include <stdio.h>  #define BASE_YEAR 1990  int leapYear(int year) { 	if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) { 		return 1;// 闰年 	} 	return 0;// 平年 }  int daysFromBaseYear(int year, int month, int day) { 	// 平年 	int daysOfMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 	int daysOfYear = 365; 	int i = 0; 	int sum = 0;  	for (i = BASE_YEAR; i < year; ++i) { 		sum += daysOfYear; 		if (1 == leapYear(i)) { 			++sum; 		} 	}  	for (i = 0; i < month - 1; ++i) { 		sum += daysOfMonth[i]; 	} 	if (month > 2 && 1 == leapYear(year)) { 		++sum; 	}  	return sum + day;// 返回从BASE_YEAR.1.1（第1天）开始，今天是第多少天 }  int main(void) { 	int daysOfMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 	int year, month, day; 	int T; 	scanf("%d", &T); 	while ((T--) > 0) { 		scanf("%d %d %d", &year, &month, &day);  		if (year < BASE_YEAR) { 			printf("year is error!\n"); 			continue; 		} 		if (month < 1 || month > 12) { 			printf("month is error!\n"); 			continue; 		} 		int dayOfMon = daysOfMonth[month - 1]; 		if (2 == month && 1 == leapYear(year)) { 			// 二月并且是闰年，加1天 			++dayOfMon; 		} 		if (day < 1 || day > dayOfMon) { 			printf("Day is error!\n"); 			continue; 		}  		int days = daysFromBaseYear(year, month, day) - 1;// 减1是为了后面取余  		if (days % 5 >= 0 && days % 5 <= 2) { 			printf("He was fishing on %d.%d.%d\n", year, month, day); 		} else { 			printf("He was basking on %d.%d.%d\n", year, month, day); 		} 	} 	return 0; }  ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

哪一组测试用例不能通过？ ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------


Question: 报错

引用 3 楼 『回眸』~浅笑° 的回复:[quote=引用 2 楼 牧牛童子的回复:]我用的是 QT，也可以跑呢。 我用visual studio 也跑不起来[/quote]  呵，QT是  可以  跑的呢。

代码实现的功能有点扯。。。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

引用 2 楼 牧牛童子的回复:我用的是 QT，也可以跑呢。 我用visual studio 也跑不起来

我用的是 QT，也可以跑呢。

怎么看着像是 调试环境的问题呢？感觉与代码无关


Question: c语言怎么让局部变量调用另一个局部变量

题目没有看懂， 推荐一本书《C语言和指针》

你需要一个指针

什么叫局部变量结束后返回，局部变量没有所谓的调用，调用是函数的概念，你能理解你说的第一句话是什么意思吗


这是短路或 在英语里，or有“否则”的意思 左边是“否”则执行右边

应该是为什么没有加一吧  这个应该是预判， || 的两侧只要有一个是1 就提前返回了,  所以根本没有执行++a的操作  如果a=-1，你再试试


Question: 求大佬帮忙看看哪里错了，原谅我菜，请别喷我，运行正确但显示编译错误，

#include <stdio.h> int main() { 	 	char c[81]; 	int i, j; 	while (gets_s(c) != NULL)//-----------改成get_s()函数----------- 	{ 		for (i = 0; c[i] != '\0'; i++) 		{ 			if (c[i] == '*' && (c[i + 1] >= 'a'&&c[i + 1] <= 'z' || c[i + 1] >= 'A'&&c[i + 1] <= 'Z')) 			{ 				break; 			} 		} 		if (c[i] != '\0')//------把c[i]=='\0'改为c[i]!='\0'-------- 		{ 			for (j = i + 1; c[j] != '\0'; j++) 			{ 				printf("%c", c[j]); 			} 		} 		printf("\n"); 	} 	 	return 0; } 以下是VS2015运行结果  对于gets()函数的使用，请参考《scanf()、gets()和getline()读取输入》

我用的啊哈C

还是错误

编译都没过，你拿什么运行的呀

运行正确 但 显示编译错误  #include <stdio.h> #include <string.h> int main() { 	char c[81]; 	int i, j; 	while (gets(c) != NULL) 	{ 		char* str = c;; 		while (*str == '*') str++; 		printf("%s", str); 	} 	return 0; }

运行正确但显示编译错误 别逗我了

应该是自己电脑上的编译器可以运行，但是做题系统上的编译器编译不通过 他的码多了个分号char* str = c;; 你们系统上的编译器莫不是VS的那个，那样的话gets就被打死了

大佬你那个码还是运行正确但交上去显示编译错误


Question: 有大佬能教我这个Windows的定时器怎么用吗

引用 1 楼 寻开心的回复:SetTimer之后，还要响应 WM_TIMER消息啊   SetTimer只是启动了定时器， 你还缺少对定时器响应的代码 想问一下在Windows上写c用vc++6.0好吗还是用别的呢

引用 1 楼 寻开心的回复:SetTimer之后，还要响应 WM_TIMER消息啊   SetTimer只是启动了定时器， 你还缺少对定时器响应的代码 嗯嗯我弄好了，在里面用switch分支

用VC没有问题， 只是 VC 6太老了。 VS2017 或者 2019什么的


Question: 关于文件结尾的问题，求解决？

引用 1 楼 user-1 的回复：贴代码  顺便随手猜一下 你打开文件没有加b 用文本模式打开文件 大概改成 "rb" 就完事了代码明天粘贴

引用 1 楼 user-1 的回复：贴代码  顺便随手猜一下 你打开文件没有加b 用文本模式打开文件 大概改成 "rb" 就完事了没有用rb


Question: 求助大佬

引用 12 楼 proorck2019的回复:用gets不好吗？？ 想了解getchar的用法

用gets不好吗？？

懂了，多谢大佬的详细回答！非常感谢！

你的代码 for(i=0; getchar()!='\n'; i++) {   a[i] = getchar(); } 中，调用了两次getchar()，所以a[i]只能读出一半的输入，如下图所示。  修改的方法 #include <stdio.h> #include <string.h> int main() { 	char a[100] = { 0 };//-------给数组a赋初值，这样strlen()函数就可以得到数组a的实际长度了-------- 	int i; 	char temp;//--------使用temp保存读入的字符----------- 	for (i = 0; (temp=getchar()) != '\n'; i++)//-------使用temp------- 	{ 		a[i] = temp;//-------代码中只调用了一次getchar()函数，保证所有的输入都可以保存在数组a中---- 	} 	for (i = 0; i < strlen(a); i++) 	{ 		putchar(a[i]); 	} 	return 0; } 以下是VS2015的运行结果  对于getchar()函数的使用方法，请参考《C++中getchar()的使用方法》 希望能够帮到你！

还是有点迷惑，我写的第一个for循环到底怎么执行的，比如我输入asd再按回车？

引用 7 楼 user-4的回复:[quote=引用 6 楼 weixin_40290083的回复:]&i<100的目的是为了防止数组越界 &&才对 凑齐10个字[/quote] 是的是的，手机输入太不方便

引用 6 楼 weixin_40290083的回复:&i<100的目的是为了防止数组越界 &&才对 凑齐10个字

&i<100的目的是为了防止数组越界

char ch ch=getchar（） for(i=0;ch != '\n' & i < 100;i++){   a[i] =ch   ch=getchar() } a[i]='\0'  每行的行尾自己加上；，手机切换有点烦

按你的代码a数组只有输入字符的一部分

引用 1 楼 user-4的回复:没什么不对 就是行为比较奇葩 比如 必须是奇数次输入回车才能退出循环  比如 输入2个字符第二个字符才读取到数组里面  不过这都是正常现象 大佬，我是想输入一些字符再输出这些字符，为什么结果很诡异？

另外 你的数组没有 0 结尾  不是C风格字符串  不能用strlen 测试字符串长度


Question: 求解！

数学里整数除以整数， 和C语言里int/int 不同。

10000/3 是个整数


Question: 如何声明一个可以指向任意函数的函数指针

只能是 void *  使用的时候根据具体情况再做强制转换

没太明白你的要求，任意类型可以用 void * ， 参考C的 malloc的定义和用法。

类型用void,例void *name(void) ，因为不管是那种类型最终都会转换成void类型, 不会冲突

参考脚本语言的做法，参数和返回值都是“元组”，所有函数都是 tuple func(tuple) 这样一来，就能实现你的要求了。

不考虑参数的话  void  * funptr=你的函数的地址;  __asm { mov eax,funptr jmp eax }

没有这种操作，但函数指针之间可以任意进行转换。最符合你要求的类型应该是 int(*)()。


Question: 先序递归输出深度为三以内二叉树任意结点的所有祖先结点

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

char c='f'求  f 的祖先结点

引用 1 楼 user-2的回复:代码一团麻。 不知道这是不是你想要的。https://blog.csdn.net/pfdvnah/article/details/102387839 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------------------------- 第一次发帖，不知道怎么规范一行一行的发出来。


Question: c语言输出输入问题

引用 3 楼 user-1的回复:[quote=引用 2 楼 weixin_45718499 的回复:] [quote=引用 1 楼 user-1的回复:]在return 0;左侧，点一下，加个断点（圆点），再运行，就鼠标左键单击那条黄绿线左边一点 它的结果是这样： A A 65 a 97 //对吗？[/quote] 对，大写字母的ASCII码加32就是小写字母的ASCII码[/quote] 好的，再问一下在电脑怎么结贴，我去结一下

引用 2 楼 weixin_45718499 的回复:[quote=引用 1 楼 user-1的回复:]在return 0;左侧，点一下，加个断点（圆点），再运行，就鼠标左键单击那条黄绿线左边一点 它的结果是这样： A A 65 a 97 //对吗？[/quote] 对，大写字母的ASCII码加32就是小写字母的ASCII码

引用 1 楼 user-1的回复:在return 0;左侧，点一下，加个断点（圆点），再运行，就鼠标左键单击那条黄绿线左边一点 它的结果是这样： A A 65 a 97 //对吗？


Question: 红绿灯行车问题

int 换成char 还是不能得到结果呀

你这个r,y,g只是变量名，里面是随机值，你可以改成char r,y,g，依次用字符r,y,g赋值

我调试了一下，发现语句不能到printf。就直接结束了，这是为什么啊。

引用 1 楼 user-2的回复:r y g的值是多少呢 交通信号灯有红黄绿分别用ryg来表示。。所以。ryg没有值?

r y g的值是多少呢


Question: C语言作业：输入一句英文，判断有几个单词

手机上不能结贴，要去电脑上结贴给分数。

原来是这样，谢谢！

b没有赋初值， scanf("%c",&b)，加&


Question: 关于结构体数组中的内容无法遍历输出的问题

我找到错的地方了…… while（）循环中我用了n n 循环到 0后， 又在 for中用了…n

谢谢大家的帮助。 我属实比较菜，前辈们的指点让我受益良多… 为了不耽误大家的时间，我决定明天晚上/下午结贴… 谢谢大家了~

引用 13 楼 apkipa1 的回复:我自己写了一份代码， OJ 上提交通过，不知道你能否看得懂。(另外: 例如 int n; int arr[n]; 这种是利用了 C99 的 VLA 特性，C++ 与 msvc 不支持)  #include <stdbool.h> #include <stdlib.h> #include <string.h> #include <stdio.h>  enum { 	INVALID_NODE_PTR = -1, };  typedef int NodePtr_t;  #define ENTRY_NODE_PTR 100000  int n, k; struct tagNode { 	NodePtr_t next; 	int data; } nodes[100000 + 5];  NodePtr_t walk_steps(NodePtr_t node, int nSteps) { 	while (node != INVALID_NODE_PTR && nSteps > 0) { 		node = nodes[node].next; 		nSteps--; 	} 	return node; }  void print_nodes(void) { 	NodePtr_t nodeCur = nodes[ENTRY_NODE_PTR].next; 	while (nodeCur != INVALID_NODE_PTR) { 		printf("%05d %d ", nodeCur, nodes[nodeCur].data); 		if (nodes[nodeCur].next == INVALID_NODE_PTR) 			printf("-1\n"); 		else 			printf("%05d\n", nodes[nodeCur].next); 		nodeCur = nodes[nodeCur].next; 	} }  void transform(void) { 	NodePtr_t nodeNext, nodeTmps[5];  	nodeNext = ENTRY_NODE_PTR; 	for (;;) { 		nodeTmps[0] = nodeNext; 		nodeNext = walk_steps(nodeNext, k); 		if (nodeNext == INVALID_NODE_PTR) 			return;  		for (int i = 2; i <= k; i++) { 			nodeTmps[1] = walk_steps(nodeTmps[0], i - 1); 			nodeTmps[2] = walk_steps(nodeTmps[0], i); 			nodeTmps[3] = walk_steps(nodeTmps[0], i + 1); 			nodes[nodeTmps[2]].next = nodes[nodeTmps[0]].next; 			nodes[nodeTmps[1]].next = nodeTmps[3]; 			nodes[nodeTmps[0]].next = nodeTmps[2]; 		}  		nodeNext = walk_steps(nodeNext, k - 1); 	} }  int main(void) { 	scanf("%d%d%d", &nodes[ENTRY_NODE_PTR].next, &n, &k); 	for (int i = 1; i <= n; i++) { 		int a; 		scanf("%d", &a); 		scanf("%d%d", &nodes[a].data, &nodes[a].next); 	}  	transform(); 	print_nodes();  	return 0; }   非常感谢您花费的时间和精力！ 然而我是个新新新新新手……您的代码我只能看懂一部分… 我努力学着看懂吧 再一次感谢您

引用 10 楼 wowpH 的回复: 我一个字没改。VS中直接报错。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------------------------- 谢谢您的回复 尚未得到满意的答案暂不结帖  另：我用的是 Dev C++,并没有出现报错…

引用 9 楼 apkipa1 的回复:试了一下，你的程序直接崩溃了，所以没有输出。这题目的意思应该是让你模拟链表操作吧，你写成这个样子我没看懂。  谢谢您的回复  题目的大概意思就是给你几个无序的结点，然后让你按照他们的首位地址相连排序，最后输出。 我的代码主要思想就是： 先创建一个结构体列表存储输入的无序结点 再遍历第一个数组，根据首尾地址相连排序放在新创建的一个结构体数组里 最后将第二个数组输出…  语言表达能力有限……emmmmmm  主要的疑问就是为啥 for 循环没法将结构体数组输出

引用 7 楼 user-3的回复:  红色部分是怎么来的 那些都是输入...

红色部分是怎么来的

引用 5 楼 user-3 的回复:没试了一下，确实可以这样赋值。 同时仔细看了看，你的行动结果和测试样例是一样的呀，你说的是哪个没有输出 图片中的所有数据都是我的输入…… 代码中的 for 循环没有输出

引用 3 楼 user-3 的回复:list[j] = temp[i];  C中结构体变量可以这样赋值吗。在JAVA, C#中确实可以这样做，但是以C中时不可以的  我刚刚看了翁恺的课，好像可以的吧……

引用 1 楼 user-3 的回复:linked_list temp[n],list[n];     在C中不能这样动态声明数组，如果要这样定义数组，那么其中的N必须为常量。动态声明数组要使用malloc 谢谢您的指点，学到了学到了 但是，我之前很多代码都是用这样的方法进行初始化一个数组的，在上一行的代码中已经 scanf( " " ,&n ) 了，运行都没有报错…… 而且，该题目的答案代码也是这般定义 请问还有没有是别的地方存在问题？ 谢谢


Question: 大一萌新求教

#include <stdio.h> int main() { 	int n,m,i,count=0; 	scanf("%d %d",&n,&m); 	for(i=n;i<=m;++i) 	{ 		if(i%6==0 && i%7!=0) 			count+=1; 	} 	printf("%d\n",count); 	return 0; }

祝你一臂之力 for(i=N;i<=M;i++){...} if(i%2==0 && i%3==0 ...){n++} print n


Question: C语言精度问题

找到原因了。你的精度错了。应该是0.001

按照5楼的说法。那你就需要看看题了。可能题目本身进行了取舍。

说个和题目无关的。 第27行和29行的括号着实有趣。成功把我带偏了。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

引用 4 楼 翟毛毛 的回复:[quote=引用 3 楼 與蘤舊縐的回复:]少加一次试试，这你总会改吧 少加了一次以后还是不行[/quote]  看你的结果也不大可能是用错了式子，按理说双精度数精确到这几位没问题，否则麻烦就大了，这种题目应该不会这么玩你 我拿计算器给你算了一下，你的结果更精确

引用 3 楼 與蘤舊縐的回复:少加一次试试，这你总会改吧 少加了一次以后还是不行

少加一次试试，这你总会改吧

引用 1 楼 與蘤舊縐的回复:你会不会多加了一次 啊 那应该怎么改呀

你会不会多加了一次


Question: C语言数组问题

分配这么大的数组，却只用前100个，为何？

如果项目中确实要申请这么大的数组那么只能int *a = malloc(sizeof(int) * 20190324)；这样你再运行你和程序看看。

直接定义一个数组，如a[SIZE];这个是分配的静态空间，在栈上（局部变量）或全局静态区（全局变量）上分配的，一般栈的内存是1M到2M，所以静态分配的空间不能太大。而a[20190324]所需要的内存空间大约为76M(假定int型占4个字节)，在有的情况下编译时不会报错（ubuntu 16   gcc  eplicse platform ） 编译时根本不报错，但是运行不了。修改为如下代码 main(){     printf("======================\n");     int a[20190324]; } 连同第一条输出语句都不执行。  你的for循环中对数组的访问只访问到下标为99的元素，为什么要定义这么大的数组？

你给20190324赋值了吗。。。


Question: 希尔排序

引用 5 楼 user-1的回复:[quote=引用 4 楼 Wab i-sabi 的回复:] 但我感觉是不是增量的选择有某种要求，但是d1<n是满足的啊，其次最后一个增量是1 我也是这么想的。所以我没回答。 我觉得只要最后一个增量是1，那么一定可以排序的，大不了就是直接插入排序。 那只能说明还是代码错了。我可能看漏了。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------[/quote] 增量序列中的值没有除1之外的公因子

引用 4 楼 Wab i-sabi 的回复:但我感觉是不是增量的选择有某种要求，但是d1<n是满足的啊，其次最后一个增量是1 我也是这么想的。所以我没回答。 我觉得只要最后一个增量是1，那么一定可以排序的，大不了就是直接插入排序。 那只能说明还是代码错了。我可能看漏了。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

引用 2 楼 user-1的回复:貌似就是严蔚敏的代码。我对了一下，没发现啥。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------------------------- 但我感觉是不是增量的选择有某种要求，但是d1<n是满足的啊，其次最后一个增量是1

引用 1 楼 user-1的回复:说个与题目无关的。 。。。是不是有点本末倒置了。。。明明代码是重点，你截个这么小的图。输出那么点东西要截那么大个图。。。  另外代码不要截图，直接复制粘贴。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------------------------- 谢谢提醒，代码有点长，截的图就小了点


Question: 萌新求助，帮忙看看这位求最小差值的

最好将以前的帖子结一下。你看看几个小时了都没人愿意回答你的问题。 ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------


Question: c语言萌新pta在线求助

我的理解就是*s代表字符串，**s代表字符串的首字符，不知道是不是我理解错了


Question: C语言：为什么输入啥都会输出else后面的语句

引用 4 楼 ??[??的回复:][quote=引用 1 楼 user-1的回复:]你那scanf函数哪里不能用格式控制，所以b没有被复制，所以会一直显示else的内容 我刚把&去掉了，也没用呀[/quote] %.2f把.2去掉，

引用 1 楼 user-1的回复:你那scanf函数哪里不能用格式控制，所以b没有被复制，所以会一直显示else的内容 我刚把&去掉了，也没用呀

#include<stdio.h> 	int main() 	{ 		int a; 		float b,Price; 		scanf("%d,%f",&a,&b); 		if((b-(int)b)!=0) 		{ 			(int)b=(int)(b+1); 		} 		switch(a) 		{ 		case 0: 			if(b>1) 			{ 				 				Price=10+(b-1)*3; 				printf("1Price: %.2f\n",Price); 			} 			else{ 				Price=10; 				printf("2Price: %.2f\n",Price); 			} 			break; 		 		case 1: 			if(b>1) 			{ 				 				Price=10+(b-1)*4; 				printf("3Price: %.2f\n",Price); 			} 			else{ 				Price=10; 				printf("4Price: %.2f\n",Price); 			} 			break; 		case 2: 			if(b>1) 			{ 				 				Price=15+(b-1)*5; 				printf("5Price: %.2f\n",Price); 			} 			else{ 				Price=15; 				printf("6Price: %.2f\n",Price); 			} 			break; 		case 3: 			if(b>1) 			{ 				 				Price=15+(b-1)*6.5; 				printf("7Price: %.2f\n",Price); 			} 			else{ 				Price=15; 				printf("8Price: %.2f\n",Price); 			} 			break; 		case 4: 			if(b>1) 			{ 			 				Price=15+(b-1)*10; 				printf("9Price: %.2f\n",Price); 			} 			else 			{ 				Price=15; 				printf("0Price: %.2f\n",Price); 			} 			break; 		default: 			printf("Error in Area\n"); 			break;  		}      return 0;   } 这个程序在运行a=4时会输出else后面的语句但是前面的不会，很奇怪

引用 1 楼 user-1 的回复:你那scanf函数哪里不能用格式控制，所以b没有被复制，所以会一直显示else的内容赋值


Question: 哪位兄弟麻烦给说一下，这一串烫是怎么回事

https://zhidao.baidu.com/question/503535074.html 还有这里

https://bbs.csdn.net/topics/394969459 2楼可以参考一下

字符串末尾没有加终止字符‘\0’，因为字符串以终止字符结尾，没有找到就会一直往后找（即使越界）


Question: 萌新求助，帮我看看哪里出了问题

引用 1 楼 user-1的回复:别发截图哦，另外把地址也发一下 什么地址？？？？？？，不懂你意思

别发截图哦，另外把地址也发一下


Question: c语言输入输出问题

引用 3 楼 不闻窗外事的回复:我没怎么使用过windows特有的库，但是这个清屏应该是使用system执行cls命令，其他的就是打印，应该也是window特有的一些命令吧，没用过，你可以研究下 哦哦哦那能不能帮我看一下那个作业三怎么弄，麻烦了

引用 1 楼 不闻窗外事 的回复:你可以使用system执行echoshell命令啊，但是使用system很蠢，因为system开销比较大，还可能出现一些问题 我搞不懂这个要怎么弄= =


Question: 请问这个可以怎么实现，没有一点头绪。

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

温度传感器传回数据，单片机计算距离目标温度的差值，然后根据差值大小生成不同占空比的方波，方波的占空比意味着加热等级，比如要做256级加热等级，连续输出256个1，就是全功率输出，连续256个0，表示不加热。128个1，128个0，代表用1半的功率去加热。越接近目标温度，输出的0越多。然后用方波控制可控硅，可控硅接电热丝。。。。

控制加热，读取温度，显示屏显示温度，温度判断，高温报警，低温加热，设置温度阀值


Question: c语言通过数组指针求方阵的和和方差

问题出在sum1，sum，aver没有在每次循环的时候初始化值！


Question: 请教大佬们~

其中：不能被2到根号j整除的数为质数，j就是那个被判断的数


Question: 从键盘输入一个由大小写字母组成的字符串，统计与第一个字母相同的字母有几个，为啥我的程序崩溃了？

#include"stdio.h" #include<string.h>  int main() { 	int len,i,sum=0;  // 如果第一个字母也计数的话，sum初始化就要设置为1 	char x,s[100]; 	scanf("%s",s);  // 这里注意 	len=strlen(s); 	for(i=1; i<=len; i++) { 		if(s[0]==s[i]) { 			sum++; 		} 	} 	printf("有%d个\n",sum); }

字符串也得传入函数  你在函数内部另外定义一个数组没用  函数内部新定义的数组占用新的内存块 没有你输入的字符串数据

你scanf那里有问题  把[100]删了

引用 5 楼 自信男孩的回复:#include <stdio.h> #include <string.h>  int main() {     int len,i,sum=0;     char s[100];      scanf("%s",s);      len=strlen(s);     for(i=1;i<len;i++)     {         if(s[0] == s[i] || s[0] == s[i]-32 || s[0] == s[i] + 32)         {             sum++;         }     }     printf("有%d个\n",sum);      return 0; } 供参考～ 不区分大小写～ 劳烦您看一下7楼，是我修改后的代码，可是还是输出有误，可以帮忙看一下是什么原因吗？谢谢

#include"stdio.h" #include<string.h> int isleap(int i) { 	int f; 	char s[i]; 	if(s[0]==s[i]+32||s[0]==s[i]-32||s[0]==s[i]) f=1; 	else f=0; 	return f; }  main() { 	int len,i,sum=1; 	char x,s[100]; 	scanf("%s",s); 	len=strlen(s); 	for(i=1;i<len;i++) 	{ 		if(isleap(i)==1) 		{ 			sum++; 		} 	} 	printf("有%d个\n",sum); }

引用 4 楼 自信男孩的回复:#include"stdio.h" #include<string.h>  int isleap(int i) {      /*     int f;     char s[i];     if((s[i]>='a'&&s[i]<='z')&&((s[i]-32==s[0])||(s[i]==s[0]))) f=1;     else if((s[i]>='A'&&s[i]<='Z')&&((s[i]+32==s[0])||(s[i]==s[0]))) f=1;     else f=0;     return f;     */ }  main() {     int len,i,sum=0;     char x,s[100];     //scanf("%s",s[100]);     scanf("%s",s);     len=strlen(s);     //for(i=1;i<=len;i++)     for(i=1;i<len;i++)     {         //if(isleap(i)==1)         if(s[0] == s[i])         {             sum++;         }     }     printf("有%d个\n",sum); } 供参考～ 不需要用自定义函数，用自定义函数反而让程序复杂了。 您好，是我的题目要求用自定义函数的。


Question: c语言逻辑表达式

逻辑表达式和其他任何语句一样，应该根据需要的功能直接写，尽量不要变换，否则别人和自己都看不懂

补充一下，还有除数为0的问题

引用 2 楼 Italink的回复:因为i和reuslt都是int，i/result==1，不一定是因为两个相等，比如(3/2)理论上为1.5，但int/int只能得到int，因此3/2=1，所以上面的两个逻辑表达式不等哦 谢谢你  说的很清晰

引用 1 楼 user-4的回复:[quote=引用 楼主  Pt. 的回复:] i 和result都是int型 if(i/result==1)和if(i==result)有区别吗123/100 一样是 1 你说呢[/quote] 多谢  想了半天没想明白哈哈

引用 楼主  Pt. 的回复:i 和result都是int型 if(i/result==1)和if(i==result)有区别吗123/100 一样是 1 你说呢


Question: 以下表达式x&&1 用在if的条件中时，和哪个是等价的：求答案和解释

分情况讨论：x为0时，x为假，x&&1为假。AC都为假 x非零时，x&&1为真。C为真，A仅x为1时真 所以，结果是C

C &&判断完前一个若是错的就不再判断后一个 1显然是对的 因此只需要判断x

引用 2 楼 寻开心 的回复:x && 1     不是0的数都表示true，只有0表示false 所以  X&&1    等同于只判定x一项是否为true 答案是A  x只要不是0都是对的，x==1太狭隘了


Question: 我这样写为啥不对呀  大佬们~

引用 1 楼 與蘤舊縐的回复:if("m%i == 0")双引号干嘛的 这个确实错了哈哈哈

引用 2 楼 寻开心的回复:因为这句神奇的代码呀    if(flag = 1)  // 这里 永远是1           printf("该正整数m不是质数。");  记住： 要向避免这种初级bug，养成习惯， 判断语句写成  if ( 1 == flag )   这样不小心把==写成=， 编译器就不会让你通过的 谢谢谢谢！！   感谢教诲

if("m%i == 0")双引号干嘛的


Question: 求高手救救孩子吧

引用 2 楼 user-2的回复:并且，你这个排版看起来太累了，花括号哪个对哪个，要看半天。真该好好改改啊 不好意思  新手刚入行

多试几次？这应该是谭浩强的C语言基础的例子吧？

并且，你这个排版看起来太累了，花括号哪个对哪个，要看半天。真该好好改改啊

楼主能不能把89和121改成'Y'和'y'，这样可读性也好，也一下能看出来是不是正确的？


Question: 新手求指教 关于判断降序数！

引用 9 楼 user-1的回复:去看书吧，书上会告诉你一切的 我现在调用了可是输出还是永远yes…

去看书吧，书上会告诉你一切的

引用 7 楼 user-1的回复:你不是没调用p函数吗？length等于多少？有初始化吗？ 初始length是0 我想知道怎么样才算调用了这个函数

你不是没调用p函数吗？length等于多少？有初始化吗？

引用 5 楼 user-1的回复:你的意思是，你每个数字都输过了，发现所有的数字输进去的结果都是yes？ 是的 我就是这个意思

你的意思是，你每个数字都输过了，发现所有的数字输进去的结果都是yes？

引用 3 楼 user-1的回复:我是说，你这个n到底是多少啊？真是晕！ emmm我输入是多少不就是多少……？

我是说，你这个n到底是多少啊？真是晕！

引用 1 楼 user-1的回复:你输入什么都不说，就说输出了？ 我有输入我有输入在倒数第十三行

你输入什么都不说，就说输出了？


Question: 一道数学题，求大神解

引用 3 楼 我大E了啊 的回复:[quote=引用 2 楼 单身，欢迎小姐姐来撩的回复:]up。。。。。。。。。。。。 大哥你真是天纵奇才，可惜相见恨晚，他日良辰美景，何不共度春宵[/quote]  又不是女人，度什么春宵？！！！！

引用 2 楼 单身，欢迎小姐姐来撩的回复:up。。。。。。。。。。。。 大哥你真是天纵奇才，可惜相见恨晚，他日良辰美景，何不共度春宵

up。。。。。。。。。。。。


Question: volatile 与序列点

引用 8 楼 lin5161678 的回复:[quote=引用 7 楼 apkipa1 的回复:]  不好意思，我发现之前自己有些理解不到位的地方，所以再问一下，是否 i /= 2 不算未定义行为，i = i / 2 就属于未定义行为了。不 这就是危险的地方了  i/=2 没问题 i = i/2 是未定义行为  惊不惊喜 意不意外[/quote] 懂了，感谢。

引用 7 楼 apkipa1 的回复:不好意思，我发现之前自己有些理解不到位的地方，所以再问一下，是否 i /= 2 不算未定义行为，i = i / 2 就属于未定义行为了。不 这就是危险的地方了  i/=2 没问题 i = i/2 是未定义行为  惊不惊喜 意不意外

引用 6 楼 lin5161678 的回复:[quote=引用 5 楼 apkipa1 的回复:] [quote=引用 4 楼 lin5161678 的回复:] [quote=引用 楼主 apkipa1 的回复:] 在对 volatile 对象进行访问操作时会产生副作用, 而且 C 语言中对序列点的 UB 是这么说的:  如果设有 volatile i = 10; 那么这是否意味着如下表达式属于未定义行为? i++; i /= 2; i *= i;i++ 和 i/=2 不是未定义行为 i*=i 是未定义行为  [/quote] 看不出来，能解释一下吗？[/quote]  一次访问 没影响 多次访问 副作用无序[/quote] 不好意思，我发现之前自己有些理解不到位的地方，所以再问一下，是否 i /= 2 不算未定义行为，i = i / 2 就属于未定义行为了。

引用 5 楼 apkipa1 的回复:[quote=引用 4 楼 lin5161678 的回复:] [quote=引用 楼主 apkipa1 的回复:] 在对 volatile 对象进行访问操作时会产生副作用, 而且 C 语言中对序列点的 UB 是这么说的:  如果设有 volatile i = 10; 那么这是否意味着如下表达式属于未定义行为? i++; i /= 2; i *= i;i++ 和 i/=2 不是未定义行为 i*=i 是未定义行为  [/quote] 看不出来，能解释一下吗？[/quote]  一次访问 没影响 多次访问 副作用无序

引用 4 楼 lin5161678 的回复:[quote=引用 楼主 apkipa1 的回复:] 在对 volatile 对象进行访问操作时会产生副作用, 而且 C 语言中对序列点的 UB 是这么说的:  如果设有 volatile i = 10; 那么这是否意味着如下表达式属于未定义行为? i++; i /= 2; i *= i;i++ 和 i/=2 不是未定义行为 i*=i 是未定义行为  [/quote] 看不出来，能解释一下吗？

引用 楼主 apkipa1 的回复:在对 volatile 对象进行访问操作时会产生副作用, 而且 C 语言中对序列点的 UB 是这么说的:  如果设有 volatile i = 10; 那么这是否意味着如下表达式属于未定义行为? i++; i /= 2; i *= i;i++ 和 i/=2 不是未定义行为 i*=i 是未定义行为

引用 2 楼 apkipa1的回复:[quote=引用 1 楼 user-2 的回复:] 这不是C++的吗？C语言也支持吗？我真是孤陋寡闻了 是的，C 和 C++ 都有 volatile。[/quote] 受教了。。。。。。。

引用 1 楼 user-2 的回复:这不是C++的吗？C语言也支持吗？我真是孤陋寡闻了 是的，C 和 C++ 都有 volatile。

这不是C++的吗？C语言也支持吗？我真是孤陋寡闻了


Question: 习题求助

引用 3 楼 user-1的回复:第一个if和第二个if之间并没有存在什么关系 喔，这样，谢谢你啦😁😁

第一个if和第二个if之间并没有存在什么关系

引用 1 楼 user-1的回复:看清楚了，最后起作用的是if(c)这个是假，所以到最后一个else的 那if（！a）不是为真吗，怎么看是谁起作用？

看清楚了，最后起作用的是if(c)这个是假，所以到最后一个else的


Question: 选择结构习题求助

第一题，if a<b不满足，直接跳到了printf 第二题，里边那个switch没有执行。 你需要代码块的概念，一整块代码全跳过去了。


Question: 求解

发不了图片了。。。 我重新发一条吧。。。

修改后的代码和运行结果给一下

引用 4 楼 qq_45798109的回复:<string.h> 为何我修改后输出的是（null）

<string.h>

引用 1 楼 qq_45798109的回复:你没有包含头文件呀。 好了，谢谢

引用 1 楼 qq_45798109的回复:你没有包含头文件呀。 啥头文件

你没有包含头文件呀。


Question: 数组问题

引用 7 楼 user-1 的回复:你在scanf之后，可以清一下输入缓冲区好的，解决了，谢谢，

你在scanf之后，可以清一下输入缓冲区

引用 5 楼 user-1 的回复:应该不是，这是输出，不会影响的。有可能是上面那个scanf，不确定，你要去看看确实不是那个输出的，那怎么看是不是scanf呢，我在前面加个了一个gets_s(p[0],n)，发现就正确了，我要怎么样从程序看是不是scanf这个引起的问题呢，谢谢

应该不是，这是输出，不会影响的。有可能是上面那个scanf，不确定，你要去看看

引用 3 楼 user-1 的回复:会不会是前面的回车漏下来了我也觉得是这样的，  printf("输入的字符数组\n");是这个回车么?为什么呢

会不会是前面的回车漏下来了

引用 1 楼 user-1 的回复:怎么说得不到？在gets之后吗？是的呢，比如我的数组是q[3][6],但在我输入数组内容时，只能得到q[1],q[2]的内容，就是输入两个字符串数组以后，就结束了，为什么呢

怎么说得不到？在gets之后吗？


Question: c语言用指针实现字符删减

对的，就是指针类型错误导致的

str是char* p是int* 可以p=str吗？


Question: C语言题目大神帮帮忙！！！

#include <stdio.h>  int main(void) {     int i;     int sum = 0;     for (i = 10; i <= 1000; i += 2) {         if ( i % 4 == 2 && i % 7 == 3 && i % 9 == 5) {             printf("i=%d\n", i);             sum += i;         }     }     printf("sum=%d\n", sum);      return 0; }

10到1000循环 if判断%4==2且%7==且%9==2 输出


Question: C语言二维数组问题

赋初值啊，如果题目没有特殊要求，没啥意义

那两层for是遍历，for里边的怎么写，要看题目。

就是把i*j的值赋给aij

引用 1 楼 與蘤舊縐的回复:就是i乘以j，没别的意思 遍历数组赋值而已 i乘以j，对这个数组遍历有什么意义啊

就是i乘以j，没别的意思 遍历数组赋值而已


Question: 【求助】对编程题目测试点答案错误很疑惑，恳请前辈指点迷津

没看，不过给你一个例子参考： http://tieba.baidu.com/p/6338397602


Question: unity怎么跟雷达互相交互，

你发错版了，就算是语言你也得发到C#啊。


Question: c语言

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

缺少;或}  引用 楼主 wangfang6667 的回复:gccx报错，输入结尾应为声明或语句


Question: C语言 读取TXT文件至双向链表中

// size为申请的data的空间大小 // pfile为FILE指针 fgets(data, size, pfile);  ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

祝你一臂之力 scanf("%[^\n]", data) while(p->pNext){...}


Question: 液晶显示的音乐定时器


Question: c语言 井字棋问题  求大神

似乎又是二维数组 输入没难度 关键是每走一步都要调用判断输赢的函数，这个函数不好写。


Question: 为什么输出的是kkkkc，不是stack，如何修改

Status Pop(SqStack *S,SElemType* e) {  // 这里，  要改成这样； 形参和实参啊。不是指针如何返回数据呢 	if(S->top==S->base) 		return 0; 	*e = *--S->top;                              // 这里，要改成这样 	return 1; }  main函数里面那些pop相关的部分也都要改了  此外，建议你自己写一个PrintStack函数，输出当前的堆栈状态，好跟踪问题


Question: 能否 通过指针 操作数组

*(p+i) p[i] 这两个差不多，可以对指针使用数组操作符

可以，不过要注意数组类型和指针类型的大小必须一致，也就是int型指向int型

当然可以，好多书有专门的章节讲这个

通过指针操作数组完全是可以的。注意指针的指向～

首先你要明白 数组名本身就是一个指针，例如int Arr[3] = {1, 2, 3}; 其中数组名Arr本质就是一个指针。 当然也可以进行这样的操作


Question: 数据结构求助  总是访问越界但不知道是哪出错了

引用 5 楼 自信男孩的回复:#include <iostream> #include <string.h> #include <cstdio> #include <cstdlib> using namespace std;  #define MAX_CAR_NUMS     5 typedef struct che {     string chepai; //车牌号     //int intime=-1; //进入停车场的时间     int intime; //进入停车场的时间     //int outtime=-1; //出停车场的时间     int outtime; //出停车场的时间 }*car;  typedef struct tcc {     car tcc[MAX_CAR_NUMS];     //int top = -1;     int top; }stop;  stop* initstop() {     stop *dfe;     int i;      dfe = (stop*)malloc(sizeof(stop));     if (!dfe) {         return NULL;     }     dfe->top = -1;     for (i = 0; i < MAX_CAR_NUMS; i++) {         dfe->tcc[i] = (car)malloc(sizeof(struct che));         if (!dfe->tcc[i])             exit(0);         dfe->tcc[i]->intime = -1;         dfe->tcc[i]->outtime = -1;     }      return dfe; }  void come() {     stop* dfe = initstop();     printf("%d", dfe->tcc[0]->intime); }  void out() { } int welcom() {     int a;     printf("欢迎使用大肥鹅停车系统:)\n输入想要实现的功能\n");     printf("1.停车\n2.取车\n其他.退出\n");     scanf_s("%d", &a);     if (a == 1)     {         come();         return 3;     }     else if (a == 2)     {         out();         return 3;     }     else     {         return 1;     } } int main() {     int a = 3;     while(a==3)         a=welcom();  }  供参考～  数据结构在声明时是不能初始化的吧。  出现段错误是因为没有对野指针申请空间导致～ 同样感谢你细心的解答  辛苦了🙏

引用 3 楼 寻开心的回复:car是指针类型，所以才导致分配stop的时候没有对tcc[]里面的元素做初始化 导致tcc[0]是野指针，此时访问intime就是出错  把car类型改成非指针类型，可以避免的只是这个问题： printf("%d", dfe->tcc[0]->intime);     此处要同步改为。 tcc[00.intime 的访问方式。 多谢你的耐心回答  听懂了

引用 1 楼 寻开心的回复:dfe = (stop*)malloc(sizeof(stop)); 这里只是把dfs空间分配出来了 但是其中的car空间并没有分配呢  typedef struct che { string chepai; //车牌号 int intime=-1; //进入停车场的时间 int outtime=-1; //出停车场的时间 }*car;  这里把*car，变成car  否则tcc里面只保留了五个指针， 他们对应的内存没有被malloc呢，直接用自然不对 就是把*car换成car应该就没事了是吗


Question: 求解！！！

无限循环了，程序有问题的～

引用 5 楼 qq_破晓时分 的回复:for循环里只针对对象i，不能胡乱写入其他的变量，比如sum，这样肯定会出错，这是编程语法问题。 大兄弟，这个还真能，只要把条件写好就行，比如他这个for (i = 1; i <= 3; i++,sum++)这样写就能运行，只是每次循环sum也会加1而已

老师也不是万能的。 出版社的书还经常附带一个纠错的页呢   小白进阶的必要能力是学会debug，调试， 跟踪运行看结果是不是你想要的  此外就是：     要勇敢的怀疑各种老师， 打不过的体育/武术老师除外啊

引用 2 楼 Awake2333 的回复:[quote=引用 1 楼 寻开心的回复:]凭啥说代码没有错， 就是代码错了好不好   for(i=1; i<3; sum++ )     这里是i++好不好，  否则就是死循环了， i始终是1， 如何退出循环啊 谢谢解答，我也不知道啊，这是老师给的题，毕竟我还是个小白[/quote] 老师还能给出这样的代码。。难怪我当年c语言成绩这么差，可能就是老师乱讲（虽然我也不听）

她的意思可能是，代码可以编译通过，可是运行结果出不来。对吧？好好学习一下表达方法

引用 1 楼 寻开心的回复:凭啥说代码没有错， 就是代码错了好不好   for(i=1; i<3; sum++ )     这里是i++好不好，  否则就是死循环了， i始终是1， 如何退出循环啊 谢谢解答，我也不知道啊，这是老师给的题，毕竟我还是个小白😁


Question: 求值顺序

不这么写不就没有这种歧义的结果了吗？

引用 3 楼 qq_44422004 的回复:你试过没有哟！！！还必然是16。什么水货啊。哟 现在新手都这么燥的吗  粗心算错不算什么大问题  粗心算错还自大狂妄 就很可笑了

引用 3 楼 qq_44422004 的回复:你试过没有哟！！！还必然是16。什么水货啊。 我倒是很想知道你在哪里运行出来是8的，a+=a/3等价于a=a+a/3，不是16还能是多少

你试过没有哟！！！还必然是16。什么水货啊。

引用 楼主 qq_44422004 的回复:比如，int a=12；a+=a/3;a的值是多少？这个是依赖于编译器的吧。虽然win 上的gcc，vc ，mac上xcode都是8.但我手机上的c compiler 就是16.  应该是c程序设计语言第二版里明确提出的有副作用的那一种吧！ 当然不是 结果必然是 16 不存在 8

引用 8 楼 qq_44422004 的回复:是我写错了，是a+=a/=3 这个表达式直到 C11 都是未定义行为，C18 的话手头没有文档，从 Draft 来看应该还是 UB。

引用 11 楼 寻开心的回复:应该是编译器的问题，不同的编译器对标准的支持不同， 手机上的那个玩意儿没有经过大众长期检验    此外， 除了神经的老师和一些竞赛外谁会这么写啊 出于研究的目的，可以折腾折腾， 实际做项目你还是省省吧， 代码不是越短越好， 是越容易理解越好， 更何况短也不代表执行效率高，除了让看的人头晕外，屁用没有。 当然！就是有同事出了这样的题目。而我刚刚学生讲过不要这么写，一点意义都没。我想确定一下是不是错的。

引用 10 楼 lin5161678的回复:[quote=引用 8 楼 qq_44422004 的回复:] 是我写错了，是a+=a/=3这个情况 按照旧版标准的未定义行为 编译器随意处理 c++11 应该改了 结果确定是 8[/quote] c呢？不是c++. c呢？不是c++. c呢？不是c++. 有具体出处吗？

引用 8 楼 qq_44422004 的回复:是我写错了，是a+=a/=3这个情况 按照旧版标准的未定义行为 编译器随意处理 c++11 应该改了 结果确定是 8

是我写错了，是a+=a/=3

就是 16，我猜你实际想问的应该是 a += a /= 3。


Question: 求模运算的符号问题

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

不是明确说了/运算符的结果是代数商丢弃小数部分吗，代数运算，小学生都懂的，-5/2=-2.5、5/-2=-2.5、-5/-2=2.5

引用 3 楼 qq_44422004 的回复:这里定义完备吗？符号根据被模数来定？没有这样说啊。 确实没有直接这么说，但既然规定了 105) 向 0 舍入，相信你可以自己推导出 "符号根据被模数来定" 这个结论。

听编译器的？可我没有全部的编译器啊！！

这里定义完备吗？符号根据被模数来定？没有这样说啊。

C99 已经定义得很完备了。

听编译器的.

引用 7 楼 lin5161678 的回复:a==a/b*b+a%b 那么 a%b 的结果就是 a - a/b*b;  -5%2  == -5-(-5/2*2) == -5 - -4 == -1  -5%-2  == -5-(-5/-2*-2) == -5 - -4 == -1  5%-2  == 5-(5/-2*-2) == 5 - 4 == 1 学习了！收藏

引用 7 楼 lin5161678的回复:a==a/b*b+a%b 那么 a%b 的结果就是 a - a/b*b;  -5%2  == -5-(-5/2*2) == -5 - -4 == -1  -5%-2  == -5-(-5/-2*-2) == -5 - -4 == -1  5%-2  == 5-(5/-2*-2) == 5 - 4 == 1 懂了！谢谢！正解！十个字。


Question: c语言

引用 7 楼 自信男孩的回复:#include<stdio.h>   //输出100以内的所有素数 int main() {     int n=2,i=2,a=0;      //for(n;n<=100;n++)     for(;n<=100;n++) {         //for(i;i<n;i++)         for(i = 2;i<n;i++)             if(n % i == 0)                 a++;         if(a==0 && i >= n)             printf("%d  ", n);         a = 0;  // reinit     }     putchar(10);      return 0; } 供参考~ 谢谢了，不好意思，打扰了

引用 3 楼 user-2 的回复:#include<stdio.h>   //输出100以内的所有素数  int main() { 	int n = 0, i = 2, a = 0; 	for (n; n <= 100; n++) 	{ 		a = 0; 		for (i=2; i < n; i++) 		{ 			if (n%i == 0) 				a++; 		} 		if (a == 0) 			printf("%d  ", n); 	} 		 	return 0; } 你两层循环，第二层的循环参数没重置 供参考 n是不是应该从2开始呢？

引用 3 楼 user-2 的回复:#include<stdio.h>   //输出100以内的所有素数  int main() { 	int n = 0, i = 2, a = 0; 	for (n; n <= 100; n++) 	{ 		a = 0; 		for (i=2; i < n; i++) 		{ 			if (n%i == 0) 				a++; 		} 		if (a == 0) 			printf("%d  ", n); 	} 		 	return 0; } 你两层循环，第二层的循环参数没重置 供参考 感谢

引用 4 楼 user-2 的回复:其实应该只要到 i<= n/2 就行，没必要循环到后面去 谢谢

其实应该只要到 i<= n/2 就行，没必要循环到后面去

引用 1 楼 user-2 的回复:代码规范：所有的for循环，if判断后面都加上花括号，避免后面的代码没有在你的条件里面  谢谢


Question: 为什么VC++可以运行，而Devc++不行?

错误的数据是什么 只要输入3个以上的数据是有输出的啊  给出你认为出错的时候输入的数据样例看看   毕竟是两个不同的编译器，对c++标准的支持不完全一样。

引用 1 楼 proorck2019的回复:源代码帮你看了一遍，没问题。 可是只能输入数字，输出不了

源代码帮你看了一遍，没问题。


Question: C语言问题

#include <stdio.h>   int main() {     int line, max_ch, ch;     int cnt, i;     int flag = 0;      scanf("%d", &line);     getchar();   //for '\n'      for (i = 0; i < line; i++) {         cnt = 0;         while ((ch = getchar()) != '\n') {             if (flag == 0) {                 max_ch = ch;                 flag = 1;             }             if (max_ch < ch)                 max_ch = ch;             cnt++;         }         printf("No.%d has %d characters!\n", i+1, cnt);     }      printf("Max char is %c\n", max_ch);      return 0; #if 0     int c, n, i,max;     char ch;     scanf("%c",&n);     for(i=0;i<=n;i++)     {         max=0;         c=0;         while ((ch=getchar())!='\n')         {             c++;             if(ch>max)                 max=ch;         }         printf("%d%c",c,max);     } #endif }

要么用 getchar  要么改成 char类型  scanf %c 会写入1个字节的数据  而你的 n有4个字节 只写入1个字节 那么剩下的3个字节是垃圾值  后面的比较没有意义

引用 7 楼 寻开心的回复:#include <stdio.h> int main() { 	int c,n,i,max; 	char ch; 	scanf("%d\n",&n); 	for(i=0; i<n; i++) { 		max=0; 		c=0; 		while ((ch=getchar())!='\n') { 			c++; 			if(ch>max) 				max=ch; 		} 		printf("%d %c\n",c,max); 	} } 我自己也解决了，很感谢

按照题目要求，你其实不应该用一边输入一边输出的交互模式处理  应该是把n行字符串都读入到内存变量，然后挨个处理后，一块儿输出。 或者一次读入一行把处理结果保存起来，最后一块儿输出

char ch; scanf("%c",&n);  int n； scanf("%d", &n);

本关任务:编写程序，输入n行ASCII字符，计算每行字符的个数(不包括换行符)，并找出最大的字符。例如  输入: 2 Where are you? I'min classroom. 输出↑ 14 y 175

#include <stdio.h> int main() { 	int c, n, i; 	char ch,max; 	scanf("%d", &n); 	getchar();//读取掉回车符 	for (i = 0; i <= n; i++) 	{ 		printf("请输入你的字符:"); 		max = 0; 		c = 0; 		ch = getchar(); 		while (ch != '\n') 		{ 			c++; 			if (ch > max) 				max = ch; 			ch = getchar(); 		} 		printf("c=%d,max=%c\n", c, max); 	} 	return 0; }  供参考

scanf的%c改成%d

不是我要得到字母。。。。。

你n和max都是int，输入输出用%d


Question: int类型值赋给char型指针问题。

引用 2 楼 自信男孩 的回复:把a的值用16进制输出，看一下最低字节是否为0xff，然后从低向高的第二个字节是不是值1；就能理解 输出的结果为啥是-1和1了还是学艺不精，感谢解答。

511 的二进制是 0000 0000 0000 0000 0000 0001 1111 1111 1111 1111 的地址是 62FE0C 0000 0001 的地址是 62FE0D ptr 指向的是 62FE0C ，这个地址存储的是 1111 1111 （十进制是 -1），由于 ptr 是 char 型的指针，所以输出 -1 。  ptr1 指向的是 62FE0D ，这个地址存储的是 0000 0001 （十进制是 1），由于 ptr1 是 char 型的指针，所以输出 1 。   ------------------------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 -------------------------------------------------------

引用 1 楼 user-3 的回复:ptr1的地址改变？怎么改变呢？你的表达让人无解 程序里面输出的最后一行，第一个数字是@1，这是511的高位，低位是255，就是说255+256=511表述不太清楚，不好意思，也就是说那个-1和1是进位，至于为什么是后面一个地址是因为使用的是大端存储。


Question: 新手求指教，用c++里的数组完成

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

首先可以使用轮询的方法找到大于m和小于m的两个位置，然后把大于m的所有的值向后移一位，把m放到移出来的位置


Question: C代码调用DLL报错

改扩展名多没创意呀，VS可以把C文件作为C++来编译的

把扩展名从.c改成.cpp

有的C编译器只能在语句块的前部定义变量的，把output定义跟fun放在同一个区域试试


Question: 求大神帮助新手，这个题怎么搞？

引用 6 楼 qq_45798109的回复:你输入的是字符型，运算的时候，你要把它转化为整型呀 谢谢，感谢帮助😁😁

你输入的是字符型，运算的时候，你要把它转化为整型呀

引用 2 楼 qq_45798109的回复:#include <stdio.h> #include <string.h> #define MAX 9999 int main(){ 	int sum = 0; 	char str[MAX]; 	scanf("%s",&str); 	for(int i = 0; i < strlen(str); ++i){ 		sum += (str[i] - '0'); 	} 	printf("%d", sum); 	return 0; } 为什么要-‘0’呢，，，，

引用 3 楼 qq_45817801 的回复:[quote=引用 1 楼 壹抹尘埃的回复:]提取字符串中的数字，然后累加？ 应该是吧，我是这么理解的，但是[/quote] 网上应该有例子吧，你找找。

引用 1 楼 壹抹尘埃的回复:提取字符串中的数字，然后累加？ 应该是吧，我是这么理解的，但是

提取字符串中的数字，然后累加？


Question: 求助大神们，最好有程序详解，谢谢


Question: 用结构体记录一个班的学号，姓名，及三科成绩，算出总分并输出

引用 3 楼 weixin_45917216的回复:定义的char类型的数组在读入时不需要写取地址符&，它的名字本身就是地址 我就是这个意思，发帖的时候顺手给写上了

定义的char类型的数组在读入时不需要写取地址符&，它的名字本身就是地址

引用 1 楼 自信男孩的回复:#include<stdio.h>  #define N 30  struct student {     int num;     //char name[3];     char name[16];     float g1;/*三科成绩g1g2g3*/     float g2;     float g3;     float total; };  //void main() int main() {     struct student st[N];     int i;     printf("请依次输入学号，姓名，三科成绩");     for(i=0;i<N;i++)     {         //scanf("%d%s%f%f%f",&st[i].num,&st[i].name,&st[i].g1,&st[i].g2,&st[i].g3);         scanf("%d%s%f%f%f",&st[i].num, st[i].name, &st[i].g1, &st[i].g2, &st[i].g3);         st[i].total=st[i].g1+st[i].g2+st[i].g3;/*计算三科成绩*/     }     for(i=0;i<N;i++)         printf("num:%d,name:%s,g1:%.2f,g2:%.2f,g3:%.2f,total:%.2f\n",st[i].num,st[i].name,st[i].g1,st[i].g2,st[i].g3,st[i].total); } 供参考～ 这个char name【】在scanf函数时应该是没有&的


Question: 问题


Question: c指针从方法里出来就变为默认了？

引用 9 楼 Italink的回复:[quote=引用 8 楼 l210148678 的回复:] 可是传进去方法的就是指针呀 对，没错，你传的是指针，传指针就是可以修改吗？无论如何，函数无法修改实参，传指针说到底是将变量的地址传进去，但并不修改这个地址，而是根据这个地址来修改变量的值，你传的是一个指针进去，但是你直接修改指针可以改吗？比如你要修改一个int类型的值 void fun(int *i){     *i=5;   //这里没有更改i的值，而是更改了*i的值 } 所以，好好想想，你想修改一个指针，那么是不是应该传入一个指针的指针[/quote] 嗷嗷，就是方法里不会改动变量的地址，但是可以把这个地址指向的值改了。应该是这样子吧。 谢谢谢谢，我好像懂了

引用 8 楼 l210148678 的回复:可是传进去方法的就是指针呀 对，没错，你传的是指针，传指针就是可以修改吗？无论如何，函数无法修改实参，传指针说到底是将变量的地址传进去，但并不修改这个地址，而是根据这个地址来修改变量的值，你传的是一个指针进去，但是你直接修改指针可以改吗？比如你要修改一个int类型的值 void fun(int *i){     *i=5;   //这里没有更改i的值，而是更改了*i的值 } 所以，好好想想，你想修改一个指针，那么是不是应该传入一个指针的指针

引用 1 楼 Italink的回复:掩耳盜鈴 就跟 void fun(int i) { 	i = 5; } 一樣，实参会改变吗，不会吧 可以改变的是实参的内部结构，你可以传入List*格式的参数，赋值时使用*PtrL 可是传进去方法的就是指针呀

引用 3 楼 不知则问的回复:建议你先抽些时间，仔细并全面的学习或复习一下 函数传引用、传数组、传指针和传普通参数的具体过程。 一定要弄明白每个传参方式的内存分配问题，不能只知其一不知其二，囫囵吞枣可不行，这样对你以后的学习都会有很大的帮助。 好的谢谢谢谢，我去好好看看

学习下传值运算和传址运算的区别

用参数传指针赋值之前要保证这个指针已经指向了一块分配好的内存，后续操作就是通过传入的指针对那块内存写值，你想直接对参数分配内存再传回去，那是不行的，指针其实就是个变量，只不过这个变量放的不是普通值而是地址罢了，你对指针参数分配内存就相当于对一般参数赋值，还希望这个值能返回给原变量一样，这怎么可能？ 而分配了内存之后传入的指针，函数内可以通过这个地址去访问那块不属于此函数的内存的，改变的值也不是参数本身，是那块分配好的内存

建议直接贴代码吧


Question: C语言判断排序

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

引用 1 楼 與蘤舊縐的回复:正序和逆序都算排序吧 遍历数组，判断前一个值是否始终大于、小于后一个值，设一个变量，当出现错误时，使变量的值改变，遍历结束后判断该变量的值，输出 谢谢，我写出来了，nice!


Question: 为什么我写的代码不对？求解答

引用 21 楼 还没秃顶的景初 的回复:[quote=引用 19 楼 壹抹尘埃 的回复:] [quote=引用 15 楼 还没秃顶的景初 的回复:] [quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 题中的P是以现在相比的倍数，现在也就是说是第一年。而不是所理解的第二年，第三年。[/quote] 答案求的p是对比第一年的，但是增长率不是对比第一年的不是么[/quote] 我刚开始也是这么想的。实际上他这个公式已经给了，写的很清楚了。只要知道是第几年的，还有年增长率直接带入求即可。

引用 20 楼 壹抹尘埃 的回复:公式为p=(1+r)的n次，r为年增长率，n为年数，p为与现在相比的倍数。题目中公式已经给的很明白了，没必要想的那么多了。好叭，那这样的话就不用循环直接求（1+r）的十次方就可以了

引用 19 楼 壹抹尘埃 的回复:[quote=引用 15 楼 还没秃顶的景初 的回复:] [quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 题中的P是以现在相比的倍数，现在也就是说是第一年。而不是所理解的第二年，第三年。[/quote] 答案求的p是对比第一年的，但是增长率不是对比第一年的不是么

引用 15 楼 还没秃顶的景初 的回复:[quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 题中的P是以现在相比的倍数，现在也就是说是第一年。而不是所理解的第二年，第三年。

引用 15 楼 还没秃顶的景初的回复:[quote=引用 13 楼 壹抹尘埃 的回复:] [quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数 [/quote] 你写下代码程序我看看

引用 14 楼 还没秃顶的景初 的回复:[quote=引用 10 楼 weixin_45501932 的回复:] [quote=引用 8 楼 还没秃顶的景初的回复:]我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。[/quote] 就假设说，第一年是1，增长率是100%，第二年就是2了对吧，但是第二年增长率也是100%的话，第三年就应该是4了。而不是3[/quote] 很明显是最初的时候想多了，没必要用for循环。这个只是跟第一年比所增长的百分比。

引用 13 楼 壹抹尘埃的回复:[quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote] 是，就是这样，去掉for循环。要求的是10年后我国国民生产总值与现在相比增长多少百分比

引用 13 楼 壹抹尘埃 的回复:[quote=引用 9 楼 还没秃顶的景初 的回复:] [quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);[/quote]  我觉得不是累加的问题，而是这个增长率不是按照第一年的算，每年的基数都不一样，是需要区分算的，然后算到第十年，而不是把所有基数都看成第一年的基数

引用 10 楼 weixin_45501932 的回复:[quote=引用 8 楼 还没秃顶的景初的回复:]我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。[/quote] 就假设说，第一年是1，增长率是100%，第二年就是2了对吧，但是第二年增长率也是100%的话，第三年就应该是4了。而不是3

引用 9 楼 还没秃顶的景初 的回复:[quote=引用 5 楼 壹抹尘埃 的回复:] [quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么[/quote] 我也感觉有点不太对，这个题应该不是累加的。直接int n =10； p=pow((r+1),n);

引用 10 楼 weixin_45501932 的回复:[quote=引用 8 楼 还没秃顶的景初的回复:]我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。[/quote] 是这样没错，但是题目中要求的是十年以后对比十年前的增长比率，但是每年的增长比率都是按照去年来算，按照上面题解来说都是按照第一年来算，这样不是会产生问题么

引用 8 楼 还没秃顶的景初的回复:我觉得楼上的回答有一点的问题，因为每年都是按照去年来做增长的，不是按照第一年来做增长，所以P的值每次也需要改变 题中给公式了，最后输出10年后的增长比就行吧。

引用 5 楼 壹抹尘埃 的回复:[quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote]  我有一点不同的意见哈，就是他这个每年的增长率不是按照去年的来比的么，按照您这个程序不是每年的增长都是以第一年为基数，这不是产生了问题么

引用 5 楼 壹抹尘埃的回复:[quote=引用 4 楼 weixin_45501932 的回复:] [quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。[/quote] 好的，懂了，感谢大佬。

我用int n=10; p=pow((1+r),n-1)输出后的结果是1.84和用for循环求出来的结果不一样是为啥？

引用 4 楼 weixin_45501932 的回复:[quote=引用 1 楼 壹抹尘埃的回复:]#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。[/quote]  一共十年，每年增长7%。pow()是math.h中定义的计算x的y次幂，也就是计算公式p=(1+r)的n次，循环十次后就是十年后的增加的百分比。

引用 1 楼 壹抹尘埃的回复:#include<stdio.h> #include<math.h> int main() {     int n;     float p, r=0.07;     for(n=1;n<=10;n++)     p=pow((r+1),n);     printf("p=%.2f",p);//%。2f保留两位小数 }  就是那个for循环那还有点懵，求大佬解答。

好的，知道了，感谢。


Question: 求大佬解答

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

int main(void) {     int i, j, n;      n = 9;     for (i = 1; i <= n; i++) {         for (j = 1; j <= i; j++)             printf("%dx%d=%-*d ", j, i, j==1?1:2, j * i);         printf("\n");     }      return 0; }

网上搜一下吧，应该有很多的说明，介绍和代码～


Question: PTA中的小问题

不要那么夸张，我是看你很勤快的写程序，算是一种鼓励吧

引用 12 楼 SuperDay的回复:没事，我用不上，你要好好写程序，发挥它的用处，就是对得起这分数了 天啊，大佬你是天使嘛，真是太有爱了，希望大佬越来越nb

天啊，大佬你是天使嘛，真是太有爱了，希望大佬越来越nb

没事，我用不上，你要好好写程序，发挥它的用处，就是对得起这分数了

引用 9 楼 SuperDay的回复:转给你了，有没收到？要多写程序，多练习多调试 大佬我才看到，竟然还有这种操作，好人一生平安好人一生平安好人一生平安好人一生平安好人一生平安好人一生平安好人一生平安，祝你好梦！

没事的，反正闲着也是闲着，看你们的错多了，自己就不会犯了

转给你了，有没收到？要多写程序，多练习多调试

引用 6 楼 乔碧萝大魔王的回复:[quote=引用 5 楼 SuperDay的回复:]两个if里面都有=号，都要改成==号 大佬，我又错在了这种弱智地方，你太强了[/quote] 爱自己亲自动手写程序的都是好孩子啊，你看看坛子里面多少个伸手党啊。我给你点分数吧，反正我拿着也没什么用

引用 3 楼 qq_45798109的回复:   if(digit=number)你确定是=不是==？ 你说的太对了，可惜我没有积分了只能给你十分，isososorry

引用 5 楼 SuperDay的回复:两个if里面都有=号，都要改成==号 大佬，我又错在了这种弱智地方，你太强了

两个if里面都有=号，都要改成==号

引用 3 楼 qq_45798109的回复:   if(digit=number)你确定是=不是==？ 大佬，救我。我改成那样也是不对的

if(digit=number)你确定是=不是==？

引用 1 楼 SuperDay的回复:又是你！你发的两个CountDigit，是哪个？ 大佬救我，我第一个是对的，第二个不知道错在哪

又是你！你发的两个CountDigit，是哪个？


Question: 求解答

但是，VS有一个比较奇葩的地方就是，在for里面定义的变量，外面仍然有效，所以，如果两个for里面定义同名的变量是不允许的，一般这种最好移动到前面去定义

在外面定义的话，他只是第一次循环时x的初始值为零 内部定义的话，就是每一次循环，它的初始值都为零

一般来说，在定义之后的区域内有效，也就是所谓的作用域，而循环内定义的变量，相当于语句块里面的，只对当前语句块有效


Question: 完数。输入两个数，输出两数之间的所有完数。不知哪里有问题，不运行

引用 1 楼 user-1的回复:对于每一轮的n循环，sum都要置0 并且这个是a到b的闭区间，你把范围也搞错了 哦哦哦题目搞错了。题中那个不等式只是端点值的范围，我自己糊涂了。每次循环sum都要置0 ，这个真的没搞清。谢谢喽~

对于每一轮的n循环，sum都要置0 并且这个是a到b的闭区间，你把范围也搞错了


Question: 关于linux执行的疑问

已经改过来了，谢谢！！！

引用 3 楼 自信男孩 的回复:[quote=引用 1 楼 apkipa1 的回复:] 除了对 z 的访问越界，没看出来其它问题。 x,y数组也都越界了。[/quote] 对的，我看漏了。

sum建议定义为double类型～ i < 3;不是i <=3

引用 1 楼 apkipa1 的回复:除了对 z 的访问越界，没看出来其它问题。 x,y数组也都越界了。

要学会调试程序，请参考调试程序的一亿种方法

除了对 z 的访问越界，没看出来其它问题。


Question: c语言 循环 break

引用 5 楼 github_37414436的回复:j=1，t=2 j=2，t=3 j=3，t=6 为什么t=6要读入呢 break不是当判断条件满足条件时，判断条件不输出么 t=6退出内层循环，这时候就到了s=s+t;这一句，因此6会被累加进去的

引用 3 楼 qq_45798109 的回复：是的.........看一下5楼😬

不太明白。。。。

i=1时，s=1，i=2时，s=4，接下来8个循环都是t=6，所以4+6x8=52，是不是这样


Question: 初学者

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

引用 5 楼 qq_45880623 的回复:[quote=引用 3 楼 user-2的回复:]while下次循环把sum和s清空一下 额，不懂清哪个…………[/quote] while (scanf("%d", &n) != EOF) 	{ 		memset(sum, 0, 100); 		s = 0; 		for (i = 0; i < n; i++) 		{ 			for (j = 0; j < n; j++) 			{ 				scanf("%d", &a[i][j]); 			} 		} ......

引用 6 楼 qq_45880623 的回复:[quote=引用 4 楼 user-2的回复:]而且魔法矩阵的判断不对吧。为什么没算对角线和竖线 对角线的如何算呢。。[/quote] 你循环里i==j和i==(n-j)时应该就是两条对角线吧，没试验，毕竟是对称的，代码调一下就能知道了

引用 4 楼 user-2的回复:而且魔法矩阵的判断不对吧。为什么没算对角线和竖线 对角线的如何算呢。。

引用 3 楼 user-2的回复:while下次循环把sum和s清空一下 额，不懂清哪个…………

而且魔法矩阵的判断不对吧。为什么没算对角线和竖线

while下次循环把sum和s清空一下

引用 1 楼 user-2的回复:代码呢！！！！ #include <stdio.h> #include <stdlib.h>  /* run this program using the console pauser or add your own getch, system("pause") or input loop */  int main(int argc, char *argv[]) { 	int n,i,j,a[100][100],sum[100]={0},s=0; 	while(scanf("%d",&n)!=EOF) 	{ 		for(i=0;i<n;i++) 		{ 			for(j=0;j<n;j++) 			{ 				scanf("%d",&a[i][j]);  			} 		} 		for(i=0;i<n;i++) 		{ 			for(j=0;j<n;j++) 			{ 				sum[i]+=a[i][j]; 			} 		} 		s=sum[0]; 		for(i=0;i<n;i++) 		{ 			if(s!=sum[i]) 			s=sum[i]; 		} 		if(s==sum[0]) 		{ 			printf("Yes %d\n",s); 		} 		else 		{ 			printf("No\n"); 		} 	} 	return 0; }

代码呢！！！！


Question: 为啥会出错   怎么改啊

错误提示信息函数原型都没有，元芳你怎么看？


Question: 问题

引用 2 楼 Cunesey 的回复:[quote=引用 1 楼 自信男孩的回复:]三处分别是：1) fun函数形参没有定义类型，应该是long 类型； 2) num /= 10;注意除号； 3) while(num)后缺少一个分号; 第二题不会写，求帮一下[/quote] 先自己写写，能写多少写多少，动手一下～

引用 1 楼 自信男孩的回复:三处分别是：1) fun函数形参没有定义类型，应该是long 类型； 2) num /= 10;注意除号； 3) while(num)后缺少一个分号; 第二题不会写，求帮一下


Question: 向多个MQTT服务器订阅主题问题

根据官方定义，该函数返回值为布尔型，true表示成功接收完消息；false表示有问题，客户端会重新调用MQTTClient_messageArrived接收数据。 “This function must return a boolean value indicating whether or not the message has been safely received by the client application. Returning true indicates that the message has been successfully handled. Returning false indicates that there was a problem. In this case, the client library will reinvoke MQTTClient_messageArrived() to attempt to deliver the message to the application again.”

问题解决了，bMsgArrvd在这里帖的代码中返回值为1，但是在实际项目中的返回值却为0，如果返回值为0，当第一次消息到达时可以正常接收，当第二次消息到达时，由于第一次返回值为0时，第二次就不会成功，为什么会返回值的问题造成这样的情况不知道原因。欢迎讨论


Question: 数据结构单链表删除所有值为x的元素

引用 1 楼 不闻窗外事的回复:因为你的p是从phead->next开始的啊，你没有计算phead本身呢 在后面定义了phead=NULL

引用 6 楼 Christopher__ 的回复:[quote=引用 3 楼 自信男孩的回复:]因为首节点没有比较，看一下p初始化为head的下一个节点了。  楼主可以先判断一下头结点，然后在判断后面的节点 我判断了  结构还是错误[/quote] 那要看你怎么判断了～ 贴出代码吧～

引用 3 楼 自信男孩的回复:因为首节点没有比较，看一下p初始化为head的下一个节点了。  楼主可以先判断一下头结点，然后在判断后面的节点 我判断了  结构还是错误

引用 2 楼 Christopher__ 的回复:[quote=引用 1 楼 不闻窗外事的回复:]因为你的p是从phead->next开始的啊，你没有计算phead本身呢 谢谢回答 所以应该怎么改进呢  [/quote] 比较好的办法是你搞一个头指针，不存放内容，也就是你的head不要放数据，单纯的就是指向链表的指针，这样会好一些

引用 2 楼 Christopher__的回复:[quote=引用 1 楼 不闻窗外事的回复:]因为你的p是从phead->next开始的啊，你没有计算phead本身呢 谢谢回答 所以应该怎么改进呢  [/quote] 把q=p换成q=phead  应该就可以了

引用 1 楼 不闻窗外事的回复:因为你的p是从phead->next开始的啊，你没有计算phead本身呢 谢谢回答 所以应该怎么改进呢

因为你的p是从phead->next开始的啊，你没有计算phead本身呢


Question: 怎么去理解递归呢？_(:з」∠)_

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

递归是函数调用自己的现象，注意每次调用时参数在变化。 递归是一种对称，是局部和整体的对称。 递归和循环，都需要退出条件。

开启debug模式，一步一步看递归程序是怎么走下去的，有助于理解

自己写个递归程序去调试下，写不来网上找一个

尽可能减少递归次数，把过程打出来，在这里问也没用，一二句话说不清楚

引用 1 楼 user-5的回复:如何理解，很简单，打个程序进去，把所有的过程全部打印出来仔细观察一遍就OK了 emmmmmmm...

如何理解，很简单，打个程序进去，把所有的过程全部打印出来仔细观察一遍就OK了


Question: 这个怎么运行不了啊

引用 3 楼 自信男孩的回复:这样的代码风格，确定是你写的吗？还是copy from other? 粘贴过来的，不知道为什么只能横着粘贴

这样的代码风格，确定是你写的吗？还是copy from other?

另外从程序内容看好象不能是C扩展名，应该是cpp

头文件好象只能一行一个吧


Question: 单链表删除所有值为x的元素

你可以设置一个带头结点的单链表，头结点里面不存数据

所以，你的代码呢？？？

把程序放上来啊，你这样怎么给你说


Question: C语言无限循环

引用 5 楼 月凉西厢 的回复:我也来一个 #include <conio.h> #include<stdio.h> #include<windows.h>  int main() { 	while (true) 	{ 		if (_kbhit()) { 			if (_getch() == 13) { 				break; 			} 		} 		printf("123456789\n"); 		Sleep(500);  	} 	return 0; } 学习了

引用 1 楼 user-5 的回复:#include <windows.h> int main() { 	while (!GetAsyncKeyState(13))//相应的键自己对于ASCII 	{ 		printf("123456789\n"); 		Sleep(50); 	}  	return 0; }

引用 2 楼 自信男孩的回复:可以用多线程，信号量来实现；  主线程接收输入设置一个变量，子线程打印（无限循环）和判断一个变量； 我是想在无限循环进行的同时，按下回车退出刷屏


Question: 可以看看哪里错了吗？

引用 7 楼 up___lqw 的回复:我把代码重新搞成一个图片  我们让你直接贴代码呢，是能直接拷贝了然后运行一下就知道哪里错了。而不是说你贴的图看不清

我把代码重新搞成一个图片

引用 5 楼 up___lqw 的回复:[quote=引用 4 楼 user-2的回复:]你不是有电脑吗？没电脑你的截图哪儿来的。 但我发帖用的手机…没用网站[/quote] 那就用网站发啊。。何必给帮你看问题的人不便呢，你贴个代码，帮你看问题的人会方便很多的

引用 4 楼 user-2的回复:你不是有电脑吗？没电脑你的截图哪儿来的。 但我发帖用的手机…没用网站

你不是有电脑吗？没电脑你的截图哪儿来的。

引用 1 楼 user-2的回复:贴代码。  ------------------------------------- 1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南 ------------------------------------- 用手机在哪里贴？没看到有这个

用手机在哪里贴？没看到有这个


Question: c语言字符串比较，为什么这个程序输出结果是1？且str2[1]无论怎么改，n2都等于1，请问问题出在哪？

char str2[2][6]={"heasdqerecto","world"};  这个定义就有问题， 【2】【6】表示这两个字符串都不能超过6个字符啊  int main()  { char str1[]="hello" ; char str2[2][6]={"heasd","world"}; int n1, n2; n1 = strncmp(str1, str2[0], 5); n2 = strncmp(str1, str2[1], 5); printf("%d %d", n1,  n2); return 0; }


Question: 想要调用外部程序，为啥一直报错

代码非字符串部分有中文符号了吧 看错误的提示是这个意思

字符串中的 \ 要写成 \\ 以防止被转义。

没有源码吗？


Question: 有大神会吗？

直接输出：    printf("+---+");    printf("-+-+-");    printf("--+--");    printf("-+-+-");    printf("+---+");  :-)  要写算法就是对角线上元素下标的特点为： 行列坐标相等，或者是和为4 for ( int i=0; i<5; i++ ) {     for (int j=0; j<5; j++)             if ( (i+j==4)   ||  (i==j) ) printf("+"); else printf("-");    printf("\n"); }

遍历二维数组，对角线上的坐标为(0.0,)(1,1)(2,2)(3,3)(4,4),其余的则不是对角线上的数值，是的话+，不是的话-。


Question: 【C语言编程题】

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

确实很有意思，可是没钱我都不会写程序的


Question: 【各位大神求教C语言一道有意思的桥梁问题


Question: 哪位大佬知道按照题目所给的空格数打出这个图形

emmmm，我需要的时前面空格数

这么多加一减一，不能抵消几个么？

/*-  * Copyright (C), 1999-2019, mymtom.  *                     _                *  ____  _   _ ____ _| |_ ___  ____    * |    \| | | |    (_   _) _ \|    \   * | | | | |_| | | | || || |_| | | | |  * |_|_|_|\__  |_|_|_| \__)___/|_|_|_|  *       (____/                         *  * vi:set ts=4 sw=4:  */  /**  * @file    LetterTraingle.c  * @brief     */  #include <ctype.h> #include <stdio.h>  /*  * 0         4  * 1-....----0  *             *           A  *          B B  *         C   C  *        D     D  *       EEEEEEEEE  */ static void printLetterTraingle(char c) {     int startColumn = 40;     int rows = c - 'A' + 1;     int leadingSpaces, middleSpaces;     int i, j;      for (i = 0; i < rows; i++) {         leadingSpaces = startColumn - 1 - i;         for (j = 0; j < leadingSpaces; j++) {             fputc(' ', stdout);         }         fputc('A' + i, stdout);          middleSpaces = (i * 2) - 1;         if (middleSpaces > 0) {             for (j = 0; j < middleSpaces; j++) {                 if (rows - 1 == i)                     /* last row */                     fputc('A' + i, stdout);                 else                     fputc(' ', stdout);             }             fputc('A' + i, stdout);         }          fputc('\n', stdout);     } }  int main(void) {     char c;      scanf("%c", &c);      if (isupper(c)) {         printLetterTraingle(c);     }      return 0; }

刚开始学的时候，先别想着一堆技巧，老老实实的按照找到的规律来写代码比较好  int main() { 	char c; // 输入的字符 	scanf("%c", &c); 	if ( c<'A' || c>'Z') {return 0;}; 	int row = 0; // 控制打印的行数  	for ( int i=0; i<39; i++) printf(" "); 	printf("A\n"); if ( c=='A') return 0;  	char ch = 'B'; //要打印的字符，每行自增1  	int i=0; 	for ( row=1; row<c-'A'; row++ ) { 		for (i=0; i<39-row; i++) printf(" "); 		printf("%c", ch); 		for(i=0; i<row*2-1; i++) printf(" "); 		printf("%c\n", ch); 		ch ++; 	} 	// 最后一行 	for ( i=0; i<39-row; i++) printf(" "); 	for ( i=0; i<2*row+1; i++) printf("%c", ch); 	printf("\n"); 	return 0;  }

怎么感觉楼主输出的是一个直角三角形呢。


Question: 求大佬拯救源代码统计

赶紧开始写吧，先写个框架也好啊，懒到这个程度，应该是属于晚期吧

引用 1 楼 不闻窗外事 的回复：行号很好统计，嵌套的话使用堆栈，遇到左大括号就把遇到的是第几个入栈，遇到右大括号，就出栈大神，求代码。实在是不行了。。


Question: C++

确实是输出一列星星

说的啥啊你 别凑数

#include <stdio.h>  int main () { 	int i; 	for (i = 0; i < 10; ++i) { 		printf("星星\n"); 	} 	return 0; }   如果已经解决，麻烦及时在电脑网页上结贴。 如果没有解决，可继续追问。 CSDN论坛新手指南


Question: 求大佬看一下

不是第二次循环，是第三次循环，i=0退出。

引用 4 楼 自信男孩的回复:continue之后就去判断while的条件了，因此i =-1时退出循环～ 是不是switch里的continue是跳while循环，不是跳switch的吧，我一开始理解成continue执行之后去判断switch了

continue之后就去判断while的条件了，因此i =-1时退出循环～

这里的continue指的是跳出本次while循环，所以不会继续运行下面的程序，直接走到了一下次while循环了

第一次continue以后直接跳到while了，话说我还没有用过这种用法，我do{}while(0);都是为了保证宏定义的语句是一个整体。

continue本来就是这样的，越过后面的程序，从下一次循环重新开始


Question: 大一新生，大佬们看看我这个程序哪里有问题。

引用 9 楼 SuperDay的回复:为什么要两个a++呢？把else去掉，只留后面那个a++就好了 有道理啊，我搞复杂了

为什么要两个a++呢？把else去掉，只留后面那个a++就好了

引用 6 楼 SuperDay的回复:那就while吧，也全不对，两个a++几个意思呢？你这个程序到处都不对 改成这样就可以是对的了

引用 6 楼 SuperDay的回复:那就while吧，也全不对，两个a++几个意思呢？你这个程序到处都不对 #include<stdio.h> int main() {     int i=2,a=1,sum=0;     while(i<=1000)     {        sum=0;        a=1;        while(a<i)        {             if(i%a==0)             sum+=a,a++;             else             a++;         }        if(sum==i)             printf("%d是完数",i);     i++;     }

那就while吧，也全不对，两个a++几个意思呢？你这个程序到处都不对

引用 2 楼 proorck2019的回复:sum=0的位置不对。 是的，应该放在第一个while下面

引用 3 楼 SuperDay的回复:到处都是问题，怎么说？为什么不用for for没讲，自己也用了for编，还是不对

到处都是问题，怎么说？为什么不用for

sum=0的位置不对。

因为你这个程序没有判断一个数是不是完数。

#include <stdio.h> int main(void) {     int num = 2;     while (num <= 1000) {         int i = 1;         int sum = 0;         int right = num / 2;         while (i <= right) {             if (num % i == 0) {                 sum += i;             }             ++i;         }         if (sum == num) {             printf("%d是完数\n", num);         }         ++num;     }     return 0; } /* 6是完数 28是完数 496是完数 Program exited with status 0 */   如果已经解决，麻烦及时在电脑网页上结贴。 如果没有解决，可继续追问。 CSDN论坛新手指南

引用 11 楼 SuperDay的回复:本来++就应该写在for里面的，程序看起来也很简洁。对于C语言来说，while等于是鸡肋 好吧，慢慢改进自己的技术


Question: 关于C语言的一道题麻烦指点一下，谢谢了

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

引用 2 楼 user-3的回复:楼上老哥，稳 就看看这个点了，还有没人跟我抢生意，发家致富就指着这个了

楼上老哥，稳

你先说清楚，是需要指点呢？还是需要帮你把程序写出来？如果是后者，起步价一千，自己看着办吧


Question: 函数调用

校友啊，19机械也在头秃

引用 7 楼 SuperDay的回复:p要用浮点数啊，不然算出来都是0了 我改成double型的了，可是输出结果还是零

p要用浮点数啊，不然算出来都是0了

引用 2 楼 proorck2019的回复:for(i=1;i<=n;i++) { sum=sum+p; } 这段好诡异啊？ 就是我在主函数里定义运算了p，不能用到Sop函数里吗？？？

引用 3 楼 自信男孩的回复:建议楼主把需求发一下，不然不清楚楼主的要做什么 编写函数,计算下列表达式的值,n从主函数中传入。 S=3/2^2-5/4^2+7/6^2-……+[(-1)^( n-1)]*2n-1/(2n)^2 测试数据有多组,每组单独占一行,仅包含一个正整数n, n < = 1000。 Output 对于每组输入数据,输出结果占行,为该表达式的值,小数位数输出6位。

我在主函数里定义然后调用不可以吗

建议楼主把需求发一下，不然不清楚楼主的要做什么

计算p都是由整数来的，精度都丢失了


Question: 函数调用

引用 3 楼 还没秃顶的景初的回复:以我看来你好像是想计算阶层之和对吧，然而你调用函数的时候虽然循环加了sum，但是你的p值是固定的，所以运行不到你想要的结果 那该怎么才能更改p的值呢？

引用 4 楼 自信男孩的回复:楼主发一下需求吧 编写函数,计算下列表达式的值,n从主函数中传入。 S=3/2^2-5/4^2+7/6^2-……+[(-1)^( n-1)]*2n-1/(2n)^2 测试数据有多组,每组单独占一行,仅包含一个正整数n, n < = 1000。 Output 对于每组输入数据,输出结果占行,为该表达式的值,小数位数输出6位。

引用 5 楼 weixin_40290083的回复:楼主发一下需求吧 编写函数,计算下列表达式的值,n从主函数中传入。 S=3/2^2-5/4^2+7/6^2-……+[(-1)^( n-1)]*2n-1/(2n)^2 测试数据有多组,每组单独占一行,仅包含一个正整数n, n < = 1000。 Output 对于每组输入数据,输出结果占行,为该表达式的值,小数位数输出6位。

楼主发一下需求吧

楼主发一下需求吧

首先，请问你一下你这程序是要做到一个什么样的事情，有没有题目之类的，其次你的程序有报错信息吗，然后才能帮你看怎么出错了

啥错误，不要光说结果有错，这看起来多麻烦


Question: 求助

引用 1 楼 qybao的回复:你每次用完n以后，n变了，你应该保存 n的初始值，每次用的时候重新用初始值更新n 比如 在第一个while之前 int tmp = n; 在第一个for之前 n = tmp; 嗯嗯，谢谢，谢谢谢谢

引用 2 楼 lqxzb 的回复:[quote=引用 1 楼 qybao的回复:]你每次用完n以后，n变了，你应该保存 n的初始值，每次用的时候重新用初始值更新n 比如 在第一个while之前 int tmp = n; 在第一个for之前 n = tmp; 嗯嗯，谢谢，谢谢谢谢[/quote] 如果已经解决，麻烦及时在电脑网页上结贴。 如果没有解决，可继续追问。 CSDN论坛新手指南


Question: 怎样用C语言输入三个字符逆向输出

大佬一般喜欢这么写：  #include <stdio.h> #include <conio.h> void get() {     static i = 0;     char c;     i++;     c = getche();     if (i < 3)         get();     else         printf("\r\n");     printf("%c", c); }  int main() {     get();     printf("\r\n");     system("pause");     return 0; }

通过取余取值 再赋值给变量 就好了

读到数组里，顺序从0-n，输出的时候从n-0就行


Question: 怎样用C语言输入三个字符逆向输出

我正好学过，下午给你写

引用 6 楼 还没秃顶的景初 的回复:[quote=引用 5 楼 lin5161678 的回复:] [quote=引用 4 楼 还没秃顶的景初 的回复:] [quote=引用 3 楼 还没秃顶的景初 的回复:] int main() { 	int n = 3; 	char a[n];	 	for(int i=(n-1);i>-1;i--){ 		scanf("%c",&a[i]); 	} 		 	printf("%s",a); 	 	   	return 0; } 应该是这样才对。[/quote]这么简单还能错 扶额  %s 遇到 0 才停止输出 你没处理 结尾0 这是错的 [/quote] 这里s%不是把字符数组转化成字符串输出出来的么？怎么会检测0呢[/quote]不检测0  %s 怎么知道什么时候 字符串输出完成呢

引用 5 楼 lin5161678 的回复:[quote=引用 4 楼 还没秃顶的景初 的回复:] [quote=引用 3 楼 还没秃顶的景初 的回复:] int main() { 	int n = 3; 	char a[n];	 	for(int i=(n-1);i>-1;i--){ 		scanf("%c",&a[i]); 	} 		 	printf("%s",a); 	 	   	return 0; } 应该是这样才对。[/quote]这么简单还能错 扶额  %s 遇到 0 才停止输出 你没处理 结尾0 这是错的 [/quote] 这里s%不是把字符数组转化成字符串输出出来的么？怎么会检测0呢

引用 4 楼 还没秃顶的景初 的回复:[quote=引用 3 楼 还没秃顶的景初 的回复:] int main() { 	int n = 3; 	char a[n];	 	for(int i=(n-1);i>-1;i--){ 		scanf("%c",&a[i]); 	} 		 	printf("%s",a); 	 	   	return 0; } 应该是这样才对。[/quote]这么简单还能错 扶额  %s 遇到 0 才停止输出 你没处理 结尾0 这是错的

引用 3 楼 还没秃顶的景初 的回复:int main() { 	int n = 3; 	char a[n];	 	for(int i=(n-1);i>-1;i--){ 		scanf("%c",&a[i]); 	} 		 	printf("%s",a); 	 	   	return 0; } 应该是这样才对。

引用 1 楼 636f6c696e 的回复：scanf printf任意三个字符

scanf printf

引用 11 楼 西木的家 的回复:谢谢  如果已经解决，麻烦及时在电脑网页上结贴。 如果没有解决，可继续追问。 CSDN论坛新手指南

引用 6 楼 还没秃顶的景初 的回复:[quote=引用 5 楼 lin5161678 的回复:] [quote=引用 4 楼 还没秃顶的景初 的回复:] [quote=引用 3 楼 还没秃顶的景初 的回复:] int main() { 	int n = 3; 	char a[n];	 	for(int i=(n-1);i>-1;i--){ 		scanf("%c",&a[i]); 	} 		 	printf("%s",a); 	 	   	return 0; } 应该是这样才对。[/quote]这么简单还能错 扶额  %s 遇到 0 才停止输出 你没处理 结尾0 这是错的 [/quote] 这里s%不是把字符数组转化成字符串输出出来的么？怎么会检测0呢[/quote] 这个0是值'\0'，字符串结束标记～改一下，改成如下：   #define SIZE    16 int main() {     char a[SIZE] = { 0 };        for(int i=(SIZE-2);i>= 0;i--){         scanf("%c",&a[i]);     }               printf("%s",a);     return 0; } 供参考～

引用 9 楼 wowpH 的回复： #include <stdio.h> #define N 3 int main() {     char a[N]; 	int i;     for(i = 0; i < N; ++i) {         scanf(" %c", &a[i]);     }     for(i = N - 1; i >= 0; --i) {         printf("%c", a[i]);         putchar(i > 0 ? ' ' : '\n');     }     return 0; } 谢谢

引用 8 楼 解书黎 的回复：我正好学过，下午给你写好的


Question: 一个球从100米高空自由落下，每次落地后反弹回原高度的一半，再落下，求它在第十次落地时共经过多少米，第十次反弹多高。

什么问题，看起来没问题

第十次的话n不应该从1开始吗？是我搞错了？

#include<stdio.h> int main() {     double h = 100, s = 0;     for(int i = 1; i <= 10; ++i) {         s += h;         h /= 2;         printf("第%d次落地时共经过%lf米\n", i, s);         printf("第%d次反弹%lf米\n", i, h);     }     return 0; } /* 第1次落地时共经过100.000000米 第1次反弹50.000000米 第2次落地时共经过150.000000米 第2次反弹25.000000米 第3次落地时共经过175.000000米 第3次反弹12.500000米 第4次落地时共经过187.500000米 第4次反弹6.250000米 第5次落地时共经过193.750000米 第5次反弹3.125000米 第6次落地时共经过196.875000米 第6次反弹1.562500米 第7次落地时共经过198.437500米 第7次反弹0.781250米 第8次落地时共经过199.218750米 第8次反弹0.390625米 第9次落地时共经过199.609375米 第9次反弹0.195313米 第10次落地时共经过199.804688米 第10次反弹0.097656米 Program exited with status 0 */


Question: 这个教材上这一段是不是有问题啊

希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

引用 2 楼 ???695 的回复:[quote=引用 1 楼 自信男孩的回复:]需要注意的是break是跳出switch，因此后面的也不会执行，不论后面的case有没有break，若case 'B'后有break 那么后面的都不会执行的。 所以如果grade是B的话应该不会输出他写的那个值吧[/quote] 你从逻辑上也可以看出那应该是70~84吧

70-40，写错了。

代码里面敲错了，70-84

只是个印刷错误罢了。

引用 1 楼 自信男孩的回复:需要注意的是break是跳出switch，因此后面的也不会执行，不论后面的case有没有break，若case 'B'后有break 那么后面的都不会执行的。 所以如果grade是B的话应该不会输出他写的那个值吧


Question: 这个教材上这一段是不是有问题啊

印刷错误，40应为84 程序逻辑出来应该是输出70~40


Question: 纯梦想关于Ubuntu里配置a.out文件的问题

a.out是编译出来的吧，不是配置的吧

怎么不去linux专区问？


Question: 小白求助

引用 5 楼 qinglouchangke 的回复:感谢以上各位友人 不客气  1、如果问题已经得到解决，请及时结贴。结贴教程。 2、如果没有解决，可继续追问。 3、只能在电脑网页上结贴，手机不能结贴。 CSDN论坛新手指南

感谢以上各位友人

#include <stdio.h> #include <string.h>  char a[1000][15]; int b[1000];  int main() {     int n,i,j,k,max;     while (scanf("%d", &n)!=EOF)     {         //if(n=0)         if(n==0)             break;         for (i=1;i<=n;i++)         {             b[i]=0;             scanf("%s",a[i]);          }         for (i=1;i<=n;i++)         {             for (j=1;j<=n;j++)                 if(strcmp(a[i],a[j])==0)                 {                     b[i]++;                 }          }         max=b[1];         k = 1;         for(i=2;i<n;i++)         {             if(b[i]>max)             {                 max=b[i];                 k=i;             }          }         printf("%s\n",a[k]);     }     return 0; }  供参考～  每次输入的n都会变成0.

字符串比较strcmp

指的是哪个比较

做比较的那段，为什么不跳过自己跟自己比较呢？


Question: 求问

引用 3 楼 BuaaFrancisco 的回复:[quote=引用 1 楼 qq_45798109的回复:]二维字符数组。。。。 想知道这样的代码怎么写[/quote] 自己比较一下我注释掉的和没注释掉的有点区别，自己运行一下看看 #include <stdio.h> int main(){ 	int row,col;	//row是你要输入的行数，col要大于所有行中的字符个数 	scanf("%d%d",&row,&col);  	char a[row][col]; 	getchar(); 	for (int i = 0; i < row; ++i) { 		scanf("%s",&a[i]); //遇到换行符，空格，TAB结束 	//	gets(a[i]);	 //遇到换行符才会结束 	} 	for (int i = 0; i < row; ++i) { 		printf("%s\n",&a[i]); 	//	puts(a[i]); 	} 	return 0; }

引用 1 楼 qq_45798109的回复:二维字符数组。。。。 想知道这样的代码怎么写

typedef char String[20] char a[20] char b[20] String c[2]={a,b} c[0],c[1]

二维字符数组。。。。