user-0 提问: 求一组字符串中ASCII码最大的字符  有问题啊

回复:
user: user-1
content: 1 #include<stdio.h>   2 #include<string.h>   3   4 void main()   5 {   6         char c[11];   7         char a[11];   8         int len;   9         int i, j;  10         char max;  11         i       = 0;  12         scanf("%s", c);  13         while(c[i]!='\0'){  14                 a[i]=c[i];  15                 i++;  16         }  17         max     = a[0];  18         len=strlen(c);  19         for(j=1; j<len; j++){  20                 if(a[0]<a[j]){  21                         a[0]=a[j];  22                         }  23         }  24         printf("%c\n", a[0]);  25 }

user: user-0
content: 引用 6 楼 user-5 的回复:一次不能输入超过10个字符。恩   就是这个问题  不知道怎么控制一次输入小于等于10个字符啊

user: user-0
content: 引用 8 楼 ZXvivian 的回复:[quote=引用 7 楼 ZXvivian 的回复:] 声明时最好同时初始化，这里使用字符串操作时需要包含string.h头文件，代码如下 #include <stdio.h> #include "string.h" int main() { 	char c[11]={0}; 	int a[10]={0},len=0; 	int i=0,j=0,max=0; 	while(fgets(c,11,stdin)!=EOF) 	{ 		while(c[i]!='\0') 		{ 			a[i]=c[i]; 			i++; 		} 		max=a[0]; 		len=strlen(c); 		for(j=1;j<len;j++) 		{ 			if(a[0]<a[j]) 			{ 				a[0]=a[j]; 			} 		} 		printf("%c",a[0]); 	} 	return 0; } 上面准备用红字体的。。点错了 #include <stdio.h> #include "string.h" int main() { 	char c[11]={0}; 	int a[10]={0},len=0; 	int i=0,j=0,max=0; 	while(fgets(c,11,stdin)!=EOF) 	{ 		while(c[i]!='\0') 		{ 			a[i]=c[i]; 			i++; 		} 		max=a[0]; 		len=strlen(c); 		for(j=1;j<len;j++) 		{ 			if(a[0]<a[j]) 			{ 				a[0]=a[j]; 			} 		} 		printf("%c",a[0]); 	} 	return 0; }[/quote]  引用 8 楼 ZXvivian 的回复:[quote=引用 7 楼 ZXvivian 的回复:] 声明时最好同时初始化，这里使用字符串操作时需要包含string.h头文件，代码如下 #include <stdio.h> #include "string.h" int main() { 	char c[11]={0}; 	int a[10]={0},len=0; 	int i=0,j=0,max=0; 	while(fgets(c,11,stdin)!=EOF) 	{ 		while(c[i]!='\0') 		{ 			a[i]=c[i]; 			i++; 		} 		max=a[0]; 		len=strlen(c); 		for(j=1;j<len;j++) 		{ 			if(a[0]<a[j]) 			{ 				a[0]=a[j]; 			} 		} 		printf("%c",a[0]); 	} 	return 0; } 上面准备用红字体的。。点错了 #include <stdio.h> #include "string.h" int main() { 	char c[11]={0}; 	int a[10]={0},len=0; 	int i=0,j=0,max=0; 	while(fgets(c,11,stdin)!=EOF) 	{ 		while(c[i]!='\0') 		{ 			a[i]=c[i]; 			i++; 		} 		max=a[0]; 		len=strlen(c); 		for(j=1;j<len;j++) 		{ 			if(a[0]<a[j]) 			{ 				a[0]=a[j]; 			} 		} 		printf("%c",a[0]); 	} 	return 0; }[/quote] 恩  题目是“多组输入，每组一行，每行一个字符串（由可打印字符组成，长度不超过10).”   用fgets输入的话   如果输入超过了10个字符   会自动进行下一次的判断大小  也就是会输出两个最大的ascII码字符   还是有问题啊

user: user-2
content: 引用 7 楼 ZXvivian 的回复:声明时最好同时初始化，这里使用字符串操作时需要包含string.h头文件，代码如下 #include <stdio.h> #include "string.h" int main() { 	char c[11]={0}; 	int a[10]={0},len=0; 	int i=0,j=0,max=0; 	while(fgets(c,11,stdin)!=EOF) 	{ 		while(c[i]!='\0') 		{ 			a[i]=c[i]; 			i++; 		} 		max=a[0]; 		len=strlen(c); 		for(j=1;j<len;j++) 		{ 			if(a[0]<a[j]) 			{ 				a[0]=a[j]; 			} 		} 		printf("%c",a[0]); 	} 	return 0; } 上面准备用红字体的。。点错了 #include <stdio.h> #include "string.h" int main() { 	char c[11]={0}; 	int a[10]={0},len=0; 	int i=0,j=0,max=0; 	while(fgets(c,11,stdin)!=EOF) 	{ 		while(c[i]!='\0') 		{ 			a[i]=c[i]; 			i++; 		} 		max=a[0]; 		len=strlen(c); 		for(j=1;j<len;j++) 		{ 			if(a[0]<a[j]) 			{ 				a[0]=a[j]; 			} 		} 		printf("%c",a[0]); 	} 	return 0; }

user: user-2
content: 声明时最好同时初始化，这里使用字符串操作时需要包含string.h头文件，代码如下 #include <stdio.h> #include "string.h" int main() { 	char c[11]={0}; 	int a[10]={0},len=0; 	int i=0,j=0,max=0; 	while(fgets(c,11,stdin)!=EOF) 	{ 		while(c[i]!='\0') 		{ 			a[i]=c[i]; 			i++; 		} 		max=a[0]; 		len=strlen(c); 		for(j=1;j<len;j++) 		{ 			if(a[0]<a[j]) 			{ 				a[0]=a[j]; 			} 		} 		printf("%c",a[0]); 	} 	return 0; }

user: user-3
content: 纠正： fgets(c,11,stdin)

user: user-3
content: scanf遇到空白符就结束读取了     while(scanf("%s",c)!=EOF)               {  while(c[i]!='\0')  改成:     	while(fgets(buf,11,stdin)))               {  while(c[i]!='\n')

user: user-4
content: 引用 2 楼 bolvdandan 的回复:引用 1 楼 Automation_dmu 的回复:i没有初始化。恩  对  我用但是如果字符串中间有一个空格还是不好处理啊 用gets_s处理。 while(gets_s(c, sizeof(c))) 另外，你的代码不需要a数组，直接对c处理即可。  //注意这里会判断你的输入是否超过c的长度，所以用_s这批函数安全。 while(gets_s(c, sizeof(c))) 	{ 		 		len = (int)strlen(c); 		max=c[0]; 		 		for(j=1;j<len;j++) 		{ 			if(max < c[j]) 			{ 				max = c[j]; 			} 		} 		printf("%s, max = %c\n",c, max); 	}

user: user-0
content: 引用 1 楼 Automation_dmu 的回复:i没有初始化。恩  对  我用但是如果字符串中间有一个空格还是不好处理啊

user: user-3
content: i没有初始化。

user: user-5
content: 一次不能输入超过10个字符。