作者:陈哲1.3布尔类型(bool)满足以上几个原则。如果不满足,显示一个信息,告诉用户为什么不满足。练习1.9(支票输出)编写一个程序模拟支票输出。程序要求用户输入日期、姓名和支票的金白额,然后模拟支票的形式输出这些信息。假设输入的金额中,最多只有两位小数。程序需进行输入有效性检验:输入的金额不能大于10000。例如:日期:2017年12月26日姓名:张三RMB1920.68人民币:壹仟玖佰贰拾元陆角捌分1.3布尔类型(bool)练习1.10读程序,写输出结果。思考为什么会有这样的输出结果。$#include<iostream>using namespace std;struct stb ( bool a,b,c,d; I;struct stc { char c[8]; ];int mainOint a; bool b = O; char c; double d;cout << sizeof(a) <<" "<< sizeof(b)<<endl;cout << sizeof (c) <<" " << sizeof (d) << endl;b = b + 1; cout <<"b =" <<b << endl;b=b+l:cout<<"b="<<b<<endlcout << sizeof(stb) <<"" << sizeof(stc) << endl ;return O;→练习1.11(身高预测)据有关生理卫生知识与数理统计分析表明,影响成人身高的因素包括遗传、饮食习惯与体育锻炼等。首先,成人的身高与其父母的身高和自身的性别密切相关,设faHeight为其父身高,moHeight为其母身高,身高预测公式为:男性成人时身高=(faHeight+moHeight)×0.54女性成人时身高=(faHeight×0.923+moHeight)/2此外,如果有良好的卫生饮食习惯,那么可增加身高1.5%;如果喜爱体育锻炼,那么可增加身高2%。编写一个程序,提示用户从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否有良好的饮食习惯等条件(用布尔型变量diet存储,输入1表示良好,输入0表示不好)、是否喜爱体育锻炼(用布尔型变量sports存储,输入1表示喜爱,输入0表示不喜爱),利用给定公式和身高预测方法对身高进行预测
作者:陈哲 1.3 布尔类型(bool) 满足以上几个原则。如果不满足,显示一个信息,告诉用户为什么不满足。 练习 1.9(支票输出)编写一个程序模拟支票输出。程序要求用户输入日期、姓名和支票的金 额,然后模拟支票的形式输出这些信息。假设输入的金额中,最多只有两位小数。程序需进 行输入有效性检验:输入的金额不能大于 10000。例如: 日期:2017年12月26日 姓名:张三 RMB1920.68 人民币:壹仟玖佰贰拾元陆角捌分 1.3 布尔类型(bool) 练习 1.10 读程序,写输出结果。思考为什么会有这样的输出结果。 #include <iostream> using namespace std; struct stb { bool a, b,c, d; }; struct stc { char c [8]; }; int main() { int a; bool b = 0; char c; double d; cout << sizeof (a) << " " << sizeof (b) << endl; cout << sizeof (c) << " " << sizeof (d) << endl; b = b + 1; cout << "b = " << b << endl; b = b + 1; cout << "b = " << b << endl; cout << sizeof ( stb ) << " " << sizeof ( stc ) << endl; return 0; } 练习 1.11(身高预测) 据有关生理卫生知识与数理统计分析表明,影响成人身高的因素包括 遗传、饮食习惯与体育锻炼等。首先,成人的身高与其父母的身高和自身的性别密切相关,设 faHeight 为其父身高,moHeight 为其母身高,身高预测公式为: 男性成人时身高 = (faHeight + moHeight) × 0.54 女性成人时身高 = (faHeight × 0.923 + moHeight)/2 此外,如果有良好的卫生饮食习惯,那么可增加身高 1.5%;如果喜爱体育锻炼,那么可增加 身高 2%。编写一个程序,提示用户从键盘输入用户的性别(用字符型变量 sex 存储,输入字 符 F 表示女性,输入字符 M 表示男性)、父母身高(用实型变量存储,faHeight 为其父身高, moHeight 为其母身高)、是否有良好的饮食习惯等条件(用布尔型变量 diet 存储,输入 1 表 示良好,输入 0 表示不好)、是否喜爱体育锻炼(用布尔型变量 sports 存储,输入 1 表示喜爱, 输入 0 表示不喜爱),利用给定公式和身高预测方法对身高进行预测。 3
作者:陈哲1.4引用类型(&)1.4引用类型(&)练习1.12读程序,写输出结果。t#include<iostream>using namespace std;int mainOint x = 2, y = 4;int &z=x;z++;cout <<x <<y <<z;X =y;X++;cout <<x <<y <<z;return 0;练习1.13(交换数值)编写一个函数swap(int&x,int&y),用于交换x和y的值。编写一个程序,提示用户输入2个数,然后调用该函数交换它们的数值,并在屏幕上输出结果。思考如何使用指针参数实现同样的功能。1.5函数的默认参数1.6函数重载练习1.14读程序,写输出结果。#include <iostream>#include<iomanip>using namespace std;int foo(int a, int n)( return a+n;int foo(int *a, int n)return a[n]; ]int mainOYint a[9] = (1,2,3,4,5,6,7,8,9];for (int i=0; i<4; i++)
作者:陈哲 1.4 引用类型(&) 1.4 引用类型(&) 练习 1.12 读程序,写输出结果。 #include <iostream> using namespace std; int main() { int x = 2, y = 4; int &z = x; z++; cout << x << y << z; x = y; x++; cout << x << y << z; return 0; } 练习 1.13(交换数值) 编写一个函数 swap(int &x, int &y),用于交换 x 和 y 的值。编写一个 程序,提示用户输入 2 个数,然后调用该函数交换它们的数值,并在屏幕上输出结果。思考 如何使用指针参数实现同样的功能。 1.5 函数的默认参数 1.6 函数重载 练习 1.14 读程序,写输出结果。 #include <iostream> #include <iomanip> using namespace std; int foo ( int a, int n) { return a+n; } int foo ( int ∗a, int n) { return a[n ]; } int main() { int a [9] = { 1,2,3,4,5,6,7,8,9 }; for ( int i = 0; i < 4; i++) 4
作者:陈哲1.7内存的动态分配和释放(new/delete)cout << setw(2) << foo(a[i], i);if(i%3==2)cout << setw(2) <<foo(a, i);1return 0;1.7内存的动态分配和释放(new/delete)常见错误解析:1.返回指向栈空间的指针,导致释放后使用错误(在函数返回后,访问已释放的空间)。char *fOchar arr [200];.return arr;int mainO1char *str = fO;str [0] = str [1];return 0;2.只有new,没有delete,导致内存泄漏。3.分配多余的内存空间,释放不彻底,导致内存泄漏。char *merge(char *strl ,char *str2)Ychar *strx =new char[200];...return strx;7int mainOchar *str3=newchar[100];
作者:陈哲 1.7 内存的动态分配和释放(new/delete) { cout << setw(2) << foo(a[ i ], i ) ; if ( i % 3 == 2) cout << setw(2) << foo(a, i ) ; } return 0; } 1.7 内存的动态分配和释放(new/delete) 常见错误解析: 1. 返回指向栈空间的指针,导致释放后使用错误(在函数返回后,访问已释放的空间)。 char ∗f () { char arr [200]; . return arr ; } int main() { char ∗ str = f () ; str [0] = str [1]; return 0; } 2. 只有 new,没有 delete,导致内存泄漏。 3. 分配多余的内存空间,释放不彻底,导致内存泄漏。 char ∗merge(char ∗str1 , char ∗str2 ) { char ∗strx = new char[200]; . return strx ; } int main() { . char ∗str3 = new char[100]; 5
作者:陈哲第1章作业str3 = merge(strl , str2);delete str3;return 0;4.释放栈空间的数组,导致内存错误;同时,申请的堆空间未使用也未释放。char* merge(char * strl, char * str2)return strl;}int mainO1char s[100],t[100],*c;c = new char[length ];c =merge(s, t);delete c;练习1.15(字符串合并)编写一个程序,提示用户输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的字符串。要求:编写一个合并两个字符串的函数char*merge(char*strl,char*str2),用new分配新的字符数组(大小为str1和str2的长度之和+1),然后将str1和str2合并存入该字符数组,使合并后的字符串仍然从小到大排列,并返回该字符数组。在主函数中调用该函数输出合并后的字符串,并用delete释放分配的字符数组。必须用指针方式逐个访问字符数组元素,不得使用字符串库函数。输入:1223aabcc233abbdkm运行结果输出:1222333aaabbbccdkm第1章作业1.邮件地址检验:邮件地址需要满足格式“x@y.z”,其中,x、y、z的长度均不超过20个字符,且只能由字母、数字和下划线构成,但是z可以包含2个点号。编写一个邮件地址检验程序,验证用户输入的邮件地址是否满足以上格式。如果不满足,显示一个信息,告诉用户为什么不满足。2.学生成绩统计:编写一个程序,提示用户输入一个班每个学生的姓名和一门课的成绩(最多不超过10人),存入一个结构体数组中,当输入成绩为负值时,输入结束,使用函数分别实现以下功能(不使用全局变量):(a).统计不及格人数并打印不及格学生名单;(b).统计成绩在全班平均分之上的学生人数,并打印这些学生的名单;(c).将成绩分为六个分数段,60分以下为第1段,60-69为第2段,70-79为第3段,80-89为第4段,90-99为第5段,100分为第6段,统计各分数段的人数。编写主函数测试以上函数的正确性
作者:陈哲 第 1 章作业 str3 = merge( str1 , str2 ) ; delete [] str3 ; return 0; } 4. 释放栈空间的数组,导致内存错误;同时,申请的堆空间未使用也未释放。 char∗ merge(char ∗str1 , char ∗str2 ) { return str1 ; } int main() { char s [100], t [100], ∗c; c = new char[ length ]; c = merge(s, t ) ; delete [] c; } 练习 1.15(字符串合并) 编写一个程序,提示用户输入两个已经按从小到大顺序排列好的 字符串,将两个字符串合并为一个新的字符串。要求:编写一个合并两个字符串的函数 char *merge(char *str1, char *str2),用 new 分配新的字符数组(大小为 str1 和 str2 的长度之和 +1), 然后将 str1 和 str2 合并存入该字符数组,使合并后的字符串仍然从小到大排列,并返回该字 符数组。在主函数中调用该函数输出合并后的字符串,并用 delete 释放分配的字符数组。必 须用指针方式逐个访问字符数组元素,不得使用字符串库函数。 运行结果 输入: 1223aabcc 233abbdkm 输出: 1222333aaabbbccdkm K第 1 章作业k 1. 邮件地址检验:邮件地址需要满足格式“x@y.z”,其中,x、y、z 的长度均不超过 20 个 字符,且只能由字母、数字和下划线构成,但是 z 可以包含 2 个点号。编写一个邮件地 址检验程序,验证用户输入的邮件地址是否满足以上格式。如果不满足,显示一个信息, 告诉用户为什么不满足。 2. 学生成绩统计:编写一个程序,提示用户输入一个班每个学生的姓名和一门课的成绩 (最多不超过 10 人),存入一个结构体数组中,当输入成绩为负值时,输入结束,使用函 数分别实现以下功能(不使用全局变量): (a). 统计不及格人数并打印不及格学生名单; (b). 统计成绩在全班平均分之上的学生人数,并打印这些学生的名单; (c). 将成绩分为六个分数段,60 分以下为第 1 段,60–69 为第 2 段,70–79 为第 3 段, 80–89 为第 4 段,90–99 为第 5 段,100 分为第 6 段,统计各分数段的人数。 编写主函数测试以上函数的正确性。 6
作者:陈哲第1章作业3.加法函数重载:利用函数重载实现十进制(int)、字符串(char*)、无符号二进制(structBinNum)的加法。加法函数格式为:TYPEaddTYPEn1,TYPEn2),其中TYPE为各种不同的类型。要求:(1)字符串的加法是将char*n2追加到char*n1的尾部,该功能不得使用C++的string类;(2)二进制的类型为结构体BinNum(其中包含一个字符数组),加法用BinNumadd(BinNumnl,BinNumn2)实现。编写主函数,调用这些加法并在屏幕上输出结果。例如输入:11222211abcab0011000010输出:3333,abcab,010004.字符串删除:编写一个程序,提示用户输入两个字符串,将第二个字符串中包含的字符从第一个字符串中删除。要求:编写一个字符删除函数char*remove(char*str,char*chars),用new分配新的字符数组(大小为str的长度+1),将chars中包含的字符从str中删除后存入该字符数组,并返回该字符数组。在主函数中调用该函数输出结果,并用delete释放分配的字符数组。必须用指针方式逐个访问字符数组元素,不得使用字符串库函数。例如输入:fjejfpifhjg933pakpjajf3输出:epihg9pkp
作者:陈哲 第 1 章作业 3. 加法函数重载:利用函数重载实现十进制(int)、字符串(char *)、无符号二进制(struct BinNum)的加法。加法函数格式为:TYPE add(TYPE n1, TYPE n2),其中 TYPE 为各 种不同的类型。要求:(1)字符串的加法是将 char *n2 追加到 char *n1 的尾部,该功能 不得使用 C++ 的 string 类;(2)二进制的类型为结构体 BinNum(其中包含一个字符数 组),加法用 BinNum add(BinNum n1, BinNum n2) 实现。编写主函数,调用这些加法并 在屏幕上输出结果。 例如输入:1122 2211 abc ab 00110 00010 输出:3333, abcab, 01000 4. 字符串删除:编写一个程序,提示用户输入两个字符串,将第二个字符串中包含的字符从 第一个字符串中删除。要求:编写一个字符删除函数 char *remove(char *str, char *chars), 用 new 分配新的字符数组(大小为 str 的长度 +1),将 chars 中包含的字符从 str 中删除后 存入该字符数组,并返回该字符数组。在主函数中调用该函数输出结果,并用 delete 释 放分配的字符数组。必须用指针方式逐个访问字符数组元素,不得使用字符串库函数。 例如输入:fjejfpifhjg933pakpj ajf3 输出:epihg9pkp 7