c++程序的控制结构习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cout<<endl; } for (i=line;i>0;i--){//下三角(少一行) for(j=0;j<=line-i;j++) cout<<" "; for(j=1;j<=2*i-1;j++) cout<<' '<<char(i-1+'A'); cout<<endl; } return 0; } 解法二 #include <iostream> using namespace std; void main() { char c; int i,j,k,n,&p=i; cin>>c;//输入'A'~'Z'等符号 n=c-'A'; for(i=-n;i<=n;i++){ for(j=0;j<abs(i);j++) cout<<" "; k=n-abs(i); for(j=0;j<2*k+1;j++) cout<<char('A'+k)<<' '; cout<<endl; } } 5.7 假定邮寄包裹的计费标准如下表,输入包裹重量以及邮寄距离,计算出邮资。 重量(克) 15 30 45 60 75 及以上 *重量在档次之间按高档靠 #include<iostream> using namespace std; int main(){ int s,l,w;//l 表示距离,w 表示重量 cin>>l>>w; if(w<=15)s=5; else if(w<=30)s=9; else if(w<=45)s=12; else if(w<=60)s=14+l/1000; 邮资(元/件) 5 9 12 14(每满 1000 公里加收 1 元) 15(每满 1000 公里加收 1 元)
2.简答题 2.1 C++中有什么形式的选择控制语句?归纳它们的语法形式、应用场合。根据一个实际问 题使用不同的条件语句编程。 2.2 什么叫循环控制?归纳比较 C++中各种循环控制语句的语法、循环条件和循环结束条件 的表示形式及执行流程,比较其异同点。 2.3 根据一个实际问题,用不同的循环语句编程,分析其优缺点。 3.选择题 3.1 对 if 语句中的表达式的类型,下面描述正确的是( D ) 。 A.必须是关系表达式 B.必须是关系表达式或逻辑表达式 C.必须是关系表达式或算术表达式 D.可以是任意表达式 3.2 与 for(表达式 1;表达式 2;表达式 3)功能相同的语句为( A ) 。 A.表达式 1; B.表达式 1; while(表达式 2){ while(表达式 2){ 循环体; 表达式 3; 表达式 3;} 循环体;} C.表达式 1; D.do{ do{ 表达式 1; 循环体; 循环体; 表达式 3;}while(表达式 2); 表达式 3;} while(表达式 2) 3.3 以下程序输出结果为(A) 。 void main() {
int x(1),a(0),b(0); switch(x){ case 0:b++; case 1:a++; case 2:a++;b++; } cout<<”a=”<<a<<”,b=”<<b; } A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 3.4 已知 int i=0,x=0;下面 while 语句执行时的循环次数为(D)。 while(!x && i<3) {x++;i++;} A. 4 B.3 C.2 D.1 3.5 以下形成死循环的程序段是(B )。 A. for(int x=0;x<3;){x++;}; B. int k=0; do{++k;} while(k>=0); C.int a=5;while(a){a--;}; D.int i=3;for( ; i ; i--); 3.6 已知有职工情况结构变量 emp 定义为; strnct Employee{ char name[20]; long code; struct{ int year; int month; int day; }birth; }emp; 下列对 birth 的正确赋值方法是( D)。 A.year=1980; month=5; day=1; B.birth.year=1980; birth.month=5; birthday=1; C.emp.year=1980; emp.month=5;emp.day=1; D.emp.birth.year=1980; emp.birth.month=5;emp.birth.day=l; 3.7 下面的程序段循环执行了(A)次。 int k=10; while (k=3) k=k-1; A.死循环 B.0 次 C.3 次 D.7 次 3.8 语句 while(!E) 中的表达式!E 等价于(A) 。 A.E==0 B.E!=1 C.E!=0 D.E= =1 4.写出下列程序运行结果 4.1#include <iostream.h> void main() {int a,b,c,d,x; a=c=0; b=1;d=20; if(a) d=d-10; else if(!b)
1. 概念填空题 1.1 任何算法的描述都可以分解为顺序结构、分支结构和循环结构。 顺序结构 的特点是 各块按照书写次序依次执行。 分支结构 的特点是根据条件判断选择执行路径。 循环结构 用于实现重复性动作。根据算法的 有穷性 ,循环必须在一定条件下进行,无条件必然会导 致 死循环 。 1.2 switch 语句执行流程是: ①求表达式的值,其中表达式的值只能是 整型 、字符型 、 布尔型 或 枚举型 等类型, 而不能取 实型 这样的连续值; ②在常量表达式中找与之相 等的分支作为执行入口, 并从该分支的语句序列开始执行下去, 直到遇到 break 或 switch 的结束括号“}”为止;③当表达式的值与所有常量表达式的值均不相等时,若有 default 分支, 则执行其语句序列; ④若没有该分支, 则结束 switch 语句, 继续 后续 语句的执行; 1.3 c++中提供了若干转向语句,可以改变程序原来的执行顺序。 break 语句只能用在 switch 语句和循环语句中,从该处跳出 switch 语句或循环语句,转去执行 switch 语句或 循环语句之后的语句。continue 语句只能用在 循环 中,程序执行到 continue 语句时,将 跳过其后尚未执行的循环体语句,开始 新的 循环。 return 语句用在函数中,用来返回 到函数 调用 处。 1.4 C++中的文件有两个相互联系的概念: 内部文件和外部文件。 文件通常是指 磁盘文件 , 这里称为外部文件;而在程序中运行的文件则称为 内部文件 ,更正式的名称是文件流对 象。程序中操作的是 内部文件 ,最后保存的是 外部文件 。
} cout<<b<<endl; return 0; } 5.5 编写一程序,按下列公式求 ,精确到最后一项绝对值小于 10-6。
1 1 1 1 = 4 3 5 7
(1)
i 1
n
i 1ຫໍສະໝຸດ Baidu
1 2i 1
#include<iostream> using namespace std; int main(){ double s=0,i=1; int p=1; do{ s=s+p*1/i; i+=2; p*=-1; }while(1/i>=1e-6); cout<<s<<endl; return 0; } 5.6 编程输出如下图形,中间一行英文字母由键盘输入得到。 A BBB CCCCC DDDDDDD CCCCC BBB A 解法一 #include <iostream> using namespace std; int main(){ char in; int i,j; do{ cout<<"输入一个字母:"; cin>>in; if((in>=97)&&(in<=122)) in-=32;//小写改大写 }while((in<65)||(in>90)); int line=in-'A'; for (i=0;i<=line;i++){//上三角 for(j=line-i;j>0;j--) cout<<" ";//前方空格 for(j=1;j<=2*i+1;j++) cout<<' '<<char(i+'A');
#include<iostream> using namespace std; int main(){ int i ; for(i=100;i<=200;i++) if(i%3 && i%7)cout<<i<<'\t'; return 0; } 5.2 输入一元二次方程的系数,求方程的解。 5.3 编写函数使用循环语句分别求两个数的最大公约数与最小公倍数(两个数的最大公约数 一定小于或等于较小的一个数,但大于等于 1。两个数的最小公倍数一定大于等于较大的 一个数,但小于等于两个数的积)。 #include<iostream> using namespace std; int main(){ int a,b,i; int max,min; cin>>a>>b; min=a<b? a:b; max=a>b? a:b; for(i=min;i>=1;i--)//求最大公约数 if(a%i==0 && b%i==0){ cout<<i<<'\t'; break; } for(i=max;i<=a*b;i++)//求最小公倍数 if(i%a==0 && i%b==0){ cout<<i<<'\t'; break; } return 0; } 5.4 从键盘输入一个整数,判断该数是否为回文数。所谓的回文数就是从左到右读与从右向 左读都是一样的数。例如 7887、23432 是回文数。 #include<iostream> using namespace std; int main(){ int a,b; cin>>a; b=0; for(;a;){ b=b*10+a%10; a/=10;
else s=15+l/1000; cout<<s<<endl; return 0; } 5.8 从键盘输入一组非 0 整数,以输入 0 为结束标志,求这组整数的平均值,并统计其中正数和 负数的个数。 #include<iostream> using namespace std; int main(){ int s=0,neg=0,plu=0; int n; cin>>n; while(n!=0){ s+=n; if(n>0)plu++; else neg++; cin>>n; }; cout<<"平均值= "<<s/(neg+plu)<<endl; cout<<"正数= "<<plu<<"个"<<endl; cout<<"负数= "<<neg<<"个"<<endl; return 0; } 5.9 编程求 1000 之内的所有完全数。完全数指的是一个数恰好等于它的所有因子的和。例 如 6=1+2+3, 6 就是一个完全数。 #include <iostream> using namespace std; int main(){ int i,a,sum_yz; //sum_yz是a的因子和 for(a=1;a<1000;a++){ sum_yz=0; for(i=1;i<a;i++) if (a%i==0) sum_yz+=i; //求因子运算未改变循环控制变量a的值, 否则要用另一个变量b来代替a来参加运算 if (a==sum_yz) cout<<a<<endl; } return 0; } 5.10 将 100 元换成 10 元、5 元和 1 元的组合,共有多少种组合方法? #include <iostream> using namespace std; int main(){ int i,j,k,count=0; for(i=0;i<=10;i++)//i是10元张数,j是5元张数,k是1元张数
if(!c) x=15; else x=25; cout<<d<<endl; } 20 4.2 #include <iostream.h> void main() {int a=0, b=1: switch(a) {case 0: switch(b) { case 0:cout<<”a=”<<a<<”b=”<<b<<endl; break; case 1:cout<<”a=”<<a<<”b=”<<b<<endl; break; } case 1:a++; b++; cout<<"a= “<<a<<”b=”<<b<<endl; } } a=0 b=1 a=1 b=2 4.3 #include <iostream.h> void main() {int i=1; while(i<=10) if(++i%3!=1) continue; else cout<<i<<endl; } 4 7 10 4.4 #include<iostream.h> void main() {int i,j,x=0; for(i=0;i<=3;i++) {x++; for(j=0;j<=3;j++) {if(j%2) continue; x++; } x++; } cout<<”x=”<<x<<endl; } x=16 5.编程题 5.1 求 100~200 之间不能被 3 整除也不能被 7 整除的数。