文章目录
1. 第1题
1.1 题目描述
设计一个程序,统计在读到文件结尾之前读取的字符数
1.2 编程源码
# include<stdio.h>
int main(){
int num = 0;
char c;
while((c = getchar())!=EOF) ++num;
printf("\n共计 %d 个字符\n", num);
return 0;
}
1.3 结果显示
输入文本内容:
abc
e
f

2. 第2题
2.1 题目描述
编写一个程序,在遇到EOF之前,把输入作为字符流读取。程序要打印每个输入的字符及其相应的ASCII 十进制值。注意,在 ASCII 序列中,空格字符前面的字符都是非打印字符,要特殊处理这些字符。如果非打印字符是换行符或制表符,则分别打印\n或\t。否则,使用控制字符表示法。例如ASCII的1是Ctrl+A,可显示为^A。注意A的ASCII值是Ctrl+A的值加上64.其他非打印字符也有类似的关系。除每次遇到换行符打印新的一行外,每行打印10对值。(注意:不同的操作系统其控制字符可能不同)。
2.2 编程源码
# include<stdio.h>
int main(){
int num = 0;
char c;
while((c = getchar())!=EOF){
++num;
if('\n' == c) {
printf("\n\\n-%d\t", c);
num = 1;
} else if('\t' == c) printf("\\t-%d\t", c);
else printf("%c-%d\t", c,c);
if(num%10 == 0) putchar('\n');
}
return 0;
}
2.3 结果显示
输入文本内容:
abc 123
e
f

3. 第3题
3.1 题目描述
编写一个程序,在遇到EOF之前,把输入作为字符流读取。该程序要报告输入中的大写字母和小写字符个数。假设大小写字母数值是连续的。或者使用ctype.h库中合适的分类函数更方便。
3.2 编程源码
# include<stdio.h>
# include<ctype.h>
int main(){
int num = 0;
int n=0;
char c;
while((c = getchar())!=EOF){
if(isupper(c)) ++n;
if(islower(c)) ++num;
}
printf("大写字母的个数:%d\n", n);
printf("小写字母的个数:%d\n", num);
return 0;
}
3.3 结果显示
输入文本内容:
ab cde123 445
AAA AAB C
212324
f

4. 第4题
4.1 题目描述
编写一个程序,在遇到EOF之前,把输入作为字符流读取。该程序要报告平均每个单词的字母数。不要把空白统计为单词的字母。实际上,标点符号也不应该统计,但是现在暂时不考虑这么多(如果你比较在意这点,考虑使用ctype.h系列中的ispunct()函数。
4.2 编程源码
# include<stdio.h>
# include<ctype.h>
int main(){
int num_w = 0;
float num_c=0;
char c;
int flag = 0;
while((c = getchar())!=EOF){
if(flag){
if(isalpha(c)) ++num_c;
else{
++num_w;
flag = 0;
}
}else{
if(isalpha(c)){
flag = 1;
num_c++;
}
}
}
printf("\n该文章共计%d个单词,每个单词平局%f个字符\n", num_w,num_c/num_w);
return 0;
}
4.3 结果显示
输入文本内容:
this is a dog.
dog is running on the grass.

最低0.47元/天 解锁文章
267

被折叠的 条评论
为什么被折叠?



