編程軟體VS2015
圖一圖二,是按書本敲的。但無法輸出
圖三圖四,我在while中加了中括號,可以得出結果。但每個回圈結果都列印出來了。但是將中括號撤出printf后。結果又如圖二那樣了。
怎樣才能列印一行?



uj5u.com熱心網友回復:
不知道EOF是干什么用的,是不是和\0功能差不多?你這個不是字符陣列,用EOF應該是沒用
主要問題是\n的統計,因為你一按回車就輸出了
#include<stdio.h>
int main()
{
int c,i,nwhile,nother;
int ndigit[10];
for(i = 0;i <= 9;i++)
ndigit[i] = 0;
while((c=getchar())!='\n')
{
if(c >= '0'&&c <= '9')
++ndigit[c-'0'];
else if(c == ' '||c == '\t')
++nwhile;
else
++nother;
}
printf("digits=");
for(i = 0;i <= 9;i++)
printf("%d",ndigit[i]);
printf("while=%d,other=%d",nwhile,nother);
return 0;
}
這個版本統計不了\n
#include<stdio.h>
void StringCount( char s[] )
{
int i=0;
int letter=0,blank=0,digit=0,other=0;
while(s[i])
{
if(s[i]>64 && s[i]<91 || s[i]>96 && s[i]<123)
letter++;
else if(s[i] == ' ' || s[i] == '\n')
blank++;
else if(s[i]>47 && s[i]<58)
digit++;
else
other++;
i++;
}
printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
}
int main()
{
char s[100];
gets(s);
StringCount(s);
return 0;
}
這個應該可以
uj5u.com熱心網友回復:
EOF 是檔案結束符(end of file)我都是按書上敲的 剛學。就是不懂為甚么回圈才可以輸出uj5u.com熱心網友回復:
有可能是你一直沒有碰上EOF,回圈一直沒出去
uj5u.com熱心網友回復:
win 的控制臺下應該是按 control+z 輸入 eof,printf應該寫到回圈外面uj5u.com熱心網友回復:
eof 是指讀到了檔案結尾,但你這里是從標準輸入讀取的,不存在檔案結尾這一概念,必須手動發送這個"信號"uj5u.com熱心網友回復:
eof是檔案結束符號,windows系統下的Ctrl+Z也是可以的按照定義,eof實際就是-1, ascii對應的是255, alt+小鍵盤輸入陣列255,看看是不是吧, 沒windows環境測驗不了
uj5u.com熱心網友回復:
EOF是End Of File 的簡稱,表示檔案結束,Windows命令列按Ctrl+Z,Unix作業站按Ctrl+D轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/137736.html
標籤:C語言
上一篇:求大神,讓預習,網上也搜不到
