若输入 bcdefgh、m、abcdefg 输出结果为()

#include<stdio.h>#include<string.h>main(){ int i; char string[20],str[3][20]; for(i=0;i<3;i++) gets(str[i]); if(strcmp(str[0],str[1])>0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)>0) strcpy(string,str[2]); printf("%s",string);}

慕勒3428872
浏览 154回答 2
2回答

守候你守候我

//这里要理解stramp函数,原型是 int strcmp(char *str1,char *str2),这个实现字符串的对比,先用str1里面第一个字母减去str2里面的第一个字母得到一个ACII值,判断若该值大于0就返回1,若小于0就返回-1,若等于0就继续用各字符串里德第2,第3个字母相减,知道结束符\0为止就认为2个字符串时相同的,返回0&nbsp;//这里b的值为98,m=109,所以strcmp(str[0],str[1])>0,第一个if不执行,执行else ,string="m",然后strcmp(str[2],string),a-m<0,不执行//最后输出m下边程序是在vc6.0下写的,可以直接编译,看注释很好理解#include<stdio.h>#include<string.h>;main(){ int i;char string[20],str[3][20]={"bcdefgh","m","abcdefg"};printf("%d\n",strcmp(str[0],str[1])); if(strcmp(str[0],str[1])>0){strcpy(string,str[0]);printf("1\n");//如果执行这个if语句就会输出1} else strcpy(string,str[1]); if(strcmp(str[2],string)>0){ strcpy(string,str[2]);printf("2\n");//如果执行这个if语句就会输出2} printf("%s\n",string);}

慕娘9325324

也许你迷惑的地方:gets(数组名):假如字符数组的长度为9,当从键盘输入字符串时,gets函数最多只能接收8个字符,因为系统要在字符串末尾加上'\0'。当输出字符串时,遇见'\0'就停止输出,而strcpy在使用时要连'\0'一起复制。
打开App,查看更多内容
随时随地看视频慕课网APP