#include <stdio.h>
#include <string.h>
int main()
{
int n,i;
scanf("%d",&n);
char b[80],min[80];
getchar();
gets(min);
for(i=1;i<n;i++)
{
gets(b);
if(strcmp(min,b)>0)
strcpy(min,b);
}
printf("Min is: %s",min);
return 0;
}
#include <stdio.h>
#include <string.h>
main()
{
int N,i,a;
char str[1000][80],*c;
scanf("%d\n",&N);
for(i=0;i<N;i++)
gets(str[i]);
c=str[0];
for(i=1;i<N;i++)
{
if(strcmp(c,str[i])>0)
c=str[i];
}
printf("Min is: %s",c);
}
為什么第二段不用加getchar也能正常執行,而第一段不加就少執行一次gets
uj5u.com熱心網友回復:
gets是遇到換行符回傳,因此第一個如果不加getchar,那么輸入n之后輸入的'\n'就會被gets(第一個)接收,直接回傳。uj5u.com熱心網友回復:
要有getchar,我也有這個問題,受教了
uj5u.com熱心網友回復:
在控制臺中通過鍵盤輸入資料時,以回車鍵作為結束標志。當輸入結束后,鍵盤輸入的資料連同回車鍵一起被輸入到輸入緩沖區中。在程式中第一次呼叫getchar()函式從輸入緩沖區中讀取一個位元組的資料。需要注意的是,如果此時在程式中第二次呼叫getchar()函式,因為此時輸入緩沖區中還有回車鍵的資料沒有被讀出,第二個getchar()函式讀出的是回車符。以上節選自《C++中getchar()的使用方法》
希望能夠幫到你!
另外你的兩段代碼中,n和N都沒有指定值,for怎么能回圈起來呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88680.html
標籤:C語言
上一篇:c語言求答案
下一篇:c需要關于數值轉換為hex的問題
