include<stdio.h>
#include<string.h>
intmain()
{
charstr[80],min[80];
intk,len;
printf("輸入一個字串:\n");
gets(str);
strcpy(min,str);
len=strlen(min);
while(str[0]!='\0')
//以空串作為輸入結束標記
{
k=strlen(str);
if(k<len)
{
len=k;
strcpy(min,str);
}
gets(str);
}
printf("len=%d,min=%s\n",len,min);
return0;
}可否幫忙解釋解釋
uj5u.com熱心網友回復:
#include<stdio.h>
#include<string.h>
int main()
{
char str[80], min[80];
int k, len;
printf("輸入一個字串:\n");
gets_s(str); //輸入第一個字串
strcpy(min, str); //將第一個字串當作最短字串,以便于比較后面輸入的字串長度的相對大小
len = strlen(min); //記錄最短字串長度
while (str[0] != '\0') //當輸入空行時,str接受到的字串是"\0",\0是一個不可見字符,做為字串的終止標志
{
gets_s(str); //輸入其實可以放這里
k = strlen(str); //獲取當前字串的長度k
if (k < len) //k于最短字串的長度比較,如果小于,說明str是最短字串
{
len = k; //更新最短長度
strcpy(min, str);//更新最短字串
}
}
printf("len=%d,min=%s\n", len, min);
return 0;
}
uj5u.com熱心網友回復:
你的字串到底怎么輸入的, 空格到底算不算字串內容看你的文字描述, 字串是用空格分割的, 但是你代碼用'\0'當空格是不對, 空格是‘ ’,ascii 是0x20; '\0'是字串結束的標志,ascii是0
gets一次讀取一行,有空格也讀進來了
如果空格是分隔符, 不用gets,直接scanf("%s", str);就好了,scanf遇到空格,tab和回車自動回傳字串了
感覺就是弄混了空格和字串結束標記'\0'的區別,以及gets和scanf的區別
uj5u.com熱心網友回復:
這是我做題 看到的一個答案有點不明白
uj5u.com熱心網友回復:
可以加個好友嗎朋友。。。。。
uj5u.com熱心網友回復:
可不可以加個好友



轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134393.html
標籤:新手樂園
上一篇:編程萌新求大佬解決問題
下一篇:摘蘋果升級版代碼求指正。
