一、首先,打开Excel表格程序,然后在程序中打开要统计字数的表格。
二、然后,在相邻的单元格中输入“=len(”,回车确定。
三、然后,用鼠标点击要统计字数的单元格。
四、然后,在继续输入“)”,回车确认。
五、最后,就可以在Excel工作表中显示字数,统计字数完成,问题解决。
#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=falseinword初值为false,!inword表示对inword取反,false取反当然就是true。你的理解是对的。
inword这个布尔逻辑变量是用来标识当前字符c是否在一个单词中。
3.
在while循环中有一行prev=c 后面注释说是保存字符数,这里的作用是用来保存当前进行统计的字符,不是字符数。
在循环体外面
if(prev!='\n')
p_lines=1
这里有用到prev,判断最后进行统计的那个字符是否是换行符。如果不是换行符那么说明是不完整的行则将p_lines赋值为1。
4.整个程序的算法其实是很简单的,程序看得多写得多了一下就可以明白。另外初学者学算法之前最好先学会调试,
会调试你就能明白算法的流程和原理。
*/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)