时间限制:1.0s 内存限制:512.0MB
求出五个字符串中最长的字符串。 每个字符串的长度不能超过100个,并且都是小写的。
样例输入
one two three four five
样例输出
three
我写的代码(错误,运行错误,问题未知)!!!!:
# include stdio.h # include string.hint main () {char str[5][100]; int i,max; int j=0; for(I=0; i 5; I ) scanf_s('%c ',str[i]; if(I==0) ) max=strlen ) str[I]; }最大strlen (str[I] )最大=strlen ) str [ I ]; j=i; }puts(str[j]; 返回0; } 别人的答案:
第一种:
# include stdio.h # include string.hint main () { char str[5][100]; int max=0; int a[5]; //记录字符串长度的数组int i; for(I=0; i 5; I ) Scanf('%s ',str[i]; a[I]=strlen(str[I]; (for ) I=0; i 5; I () if ) a[I]a[max] ) { max=i; }printf('%s ',str[max] ); 返回0; } 第二种:
# include stdio.h # include string.hint main () { char str[5][100]; int len[5]; int i,j,t,max; max=0; for(I=0; i5; I ) Scanf('%s ',str[i]; len[I]=strlen(str[I]; if(Len[I]max ) { max=len[i]; t=i; }puts(str[t]; 返回0; } 然后我运行了他们的代码发现报错,还是报一样的错:
0x7a81e63c(ucrtbased.dll )中的(位于Project1.exe中的)异常:0xC0000005:写入位置0x00700000是不是他们错了。 结果当然是,我错了,但他们是对的。 问题是,在我使用的编译软件的vs环境中,调用scanf_s函数时必须声明字符的长度。 这意味着必须将相应的语句更改为scanf("%s", str[i],10);和scanf("%s",str[i],10);,才能在vs2019上正常工作。
好家伙,错到怀疑人生。
总结:
puts();这个函数也很简单,只有一个参数。 可以是字符指针变量名称、字符数组名称或直接字符串常量。 功能是将字符串输出到画面上。 仅在输出时遇到“ 0”,即字符串结束标记时停止。 在vs环境中,调用scanf_s函数时必须声明字符的长度。 使用新数组存储二维数组中每行的长度,使比较更容易,输出更容易。