c primer plus(五版)编程练习-第七章编程练习

1.编写一个程序。该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。

#include<stdio.h>
#include<ctype.h>
int main(void){
    char ch;
    int count1,count2,count3;
    count1 = count2 = count3 = 0;   printf("Enter text to be analyzed(#to terminate):\n");
    while((ch = getchar()) != ‘#‘){
        if ( ch == ‘\n‘){
            count1++;
        } else if(isspace(ch)){
            count2++;
        } else if (!isspace(ch)){
            count3++;
        }
    }
    printf("换行数量%d,空格数量%d,其他字符数量%d",count1,count2,count3);
    return 0;
}

2.编写一个程序。该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的十进制ASCII 码。每行打印8 个字符/编码对。建议:利用字符计数和模运算符(%)在每8 个循环周期时打印一个换行符。

#include<stdio.h>
#define STOP ‘#‘
int main(void){
    char ch;
    int length = 1;
    printf("Enter text to be analyzed(#to terminate):\n");
    while((ch = getchar()) != STOP){
        if(length%8==0){
            printf("\n");
        }
        printf("%c/%d ",ch,ch);
        length++;
    }
    return 0;
}

3.编写一个程序。该程序读取整数,直到输入0。输入终止后,程序应该报告输入的偶数(不包括0)总个数、偶数的平均值,输入的奇数总个数以及奇数的平均值。

#include<stdio.h>
int main(void){
    int num,even_num,odd_num;
    double even_count,odd_count;//必需定义为double类型,否则打印平均值会出错
    even_num = odd_num = 0;
    even_count = odd_count = 0.0 ;
    printf("Enter int to be analyzed(0 to terminate):\n");
    while (scanf("%d", &num) == 1 && num != 0){
            if (num%2 == 0){
                even_num++;
                even_count +=num;
            } else {
                odd_num++;
                odd_count +=num;
            }
    }
    if (even_count > 0)
        printf("Even have %d, even average is %.2f\n",even_num,even_count / even_num);
    if (odd_num > 0)
        printf("Odd have %d,odd average is %.2f",odd_num,odd_count/odd_num);
    return 0;
}

4.利用if else 语句编写程序读取输入,直到#。用一个感叹号代替每个句号,将原有的每个感叹号用两个感叹号代替,最后报告进行了多少次替代。

#include<stdio.h>
#define STOP ‘#‘
int main(void){
    char ch;
    int i;
    i = 0;
    while((ch = getchar()) != STOP){
        if (ch == ‘.‘){
            putchar(‘!‘);
            i++;
        } else if (ch == ‘!‘){
            putchar(ch);
            putchar(ch);
            i++;
        } else {
            putchar(ch);
        }
    }
    printf("\n");
    printf("count %d",i);
    return 0;
}

5.用switch 重做练习3。

#include<stdio.h>
int main(void){
    int num,even_num,odd_num;
    double even_count,odd_count;//必需定义为double类型,否则打印平均值会出错
    even_num = odd_num = 0;
    even_count = odd_count = 0.0 ;
    printf("Enter int to be analyzed(0 to terminate):\n");
    while (scanf("%d", &num) == 1 && num != 0){
            switch (num%2){
                case 0:
                    even_num++;
                    even_count +=num;
                    break;
                case 1:
                    odd_num++;
                    odd_count +=num;
                    break;
            }
    }
    if (even_count > 0)
        printf("Even have %d, even average is %.2f\n",even_num,even_count / even_num);
    if (odd_num > 0)
        printf("Odd have %d,odd average is %.2f",odd_num,odd_count/odd_num);
    return 0;
}
时间: 2024-11-02 23:22:04

c primer plus(五版)编程练习-第七章编程练习的相关文章

c++ Primer 第五版习题答案第三章

3.2 编写程序,从标准输入中一次读入一整行,然后修改该程序使其一次读入一个词. void readByLine () {    string line; ?    while (getline (cin, line)) {        cout << line << endl;   }   } void readByWord () {    string word; ?    while (cin >> word) {        cout << wo

《C++ Primer第五版中文版》PDF高清

<C++ Primer第五版中文版>PDF高清 链接: https://pan.baidu.com/s/1C71Y9g1Jce2OBwLnfb0t0w 提取码: 8k9u 内容简介  · · · · · · 这本久负盛名的 C++经典教程,时隔八年之久,终迎来史无前例的重大升级.除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C++ 先驱 Barba

C++ Primer 第五版:第1 章

*****C++ Primer 第五版第1章学习笔记***** *****实验代码在Red Hat 6.6或VS 2013中调试***** *****文章内容依据当前知识撰写,存在认识的局限性***** 1.1 编写一个简单的C++程序 函数:依据我个人理解,C/C++的函数是一个能够完成一个功能的模块. 完整函数的组成: ①返回类型:不一定有返回值,故不一定有返回类型 ②函数名:根据名字标识完成特定功能的模块,必须存在 ③形参列表:可能没有参数传入,不一定存在 ④函数体:一个完整的函数应该是有

C++ Primer 第五版学习笔记

<C++ Primer>第五版中文版学习笔记 ? C++ Primer 第五版学习笔记

C++ Primer 第五版:第2章

*****C++ Primer 第五版第2章学习笔记***** *****实验代码在Red Hat 6.6或VS 2013中调试***** *****文章内容依据当前知识撰写,存在认识的局限性***** 今天学习C++ Primer 的第2章,还没有看完,先写一点看书的心得和笔记. 对象类型决定对象包含的数据和能参与的运算操作,同时还决定了存储空间大小.算术表达式中不要使用char,因为不同机器实现不一样,导致结果不同.单精度计算不一定比双精度快. C++类型不匹配时,是自动进行类型的转换. C

c++ primer plus(第6版)中文版 第十二章编程练习答案

第十二章编程练习答案 12.1根据以下类声明,完成类,并编小程序使用它 //12.1根据以下类声明,完成类,并编小程序使用它 #include <iostream> #include <cstring> using namespace std; class Cow{ char name[20]; char * hobby; double weight; public: Cow(); Cow(const char * nm, const char * ho, double wt);

c++ primer plus(第6版)中文版 第七章编程练习答案

第七章编程练习答案 7.1编写一个程序,用户不停输入两数,直到有0出现为止,计算调和平均数 //7.1编写一个程序,用户不停输入两数,直到有0出现为止,计算调和平均数 #include <iostream> using namespace std; double average (unsigned x, unsigned y) { return (2.0 * x * y / (x + y)); } int main () { while (true) { unsigned x, y; cout

《C++ Primer 第五版》练习9.51参考答案

//Date.h #include <map> #include <string> #include <vector> using namespace std; struct Date {         explicit Date(const string & info){//检测输入格式,尝试初始化,若失败则进行errorInit             if(mymap.empty()){               initMap();         

C++ Primer(第五版)学习笔记_9_标准模板库_multimap多重映照容器

C++ Primer(第五版)学习笔记_9_标准模板库_multimap多重映照容器 多重映照容器multimap与map结构基本相同,但由于重复键值存在,所以multimap的元素插入.删除.查找都与map的方法不相同. 1.multimap对象创建.元素插入 插入元素时,需要使用insert()方法和类似pair<string,double>("Jack", 300.5)的元素结构.可以看到,重复的元素是按照插入的先后顺序排序的. #include <iostre