Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 求大佬帮助，写了一个关于链表的c程序，没有错误但运行不出结果

回复:
user: user-1
content: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h>   typedef struct Node { 	int element; 	struct Node* next; }Node,* NodePtr;  NodePtr recursiveInsert(NodePtr frist, NodePtr newNode) { 	if (!frist) 	{ 		newNode->next = frist; 		return newNode; 	} 	if (frist->element > newNode->element) 	{ 		newNode->next = frist; 		return newNode; 	} 	frist->next = recursiveInsert(frist->next, newNode); 	return frist; }  void insert(NodePtr node, int element) { 	NodePtr p = (NodePtr)malloc(sizeof(Node)); 	p->element = element; 	node->next = recursiveInsert(node->next, p); }  void printNode(NodePtr node) { 	while (node) 	{ 		printf("%d\n", node->element); 		node = node->next; 	} }  int main(int argc, char* argv[]) { 	int n; 	scanf("%d", &n); 	int* p = (int*)malloc(sizeof(int) * n);  	for (int i = 0; i < n; i++) 	{ 		scanf("%d",p+i); 	} 	Node node;		 	node.next = NULL;  	for (size_t i = 0; i < n; i++) 	{ 		insert(&node, p[i]); 	} 	printNode(node.next); 	free(p); 	return 0; }   我把 核心代码给你写好了，你就稍微完事一下就行、

user: user-1
content: 与其说改，不如说，重写。我今天倒是写了一个  单链表博文，但是没有写升序插入这些方法。

user: user-0
content: 引用 1 楼 BCMY0110 的回复：看这开头就觉得太骚气了吧， int n;  int a[n+1]  scanf("%d",&n);   这还能跑也是很厉害了。那该咋改一下啊dalao，新生在线求助，写了一晚上了

user: user-1
content: 看这开头就觉得太骚气了吧， int n;  int a[n+1]  scanf("%d",&n);   这还能跑也是很厉害了。
user-0 提问: PTA组个最小数

回复:
user: user-0
content: 引用 2 楼 寻开心 的回复:先是排序 排序后，从头开始找第一个非0的数字，然后让它和第一个交换， 需要注意的是，第一个也许根本就不是0呢  a[0]=a[n];  a[n]=0; 这么写太绝对了。要么增加一个判断n是否是0，要么就强制a【0】和a【n】做交换   还有一个特例，我输入10个0会如何呢， 结果你是输出一个0还是10个0，还谢谢大佬，大佬天天开心一生平安

user: user-1
content: 先是排序 排序后，从头开始找第一个非0的数字，然后让它和第一个交换， 需要注意的是，第一个也许根本就不是0呢  a[0]=a[n];  a[n]=0; 这么写太绝对了。要么增加一个判断n是否是0，要么就强制a【0】和a【n】做交换   还有一个特例，我输入10个0会如何呢， 结果你是输出一个0还是10个0，还

user: user-2
content: if(a[0]==0) { for(i=0;i<10;i++)  {  if(a[i]==0) {         n=n+1; }  } }
user-0 提问: 程序设计

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

user: user-0
content: 求关于这道题的算法设计，让时间复杂度尽量低一点
user-0 提问: 江湖救急

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

user: user-0
content: 我可能问了你一个在你看来是一加一等于几的问题，但是在我这里却是不可描述难度的问题。所以这么和你说吧，你所提到的三个定义，我都没见过，其次你后面说的几个问题在几个小时前我也是两眼抹黑的。然后现在的问题是我找到了这几个问题的答案但是不能在一个程序里面统一起来。你发的网址我打开了，不过里面的文件层面的讲解和我学的不是一个类型。所以用不了。否则我其他的知识点接不过去。不过还是要谢谢你给我把实现这个程序的步骤告诉我，我原本只是感觉到应该这样，但是因为完全没有接触过这类问题所以无从下手，没有方向。现在起码知道该从哪里入手。嗯，再次表示对你的感谢。

user: user-2
content: 字符串函数strlen可以计算字符串的长度， 多个字符串挨个调用一遍比较一下就知道哪一个最大了 如果使用c++的string类型， 自带的length（）函数会返回字符串的长度  真个代码因该是这样的步骤  读取一个整数m 如果m<1 直接返回就是了 打开一个文件，以写入的方式打开 循环m次      从键盘读取字符串      把字符串写入打开的文件 关闭文件  定义三个变量 int maxLen 和 string maxString， tempString 打开文件 循环m次      读取一行到tempString      如果是第一次读取，maxLen = tempString.length(); maxString=tempString； continue;      用tempString的长度和maxLen比较，是否更新maxLen和maxString的内容 关闭文件 打开新的文件，用写的方式 把maxString输出到新的文件 关闭新文件  整个流程当中没有什么难点存在 你的问题是在哪里？  string类不会可以用char数组代替也可以； 还是文件读写不会？ 文件操作可以参考： https://www.runoob.com/cplusplus/cpp-files-streams.html

user: user-0
content: 引用 3 楼 寻开心的回复:这里用到的都是基本的问题， 关于哪一个部分的功能不会，可以把会的做好，不会的单独留出来 不会的部分，可以分享样例的代码给你 替做作业不是这个论坛要做的事儿，提供技术支持没有问题 其次，一个问题的存在，本身解决的过程就有多种多样的，我不否认我想直接知道答案，因为时间有点紧（两小时前拿到题目），但是给出答案的过程是解答一方决定的，答案是探讨出来的还是直接被得出来的不是我所能决定的。

user: user-0
content: 引用 3 楼 寻开心的回复:这里用到的都是基本的问题， 关于哪一个部分的功能不会，可以把会的做好，不会的单独留出来 不会的部分，可以分享样例的代码给你 替做作业不是这个论坛要做的事儿，提供技术支持没有问题 其实可以这么理解，从在main函数中创建一个文件。然后在所有字符串中找到最长的那个字符串并且存储在其它位置不会。前辈能指点一二吗

user: user-2
content: 这里用到的都是基本的问题， 关于哪一个部分的功能不会，可以把会的做好，不会的单独留出来 不会的部分，可以分享样例的代码给你 替做作业不是这个论坛要做的事儿，提供技术支持没有问题

user: user-0
content: 引用 1 楼 寻开心的回复:这里不负责提供这种基本功能的源代码  自己写，遇到具体问题，贴代码上来 这超出我的知识储备，突然碰到一个作业题需要立即处理，我也很尴尬嘞

user: user-2
content: 这里不负责提供这种基本功能的源代码  自己写，遇到具体问题，贴代码上来
user-0 提问: 二维数组

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

user: user-2
content: 你要对sum做冒泡排序吧 写出那个代码， 在交换sum对数据的时候，同时交换a数组的数据 for  I    for. j      if sum 比较后要交换 sun[x] 和 sum[y] 的 话 {                t = sum[x];  sum[x]=sum[y]. sum[y]=t; // 这样交换sum数据， 那么同步补充上下面的                for ( k=0; k<4; k++ ) {                          t = a[x][k]; a[x][k]=a[y][k]; a[y][k]= t;                }. // 这样取保a里面的数据和sum里面的数据还是对应关系      }

user: user-0
content: 引用 7 楼 寻开心的回复:录入数据放到struct student这个结构数组student【100】里面 录入的过程就同时计算出平均分儿放到avg变量里面 然后你不是要根据平均分儿排序吗？  比如30个学生， 排序需要一个算法， 冒泡是所有书里面都有的算法 比较是在冒泡排序过程中的比较， 比较后根据结果交换数据的时候，把整个结构当中所有内容都交换，不是只交换avg一个数据 其实我暂时还不了解结构数组 #include <stdio.h>  int main() { 	int i,j; 	float a[5][4],sum[4]={0}; 	printf("\t\t课程1\t课程2\t课程3\t课程4\n"); 	for(i=0;i<5;i++) { 		printf("%d号学生",i+1); 		for(j=0;j<4;j++) 		scanf("%f",&a[i][j]); 	} 	for(j=0;j<4;j++) 		for(i=0;i<5;i++) 			sum[i] += a[i][j]; 	 	printf("\t\t成绩表\n"); 	printf("\t课程1\t课程2\t课程3\t课程4\t平均分\n"); 	for(i=0;i<5;i++) { 		printf("\n学生%d:\t",i+1); 		for(j=0;j<4;j++) 		printf(" %.1f\t",a[i][j]); 		printf(" %.1f",sum[i]/4); 		printf("\n"); 	} 	return 0; } 如果在这个基础上如何实现排序呢

user: user-2
content: 录入数据放到struct student这个结构数组student【100】里面 录入的过程就同时计算出平均分儿放到avg变量里面 然后你不是要根据平均分儿排序吗？  比如30个学生， 排序需要一个算法， 冒泡是所有书里面都有的算法 比较是在冒泡排序过程中的比较， 比较后根据结果交换数据的时候，把整个结构当中所有内容都交换，不是只交换avg一个数据

user: user-0
content: 引用 3 楼 寻开心的回复:struct Student {     int id;     int. score[4];     float avg; } student[100];  录入成绩的同时，计算平均分儿梵高avg里面  按照冒泡排序的思路，对student【ℹ️】。avg和studnent[j].avg 做比较，交换数据就行了 如果单纯比较平均分是不是用不太上冒泡排序

user: user-0
content: 引用 3 楼 寻开心的回复:struct Student {     int id;     int. score[4];     float avg; } student[100];  录入成绩的同时，计算平均分儿梵高avg里面  按照冒泡排序的思路，对student【ℹ️】。avg和studnent[j].avg 做比较，交换数据就行了 如果单纯用冒泡排序的话，怎样实现整个学生成绩排序

user: user-0
content: 引用 3 楼 寻开心的回复:struct Student {     int id;     int. score[4];     float avg; } student[100];  录入成绩的同时，计算平均分儿梵高avg里面  按照冒泡排序的思路，对student【ℹ️】。avg和studnent[j].avg 做比较，交换数据就行了 我不太明白老哥写的程序比如说第一行

user: user-2
content: struct Student {     int id;     int. score[4];     float avg; } student[100];  录入成绩的同时，计算平均分儿梵高avg里面  按照冒泡排序的思路，对student【ℹ️】。avg和studnent[j].avg 做比较，交换数据就行了

user: user-0
content: 引用 1 楼 寻开心 的回复:又是这个问题 都是一所学校的学生吗  还是给一样的答案， 自己写代码， 遇到问题贴上来提问，要源码的自己百度去我不太明白怎样实现比较平均数，实现所有成绩重新排序

user: user-2
content: 又是这个问题 都是一所学校的学生吗  还是给一样的答案， 自己写代码， 遇到问题贴上来提问，要源码的自己百度去
user-0 提问: C语言冒泡排序实现一组数据的排序

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 求助结构体问题

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

user: user-2
content: 提交自己有问题的代码上来提问  如果只要源码， 自己baidu吧
user-0 提问: C语言

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

user: user-2
content: 这个论坛不负责提供最基础问题的源码的  你可以自己做，只要是自己写的， 有任何问题都可以发上来提问
user-0 提问: 求大佬解答

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

user: user-2
content: 晕，你贴一下，代码啊。  把那个定义放到哪儿去了？  错误原因就是ad没有定义。

user: user-0
content: 引用 1 楼 寻开心的回复:你的程序就一个错误 ad 没有定义  在ad=。。。。语句之前加一行 float ad； 不行   变成7个了

user: user-2
content: 你的程序就一个错误 ad 没有定义  在ad=。。。。语句之前加一行 float ad；
user-0 提问: 关于C语言基础的题

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

user: user-0
content: 引用 1 楼 寻开心的回复:任何一本C语言教程书上都会有的东西，还是好好看书吧  直接要代码的自己百度去  写的再烂，只要是自己写的，发上来就有答复 受教了，谢谢您的回复

user: user-2
content: 任何一本C语言教程书上都会有的东西，还是好好看书吧  直接要代码的自己百度去  写的再烂，只要是自己写的，发上来就有答复
user-0 提问: 大哥哥姐姐们帮帮我吧

回复:
user: user-0
content: 引用 1 楼 寻开心的回复:int i = 0,o,n,b[1000]; scanf("%d",b[i]);   scanf("%d",b[i]);   这个要取地址啊。  &b[i] 真是谢谢了，每次都是你说的

user: user-0
content: 引用 1 楼 寻开心的回复:int i = 0,o,n,b[1000]; scanf("%d",b[i]);   scanf("%d",b[i]);   这个要取地址啊。  &b[i] 谢谢你 ，，，，谢谢

user: user-1
content: 因为没有那个&， 数组第一个元素并没有被保存到数组当中， 所以你自然也找不到它了

user: user-1
content: int i = 0,o,n,b[1000]; scanf("%d",b[i]);   scanf("%d",b[i]);   这个要取地址啊。  &b[i]
user-0 提问: 请教大神，程序运行了数码管怎样不亮，怎样修改程序才可以使数码管显示2000

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 新人请教一下问题程序运行崩溃问题

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

user: user-0
content: 引用 1 楼 寻开心 的回复：BitTree * CreBiTree( ) {     BitTree * bt;    ElemType x;     scanf("%c",&x);    if(x==' ')            bt=NULL;     else{           bt=(BitTree *)malloc(sizeof(BitTree));          bt->data=x;          bt->lc= CreBiTree();          bt->rc =CreBiTree();      }  return bt;  // 缺少这句 }  这是你的通病， 都没有return， 没有return就无法做后续的处理 其他的几个函数也是这个问题真的感谢你了

user: user-0
content: 引用 2 楼 寻开心 的回复：PreOrder 的顺序不对， 应该是先左树  自己的数值 再右树    左中右的次序； 你的中左右是中序输出了  NodeCount的计数不对， 没有return， 算法是 ｛       int c = 1;       如果左子树不空 c+=NodeCount（左子树）       如果右子树不空 c+= NodeCount(右子树）       return c； ｝类似你的HightTree算法  后面堆一坨的东西就没兴趣看了。要想别人帮助，起码把东西弄的让人看起来不烦吧谢谢你的帮忙，这个代码太长他自己变成这样的

user: user-2
content: PreOrder 的顺序不对， 应该是先左树  自己的数值 再右树    左中右的次序； 你的中左右是中序输出了  NodeCount的计数不对， 没有return， 算法是 ｛       int c = 1;       如果左子树不空 c+=NodeCount（左子树）       如果右子树不空 c+= NodeCount(右子树）       return c； ｝类似你的HightTree算法  后面堆一坨的东西就没兴趣看了。要想别人帮助，起码把东西弄的让人看起来不烦吧

user: user-2
content: BitTree * CreBiTree( ) {     BitTree * bt;    ElemType x;     scanf("%c",&x);    if(x==' ')            bt=NULL;     else{           bt=(BitTree *)malloc(sizeof(BitTree));          bt->data=x;          bt->lc= CreBiTree();          bt->rc =CreBiTree();      }  return bt;  // 缺少这句 }  这是你的通病， 都没有return， 没有return就无法做后续的处理 其他的几个函数也是这个问题
user-0 提问: codeblocks报错问题

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

user: user-0
content: 有人吗有人吗有人吗有人吗

user: user-0
content: 试过下载一个odbe32.lib文件放在lib文件夹里还是没有用
user-0 提问: 我想问一下一道车辆限行的题为什么我输入任何数字回答都是no？

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

user: user-0
content: 我知道了，是我太粗心了
user-0 提问: C++编程问题

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

user: user-2
content: 引用 4 楼 寻开心 的回复:？   [quote=引用 3 楼 千梦一生 的回复:] 我个人认为他是提示地这种错误，我地猜测，你可以尝试验证一下：  char a = -128,b = -128; int c = a-b; 也许希望地结果是-256。但这个时候c的结果会不会是0？你试试吧，我觉得它提示的就是这个意思  什么个意思，难道这个c不应该是0吗？ 怎么可能是-256啊 即便是加法，它也应该是-256 而不是0，除非是char c = a+b 才有可能溢出为0[/quote]  我？好是我没写代码验证。 我的意思是，如果我猜测正确的话。那么他报错就是这个意思。  编译器推测 int c = a-b;这是时候的业务需求可能实际上是想要得到-256（不然又何必扩大数据宽度）。但按照运算规则得到的答案将是0，而不是你（可能）期望的-256。所以爆出一个警告。

user: user-3
content: str+++j 到底是 str+(++j)还是 (str++)+j

user: user-4
content: ？   引用 3 楼 千梦一生 的回复:我个人认为他是提示地这种错误，我地猜测，你可以尝试验证一下：  char a = -128,b = -128; int c = a-b; 也许希望地结果是-256。但这个时候c的结果会不会是0？你试试吧，我觉得它提示的就是这个意思  什么个意思，难道这个c不应该是0吗？ 怎么可能是-256啊 即便是加法，它也应该是-256 而不是0，除非是char c = a+b 才有可能溢出为0

user: user-2
content: 我个人认为他是提示地这种错误，我地猜测，你可以尝试验证一下：  char a = -128,b = -128; int c = a-b; 也许希望地结果是-256。但这个时候c的结果会不会是0？你试试吧，我觉得它提示的就是这个意思

user: user-5
content: 这是个警告，而且告诉你解决方案了，强制类型转换就可以了。。 或者使用同样的类型就行了。

user: user-4
content: 这只是警告 未必是错误 必须熟知自己要处理的数据的范围，如果确信没有问题，要避免这个警告可以加上一个强制转换 如果确实是问题，就要更改变量的类型，让前后能够匹配
user-0 提问: 帮忙改下

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

user: user-2
content: 发你调整后的代码 看截图， 出错就是在有执行语句的parr = ..... 这个赋值语句上 他前面对parr的定义并没有报错啊

user: user-0
content: 引用 2 楼 寻开心的回复:啥意思， 全局变量里面居然有表达式了？   代码要放到函数体里面的， parr= malloc 那一行是执行代码，不能这样定义 我昨天晚上也想到了，然后把那个表达式放主函数了，还是有错误。说没有给parr说明类型。

user: user-2
content: 啥意思， 全局变量里面居然有表达式了？   代码要放到函数体里面的， parr= malloc 那一行是执行代码，不能这样定义

user: user-0
content: 图片有些重复，前三个就可以了
user-0 提问: 求素数

回复:
user: user-0
content: 引用 8 楼 636f6c696e的回复:到现在都没有一个的素数定理，从这块着手别想了。 你的程序是错误的，才会让你有素数有规律的错觉 用1~8八个数字构成各位不重复的8位数 而你的打印中每个都有重复数字 [quote=引用 7 楼 與蘤舊縐 的回复:] [quote=引用 5 楼 636f6c696e 的回复:] 这么多数字求素数，你不会预先把sqrt(10^9)的素数先求出来放到表里面么？ 恕我愚钝，没摸明白意思，或者说想到了几种可能，但不知道是哪种 我本来想的优化方案是是否可以找到一个小范围内的所有素数，因为有些素数前面加上几位之后依旧是素数，所以想是否可能通过这些找到的素数直接找更多的素数，但首先是不能确定范围，因为有些非素数前面加上几位也变成了素数，其次就没有其次了~~数学撑不住 如果先求素数再判断是否满足不重复八位数的条件，这样的思路对于多线程比较好操作，当然多开线程纯属耍赖[/quote][/quote] 是的，一开始没发现，不过也知道并不行

user: user-1
content: 到现在都没有一个的素数定理，从这块着手别想了。 你的程序是错误的，才会让你有素数有规律的错觉 用1~8八个数字构成各位不重复的8位数 而你的打印中每个都有重复数字 引用 7 楼 與蘤舊縐 的回复:[quote=引用 5 楼 636f6c696e 的回复:] 这么多数字求素数，你不会预先把sqrt(10^9)的素数先求出来放到表里面么？ 恕我愚钝，没摸明白意思，或者说想到了几种可能，但不知道是哪种 我本来想的优化方案是是否可以找到一个小范围内的所有素数，因为有些素数前面加上几位之后依旧是素数，所以想是否可能通过这些找到的素数直接找更多的素数，但首先是不能确定范围，因为有些非素数前面加上几位也变成了素数，其次就没有其次了~~数学撑不住 如果先求素数再判断是否满足不重复八位数的条件，这样的思路对于多线程比较好操作，当然多开线程纯属耍赖[/quote]

user: user-0
content: 生成八位数的部分稍微改一下就好，还是请教思想问题

user: user-0
content: 引用 1 楼 SuperDay的回复:不重复不重复不重复！重要的事情说三遍 还有，你这个是C语言吗？ 是写错了，还没发现，至于语言，我早说了不是c，我只是来请教思想，无关语言

user: user-2
content: 不重复不重复不重复！重要的事情说三遍 还有，你这个是C语言吗？

user: user-0
content: 引用 5 楼 636f6c696e 的回复:这么多数字求素数，你不会预先把sqrt(10^9)的素数先求出来放到表里面么？ 恕我愚钝，没摸明白意思，或者说想到了几种可能，但不知道是哪种 我本来想的优化方案是是否可以找到一个小范围内的所有素数，因为有些素数前面加上几位之后依旧是素数，所以想是否可能通过这些找到的素数直接找更多的素数，但首先是不能确定范围，因为有些非素数前面加上几位也变成了素数，其次就没有其次了~~数学撑不住 如果先求素数再判断是否满足不重复八位数的条件，这样的思路对于多线程比较好操作，当然多开线程纯属耍赖

user: user-0
content: 引用 4 楼 寻开心 的回复:全排列的方法很多种，很少直接嵌套8重循环的， 因为这个方法不具备通用性 随便改一下，用1~7来做同样的题目，你的算法就要改变 生成全排列是很有规律的事儿， 但是素数不是，素数就是没有特别显著的规律，就本题目来说除了个位数只能是137之外  不过你倒是可以试试用最快的筛素数法，把所有八位的素数都找出来看看用多久 筛素数法需要开个char类型，大小87654321字节，现代计算机应该也内存足够  筛素数法是个好办法，感谢推荐，如果这样的话，可能到是反着求更快点，即先找素数，再确定素数是否满足不重复八位数的条件

user: user-1
content: 这么多数字求素数，你不会预先把sqrt(10^9)的素数先求出来放到表里面么？

user: user-3
content: 全排列的方法很多种，很少直接嵌套8重循环的， 因为这个方法不具备通用性 随便改一下，用1~7来做同样的题目，你的算法就要改变 生成全排列是很有规律的事儿， 但是素数不是，素数就是没有特别显著的规律，就本题目来说除了个位数只能是137之外  不过你倒是可以试试用最快的筛素数法，把所有八位的素数都找出来看看用多久 筛素数法需要开个char类型，大小87654321字节，现代计算机应该也内存足够
user-0 提问: 如何分析调用数组的c（苏小红版C语言程序设计8.1）

回复:
user: user-1
content: 定义了一个静态整型数组a，并赋初值，将a传入函数，并改变形参的值，打印a数组，观察值是否改变

user: user-2
content: 分析过程不外乎三种办法 1  纸上，一步一步的推进 2  debug调试，跟踪变量 3  每执行一句打印一个结果出来 比如：   在 b[j]=j; 这一行下面增加一句       printf（“ j= %d b【j】=%d\n”， j， b【j]】）；  自己看看输出， 就知道了函数里面是如何变化的了
user-0 提问: c语言的题目，希望能给出代码

回复:
user: user-1
content: 自己写吧，这题目只要会数组就不难

user: user-2
content: 双重循环     外层 i 从0到N-1       内层 j从i+1到N          判断矩阵[i][j]  和 [j][i] 是否不等， 不等就不是对称，输出结果直接返回就好    输出对称  注意一下，i，j 的循环范围  代码自己写
user-0 提问: static作用

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

user: user-2
content: for (; i < 3; i++)     {         static int i=1;         i+=fun(i);         printf("%d\n",i);     } 等同于 int j = 1; for (; i < 3; i++)     {         j+=fun(j);         printf("%d\n",j);     }

user: user-3
content: 简单的说，把循环体内所有出现的i， 都当成另外一个变量j来想就清楚了。  因为static int I=1；的这个定义。  和static无关， 是int I的定义，让这个I和for循环的I产生了区别

user: user-3
content: 这又是谁出的烧脑的题啊  int I=0； I=fun（I）； // 此时I=0  for （ ； i<3; I ++ ) {     static int I=1;   这里重新定义了I，而且是static类型，每次进来都保持上次结果     I += fun（I）；  // 此时的i使用的是，static I； 已经不是for语句的I了    printf（I）； // 2，6， 42就是这里输出的 } printf(i) // 输出3，这个是 for里面的I。 循环体内的i出了循环体就无效了   这是c语言， 如果是c++， 在循环体内用::i还是可以继续引用全局的i的。c里面没有这个定义

user: user-3
content: 你把static理解成为全局变量来理解， 只是这个变量只在这个循环体内有效 static int I=1；  只有在第一次进入循环体的时候才是1， 属于定义时候的初始化 此后再次进来的时候，还是上次的数值
user-0 提问: 如何实现定义一个n阶的二维数组？

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

user: user-2
content: 应该是想搞一个一开始未知行列的二维数组吧 初学者一般就定义一个大的，然后根据需要选择其中的一部分使用就行 不然可以自己根据需要分配内存空间，但初学应该学不到这里

user: user-3
content: int a[3][3]= {{1,2,3}, {4,5,6}, {7, 8, 9}}; int b[3][3] = {1,2,3,4,5,6,7,8,9 }; 两个一样
user-0 提问: 这道题如何设计输入未知个数的编程呢？

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

user: user-2
content: 可以使用结束符，ctrl+D(linux), ctrl+Z(window)，对应的是文件结束符

user: user-3
content: 自己写代码，再烂也可以发上来提问  要原码的自己百度就行了
user-0 提问: C语言！！！！！

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

user: user-0
content: 引用 7 楼 自信男孩 的回复：#include "stdio.h"  int main() {     int a, n, s, t;     printf("Please input a,n:\n");     scanf("%d%d", &a, &n);     if (n <= 0) {         printf("s= %d", 0);          return 0;     }     s = 0;     t = a;     //printf("%d + ", t);     while (n>1)     {         s = s + t;         t = (t * 10) + a;         //printf("%d + ", t);         n--;     }     s += t;     //printf("%d\n", t);     printf("s=%d", s);     return 0; }  供参考～%d+ 还有 n--/是什么意思 求指教

user: user-2
content: #include "stdio.h"  int main() {     int a, n, s, t;     printf("Please input a,n:\n");     scanf("%d%d", &a, &n);     if (n <= 0) {         printf("s= %d", 0);          return 0;     }     s = 0;     t = a;     //printf("%d + ", t);     while (n>1)     {         s = s + t;         t = (t * 10) + a;         //printf("%d + ", t);         n--;     }     s += t;     //printf("%d\n", t);     printf("s=%d", s);     return 0; }  供参考～

user: user-0
content: 引用 4 楼 WQR1994 的回复：那怎么会s未定义……我加上了 但是.. 输入了a 和n之后 没结果

user: user-0
content: 引用 3 楼 user-4 的回复:a值不变  循环第一句是 t = a; 不停重置 t 等于你一直加相同数 我那个while循环里面第一句不是用了 t=a了吗

user: user-3
content: 那怎么会s未定义……

user: user-4
content: a值不变  循环第一句是 t = a; 不停重置 t 等于你一直加相同数

user: user-0
content: 引用 1 楼 WQR1994 的回复:应该是没初始化吧,加上s=0; 改为 int s=0 也不对啊

user: user-3
content: 应该是没初始化吧,加上s=0;
user-0 提问: 郑州轻工业大学第十一届蓝桥杯选拔赛

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

user: user-2
content: #include <stdio.h> #include <string.h> #include <ctype.h>   int encrypt(int ch, int n) {     if (islower(ch))         return 'a' + (ch - 'a' + n) % 26;     if (isupper(ch))         return 'A' + (ch - 'A' + n) % 26;      return ch; }   int main() {     char str[100];     scanf("%s", str);     int i,a;     a=strlen(str);     for(i=0;i<a;i++)     {         str[i] = encrypt(str[i], 3);     }   供参考～
user-0 提问: WM_SETHOTKEY如何正确使用？为何窗口不激活？

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

user: user-0
content: 有知道的大佬可以回个话不？
user-0 提问: C语言书上的题

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

user: user-2
content: 百度“C语言单词缩写”
user-0 提问: 排序求解

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

user: user-0
content: 引用 楼主 txrainyun的回复:这里为什么会输出奇怪的数字呢？求解 #include <stdio.h>int main( ) { int n,i,j,t,a[10] ;scanf( "%d" , &n) ; for(i=0;i<n;i++ )scanf("%d" ,&a[i]);for(i=0; i<n-1;i++ ){ for(j=0;j<n-1-i;j++) if(a[j]<a[j+1])t=a[j]; a[j]=a[j+1] ;a[j+1 ]=t; } } for(i=0;i<n;i++){ if(i==n-1) pr intf( "%d\n" ,a[i]);else printf("%d ",a[i]);return 0;

user: user-2
content: 不知道   不给出代码， 神仙也猜不出来啊
user-0 提问: 郑州轻工业大学第十一届蓝桥杯校内选拔赛题解

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

user: user-0
content: 这个题要了解字符串数组的输入和判断其长度以便于控制循环的次数，然后就是出现第一个元音时要跳出循环用break语句，但是早知道要在if语句中结束。
user-0 提问: C-Free下编译运行提示运行程序错误，运行简单的没问题，稍微复杂的就不行了

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

user: user-2
content: 警告应该是没有 #include <stdlib.h> 因为malloc原型是在这个头文件里面  什么叫简单运行可以，稍微复杂就不行了呢？  代码当中除了head->date没有被利用属于废物节点之外， 其他输入的数据都是串联在后面了，单项链表已经形成了。
user-0 提问: 想问一下我的问题在哪里？

回复:
user: user-0
content: 好的，谢谢你的回复。

user: user-1
content: 直接改算法： 做一个255大小的数组，模拟ascii表 读取字符串， 有哪个字符把数组对应的部分设置为1 输出就简单了，按照ascii表的顺序，找到数字，大写，小写的区域，对应数组不是0的就输出
user-0 提问: 帮忙看下叭哪里不对啊

回复:
user: user-1
content: 两重循环范围都少了一次， 结果对是瞎猫遇到死耗子了

user: user-2
content: 你这结果不是对的吗，有啥问题吗

user: user-0
content: 不用了我搞错了哈哈，麻烦大家了哈
user-0 提问: 數值排序

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

user: user-0
content: 引用 1 楼 寻开心 的回复：你的数组大小就是6， 而且已经录入6个了，而且看代码是做过了冒泡排序的。 再加上一个数字就是7个。  打算如何处理多出来的一个呢？ 把最后挤掉，还是把第一个挤掉呢？我下面有寫‘’輸入刪除的數字’‘當我輸入數字他就要從陣列去找到數值並刪除，然後再重新排列陣列順序

user: user-2
content: 你的数组大小就是6， 而且已经录入6个了，而且看代码是做过了冒泡排序的。 再加上一个数字就是7个。  打算如何处理多出来的一个呢？ 把最后挤掉，还是把第一个挤掉呢？
user-0 提问: 用数组统计不及格人数

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

user: user-0
content: 我主要不知道函数调用那个返回值咋返回，然后也没写清楚😂略略略略略略

user: user-0
content: 谢谢你～我们学的调用函数😂，也是用if语句的哈哈哈

user: user-2
content: #include <stdio.h> int main() { 	int a[10]; 	int i=0,jg=0,bjg=0; 	for(i=0;i<10;i++){ 	scanf("%d",&a[i]); 	if(a[i]<60) 	bjg++; 	else if(a[i]>=60&&a[i]<=100) 	jg++; 	else  	printf("请输入有效值；"); 	} 	printf("及格的为：%d人，不及格的为%d人",jg,bjg); } 我也是新学者，我自己尝试写了一下，你可以参考看看。。

user: user-3
content: 很简单的一个。 先定义一个空间为40的数组，然后让用户输入所有学生的数值，用scanf输入到数组里。再用一个for循环判断所有的数值是否及格，不及格一次i+1，最后输出i。 最后，不要期望别人直接给你成品程序。
user-0 提问: 求疑～

回复:
user: user-1
content: 一楼都跟你说了问题，还说不知道

user: user-0
content: 引用 2 楼 SuperDay的回复:[quote=引用 1 楼 user-2的回复:][quote=引用 楼主 你喜欢水吗？的回复:]题目描述 输入3个整数，输出它们的1次幂、2次幂和3次幂。 输入 输入3整数，用空格隔开 输出 输出3行，每行3个整数，分别是它们的1次幂、2次幂和3次幂，每个整数占9列，不足9列左对齐 #include<stdio.h>  int main() {     int i,j;     char ch[3];     for(i=0;i<3;i++)     {     scanf("%d",&ch[i]);     }     for(i=0;i<3;i++)     {     j=ch[i];     printf("%-9d",j);     printf("%-9d",j*j);     printf("%-9d",j*j*j);     }     return 0; } 提交时提示答案错误，有点不解，希望大神解释一下。。。。 这个字符串定义好像是应该是整形 后面printf循环最后再printf（“/n”）就回换行 [/quote] 换行符是"\n"而不是"/n"，三个整数定义int i, j, k;就好了，完全不必要用数组[/quote] 可以直接编，但就是有点不知道这错在哪里了

user: user-1
content: 引用 1 楼 user-2的回复:[quote=引用 楼主 你喜欢水吗？的回复:]题目描述 输入3个整数，输出它们的1次幂、2次幂和3次幂。 输入 输入3整数，用空格隔开 输出 输出3行，每行3个整数，分别是它们的1次幂、2次幂和3次幂，每个整数占9列，不足9列左对齐 #include<stdio.h>  int main() {     int i,j;     char ch[3];     for(i=0;i<3;i++)     {     scanf("%d",&ch[i]);     }     for(i=0;i<3;i++)     {     j=ch[i];     printf("%-9d",j);     printf("%-9d",j*j);     printf("%-9d",j*j*j);     }     return 0; } 提交时提示答案错误，有点不解，希望大神解释一下。。。。 这个字符串定义好像是应该是整形 后面printf循环最后再printf（“/n”）就回换行 [/quote] 换行符是"\n"而不是"/n"，三个整数定义int i, j, k;就好了，完全不必要用数组

user: user-1
content: 引用 1 楼 user-2的回复:[quote=引用 楼主 你喜欢水吗？的回复:]题目描述 输入3个整数，输出它们的1次幂、2次幂和3次幂。 输入 输入3整数，用空格隔开 输出 输出3行，每行3个整数，分别是它们的1次幂、2次幂和3次幂，每个整数占9列，不足9列左对齐 #include<stdio.h>  int main() {     int i,j;     char ch[3];     for(i=0;i<3;i++)     {     scanf("%d",&ch[i]);     }     for(i=0;i<3;i++)     {     j=ch[i];     printf("%-9d",j);     printf("%-9d",j*j);     printf("%-9d",j*j*j);     }     return 0; } 提交时提示答案错误，有点不解，希望大神解释一下。。。。 这个字符串定义好像是应该是整形 后面printf循环最后再printf（“/n”）就回换行 [/quote] 换行符是"\n"而不是"/n"，三个整数定义int i, j, k;就好了，完全不必要用数组

user: user-2
content: 引用 楼主 你喜欢水吗？的回复:题目描述 输入3个整数，输出它们的1次幂、2次幂和3次幂。 输入 输入3整数，用空格隔开 输出 输出3行，每行3个整数，分别是它们的1次幂、2次幂和3次幂，每个整数占9列，不足9列左对齐 #include<stdio.h>  int main() {     int i,j;     char ch[3];     for(i=0;i<3;i++)     {     scanf("%d",&ch[i]);     }     for(i=0;i<3;i++)     {     j=ch[i];     printf("%-9d",j);     printf("%-9d",j*j);     printf("%-9d",j*j*j);     }     return 0; } 提交时提示答案错误，有点不解，希望大神解释一下。。。。 这个字符串定义好像是应该是整形 后面printf循环最后再printf（“/n”）就回换行

user: user-0
content: 引用 楼主 你喜欢水吗？的回复:题目描述 输入3个整数，输出它们的1次幂、2次幂和3次幂。 输入 输入3整数，用空格隔开 输出 输出3行，每行3个整数，分别是它们的1次幂、2次幂和3次幂，每个整数占9列，不足9列左对齐 #include<stdio.h>  int main() {     int i,j;     char ch[3];     for(i=0;i<3;i++)     {     scanf("%d",&ch[i]);     }     for(i=0;i<3;i++)     {     j=ch[i];     printf("%-9d",j);     printf("%-9d",j*j);     printf("%-9d",j*j*j);     }     return 0; } 提交时提示答案错误，有点不解，希望大神解释一下。。。。 知道问题是啥了，谢了

user: user-1
content: 三个整数不是用char [3]类型，而是int [3]类型，并且实际上不需要数组，定义int i, j, k;就可以了，代码都发上来了，都不会复制吗？

user: user-0
content: 引用 5 楼 SuperDay的回复:一楼都跟你说了问题，还说不知道 我这里少粘贴了printf("\n"),但加上之后依然是错的
user-0 提问: 有没有现成的关于信号处理算法库？

回复:
user: user-0
content: 引用 5 楼 TravelWithSongs 的回复:滤波类的看见的都是大家手撸的，暂且对这个不太了解 谢谢  网上手撸的代码，与那些知名的库结果还是有些不同的，不够可靠  比如使用fftw 的变换结果，就和numpy 和 scipy 库的fft变换结果一致，其它网友手撸的代码，结果就不同

user: user-1
content: 滤波类的看见的都是大家手撸的，暂且对这个不太了解

user: user-0
content: 引用 2 楼 TravelWithSongs 的回复:傅里叶变换 fftw ，至于别的不知道了 找到了，可以用，谢谢 还需要别的：淲波、希尔伯特变换，了解吗？

user: user-0
content: 网上找了几个FFT 变换的 C 代码，处理结果好像都不对。 与Python  numpy 处理结果对不上  import numpy as np  r = np.fft.fft([1,2,3,4,5])

user: user-0

user: user-1
content: 傅里叶变换 fftw ，至于别的不知道了
user-0 提问: 为什么我的螺旋数组运行后是这样？

回复:
user: user-0
content: 引用 1 楼 user-1的回复:printf 打出来的是地址，能不大嘛 一语惊醒梦中人，谢谢！

user: user-1
content: printf 打出来的是地址，能不大嘛
user-0 提问: C 语言求独特平方数

回复:
user: user-1
content: 四位是完全平方数的很少  int I; for ( I = sqrt(1000); i<sqrt(10000); i++ ) {. // for (i=32, i<100; i++ )      int k = I * i;      int a = k % 100; int b =. k/100;      if (a +b  == i ) printf("%d", k);  }  // 对于i=55情况，  k=3025。 a=30， b=25， 可输出

user: user-2
content: #include <stdio.h>  int Verify(int i);  int main(void) {     for (int i = 1000; i < 10000; ++i)     {         if (Verify(i))             printf("%d\n", i);     }      return 0; }  int Verify(int i) {     if (i < 1000 || i>9999)         return 0;      int b, e;     b = i / 100;     e = i % 100;     if (i == (b + e) * (b + e))         return 1;     else         return 0; }
user-0 提问: vs2008 c语言 double输入错误，请指教！

回复:
user: user-1
content: 引用 2 楼 csucxy 的回复:区分数字1和字母l。 +1

user: user-0
content: 非常感谢各位指教！谢谢了！

user: user-2
content: 区分数字1和字母l。

user: user-3
content: %LF（小写） 不是 %一F
user-0 提问: 二维数组作参数，调用函数

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

user: user-2
content: 请参考《C++中二维数组与指针》 《C++二维数组》 希望能够帮到你！

user: user-3
content: 推荐 一个数组和动态数组的 blog  https://blog.csdn.net/jean7155/article/details/103339492 我今天写的学习总结笔记。欢迎交流啊

user: user-0
content: wow是的诶，感谢啦

user: user-4
content: void z(int[100][100]);  这一句要放到 int main（） 的前面。   z函数实现体里面，你仔细想想，既然是交换数据， j是要从0到100循环吗？ 你现在这样循环结果， 比如x【1】【2】 和x【2】【1】 是不是会被交换了两次？！！ 第一次i=1， j=2；  交换；  第二次 i=2， j=1的时候， 是不又交换了一次。   这样交换两次，是不是就白玩儿了啊   所以z里面的双重循环是不能那样写的。

user: user-0
content: 引用 2 楼 jean7155的回复:请百度一下 动态数组相关知识。 例如下面的代码  int m=2; int n=3; int ** mArray = new int*[m];     for (int i=0; I<n; i++) {         mArray[i] = new int[m]();     }  还没有学到这块，继续学习了，感谢

user: user-3
content: 请百度一下 动态数组相关知识。 例如下面的代码  int m=2; int n=3; int ** mArray = new int*[m];     for (int i=0; I<n; i++) {         mArray[i] = new int[m]();     }

user: user-5
content: 可以尝试一下int **x
user-0 提问: 数组中插入一个元素

回复:
user: user-1
content: insert函数这样设计不行啊 要想插入一个元素到数组的指定位置，需要把原位置开始到结尾的内容全部向后移动一位，还要知道要插入的数值 这样的话insert函数需要四个参数， 数组， 数组长度，要插入的位置，要插入的数值  假如 void insert(int * p, const int lent , const int pos , int value)  {      用i从数组最后一个位置开始，一直到pos位置， 做一个循环          p[I+1] = p[I     p[I] = j; };

user: user-2
content: 一个接一个地移动，把位置让出来以后，再插入。
user-0 提问: 简单数据类型及switch语句判定执行问题

回复:
user: user-0
content: 引用 1 楼 寻开心 的回复:case 0:         .....         break; case 1:  你少了break语句，所以又执行case 1下面的命令了case 0: ...... 这个语句里面两句都有break;语句啊，没少啊？ 我在case 1: ...... case 2:后面加break语句，它就没有输出‘$’但还是会输出‘*’'#'，这是怎么回事？

user: user-1
content: case 0：       switch（b==0） ｛             case 0：                  break;            case 1：                  break；      ｝  break; 没有这个， 下面的case 1部分也被执行了 case 1：

user: user-0
content: 引用 3 楼 寻开心的回复:你的case是第二重的， switch c 的 但是针对第一重 switch （a）里面的case 0， 1什么的，都没有break  break只退出一重 那switch（c）是因为c==2，才执行case 2：吗？ 如果是1就执行case 1：吗？如果是0就执行default吗？

user: user-1
content: 你的case是第二重的， switch c 的 但是针对第一重 switch （a）里面的case 0， 1什么的，都没有break  break只退出一重

user: user-1
content: case 0:         .....         break; case 1:  你少了break语句，所以又执行case 1下面的命令了
user-0 提问: 用指针进行字符的移动

回复:
user: user-0
content: 引用 3 楼 寻开心的回复:先保存 p+n 位置的数据到t  从p+n开始，一直到p+strlen（c）-2做循环      每个位置的值都是下个位置的值  最后一个位置的值设置为t  这样的代码很简单，自己尝试去写。 思路就是上面这样 好的，我试试，谢谢您

user: user-1
content: 先保存 p+n 位置的数据到t  从p+n开始，一直到p+strlen（c）-2做循环      每个位置的值都是下个位置的值  最后一个位置的值设置为t  这样的代码很简单，自己尝试去写。 思路就是上面这样

user: user-0
content: 引用 1 楼 寻开心的回复:getchar(); for(i=0;c[i]!='\0';i++) { scanf("%c",&c[i]);  }   scanf("%d",&n);  这个部分直接修改成     scanf("%s%d", c, &n);  就好了，一次性把字符串接收进来，不要一个字符一个字符的，那需要判断是否遇到会车结束了， 增加程序复杂度  输出用puts 或者 printf（“%s”， c） 这样的 这个地方对了，能麻烦你再帮我看一下指针这里哪里出错了吗？我这样并不能得到正确的输出答案

user: user-1
content: getchar(); for(i=0;c[i]!='\0';i++) { scanf("%c",&c[i]);  }   scanf("%d",&n);  这个部分直接修改成     scanf("%s%d", c, &n);  就好了，一次性把字符串接收进来，不要一个字符一个字符的，那需要判断是否遇到会车结束了， 增加程序复杂度  输出用puts 或者 printf（“%s”， c） 这样的
user-0 提问: 一个C语言语法的问题！！

回复:
user: user-0
content: 引用 6 楼 这是一个正经昵称的回复:while里的就是循环的条件，为真继续为假退出，每次循环f先自加1，然后取p[f]指向的字符，判断字符是不是和0 - +相等，相等就继续。那么不想等的时候自然是到了字符.的位置，此时打印p+f就是.字符和它以后的 那么这个逗号就是一个逗号运算符了呗

user: user-1
content: while里的就是循环的条件，为真继续为假退出，每次循环f先自加1，然后取p[f]指向的字符，判断字符是不是和0 - +相等，相等就继续。那么不想等的时候自然是到了字符.的位置，此时打印p+f就是.字符和它以后的

user: user-0
content: 引用 2 楼 这是一个正经昵称的回复:循环到遇到不是-,0,+的位置就是.了，然后p偏移到.的位置再打印就是.和后面的内容，就是.1 非常感谢，但是我想知道他的运行过程，我分析代码时候完全看不出来这个代码功能。

user: user-0
content: 这个while循环里边执行的过程是什么样的呢。或者说这个能够拆分成什么样的代码呢？

user: user-0
content: 对不起阿，刚刚那个打错了了，附上新的代码 #include<stdio.h> void main() { 	int f = -1; 	char* p = "-000000.1"; 	while (++f, p[f] == '0' || p[f] == '-' || p[f] == '+'); 	 	printf("%s",p+f); 	 }结果

user: user-1
content: 循环到遇到不是-,0,+的位置就是.了，然后p偏移到.的位置再打印就是.和后面的内容，就是.1

user: user-2
content: while (++f, p[f] == '0' || p[f] == '-' || p[f] == '+');
user-0 提问: 字符串中数字转化*，但是循环无法执行

回复:
user: user-0
content: 引用 3 楼 user-1的回复:[quote=引用 2 楼 qq_45818304 的回复:] [quote=引用 1 楼 user-1的回复:]嵌套循环都用i一个计数？      不可以吗？？？？？？？？？[/quote] 没有说不可以，只是达不到你要的效果，你的问题不是为什么没有效果吗？你的循环内部改变了计数，那么只循环一次就结束了。[/quote] 谢谢谢谢~~我改了改运行出来了

user: user-1
content: 引用 2 楼 qq_45818304 的回复:[quote=引用 1 楼 user-1的回复:]嵌套循环都用i一个计数？      不可以吗？？？？？？？？？[/quote] 没有说不可以，只是达不到你要的效果，你的问题不是为什么没有效果吗？你的循环内部改变了计数，那么只循环一次就结束了。

user: user-0
content: 引用 1 楼 user-1的回复:嵌套循环都用i一个计数？      不可以吗？？？？？？？？？

user: user-1
content: 嵌套循环都用i一个计数？
user-0 提问: 编程题

回复:
user: user-1
content: scanf("%d %d",&a,&b); if(a>b)printf("%d",b); else printf("%d",a);

user: user-2
content: 输入会不会 比较会不会 输出会不会 都不会? 看书

user: user-3
content: 没自己写的代码的， 不答复 只要原码的，百度去找好啦
user-0 提问: 线程运行完一个时间片后就一定会被切换吗？

回复:
user: user-1
content: 又见楼主，每次都发这么高深的帖子，真是厉害啊

user: user-2
content: 引用 6 楼 六道佩恩 的回复:[quote=引用 5 楼 gouyanfen 的回复:] 忘记回答一个问题，有关时间片的长度，上面说的临界值的问题，这个临介值就可以看做是一个时间片的长度，这个用硬中断来保证，CPU会提供，其实要搞清楚这个，可以买单片机无操作系统状态写测试，应该就容易理解清楚。 所以都是分配 不同时长的时间片*1，而不是分配 相同时长的时间片*n 是吗？[/quote] 最小单位肯定是*1,硬中断之后重新调度，这个具体能不能获得连续的时间片，不切换，需要看调度算法。

user: user-0
content: 引用 5 楼 gouyanfen 的回复:忘记回答一个问题，有关时间片的长度，上面说的临界值的问题，这个临介值就可以看做是一个时间片的长度，这个用硬中断来保证，CPU会提供，其实要搞清楚这个，可以买单片机无操作系统状态写测试，应该就容易理解清楚。 所以都是分配 不同时长的时间片*1，而不是分配 相同时长的时间片*n 是吗？

user: user-2
content: 忘记回答一个问题，有关时间片的长度，上面说的临界值的问题，这个临介值就可以看做是一个时间片的长度，这个用硬中断来保证，CPU会提供，其实要搞清楚这个，可以买单片机无操作系统状态写测试，应该就容易理解清楚。

user: user-2
content: 肯定是看线程优先级来定义不同的时间片的时长,比如操作系统在设计时系统核心进程需要在任何时候能够及时响应，就必需给他最多的时间片来处理，那么系统核心线程就一定会占用更长的时间片，只有在没有需要处理时才会分配时间片给用户线程。而且核心线程失去时间片的时间也有一定有限制的，比如不可以超过一个临界值就必须切回来才可以保证系统的流畅性。

user: user-3
content: 应该。。。与线程的调度算法以及优先级有关吧

user: user-3
content: 应该。。。与线程的调度算法以及优先级有关吧
user-0 提问: 求解

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

user: user-2
content: 引用 4 楼 qq_45852575 的回复:[quote=引用 3 楼 这是一个正经昵称的回复:]a[0] 改 a[i] 那么，i从哪里来？ 之所以是a[0],那是因为，传进去的是aa[i]的地址，指针指向的位置就是 i 这里，你姑且可以当做是创建了一个数组, 然后a[0]=aa[i],a[1]=aa[i+1]...a[n]=aa[i+n]  然后第二个，void没有返回值，但是可以执行return。然后这个题并不是函数返回的原因，是因为传了b的地址 &b进去，通过指针修改此地址上的值，原来的变量的值一样会被改动的，char b的时候分配了一个char大小的内存存放数据‘a’，然后&b是地址，b就是*（&b）就是代表此地址的值，通过&b修改值为‘b’那么*（&b）自然也就变成了'b'，就是char b变成了‘b’ 感谢,有点明白了，第二个问题是否是，第一次执行void函数输出b，B         第二次由于b被改变了地址就变不回来了，而a还是原来的'A'[/quote]  b改变的不是地址，是通过地址改变了存放的数据，比如科技大道213号(char b存放处)原来是个小平房（'a'），现在把写了地址的纸条（指针）给了建筑工人（函数fun（）），他们找过来把平房（数据'a'）拆了盖（*c=*c+1）成了楼('b')，那么我再按地址（char b地址）来找东西，找到的就是这楼('b')。

user: user-0
content: 引用 3 楼 这是一个正经昵称的回复:a[0] 改 a[i] 那么，i从哪里来？ 之所以是a[0],那是因为，传进去的是aa[i]的地址，指针指向的位置就是 i 这里，你姑且可以当做是创建了一个数组, 然后a[0]=aa[i],a[1]=aa[i+1]...a[n]=aa[i+n]  然后第二个，void没有返回值，但是可以执行return。然后这个题并不是函数返回的原因，是因为传了b的地址 &b进去，通过指针修改此地址上的值，原来的变量的值一样会被改动的，char b的时候分配了一个char大小的内存存放数据‘a’，然后&b是地址，b就是*（&b）就是代表此地址的值，通过&b修改值为‘b’那么*（&b）自然也就变成了'b'，就是char b变成了‘b’ 感谢,有点明白了，第二个问题是否是，第一次执行void函数输出b，B         第二次由于b被改变了地址就变不回来了，而a还是原来的'A'

user: user-2
content: a[0] 改 a[i] 那么，i从哪里来？ 之所以是a[0],那是因为，传进去的是aa[i]的地址，指针指向的位置就是 i 这里，你姑且可以当做是创建了一个数组, 然后a[0]=aa[i],a[1]=aa[i+1]...a[n]=aa[i+n]  然后第二个，void没有返回值，但是可以执行return。然后这个题并不是函数返回的原因，是因为传了b的地址 &b进去，通过指针修改此地址上的值，原来的变量的值一样会被改动的，char b的时候分配了一个char大小的内存存放数据‘a’，然后&b是地址，b就是*（&b）就是代表此地址的值，通过&b修改值为‘b’那么*（&b）自然也就变成了'b'，就是char b变成了‘b’

user: user-0
content: 引用 5 楼 这是一个正经昵称的回复:[quote=引用 4 楼 qq_45852575 的回复:] [quote=引用 3 楼 这是一个正经昵称的回复:]a[0] 改 a[i] 那么，i从哪里来？ 之所以是a[0],那是因为，传进去的是aa[i]的地址，指针指向的位置就是 i 这里，你姑且可以当做是创建了一个数组, 然后a[0]=aa[i],a[1]=aa[i+1]...a[n]=aa[i+n]  然后第二个，void没有返回值，但是可以执行return。然后这个题并不是函数返回的原因，是因为传了b的地址 &b进去，通过指针修改此地址上的值，原来的变量的值一样会被改动的，char b的时候分配了一个char大小的内存存放数据‘a’，然后&b是地址，b就是*（&b）就是代表此地址的值，通过&b修改值为‘b’那么*（&b）自然也就变成了'b'，就是char b变成了‘b’ 感谢,有点明白了，第二个问题是否是，第一次执行void函数输出b，B         第二次由于b被改变了地址就变不回来了，而a还是原来的'A'[/quote]  b改变的不是地址，是通过地址改变了存放的数据，比如科技大道213号(char b存放处)原来是个小平房（'a'），现在把写了地址的纸条（指针）给了建筑工人（函数fun（）），他们找过来把平房（数据'a'）拆了盖（*c=*c+1）成了楼('b')，那么我再按地址（char b地址）来找东西，找到的就是这楼('b')。[/quote] 非常感谢你的耐心讲解 ，我懂了

user: user-0
content: 引用 1 楼 这是一个正经昵称的回复:第一个，sum函数传入一个指针，通过指针把当前指向的值改成后一个的值，以此类推循环过后0 1 2 3地方的值都变成了4。 第二个，传入了b的地址和a的ASCII值，分别加1后打印字符为b B，函数返回后由于b是通过地址修改了指向内存的字符，而a不是，所以打印为A b 最后一个，我觉得答案不唯一吧，首先声明函数，那么函数参数肯定和下面用的时候是一样的，照搬就是第一个空。第二个，我觉得这个指针用不用都行吧，用的话初始化他为&a，不用就NULL或者0吧。然后如果用指针就传x给函数，没用就&a。然后while里要对指针指向的值进行运算，所以用*a。 第一个问题中    a【0】=a【1】不应该改成a【i】=a【i-1】吗 第二个中void函数不是不能返回？ 感谢

user: user-2
content: 第一个，sum函数传入一个指针，通过指针把当前指向的值改成后一个的值，以此类推循环过后0 1 2 3地方的值都变成了4。 第二个，传入了b的地址和a的ASCII值，分别加1后打印字符为b B，函数返回后由于b是通过地址修改了指向内存的字符，而a不是，所以打印为A b 最后一个，我觉得答案不唯一吧，首先声明函数，那么函数参数肯定和下面用的时候是一样的，照搬就是第一个空。第二个，我觉得这个指针用不用都行吧，用的话初始化他为&a，不用就NULL或者0吧。然后如果用指针就传x给函数，没用就&a。然后while里要对指针指向的值进行运算，所以用*a。
user-0 提问: 怎么会有两种情况？想了半个小时没想通，望细说！

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 简单逻辑运算问题

回复:
user: user-0
content: 引用 3 楼 user-1的回复:这程序不是有毛病吗？第二个else不会到了，w=y 我运行到是没出现什么问题

user: user-1
content: 这程序不是有毛病吗？第二个else不会到了，w=y

user: user-0
content: 引用 1 楼 user-1的回复:a=0所以!a等于1，1是真 那这题：求x和w的值：   int x=0, y=1, z=2, w; if(x++)w=x;   else if(x++&&y>=1)w=y;   else if(x++&&z>1) w=z; A.0，1     B.1，1   C.2，1  D.3 /*if(x++) 是先判定再加一吗？ 是的话，它是把下面else if语句两句都执行还是？ 不是的话，它就执行w=x；然后退出吗？ 我不太理解if   else语句结构*/

user: user-1
content: a=0所以!a等于1，1是真

user: user-0
content: 引用 3 楼 user-1的回复:这程序不是有毛病吗？第二个else不会到了，w=y 语句中各case与后面的常量表达式之间必须有空格，这句话有错吗？
user-0 提问: C语言小白在线等大神解决.....

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

user: user-2
content: printf("\n")
user-0 提问: 这个题怎么做啊，在线等，挺急的

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

user: user-2
content: 这个不是提问题，而是要答案，
user-0 提问: 求助啊啊啊 救救我吧 吃蛋问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: C语言问题

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

user: user-2
content: 实践是检验真理的唯一标准 VS2015调试  scanf()函数没有屏蔽回车，所以c1,c2,c3,c4的值分别是1， 2， 3， 回车 c5和c6的值是4和5 对于屏蔽回车的方法请参考《C++中getchar()的使用方法》
user-0 提问: 这里是不是讲错了

回复:
user: user-1
content: 尽信书不如不信书 还是自己做实验，用数据来说话

user: user-2
content: 把board改成 	char board[3][3] = { 		{'9', '8', '7'}, 		{'6', '5', '4'}, 		{'3', '2', '1'} 	}; 之后使用 for (int i = 0; i < 9; ++i) 	{ 		printf("board: %c\n", **board + i); 	} 就会得到书上的结果了  原因就是书上介绍的。 您也可以参考《C++二维数组》 希望能够帮到你！

user: user-0
content: 引用 2 楼 寻开心的回复:输出结果会是这样 2 4 6 8 0 1 3 5 7           这是原始顺序， 输出数据的 2 3 4 5 6 7 8 9 :            这都不是了     它是对数组第一个元素不断增加 2 8 3 s O ~ \364 \376   这个也不是了，已经越界，输出不知道什么鬼了 你写的我看懂了，没问题。但是书上那个为什么就直接从9开始了，不应该也从1往后递增吗

user: user-0
content: 你写的我看懂了，没问题。但是书上那个为什么就直接从9开始了，不应该也从1往后递增吗

user: user-1
content: 输出结果会是这样 2 4 6 8 0 1 3 5 7           这是原始顺序， 输出数据的 2 3 4 5 6 7 8 9 :            这都不是了     它是对数组第一个元素不断增加 2 8 3 s O ~ \364 \376   这个也不是了，已经越界，输出不知道什么鬼了

user: user-1
content: 不要用这个 1～9 的二维数组，那样看不明显  #include<stdio.h> #include <string.h> int main() {     char  p[3][3] =  {'2', '4', '6', '8', '0', '1', '3','5','7'};     int i =0;     for ( i=0; i<9; i++ )         printf("%c ", *(*p+i));     printf("\n");      for ( i=0; i<9; i++ )         printf("%c ", **p+i);     printf("\n");      for ( i=0; i<9; i++ )         printf("%c ", **(p+i));     printf("\n");      return 0; }
user-0 提问: 求大神

回复:
user: user-1
content: 是否闰年决定2月是28天还是29天 四年一闰， 百年不闰，四百年再闰 做一个12位的数组， 把每个月的天数放里面。 如果是如年2月28天，非闰年29就天 其他的没什么好说的， 代码自己写。  哪怕再烂也自己写出来，有问题贴出代码再问  只要原码的自己百度去
user-0 提问: 如何输入输出字符串？这道题能用switch-case吗？求讲解

回复:
user: user-1
content: 引用 2 楼 S_GKCYY 的回复：[quote=引用 1 楼 SuperDay 的回复:] 又是你！这个代码该从何说起啊？ 缘分呐，哈哈。 我在自学，有问题就只能上论坛啦，也谢谢您教了我很多。 题目我琢磨一下改过来了  #include<stdio.h>  main()   { 	int c; 	char  x , y ; 	scanf("%c",&x); 	 	c=(x<97)+(x<124)+(x<128)+(x==' '); 	switch(c) 	{ 		case 4: printf("space\n"); 				break; 		case 3:  		case 1: printf("digit\n"); 				break;	 		case 2: printf("letter\n"); 		        break; 		default: printf("other\n"); 	} }[/quote]楼主你好，我也是新手没学到你的那个地方 ，我想问一下C＝那一行代码的意思，能解释一下吗，谢谢啦

user: user-2
content: 问题是，根本就不对啊！

user: user-3
content: 能想出来用   c=(x<97)+(x<124)+(x<128)+(x==' ');     switch(c)  这个想法很有创意，不论对不对。  至少这是真的动脑筋想的， 比直接要代码的强的太多了。   有前途

user: user-0
content: #include<stdio.h> main()  { 	int c; 	char  x , y ; 	scanf("%c",&x); 	 	c=(x<58)+(x<124)+(x==' '); 	switch(c) 	{ 		case 3: printf("space\n"); 				break; 		case 2:	printf("digit\n"); 				break;			 		case 1: printf("letter\n"); 		        break; 		default: printf("other\n"); 	} } 改过来了这个c的赋值方法我刚学，所以练习一下，谢谢您的教导。

user: user-2
content: c >= '0' && c <= '9'

user: user-0
content: 引用 10 楼 SuperDay 的回复:不是，你的理解方面有点不到位啊 唔。。。不是0~9输出letter？那是啥？

user: user-2
content: 不是，你的理解方面有点不到位啊

user: user-0
content: 引用 8 楼 SuperDay 的回复:数字不明白吗？。。。 是我范围写错了是吧？哈哈哈

user: user-2
content: 数字不明白吗？。。。

user: user-0
content: 引用 5 楼 SuperDay 的回复:数字指的是从0到9的字符 还有，不要迷信case，if也挺好，该用的时候还得if管用 不要想着取巧，中规中矩也是一种优点 谢谢指导，我会好好学的。

user: user-0
content: 数字指的是从0到9的字符。。。恩。。。怎么理解呢？

user: user-2
content: 数字指的是从0到9的字符 还有，不要迷信case，if也挺好，该用的时候还得if管用 不要想着取巧，中规中矩也是一种优点

user: user-0
content: 唔，好吧，更深的我还没学

user: user-2
content: 这个好一点，不过还是差好多

user: user-0
content: 引用 1 楼 SuperDay 的回复:又是你！这个代码该从何说起啊？ 缘分呐，哈哈。 我在自学，有问题就只能上论坛啦，也谢谢您教了我很多。 题目我琢磨一下改过来了  #include<stdio.h>  main()   { 	int c; 	char  x , y ; 	scanf("%c",&x); 	 	c=(x<97)+(x<124)+(x<128)+(x==' '); 	switch(c) 	{ 		case 4: printf("space\n"); 				break; 		case 3:  		case 1: printf("digit\n"); 				break;	 		case 2: printf("letter\n"); 		        break; 		default: printf("other\n"); 	} }

user: user-2
content: 又是你！这个代码该从何说起啊？
user-0 提问: 为什么会显示这个，怎么解决 error C2449: found '{' at file scope (missing function header?)

回复:
user: user-1
content: #include <stdio.h> int main() {     double x, y;     printf("Enter x:");     scanf("%lf", &x);     if (x != 0)         y = 1 / x;     else         y = 0;     printf("%f(%.1f)\n", x, y);      return 0; }

user: user-2
content: 文件末尾加一行空行试试

user: user-3
content: void main改成int main，然后函数最后加上return 0; scanf里面x前面加一个& printf里面参数数目不对 其它没发现什么问题

user: user-4
content: 1 又见到著名的void main（）定义了。呵呵。  int main（） 才对    相应的main函数最后加一个 return 0；  2 scanf 里面的x要用指针，  &x 3 最后的printf里面后一个f少了%符号
user-0 提问: 用指针实现数组拷贝为啥最后会出现一个框，求解

回复:
user: user-0
content: 引用 5 楼 SuperDay 的回复:a=0？ *a = '\0'; ！！！谢谢啦

user: user-1
content: a=0？ *a = '\0'; ！！！

user: user-0
content: 引用 2 楼 user-2 的回复:照你描述的，直接memcpy不是效率更高吗抱歉啊，我们学指针，老师给的训练题，要是直接用那个就没意义了

user: user-0
content: 引用 1 楼 SuperDay 的回复:说了这么多，你的代码呢？ 在这 #include <stdio.h>  int strcopy(char *a,char *b){     while(*b){ 	*a=*b; 	b++;     a++;  }  	a=0; }  int main(){ 	char buf[64]; 	char *s = "ABCDEFGH";  	strcopy(buf,s); 	printf("%s\n",buf);  	return 0; }

user: user-2
content: 引用 楼主 s_curry_ 的回复:调用一个函数实现拷贝，用指针，while循环，*a=*b，a++，b++，循环结束后，a=0 照你描述的，直接memcpy不是效率更高吗

user: user-1
content: 说了这么多，你的代码呢？
user-0 提问: 斐波那契兔子数列问题，在数字达到一定程度出现负数？

回复:
user: user-1
content: 引用 3 楼 Cola add ice 的回复:引用 2 楼 liups 的回复:把int换成long long,还不行就上浮点数 换成long long int 之后 每次输出的成年兔子全部变成了0... 很显然，long long需要的格式串是不同于int的！

user: user-0
content: 引用 1 楼 user-2 的回复:int不足以表达那么大的数字，溢出了 但是用long long我每一次输出的成年兔子数变成了0

user: user-0
content: 引用 2 楼 liups 的回复:把int换成long long,还不行就上浮点数 换成long long int 之后 每次输出的成年兔子全部变成了0...

user: user-1
content: 把int换成long long,还不行就上浮点数

user: user-2
content: int不足以表达那么大的数字，溢出了
user-0 提问: 四则运算计算器相关问题

回复:
user: user-1
content: scanf("%c",&suanfa) 里的 %c 前面加个空格即可。

user: user-2
content: 这个好像跟scanf的特性有关，你试试看在case里面每次使用scanf读取数据之后清理一下缓冲区残留.  fflush(stdin);

user: user-3
content: 不要用exit函数啊，退出需要Ctrl+Z
user-0 提问: 字符串与指针

回复:
user: user-0
content: 引用 2 楼 黄哥Python培训的回复:大概是这样的，请自己去修改吧  好的，谢谢你，我试试看。

user: user-0
content: 引用 3 楼 weixin_40290083的回复:不知道是不是符合你的需求。   谢谢你！可以的可以的。

user: user-0
content: 引用 1 楼 user-3的回复:是所有字母之前的星号和所有字母之后的星号吗？ 是的，字母前和字母后的

user: user-1
content: 不知道是不是符合你的需求。

user: user-2
content: 大概是这样的，请自己去修改吧

user: user-3
content: 是所有字母之前的星号和所有字母之后的星号吗？
user-0 提问: 这个程序为啥子输不出来了嘞

回复:
user: user-0
content: 引用 7 楼 六道佩恩的回复:[quote=引用 6 楼 weixin_45788663 的回复:] 是抄ppt上的 想自己试一下 那我解释的你懂了吗？[/quote] 懂了！谢谢哈哈哈哈哈）

user: user-1
content: 引用 6 楼 weixin_45788663 的回复:是抄ppt上的 想自己试一下 那我解释的你懂了吗？

user: user-0
content: 引用 4 楼 六道佩恩的回复:你这个代码是抄的吧，不然不可能链表都会了，却不会用printf。 你这里设计了一个create函数，那么如何使用呢，你规定了它的用法——不给参数，它会返回一个struct student*型指针。 同样的，printf函数也有它的使用方法——至少给它1个参数，第一个参数需要是字符串，这个字符串里的内容会显示到屏幕（应该说是显示到控制台窗口），字符串里的内容总是需要灵活调整，于是printf还规定，遇到%符号（格式控制符）就说明想要输出一个变量的值在这个位置，而这个变量就在后面对应的参数位置上，于是它读取了该变量的值，再根据你在格式控制符里写的输出格式而显示出来。 再看你的用法，你给了printf一个struct student*型指针，但printf不知道啊，它意为你给的是字符串，于是它以你的指针作为字符串的首地址，即从head所记录的地址开始，当做字符串来读，而你记录的都是整数，所以它显示出来是乱码，然后它遇到了0，或者说'\0'，于是结束，所以你只看到了这一个乱码。 是抄ppt上的 想自己试一下

user: user-0
content: 引用 3 楼 user-2的回复:好好去看看书吧，书上都有的 好，还在预习 只看了PPT

user: user-1
content: 你这个代码是抄的吧，不然不可能链表都会了，却不会用printf。 你这里设计了一个create函数，那么如何使用呢，你规定了它的用法——不给参数，它会返回一个struct student*型指针。 同样的，printf函数也有它的使用方法——至少给它1个参数，第一个参数需要是字符串，这个字符串里的内容会显示到屏幕（应该说是显示到控制台窗口），字符串里的内容总是需要灵活调整，于是printf还规定，遇到%符号（格式控制符）就说明想要输出一个变量的值在这个位置，而这个变量就在后面对应的参数位置上，于是它读取了该变量的值，再根据你在格式控制符里写的输出格式而显示出来。 再看你的用法，你给了printf一个struct student*型指针，但printf不知道啊，它意为你给的是字符串，于是它以你的指针作为字符串的首地址，即从head所记录的地址开始，当做字符串来读，而你记录的都是整数，所以它显示出来是乱码，然后它遇到了0，或者说'\0'，于是结束，所以你只看到了这一个乱码。

user: user-2
content: 好好去看看书吧，书上都有的

user: user-0
content: 引用 1 楼 user-2的回复:你真行，head能这样随便就输出了？ 请问那要怎么输出嘞 ！

user: user-2
content: 你真行，head能这样随便就输出了？
user-0 提问: 一个结构加指针问题

回复:
user: user-0
content: 谢谢楼上了！！！！！！！！

user: user-1
content: struct student { double b1[1000]; double b2[1000]; double b3[1000]; }ss[1000]; 这是个啥东西？  ss是要放读入的三角形的三条边的吧。  三个double就可以了，为什么要变成数组呢？  scanf("%lf%lf%lf",&ss[i].b1[i],&ss[i].b2[i],&ss[i].b3[i]);  这是什么意图？  &ss[i].b1[i]       循环下来就是 ss[0],b1[0].  ss[1].b1[1]. ss[2].b1[2]   那么。ssp0].b1[1], ss[0].b1[2], .....这些地方都空着吗？  定义和使用这两个部分都有问题。  连带着后面两个函数，用这种数组参数也没有意义了。 先把这个部分改掉吧。
user-0 提问: 折半法查找

回复:
user: user-1
content: for(i=0;i<15;i++)[color=#0000FF];     scanf("%d",&a[i]);[/color] 输入数据这里， for 语句后面多了一个分号，导致没有循环读入数据  while(fabs(b-d)!=1)              // 这里是 while（b-d>0 ) 就好
user-0 提问: 如何用Python 实现这道题，各位大佬 求助

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

user: user-0
content: 大佬们，用C 实现也可以，求救
user-0 提问: 为何输出1.#R求解，在下谢啦！！！

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 一个指针小问题

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

user: user-2
content: 这次同样的题目是什么问题？不是一个指针小问题了吧，应该是逻辑问题了～

user: user-3
content: 没看出来这个题目和“小指针”有半毛钱关系  不对的话有两种情况  一 输入输出格式问题 题目要求是一次性输入，然后一次性输出，不是边输入边输出吧。 把计算结果缓存起来， 一次输出  二 算法本身的问题 对于韩信点兵原题是对3，5，7； 最符合条件的人数不会超过105 但是，你这个问题明显不是3，5，7了。 第二组9 7 6 的最小范围是126 测试数据可能有更大的情况，你写死的i的上限1000，很可能就不够  而且你的 for(i = 0;i <1000;i++) 这里i从0开始， 如果3个数余0，5个数余0，7个数余0， 你打算告诉系统说没有人吗？ 默认的应该是有活人才是，没人还数个屁， 这个时候是105才对

user: user-0
content: 引用 1 楼 自信男孩的回复:这次同样的题目是什么问题？不是一个指针小问题了吧，应该是逻辑问题了～ 改成这样  #include<stdio.h> struct sb {     int num1[3];     int num2[3]; }hx[5]; int main() {     int cas(int a[],int b[]);     int n,i,k,*u,*o;     int sbs;       scanf("%d",&n);     if(n <= 5)     {     while(n--)     {         for(k = 0;k < 3;k++)         {             scanf("%d%d",&hx[i].num1[k],&hx[i].num2[k]);         }         u = hx[i].num1;         o = hx[i].num2;         sbs = cas(u,o);         printf("%d\n",sbs);     }     }     return 0; } int cas(int a[],int b[]) {     int i,*j,*h;     j = a;h = b;     for(i = 0;i <1000;i++)     {         if((i % *j == *h)&&(i % *(j + 1) == *(h + 1))&&(i % *(j + 2) == *(h + 2)))         {         return i;         break;         }     } }  结果对，但是一旦提交就错

user: user-0
content: 引用 2 楼 寻开心的回复:u = hx[0].num1;  o = hx[0].num2;  应该是这两行的问题       每次都是0的处理， 应该是对i的处理 u = hx[i].num1; o = hx[i].num2; 改成了这样 #include<stdio.h> struct sb {     int num1[3];     int num2[3]; }hx[5]; int main() {     int cas(int a[],int b[]);     int n,i,k,*u,*o;     int sbs;       scanf("%d",&n);     if(n <= 5)     {     while(n--)     {         for(k = 0;k < 3;k++)         {             scanf("%d%d",&hx[i].num1[k],&hx[i].num2[k]);         }         u = hx[i].num1;         o = hx[i].num2;         sbs = cas(u,o);         printf("%d\n",sbs);     }     }     return 0; } int cas(int a[],int b[]) {     int i,*j,*h;     j = a;h = b;     for(i = 0;i <1000;i++)     {         if((i % *j == *h)&&(i % *(j + 1) == *(h + 1))&&(i % *(j + 2) == *(h + 2)))         {         return i;         break;         }     } }   结果都对，但就是提交错

user: user-0
content: 引用 2 楼 寻开心的回复:u = hx[0].num1;  o = hx[0].num2;  应该是这两行的问题       每次都是0的处理， 应该是对i的处理 u = hx[i].num1; o = hx[i].num2; 嗯是的。。。。。。。。。。。。嗯是的

user: user-3
content: u = hx[0].num1;  o = hx[0].num2;  应该是这两行的问题       每次都是0的处理， 应该是对i的处理 u = hx[i].num1; o = hx[i].num2;
user-0 提问: 我想请教一下，关于C语言输出到EXCEL的问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html
user-0 提问: 数据结构

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

user: user-2
content: 只有按照下标1~11这个范围放数据才解释的通  如果是0到10，怎么都解释不通了。    个人觉得题目的描述有问题，本来分量的概念是指数组中的内容的，但是那样的话这个确定查找总量就太复杂了，结果还不对

user: user-0
content: 引用 1 楼 寻开心的回复:顺序法 找到1 2 3 6 分别用的次数是1 2 3 6次 二分法找到1 2 3 6分别用的次数是  3 4 2  1次 加起来就知道了 关键是确定二分法找到1，2的次数的过程 第一次  1~11范围， 是和6比较，  也就是1次找到6 第二次 1~5范围， 是和3比较， 也就是2次找到3 第三次 1~2范围， 是先1后2，  也就是3次找到1， 4次找到2  为啥就1和2的时候先1后2呢。  一般说来 mid = （small + large）/2 自然截断取证，不会再调用个ceil或者floor函数之类的 再(1+2)/2 的时候，结果就是1啦。 特别感谢您的回复！但我还有一个疑问就是题目中在分量1~11的数组中,假如数组a,按顺序从小到大存储，那么是a[1]=1，a[2]=2……这样存储的么？那么如果这样a[0]不就没有存储元素，那么顺序访问为什么不是从下标0开始的呢？能再帮我解决一下心中的困惑么？期待您的回复！

user: user-2
content: 顺序法 找到1 2 3 6 分别用的次数是1 2 3 6次 二分法找到1 2 3 6分别用的次数是  3 4 2  1次 加起来就知道了 关键是确定二分法找到1，2的次数的过程 第一次  1~11范围， 是和6比较，  也就是1次找到6 第二次 1~5范围， 是和3比较， 也就是2次找到3 第三次 1~2范围， 是先1后2，  也就是3次找到1， 4次找到2  为啥就1和2的时候先1后2呢。  一般说来 mid = （small + large）/2 自然截断取证，不会再调用个ceil或者floor函数之类的 再(1+2)/2 的时候，结果就是1啦。
user-0 提问: 求助帖

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

user: user-2
content: 但从这样的宏定义来看，这个宏其实没有替代什么。可以去掉～

user: user-3
content: 这个是一种标记，增强可读性，可以去掉