Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 关于结构体数组赋值的问题求助

回复:
user: user-1
content: 解决结构体赋值又分成： ⑴字符串赋值 ⑵数字赋值

user: user-1
content: 先解决 结构体赋值 问题， 再解决 结构体数组赋值 问题。

user: user-0
content: 引用 4 楼 weixin_45855436 的回复:[quote=引用 2 楼 gouyanfen 的回复:] 你这个有两个问题 第一 结构体元素 name num不应该设计为char 应该设计为 char 数组  typedef struct student{ char name[xx]; char num[xx];     int score; } Student_info; 第二 读入的时候用临时变量先存入，然后拷贝到对应的元素       for( i=0;i<n;i++){         scanf("%s %s %d",temp_name,temp_num,&temp_score);         strcpy(info[i].name,temp_name);         strcpy(info[i]. num,temp_num);         info[i].score=temp_score;      }  谢谢您的解答。我还有一些疑问： 0. 在 for 循环中的 scanf 内，可不可以使用 %s ，在name 和 num 中存储 字符串？ 1.如果 name 和 num 都是字符串的话，字符串的赋值可不可以不使用 strcpy, 而是直接用 “= ”？[/quote]  试了一下 好像不能哈哈哈哈

user: user-2
content: 0.可以使用 1.不可以用=  引用 4 楼 weixin_45855436 的回复:[quote=引用 2 楼 gouyanfen 的回复:] 你这个有两个问题 第一 结构体元素 name num不应该设计为char 应该设计为 char 数组  typedef struct student{ char name[xx]; char num[xx];     int score; } Student_info; 第二 读入的时候用临时变量先存入，然后拷贝到对应的元素       for( i=0;i<n;i++){         scanf("%s %s %d",temp_name,temp_num,&temp_score);         strcpy(info[i].name,temp_name);         strcpy(info[i]. num,temp_num);         info[i].score=temp_score;      }  谢谢您的解答。我还有一些疑问： 0. 在 for 循环中的 scanf 内，可不可以使用 %s ，在name 和 num 中存储 字符串？ 1.如果 name 和 num 都是字符串的话，字符串的赋值可不可以不使用 strcpy, 而是直接用 “= ”？[/quote]

user: user-0
content: 引用 2 楼 gouyanfen 的回复:你这个有两个问题 第一 结构体元素 name num不应该设计为char 应该设计为 char 数组  typedef struct student{ char name[xx]; char num[xx];     int score; } Student_info; 第二 读入的时候用临时变量先存入，然后拷贝到对应的元素       for( i=0;i<n;i++){         scanf("%s %s %d",temp_name,temp_num,&temp_score);         strcpy(info[i].name,temp_name);         strcpy(info[i]. num,temp_num);         info[i].score=temp_score;      }  谢谢您的解答。我还有一些疑问： 0. 在 for 循环中的 scanf 内，可不可以使用 %s ，在name 和 num 中存储 字符串？ 1.如果 name 和 num 都是字符串的话，字符串的赋值可不可以不使用 strcpy, 而是直接用 “= ”？

user: user-0
content: 引用 1 楼 user-3 的回复:分三行就行了。  标题明了。 代码整洁。 问题明确。 附带说明。 基本礼貌。  要是都像你这样问问题就好了。新手也是有差距的。  hahah谢谢您~菜鸟被夸，受宠若惊

user: user-2
content: 你这个有两个问题 第一 结构体元素 name num不应该设计为char 应该设计为 char 数组  typedef struct student{ char name[xx]; char num[xx];     int score; } Student_info; 第二 读入的时候用临时变量先存入，然后拷贝到对应的元素       for( i=0;i<n;i++){         scanf("%s %s %d",temp_name,temp_num,&temp_score);         strcpy(info[i].name,temp_name);         strcpy(info[i]. num,temp_num);         info[i].score=temp_score;      }

user: user-3
content: 分三行就行了。  标题明了。 代码整洁。 问题明确。 附带说明。 基本礼貌。  要是都像你这样问问题就好了。新手也是有差距的。
user-0 提问: 怎么算素数c语言

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

user: user-2
content: #include<stdio.h> #include <math.h>   int isprime(int num) { 	int i, rt;  	rt = (int)sqrt(num);  	for (i = 2; i <= rt; i++) 		if (num % i == 0) 			return 0; 	return 1; }  int main() { 	int m, n; 	int cnt = 0, tmp, i;  	scanf("%d %d", &m, &n);  	if (m > n) { 		tmp = m; 		m = n; 		n = tmp; 	}  	for (i = m; i <= n; i++) { 		if (isprime(i)) { 			printf("%d\t", i); 			cnt++; 		if (cnt % 10 == 0) 			putchar(10); 		} 	}  	return 0; }  供参考～

user: user-3
content: int k = 0; \\这个k用于判断是否为素数，不是为1，是则为0  scanf_s("%d", &n); \\然后输入需要判断的这个数字n  if (n == 1)\\输入的数字为1，则不是素数，所以k赋值1  k = 1;  for (i = 2; i < n / 2; i++) { \\循环让输入的n与 2到n/2的相除，看是否有余数  if (n % i == 0) {  //如果有可以除尽的数，则余数（n%i）等于1，则赋值给k=1，之后的break用于结束循环语句  k = 1;  break;  }  }  if (k == o) //如果在判断过程中n未被认为是素数，则k保持等于0，可判断n为素数；  printf("%d是素数", n);  else if(k==1)//如果k=1，说明n已被判断为不是素数。  printf("%d不是素数", n);

user: user-4
content: 这里面i并没有定义，而且除以二并不能判断他是素数啊，带个数字进去就发现不对了。
user-0 提问: 函数实现字符串逆序(有指针)

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

user: user-2
content: #include <stdio.h> #define MAXS 20  void f( char *p ); void ReadString( char *s ); /* 由裁判实现，略去不表 */  int main() {     char s[MAXS];      ReadString(s);     f(s);     printf("%s\n", s);      return 0; }  void ReadString(char *s) {     char c;     char *p;     p = s;     while ((c = fgetc(stdin)) != EOF) {         if (c == '\n'|| c == '\r') {             *p++ = '\0';             break;         } else {             *p++ = c;         }     } }  void f(char *p) {     char *head, *tail;     char c;      head = p;     for (tail = head; *tail != '\0'; tail++)         ;     tail--;      for (; head < tail; head++, tail--) {         c = *head;         *head = *tail;         *tail = c;     } }

user: user-3
content: #include <stdio.h> #include <string.h>  #define MAXS 20  void f( char *p ); void ReadString( char *s ); /* 由裁判实现，略去不表 */  int main() {     char s[MAXS];      ReadString(s);     f(s);     printf("%s\n", s);      return 0; }  void ReadString(char *s) {     scanf("%s", s); }  void f( char *p ) {     int len, tmp, left, right;     len = strlen(p);     left = 0;     right = len-1;     while(left<right)     {         tmp = *(p+left);         *(p+left) = *(p+right);         *(p+right) = tmp;         left++;         right--;     } } 供参考～

user: user-4
content: while(left<right) 修改成小于等于 解决奇数长度错误 例如有三个字符，你自己推算试试

user: user-5
content: b = *(p + left); *(p + left) = *(p + right); *(p + right) = b;
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: 在第一个for循环里首先对lable=0赋值，相当于对lable重新赋值，以便对后面的素数判断做基础

user: user-0
content: 已经解决问题了，，，，，，
user-0 提问: 初学指针...关于一些字符指针指向的新手迷惑..

回复:
user: user-1
content: 引用 6 楼 advance_coder的回复:这个题目不严谨  // 第一个参数需要定义为const,因为函数内部不会对他进行修改  // 目标存放地址的实际大小(maxsize)要有，防止缓存溢出  //  maxsize定义为无符号类型是因为缓存长度不可能小于零,不小心输入负数，编译器也会有警告 char* strmcpy(const char* t, int m, char* s, unsigned int maxsize) {     // 源指针为NULL.数据不存在     // 目标地址为NULL,数据无法拷贝     if (t==NULL || s == NULL)     {          return NULL;      }       int len = strlen(t);       if (len==0 || m >= len)      {           return NULL;      }       const char* start = t+m;       // 字符串的结束符是0x00      // 预留一个字节给结束符0x00      maxsize--;      while(start[0] || maxsize)      {            s[0]=start[0];            s++;            start++;       }        // 目标缓存长度不够       if (start[0] != 0x00)       {            return NULL;       }        s[0]=0x00;       // 注意以下代码不需要       // s++;        return s; }  int main(const char* argv[], int argn) {         char source[] = "wait to be cpoyed string";         char dest[256]="";         char* res = NULL;         res = strmcpy(source, 10, dest,256);         if (res == NULL)         {                printf("拷贝失败\n");                return 0;          }           // 计算dest中字符串长度          int len = res - dest;           // 也可以如下          int lens = strlen(dest);          assert(len != lens);         return 0; } 补充一下你的疑惑，t = t+m;是对t指针做偏移。

user: user-1
content: 这个题目不严谨  // 第一个参数需要定义为const,因为函数内部不会对他进行修改  // 目标存放地址的实际大小(maxsize)要有，防止缓存溢出  //  maxsize定义为无符号类型是因为缓存长度不可能小于零,不小心输入负数，编译器也会有警告 char* strmcpy(const char* t, int m, char* s, unsigned int maxsize) {     // 源指针为NULL.数据不存在     // 目标地址为NULL,数据无法拷贝     if (t==NULL || s == NULL)     {          return NULL;      }       int len = strlen(t);       if (len==0 || m >= len)      {           return NULL;      }       const char* start = t+m;       // 字符串的结束符是0x00      // 预留一个字节给结束符0x00      maxsize--;      while(start[0] || maxsize)      {            s[0]=start[0];            s++;            start++;       }        // 目标缓存长度不够       if (start[0] != 0x00)       {            return NULL;       }        s[0]=0x00;       // 注意以下代码不需要       // s++;        return s; }  int main(const char* argv[], int argn) {         char source[] = "wait to be cpoyed string";         char dest[256]="";         char* res = NULL;         res = strmcpy(source, 10, dest,256);         if (res == NULL)         {                printf("拷贝失败\n");                return 0;          }           // 计算dest中字符串长度          int len = res - dest;           // 也可以如下          int lens = strlen(dest);          assert(len != lens);         return 0; }

user: user-0

user: user-2
content: 改变定义首地址就己经不是原来的串了，简单的可以运用这样的操作，动态内存控制的时候，你会把自己搞晕。

user: user-3
content: 能得到正确结果吗？

user: user-4
content: 指针本来就是可以修改的啊，strmcpy里面的t和main里面的t其实不是一个东西。 另外说一个问题，判断t[i]是不是0还不够严谨，如果t的长度比m小怎么处理？
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: 好了就结贴。 CSDN论坛新手指南

user: user-0
content: 引用 3 楼 proorck2019的回复:缩进不对算错误吗？ if-else-return左移。 重启了一下软件，然后好了

user: user-0
content: 引用 1 楼 qq_45798109的回复:你确定书上没有花括号？ 重启了一下软件，然后好了

user: user-3
content: 从for循环看，我猜是你抄错代码了

user: user-4
content: 缩进不对算错误吗？ if-else-return左移。

user: user-2
content: 每个说书上就是这样的，最后都会被打脸。  建议多比较几遍。

user: user-5
content: 你确定书上没有花括号？
user-0 提问: C语言：关于void*和int之间强制转换的问题

回复:
user: user-0
content: 警告不影响程序运行  但是第一种写法没有警告，却只会运行线程2,不知道是不是传参出现了问题

user: user-1
content: 两种方式应该都是可以的，会有什么样的警告呢？

user: user-0
content: 14行和50行问题： 如果分别是：   不会有警告，但是程序第一个线程运行完了以后会卡住，不向下运行。  如果分别是：     会有警告，提示强制转换的问题，但是程序运行正常，没问题。 难道第一种转换方式不应该是对的吗？但是为什么运行会出错？

user: user-2
content: 第一种访问非法地址，第二种指针值转化为int
user-0 提问: 指针填空

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

user: user-2
content: 解决了就结贴。

user: user-2
content: 1：p=s;p[0]!='\0';p++ 2：p[0]==a 3：p[0]=b  代码不要截图。CSDN论坛新手指南
user-0 提问: 求大佬帮帮忙

回复:
user: user-0
content: 引用 3 楼 liups的回复:[quote=引用 2 楼 weixin_45853927 的回复:] [quote=引用 1 楼 user-2的回复:]该熟悉的是你，不是我们。  不试试，怎么知道不会呢？ 不是，这个是题目，我不会做然后直接复制来这里问[/quote] 就是让你自己做，不做怎么能熟悉呢！[/quote] 关键是不会，弄不懂

user: user-1
content: 引用 2 楼 weixin_45853927 的回复:[quote=引用 1 楼 user-2的回复:]该熟悉的是你，不是我们。  不试试，怎么知道不会呢？ 不是，这个是题目，我不会做然后直接复制来这里问[/quote] 就是让你自己做，不做怎么能熟悉呢！

user: user-0
content: 引用 1 楼 user-2的回复:该熟悉的是你，不是我们。  不试试，怎么知道不会呢？ 不是，这个是题目，我不会做然后直接复制来这里问

user: user-2
content: 该熟悉的是你，不是我们。  不试试，怎么知道不会呢？
user-0 提问: 十进制怎么转换成二进制

回复:
user: user-1
content: 引用 8 楼 weixin_45858258的回复:输入星期几的第一个字母来判断一下是星期几，如果第一个字母一样，则继续判断第二个字母。 你贴错题了吧。。。。

user: user-0
content: 输入星期几的第一个字母来判断一下是星期几，如果第一个字母一样，则继续判断第二个字母。

user: user-1
content: 引用 6 楼 weixin_45858258 的回复:这个要怎么改呢你写的这个想干嘛

user: user-0
content: 这个要怎么改呢

user: user-0
content: #include<stdio.h> int main() { 	float a, b, c//定义 	; 	int number; 	switch(number)//开始计算 	{ 	case 1:c=a+b; 		printf("计算结果"); 		break; 	case 2:c=a-b; 		break; 	case 3:c=a*b; 		brea 	case 4:c=a/b; 		break; } printf("%c",a,b,c); return 0; }

user: user-1
content: 十进制转16进制  string str="0123456789ABCDEF" void dectohex(int n) {     if (n >=0 && n < 16)         cout << str[n];     else {         dectooct(n / 16);         cout << str[n % 16];     } }

user: user-1
content: 十进制转八进制  void dectooct(int n) {     if (n >=0 && n < 8)         cout << n;     else {         dectooct(n / 8);         cout << n % 8;     } }

user: user-1
content: void dectooct(int n) { 	if (n >= 0 && n < 8) 		cout << n; 	else { 		dectooct(n / 8); 		cout << n % 8; 	} }
user-0 提问: 这个要怎么改啊，请各位大神搭把手

回复:
user: user-1
content: 手动实现一个 有限状态机。

user: user-1
content: 手动实现一个 有限状态机。

user: user-2
content: 好好学习一下，数据类型有哪些？如何输入？if语句怎么写？else是什么样的？分号的使用

user: user-0
content: 输入星期几的第一个字母来判断一下是星期几，如果第一个字母一样，则继续判断第二个字母。

user: user-2
content: 你这写的是什么啊？看过书了吗？
user-0 提问: PTA中有关阶乘序列的问题

回复:
user: user-0
content: 引用 7 楼 user-3的回复:自己i和j都搞乱了，main函数里的for循环用的是j不是i 哇，好有道理，那今晚我回去输入答案试试，哈哈哈哈，多谢大佬

user: user-0
content: 引用 10 楼 SuperDay的回复:那么楼主的程序到底输出了什么？ Sorry啊,刚下课，输入5，输出5

user: user-1
content: 那么楼主的程序到底输出了什么？

user: user-2
content: 引用 6 楼 SuperDay 的回复:[quote=引用 4 楼 qq_45798109的回复:]应该不是溢出的问题吧，我就是用的int类型通过的  #include <iostream> using namespace std;  int jiecheng(int n) { 	return n == 1 ? 1 : n * jiecheng(n - 1); }  int main() { 	int n; 	cin >> n; 	int sum = 0; 	for (int i = 1; i <= n; ++i) { 		sum += jiecheng(i); 	} 	cout << sum; 	return 0; } 试过12阶乘再累加吗？[/quote] 超过20的数确实会溢出，但是对于那道题来说int类型就足够了

user: user-3
content: 自己i和j都搞乱了，main函数里的for循环用的是j不是i

user: user-1
content: 引用 4 楼 qq_45798109的回复:应该不是溢出的问题吧，我就是用的int类型通过的  #include <iostream> using namespace std;  int jiecheng(int n) { 	return n == 1 ? 1 : n * jiecheng(n - 1); }  int main() { 	int n; 	cin >> n; 	int sum = 0; 	for (int i = 1; i <= n; ++i) { 		sum += jiecheng(i); 	} 	cout << sum; 	return 0; } 试过12阶乘再累加吗？

user: user-0
content: 引用 4 楼 qq_45798109的回复:应该不是溢出的问题吧，我就是用的int类型通过的  #include <iostream> using namespace std;  int jiecheng(int n) { 	return n == 1 ? 1 : n * jiecheng(n - 1); }  int main() { 	int n; 	cin >> n; 	int sum = 0; 	for (int i = 1; i <= n; ++i) { 		sum += jiecheng(i); 	} 	cout << sum; 	return 0; } 大佬你的语言俺不熟，如果不是溢出问题那是啥问题呢

user: user-2
content: 应该不是溢出的问题吧，我就是用的int类型通过的  #include <iostream> using namespace std;  int jiecheng(int n) { 	return n == 1 ? 1 : n * jiecheng(n - 1); }  int main() { 	int n; 	cin >> n; 	int sum = 0; 	for (int i = 1; i <= n; ++i) { 		sum += jiecheng(i); 	} 	cout << sum; 	return 0; }

user: user-0
content: 引用 1 楼 SuperDay的回复:int类型估计会溢出，改成long long类型 好的，今晚我回去改下答案看看，多谢大佬

user: user-1
content: int类型估计会溢出，改成long long类型
user-0 提问: 二叉树的创建，求大佬看看我哪里错了

回复:
user: user-1
content: f == 'Y' || f == 'y'

user: user-2
content: 复制粘贴也会错的吗？ 还能再乱点吗？

user: user-0
content: 函数运行了一半就自己结束了，不懂为什么

user: user-3
content: if(!(f=='Y'||'y'))	{	  这一行有错 f=='Y' || f=='y'  需要两个f

user: user-4
content: ch=getchar();输入字符完成之后，还有一个回车符'\n'，后面scanf("%c",&f);接收到的实际是这个回车符  #include<stdio.h> #include<stdlib.h>  using namespace std;  typedef struct BinaryTreeNode {     char a;     struct BinaryTreeNode *l; //左右孩子指针     struct BinaryTreeNode *r; }BinaryTreeNode;  BinaryTreeNode * CreateBinaryTree() {     char ch,f;      BinaryTreeNode *node=NULL;     node=(BinaryTreeNode*)malloc(sizeof(BinaryTreeNode));      printf("请输入节点值\n");     scanf("%c",&ch);     f = getchar();     node->a = ch;      printf("该节点是否为子叶(Y or N)");     scanf("%c",&ch);     f = getchar();      if((ch == 'Y')||(ch == 'y'))     {         node->l = CreateBinaryTree();         node->r = CreateBinaryTree();     }     else     {         node->l=NULL;         node->r=NULL;     }     return node; }  int main() {     CreateBinaryTree(); }
user-0 提问: 输入n个正整数，输出其中的负数，正数，0

回复:
user: user-1
content: 只要会用最基本的语法，这个题目不难，自己动手写写吧。 如果要吃着碗饭，就要去努力～

user: user-2
content: 不是都用中文写清楚了吗  一步一步来呗

user: user-3
content: int a[100]; for (i = 0; i < n; i++) {     scanf("%d", &a[i]);     if (a[i] > 0)     {         posNum++;     }     else if (a[i] == 0)     {         zeroNum++;     }     else     {         negNum++;     } }
user-0 提问: 初学者ball ball各位大佬

回复:
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: 把判断i%6的判断放到循环里

user: user-3
content: #include<stdio.h> int main(){ 	int i; 	for(i=1;i<=100;i++){ 		printf("%d",i); 		if(i%6==0){ 			printf("\n"); 		} 	} 	return 0; }

user: user-4
content: 你需要将if语句放入for循环中哦
user-0 提问: 求救！c语言的除法的四则运算。除法总是有问题

回复:
user: user-0
content: 该不会是整型之间做加减乘除只能得到整型，所以错了吗

user: user-0
content: 大概是除法所得出来的两个浮点数就是不对不知道为什么。是因为我的除法公式写错了吗？

user: user-0
content: 话说这个会沉吗
user-0 提问: 用c语言实现

回复:
user: user-1
content: 你的提问我看了，因为太笼统，无法回答。另外，我们也不太愿意帮你写作业。你可以自己试着完成，遇到问题再来提问。 类似于scanf("%d",n)这种题目，我们是非常娴熟的。

user: user-2
content: 需求不明确。  CSDN论坛新手指南

user: user-0
content: 帮帮忙兄弟萌，刚入门，还不太熟，而且很急用

user: user-3
content: 不，是因为会的在忙，闲的不会，我恰巧就是后者

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: 引用 7 楼 Programmer_Shaw的回复:[quote=引用 6 楼 不闻窗外事的回复:]最后应该是除以n吧，为什么是n-1 公式是n-1  除n答案也不对[/quote] 那你实际上算一算到底是多少，每一步该是什么，把每一步都打印出来，看看与你算的结果有没有区别

user: user-0
content: 引用 6 楼 不闻窗外事的回复:最后应该是除以n吧，为什么是n-1 公式是n-1  除n答案也不对

user: user-2
content: 最后应该是除以n吧，为什么是n-1

user: user-0
content: 求助  求大佬帮忙看下

user: user-3
content: 引用 3 楼 Programmer_Shaw 的回复:[quote=引用 2 楼 user-3的回复:]我还以为是楼主C语言成绩差 哈哈  我成绩是很差[/quote] 但是没有到考试呢

user: user-0
content: 引用 2 楼 user-3的回复:我还以为是楼主C语言成绩差 哈哈  我成绩是很差

user: user-3
content: 我还以为是楼主C语言成绩差

user: user-0
content: 出啥问题了 答案不对  我感觉思路没问题
user-0 提问: 哪里有内存泄露？

回复:
user: user-0
content: 引用 3 楼 羅昇 的回复:buff = strchr(ipts, ' ');修改了 buff free buff不能正确释放内存 会造成堆破坏  谢谢，我的解决方法是：取消动态分配，在while循环外定义了char *buff = NULL。[/quote]  44行，改成 i < SCANF_LEN - 1， 要不然52行会数组越界[/quote] 恩，这个我改了，谢谢^_^

user: user-1
content: 引用 2 楼 weixin_36124480 的回复:[quote=引用 1 楼 user-2 的回复:] buff = strchr(ipts, ' ');修改了 buff free buff不能正确释放内存 会造成堆破坏  谢谢，我的解决方法是：取消动态分配，在while循环外定义了char *buff = NULL。[/quote]  44行，改成 i < SCANF_LEN - 1， 要不然52行会数组越界

user: user-0
content: 引用 1 楼 user-2 的回复:buff = strchr(ipts, ' ');修改了 buff free buff不能正确释放内存 会造成堆破坏  谢谢，我的解决方法是：取消动态分配，在while循环外定义了char *buff = NULL。

user: user-2
content: buff = strchr(ipts, ' ');修改了 buff free buff不能正确释放内存 会造成堆破坏
user-0 提问: C11的线程库发现很多IDE都没有支持啊，请问去哪里下载它的库啊

回复:
user: user-1
content: 引用 2 楼 六道佩恩 的回复:[quote=引用 1 楼 user-1 的回复:] https://stackoverflow.com/questions/22875545/c11-gcc-threads-h-not-found glibc能找到C11线程的实现，请问如何编译成Windows下的.a库？[/quote]找到对应版本 mingw代码 编译

user: user-0
content: 引用 1 楼 user-1 的回复:https://stackoverflow.com/questions/22875545/c11-gcc-threads-h-not-found glibc能找到C11线程的实现，请问如何编译成Windows下的.a库？

user: user-1
content: https://stackoverflow.com/questions/22875545/c11-gcc-threads-h-not-found
user-0 提问: c语言编写程序

回复:
user: user-1
content: #include<stdio.h> int main(void) { 	int i, j, ch; 	printf("输入输出行数:"); 	scanf("%d", &ch); 	for (i = 1; i <= ch/2+1; i++) 	{ 		for (j = 1; j <= i; j++)  			printf("*"); 		printf("\n"); 	} 	return 0; }

user: user-2
content: ⑴判断输入是否符合要求 ⑵for 从1到n ⑶显示一行星号

user: user-0
content: 我看不出来┐（─__─）┌

user: user-0
content: 自己先尝试打出自己思路吧
user-0 提问: 求助！！

回复:
user: user-0
content: 😷这个字符串该怎么输入啊

user: user-1
content: ASCII表中'A'的值，确实比'a'小。 因此求字符串中最小值就可以了。

user: user-2
content: 数字怎么比较的，字母就怎么比较。  CSDN论坛新手指南
user-0 提问: POSIX C有lib和dll吗？

回复:
user: user-1
content: 可以找到动态库.so结尾的（有的后面会带数字，表示版本），windows下应该是.dll结尾的

user: user-2
content: 这种东西平台相关的 在win下链接库才是 lib 和 dll后缀  当然 你非要把 .a库重命名 .lib  那也是可以的

user: user-3
content: 什么叫lib库，你说的是动态库吧，肯定有啊，一般都是动态库，我不知道你说的posix c指的是哪些内容，但是都是有的，例如在我的linux系统上，/lib下就有libpthread线程动态库

user: user-2
content: 引用 5 楼 六道佩恩 的回复:[quote=引用 2 楼 lin5161678 的回复:] 这种东西平台相关的 在win下链接库才是 lib 和 dll后缀  当然 你非要把 .a库重命名 .lib  那也是可以的 怎么可能重命名。。。。。 需要移植的好吧。 POSIX的线程库我只找到.a版本，没有lib和dll[/quote]你需要一份win下的posix线程库的代码 然后编译成lib dll 直接找unix的链接库 是缘木求鱼  这是不同的操作系统

user: user-0
content: 引用 2 楼 lin5161678 的回复:这种东西平台相关的 在win下链接库才是 lib 和 dll后缀  当然 你非要把 .a库重命名 .lib  那也是可以的 怎么可能重命名。。。。。 需要移植的好吧。 POSIX的线程库我只找到.a版本，没有lib和dll

user: user-0
content: 引用 1 楼 不闻窗外事 的回复:什么叫lib库，你说的是动态库吧，肯定有啊，一般都是动态库，我不知道你说的posix c指的是哪些内容，但是都是有的，例如在我的linux系统上，/lib下就有libpthread线程动态库 lib库是Windows平台的静态库啊。。。 dll才是Windows平台的动态库 a是Linux、Unix等平台的静态库 so是Linux、Unix等平台的动态库
user-0 提问: C语言使用goto出现这种情况怎么解决呀。

回复:
user: user-0
content: 问题已经解决，，，，，，，

user: user-1
content: 代码呢？不能只说问题，不贴代码呢

user: user-2
content: 跟goto没关系吧，应该你代码有问题

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: int类型可能不够存储，溢出了吧？改成long long试试看

user: user-3
content: #include <stdio.h>  int main() {     int t,i,n,m=1,s=0;      scanf("%d",&n);     for(t=1;t<=n;t++)     {         for(i=1;i<=t;i++)         {             m=m*i;         }         s=s+m;         m = 1;    //重新赋值为1     }     printf("%d\n",s);      return 0; }  供参考～

user: user-4
content: #include <stdio.h> int main(void) { 	int n, sum = 0, m = 1; 	scanf_s("%d", &n); 	for (int i = 1; i <= n; ++i) { 		m *= i; 		sum += m; 	} 	printf("%d\n", sum); 	return 0; } /* 12 522956313 请按任意键继续. . . */

user: user-5
content: for (t = 1; t <= n; t++) {     m = m * t;     s = s + m; }

user: user-6
content: 要不要include  maths啊   是不是漏了这个呢
user-0 提问: 那位大佬来看看这个程序是怎么输出的啊？

回复:
user: user-1
content: k=1,i=5,所以k>i结果为假，用0表示 k>i<j就变成了0<j j=10，所以0<j结果为真，用1表示

user: user-2
content: 这个有请@wowpH来回答！

user: user-3
content: （k>i）<j,如果这个还不理解看看下面 bool b = k>i; bool b2 = b < j; printf("%d",b2); 如果还不理解，那么复习下数据类型中关于bool和整型的章节。

user: user-4
content: 表达式从左向右运算；  但是不建议在程序里这么写
user-0 提问: 求助

回复:
user: user-1
content: #include c #include stdio #include maths  main() { int shu,i,n scanf("%d",&shu); scanf("%d",&n);  for (n<shu,shu%n=i,n++) {       if i=0     { printf("shi sushu")     } else           { printf("bu shi sushu")          }  } getch(); }

user: user-1
content: 有点麻烦哦   怎么用那么多变量呢  变量越少越好啊

user: user-1
content: n没有赋值啊。 N没有变化，那当然死循环了啊

user: user-2
content: while（b != 0） b=n/10 n都不会变，你怎么退出去

user: user-2
content: 引用 5 楼 lqxzb 的回复:[quote=引用 1 楼 與蘤舊縐的回复:]while（b != 0） b=n/10 n都不会变，你怎么退出去 我不是从键盘上输入n了吗[/quote] 你是循环套循环，里面的循环没有改n，b要么永远不等于0，无限循环，要么直接等于0不进入循环

user: user-0
content: 引用 1 楼 與蘤舊縐的回复:while（b != 0） b=n/10 n都不会变，你怎么退出去 我不是从键盘上输入n了吗
user-0 提问: 在VS中编译c，新手求大神解答

回复:
user: user-0
content: 引用 1 楼 proorck2019的回复:是不是num.txt里的内容不对啊？ 不是，代码和文件在codeblock中可以正常运行

user: user-0
content: 不会吧，代码在codeblock中可以正常运行

user: user-1
content: 是不是num.txt里的内容不对啊？
user-0 提问: 用C语言编写：求100到200的所有素数，并输出

回复:
user: user-1
content: //#include <studio.h> #include <stdio.h> #include <math.h>  int main() {     int a,b,c;     //scarf ("%d,a");     scanf ("%d", &a);     //b=(int)sqrt(a);     for(a=100;a<=200;a++) {         b=(int)sqrt(a);         for(c=2;c<=b;c++)             //if(c>b)             if(a % c == 0) {                 break;             }         if (c > b)             printf("%d\t",a);     }     printf("\n");     return 0; } 供参考～  代码编译不过的，逻辑也是有问题的。建议对比找一下自己的问题～

user: user-2
content: 为了代码结构清晰，先编写一个函数，判断一个数是不是素数，再从100到200循环，调用这个函数。

user: user-2
content: scarf ("%d,a"); scanf("%d", &a);
user-0 提问: 0x509FE63C (ucrtbased.dll)处(位于 实验.exe 中)引发的异常: 0xC0000005: 写入位置 0x00542000 时访问冲突

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

user: user-2
content: 应该是scanf_s("%s", a, sizeof(a));

user: user-3
content: scanf_s("%s", &a[n]);// 错误写法 scanf_s("%s", a, n);// 正确写法  CSDN论坛新手指南

user: user-4
content: 楼主要输入一个学生的名字和成绩吗？还是输入多个学生的名字和成绩。 我看楼主是第二个情况，那么就要定义二维数组
user-0 提问: 二进制如何转化十进制

回复:
user: user-0
content: 看不懂啊大佬们   刚入门  能不能有C语言的

user: user-1
content: 给你一个别的语言版的参考  func main() { 	var num string; 	fmt.Scanf("%s", &num) 	var number []byte = []byte(num) 	var result float64 	for i, v := range number { 		result += (float64(v - '0')) * math.Pow(2, float64(len(number)-i-1)) 	} 	fmt.Print(int64(result)) }

user: user-2
content: 手动如何计算，那么编程也可以用这个计算方法。比如1111:从右向左分别乘2^0, 2^1...

user: user-1
content: 每一位上的数字乘以2的（位数-1）次方
user-0 提问: C·请教阶乘输出错误的问题

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

user: user-2
content: 试着用unsigned long long，都是用8个字节表示（32位系统）的。

user: user-3
content: 不要贴图，贴代码

user: user-4
content: 为什么要一开始用double型，一开始用long int，最后输出s的时候(double)s强制转化一下
user-0 提问: C语言中关于宏定义的使用

回复:
user: user-0
content: 上面最后一句引用字体标错了。  如果新增加个符号改为#define Test_Demo(x) Test]##_Demo(x) ，Test宏展开了就多了个新增加的符号。

user: user-0
content: 如果使用用法3 #define Test_Demo(x) Test]##_Demo(x) 展开后就是iRetCode = Test1]_Demo(0); 其实就需要将]去掉，或者有没有在宏定义中不影响展开的符号， 如果直接写成#define Test_Demo(x) Test##_Demo(x)，此时Test宏就没有展开， 如果新增加个符号改为#define Test_Demo(x) Test#]#_Demo(x) ，Test宏展开了就多了个新增加的符号。

user: user-0
content: 有哪位大神说可以做到的？

user: user-1
content: 有点基本概念  宏展开是一个预编译期的事情  i 取值是一个运行期的行为  宏展开的时候 无论如何也无法获取到 i 的值是多少  所以不可能实现你的想法

user: user-1
content: 做不到

user: user-2
content: https://blog.csdn.net/huan447882949/article/details/76100155/
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: 建议贴代码（不要图片）

user: user-3
content: 引用 7 楼 weixin_45849801 的回复:引用 6 楼 jdjsdkjbkb 的回复：我也是新手，代码图发下，应该没引用头文件吧代码就是hello world 那个代码 你写的程序发图看下啊

user: user-0
content: 引用 6 楼 jdjsdkjbkb 的回复：我也是新手，代码图发下，应该没引用头文件吧代码就是hello world 那个代码

user: user-3
content: 我也是新手，代码图发下，应该没引用头文件吧

user: user-0
content: 引用 3 楼 jdjsdkjbkb 的回复：helloworld吗对的 但是就是出现错误呢

user: user-4
content: 新建空项目。CSDN论坛新手指南

user: user-3
content: helloworld吗

user: user-0
content: 引用 1 楼 與蘤舊縐 的回复：看下面错误信息 看他给你讲了什么 第三行末在查找预编译头时遇到意外的文件，是否忘记了向源中添加#include pch.h ，我在网上搜索 说不使用预编译头 我也设置了，但是还是出现这种错误

user: user-5
content: 看下面错误信息 看他给你讲了什么 第三行末
user-0 提问: 如何用C语言实现提取网页邮箱的代码？

回复:
user: user-1
content: 引用 4 楼 liups 的回复:[quote=引用 3 楼 1东风1 的回复:] 能否给出具体的代码？ 不想给你。但是有建议： 1、你得想办法取得网页的html代码，这个是单纯的C或其他语言很难办到的，你得考虑某一个体系，比如VC，然后通过类似IE内核什么的来完成（或者其他方法都可以）。这一步方法很多的，请仔细选择方案，如果非要让我建议的话，建议使用c++ builder，这个可是RAD，如果不知道什么是RAD，可以百度一下； 2、html代码有了，通过正则表达式就可以很轻松地实现，这一点应该可以找到现成的，最多稍微修改一下就行了。[/quote] 2的补充：写得有点匆忙，应该是从正则中提取邮箱地址有太多现成的方法（就是正则表达式了），随便搜索一下就一大堆

user: user-1
content: 引用 3 楼 1东风1 的回复:能否给出具体的代码？ 请看4楼。如果看了还有问题的话，建议放弃这个目标吧

user: user-1
content: 引用 3 楼 1东风1 的回复:能否给出具体的代码？ 不想给你。但是有建议： 1、你得想办法取得网页的html代码，这个是单纯的C或其他语言很难办到的，你得考虑某一个体系，比如VC，然后通过类似IE内核什么的来完成（或者其他方法都可以）。这一步方法很多的，请仔细选择方案，如果非要让我建议的话，建议使用c++ builder，这个可是RAD，如果不知道什么是RAD，可以百度一下； 2、html代码有了，通过正则表达式就可以很轻松地实现，这一点应该可以找到现成的，最多稍微修改一下就行了。

user: user-0
content: 能否给出具体的代码？

user: user-1
content: 引用 1 楼 proorck2019 的回复:好像、似乎、貌似，需要正则表达式。 这是王道

user: user-2
content: 好像、似乎、貌似，需要正则表达式。
user-0 提问: 麻烦各位大神帮小白一个忙，万分感谢

回复:
user: user-1
content: 引用 5 楼 與蘤舊縐 的回复:[quote=引用 3 楼 轻箬笠 的回复:] max=a[0],min=a[0]这段没意义。a[10]没初始化。 一般就最大值和最小值，max=min=0就可以了。  max=min=0你确定  [/quote] int max, min; max = min = 0; 有正负数的时候就是这么干的

user: user-2
content: #include <stdio.h>  //void main() int main() {     //int a[10], i,max=a[0],min=a[0],sum=0,m;      int a[10], m, max, min, sum;     int i;      for(i=0;i<10;i++)         scanf("%d",&a[i]);     max = min = a[0];     sum = 0;     for(i=0;i<10;i++)     {         if(max<a[i])             max=a[i];         if(min>a[i])             min=a[i];         sum+=a[i];     }     m = (sum-max-min)/8;      printf("%d",m); } 供参考～ 楼主把max, min赋值太早了，因为此时a[0]还是随机数，而不是你输入的第一个元素值。

user: user-3
content: int a[10],i,max=a[0],min=a[0],sum=0,m;   a[0]都没有初始化，你怎么给min和max赋值，后面给a键入，不代表min和max 的值也会变啊，最好是在给a键入值之后在将a[0]赋值给min和max

user: user-0
content: 麻烦了，感谢各位了

user: user-4
content: 引用 3 楼 轻箬笠 的回复:max=a[0],min=a[0]这段没意义。a[10]没初始化。 一般就最大值和最小值，max=min=0就可以了。  max=min=0你确定

user: user-5
content: #include <stdio.h> #include <limits.h> int main(void) { 	int a[10], i, max, min, sum, m; 	for (i = 0; i < 10; i++) { 		scanf_s("%d", &a[i]); 	} 	max = INT_MIN; 	min = INT_MAX; 	sum = 0; 	for (i = 0; i < 10; i++) { 		if (max < a[i]) { 			max = a[i]; 		} 		if (min > a[i]) { 			min = a[i]; 		} 		sum += a[i]; 	} 	m = (sum - max - min) / 8; 	printf("%d\n", m); 	return 0; } /* 1 2 3 4 5 6 7 8 9 0 4 请按任意键继续. . . */

user: user-1
content: max=a[0],min=a[0]这段没意义。a[10]没初始化。 一般就最大值和最小值，max=min=0就可以了。

user: user-4
content: 思考一下min和max的初始值是什么

user: user-4
content: 首先不要用void main 其次max=a[0],min=a[0]之前数组没有初始化 最后你可以直接排序，然后取中间8个，省事
user-0 提问: C语言新手求以下这道题目的程序，请大家帮帮忙，不胜感激

回复:
user: user-1
content: #include <stdio.h> void main() { printf("请输入首字母:\n"); char x; while ((x = getchar()) != 'y') { switch (x) { case 'S': { printf("请输入次位字母:"); getchar(); if ((x = getchar()) == 'a') { printf("星期六!\n"); } else if (x == 'u') { printf("星期日!\n"); } else { printf("输入错误\n"); } break; } case 'M': printf("星期一!\n"); break; case 'T': { printf("请输入次位字母:"); getchar(); if ((x = getchar()) == 'h') { printf("星期四!\n"); } else if (x == 'u') { printf("星期二!\n"); } break; } case 'F': printf("星期五!\n"); break; case 'W': printf("星期三!\n"); break; } } }

user: user-2
content: 写了就把你代码贴出来再问。 每次都别人替你写，真的进步不了。。 代码必须要自己动手。

user: user-0
content: 引用 1 楼 user-2的回复:先把之前的帖结了。。话说你每次直接求代码，都不自己写一下，调一调。能有啥进步。。 还是要自己动手的。 我一直有在写哦，大家写给我的代码我都有在好好研究，自己标注释，结贴是因为我在手机app上找不到结贴的地方，我中午回去用电脑结哈

user: user-2
content: 先把之前的帖结了。。话说你每次直接求代码，都不自己写一下，调一调。能有啥进步。。 还是要自己动手的。
user-0 提问: 哥哥们，我没法传送我定义的两个分函数。请求指教。谢谢了呀。

回复:
user: user-1
content: #include "stdio.h"  //int fun(int b[50],int r) int fun(char b[50],int r) {     //    {     for(r=1;b[r]!='\0';r++)         ;     //   }      printf("  %d ",r);     return r; }  //int app(int a[50],int o) int app(char a[50],int o) {     for(o=1; a[o]!='\0'; o++)         ;     printf("  %d  ",o);     return o; }    //void main() int main() {     int o,n=0,t=0,r;     char a[50],b[50];      printf("     请输入字符串a\n");     scanf("%s",a);     printf("    请输入字符串b\n");     scanf("%s",b);      int fun(char b[50],int r);     int app(char a[50],int o);   //statement      //fun( b[50],r);     //app(  a[50],o);     r = fun(b, r);     o = app(a, o);      for(;t<r;t++)         a[o++]=b[t];     a[o] =  0;     printf("%s",a);   } 供参考～  注意函数声明和函数调用的区别。 函数传参注意参数的类型要匹配

user: user-2
content: 你的老师是让你手动实现一个strcat

user: user-3
content: int fun(char b[50]){ 	int r; 	for (r = 0; b[r] != '\0'; r++); 	return r; }  #include <stdio.h> void main() { 	int o, n = 0, t = 0; 	char a[50], b[50]; 	printf("请输入字符串a:\n"); 	scanf("%s", a); 	printf("请输入字符串b:\n"); 	scanf("%s", b); 	int x = fun(a); 	int y = fun(b); 	for (int i = 0;i < y; i++) 		a[i + x - 1] = b[i]; 	a[x + y - 1] = NULL; 	printf("%s", a); }

user: user-0
content: 引用 7 楼 user-4的回复:你这个代码一般人看不懂。CSDN论坛新手指南 同学写的，用我的号问

user: user-4
content: 你这个代码一般人看不懂。CSDN论坛新手指南

user: user-0
content: 引用 5 楼 qq_45798109的回复:你写的这个，错误太多了，你说一下你这个程序想干嘛吧 编写程序，将两个字符串连接起来，不要用strcat函数

user: user-3
content: 你写的这个，错误太多了，你说一下你这个程序想干嘛吧

user: user-3
content: 把int改成char

user: user-0
content: 引用 1 楼 qq_45798109的回复:你scanf 后的 fun(b[50],int r);  app(a[50],int o); 是想干嘛。。。 对了。刚刚错吧分函数首部括号内的int全删了。主要问题是没法传过去。请您看看了呀。

user: user-0
content: 引用分函数啊。分函数是计算输入的两个字符串长度的。我们老师说不能用计算长度的那个strlen，所以我才这样写。

user: user-3
content: 你scanf 后的 fun(b[50],int r);  app(a[50],int o); 是想干嘛。。。
user-0 提问: C语言新手求帮忙

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

user: user-2
content: 引用 3 楼 proorck2019 的回复：[quote=引用 1 楼 weixin_42593366的回复:]因为你定义的预处理里面就少了个) 回答正确[/quote]我也刚学几天

user: user-3
content: //使用720的费用 #define qfei2 (qfei+qfei1+f3*(qw3-qw2)) 少个右括号～

user: user-4
content: 建议有括号时先把左右括号写上，再在括号里写你的代码，这样不容易漏括号。

user: user-5
content: 引用 1 楼 weixin_42593366的回复:因为你定义的预处理里面就少了个) #define qfei2 那行少一个括号

user: user-5
content: 引用 1 楼 weixin_42593366的回复:因为你定义的预处理里面就少了个) 回答正确

user: user-2

user: user-2
content: 因为你定义的预处理里面就少了个)
user-0 提问: 有没有大佬帮忙看看

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

user: user-2
content: 不要直接用int类型算，要保持精确性必须让10*根号算完再舍去小数（强转整型就行）
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: 引用 5 楼 qq_45814010 的回复:#include<stdio.h>  int main() {     int i=2;     while(i<=1000)     {         int j=1,sum=0;         while(j<=i/2)         {             if(i%j==0)             {                 sum+=j;                 j++;             }         }         if(sum==i)          printf("%d",i);            i++;     }     return 0; } 就是这个运行没有结果。。。  你考虑一下 在 j = 2 , i = 5的情况下，你内部的while会是一个什么情况？           while(j<=i/2)         {             if(i%j==0)             {                 sum+=j;                 j++;             }         }   因为这里无法执行if里面的语句，所以程序里的i和j（主要是j）不能++，所以程序就一直死在这里了。

user: user-0
content: 嗯嗯呢，谢谢谢。我说怎么不能显示结果

user: user-0
content: #include<stdio.h>  int main() {     int i=2;     while(i<=1000)     {         int j=1,sum=0;         while(j<=i/2)         {             if(i%j==0)             {                 sum+=j;                 j++;             }         }         if(sum==i)          printf("%d",i);            i++;     }     return 0; } 就是这个运行没有结果。。。

user: user-0
content: 我求的是2-1000的完美数，为什么运行后没有结果

user: user-0
content: 是的。其实还有个问题if中有的多个语句我没有加花括号。（不过这个是题目你们不知道的原因）

user: user-3
content: 写成While,还以为是函数名呢，函数调用后边应该有分号。

user: user-3
content: 第九行，应该是小写的while。
user-0 提问: 二叉树的创建

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

user: user-2
content: 知道完全二叉树不，你就按照完全二叉树输入，没有的节点使用#号这种替代，从上往下，从左往右输入，你就知道这个树是什么样的了，例如你这个就是ABCDE#F##G#这种
user-0 提问: 5！=1*2*3*4*5。引入一种新的阶乘概念，由原来的每个数相乘变为将不大于n的所有偶数相乘，例如：4!!=2*4。求出1!!+2!!......+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: 5!!=2×4=1×2 × 2×2=2!×2^2 6!!=2×4×6=1×2 × 2×2 × 3×2=1×2×3 × 2^3=3! × 2^3

user: user-3
content: 引用 6 楼 qq_45815575 的回复:[quote=引用 4 楼 早打大打打核战争的回复:]这个没有什么新意，n!!=2^(n/2) * (n/2)! 实际上就是(n/2)! 左移n/2位 题目的意思是4！！=2*4   5！！=2*4  6！！=2*4*6[/quote]  有什么问题呢？5!!=2^(5/2) * (5/2)!=4*2!=8

user: user-0
content: 引用 4 楼 早打大打打核战争的回复:这个没有什么新意，n!!=2^(n/2) * (n/2)! 实际上就是(n/2)! 左移n/2位 题目的意思是4！！=2*4   5！！=2*4  6！！=2*4*6

user: user-0
content: 引用 4 楼 早打大打打核战争的回复:这个没有什么新意，n!!=2^(n/2) * (n/2)! 实际上就是(n/2)! 左移n/2位 什么意思？？？？？？？？

user: user-3
content: 这个没有什么新意，n!!=2^(n/2) * (n/2)! 实际上就是(n/2)! 左移n/2位

user: user-0
content: 引用 1 楼 user-5的回复:从2开始，不需要while  #include<stdio.h> int main(void) { 	int i, a, n, j, m, d, sum; 	scanf("%d", &a); 	while (a--) 	{ 		scanf("%d", &n); 		d = 0; 		for (i = 2; i <= n; i++) 		{ 			sum = 1; 			for (j = 1; j <= i; j++) 			{ 				if(j % 2 == 0) 					sum *= j; 			} 			d = d + sum; 		} 		printf("%d\n", d); 	} 	return 0; }  为什么我运行不出来啊

user: user-4
content: for(j = 2;j <= i;j+=2) 为什么非要全遍历然后筛出一半？

user: user-5
content: 从2开始，不需要while  #include<stdio.h> int main(void) { 	int i, a, n, j, m, d, sum; 	scanf("%d", &a); 	while (a--) 	{ 		scanf("%d", &n); 		d = 0; 		for (i = 2; i <= n; i++) 		{ 			sum = 1; 			for (j = 1; j <= i; j++) 			{ 				if(j % 2 == 0) 					sum *= j; 			} 			d = d + sum; 		} 		printf("%d\n", d); 	} 	return 0; }
user-0 提问: 求大佬帮助这个题怎么写

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

user: user-2
content: 定义一个函数，生成随机数，分成六个等区间部分，若随机数在某一区间，则确定点数，再将点数返回 下面的题太水了，排序最好写的就冒泡，就这样
user-0 提问: 求救QAQ

回复:
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: 15:==> 1111(二进制） 128:==>1000000-->3bit==>10000即  1111 & 10000 == 0吧
user-0 提问: 软件工程1903柳茂

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

user: user-0
content: 引用 4 楼 weixin_45812340的回复:[quote=引用 2 楼 不闻窗外事的回复:]这么好的笔记不用来烧水可惜了 你给我看你的瞅瞅，行吗[/quote] 哥，我错了  我下次一定改正，再也不乱发了

user: user-0
content: 引用 2 楼 不闻窗外事的回复:这么好的笔记不用来烧水可惜了 你给我看你的瞅瞅，行吗

user: user-0
content: 引用 1 楼 proorck2019的回复:记得结贴给分数啊，，， 哥，我们学长让发的啊  5555

user: user-2
content: 这么好的笔记不用来烧水可惜了

user: user-3
content: 记得结贴给分数啊，，，
user-0 提问: C语言fopen函数

回复:
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: D，建议查一下fopen原型；FILE *fopen(const char *path, const char *mode);

user: user-3
content: 应该用双引号。

user: user-4
content: d，r是单引号，不对
user-0 提问: 一道c语言题（帮帮菜鸟吧救救孩子）

回复:
user: user-1
content: #include<stdio.h> int main(void) { int type[] = {20, 10, 5, 1},num=4; int x,i; printf("please enter a dollar amount:"); scanf("%d",&x);  for (i = 0; i < num; ++i){ 	 printf ("美元%d bills:%d\n", type[i], x/type[i]);         x %= type[i];  } 	return 0; }

user: user-2
content: 引用 14 楼 qq_45836904 的回复:[quote=引用 12 楼 lin5161678的回复:][quote=引用 10 楼 liups 的回复:] [quote=引用 9 楼 ggglivw 的回复:] 做功能你不考虑扩展性吗？来来来，我给你改下需求，+100种面额. 1、多余的功能也有成本的； 2、性能也是要考虑的，举一个极端的例子：有人的单片机程序取消了循环，而是把同样的指令重复了若干次[/quote]考虑扩展性和多余功能没什么关系  扩展性只是方面扩展功能 不等于现在就有没用上的功能  回到这里  #2 的代码略有瑕疵 num不应该硬编码 应该是计算数组大小 #2的代码 如果想加 100 50 只需要数组里面加2个元素 就修改好了 不需要100 50 就删掉  没有你所说的多余的功能  只是 添加删除很方便而已 [/quote] 问下那该怎么改num变nu吗！[/quote]int num = sizeof type / sizeof *type;这样数组大小变化的时候 num同步变化 不需要另外做修改 比如 多加一个元素  int type[] = {50, 20, 10, 5, 1}; int num = sizeof type/sizeof *type; num的值是 5  不需要手动做修改;

user: user-1
content: 引用 12 楼 lin5161678的回复:[quote=引用 10 楼 liups 的回复:] [quote=引用 9 楼 ggglivw 的回复:] 做功能你不考虑扩展性吗？来来来，我给你改下需求，+100种面额. 1、多余的功能也有成本的； 2、性能也是要考虑的，举一个极端的例子：有人的单片机程序取消了循环，而是把同样的指令重复了若干次[/quote]考虑扩展性和多余功能没什么关系  扩展性只是方面扩展功能 不等于现在就有没用上的功能  回到这里  #2 的代码略有瑕疵 num不应该硬编码 应该是计算数组大小 #2的代码 如果想加 100 50 只需要数组里面加2个元素 就修改好了 不需要100 50 就删掉  没有你所说的多余的功能  只是 添加删除很方便而已 [/quote] 问下那该怎么改num变nu吗！

user: user-1
content: 问下那应该怎么改num变nu吗？

user: user-2
content: 引用 10 楼 liups 的回复:[quote=引用 9 楼 ggglivw 的回复:] 做功能你不考虑扩展性吗？来来来，我给你改下需求，+100种面额. 1、多余的功能也有成本的； 2、性能也是要考虑的，举一个极端的例子：有人的单片机程序取消了循环，而是把同样的指令重复了若干次[/quote]考虑扩展性和多余功能没什么关系  扩展性只是方面扩展功能 不等于现在就有没用上的功能  回到这里  #2 的代码略有瑕疵 num不应该硬编码 应该是计算数组大小 #2的代码 如果想加 100 50 只需要数组里面加2个元素 就修改好了 不需要100 50 就删掉  没有你所说的多余的功能  只是 添加删除很方便而已

user: user-3
content: 你的例子都不恰当，我认为for循环比硬编码的好，兼顾了效率和扩展性. 你第二个例子根本就没有举对，直接拷贝代码这个行为会挨打的

user: user-4
content: 引用 9 楼 ggglivw 的回复:做功能你不考虑扩展性吗？来来来，我给你改下需求，+100种面额. 1、多余的功能也有成本的； 2、性能也是要考虑的，举一个极端的例子：有人的单片机程序取消了循环，而是把同样的指令重复了若干次

user: user-3
content: 做功能你不考虑扩展性吗？来来来，我给你改下需求，+100种面额.

user: user-2
content: 引用 7 楼 liups 的回复:引用 5 楼 ggglivw 的回复:1楼的没扩展性  [quote=引用 4 楼 liups 的回复:] 还是1楼的好点，没有必要使用数组和循环 美元面值要什么扩展性？[/quote]加个美分 加个50 100

user: user-4
content: 引用 5 楼 ggglivw 的回复:1楼的没扩展性  引用 4 楼 liups 的回复:还是1楼的好点，没有必要使用数组和循环 美元面值要什么扩展性？

user: user-5
content: 刚刚玩CSDN，刚刚学c语言 #include<stdio.h> #include<math.h> main() { 	int a,b=20,c=1,d,e=1,i; 	scanf("%d",&i); 	for(b=20;b>=5;b=b/2) 	{ 		a=i/b; 		i=i-a*b; 		printf("%d ",a);				 	} 	i=i-a*b; 	d=i/e; 	printf("%d",d); } 多指教

user: user-3
content: 1楼的没扩展性  引用 4 楼 liups 的回复:还是1楼的好点，没有必要使用数组和循环

user: user-4
content: 还是1楼的好点，没有必要使用数组和循环

user: user-6
content: 利用除法和取余运算即可

user: user-7
content: 93/20=4 93-20*4=13 13/10=1 13-10*1=3 3/5=0 3-5*0=3 3/1=3 end
user-0 提问: malloc空间后free出错（char*类型）

回复:
user: user-0
content: 引用 5 楼 proorck2019的回复:结贴给分数，哈哈哈。 给啦给啦！太谢谢了，我头疼了一下午

user: user-1
content: 结贴给分数，哈哈哈。

user: user-0
content: 引用 3 楼 proorck2019 的回复:malloc(...+1) ！！！可以了，谢谢

user: user-1
content: malloc(...+1)

user: user-0
content: 引用 1 楼 proorck2019 的回复:字符串结尾还有一个0， malloc strlen(...)+1 加了那个+1之后，还是有断点

user: user-1
content: 字符串结尾还有一个0， malloc strlen(...)+1
user-0 提问: 用c语言写学生选课系统，怎样将老师和学生的登录名和密码分开

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

user: user-0
content: 引用 1 楼 user-2的回复:checkPerson_Msg函数第二个参数不就是用来区分的吗 学生的话，你传入1，老师传入2 您能帮我写一下吗？我有点蒙了😂

user: user-2
content: checkPerson_Msg函数第二个参数不就是用来区分的吗 学生的话，你传入1，老师传入2
user-0 提问: 有没有大佬指点一下哪里错了

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

user: user-0
content: 明白了，谢谢，问题已经解决了

user: user-2
content: 引用 3 楼 wfdhua 的回复:[quote=引用 2 楼 datoulaile123的回复:]在第一层循环里第一句加上b=1；不然b会保留上一次的值 为什么会保留啊，不应该是连乘吗[/quote] 你看看你的a，和你的b比较下区别，你的a保留再*两个x，实现指数性功能，你的b保留就没意思了，毕竟你每次都是从1开始来计算阶乘

user: user-0
content: 引用 2 楼 datoulaile123的回复:在第一层循环里第一句加上b=1；不然b会保留上一次的值 为什么会保留啊，不应该是连乘吗

user: user-2
content: 在第一层循环里第一句加上b=1；不然b会保留上一次的值

user: user-3
content: b乘太多了，要么每次计算之前b赋值1，要么改一下j那个循环
user-0 提问: Visual studio2019编译c

回复:
user: user-1
content: 单文件调试不了，需要添加项目，在项目中添加.c文件才能编译

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

user: user-3
content: 新建一个项目就可以了

user: user-4
content: 你新建的是.c文件吧，貌似要建项目才能调试。

user: user-5
user-0 提问: C语言入门

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

user: user-2
content: 记得结贴给分数啊，，，

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: 引用 5 楼 weixin_40290083的回复:int main() 	{ 		int num[20]; 		int numTemp; 		int i; 		printf("请输入一组数字（20个以内），以-1结束:"); 		scanf_s("%d", &numTemp); 		for (i = 0;i < 20 && numTemp != -1;i++) { 			num[i] = numTemp; 			scanf_s("%d", &numTemp); 		} 		if (i == 20) { 			num[19] = -1; 		} 		else { 			num[i] = -1; 		} 		printf("请输入要查找的数："); 		int findNum; 		scanf_s("%d", &findNum); 		bool findMark = 0; 		i = 0; 		while (i < 20 && num[i] != -1) { 			if (num[i] == findNum) { 				printf("%d", i); 				findMark = 1; 				break; 			} 			i++; 		} 		if (!findMark) { 			printf("not found"); 		} 		 	}  输入的数据没有查重，题目没有要求，你可以自己增加代码实现。 好的，回去电脑看看，谢谢！

user: user-2
content: int main() 	{ 		int num[20]; 		int numTemp; 		int i; 		printf("请输入一组数字（20个以内），以-1结束:"); 		scanf_s("%d", &numTemp); 		for (i = 0;i < 20 && numTemp != -1;i++) { 			num[i] = numTemp; 			scanf_s("%d", &numTemp); 		} 		if (i == 20) { 			num[19] = -1; 		} 		else { 			num[i] = -1; 		} 		printf("请输入要查找的数："); 		int findNum; 		scanf_s("%d", &findNum); 		bool findMark = 0; 		i = 0; 		while (i < 20 && num[i] != -1) { 			if (num[i] == findNum) { 				printf("%d", i); 				findMark = 1; 				break; 			} 			i++; 		} 		if (!findMark) { 			printf("not found"); 		} 		 	}  输入的数据没有查重，题目没有要求，你可以自己增加代码实现。

user: user-0
content: 引用 1 楼 qq_45798109的回复:建一个数组，然后输入，查找 可以打出来吗，我不会啊

user: user-0
content: 引用 2 楼 weixin_40290083的回复:把输入的数据存放在数组中，当要查找输入的数据时，按题的要求对数组进行遍历对比。 可以打出来看看吗，我不会

user: user-2
content: 把输入的数据存放在数组中，当要查找输入的数据时，按题的要求对数组进行遍历对比。

user: user-3
content: 建一个数组，然后输入，查找
user-0 提问: C语言

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

user: user-2
content: 引用 10 楼 qq_45718176 的回复:[quote=引用 9 楼 qq_45718176的回复:][quote=引用 8 楼 datoulaile123的回复:][quote=引用 7 楼 qq_45718176 的回复:] [quote=引用 5 楼 user-4的回复:]while括号中是一个bool类型参数，你如果给其他类型，会有一个隐式的类型转换，int转bool的规则是，非0为true，0为false 有点明白了，也就是当M减小到零的时候循环体就结束了是吗？[/quote] 你代码的逻辑上是这样的，到0就结束循环了，while(x)这个循环,如果是非0，则继续循环，0就跳出循环，[/quote] 这是c语言的什么逻辑吗？[/quote] 为什么M不会往小于零循环[/quote] 因为到0循环就结束了啊，既然是循环，总会有结束的条件吧（死循环什么的除外，死循环也是因为没有写结束的条件或者条件永远不会满足），既然已经满足了跳出循环的条件，那当然要跳出啊，程序是忠诚的，你让它这么做，他就会这么做！！

user: user-0
content: 引用 9 楼 qq_45718176的回复:[quote=引用 8 楼 datoulaile123的回复:][quote=引用 7 楼 qq_45718176 的回复:] [quote=引用 5 楼 user-4的回复:]while括号中是一个bool类型参数，你如果给其他类型，会有一个隐式的类型转换，int转bool的规则是，非0为true，0为false 有点明白了，也就是当M减小到零的时候循环体就结束了是吗？[/quote] 你代码的逻辑上是这样的，到0就结束循环了，while(x)这个循环,如果是非0，则继续循环，0就跳出循环，[/quote] 这是c语言的什么逻辑吗？[/quote] 为什么M不会往小于零循环

user: user-0
content: 引用 8 楼 datoulaile123的回复:[quote=引用 7 楼 qq_45718176 的回复:] [quote=引用 5 楼 user-4的回复:]while括号中是一个bool类型参数，你如果给其他类型，会有一个隐式的类型转换，int转bool的规则是，非0为true，0为false 有点明白了，也就是当M减小到零的时候循环体就结束了是吗？[/quote] 你代码的逻辑上是这样的，到0就结束循环了，while(x)这个循环,如果是非0，则继续循环，0就跳出循环，[/quote] 这是c语言的什么逻辑吗？

user: user-2
content: 引用 7 楼 qq_45718176 的回复:[quote=引用 5 楼 user-4的回复:]while括号中是一个bool类型参数，你如果给其他类型，会有一个隐式的类型转换，int转bool的规则是，非0为true，0为false 有点明白了，也就是当M减小到零的时候循环体就结束了是吗？[/quote] 你代码的逻辑上是这样的，到0就结束循环了，while(x)这个循环,如果是非0，则继续循环，0就跳出循环，

user: user-0
content: 引用 5 楼 user-4的回复:while括号中是一个bool类型参数，你如果给其他类型，会有一个隐式的类型转换，int转bool的规则是，非0为true，0为false 有点明白了，也就是当M减小到零的时候循环体就结束了是吗？

user: user-3
content: 引用 5 楼 user-4 的回复:while括号中是一个bool类型参数，你如果给其他类型，会有一个隐式的类型转换，int转bool的规则是，非0为true，0为falseC 没有这样的规则

user: user-4
content: while括号中是一个bool类型参数，你如果给其他类型，会有一个隐式的类型转换，int转bool的规则是，非0为true，0为false

user: user-0
content: 引用 3 楼 lin5161678的回复:while(检查这个表达式是不是 0) 是 0 退出循环 不是 0 继续循环 while检查这个条件是不是零？逻辑运算吗？

user: user-3
content: while(检查这个表达式是不是 0) 是 0 退出循环 不是 0 继续循环

user: user-0
content: 引用 1 楼 user-4的回复:当M等于0时，转化为bool类型为false，此时结束循环 bool类型什么意思？

user: user-4
content: 当M等于0时，转化为bool类型为false，此时结束循环
user-0 提问: C语法问题

回复:
user: user-0
content: 引用 18 楼 lin5161678 的回复:[quote=引用 17 楼 ggglivw 的回复:] 不习惯这样的写法. 如果要返回数组，我一般用引用的方式，正常的返回值只返回这个函数调用的结果，成功或者那种失败结果返回数组这个想法本身就不切实际 不管是返回 数组指针 还是返回数组引用都一样不好 属于失败的接口设计[/quote] 是的，我是赞同函数传对象的指针过来，函数内部把数据放回调用者的对象里面的。但是BOSS也是搞技术的，BOSS要求必要传指针他用指针来访问需要的数据....... 不用跟BOSS讲道理，BOSS就是道理

user: user-1
content: 引用 17 楼 ggglivw 的回复:不习惯这样的写法. 如果要返回数组，我一般用引用的方式，正常的返回值只返回这个函数调用的结果，成功或者那种失败结果返回数组这个想法本身就不切实际 不管是返回 数组指针 还是返回数组引用都一样不好 属于失败的接口设计

user: user-2
content: 不习惯这样的写法. 如果要返回数组，我一般用引用的方式，正常的返回值只返回这个函数调用的结果，成功或者那种失败结果

user: user-1
content: 引用 15 楼 weixin_44346860 的回复:*号我感觉应该写在括号外面，就跟形参可以为数组形式一样，实际上传的还是数组首地址，这个[3]我也觉得应该写在前面你仔细的描绘了一个错误的函数头

user: user-0
content: 引用 14 楼 lin5161678 的回复:[quote=引用 13 楼 weixin_44346860 的回复:] [quote=引用 12 楼 lin5161678 的回复:] 顺便鄙视一下 这种写法没什么价值 不会有人写一个这样的函数 但是我遇上了，我猜测返回值是一个数组地址的函数，但这样的话fun前面好像就没必要加个*号了吧?[/quote] 返回数组指针  不加*号是不行的 不存在返回数组这种操作  数组类型不允许作为函数返回值类型  [/quote] *号我感觉应该写在括号外面，就跟形参可以为数组形式一样，实际上传的还是数组首地址，这个[3]我也觉得应该写在前面

user: user-1
content: 引用 13 楼 weixin_44346860 的回复:[quote=引用 12 楼 lin5161678 的回复:] 顺便鄙视一下 这种写法没什么价值 不会有人写一个这样的函数 但是我遇上了，我猜测返回值是一个数组地址的函数，但这样的话fun前面好像就没必要加个*号了吧?[/quote] 返回数组指针  不加*号是不行的 不存在返回数组这种操作  数组类型不允许作为函数返回值类型

user: user-0
content: 引用 12 楼 lin5161678 的回复:顺便鄙视一下 这种写法没什么价值 不会有人写一个这样的函数 但是我遇上了，我猜测返回值是一个数组地址的函数，但这样的话fun前面好像就没必要加个*号了吧?

user: user-1
content: 顺便鄙视一下 这种写法没什么价值 不会有人写一个这样的函数

user: user-1
content: 返回值类型

user: user-1
content: 返回值是数组指针的 函数

user: user-0
content: int  (*fun(int a,int b,void *p))[3] {   //见过这种函数的写法吗？  int x,y;  x=0;  y=0;  ...... }  能编译过的，

user: user-0
content: 引用 7 楼 SuperDay 的回复:[quote=引用 6 楼 自信男孩的回复:]函数指针数组。指向的是三个参数，参数分别是int, int, void *类型的并且返回值是int 可是下面有花括号是几个意思呢？[/quote] 看来C语言还是很难的，花括号里面是写程序代码的，因为这是定义的一个函数，尽管看起来像是定义的一个数组

user: user-3
content: 引用 6 楼 自信男孩的回复:函数指针数组。指向的是三个参数，参数分别是int, int, void *类型的并且返回值是int 可是下面有花括号是几个意思呢？

user: user-4
content: 函数指针数组。指向的是三个参数，参数分别是int, int, void *类型的并且返回值是int

user: user-0
content: 引用 4 楼 SuperDay 的回复:没见过，可以编译过去吗？ 当然是可以编译过去的

user: user-3
content: 没见过，可以编译过去吗？

user: user-0
content: 是什么意思?

user: user-0
user-0 提问: 这个程序怎么改啊……vc说5 6行有问题

回复:
user: user-1
content: C语言的变量声明必须放在首部，源自汇编语言，因为声明在数据段，后边的在代码段。 C++改进了，放在中间也行。

user: user-2
content: 引用 2 楼 qq_45836904 的回复:[quote=引用 1 楼 user-2的回复:]printf("请输入首字母:\n"); char x; 这两行顺序交换一下 我下课回去看一下！！！改完就ok了吗？[/quote] 因为你这发在C语言区，C程序中必须改，C++中则不需要改。至于其他错误没有看，有没有你自己研究

user: user-0
content: 引用 1 楼 user-2的回复:printf("请输入首字母:\n"); char x; 这两行顺序交换一下 我下课回去看一下！！！改完就ok了吗？

user: user-2
content: printf("请输入首字母:\n"); char x; 这两行顺序交换一下
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: 各种数值的最大最小值 https://en.cppreference.com/w/c/types/limits

user: user-3
content: 如果直接用unsigned long来存n!的结果，可能不能很好的把控溢出，当然也是可以的，即最后一个n!得到值若是溢出了，可能比(n-1)!的小 为了保险，建议如果用unsigned long来判断是否溢出，可以考虑用unsigned long long存n!的值，然后在与unsigned long的最大值比较，如果比这个最大值大，说明是溢出了。  供参考～

user: user-4
content: unsigned long i；  i = 0 -1；   就是最大值
user-0 提问: “四核八线程”大致上是如何实现一核多线程的？

回复:
user: user-0
content: 引用 5 楼 proorck2019 的回复:CPU里边有流水线，把一条指令拆分成多步，由多块电路完成。执行指令2的上半部分的同时，能执行指令1的下半部分，所以，一个核能有两个线程。 哇，厉害了，可这么算的话，岂不是普通核心也能实现双线程？

user: user-1
content: CPU里边有流水线，把一条指令拆分成多步，由多块电路完成。执行指令2的上半部分的同时，能执行指令1的下半部分，所以，一个核能有两个线程。

user: user-2
content: 肯定会有影响的，在CPU级别上实现的线程效率要高一点，但是也是很有限的，双核四线程完全不能跟四核相提并论

user: user-0
content: 引用 1 楼 不闻窗外事 的回复:一个核跑十个线程也没问题的，都是假的，操作系统使用分片实现的，效率肯定八核八线程要高一些，但是也与你写的程序有关，如果你的8个线程都需要加锁，或者进行大量的阻塞等待，可能也差不多 我看别人说使用了超线程技术，总不可能跟普通CPU完全一样吧？真的可以做到一核同时两线程吗？

user: user-3
content: 一个核跑十个线程也没问题的，都是假的，操作系统使用分片实现的，效率肯定八核八线程要高一些，但是也与你写的程序有关，如果你的8个线程都需要加锁，或者进行大量的阻塞等待，可能也差不多

user: user-4
content: 搜索 CPU虚拟化
user-0 提问: c语言中char类型怎么会读入i的值？

回复:
user: user-1
content: 巧了，'a'的ASCII值就是97

user: user-2
content: 因为a的ASCII 等于97 所以 ch1 和 i 在你这个程序里 储存的值都是97

user: user-3
content: 因为‘a’的ASCII码为97，char与int的转换就是通过ASCII码