C++習(xí)題解答(第5版)_第1頁(yè)
C++習(xí)題解答(第5版)_第2頁(yè)
C++習(xí)題解答(第5版)_第3頁(yè)
C++習(xí)題解答(第5版)_第4頁(yè)
C++習(xí)題解答(第5版)_第5頁(yè)
已閱讀5頁(yè),還剩193頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C++程序設(shè)計(jì)基礎(chǔ)(第5版)(上)習(xí)題與解答第1章練習(xí)題同步練習(xí)1.1一、選擇題1.一個(gè)最簡(jiǎn)單的C++程序,可以只有一個(gè)()。(A)庫(kù)函數(shù) (B)自定義函數(shù) (C)main函數(shù) (D)空函數(shù)2.函數(shù)名是(),用于識(shí)別和調(diào)用函數(shù)。(A)關(guān)鍵字 (B)標(biāo)識(shí)符 (C)常數(shù) (D)語(yǔ)句3.用C++語(yǔ)言編寫(xiě)的源程序要成為目標(biāo)程序必須要經(jīng)過(guò)()。(A)解釋 (B)匯編 (C)編輯 (D)編譯4.C++程序中的簡(jiǎn)單語(yǔ)句必須以()結(jié)束。(A)冒號(hào) (B)分號(hào) (C)空格 (D)花括號(hào)5.程序中把表達(dá)式“a+0.5”寫(xiě)為“a*0.5”,是()錯(cuò)誤。(A)編譯 (B)連接 (C)運(yùn)行 (D)邏輯【解答】 C B D B D二、程序練習(xí)用一個(gè)簡(jiǎn)單問(wèn)題,練習(xí)程序的書(shū)寫(xiě)格式。(1)問(wèn)題輸入一個(gè)攝氏溫度值,轉(zhuǎn)換輸出華氏溫度值。轉(zhuǎn)換公式為:式中,F(xiàn)是華氏溫度值,C是攝氏溫度值。想一想,應(yīng)該如何正確把轉(zhuǎn)換公式寫(xiě)成C++表達(dá)式。(2)分析首先,分析本問(wèn)題需要的數(shù)據(jù)表示和數(shù)據(jù)處理。數(shù)據(jù): 攝氏溫度C,華氏溫度F。處理: 輸入C; 計(jì)算F; 輸出C和F。然后,逐步細(xì)化:①說(shuō)明變量C和F;②顯示提示輸入攝氏溫度值的信息;③從鍵盤(pán)輸入C的值;④通過(guò)轉(zhuǎn)換公式計(jì)算F的值;⑤以清晰的說(shuō)明輸出C和F。(3)編寫(xiě)代碼簡(jiǎn)單程序語(yǔ)法格式:程序與外部連接表示主函數(shù)程序中需要連接系統(tǒng)的輸入/輸出流類(lèi)庫(kù)。使用VC2010,要用宏指令包含頭文件,使用標(biāo)準(zhǔn)名空間的using語(yǔ)句。主函數(shù)定義包括函數(shù)頭和函數(shù)體。程序框架:#include<iostream>usingnamespacestd;intmain(){//語(yǔ)句序列}根據(jù)以上分析寫(xiě)出一個(gè)完整的程序,并在集成開(kāi)發(fā)環(huán)境編譯執(zhí)行。運(yùn)行結(jié)果如下:請(qǐng)輸入攝氏溫度C:26.5攝氏溫度C=26.5華氏溫度F=79.7【解答】#include<iostream>usingnamespacestd;intmain(){ doubleC,F; cout<<"請(qǐng)輸入攝氏溫度C:\n"; cin>>C; F=(9.0/5)*C+32; cout<<"攝氏溫度C="<<C<<endl; cout<<"華氏溫度F="<<F<<endl;}想一想把程序中的語(yǔ)句 F=(9.0/5)*C+32;改為 F=(9/5)*C+32;測(cè)試一下,程序計(jì)算結(jié)果將會(huì)有什么錯(cuò)誤?想想為什么?同步練習(xí)1.21.在下列選項(xiàng)中,全部都是C++關(guān)鍵字的選項(xiàng)為()。(A)whileIFStatic (B)breakchargo(C)sizeofcaseextern (D)switchfloatinteger2.按C++標(biāo)識(shí)符的語(yǔ)法規(guī)定,合法的標(biāo)識(shí)符是()。(A)_abc (B)new (C)π (D)"age"3.在C++語(yǔ)句中,兩個(gè)標(biāo)識(shí)符之間()不能作為C++的分隔符。(A)數(shù)字 (B); (C): (D)+4.可以用于命名變量的標(biāo)識(shí)符是()。(A)3x (B)const (C)name_2 (D)5.說(shuō)明變量a是整型變量的正確語(yǔ)句是()。(A)inta; (B)inta; (C)Inta; (D)INTa;【解答】 C A A C A同步練習(xí)1.3一、選擇題1.下列正確的八進(jìn)制整型常量表示是()。(A)0a0 (B)015 (C)080 (D)0x102.下列錯(cuò)誤的十六進(jìn)制整型常量表示是()。(A)0x11 (B)0xaf (C)0xg (D)0x1f3.在下列選項(xiàng)中,全部都合法的浮點(diǎn)型數(shù)據(jù)的選項(xiàng)為()。(A)-1e3.515.2e-4 (B)12.34-1e+50.1E-12(C)0.2e-2-12345.e-5 (D)5.0e(1+4)0.18e+24.在下列選項(xiàng)中,正確的字符常量為()。(A)"a" (B)'name' (C)a (D)'\101'5.下列選項(xiàng)中,結(jié)果等于false的是()。(A)1<3 (B)1=3 (C)1==3 (D)1!=3【解答】 B C B D C二、程序練習(xí)sizeof運(yùn)算可以求一個(gè)數(shù)據(jù)或數(shù)據(jù)類(lèi)型所要求的字節(jié)數(shù)。例如:sizeof(int) 結(jié)果為4sizeof(3.14) 結(jié)果為8編寫(xiě)程序,顯示以下數(shù)據(jù)類(lèi)型要求的字節(jié)數(shù):charshortintintlongintdoublelongdouble【解答】#include<iostream>usingnamespacestd;intmain(){ cout<<"sizeof(char)="<<sizeof(char)<<endl; cout<<"sizeof(shortint)="<<sizeof(shortint)<<endl; cout<<"sizeof(int)="<<sizeof(int)<<endl; cout<<"sizeof(longint)="<<sizeof(longint)<<endl; cout<<"sizeof(double)="<<sizeof(double)<<endl; cout<<"sizeof(longdouble)="<<sizeof(longdouble)<<endl;}同步練習(xí)1.4一、選擇題1.在下列語(yǔ)句選項(xiàng)中,()不能交換變量a和b的值。(A)t=b;b=a;a=t; (B)a=a+b;b=a-b;a=a–b;(C)t=a;a=b;b=t; (D)a=b;b=a;2.關(guān)于下列語(yǔ)句,敘述錯(cuò)誤的是()。inti=10,p=&i;(A)p的值為10 (B)p指向整型變量i(C)p表示變量i的值 (D)p的值是變量i的地址3.有以下變量說(shuō)明,下面不正確的賦值語(yǔ)句是()。inta=5,b=10,c;intp1=&a,p2=&b;(A)p2=b; (B)p1=a;(C)p2=p1; (D)c=p1(p2);4.有以下變量說(shuō)明,下面正確的語(yǔ)句是()。inta=10,b;int&pa=a,&pb=b;(A)&pb=a; (B)pb=pa; (C)pb=&pa; (D)pb=pa;5.執(zhí)行下面語(yǔ)句序列后,a和b的值分別為()。inta=5,b=3,t;int&ra=a;int&rb=b;t=ra;ra=rb;rb=t;(A)3和3 (B)3和5 (C)5和3 (D)5和5【解答】 D A B B B二、程序練習(xí)閱讀以下程序,分析下面語(yǔ)句序列中每個(gè)字符“”和“&”的含義,并寫(xiě)出輸出結(jié)果。#include<iostream>usingnamespacestd;intmain(){inta=10,b=20;int*p=&a,*q=&b;*p=*p**q;int&ra=a;ra=a;int*&rt=q;*rt=30;cout<<"a="<<a<<"\nb="<<b<<"\n*p="<<*p<<"\n*q="<<*q<<"\nra="<<ra<<"\n*rt="<<*rt<<endl;}【解答】intmain(){inta=10,b=20;intp=&a,q=&b; //*為指針類(lèi)型說(shuō)明符,&是取址運(yùn)算符p=pq; //第1、2、4個(gè)*為間址運(yùn)算符,第3個(gè)是算數(shù)乘運(yùn)算符int&ra=a; //&是引用說(shuō)明符ra=a;int&rt=q; //*指針說(shuō)明符,&引用說(shuō)明符rt=30; //*間址運(yùn)算符//字符串中的*是字符,其他是間址運(yùn)算符cout<<"a="<<a<<"\nb="<<b<<"\np="<<p<<"\nq="<<q<<"\nra="<<ra<<"\nrt="<<rt<<endl;}程序運(yùn)行結(jié)果:同步練習(xí)1.5一、選擇題1.假設(shè)有說(shuō)明inta=0;doublex=5.16;則在以下語(yǔ)句中,()屬于編譯錯(cuò)誤。(A)x=a/x; (B)x=x/a; (C)a=a%x; (D)x=xa;2.在下列運(yùn)算符中,()優(yōu)先級(jí)最高。(A)<= (B)= (C)+ (D)3.在下列運(yùn)算符中,()優(yōu)先級(jí)最低。(A)! (B)&& (C)!= (D)?:4.已知inti=1,j=2;則表達(dá)式i+++j的值為()。(A)1 (B)2 (C)3 (D)45.已知inti=1,j=2;則表達(dá)式++i+j的值為()。(A)1 (B)2 (C)3 (D)46.在下列表達(dá)式選項(xiàng)中,()是正確。(A)++(a++) (B)a++b (C)a+++b (D)a++++b7.已知inti=0,j=1,k=2;則邏輯表達(dá)式++i||--j&&++k的值為()。(A)0 (B)1 (C)2 (D)38.執(zhí)行下列語(yǔ)句后,x和y的值是()。intx,y;x=y=1;++x||++y;(A)1和1 (B)1和2 (C)2和1 (D)2和29.設(shè)x為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系1<x<5的C++邏輯表達(dá)式是()。(A)1<x<5 (B)x==2||x==3||x==4(C)1<x&&x<5 (D)!(x<=1)&&!(x>=5)10.已知intx=5;執(zhí)行下列語(yǔ)句后,x的值為()。x+=x-=xx;(A)25 (B)40 (C)–40 (D)2011.設(shè)inta=1,b=2,c=3,d=4;則以下條件表達(dá)式的值為()。a<b?a:c<d?c:d(A)1 (B)2 (C)3 (D)412.以下逗號(hào)表達(dá)式的值為()。(x=45,x5),x+25(A)25 (B)20 (C)100 (D)45【解答】 C D D C D C B C A C A D二、書(shū)寫(xiě)表達(dá)式1.根據(jù)算術(shù)式寫(xiě)C++算術(shù)表達(dá)式。(1) (2)x{x[x(ax+b)+c]+d}+e (3)ln(4) (5)cot (6)lg(a2+ab+b2)【解答】1.1/(1+1/(1+1/(x+y)))2.x*(x*(x*(a*x+b)+c)+d)+e3.log(1+pow(fabs((a+b)/(a–b)),10)4.sqrt(1+3.14159/2*cos(48*3.14159/180))5.1/tan((1-x*x)/(1+x*x))或者cos((1-x*x)/(1+x*x))/sin((1-x*x)/(1+x*x))6.log10(a*a+a*b+b*b)2.書(shū)寫(xiě)描述以下條件成立的C++邏輯表達(dá)式。(1)i被j整除 (2)n是小于k的偶數(shù)(3)1≤x<10 (4)x、y其中有一個(gè)小于z(5)y[–100,–10],并且y[10,100](6)坐標(biāo)點(diǎn)(x,y)落在以(10,20)為圓心,以35為半徑的圓內(nèi)(7)三條邊a、b和c構(gòu)成三角形(8)年份Year能被4整除,但不能被100整除,或者能被400整除【解答】1.i%j==0 2.(n<k)&&(n%2==0)3.1<=x&&x<10 4.x<z||y<z5.!(y>=-100&&y<=-10)&&!(y>=10&&y<=100)6.sqrt(pow((x-10),2)+pow((y-20),2))<357.a+b>c&&b+c>a&&c+a>b8.(year%4==0)&&(year%100!=0)||(year%400==0)三、程序練習(xí)1.閱讀下列程序,寫(xiě)出運(yùn)行結(jié)果。#include<iostream>usingnamespacestd;intmain(){inta=1,b=2;boolx,y;cout<<(a++)+(++b)<<endl;cout<<a%b<<endl;x=!a>b;y=a--&&b;cout<<x<<endl;cout<<y<<endl;}【解答】 2.閱讀下列程序,寫(xiě)出運(yùn)行結(jié)果。#include<iostream>usingnamespacestd;intmain(){intx,y,z,f;x=y=z=1;f=--x||y--&&z++;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"z="<<z<<endl;cout<<"f="<<f<<endl;}【解答】3.編寫(xiě)一個(gè)程序。要求從鍵盤(pán)輸入4個(gè)小于100的正整數(shù),并打印輸出它們的和、平均值、乘積、最小值和最大值。整數(shù)的平均值不一定是整數(shù),注意程序中應(yīng)做什么處理。【解答】#include<iostream>usingnamespacestd;intmain(){ inta,b,c,d,sum,pro,min,max; doubleave; cout<<"Inputfourdifferentintegers(<100):"; cin>>a>>b>>c>>d; sum=a+b+c+d; ave=sum/4.0; pro=a*b*c*d; max=a>b?(a>c?(a>d?a:d):(c>d?c:d)):(b>c?(b>d?b:d):(c>d?c:d)); min=a<b?(a<c?(a<d?a:d):(c<d?c:d)):(b<c?(b<d?b:d):(c<d?c:d)); cout<<"Sumis"<<sum<<endl; cout<<"Averageis"<<ave<<endl; cout<<"Productis"<<pro<<endl; cout<<"Smallestis"<<min<<endl; cout<<"Largestis"<<max<<endl; system("pause");}同步練習(xí)1.6一、選擇題1.控制臺(tái)程序中需要使用cin和cout輸出/輸入,因此include指令包含的頭文件是()。(A)cmanth (B)conio.h (C)iostream (D)iomanip2.使用標(biāo)準(zhǔn)命名空間的語(yǔ)句是()。(A)usingnamespacestd; (B)usingnamespaceiostream;(C)includestd; (D)includeiostream;3.有語(yǔ)句doublex,y;以下正確的輸入語(yǔ)句是()。(A)cin<<x,y; (B)cin<<x+y; (C)cin<<x<<y<<endl; (D)cin<<x<<y;4.有語(yǔ)句inta=1,b=2;以下正確的輸出語(yǔ)句是()。(A)cout<<a=a+b<<endl; (B)cout<<a>b?a:b<<endl;(C)cout<<(hex)a+b; (D)cout<<&a<<endl<<a<<endl;5.以輸出寬度為8輸出變量x值的語(yǔ)句是()。(A)cout<<setw(8)<<x<<endl; (B)cout<<oct<<x<<endl;(C)cout<<setprecision(8)<<x<<endl; (D)cout<<setfill(8)<<x<<endl;【解答】 C A D D A二、程序練習(xí)1.閱讀程序,寫(xiě)運(yùn)行結(jié)果。#include<iostream>#include<iomanip>usingnamespacestd;intmain(){inta=123;int&ra=a;int*pa=&a;cout<<setw(5)<<dec<<a<<setw(5)<<oct<<ra<<setw(5)<<hex<<*pa<<endl;}【解答】 2.編寫(xiě)一個(gè)程序,計(jì)算0~10整數(shù)的平方和立方,然后用制表符整齊格式顯示數(shù)值表。【解答】#include<iostream>usingnamespacestd;intmain(){cout<<"integer"<<'\t'<<"square"<<'\t'<<"cube"<<endl;inta=0;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;++a;cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl;system("pause");}想一想程序中的10個(gè)輸出操作模式都是相同的,只是每次操作變量a的值增加了1。如何簡(jiǎn)化這種程序代碼呢?綜合練習(xí)一、思考題1.什么叫數(shù)據(jù)類(lèi)型?變量的類(lèi)型定義有什么作用?【解答】數(shù)據(jù)“類(lèi)型”是對(duì)數(shù)據(jù)的抽象。類(lèi)型相同的數(shù)據(jù)有相同的表示形式、存儲(chǔ)格式以及相關(guān)的操作。定義一個(gè)變量時(shí),計(jì)算機(jī)根據(jù)變量的類(lèi)型分配存儲(chǔ)空間,并以該類(lèi)型解釋存放的數(shù)據(jù)。2.普通數(shù)據(jù)類(lèi)型變量和指針類(lèi)型變量的定義、存儲(chǔ)、使用方式上有何區(qū)別?請(qǐng)編寫(xiě)一個(gè)程序驗(yàn)證之?!窘獯稹孔兞款?lèi)型定義存儲(chǔ)使用方式數(shù)據(jù)類(lèi)型標(biāo)識(shí)符數(shù)據(jù)值通過(guò)名訪(fǎng)問(wèn)即直接訪(fǎng)問(wèn)對(duì)變量?jī)?nèi)容操作指針類(lèi)型*標(biāo)識(shí)符地址值通過(guò)指針變量的地址值間址訪(fǎng)問(wèn)對(duì)象驗(yàn)證程序:#include<iostream>usingnamespacestd;intmain(){inta,b,c;cout<<"a,b,c=";cin>>a>>b>>c; //對(duì)普通數(shù)據(jù)類(lèi)型變量賦值int*pa=&a,*pb=&b,*pc=&c; //用變量地址值初始化指針變量cout<<"a,b,c="<<a<<","<<b<<","<<c<<endl; //名訪(fǎng)問(wèn),輸出a,b,c的值cout<<"pa,pb,pc="<<pa<<","<<pb<<","<<pc<<endl;//輸出指針變量的地址值//間址訪(fǎng)問(wèn),輸出pa,pb,pc指向的變量的賦值cout<<"*pa,*pb,*pc="<<*pa<<","<<*pb<<","<<*pc<<endl;}3.什么叫數(shù)據(jù)對(duì)象的引用?對(duì)象的引用和對(duì)象的指針有什么區(qū)別?請(qǐng)用一個(gè)驗(yàn)證程序說(shuō)明之?!窘獯稹恳檬菫閿?shù)據(jù)對(duì)象定義別名。引用與指針有以下幾點(diǎn)區(qū)別:(1)引用名不是內(nèi)存變量,而指針變量要開(kāi)辟內(nèi)存空間。(2)引用名需要在變量定義與變量名綁定,并且不能重定義;指針變量可以在程序中賦給不同的地址值,改變指向。(3)程序中用變量名和引用名訪(fǎng)問(wèn)對(duì)象的形式和效果一樣;指針變量通過(guò)間址訪(fǎng)問(wèn)對(duì)象。驗(yàn)證程序:#include<iostream>usingnamespacestd;intmain(){inta;cout<<"a=";cin>>a;intra=a;int*pa=&a;cout<<"a的值:"<<a<<endl;cout<<"a的地址:"<<&a<<endl;cout<<"ra的值:"<<ra<<endl;cout<<"ra的地址:"<<&ra<<endl;cout<<"pa所指向的變量的值:"<<*pa<<endl;cout<<"pa的地址:"<<pa<<endl;}4.?dāng)?shù)據(jù)對(duì)象在C++中有什么不同的訪(fǎng)問(wèn)方式?請(qǐng)編寫(xiě)一個(gè)程序驗(yàn)證之?!窘獯稹繑?shù)據(jù)對(duì)象在C++中的訪(fǎng)問(wèn)方式有:名訪(fǎng)問(wèn),引用(別名)訪(fǎng)問(wèn),間址訪(fǎng)問(wèn)。驗(yàn)證程序:#include<iostream>usingnamespacestd;intmain(){inta;cout<<"a=";cin>>a;a=a+5; //名訪(fǎng)問(wèn)cout<<&a<<endl; //輸出變量地址cout<<*(&a)<<endl; //地址訪(fǎng)問(wèn),輸出變量值int*pa=&a; //說(shuō)明指針變量,指向變量acout<<*pa<<endl; //間址訪(fǎng)問(wèn),輸出變量值int&ra=a; //ra是a的引用cout<<ra<<endl; //引用訪(fǎng)問(wèn),輸出變量a的值}5.為了約束對(duì)數(shù)據(jù)對(duì)象的值做只讀操作,C++采用什么方式?請(qǐng)給出簡(jiǎn)要?dú)w納?!窘獯稹考s束數(shù)據(jù)對(duì)象只讀形式如下:約束對(duì)象說(shuō)明形式標(biāo)識(shí)常量const類(lèi)型常量標(biāo)識(shí)符=常量表達(dá)式;指針常量類(lèi)型*const指針;指向常量的指針const類(lèi)型*指針;或者類(lèi)型const*指針;指向常量的指針常量const類(lèi)型*const指針;或者類(lèi)型const*const指針;常引用const類(lèi)型&引用名=對(duì)象名;圖1.11方塊區(qū)域6.什么叫表達(dá)式?表達(dá)式值的類(lèi)型由什么因素決定?使用不同運(yùn)算符連接以下三個(gè)變量,請(qǐng)寫(xiě)出5圖1.11方塊區(qū)域inta=1,b=2;doublex=0.5;【解答】表達(dá)式是由數(shù)據(jù)和運(yùn)算符,按求值規(guī)則,表達(dá)一個(gè)值的式子。表達(dá)式值的類(lèi)型的決定因素為操作數(shù)的類(lèi)型。(1)如果運(yùn)算符左右操作數(shù)類(lèi)型相同,運(yùn)算結(jié)果也是相同類(lèi)型。(2)如果運(yùn)算符左右操作數(shù)類(lèi)型不同,首先把類(lèi)型較低(存儲(chǔ)要求,示數(shù)能力較低)的數(shù)據(jù)轉(zhuǎn)換成類(lèi)型較高的數(shù)據(jù),然后運(yùn)算。(3)賦值表達(dá)式的類(lèi)型由被賦值變量的類(lèi)型決定。當(dāng)把一個(gè)表達(dá)式的值賦給一個(gè)變量時(shí),系統(tǒng)首先強(qiáng)制把運(yùn)算值轉(zhuǎn)換成變量的類(lèi)型,然后執(zhí)行寫(xiě)操作。6個(gè)值等于true的表達(dá)式:(1)b>a&&a>x (2)(a+b)!=x (3)a||(b+x)(4)a==(b*x) (5)a-b<x (6)(a/x==b)二、程序設(shè)計(jì)1.輸入平面上某點(diǎn)橫坐標(biāo)x和縱坐標(biāo)y,若該點(diǎn)在如圖1.11所示的方塊區(qū)域內(nèi),則輸出true;否則,輸出false。【解答】#include<iostream>usingnamespacestd;intmain(){ doublex,y; boolb; cout<<"pleaseinputx,y:\n"; cin>>x>>y; b=(-2<=x)&&(x<=2)&&(-2<=y)&&(y<=2); if(b) cout<<"true"<<endl; else cout<<"false"<<endl; }2.輸入三個(gè)整數(shù),求出其中最小數(shù)(要求使用條件表達(dá)式)?!窘獯稹?include<iostream>usingnamespacestd;intmain(){inta,b,c,temp,min;cout<<"pleaseinputa,b,c:";cin>>a>>b>>c;temp=(a<b)?a:b;min=(temp<c)?temp:c;cout<<"min="<<min<<endl;}3.編寫(xiě)一個(gè)程序。要求輸入一個(gè)5位正整數(shù),然后分解出它的每位數(shù)字,并將這些數(shù)字按間隔2個(gè)空格的逆序形式打印輸出。例如,用戶(hù)輸入42339,則程序輸出如下結(jié)果:93324【解答】#include<iostream>usingnamespacestd;intmain(){intt;cout<<"Inputoneintegerfor5bit:";cin>>t;cout<<t%10<<""<<t/10%10<<""<<t/100%10<<""<<t/1000%10<<""<<t/10000<<endl;}第2章練習(xí)題同步練習(xí)2.1一、選擇題1.已知inti=0,x=1,y=0;在下列選項(xiàng)中,使i的值變成1的語(yǔ)句是()。(A)if(x&&y)i++; (B)if(x==y)i++;(C)if(x||y)i++; (D)if(!x)i++;2.已知inti=0,x=1,y=0;在下列選項(xiàng)中,使i的值變成1的語(yǔ)句是()。(A)if(x){if(y)i=1;elsei=0;} (B)if(x){if(y)i=1;}elsei=0;(C)if(x)i=0;else{if(y)i=1;} (D)if(x)i=1;else{if(y)i=0;}3.設(shè)有函數(shù)關(guān)系為y=,在下列選項(xiàng)中,能正確表示上述關(guān)系的是()。(A)y=1;if(x>=0)if(x==0)y=0;elsey=-1;(B)y=-1;if(x!=0)if(x>0)y=1;elsey=0(C)if(x<=0)if(x<0)y=-1;elsey=0;elsey=1;(D)y=-1;if(x<=0)if(x<0)y=-1;elsey=0;4.設(shè)i=2,執(zhí)行下列語(yǔ)句后i的值為()。switch(i){case1:i++;case2:i--;case3:++i;break;case4:--i;default:i++;}(A)1 (B)2 (C)3 (D)45.執(zhí)行下列語(yǔ)句后,輸出顯示為()。charch='A';switch(ch){case'A':ch++;case'B':ch++;case'C':ch++;}cout<<ch<<endl;(A)A (B)B (C)C (D)D【解答】C D C B D二、程序練習(xí)1.閱讀程序,寫(xiě)出運(yùn)行結(jié)果。#include<iostream>usingnamespacestd;intmain(){inta,b,c,d,x;a=c=0;b=1;d=20;if(a)d=d-10;elseif(!b)if(!c)x=15;elsex=25;cout<<d<<endl;}【解答】2.閱讀程序,寫(xiě)出運(yùn)行結(jié)果。#include<iostream>usingnamespacestd;intmain(){inta=0,b=1;switch(a){case0:switch(b){case0:cout<<"a="<<a<<"b="<<b<<endl;break;case1:cout<<"a="<<a<<"b="<<b<<endl;break;}case1:a++;b++;cout<<"a="<<a<<"b="<<b<<endl;}}【解答】 3.輸入一個(gè)正整數(shù),使用if語(yǔ)句,判斷它的奇偶性?!窘獯稹?include<iostream>usingnamespacestd;intmain(){ inta; cout<<"請(qǐng)輸入一個(gè)正整數(shù):"; cin>>a; if(a%2) cout<<"這是一個(gè)奇數(shù)!"<<endl; else cout<<"這是一個(gè)偶數(shù)!"<<endl;} 4.輸入三角形的三條邊,判別它們能否形成三角形,若能,則判斷是等邊、等腰、還是一般三角形?!窘獯稹?include<iostream>usingnamespacestd;intmain(){doublea,b,c;cout<<"a,b,c=";cin>>a>>b>>c;if(a+b>c&&b+c>a&&c+a>b){if(a==b&&b==c) cout<<"等邊三角形!"<<endl; elseif(a==b||a==c||b==c)cout<<"等腰三角形!"<<endl; elsecout<<"一般三角形!"<<endl;} elsecout<<"不能形成三角形!"<<endl;}5.用case語(yǔ)句代替if語(yǔ)句,修改第3題的程序,判斷輸入正整數(shù)的奇偶性。【解答】#include<iostream>usingnamespacestd;intmain(){ inta; cout<<"請(qǐng)輸入一個(gè)正整數(shù):"; cin>>a; switch(a%2) { case1:cout<<"這是一個(gè)奇數(shù)!"<<endl; break; case0:cout<<"這是一個(gè)偶數(shù)!"<<endl; }}6.輸入百分制成績(jī),并把它轉(zhuǎn)換成五級(jí)分制,并顯示轉(zhuǎn)換結(jié)果。要求用case語(yǔ)句編程。轉(zhuǎn)換公式為:AA(優(yōu)秀)90~100B(良好)80~89C(中等)70~79D(合格)60~69E(不合格0~59grade(級(jí)別)=grade(級(jí)別)=想一想,若用if語(yǔ)句進(jìn)行成績(jī)判斷,本程序應(yīng)該如何改寫(xiě)?請(qǐng)你試一試?!窘獯稹?include<iostream>usingnamespacestd;intmain(){doublescore;chargrade;cout<<"score=";cin>>score;if(score>=0&&score<=100){switch(int(score)/10){case10:case9:grade='a';break;case8:grade='b';break;case7:grade='c';break;case6:grade='d';break;case5:case4:case3:case2:case1:case0:grade='e';break;}}else{cout<<"數(shù)據(jù)輸入錯(cuò)誤!"<<endl;gotoend;}cout<<grade<<endl;end:;//分號(hào)不能省}同步練習(xí)2.2一、選擇題1.已知inti=0,x=0;在下面while語(yǔ)句執(zhí)行時(shí)循環(huán)次數(shù)為()。while(!x&&i<3){x++;i++;}(A)4 (B)3 (C)2 (D)12.已知inti=3;在下面do-while語(yǔ)句執(zhí)行時(shí)的循環(huán)次數(shù)為()。do{i--;cout<<i<<endl;}while(i!=1);(A)1 (B)2 (C)3 (D)無(wú)限3.下面for語(yǔ)句執(zhí)行時(shí)的循環(huán)次數(shù)為()。inti,j;for(i=0,j=5;i=j;){cout<<i<<j<<ndl;i++;j--;}(A)0 (B)5 (C)10 (D)無(wú)限4.以下程序段形成死循環(huán)的是()。(A)intx;for(x=0;x<3;){x++;};(B)intk=0;do{++k;}while(k>=0);(C)inta=5;while(a){a--;};(D)inti=3;for(;i;i--);5.執(zhí)行以下程序段后,x的值是()。inti,j,x=0;for(i=0;i<=3;i++){x++;for(j=0;j<=3;j++){if(j)continue;x++;}}(A)8 (B)12 (C)14 (D)16【解答】 D B B B A二、程序練習(xí)1.閱讀程序,寫(xiě)出運(yùn)行結(jié)果。(1)#include<iostream>usingnamespacestd;intmain(){inti=1;while(i<=10){if(++i%3!=1)continue;elsecout<<i<<endl;}}【解答】(2)#include<iostream>usingnamespacestd;intmain(){inti=0,j=5;do{i++;j--;if(i>3)break;}while(j>0);cout<<"i="<<i<<endl<<"j="<<j<<endl;}【解答】 (3)#include<iostream>usingnamespacestd;intmain(){inti,j;for(i=1,j=5;i<j;i++)j--;cout<<i<<'\t'<<j<<endl;}【解答】 (4)#include<iostream>usingnamespacestd;intmain(){inti,s=0;for(i=0;i<5;i++)switch(i){case0:s+=i;break;case1:s+=i;break;case2:s+=i;break;default:s+=2;}cout<<"s="<<s<<endl;}【解答】 (5)#include<iostream>usingnamespacestd;intmain(){inti,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;}【解答】 2.修改同步練習(xí)2.1程序練習(xí)第4題中判斷三角形的程序,使其可以完成多次測(cè)試。程序要求用戶(hù)應(yīng)答,若輸入Y或y,程序可以繼續(xù)運(yùn)行,若輸入N或n,程序結(jié)束運(yùn)行。要求分別用while語(yǔ)句構(gòu)造循環(huán)和用do-while語(yǔ)句構(gòu)造循環(huán)編寫(xiě)程序?!窘獯?1】#include<iostream>usingnamespacestd;intmain(){ doublea,b,c; charanswer; while(1) { cout<<"測(cè)試三角形嗎?"; cin>>answer; if(answer=='Y'||answer=='y') { cout<<"a,b,c="; cin>>a>>b>>c; if(a+b>c&&b+c>a&&c+a>b) { if(a==b&&b==c) cout<<"等邊三角形!"<<endl; else if(a==b||a==c||b==c) cout<<"等腰三角形!"<<endl; else cout<<"一般三角形!"<<endl; } else cout<<"不能形成三角形!"<<endl; } else { cout<<"測(cè)試結(jié)束!"; return0; } }}【解答-2】#include<iostream>usingnamespacestd;intmain(){ doublea,b,c; charanswer; do { cout<<"測(cè)試三角形嗎?"; cin>>answer; if(answer=='Y'||answer=='y') { cout<<"a,b,c="; cin>>a>>b>>c; if(a+b>c&&b+c>a&&c+a>b) { if(a==b&&b==c) cout<<"等邊三角形!"<<endl; else if(a==b||a==c||b==c) cout<<"等腰三角形!"<<endl; else cout<<"一般三角形!"<<endl; } else cout<<"不能形成三角形!"<<endl; } else { cout<<"測(cè)試結(jié)束!"; } }while(answer=='Y'||answer=='y');}3.編寫(xiě)程序,計(jì)算0到10整數(shù)的平方和立方,然后用制表符整齊格式顯示數(shù)值表。【解答】#include<iostream>usingnamespacestd;intmain(){ cout<<"integer"<<'\t'<<"square"<<'\t'<<"cube"<<endl;inta=0; for(a=1;a<=10;a++) { cout<<a<<'\t'<<a*a<<'\t'<<a*a*a<<endl; }}4.編寫(xiě)程序,顯示由符號(hào)組成的三角形圖案。要求程序運(yùn)行后由用戶(hù)應(yīng)答。輸出星號(hào)三角形的程序運(yùn)行效果如下:Howmanylines? 5Whatcharacter? **************************【解答】#include<iostream>usingnamespacestd;intmain(){ inti,j,k,n; charch; cout<<"Howmanylines?\t"; cin>>n; cout<<"Whatcharacter?\t"; cin>>ch; for(i=1;i<=n;i++){ for(k=1;k<=n-i;k++)cout<<""; for(j=1;j<=2*i-1;j++)cout<<ch; cout<<endl;}}5.編寫(xiě)程序,在100~200之間找出滿(mǎn)足用3除余2,用5除余3和用7除余2的所有整數(shù)?!窘獯稹?include<iostream>usingnamespacestd;intmain(){inti;for(i=100;i<=200;i++){if((i%3==2)&&(i%5==3)&&(i%7==2)) cout<<i<<endl;}}同步練習(xí)2.3一、選擇題1.有“if<邏輯表達(dá)式><語(yǔ)句>;”,當(dāng)整型變量a和b的值都不等于0時(shí)執(zhí)行<語(yǔ)句>,則邏輯表達(dá)式是()。(A)a&b (B)a&&b (C)a!=b (D)a-b!=02.有“if<邏輯表達(dá)式><語(yǔ)句>;”,當(dāng)整型變量a、b的值相等時(shí)執(zhí)行<語(yǔ)句>,則邏輯表達(dá)式是()。(A)a=b (B)a!=b (C)a-b (D)!(a-b)3.有語(yǔ)句for(inti=1;i<=10;i++)if(!(i%3))cout<<i<<"";輸出結(jié)果是()。(A)123 (B)1245 (C)369 (D)4564.有語(yǔ)句inti=5,sum=0;while(i--){sum+=i%2;}循環(huán)結(jié)束后,sum的值等于()。(A)2 (B)3 (C)4 (D)55.有語(yǔ)句inta=5,b=1;while(a-b) {a--;b++;}循環(huán)體執(zhí)行的次數(shù)是()。(A)1 (B)2 (C)3 (D)4【解答】 B D C A B二、程序練習(xí)設(shè)計(jì)程序,從鍵盤(pán)輸入一系列數(shù)據(jù),直到按Ctrl+Z組合鍵結(jié)束輸入,然后顯示輸入的非0數(shù)據(jù)的個(gè)數(shù)及這些數(shù)據(jù)之和。【解答】#include<iostream>usingnamespacestd;intmain(){intn=0,k,sum=0;cout<<"inputdata,endinCtrl-Z:\n";while(cin>>k) { if(k) { n++; sum+=k; } } cout<<"n="<<n<<"\nsum="<<sum<<endl;}同步練習(xí)2.4一、選擇題1.以下程序段輸出結(jié)果是()。inti,n=0;for(i=0;i<10;i++){if(i%3)break;n++;}cout<<n<<endl;(A)1 (B)2 (C)3 (D)42.以下程序段輸出結(jié)果是()。inti,n=0;for(i=0;i<10;i++){if(i%3)continue;n++;}cout<<n<<endl;(A)1 (B)2 (C)3 (D)43.以下程序段輸出結(jié)果是()。inti,n=0;for(i=0;i<10;i++){if(i>2)gotoout;n++;}out:cout<<n<<endl;(A)1 (B)2 (C)3 (D)4【解答】 A D C二、程序練習(xí)編寫(xiě)程序,輸出小于結(jié)果50000正整數(shù)的階乘值。想一想,若用while(1){

}構(gòu)造循環(huán),循環(huán)條件是什么?有什么方法可以結(jié)束循環(huán)?【解答】#include<iostream>usingnamespacestd;voidmain(){ inti=1,n=1;cout<<"n\tn!\n";while(1) { n*=i; cout<<i<<'\t'<<n<<endl; i++; if(n>50000)return; }}綜合練習(xí)一、思考題1.C++語(yǔ)言中有什么形式的選擇控制語(yǔ)句?歸納它們的語(yǔ)法形式、應(yīng)用場(chǎng)合。根據(jù)一個(gè)實(shí)際問(wèn)題使用不同的條件語(yǔ)句編程。【解答】語(yǔ)句使用方式使用場(chǎng)合if語(yǔ)句if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;需要對(duì)給定的條件進(jìn)行判斷,并根據(jù)判斷的結(jié)果選擇不同的操作。適用于復(fù)雜的條件表達(dá)式判斷。switch語(yǔ)句switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1;case常量表達(dá)式2:語(yǔ)句2;……case常量表達(dá)式n;語(yǔ)句n;[default:語(yǔ)句n+1;]}根據(jù)整型表達(dá)式的不同值決定程序分支的情況。適用于判斷表達(dá)式簡(jiǎn)單,需要多個(gè)分支處理的情況。 演示程序: 程序(1)//此程序用if輸出等級(jí)對(duì)應(yīng)的分?jǐn)?shù)段//A->=90,B-(90,80],C-(80,70],D-(70,60],E-<60#include<iostream>usingnamespacestd;intmain(){chargd;cout<<"Enterthegrade:";cin>>gd;//直到輸入有效等級(jí),否則程序不繼續(xù)運(yùn)行while(!((gd>='A'&&gd<='E')||(gd>='a'&&gd<='e'))){cout<<"Invalidgrade!Pleaseretry:";cin>>gd;}if(gd=='A'||gd=='a')cout<<"\nScored90-100!\n"; elseif(gd=='B'||gd=='b')cout<<"\nScored80-89!\n";elseif(gd=='C'||gd=='c')cout<<"\nScored70-79!\n"; elseif(gd=='D'||gd=='d')cout<<"\nScored60-69!\n"; elseif(gd=='E'||gd=='e')cout<<"\nScoreunder60!\n"; elsecout<<"Unexpecterror!\n";//防止意外錯(cuò)誤}程序(2)//此程序用switch輸出等級(jí)對(duì)應(yīng)的分?jǐn)?shù)段//A->=90,B-(90,80],C-(80,70],D-(70,60],,E-<60#include<iostream>usingnamespacestd;intmain(){chargd;cout<<"Enterthegrade:";cin>>gd;//直到輸入有效等級(jí),否則程序不繼續(xù)運(yùn)行while(!((gd>='A'&&gd<='E')||(gd>='a'&&gd<='e'))){cout<<"Invalidgrade!Pleaseretry:"; cin>>gd;}switch(gd){case'A':case'a':cout<<"\nScored90-100!\n";break;case'B':case'b':cout<<"\nScored80-89!\n";break;case'C':case'c':cout<<"\nScored70-79!\n";break;case'D':case'd':cout<<"\nScored60-69!\n";break;case'E':case'e':cout<<"\nScoreunder60!\n";break;default:cout<<"Unexpecterror!\n";//防止意外錯(cuò)誤}}2.什么叫作循環(huán)控制?歸納比較C++語(yǔ)言中各種循環(huán)控制語(yǔ)句的語(yǔ)法、循環(huán)條件和循環(huán)結(jié)束條件的表示形式及執(zhí)行流程。【解答】循環(huán)控制是在特定的條件下,程序重復(fù)執(zhí)行一些特定動(dòng)作。語(yǔ)句語(yǔ)法執(zhí)行流程使用場(chǎng)合while語(yǔ)句while(表達(dá)式)循環(huán)體;循環(huán)條件:表達(dá)式值為非0(真)循環(huán)結(jié)束條件:表達(dá)式值為0(假)程序中常用于根據(jù)條件執(zhí)行操作而不需關(guān)心循環(huán)次數(shù)的情況。先判斷形式循環(huán),條件不成立時(shí)不進(jìn)入循環(huán)體。do-while語(yǔ)句do循環(huán)體while(表達(dá)式);循環(huán)條件:表達(dá)式值為非0(真)循環(huán)結(jié)束條件:表達(dá)式值為0(假)程序中常用于根據(jù)條件執(zhí)行操作而不需關(guān)心循環(huán)次數(shù)。后判斷形式循環(huán),至少執(zhí)行1次循環(huán)體。一般情況,while語(yǔ)句和dowhile語(yǔ)句可以互換使用。for語(yǔ)句for([表達(dá)式1];[表達(dá)式2];[表達(dá)式3])循環(huán)體;(1)表達(dá)式1稱(chēng)為初始化表達(dá)式,不是循環(huán)體執(zhí)行部分。(2)表達(dá)式3稱(chēng)為后置表達(dá)式,作為循環(huán)體的最后一個(gè)執(zhí)行表達(dá)式。(3)循環(huán)條件:表達(dá)式2值為非0(真)循環(huán)結(jié)束條件:表達(dá)式2值為0(假)for語(yǔ)句稱(chēng)為步長(zhǎng)循環(huán)語(yǔ)句,通常用于確定循環(huán)次數(shù)的情況。由于語(yǔ)句的3個(gè)表達(dá)式均可以缺省,也可以用于條件循環(huán),即循環(huán)次數(shù)不確定的情況。3.根據(jù)一個(gè)實(shí)際問(wèn)題,用不同的循環(huán)語(yǔ)句編程,分析其優(yōu)缺點(diǎn)。【解答】略。4.【解答】在不破壞程序基本流程控制的情況下,可以適當(dāng)使用goto語(yǔ)句實(shí)現(xiàn)從語(yǔ)句結(jié)構(gòu)內(nèi)部向外的必要跳轉(zhuǎn),即按特定條件結(jié)束結(jié)構(gòu)語(yǔ)句塊的執(zhí)行。程序略。5.有以下程序,希望判斷兩個(gè)輸入的整數(shù)是否相等。程序可以編譯通過(guò),但不能達(dá)到預(yù)期結(jié)果。請(qǐng)分析程序能夠通過(guò)C++編譯而不能得到期望結(jié)果的原因。#include<iostream>usingnamespacestd;intmain(){inta,b;cout<<"a:";cin>>a;cout<<"b:";cin>>b;if(a=b)cout<<a<<"等于"<<b<<endl;elsecout<<a<<"不等于"<<b<<endl;}【解答】在if語(yǔ)句的判斷表達(dá)式(a=b)中,賦值號(hào)“=”應(yīng)該是邏輯等“==”。從語(yǔ)法上,C++的if語(yǔ)句把a(bǔ)=b這個(gè)賦值表達(dá)式視為邏輯表達(dá)式,沒(méi)有編譯錯(cuò)誤。a=b的值決定于b。若b的輸入值不等于0,if語(yǔ)句的判斷表達(dá)式作為邏輯真(true),否則作為邏輯假(false)。所以,題目中輸入b的值雖然不等于a,但表達(dá)式a=b為邏輯true,執(zhí)行了if語(yǔ)句的第1個(gè)分支。二、程序設(shè)計(jì)1.輸入三個(gè)整數(shù),按從小到大的順序輸出它們的值。【解答】#include<iostream>usingnamespacestd;intmain(){inta,b,c,t;cout<<"a,b,c=";cin>>a>>b>>c;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}cout<<a<<'\t'<<b<<'\t'<<c<<endl;}2.編程模擬剪【解答】#include<iostream>usingnamespacestd;intmain(){charfirst,second;cout<<"Firstinput(s,rorp):";cin>>first;cout<<"Secondinput(s,rorp):";cin>>second;switch(first){case's':switch(second){case's':cout<<"Scissortiesscissor."<<endl;gotoend;case'r':cout<<"Scissoriscrushedbyrock."<<endl;gotoend;case'p':cout<<"Scissorcutspaper."<<endl;gotoend;default:cout<<"secondinputerror!"<<endl;gotoend;}case'r':switch(second) {case's':cout<<"Rockcrushesscissor."<<endl;gotoend;case'r':cout<<"Rocktiesrock."<<endl;gotoend;case'p':cout<<"Rockiswrappedbypaper."<<endl;gotoend;default:cout<<"secondinputerror!"<<endl;gotoend; }case'p': switch(second){case's':cout<<"Paperiscutbyscissor."<<endl;gotoend;case'r':cout<<"Paperwrapstherock."<<endl;gotoend;case'p':cout<<"Papertiespaper."<<endl;gotoend;default:cout<<"secondinputerror!"<<endl;gotoend;}default:cout<<"Firstinputerror!"<<endl;gotoend;}end:;}3.編寫(xiě)一個(gè)程序,輸出一張表,內(nèi)容是1~256范圍內(nèi)每個(gè)十進(jìn)制數(shù)對(duì)應(yīng)的二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)形式。第1行是標(biāo)題,用制表符整齊格式(根據(jù)輸出情況調(diào)整)顯示數(shù)值表。提示,八進(jìn)制數(shù)和十六進(jìn)制數(shù)可以直接輸出。decimal binary octal hexadecimal1 1 1 12 10 2 23 11 3 3……【解答】#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ inti,k,t,m;cout<<"decimal\tbinary\toctal\thexadecimal\n"; for(i=1;i<=256;i++) { cout<<dec<<i<<"\t"; t=i; m=0; //標(biāo)志,判斷是否輸出1 for(k=256;k>=1;k/=2) //從最高位開(kāi)始處理 { if(t>=k) { cout<<1; //填寫(xiě)1 t=t-k; //等待處理的剩余數(shù) m=1; //記錄輸出了最高位的1 } else if(m)cout<<0; //如果已經(jīng)輸出1,就輸出有效的0} if(i<128) cout<<'\t'; //格式調(diào)整 cout<<"\t"<<oct<<i<<"\t"<<hex<<i<<endl;}}4.輸入一個(gè)整數(shù),輸出該整數(shù)的所有素?cái)?shù)因子。例如,輸入120,輸出為2、2、2、3和5?!窘獯稹?include<iostream>usingnamespacestd;intmain(){intm,i=2;cout<<"pleaseinputm:";cin>>m;while(i<=m)if(m%i==0){cout<<i<<",";m=m/i;}elsei++;}5.使用迭代公式編程求某個(gè)正整數(shù)a的平方根?!窘獯稹?include<iostream>#include<cmath> usingnamespacestd;intmain(){constdoubleeps=1e-8;doublea,x0,x;cout<<"pleaseinputa:";cin>>a;x0=a/2;x=(x0+a/x0)/2;while(fabs(x-x0)>eps){x0=x;x=(x0+a/x0)/2;}cout<<x<<endl;}6.已知x=0,10,20,…,180,求sinx、cosx和tanx的值?!窘獯稹?include<iostream>#include<cmath> #include<iomanip>usingnamespacestd;intmain(){constdoublepi=3.14159265; inti; doublex,y1,y2,y3; cout<<setw(2)<<"x"<<setw(15)<<"sin(x)"<<setw(15) <<"cos(x)"<<setw(15)<<"tg(x)"<<endl; for(i=0;i<=18;i++) {x=i*10*pi/180; y1=sin(x); y2=cos(x); y3=y1/y2; cout<<setw(2)<<i<<setw(15)<<y1<<setw(15) <<y2<<setw(15)<<y3<<endl;}}7.求100~999之間的水仙花數(shù)。所謂水仙花數(shù),是指一個(gè)三位數(shù),它的每位數(shù)字的立方之和等于該數(shù)。例如,因?yàn)?53=1+5+3,所以153為水仙花數(shù)?!窘獯稹?include<iostream>usingnamespacestd;intmain(){inti,a,b,c; for(i=100;i<=999;i++) {a=i/100; b=(i-a*100)/10; c=i-a*100-b*10; if(i==a*a*a+b*b*b+c*c*c)cout<<i<<endl; }}8.求1000以?xún)?nèi)的所有完數(shù)。所謂完數(shù),是指一個(gè)數(shù)恰好等于它的所有因子之和。例如,因?yàn)?=1+2+3,所以6為完數(shù)。【解答】#include<iostream>usingnamespacestd;intmain(){inti,j,s; for(i=1;i<=1000;i++) {s=0; for(j=1;j<i;j++) if(i%j==0)s=s+j; if(i==s)cout<<i<<endl; }}9.編寫(xiě)一個(gè)程序,它能夠讀入一個(gè)正方形的邊長(zhǎng)(1~20),然后打印一個(gè)由星號(hào)和空格組成的空心正方形。例如,程序讀入邊長(zhǎng)是5,則輸出的空心正方形為:*************【解答】#include<iostream>usingnamespacestd;intmain(){ inti,j,n; cout<<"inputn="; cin>>n; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) if(i==1||i==n||j==1||j==n) cout<<"*"; elsecout<<""; cout<<endl; }}10.已知XYZ+YZZ=532,其中X,Y和Z為數(shù)字,編寫(xiě)程序求出X、Y和Z的值。【解答】#include<iostream>usingnamespacestd;intmain(){intx,y,z,i; for(x=1;x<=9;x++) for(y=1;y<=9;y++) for(z=0;z<=9;z++) {i=100*x+10*y+z+100*y+10*z+z; if(i==532)cout<<"x="<<x<<'\t'<<"y="<<y<<'\t'<<"z="<<z<<endl; }}11.編寫(xiě)一個(gè)簡(jiǎn)單加密程序。輸入一個(gè)6位整數(shù)的明碼,按以下方法加密:首先,將每位數(shù)字替換成它與7相加之和再用10求模的結(jié)果;然后逆置;最后輸出密碼。再編寫(xiě)程序,把這個(gè)密碼還原成明碼。若輸入錯(cuò)誤,則顯示錯(cuò)誤信息后退出程序。例如,輸入原碼數(shù)據(jù)n為:200911,則顯示密碼n1為:886779,解密后的原碼n2為:200911。注:密碼n1不一定是6位整數(shù),但明碼n和n2是相等的6位整數(shù)?!窘獯稹?include<iostream>usingnamespacestd;intmain(){ inti,n,n1=0,n2=0,t=0; cout<<"輸入一個(gè)6位整數(shù):"; cin>>n; if(n>999999||n<100000) { cout<<"輸入錯(cuò)誤,退出程序。\n"; return0; }//加密 for(i=1;i<=6;i++) { n1*=10; t=n%10; n1+=(t+7)%10; n=(n-t)/10; }cout<<"加密:"<<n1<<endl;//解密 for(i=1;i<=6;i++) { n2*=10; t=n1%10; if(t>=7) n2+=t-7; else n2+=t+10-7; n1=(n1-t)/10; } cout<<"解密:"<<n2<<endl;}第3章練習(xí)題同步練習(xí)3.1一、選擇題1.以下正確的函數(shù)原型為()。(A)fun1(intx;inty); (B)voidfun1(x,y);(C)voidfun1(intx,y); (D)voidfun1(int,int);2.有函數(shù)原型intf2(int,int);以下正確的調(diào)用語(yǔ)句是()。(A)inta=fun2(1); (B)cout<<fun2(3,4);(C)inta=fun2(1)+fun(2); (D)cout<<fun2(3+4);3.有函數(shù)原型voidf3(double);以下正確的調(diào)用語(yǔ)句是()。(A)doublea=fun3(0.15); (B)fun3(0.34);(C)doublea=fun3(0.1)+f3(0.2); (D)cout<<fun3(3.4);4.以下正確的函數(shù)定義是()。(A)intfun4(inta,intb){returna+b;} (B)voidfun4(inta,intb){returna+b;}(C)intfun4(inta,intb){fun4=a+b;} (D)voidfun4(i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論