C primer plus编程练习-第8章

本文提供了8个C语言编程练习,涉及字符流读取、ASCII值处理、大小写字母计数、单词平均长度计算、二分查找猜数字策略、非空白字符提取、字符菜单选项及算术运算菜单实现。通过这些练习,读者可以深入理解C语言的输入输出操作和基本算法运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.设计一个程序, 统计在读到文件结尾之前读取的字符数

#include<stdio.h>
int main(void)
{
   
        int i=0;

        while (getchar() != EOF)
                i++;
        printf("the number of characters is %d.\n", i);

        return 0;
}

2.编写一个程序, 在遇到 EOF 之前, 把输入作为字符流读取。 程序要打印每个输入的字符及其相应的ASCII十进制值。 注意, 在ASCII序列中, 空格字符前面的字符都是非打印字符, 要特殊处理这些字符。 如果非打印字符是换行符或制表符, 则分别打印\n或\t。 否则, 使用控制字符表示法。 例如, ASCII的1是Ctrl+A, 可显示为^A。 注意, A的ASCII值是Ctrl+A的值加上64。 其他非打印字符也有类似的关系。 除每次遇到换行符打印新的一行之外, 每行打印10对值。 (注意: 不同的操作系统其控制字符可能不同。 )

#include<stdio.h>
int main(void)
{
   
        int ch;
        int i = 0;

        while ((ch = getchar()) != EOF)
        {
   
                if (ch > ' ')
                        printf("%c\t", ch);
                else if (ch == '\n')
                        printf("\\n\t");
                else if (ch == '\t')
                        printf("\\t\t");
                else
                        printf("^%c\t", ch + 64);
                printf("%d\t", ch);
                i++;
                if (ch == '\n' || i == 10)
                {
   
                        printf("\n");
                        i = 0;
                }
        }

        return 0;
}

3.编写一个程序, 在遇到 EOF 之前, 把输入作为字符流读取。 该程序要报告输入中的大写字母和小写字母的个数。 假设大小写字母数值是连续的。 或者使用ctype.h库中合适的分类函数更方便。

#include<stdio.h>
int main(void)
{
   
        char ch;
        int uppercase = 0;
        int lowercase = 0;

        while ((ch = getchar()) != EOF)
        {
   
                if (ch >= 'A' && ch <= 'Z')
                        uppercase++;
                if (ch >= 'a' && ch <= 'z')
                        lowercase++;
        }
        printf("the number of uppercase letters is %d,"
                        " and the number of lowercase letters is %d\n", uppercase, lowercase);

        return 0;
}

4.编写一个程序, 在遇到EOF之前, 把输入作为字符流读取。 该程序要报告平均每个单词的字母数。 不要把空白统计为单词的字母。 实际上, 标点符号也不应该统计, 但是现在暂时不同考虑这么多(如果你比较在意这点,考虑使用ctype.h系列中的ispunct()函数)。

#include<stdio.h>
int main(void)
{
   
        char ch;
        int word = 0;
        int character 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值