Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 求出每行最大元素及其所在的行号和列号,哪里出问题了呀，大神帮帮忙

回复:
user: user-1
content: //#include "stdio.h" #include <stdio.h>  //void main() int main() {     int i,j,max,m,n;     int a[3][4];      for(i=0;i<3;i++)         for(j=0;j<4;j++)             scanf("%d",&a[i][j]);      for(i=0;i<3;i++)     {         for(j=0;j<4;j++)             printf("%4d",a[i][j]);         printf("\n");     }      for(i=0;i<3;i++)     {         max=a[i][0];          {             //for(j=0;j<4;j++) {             for(j=1;j<4;j++) {                 if(max<a[i][j]) {                     max=a[i][j];                     m=i;                     n=j;                 }                 //m=i;                 //n=j;             }              printf("第%d行最大的元素行列号为别%d,%d\n",i+1,m+1,n+1);         }     }  } 供参考～

user: user-2
content: 引用 1 楼 user-2 的回复:代码缩进是个好习惯。  for(i=0;i<3;i++) {	       max=a[i][0];       for(j=0;j<4;j++)  //上面多了个{     {         if(max<a[i][j])         {                                         max=a[i][j];             m=i;             n=j;         }     }         printf("第%d行最大的元素行列号为别%d,%d\n",i+1,m+1,n+1);  }  这样层次更清晰些，把m=i; n=j也包含在判断语句里试试看 多了个{

user: user-2
content: 代码缩进是个好习惯。  for(i=0;i<3;i++) {	       max=a[i][0];       {for(j=0;j<4;j++)     {         if(max<a[i][j])         {                                         max=a[i][j];             m=i;             n=j;         }     }         printf("第%d行最大的元素行列号为别%d,%d\n",i+1,m+1,n+1);  }  这样层次更清晰些，把m=i; n=j也包含在判断语句里试试看
user-0 提问: 怎么才能在C语言里实现cd、dir、mkdir之类的操作呢，类似于自己写一个操作系统这样？救救孩子

回复:
user: user-1
content: windows头文件 使用system() 调用

user: user-2
content: 封装好命令，调用system也是一种方法。 也可以看一下系统调用函数，比如mkdir，access等等函数

user: user-3
content: system()
user-0 提问: 数组

回复:
user: user-1
content: 楼上正解  借花献佛，另外一种答案：  #include<stdio.h>   int main() {      int a[6] = {0};      int i;      for(i = 0; i < 6; i++)           scanf("%d", a+i);     //a是整型指针。加1，代表向后移动4个字节，到下一个整型数组元素      for(i = 0; i < 6; i++)           printf("%d", a[i]);      return 0; }

user: user-2
content: #include<stdio.h>  int main() {      int a[6] = {0};      int i;      for(i = 0; i < 6; i++)           scanf("%d", &a[i]);      for(i = 0; i < 6; i++)           printf("%d", a[i]);      return 0; }   是这个意思吧？
user-0 提问: 求助C语言数组实训题

回复:
user: user-1
content: #include<stdio.h>  int main() {     int a[100] = {0}, b[100] = {0};     int i;     for(i = 0; i < 100; i++)           a[i] = i;     for(i = 0; i < 100; i++)           printf("%4d", a[i]);     for(i = 0; i < 100; i++)           b[i] = a[100-i];     for(i = 0; i < 100; i++)           printf("%4d", b[i]);     return 0;   题目要求不是很严格
user-0 提问: 求助C语言数组实训题

回复:
user: user-1
content: #include <stdio.h>  /** 可以直接按照实际函数构造C语言函数*/ int f(int n) { 	if (n == 1) 	{ 		return 1; 	} 	else if (n==2) 	{ 		return 3; 	} 	else 	{ 		return f(n-1) + 2*n; 	} } 	   int main () { 	int array[20]; 	 	int i; 	for(i=0; i<20; i++) 	{ 		array[i] = f(i+1); 		printf("%d\n", array[i]); /**< 输出前20项*/ 	} }
user-0 提问: 求助大佬

回复:
user: user-1
content: 咱最好给出源程序，让我再输入一遍程序？这个真不愿意。

user: user-0
content: 就是他的运行结果是这样，不继续运行了

user: user-2
content: 运行不下去，指的是什么？出错还是结果不对，还是其他的

user: user-0
content: 我调用了这个函数，但是他运行不正确  他只打印换行符，不打印其他东西 我有换成p = head->next，结果判断p为空

user: user-3
content: 引用 4 楼 盛夏·绽放 的回复:我是现在又修改了以下，应该是链表创建没什么问题，但是打印还有问题  文件格式的话是.c文件，内容有点多 不知道你的head是头指针不，一般有头指针head的数据域是空的 遍历时一般： p = head->next 或 p->next != NULL 试试看 另外 菜单1 下调用 showall函数了没

user: user-0
content: 我是现在又修改了以下，应该是链表创建没什么问题，但是打印还有问题  文件格式的话是.c文件，内容有点多

user: user-4
content: 楼主的不是有序链表，建议提供更多的代码，另外，文件的内容和格式也提供一下
user-0 提问: C语言指针

回复:
user: user-1
content: 请参考《C++数组地址偏移》 希望能够帮到你！

user: user-2
content: p += 6;就是向后偏移6 * sizeof(int)个字节，如果p是char *，那么选择6是没问题的。因为sizeof(char)是1.

user: user-3
content: int main() {     int *p = NULL；    //这里把0换成NULL会更好理解     printf("%d\n", p);     p += 6;          printf("%d\n", p); } ---------------------- 定义了一个整型指针变量 p, 指针p开始指向“0”（空），可以理解为NULL 指针p = 0； 由于指针是int整型的，加1，要向后移动4个字节。 所以，加6，就像后移动了24个字节 故再次打印p的值，是24

user: user-4
content: 因为一个int是四个字节
user-0 提问: 求求大佬，救救孩子吧，研究三小时了

回复:
user: user-1
content: 初学吧~~字符串'/0'结尾 也就是NULL 也就是0，然后按个数到'/0'，+1+1+1，最后返回这个计数的就行了

user: user-2
content: 写个易懂的  int i = 0 while (str[i] != '\0') {     i++; } return i;

user: user-0
content: 引用 5 楼 user-3的回复:[quote=引用 3 楼 zege666 的回复:] [quote=引用 1 楼 user-3的回复:]你一定假装在想，哎…… ---------------------- int i; for(i=0;str[i];i++); return i; 这这这.....[/quote]  一句一小时~~~ VC的strlen是这样写的： const char *eos = str; while( *eos++ ) ; return( eos - str - 1 );[/quote] 触及到我知识盲区了，我们还没学到指针

user: user-3
content: 引用 3 楼 zege666 的回复:[quote=引用 1 楼 user-3的回复:]你一定假装在想，哎…… ---------------------- int i; for(i=0;str[i];i++); return i; 这这这.....[/quote]  一句一小时~~~ VC的strlen是这样写的： const char *eos = str; while( *eos++ ) ; return( eos - str - 1 );

user: user-0
content: 引用 1 楼 user-3的回复:你一定假装在想，哎…… ---------------------- int i; for(i=0;str[i];i++); return i; 都不需要scanf的吗......

user: user-0
content: 引用 1 楼 user-3的回复:你一定假装在想，哎…… ---------------------- int i; for(i=0;str[i];i++); return i; 这这这.....

user: user-3
content: 你一定假装在想，哎…… ---------------------- int i; for(i=0;str[i];i++); return i;
user-0 提问: 函数返回二维数组和一维数组

回复:
user: user-0
content: 感谢各位，本人疑惑已解开

user: user-1
content: 既然一维可以，为啥二维不可以？ 比如 int main () {     int i,j;     //方法1     printf("方法1\n");     int *arr1[3] = {(int*)malloc(sizeof(int)*3), (int*)malloc(sizeof(int)*4), (int*)malloc(sizeof(int)*5)};     for (i=0; i<5; i++) {         if (i<3) arr1[0][i] = i+1;         if (i<4) arr1[1][i] = i+1;         arr1[2][i] = i+1;     }     for(i=0; i<3; i++) {         printf("%p:", arr1[i]); //打印地址（动态申请堆内存）         for (j=0; j<3+i; j++) {             printf("%d ", arr1[i][j]);         }         printf("\n");         free(arr1[i]); //释放内存     }     //方法2     printf("方法2\n");     int a1[]={1,2,3};     int a2[]={1,2,3,4};     int a3[]={1,2,3,4,5};     int *arr2[3] = {a1, a2, a3};     for (i=0; i<3; i++) {         printf("%p:", arr2[i]); //打印地址（栈内存）         for (j=0; j<3+i; j++) {             printf("%d ", arr2[i][j]);         }         printf("\n");     }     return 0; }  另，如LS所说，如果要做为函数返回值返回就用动态分配内存，不要返回局部变量内存空间，因为离开函数，局部变量就消亡了（也就是函数栈内存被系统回收了，返回值就变成野指针）

user: user-2
content: 建议楼主写个程序，这样描述和验证更好一些。  另外，返回局部变量（数组）是未定义行为，注意一下数组的作用域，不要定义了局部数组，又返回局部数组。

user: user-3
content: 如果你是定义的arr[3][3]，那么*arr[n]中n的取值范围就是0~2 感觉你搞混了定义中的空间大小与下标的取值范围。
user-0 提问: 求大佬帮忙

回复:
user: user-0
content: 哦哦谢谢大佬了

user: user-1
content: scanf("%d",&G.E[i][j]); G.E[i][j]=G.E[j][i];  输入到 G.E[i][j] ;又用 G.E[j][i] 重置了
user-0 提问: 求助   Tom and Jerry (大概是这么叫的)

回复:
user: user-1
content: 引用 5 楼 user-3 的回复：建立数学模型：    5s后Tom与Jerry的距离 = 5*v1-(n+5*v2)，若>=0，则追上Jerry GG!    否则，看第6s时，Tom与Jerry的距离 = (n+6*v2)-5*v1，若>n则无法追上为啥是>n？老鼠-猫不是应该大于0吗

user: user-2
content: 引用 3 楼 user-3 的回复:[quote=引用 2 楼 5250 的回复:] [quote=引用 1 楼 user-3 的回复:] 试试这个程序能通过测试吗？ #include <stdio.h>  int main() { 	int n, v1, v2; 	while ( scanf("%d%d%d", &n, &v1, &v2)==3 ) 	{ 		if ( 5*v1-(n+5*v2)>=0 ) 			printf("Jerry GG!\n"); 		else if ( (n+6*v2)-5*v1 >n ) 			printf("Jerry win!\n"); 	} 	return 0; }  虽然我没有运行 但是一看就感觉你的代码不行   从头到尾就没有出现时间，一秒定胜负还是5秒定胜负？[/quote] 关键在于数学模型，只要建立好了数学模型，你会发现，这个与时间没有什么直接关系。[/quote]   引用 4 楼 5250 的回复:#include <stdio.h> int main() {     int n, v1, v2;     while (scanf("%d %d %d", &n, &v1, &v2))     {         int t = 0; //时间         while (1)         {             if(v1 <= v2){                  //如果tom速度比jerry慢，那么tom永远无法追上jerry                 printf("jerry win\n");                 break;             }              if ( (v1 * (t - t / 5)) >= (v2 * (t+t/5) + n) )     //反之，如果tom速度快，那么tom总会追上jerry,即使可能会过很久很久             {                 printf("after %d second jerry GG\n",t);                 break;             }             else                 t++;         }     }     return 0; }  改一下  if ( (v1 * (t - t / 5)) >= (v2 * t + n) )

user: user-3
content: 建立数学模型：    5s后Tom与Jerry的距离 = 5*v1-(n+5*v2)，若>=0，则追上Jerry GG!    否则，看第6s时，Tom与Jerry的距离 = (n+6*v2)-5*v1，若>n则无法追上

user: user-2
content: #include <stdio.h> int main() {     int n, v1, v2;     while (scanf("%d %d %d", &n, &v1, &v2))     {         int t = 0; //时间         while (1)         {             if(v1 <= v2){                  //如果tom速度比jerry慢，那么tom永远无法追上jerry                 printf("jerry win\n");                 break;             }              if ( (v1 * (t - t / 5)) >= (v2 * (t+t/5) + n) )     //反之，如果tom速度快，那么tom总会追上jerry,即使可能会过很久很久             {                 printf("after %d second jerry GG\n",t);                 break;             }             else                 t++;         }     }     return 0; }

user: user-3
content: 引用 2 楼 5250 的回复:[quote=引用 1 楼 user-3 的回复:] 试试这个程序能通过测试吗？ #include <stdio.h>  int main() { 	int n, v1, v2; 	while ( scanf("%d%d%d", &n, &v1, &v2)==3 ) 	{ 		if ( 5*v1-(n+5*v2)>=0 ) 			printf("Jerry GG!\n"); 		else if ( (n+6*v2)-5*v1 >n ) 			printf("Jerry win!\n"); 	} 	return 0; }  虽然我没有运行 但是一看就感觉你的代码不行   从头到尾就没有出现时间，一秒定胜负还是5秒定胜负？[/quote] 关键在于数学模型，只要建立好了数学模型，你会发现，这个与时间没有什么直接关系。

user: user-2
content: 引用 1 楼 user-3 的回复:试试这个程序能通过测试吗？ #include <stdio.h>  int main() { 	int n, v1, v2; 	while ( scanf("%d%d%d", &n, &v1, &v2)==3 ) 	{ 		if ( 5*v1-(n+5*v2)>=0 ) 			printf("Jerry GG!\n"); 		else if ( (n+6*v2)-5*v1 >n ) 			printf("Jerry win!\n"); 	} 	return 0; }  虽然我没有运行 但是一看就感觉你的代码不行   从头到尾就没有出现时间，一秒定胜负还是5秒定胜负？

user: user-3
content: 试试这个程序能通过测试吗？ #include <stdio.h>  int main() { 	int n, v1, v2; 	while ( scanf("%d%d%d", &n, &v1, &v2)==3 ) 	{ 		if ( 5*v1-(n+5*v2)>=0 ) 			printf("Jerry GG!\n"); 		else if ( (n+6*v2)-5*v1 >n ) 			printf("Jerry win!\n"); 	} 	return 0; }
user-0 提问: 求助 简单字符串加密

回复:
user: user-1
content: 明文，每个字符+3得到密文。

user: user-2
content: 位移。左移，右移。

user: user-3
content: 你的代码: --------------------- void secret(char s1[],char s2[] ) { 	while(*s1){ 		*s2=*s1+3; 		s1++,s2++; 	} }

user: user-4
content: 遍历字符串s1,每个字符+1（或别的）赋值给s2 比如：       while (s1[i] != '\0')       {             s2[i] = s1[i] + 1;             i++;       }       s2[i] = '\0'; 类似这样
user-0 提问: n=strlen(s);出现错误，求助

回复:
user: user-1
content: #include<stdio.h> #include <string.h>  void input(char s[],int len) {     fgets(s, len, stdin); }  void show(char s[]) {     puts(s); }  void FanXuCunFang(char s[]) {     int i,n;     char s_temp[100];      n=strlen(s);     for(i=0;i<n;i++)     {         s_temp[i]=s[n-i-1];     }      for(i=0;i<n;i++)     {         s[i]=s_temp[i];     } }  int main() {     char s[100];     printf("请输入非中文字符串：\n");     input(s, 100);     printf("您输入的是：\n");     show(s);     printf("反序存放……………………\n");     FanXuCunFang(s);     printf("反序存放后输出：\n");     show(s);     return 0; } 供参考～  出现编译错误是因为缺少头文件<string.h>

user: user-2
content: 出啥错？是不是头文件没导进来？ #include <string.h>
user-0 提问: 为什么课本上可以运行，实践却不可以(小白刚学c语言)

回复:
user: user-1
content: 那就将 void 全改为 int。

user: user-0
content: 引用 6 楼 Tryagain2006的回复:修改为下面这样就应该没有问题了。 #include"stdio.h" void printstar() { 	printf("********\n"); } void print_message() { 	printf("how do you do\n"); } int main() { 	printstar(); 	print_message(); 	printstar(); 	return 0; } 谢谢，老师说我们用的在线编程环境不可以用void main（）

user: user-1
content: 修改为下面这样就应该没有问题了。 #include"stdio.h" void printstar() { 	printf("********\n"); } void print_message() { 	printf("how do you do\n"); } int main() { 	printstar(); 	print_message(); 	printstar(); 	return 0; }

user: user-2
content: void main()这种写法不是标准的写法，建议还是按标准 int main()这种写法

user: user-0
content: 引用 3 楼 自信男孩的回复:代码没什么问题，楼主的问题是编译不过?（因为main的返回值类型是void，试试改成int） 还是编译好了不能运行？（是因为缺少system("pause");？） 我问过老师了，老师说网络编程环境不支持void，谢谢

user: user-3
content: 代码没什么问题，楼主的问题是编译不过?（因为main的返回值类型是void，试试改成int） 还是编译好了不能运行？（是因为缺少system("pause");？）

user: user-0
content: 引用 1 楼 魂灵L的回复:  你在说啥？ 课本上的代码，完全抄下来却不可以运行

user: user-4
content: 你在说啥？
user-0 提问: 用【递归法】将一个整数n换成字符串。例如，输入483，应输出字符串  4  8  3（%4c输出）。注意，n的位数不确定，可以是任意位数的整数、

回复:
user: user-1
content: // 算法 void trans(int num) {  trans(num%10);  printf("%d,num/10); }  大概就是这样了。

user: user-0
content: 引用 2 楼 Tryagain2006的回复://用【递归法】将一个整数n换成字符串。例如，输入483，应输出字符串 4 8 3（%4c输出）。 //注意，n的位数不确定，可以是任意位数的整数、 #include <stdio.h> int zhuanhuan(int); int zhuanhuan(int n) { 	if (n<0) 	{	printf("-"); 		n = -n; 	} 	if ( n>=0 && n<=9 )  	{	printf("%4d", n);		//咱用 %4d不好吗？  	} 	else 	{	zhuanhuan( n/10 ); 		printf("%4d", n%10); 	} 	return 0; } int main() { 	int n; 	scanf("%d", &n); 	zhuanhuan(n); 	return 0; } 谢谢，已了解。

user: user-2
content: //用【递归法】将一个整数n换成字符串。例如，输入483，应输出字符串 4 8 3（%4c输出）。 //注意，n的位数不确定，可以是任意位数的整数、 #include <stdio.h> int zhuanhuan(int); int zhuanhuan(int n) { 	if (n<0) 	{	printf("-"); 		n = -n; 	} 	if ( n>=0 && n<=9 )  	{	printf("%4d", n);		//咱用 %4d不好吗？  	} 	else 	{	zhuanhuan( n/10 ); 		printf("%4d", n%10); 	} 	return 0; } int main() { 	int n; 	scanf("%d", &n); 	zhuanhuan(n); 	return 0; }

user: user-3
content: 483/10=48 余3,3就出来了 48/10=4 余8,8就出来了 4/10=0余4,4就出来了 一次类推
user-0 提问: c语言结构体

回复:
user: user-1
content: #include<stdio.h>  int main() {     printf("欢迎进入投票\n");     printf("\n");     printf("候选人有：y,w,e,r");     struct piao     {         int y;         int w;         int e;         int r;     }piao1={0,0,0,0};      int i,j;     char a,b,c,d,t;     b='y';     c='w';     d='e';     t='r';     for(i=0;i<10;i++)     {         printf("\n");         printf("请输入你支持的选手：");         //scanf("%s",&a);         scanf("%c",&a);         getchar();         /*         if(0)         {         }         */         if(b==a)             piao1.y=piao1.y+1;         if(c==a)             piao1.w=piao1.w+1;         if(d==a)             piao1.e=piao1.e+1;         if(t==a)             piao1.r=piao1.r+1;     }     printf("y的票数：%d\n",piao1.y);     printf("w的票数：%d\n",piao1.w);     printf("e的票数：%d\n",piao1.e);     printf("r的票数：%d\n",piao1.r);      if(piao1.y>piao1.w&&piao1.y>piao1.e&&piao1.y>piao1.r)         printf("胜者是：y\n");     if(piao1.w>piao1.y&&piao1.w>piao1.e&&piao1.w>piao1.r)         printf("胜者是：w\n");     if(piao1.e>piao1.y&&piao1.e>piao1.w&&piao1.e>piao1.r)         printf("胜者是：e\n");     if(piao1.r>piao1.y&&piao1.r>piao1.w&&piao1.r>piao1.e)         printf("胜者是：r\n"); } 供参考～

user: user-2
content: 改好了，记得打赏哦，还有楼主记得for循环规范书写，写上｛｝

user: user-3
content: 把%s改成%c

user: user-0
content: 怎么改都搞不定
user-0 提问: 求大佬帮忙

回复:
user: user-1
content: 加个srand随机数种子试试看

user: user-0
content: srand我放在什么位置都没用啊。循环里外都没用

user: user-0
content: srand( (unsigned)time( NULL ) );  G.E[i][j]=rand()%2; 我这样也一直都是得到0

user: user-2
content: 你的srand()函数放在了哪里，是不是放到循环里了。  另外，rand() % 2得到随机数范围是0， 1
user-0 提问: 统计票数

回复:
user: user-1
content: gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间  所以 gets(&tick); 这种写法是不对的，可以用   tick = getchar()

user: user-0
content: [quote=引用 1 楼 user-2 的回复:] 我的代码一直输不出结果 #include <stdio.h> struct person { 	char name[20]; 	int n; }; int main() { 	int i=0; 	struct person a[]={{"张三",0},{"李四",0},{"王五",0},{"谢六",0}};  printf("四位候选人的名字为：张三，李四，王五，谢六；\n");  printf("请输入数字为候选人投票（1为张三，2为李四，3为王五，4为谢六，5结束投票）\n");  char tick;   for(i=0;i<10;i++)  {   printf("\t第%d位投票人",i+1);   gets(&tick); } 	while(i!=5)//判断 若等于5，则跳出循环  	{ 		scanf("%d",&i); 		switch(i) 		{ 			case 1:a[0].n++;break; 			case 2:a[1].n++;break; 			case 3:a[2].n++;break; 			case 4:a[3].n++;break;	 		} 	}  	for(i=0;i<4;i++) 	{ 		printf(" %d的票数为:%d",a[i].name,a[i].n); 	} 	return 0; }

user: user-2
content: C语言基础 用struct定义一个结构体 用printf输出一些菜单等信息 用getchar来获取用户的选择，比如1,2等
user-0 提问: 二维指针数组和一维指针数组转化

回复:
user: user-0
content: 引用 6 楼 chxchxkkk的回复:接楼上： 1 p是一个指针数组，他有四个指针类型的数组元素，每个成员都是指针 2 p[i] = &a[i*3]    p[0] 指向 1 2 3 的首地址，也就是1的地址    p[1]指向 4 5 6 的首地址，也就是 4的地址    p[2] 指向 7 8 9的首地址，也就是7的地址    p[3]指向 10 11 12 的首地址，也就是 10的地址 这样是不是好理解一些了 p【0】指向1的地址 为什么1 2 3要要作为一组 就是为什么要1 2 3，4 5 6这样分

user: user-1
content: 接楼上： 1 p是一个指针数组，他有四个指针类型的数组元素，每个成员都是指针 2 p[i] = &a[i*3]    p[0] 指向 1 2 3 的首地址，也就是1的地址    p[1]指向 4 5 6 的首地址，也就是 4的地址    p[2] 指向 7 8 9的首地址，也就是7的地址    p[3]指向 10 11 12 的首地址，也就是 10的地址 这样是不是好理解一些了

user: user-1
content: 引用 7 楼 其实一开始我是拒绝的 的回复:[quote=引用 6 楼 chxchxkkk的回复:]接楼上： 1 p是一个指针数组，他有四个指针类型的数组元素，每个成员都是指针 2 p[i] = &a[i*3]    p[0] 指向 1 2 3 的首地址，也就是1的地址    p[1]指向 4 5 6 的首地址，也就是 4的地址    p[2] 指向 7 8 9的首地址，也就是7的地址    p[3]指向 10 11 12 的首地址，也就是 10的地址 这样是不是好理解一些了 p【0】指向1的地址 为什么1 2 3要要作为一组 就是为什么要1 2 3，4 5 6这样分[/quote] 因为 p[i] = &a[i*3]

user: user-2
content: 引用 4 楼 其实一开始我是拒绝的 的回复:[quote=引用 3 楼 其实一开始我是拒绝的的回复:][quote=引用 2 楼 a1007885391的回复:]首先我们来看p，他是一个指针数组，他有四个指针类型的数组元素 在这里p是个常量，不能执行p+1，也不能执行 p =a; 只存在p[0],p[1],p[n-1],而且这些都是指针变量，只用来存放变量地址（但可以使用*p = a,*p表示指针数组第一个元素的值，a的首地址的值） 调用p[3]实际得到的就是a[9]的地址，p[3][2]实际就是*(&a[9]+2) = a[11]  不是很明白你想搞清楚什么，间接访问符你想怎么使用 为什么不是*p【3】【2】  只有p【3】【2】这个不是一个指针？不是需要间接访问符才能访问里面的数据也就是12？[/quote] 为什么p[3][2]实际就是*(&a[9]+2) = a[11]？[/quote] 我们一步一步来梳理这个问题，你看下到了哪步你没搞懂： 1.p是一个指针数组，他有四个指针类型的数组元素（也就是p这个数组有四个成员，这四个成员都是指针） 2.在循环中 对p[i]进行了赋值：现在p[0]的值就是a[0]的地址，p[1]的值就是a[3]的地址，p[2]的值就是a[6]的地址，p[3]的值就是a[9]的地址也就是 p[3] = &a[9] 3.一般我们对一个指针使用索引[n]时就相当于，这个指针的值 + n*这个指针指向的类型，对得到的地址解引用。 此时p[3][2] = (&a[9])[2]=*(&a[9]+2) = a[11]

user: user-0
content: 引用 3 楼 其实一开始我是拒绝的的回复:[quote=引用 2 楼 a1007885391的回复:]首先我们来看p，他是一个指针数组，他有四个指针类型的数组元素 在这里p是个常量，不能执行p+1，也不能执行 p =a; 只存在p[0],p[1],p[n-1],而且这些都是指针变量，只用来存放变量地址（但可以使用*p = a,*p表示指针数组第一个元素的值，a的首地址的值） 调用p[3]实际得到的就是a[9]的地址，p[3][2]实际就是*(&a[9]+2) = a[11]  不是很明白你想搞清楚什么，间接访问符你想怎么使用 为什么不是*p【3】【2】  只有p【3】【2】这个不是一个指针？不是需要间接访问符才能访问里面的数据也就是12？[/quote] 为什么p[3][2]实际就是*(&a[9]+2) = a[11]？

user: user-0
content: 引用 2 楼 a1007885391的回复:首先我们来看p，他是一个指针数组，他有四个指针类型的数组元素 在这里p是个常量，不能执行p+1，也不能执行 p =a; 只存在p[0],p[1],p[n-1],而且这些都是指针变量，只用来存放变量地址（但可以使用*p = a,*p表示指针数组第一个元素的值，a的首地址的值） 调用p[3]实际得到的就是a[9]的地址，p[3][2]实际就是*(&a[9]+2) = a[11]  不是很明白你想搞清楚什么，间接访问符你想怎么使用 为什么不是*p【3】【2】  只有p【3】【2】这个不是一个指针？不是需要间接访问符才能访问里面的数据也就是12？

user: user-2
content: 首先我们来看p，他是一个指针数组，他有四个指针类型的数组元素 在这里p是个常量，不能执行p+1，也不能执行 p =a; 只存在p[0],p[1],p[n-1],而且这些都是指针变量，只用来存放变量地址（但可以使用*p = a,*p表示指针数组第一个元素的值，a的首地址的值） 调用p[3]实际得到的就是a[9]的地址，p[3][2]实际就是*(&a[9]+2) = a[11]  不是很明白你想搞清楚什么，间接访问符你想怎么使用

user: user-0
content: 引用 楼主 其实一开始我是拒绝的的回复:为什么定义一个一维指针数组最好却输出二维指针数组  而且为什么输出p【3】【2】这个指针不用间接访问符？
user-0 提问: 运行的时候显示有错误，求指出

回复:
user: user-1
content: 有时候遇到问题实在解决不了可以试试一段一段屏蔽，这方法我就用过一次，多线程出现了死锁，把自己坑死了

user: user-2
content: 1.第8行 char *NAME[30]少了个分号，另外这种方式很奇怪 直接char NAME[30]就行了吧。 2.void dnew(struct ml friends[]) 这个新建函数的本意是要输入30个学生的信息吗，可是函数体内并没有循环语句，count++没啥意义

user: user-3
content: 按顺序修改，如果存在多个语法错误，很可能后面会报一堆不相干的错误，按顺序先排除语法错误。

user: user-4
content: 就按照提示改就好，比如第八行少了分号;
user-0 提问: c语言: codeblocks运行时error: ld reeturened 1 exit status

回复:
user: user-0
content: 引用 9 楼 自信男孩 的回复:先把编译警告和error解决了～ Debug文件删除后errors就没有了，程序就可以正常run了

user: user-0
content: 引用 8 楼 a1007885391 的回复:不清楚你的编译器和运行平台，可能是你第一次检出后出错了，但是修改了问题没有重新生成解决方案或者说是重新编译，又用的之前的编译文件，导致的错误；你删除之后没有那些编译过程产生的文件了，他又自动重新生成了，所以就正常了。反正我一般改了代码都是重新生成解决方案 运行平台是codeblocks 然后编译器是GNU GCC Compiler 很奇怪的是我之前都没这个问题，是在复制project到另一台电脑上后就出现了。 幸好解决了，多谢你的分享

user: user-1
content: 不清楚你的编译器和运行平台，可能是你第一次检出后出错了，但是修改了问题没有重新生成解决方案或者说是重新编译，又用的之前的编译文件，导致的错误；你删除之后没有那些编译过程产生的文件了，他又自动重新生成了，所以就正常了。反正我一般改了代码都是重新生成解决方案

user: user-2
content: 先把编译警告和error解决了～

user: user-0
content: 引用 6 楼 a1007885391 的回复:看一下编译的输出，报错在哪 你好，我一个同事叫我把project下obj和bin里面的debug文件删了 结果还真行了 所以是编译的问题吗？好奇怪，可是之前都ok的啊， 我在笔记本上都可以，然后回学校拷到台式机就不行了。 这下好了，可是原理我还是没搞懂，不知道为啥会这样。

user: user-1
content: 看一下编译的输出，报错在哪

user: user-0
content: 引用 4 楼 a1007885391 的回复:你这。。。贴代码的文本啊，好本地复现，你这贴一个图片又这么多错怎么搞 我这个project下14个文件，你要我都贴吗？ 还是只要main？

user: user-1
content: 你这。。。贴代码的文本啊，好本地复现，你这贴一个图片又这么多错怎么搞

user: user-0
content: 引用 1 楼 user-3 的回复:怎么也需要贴一下代码以及错误截图吧 图在楼下了 谢谢

user: user-0

user: user-3
content: 怎么也需要贴一下代码以及错误截图吧
user-0 提问: 【小白求救】

回复:
user: user-0
content: 引用 2 楼 Disguiser-x的回复:[quote=引用 1 楼 user-1的回复:]目标文件生成路径不对。你这个代码是怎么导入IDE的？ 怎么个不对法？如何修改？手打上去的不行，复制上去的也不行。[/quote] 我自己成功了，手输一遍删掉又复制就成功创建了。

user: user-0
content: 引用 1 楼 user-1的回复:目标文件生成路径不对。你这个代码是怎么导入IDE的？ 怎么个不对法？如何修改？手打上去的不行，复制上去的也不行。

user: user-1
content: 目标文件生成路径不对。你这个代码是怎么导入IDE的？
user-0 提问: 求问大佬为什么我输出总是10

回复:
user: user-1
content: 你是想让它输出的是什么？按照代码，确实应该这么输出

user: user-0

user: user-0
content: 就是我输入10个数他好像不检测是不是在范围内就直接输出

user: user-2
content: 题目贴出来看看

user: user-3
content: 你调试一下看看ab的值
user-0 提问: 运行不出结果，求问我这个程序哪里有问题

回复:
user: user-1
content: 不出结果?是没有输出 还是输出结果不对?贴出运行结果

user: user-2
content: 如果规定名字最大输入多长，则 char name[len]//len为长度

user: user-3
content: char name[20];

user: user-0
content: 引用 2 楼 m0_46108109的回复:char name;//目测这里应该是字符串数组 这里要怎么改

user: user-4
content: 字符数组。。

user: user-4
content: char name;//目测这里应该是字符串数组
user-0 提问: 求帮助，VS2015运行zuc算法，结果一直是密钥交换，换成其他项目运行结果都是这个

回复:
user: user-0
content: 引用 1 楼 user-2 的回复:那就是进入死循环了？ 官方代码，不会吧

user: user-1
content: 用打印的循环信息查找定位一下是哪里循环， 检查循环条件

user: user-0
content: 官方源代码，应该不会吧。调用了miracl库

user: user-2
content: 那就是进入死循环了？
user-0 提问: 为什么元组(array)无法赋给变量？

回复:
user: user-1
content: 引用 5 楼 qq_48095479 的回复:[quote=引用 3 楼 a1007885391的回复:][quote=引用 2 楼 qq_48095479 的回复:] [quote=引用 1 楼 a1007885391的回复:]你的设想中数组的值应该是怎样复制给sum 就是像代码那样，用for循环遍历元组然后依次赋给sum。我试过如果是自己定义而非用户输入的元组的话是可以实现sum的，但是这个用户输入的元组就是不行...[/quote] double arr[n]; scanf("%d", &arr[i]); 注意这两句，你是把他声明为double数组，但你去用整型数据的方式去读他， 应改为scanf("%lf", &arr[i]);[/quote] 我第一次用这个..怎么给你分数啊[/quote] 4、如何给帖子结帖，结帖如何给分？ 点击帖子左上方的"结帖"按钮，可以进行如下操作：  a.单独给分结帖：当您的问题得到解答，请给回答者相应的分数，来结束该帖。当您结帖后，系统将返回给您该帖的50%的可用分。 注：结帖人不允许给自己的回复发分。 b.无满意答案结帖： 当您的问题得不到合适的答案。您可以选择无满意结帖结束这个问题。 注：无满意结帖，系统将回收帖主的悬赏分，且没有任何可用分返还。无满意答复，必须提问满24小时才可以进行操作。 c.平均给分结帖：当回复过长参与人数过多时候，您可以使用平均给分的功能。 注：技术区不允许平均给分结帖。

user: user-0
content: 引用 3 楼 a1007885391的回复:[quote=引用 2 楼 qq_48095479 的回复:] [quote=引用 1 楼 a1007885391的回复:]你的设想中数组的值应该是怎样复制给sum 就是像代码那样，用for循环遍历元组然后依次赋给sum。我试过如果是自己定义而非用户输入的元组的话是可以实现sum的，但是这个用户输入的元组就是不行...[/quote] double arr[n]; scanf("%d", &arr[i]); 注意这两句，你是把他声明为double数组，但你去用整型数据的方式去读他， 应改为scanf("%lf", &arr[i]);[/quote] 我第一次用这个..怎么给你分数啊

user: user-0
content: 引用 3 楼 a1007885391的回复:[quote=引用 2 楼 qq_48095479 的回复:] [quote=引用 1 楼 a1007885391的回复:]你的设想中数组的值应该是怎样复制给sum 就是像代码那样，用for循环遍历元组然后依次赋给sum。我试过如果是自己定义而非用户输入的元组的话是可以实现sum的，但是这个用户输入的元组就是不行...[/quote] double arr[n]; scanf("%d", &arr[i]); 注意这两句，你是把他声明为double数组，但你去用整型数据的方式去读他， 应改为scanf("%lf", &arr[i]);[/quote] 谢谢你！我试过了的确是数据类型的问题😂

user: user-1
content: 引用 2 楼 qq_48095479 的回复:[quote=引用 1 楼 a1007885391的回复:]你的设想中数组的值应该是怎样复制给sum 就是像代码那样，用for循环遍历元组然后依次赋给sum。我试过如果是自己定义而非用户输入的元组的话是可以实现sum的，但是这个用户输入的元组就是不行...[/quote] double arr[n]; scanf("%d", &arr[i]); 注意这两句，你是把他声明为double数组，但你去用整型数据的方式去读他， 应改为scanf("%lf", &arr[i]);

user: user-0
content: 引用 1 楼 a1007885391的回复:你的设想中数组的值应该是怎样复制给sum 就是像代码那样，用for循环遍历元组然后依次赋给sum。我试过如果是自己定义而非用户输入的元组的话是可以实现sum的，但是这个用户输入的元组就是不行...

user: user-1
content: 你的设想中数组的值应该是怎样复制给sum
user-0 提问: 大一学生，有问题求指点！

回复:
user: user-1
content: scanf(" %d %d %d",&p,&q,&x);   int sum[p][q],juzhen[p][q];  这个是C99 的VLA（变长数组），可以在运行时初始化大小

user: user-2
content: 就问题所述场景，应该可以使用，但建议使用常量作为size，使用输入的p、q判断size是否越界。 原因如下: 动态数组一般是指malloc, new出来的。 例如int *ary = new int[4]; 题主的写法，在visual studio上会编译不过，在gcc可以使用。  但gcc很多场景都会要求使用常量做为数组的size，例如
user-0 提问: 我是刚刚接触单片机的小白！

回复:
user: user-1
content: 引用 2 楼 ༺࿈军仔*江河湖海࿈༻的回复:[quote=引用 1 楼 Simple-Soft的回复:]应该会返回，i大于50就返回了 我的意思是如果函数中的if 语句不成立那么会不会继续执行，或者会不会有返回值？[/quote] if语句控制的是if语句块，如果if不成立，只有if控制的语句块不执行，不影响别的代码逻辑

user: user-0
content: 引用 1 楼 Simple-Soft的回复:应该会返回，i大于50就返回了 我的意思是如果函数中的if 语句不成立那么会不会继续执行，或者会不会有返回值？

user: user-2
content: 在你这个程序会有返回值，返回变量zhi,由于你们有对变量zhi进行初始化，此时变量zhi是一个随机值，即返回的是一个随机值

user: user-1
content: 应该会返回，i大于50就返回了
user-0 提问: 求助大神，实在是不会了

回复:
user: user-1
content: 思路很简单 每行的总金额-每行的平均金额，就是每行的第一个人应该收回的金额，其余人就是应该支出平均额 这样统计一下收回和支出，最后收回-支出就是该收回的钱，为负数就表示要支出 代码LZ自己先写吧，遇到问题再问
user-0 提问: 怎么样改才能输入多个年份然后一起输出年月日？

回复:
user: user-1
content: 那就不要在循环里打印结果，而是把结果先存入数组，最后再一起打印数组的结果

user: user-2
content: 1.根据输入的t   new一个对象数组，该对象使用一个结构体输入年和日 如： srruct datatime { int year; int month; } datatime *pdt = new datatime[t]; 2.每循环一次从pdt当中取出一组数据 3.最后处理完数据记得 释放对象 delete pdt; pdt = nullptr;

user: user-3
content: 没太明白问题是什么
user-0 提问: 【求助！】GPS模块里面的代码解释

回复:
user: user-1
content: 就把文本的数字字面转换为计算机存储的整数类型，就好比把"255"转换成内存中的0xFF，不过鲁棒性差了点，输入的文本带非数字字符就死得难看了~
user-0 提问: C语言 关于文件读取的问题

回复:
user: user-0
content: 引用 2 楼 user-2 的回复:你读取文件是以二进制读取的，所以写文件也要用二进制，你现在用的是文本文件（字符串）的方式写文件的，所以读取肯定不对 改成（这里不知道你的flightnode结构体是怎么的，你照着改吧） void save_flight(flightnode* h) { FILE* fp = fopen("flightList1.in", "w");//以只写('wb')的方式打开名为'flightList.dat'的文件 if (fp == NULL) return; //追加你的测试数据 flightnode node; //定义一个结构体变量，然后给结构体变量的每个字段赋值， strcpy(node.id, "01"); //因为不知道你的结构体是什么样的，这里假设每个字段是字符数组（字符串），所以用字符串拷贝的方式赋值 strcpy(node.from, "北京"); strcpy(node.to, "上海"); strcpy(node.start, "6:00"); strcpy(node.end, "8:00"); strcpy(node.xxx, "500"); strcpy(node.yyy, "20"); strcpy(node.zzz, "0"); fwrite(&node, sizeof(flightnode), 1, fp); //写入文件 //第二条数据 strcpy(node.id, "02"); strcpy(node.from, "上海"); strcpy(node.to, "北京"); //后面的信息一样，所以后面就不用重新赋值数据了 fwrite(&node, sizeof(flightnode), 1, fp); //写入文件  flightnode* temp = h->next;  while (temp != NULL) { fwrite(temp, sizeof(flightnode), 1, fp);//向其中写入temp（temp是指针）地址的l个flightnode类型的数据 temp = temp->next; } fclose(fp);//关闭fp指向的文件 }十分感谢

user: user-1
content: 测试数据不用在程序中做，可以提前写好，在程序中读取就好了

user: user-2
content: 你读取文件是以二进制读取的，所以写文件也要用二进制，你现在用的是文本文件（字符串）的方式写文件的，所以读取肯定不对 改成（这里不知道你的flightnode结构体是怎么的，你照着改吧） void save_flight(flightnode* h) { FILE* fp = fopen("flightList1.in", "w");//以只写('wb')的方式打开名为'flightList.dat'的文件 if (fp == NULL) return; //追加你的测试数据 flightnode node; //定义一个结构体变量，然后给结构体变量的每个字段赋值， strcpy(node.id, "01"); //因为不知道你的结构体是什么样的，这里假设每个字段是字符数组（字符串），所以用字符串拷贝的方式赋值 strcpy(node.from, "北京"); strcpy(node.to, "上海"); strcpy(node.start, "6:00"); strcpy(node.end, "8:00"); strcpy(node.xxx, "500"); strcpy(node.yyy, "20"); strcpy(node.zzz, "0"); fwrite(&node, sizeof(flightnode), 1, fp); //写入文件 //第二条数据 strcpy(node.id, "02"); strcpy(node.from, "上海"); strcpy(node.to, "北京"); //后面的信息一样，所以后面就不用重新赋值数据了 fwrite(&node, sizeof(flightnode), 1, fp); //写入文件  flightnode* temp = h->next;  while (temp != NULL) { fwrite(temp, sizeof(flightnode), 1, fp);//向其中写入temp（temp是指针）地址的l个flightnode类型的数据 temp = temp->next; } fclose(fp);//关闭fp指向的文件 }
user-0 提问: c语言小问题

回复:
user: user-1
content: 引用 5 楼 墨咚 的回复:[quote=引用 4 楼 Rage Your Dream.DS 的回复:] main() //这里貌似应该是 int main() { int a,b;FILE *out ; out = fopen("C:\\KSWJJ\\2454999999010001\\out.dat","w") ; if(fun(111,&a,&b)) { printf("111=%d*%d\n",a,b); fprintf(out, "111=%d*%d\n",a,b); }  main 函数是题自己有的  应该没啥错误 如果是我  int fun 下面野指针得问题 应该怎么改正呢？[/quote]   /*k、k2定义为静态局部变量*/ #include<stdio.h> #include<math.h> int prime(int m) { int k,flag=1; for(k=2;k<(int)sqrt((double)m);k++) if(m%k==0) flag=0; return flag; } int fun(int n,int *x,int *y) { 	static int k,flag=0; 	static int k2;      k=2; do{ k2=n/k; if(k*k2==n) if(prime(k) && prime(k2) && k<k2) {     flag=1; *x=k; *y=k2; break; }    k+=1; } while(k<k2);      return flag; } main() { int a,b;FILE *out ; out = fopen("C:\\KSWJJ\\2454999999010001\\out.dat","w") ; if(fun(111,&a,&b)) { printf("111=%d*%d\n",a,b); fprintf(out, "111=%d*%d\n",a,b); } if(fun(11111,&a,&b)) { printf("11111=%d*%d\n",a,b); fprintf(out, "11111=%d*%d\n",a,b); } if(fun(1111111,&a,&b)) { printf("1111111=%d*%d\n",a,b); fprintf(out,"1111111=%d*%d\n",a,b); }    fclose(out);    getchar();  }  我建议用静态局部变量，因为定义k、k2时加上 static 就是告知编译器，将变量存储在程序的静态存储区而非栈上空间，这样就可以解决该函数结束后，该变量的存储空间还没释放的问题。  我觉得如果你这是小程序，也可以尝试使用全局变量，但是如果大项目，就不太推荐使用k、k2为全局变量了。因为定义一个全局变量有许多缺点，最明显的缺点是破坏了此变量的访问范围（使得在此函数中定义的变量，不仅仅只受此函数控制）。  我觉得就别传指针了...传两个引用过去，然后在fun函数里对对这两个引用进行赋值，这样就可以把主函数里被引用的变量的值改变了。

user: user-0
content: 引用 1 楼 user-3 的回复:在什么地方assert了？表示那里非法访问了 编译后是正确输出 但是会弹出   debug assertion failed   成绩也是0分

user: user-0
content: 引用 2 楼 chxchxkkk 的回复:a和b初始化一下试试看 main函数内容是题自带的 我只编 int fun内容

user: user-0
content: 引用 4 楼 Rage Your Dream.DS 的回复:main() //这里貌似应该是 int main() { int a,b;FILE *out ; out = fopen("C:\\KSWJJ\\2454999999010001\\out.dat","w") ; if(fun(111,&a,&b)) { printf("111=%d*%d\n",a,b); fprintf(out, "111=%d*%d\n",a,b); }  main 函数是题自己有的  应该没啥错误 如果是我  int fun 下面野指针得问题 应该怎么改正呢？

user: user-1
content: main() //这里貌似应该是 int main() { int a,b;FILE *out ; out = fopen("C:\\KSWJJ\\2454999999010001\\out.dat","w") ; if(fun(111,&a,&b)) { printf("111=%d*%d\n",a,b); fprintf(out, "111=%d*%d\n",a,b); }

user: user-1
content: int fun(int n,int *x,int *y) { int k,flag=0; int k2;      k=2; do{ k2=n/k; if(k*k2==n) if(prime(k) && prime(k2) && k<k2) {     flag=1; *x=k; //这里貌似使用了野指针，不能让指针指向一个局部变量，因为当函数调用结束后会撤销该局部变量的内存空间，然后你又有可能在该函数外使用该指针所指向的变量，这是不行的。 *y=k2; //这里也是 break; }    k+=1; } while(k<k2);      return flag; }

user: user-2
content: a和b初始化一下试试看

user: user-3
content: 在什么地方assert了？表示那里非法访问了
user-0 提问: openssl speed命令中添加sm3

回复:
user: user-0
content: 感谢回复，你说的没错，openssl是最近支持国密的，但还不完善，目前master分支还不支持openssl speed sm3

user: user-1
content: 版本是不是低了，貌似从1.1.1开始才支持的国密
user-0 提问: c语言小问题

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:除之前转换成double，不是除之后，改成这样  return (double)（sum)/ji;感谢大佬！

user: user-1
content: 除之前转换成double，不是除之后，改成这样  return (double)（sum)/ji;
user-0 提问: C语言小问题

回复:
user: user-0
content: 非常感谢！ 我懂了！

user: user-1
content: for(j=1;j<=x[i].t;j++)   m*=x[i].a;     这个循环是求t个数相乘 得到m是a的t次方 如果m不重置一下 下一个数就是从m(上一次得到)开始自乘了
user-0 提问: 函数参数传递为什么进行了两次

回复:
user: user-1
content: 1楼正确。因为main函数中的值并没有发生改变

user: user-0
content: 引用 1 楼 user-2的回复:什么进行了2次？没明白你想问的   你的程序输入了24  2 在gcd函数中将2个参数换了一下  输出了2 24  但是因为你是值传递，所以实参不会改变，main函数中又输出了24 2了， 有啥问题吗 是我把自己绕进去了，忽略了printf

user: user-0
content: 好的，受教了

user: user-2
content: 什么进行了2次？没明白你想问的   你的程序输入了24  2 在gcd函数中将2个参数换了一下  输出了2 24  但是因为你是值传递，所以实参不会改变，main函数中又输出了24 2了， 有啥问题吗
user-0 提问: 栈的题

回复:
user: user-1
content: f就是把一个整数按照从低位（个位开始）到高位放入栈中，然后再按照正常值输出来，

user: user-2
content: 说错了，是顺序输出 所以结果是 3401

user: user-2
content: （1）函数功能就是把整数参数的各个位的数字倒序输出 （2）结果是1043
user-0 提问: 输入字符串和输入字符之间分隔符

回复:
user: user-0
content: 我懂了。。。。。

user: user-1
content: getchar()的作用是从输入读取一个字符，如果你用一个变量比如下面的ch来接收的话，那么ch的值就是你从键盘输入的那个字符串。  如果你没有用变量来接收，比如就直接getchar()，那么依然会读取输入的一个字符，只不过没有变量来接收这个值。  用在这里的作用是这样，首先你scanf("%s",str),给str这个字符数组进行了赋值，然后一般而言，你需要敲一个回车来结束赋值，下一步你想要给ch进行赋值，如果中间没有一个getchar()的话，那么ch的值就变成'\n'，也就是回车，而不是你输入的下一个值。
user-0 提问: 解下

回复:
user: user-1
content: char * func(char **strArry, int num_of_str) { 	if (!strArry) 		return 0; 	char* ret = strArry; 	while (num_of_str) { 		strArry++; 		num_of_str--; 		if (strlen(*strArry) >= str(ret)) 			ret = *strArry; 	} 	return ret; }

user: user-2
content: 题目大致叙述清楚了，但是实在没有兴趣编写这个程序了。
user-0 提问: 高分求解答：C API  mysql 事务失败 多条语句执行

回复:
user: user-0
content: 引用 3 楼 zlxi 的回复:是不是使用了 DDL 语句。 TRUNCATE DROP等等语句   是DDL语句导致的回滚失败！！刚解决了！

user: user-1
content: 是不是使用了 DDL 语句。 TRUNCATE DROP等等语句

user: user-0
content: 引用 1 楼 春天到了冬天还远吗 的回复:有没有事务相关的接口？   事务相关接口？是什么意思!!   单线程连接，串行的。其他地方没有提交，回滚。

user: user-2
content: 有没有事务相关的接口？
user-0 提问: sizeof 运行出错

回复:
user: user-1
content: DEV C上运行程序没有问题。 输出： 8 4

user: user-2
content: 源文件所在的路径不要有中文 空格之类的  好不好？？

user: user-3
content: 你的环境没配置好吧，failed to execute..... 应该还没有编译成功。

user: user-0
content: 引用 2 楼 棉猴 的回复:跟编译器有关，VS2015 C++环境不会报错，得到的值是4。 因为在VS2015中，p的值是0xcccccccc，是一个可以“用”的内存地址。 我也感觉是编译器的锅。。 p又没有进行访问，按理说应该啥值都不影响sizeof啊

user: user-3
content: 不管p是什么？NULL 也好 0xcccc..也好 sizeof(p) 永远返回本机指针长度。

user: user-3
content: 没有编译成功吧？

user: user-4
content: 跟编译器有关，VS2015 C++环境不会报错，得到的值是4。 因为在VS2015中，p的值是0xcccccccc，是一个可以“用”的内存地址。

user: user-0
content: 同学遇到的问题，在我这是好的，感觉有点迷。。。
user-0 提问: C语言输入文档内的数据如何添加注释

回复:
user: user-1
content: 引用 4 楼 zhendeguofenle 的回复:[quote=引用 2 楼 a1007885391 的回复:] 一行一行读取 判断每一行是否注释（看你自己怎么约定注释的标记） 读到注释则不要该行的数据 呃，具体要怎么操作，我只是一个小白，什么都不懂，我是这样读取的 fscanf(p, "%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf", &Ta0, &b, &V, &r1, &l1, &Cpd1, &dend1, &kd1, &Cpd2, &dend2, &kd2);[/quote] 你读取文件的时候把注释读取了，但是你处理的方式错了 最简单的验证方法  char buf[100] = {0}; fscanf(p, "%s%lf",buf,&Ta0);//在这打个断点，你会看到buf中是注释 /*空气温度（K）*/

user: user-0
content: 引用 2 楼 a1007885391 的回复:一行一行读取 判断每一行是否注释（看你自己怎么约定注释的标记） 读到注释则不要该行的数据 呃，具体要怎么操作，我只是一个小白，什么都不懂，我是这样读取的 fscanf(p, "%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf", &Ta0, &b, &V, &r1, &l1, &Cpd1, &dend1, &kd1, &Cpd2, &dend2, &kd2);

user: user-0
content: 引用 1 楼 user-2 的回复:读到注释的行，就略过就好 呃，具体要怎么操作，我只是一个小白，什么都不懂，我是这样读取的 fscanf(p, "%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf", &Ta0, &b, &V, &r1, &l1, &Cpd1, &dend1, &kd1, &Cpd2, &dend2, &kd2);

user: user-1
content: 一行一行读取 判断每一行是否注释（看你自己怎么约定注释的标记） 读到注释则不要该行的数据

user: user-2
content: 读到注释的行，就略过就好
user-0 提问: 求助C语言数组实训题

回复:
user: user-1
content: 引用 2 楼 自信男孩 的回复:[quote=引用 1 楼 ?Victor.?? 的回复:] #include<stdio.h> #include<stdlib.h> #include<time.h>  int main() { 	int a[100] = {0}, b[10] = {0,0,0,0,0,0,0,0,0,0}; 	int i; 	srand(time(0)); 	for(i = 0; i < 100; i++) 	{ 		a[i] = rand() % 10; 		b[a[i]]++; 	} 	for(i = 0; i < 10; i++) 		printf("%d个数是:%d\n",i,b[i]); 	return 0; }  供参考  a可以那样初始化，为什么b要用那么多0呢，完全不用这么初始化～  #include<stdio.h> #include<stdlib.h> #include<time.h>  int main() {     //int a[100] = {0}, b[10] = {0,0,0,0,0,0,0,0,0,0};     int a[100] = {0}, b[10] = {0};     int i;     //srand(time(0));     srand(time(NULL));     for(i = 0; i < 100; i++)     {         a[i] = rand() % 10;         b[a[i]]++;     }     for(i = 0; i < 10; i++)         printf("%d个数是:%d\n",i,b[i]);     return 0; }  供参考～[/quote]  懂了，是我记混了  谢谢大佬~

user: user-2
content: 引用 1 楼 ?Victor.?? 的回复:#include<stdio.h> #include<stdlib.h> #include<time.h>  int main() { 	int a[100] = {0}, b[10] = {0,0,0,0,0,0,0,0,0,0}; 	int i; 	srand(time(0)); 	for(i = 0; i < 100; i++) 	{ 		a[i] = rand() % 10; 		b[a[i]]++; 	} 	for(i = 0; i < 10; i++) 		printf("%d个数是:%d\n",i,b[i]); 	return 0; }  供参考  a可以那样初始化，为什么b要用那么多0呢，完全不用这么初始化～  #include<stdio.h> #include<stdlib.h> #include<time.h>  int main() {     //int a[100] = {0}, b[10] = {0,0,0,0,0,0,0,0,0,0};     int a[100] = {0}, b[10] = {0};     int i;     //srand(time(0));     srand(time(NULL));     for(i = 0; i < 100; i++)     {         a[i] = rand() % 10;         b[a[i]]++;     }     for(i = 0; i < 10; i++)         printf("%d个数是:%d\n",i,b[i]);     return 0; }  供参考～

user: user-1
content: #include<stdio.h> #include<stdlib.h> #include<time.h>  int main() { 	int a[100] = {0}, b[10] = {0,0,0,0,0,0,0,0,0,0}; 	int i; 	srand(time(0)); 	for(i = 0; i < 100; i++) 	{ 		a[i] = rand() % 10; 		b[a[i]]++; 	} 	for(i = 0; i < 10; i++) 		printf("%d个数是:%d\n",i,b[i]); 	return 0; }  供参考
user-0 提问: 求助C语言数组实训题

回复:
user: user-1
content: 引用 2 楼 chxchxkkk 的回复: #include <stdio.h> #include <stdlib.h> #include <time.h>  int main() {     int i, sum = 0;     int a[100] = {0};     srand((unsigned)time(NULL));      for (i = 0; i < 100; i++)     {         a[i] = rand()%100+1;         sum += a[i]     }      printf("和： %d, 平均值： %.2f\n", sum, sum * 1.0 / 100);     return 0; }  少了个}

user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <time.h>  int main() {     int i, sum = 0;     int a[100] = {0};     srand((unsigned)time(NULL));      for (i = 0; i < 100; i++)     {         a[i] = rand()%100+1;         sum += a[i]     }      printf("和： %d, 平均值： %.2f\n", sum, sum * 1.0 / 100);     return 0;

user: user-2
content: 为啥发了两个  主要是看看随机数发生函数就好写了
user-0 提问: C语言 

回复:
user: user-1
content: 嵌套调用虾米意思

user: user-2
content: 计数一下，应该一个循环就可以

user: user-3
content: int num = 0;//素数的数量 for（int i=0；i<200;i++） { if（//是素数） { num++； } if（num == 40） { //输出i的平方根 } } 这样？
user-0 提问: c语言请教大佬

回复:
user: user-1
content: if((fp=fopen("data.txt","w+"))==NULL) 几个括号吧

user: user-0
content: 引用 1 楼 user-1的回复:出什么错误了？ 9	6	D:\使用文件\Dvp-Cpp\学校实验作业\文件1.c	[Warning] assignment makes pointer from integer without a cast

user: user-1
content: 出什么错误了？

user: user-0
content: 引用 3 楼 user-1的回复:if((fp=fopen("data.txt","w+"))==NULL) 几个括号吧 多谢指导，得到解决了
user-0 提问: c语言里关于define和自增自减运算符的问题

回复:
user: user-1
content: 你的宏定义属于未定义行为 相当于 while (i<=5) { printf("%d\n", (i++)*(i++)); //宏定义只是展开你的表达式，编译器不一样，结果会不一样，结果是不可知的 }  而函数就不一样了 sq(j++) 相当于 sq(j), j++; 这样的逗号表达式，结果是可知的

user: user-2
content: 因为SQ(i++)等于 （i++） * (i++)

user: user-3
content: 引用 2 楼 qybao 的回复:你的宏定义属于未定义行为 相当于 while (i<=5) { printf("%d\n", (i++)*(i++)); //宏定义只是展开你的表达式，编译器不一样，结果会不一样，结果是不可知的 }  而函数就不一样了 sq(j++) 相当于 sq(j), j++; 这样的逗号表达式，结果是可知的(i++)*(i++)这里是先进行了乘法运算再进行了自增运算？
user-0 提问: 求助

回复:
user: user-1
content: 就是字符串截取而已，文件读取就不多说了，不知道怎么读取文件就百度吧 这里只提一下字符串截取，用内存拷贝就可以  char *s = "310110200609093420"; //从文件读取的身份证号 char b[9] = {0}; memcpy(b, s+6, 8);  printf("%s\n", b);

user: user-2
content: 身份证中的生日是固定的，直接去取就可以了
user-0 提问: 大佬们帮我看看codeblocks这个编译器的问题

回复:
user: user-0
content: 没人知道吗

user: user-1
content: 每个项目里都有这两个，vs也一样，你可以只选一个，但不能一个都不选。debug是高度，release是发布版，具体百度吧

user: user-0
content: 引用 2 楼 user-1 的回复：每个项目里都有这两个，vs也一样，你可以只选一个，但不能一个都不选。debug是高度，release是发布版，具体百度吧可是我两个都能选啊
user-0 提问: 请问vc 如何取出当前正在使用的ip地址?!

回复:
user: user-0
content: 引用 5 楼 smwhotjay 的回复:ipconfig -all  这个还要做很多判断吧

user: user-1
content: ipconfig -all

user: user-0
content: 引用 2 楼 user-2 的回复:[quote=引用 1 楼 user-2 的回复:] 你用的什么api？ 要用 GetAdaptersInfo[/quote]  怎么遍历的时候怎么判断192.168.99.99 这个网卡和取出这个ip阿.

user: user-0
content: 引用 1 楼 user-2 的回复:你用的什么api？  GetAdaptersInfo 能遍历所有网卡,但是也不知道哪张是 192.168.99.99 .. 如果用gethostname() 然后gethostbyname() ,那取出来就是192.168.97.99

user: user-2
content: 引用 1 楼 user-2 的回复:你用的什么api？ 要用 GetAdaptersInfo

user: user-2
content: 你用的什么api？
user-0 提问: 那个大佬求解

回复:
user: user-1
content: if与else只会执行一个，怎么会执行到n--

user: user-0
content: 引用 4 楼 m0_48015336的回复:[quote=引用 3 楼 qq_31032311的回复:]咱来个事实说话，答案错了。 哈哈，谢谢，那答案错了，不好意思[/quote] 但是我不知道为什么，不是还有个n--吗

user: user-0
content: 引用 3 楼 qq_31032311的回复:咱来个事实说话，答案错了。 哈哈，谢谢，那答案错了，不好意思

user: user-2
content: 咱来个事实说话，答案错了。

user: user-0
content: 首先谢谢你，但是答案为9

user: user-3
content: 这不就是选 b吗，n++直接就为10了
user-0 提问: C语言如何从源函数中获取指向它的函数指针的地址

回复:
user: user-1
content: 引用 8 楼 千梦一生 的回复:迭代器用的太少，不是很懂。  ebp前面也是调用函数那行代码的下一行代码。 然后还要通过指针往上找上一行的call xxxxxx，看看[xxxxxxx]是个啥。  单纯C语言除非传参，否则暂时还没有什么比较好的想法 然后还要通过指针往上找上一行的call [xxxxxx]，看看xxxxxxx是个啥。

user: user-1
content: 迭代器用的太少，不是很懂。  ebp前面也是调用函数那行代码的下一行代码。 然后还要通过指针往上找上一行的call xxxxxx，看看[xxxxxxx]是个啥。  单纯C语言除非传参，否则暂时还没有什么比较好的想法

user: user-0
content: 老铁们？？？？

user: user-0
content: 假如说现在用C语言实现迭代器，begin不能传参，是不是和这个问题差不多。

user: user-0
content: 引用 1 楼 千梦一生的回复:好像在ebp前面 我今天想了一下，这个思路确实是个思路

user: user-1
content: 因为这种普通的调用，你想返回具体哪个结构体的数据。不同结构体存在不同的位置。 C语言也没有thiscal，帮助你告诉函数【底层创建传入this指针】是在操作哪个结构的数据。 ----------------------------- 直观点就是： 你的t1 被存在内存：10001~10002 你的t2 被存在内存：20001~20002  而函数有且仅有一个了。想公用 想要返回 i值。那函数也就纳闷儿了：你是想要10000那块儿的那个i呢，还是20000那块儿的那个i呢？

user: user-1
content: 引用 1 楼 千梦一生 的回复:好像在ebp前面 不对，不是这个。 没办法。不知道咋搞。 除非，这个源函数属于test。则能研究研究使用多态、继承什么的  否则只有直接或者间接地把指针传过去

user: user-2
content: 似乎做不到，可以在fn_t，中加个参数test*,   typedef int(*fn_t)(test*) 或者把他定义成test的成员函数   typedef int(test::*fn_t)()

user: user-1
content: 好像在ebp前面
user-0 提问: 求教!!求各位大佬帮我看看这段代码,就Order_Call的最后一个形参好像引用错误了,不知道该怎么改(这个是模拟炉石传说的实践代码)

回复:
user: user-1
content: Role R[] 要改成 struct Role R[]，如果用C++编译的话就不用改Order_Remove要移到Order_Attack的前面，否则需要加提前声明void main最好改成int main，虽然C仍然支持void main，但也不是标准形式

user: user-0
content: 毕业了还是表示感谢

user: user-0
content: 就这？

user: user-0
content: /*****以下是调试*****/ 1>------ 已启动生成: 项目: LuShi, 配置: Debug Win32 ------ 1>  LuShi.c 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(25): error C2146: 语法错误: 缺少“)”(在标识符“R”的前面) 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(25): error C2081: “Role”: 形参表中的名称非法 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(25): error C2061: 语法错误: 标识符“R” 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(25): error C2059: 语法错误:“;” 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(25): error C3409: 不允许空特性块 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(25): error C2059: 语法错误:“)” 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(25): error C2059: 语法错误:“{” 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(61): warning C4013: “Order_Remove”未定义；假设外部返回 int 1>c:\users\administrator\documents\visual studio 2012\projects\lushi\lushi\lushi.c(171): warning C4013: “exit”未定义；假设外部返回 int ========== 生成: 成功 0 个，失败 1 个，最新 0 个，跳过 0 个 ==========
user-0 提问: 求大神帮忙看下代码哪里出错，感激不尽

回复:
user: user-1
content: #include<stdio.h>   float average(float sum[10], int len);  //void main() int main() {     float score[10],result;     int i;      printf("请输入10个数:\n");      for (i = 0; i < 10; i++)         //scanf("%d",&score[i]);         scanf("%f",&score[i]);      result=average(score, 10);      printf("average=%f",result);      return 0; } float average(float sum[10], int len) {      float resule=0;     int i;      //for(i=0;i<10;i++)     for(i=0;i<len;i++)     {         //resule+=sum[10];         resule += sum[i];      }     resule/=len;      return resule; } 供参考～  对于数组还是需要好好学学～

user: user-2
content: 引用 2 楼 风吹花中花吹风的回复:#include <stdio.h>    float average(float sum[10]);  void main() {     float score[10], result;      printf("请输入10个数:\n");      for (int i = 0; i < 10; i++)     {         scanf("%f", &score[i]);     }      result = average(score);      printf("average=%f", result);    } float average(float sum[10]) {      float resule = 0;      for (int i = 0; i < 10; i++)     {         resule += sum[i];     }     resule /= 10;      return resule; }  楼主帮你改好了，不要信楼上的。 楼上的也没什么问题啊

user: user-0
content: 好的多谢了。

user: user-3
content: #include <stdio.h>    float average(float sum[10]);  void main() {     float score[10], result;      printf("请输入10个数:\n");      for (int i = 0; i < 10; i++)     {         scanf("%f", &score[i]);     }      result = average(score);      printf("average=%f", result);    } float average(float sum[10]) {      float resule = 0;      for (int i = 0; i < 10; i++)     {         resule += sum[i];     }     resule /= 10;      return resule; }  楼主帮你改好了，不要信楼上的。

user: user-4
content: 楼主没有搞清楚scanf 的用法，如果你想输入10个值的话要用一个循环来输入，这个只会获取一个值，数组 a[]  在scanf 中不要加& 本来就是地址值，然后函数部分，resule+=sum[10];   这个不是10吧，而是i值，你每次都加的是数组的9号位，都是0.所以你输出的就是0
user-0 提问: 二叉排序树创建

回复:
user: user-1
content: void insertBST(treeNode **T,int x){     treeNode *s;     if(*T==NULL){         s=(treeNode* )malloc(sizeof(treeNode));         s->data=x;         s->left=NULL;         s->right=NULL;         *T=s;     }     else{         if(x<T->data)             insertBST(&T->left, x);         if(x>T->data)             insertBST(&T->right,x);     } }

user: user-0
content: void creatBST(treeNode *T,int n){ 	int i,x; 	T=NULL;         for(i=0;i<n;i++){ 		scanf("%d",&x); 		insertBST(T,x); 	} }

user: user-2
content: 没有root吗？设计有点问题吧？
user-0 提问: C语言的字符数组的题目程序有段错误，帮忙看一下

回复:
user: user-1
content: {strcpy(a[n],b[n]);           这一句啥意思？ 你自己恐怕都运行不通过吧？为啥要提交给系统去判定？  另外，你这个用的啥系统？
user-0 提问: 数据结构邻接表的输出问题

回复:
user: user-0
content: 引用 1 楼 山雨。的回复:你的问题是什么 可以麻烦你写个有向带权值的邻接表么？谢谢

user: user-1
content: 你的问题是什么
user-0 提问: C语言程序求助

回复:
user: user-1
content: 有个打字游戏代码，你自己参考着改成符合你要求的  #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h>  //菜单 void tips() { 	printf("==================== 打 字 游 戏 ====================\n"); 	printf("==                按 任 意 键 继 续                ==\n"); 	printf("==                 按 ESC 键 退 出                 ==\n"); 	printf("=====================================================\n"); 	char ch = _getch(); 	if (ch == 27) 	{ 		exit(0); 	} }  //随机字符 void rand_ch(char *arr) { 	srand((unsigned int)time(NULL)); 	for (int i=0; i<20; i++) 	{ 		arr[i] = rand() % 26 + 'a'; 	} }  //输入字符 void print_ch(char *arr) { 	unsigned int starttime, endtime; 	int value = 0; 	for (int i=0; i<20; i++) 	{ 		char ch = _getch(); 		if (i == 0) 		{ 			starttime = time(NULL); 		} 		if ( ch == arr[i] ) 		{ 			printf("%c", ch); 			value++; 		} 		else 			printf("_"); 	} 	endtime = time(NULL); 	printf("\n用时：【%d】秒\n", endtime - starttime); 	printf("正确率：【%.1f】%%\n", value * 1.0 / 50 * 100); 	getchar(); }  int main(void) {  	//字库 	char arr[21]; 	//数组元素设置为0 	memset(arr, 0, 21);  	while ( 1 ) 	{ 		system("cls"); 		tips(); 		//显示随机字符 		rand_ch(arr); 		printf("%s\n", arr); 		//输入字符 		print_ch(arr); 	}  	return 0; }

user: user-2
content: 不用计算正确率吗？

user: user-0
content: 不用计算正确率
user-0 提问: 为什么运行成功了输入没结果但是用vc6.0可以成功，是我vs2019出问题了吗

回复:
user: user-1
content: scnaf_s的骚操作  在include<stdio.h>下面加上  #pragma warning(disable: 4996)  scanf_s换成scanf

user: user-0
content: 显示0x790D6942 (ucrtbased.dll)处(位于 xiao.exe 中)引发的异常: 0xC0000005: 写入位置 0x009B1339 时发生访问冲突

user: user-2
content: debug一下，应该就知道了

user: user-0

user: user-1
content: 截个图 看看 吧
user-0 提问: 求问为什么我运行起来答案总是35？

回复:
user: user-1
content: int a[k];  改成 int a[100]; //数组长度用常量 或者改成 int *a = (int*)malloc(sizeof(int)*k); //动态申请内存 ，最后记得free(a)  另外，sum没有初始化，在for循环前加一句 sum=0;

user: user-2
content: 把你运行的截屏看一下

user: user-2
content: 有的编译器支持那种数组定义的方式

user: user-0
content: 那我应该怎么样表示输入数量？，我上次也用这样的方法，没有出现过这样的错误的呀

user: user-3
content: C语言数组长度要求是常量值， scanf("%d",&k); int a[k]; 这样是不行的

user: user-0
content: 什么意思？新手不是很懂

user: user-1
content: 数组长度不要用变量，或者你可以用动态申请内存
user-0 提问: 个位数的表达式求值求大佬看看代码哪错了

回复:
user: user-0
content: 没报错，但就是算不出来。。。我也不知道哪错了1+(3+2)*(7^2+6*9)/(2)算这个式子的时候到倒数第二步就结果不对

user: user-1
content: 是什么错误？
user-0 提问: C语言代码纠错

回复:
user: user-1
content: 引用 3 楼 柚子味儿哒 的回复：[quote=引用 2 楼 qybao 的回复:] 把 strcpy(c_age, “i”); 改成 sprintf(c_age[i], “%d”, i);  注意把整形转成字符串的用法这个需要用头文件吗，我改了后报错了[/quote]#include <stdio.h>

user: user-0
content: 引用 2 楼 qybao 的回复:把 strcpy(c_age, “i”); 改成 sprintf(c_age[i], “%d”, i);  注意把整形转成字符串的用法这个需要用头文件吗，我改了后报错了

user: user-1
content: 把 strcpy(c_age, “i”); 改成 sprintf(c_age[i], “%d”, i);  注意把整形转成字符串的用法

user: user-2
content: 调试一下应该就知道
user-0 提问: 跪求大佬帮我解决这个问题，我要哭了！！！

回复:
user: user-1
content: 用数组读入字符，每次读入用循环和前面所有已有字符比较，若为新字符，则添加，同时计数变量加1，另外定义一个数组对应每个字符，循环比较时若相同则对应值加1，打印出来好办，将第一个字符数组用循环排序就可以了。  这个一个是最容易想到的，当然也可以直接用指针。

user: user-0
content: 引用 1 楼 user-2 的回复： A：应该简单 B：不同的只是没有出现过重复的字符吗？ C： 这种题有个基本思路，叫定桩法（看过最强大脑应该知道，里面好像提到过），就是用256个字符数组来存储，开始每一个里面的值为0，如果出现一个就+1，到最后，谁的值大，谁就是最多的。 如果里面的值为1，表示没有出现过重复。非常感谢，太有启发了

user: user-2
content: A：应该简单 B：不同的只是没有出现过重复的字符吗？ C： 这种题有个基本思路，叫定桩法（看过最强大脑应该知道，里面好像提到过），就是用256个字符数组来存储，开始每一个里面的值为0，如果出现一个就+1，到最后，谁的值大，谁就是最多的。 如果里面的值为1，表示没有出现过重复。
user-0 提问: 求助，用ShellExecute打开文件，路径是变量怎么弄？

回复:
user: user-1
content: 引用 6 楼 凌刀夜心 的回复:[quote=引用 楼主 凌刀夜心 的回复:] 求助，用ShellExecute打开文件，路径是变量怎么弄？ int a=ShellExecute(NULL, TEXT("open"), sta, NULL, NULL, SW_MINIMIZE); sta是字符串补充下，我是char *sta[/quote] string的c_str函数得到的就是char*类型啊，你直接CA2W(sta)就行了

user: user-2
content: 如果是变量也没关系 要么sta申请空间，通过memcpy或strcpy宝贝到sta申请的空间里。 要么就是用一个字符数组存放路径，然后sta = str;然后调用接口就可以了。

user: user-0
content: 引用 楼主 凌刀夜心 的回复:求助，用ShellExecute打开文件，路径是变量怎么弄？ int a=ShellExecute(NULL, TEXT("open"), sta, NULL, NULL, SW_MINIMIZE); sta是字符串补充下，我是char *sta

user: user-0
content: 引用 4 楼 a1007885391 的回复:ShellExecute(NULL, _T("open"), CA2W(strPath.c_str()), CA2W(strFile.c_str()), NULL, SW_SHOWNORMAL);//strPath与strFile是string类型    有用记得结贴他提示表达式必须包含结构或联合类型，这是c++的吗

user: user-1
content: ShellExecute(NULL, _T("open"), CA2W(strPath.c_str()), CA2W(strFile.c_str()), NULL, SW_SHOWNORMAL);//strPath与strFile是string类型    有用记得结贴

user: user-3
content: 比如打开QQ.exe ShellExecute(NULL, "open","qq.exe",NULL,NULL,SW_SHOWMAXIMIZED );

user: user-4
content: 抱歉少个引号  TEXT("sta")

user: user-4
content: TEXT(sta")
user-0 提问: C语言小白在线求教关于指针的练习，C语言牛逼。各位大神帮忙看看。

回复:
user: user-0
content: 引用 1 楼 chxchxkkk的回复:能排一下版吗，这代码让人咋看呢 #include <stdio.h> int main(void) {    int a[6]= {1,2,3,4,5,6}; //  定义包含6个整型元素的数组a     int i=0,j=0;     int aa[3][2]= {{2,3},{4,5},{9,10}} ; // 定义一个二维数组aa，3行2列     for(  i=0; i<6; i++)         printf("a[%d]==%d, ",i,a[i]);    //下标访问法输出元素值；     putchar('\n');     for( i=0; i<6; i++)         printf("*(a+%d)==%d, ",i,*(a+i));  // 指针访问法输出元素值     putchar('\n');                       // 输出一个空行     //-------------------------------------    int *p=NULL;                   // 定义一维指针，用来方位数组a[6]和aa[3][2]    p=a;     // 用指针p，来遍历输出数组a和二维数组aa的元素值及地址值。 //-------------------------------------    int (*pp)[2]= {aa[0],aa[1],aa[2]};     // 用指针pp，来遍历输出二维数组aa的元素值及地址值。 //-------------------------------------    int **pt=NULL;     // 用指针pt，来遍历输出二维数组aa的元素值及地址值。     //-------------------------------------    int a1=100,  b=200;           const int *p1=&a1;     int * const p2=&a1;     const int * const p3=&a1;     // 上面三条语句，(1)尝试通过指针（p1,p2,p3)间接访问(*)修改a1的值为50，(2)修改指针使其指向变量b， 调试程序，看哪些操作可行，哪些不行。 }

user: user-0
content: 引用 5 楼 山雨。的回复:看不下去了，看了上一版 #include <stdio.h> int main(void) {    int a[6]= {1,2,3,4,5,6}; //  定义包含6个整型元素的数组a     int i=0,j=0;     int aa[3][2]= {{2,3},{4,5},{9,10}} ; // 定义一个二维数组aa，3行2列     for(  i=0; i<6; i++)         printf("a[%d]==%d, ",i,a[i]);    //下标访问法输出元素值；     putchar('\n');     for( i=0; i<6; i++)         printf("*(a+%d)==%d, ",i,*(a+i));  // 指针访问法输出元素值     putchar('\n');                       // 输出一个空行     //-------------------------------------    int *p=NULL;                   // 定义一维指针，用来方位数组a[6]和aa[3][2]    p=a;     // 用指针p，来遍历输出数组a和二维数组aa的元素值及地址值。 //-------------------------------------    int (*pp)[2]= {aa[0],aa[1],aa[2]};     // 用指针pp，来遍历输出二维数组aa的元素值及地址值。 //-------------------------------------    int **pt=NULL;     // 用指针pt，来遍历输出二维数组aa的元素值及地址值。     //-------------------------------------    int a1=100,  b=200;           const int *p1=&a1;     int * const p2=&a1;     const int * const p3=&a1;     // 上面三条语句，(1)尝试通过指针（p1,p2,p3)间接访问(*)修改a1的值为50，(2)修改指针使其指向变量b， 调试程序，看哪些操作可行，哪些不行。 }

user: user-1
content: 能排一下版吗，这代码让人咋看呢

user: user-2
content: 编辑上面一行，右边第五个是添加代码

user: user-3
content: 调试一下看看

user: user-4
content: 看不下去了，看了上一版

user: user-0
content: 已重新发布过