㈠ c語言中對一篇中文文章的字數,標點符號進行統計,代碼怎麼寫
#include<stdio.h>
int main()
{
int i,t=0;
char s[100];
gets(s);
for(i=0;s[i]!=0;i++)
if(s[i]<0&&s[i+1]<0)
t++,i++;
printf("中文漢字以及中文標點數為%d",t);
return 0;
}
㈡ C語言編程的字數統計問題
在編輯框顯示源代碼的運行結果?
點擊「開始統計」按鈕??這個涉及對象設計了,,超出了C的編程了
㈢ c語言求統計字數的程序求解釋
#include<stdio.h>
#define STOP '|'
#define bool int //VS是沒有stdbool.h這個頭文件的,bool類型自己定義
#define true 1
#define false 0
int main(void)
{
char c; //讀入字元
char prev; //前一個讀入字元
int n_chars=0L; //字元數
int n_lines=0; //行數
int n_words=0; //單詞數
int p_lines=0; //不完整的行數
bool inword=false;//如果c 在一個單詞中,則inword等於true
printf("Enter text to be analyzed(| to terminate):\n");
prev='\n'; //用於識別完整的行
while((c=getchar())!=STOP)
{
n_chars++;
if(c=='\n')
n_lines++; //統計行
if(!isspace(c)&&!inword)
{
inword=true;//開始一個新單詞 這里我加了個分號 不然編譯通不過
n_words++;
}
if(isspace(c)&&inword)
inword=false;//到達單詞的尾部
prev=c; //保存字元數
}
if(prev!='\n')
p_lines=1;
printf("characters=%ld,words=%d,lines=%d.",n_chars,n_words,p_lines);
printf("partial lines=%d\n",p_lines);
return 0;
}
/*
我是在vs2010中編譯通過的,頭部幾行代碼改動了下
1. bool inword=false;這里定義時賦值是false,表示不再一個單詞中。
if(!isspace(c)&&!inword)
{
inword=true;
n_words++;
}
if(isspace(c)&&inword)
inword=false;
prev=c;
假如字元c不是空格且不在一個單詞中 那麼把inword賦值為true表示開始統計這個新的單詞,並把單詞數加1
假如字元c是空格且在一個單詞中那麼說明字元c到達單詞尾部了就將inword賦值為false表示現在的字元c不在一個單詞中
2.bool inword=false; inword初值為false,!inword表示對inword取反,false取反當然就是true。你的理解是對的。
inword這個布爾邏輯變數是用來標識當前字元c是否在一個單詞中。
3.
在while循環中有一行prev=c; 後面注釋說是保存字元數,這里的作用是用來保存當前進行統計的字元,不是字元數。
在循環體外面
if(prev!='\n')
p_lines=1;
這里有用到prev,判斷最後進行統計的那個字元是否是換行符。如果不是換行符那麼說明是不完整的行則將p_lines賦值為1。
4.整個程序的演算法其實是很簡單的,程序看得多寫得多了一下就可以明白。另外初學者學演算法之前最好先學會調試,
會調試你就能明白演算法的流程和原理。
*/
㈣ C語言統計字數
在你的基礎上做了點修改, 以#結束
#include<stdio.h>
int main(void)
{
int nc=0; /* number of characters */
int nq=0; /* numerical quantities */
int bs=0; /* number of blank spaces */
char e;
int nw=0,word=0,nl=1;
printf("Text Analysis\n");
printf("please input the Text:\n");
e=getchar();
while (e!='#')
{
if((e>='a'&&e<='z')||(e>='A'&&e<='Z')) nc++;
if(e>='0'&&e<='9') nq++;
if(e==' ') bs++;
if(e=='\n') nl++;
if(e==' ') word=0;
else if(word==0)
{
word=1;
nw++;
}
if(e=='\n') word=0;
else if(word==0)
{
word=1;
nw++;
}
e=getchar();
}
printf("Number of Words:%d \n",nw);
printf("Number of Characters:%d\n",nc);
printf("Number of blank spaces:%d\n",bs);
printf("Number of numerical characters:%d\n",nq);
printf("Number of lines:%d \n",nl);
return 0;
}
㈤ 如何用C語言統計中文的字元數
C中的漢字用「機內碼」,一個漢字兩位元組,最高位都是1,所以可以用下列代碼求得一個字元串里漢字的個數:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
char a[]="12我34們56都7是來自五a湖c四de海bfg";
int i,sum;
for(sum=i=0;a[i];i++)
if(a[i]<0) sum++;//最高位為1(負數)的是一個漢字的一半
printf("There are %d Chinese characters in this string.\n",sum/2);//輸出漢字總數
return 0;
}
㈥ c語言 統計字數
#include <stdio.h>
void main()
{int i,num=0,cha=0,spa=0,oth=0;
while((i=getchar())!='\n')
{if(47<i&&i<58)num=num+1;
else if((64<i&&i<91)||(96<i&&i<123))cha=cha+1;
else if(i==32)spa=spa+1;
else oth=oth+1;
}
printf("num%d cha%d spa%d oth%d",num,cha,spa,oth);
}
我感覺這個答案比你的好,你按照自己的意思修改一下,別忘了謝謝我呀!呵呵!
㈦ c語言求統計字數的程序求解釋
1,
1和2
可以歸結為一個問題:
if(!isspace(c)&&!inword)
{
inword=true;
n_words++;
}
if(isspace(c)&&inword)
inword=false;
當來到某一個字元時,如果它不是空格,並且是單詞的開始,那麼我們就把單詞數n_words>加上1,標志又多了一個新的單詞。
!isspace(c)
用於判斷它不是空格,!inword用於判斷>它是單詞的開頭而不是單詞中間的某個字母。
2,
prev='\n':
因為我們靠判斷有幾個'\n'來判斷有多少行的,但是最後一行是以STOP結尾的,如果STOP前
面的一個字元不是'\n',那麼我們就統計少了一行。這個prev=c就是保存結束之前最後一個
字元,也就是
|
前面的那個字元,
如果它不是'\n'的話.它就不是一個完整行。
㈧ c語言 字數統計
把for(;;)循環的右半個}放到程序最後就行了,你那個循環圈到輸入的位置就變成了光輸入不判斷了
㈨ C語言 統計字元個數
#include<stdio.h>
void coun(char s[])
{
int i,m=0,n=0,p=0,d=0;
for(i=0;s[i]!='\0';i++)
{if(s[i]==' ')
p++;
else if((s[i]>='0')&&(s[i]<='9'))
m++;
else if((s[i]>='A')&&(s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))
n++;
else d++;
}
printf("輸入的字元串是:%s\n數字的個數:%d\n字母的個數:%d\n空格的個數:%d\n其它字元個數:%d\n",s,m,n,p,d);
}
int main()
{
char a[100];
gets(a);
coun(a);
system("pause");
return 0;
}