C++語言程序設(shè)計教程(第3版)課后編程題_第1頁
C++語言程序設(shè)計教程(第3版)課后編程題_第2頁
C++語言程序設(shè)計教程(第3版)課后編程題_第3頁
C++語言程序設(shè)計教程(第3版)課后編程題_第4頁
C++語言程序設(shè)計教程(第3版)課后編程題_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C++語?程序設(shè)計教程(第3版)課后編程題?錄習(xí)題?輸出菱形圖案題?:編寫?程序輸出?*組成的菱形圖案我的?法:1.分析:直接cout輸出相關(guān)圖案即可2.代碼:#include<iostream>usingnamespacestd;intmain(){cout<<"cout<<"cout<<"*"<<endl;*****"<<endl;**************"<<endl;cout<<"**********************"<<endl;cout<<"******************************"<<endl;cout<<"**********************"<<endl;cout<<"cout<<"cout<<"**************"<<endl;*****"<<endl;*"<<endl;}以?進制、?六進制的形式輸出?個數(shù)題?:輸?任意?進制數(shù),將其以?進制、?六進制的形式輸出教材答案:1.分析:常?操縱符操縱符oct作?說明數(shù)據(jù)以?進制的形式輸出作?范圍為后續(xù)輸出的整數(shù)對象,?數(shù)不起作?數(shù)據(jù)以?進制的形式輸出(默認)dechex同上同上數(shù)據(jù)以?六進制的形式輸出endl換?并刷新輸出流設(shè)置輸出寬度setw(n)僅對后?個對象起作?作?范圍為后續(xù)對象設(shè)置輸出?數(shù)位數(shù)(默認為6)setprecision(n)在使?操縱符時,要使?iomanip頭?件2.涉及知識點:常?操縱符的使?3.代碼:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){intnumber1;cout<<"輸?的?進制數(shù)為:"<<endl;cin>>number1;cout<<"?進制:"<<oct<<number1<<endl;cout<<"?六進制:"<<hex<<number1<<endl;}按精度從?到?輸出結(jié)果題?:輸?兩個數(shù),將它們相除,觀察為?限循環(huán)?數(shù)時按精度從?到?輸出的結(jié)果教材答案:1.分析:輸?的兩個數(shù),我?開始輸?為兩個整型的數(shù)字,發(fā)現(xiàn)?論精度設(shè)定為多?答案都?樣,輸?的是整型,輸出的?然也是整型,因此要將整型的兩個數(shù)字改為雙精度型double2.涉及知識點:數(shù)字類型的選擇、常?操縱符的使?3.代碼:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){doublei,j;cin>>i>>j;cout<<setprecision(1);cout<<"precision(1):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(2);cout<<"precision(2):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(3);cout<<"precision(3):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(4);cout<<"precision(4):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(5);cout<<"precision(5):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(6);cout<<"precision(6):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(7);cout<<"precision(7):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(8);cout<<"precision(8):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(9);cout<<"precision(9):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(10);cout<<"precision(10):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(11);cout<<"precision(11):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(12);cout<<"precision(12):"<<i<<"/"<<j<<"="<<i/j<<endl;cout<<setprecision(13);cout<<"precision(13):"<<i<<"/"<<j<<"="<<i/j<<endl;}習(xí)題?精度運?題?:攝?溫度與華?溫度的轉(zhuǎn)換公式為:c=5/9*(f-32)其中c為攝?溫度,f為華?溫度,寫出兩者之間互相轉(zhuǎn)換的表達式,將表達式放?程序中,以整數(shù)形式輸??種溫度值,以整數(shù)形式輸出轉(zhuǎn)換后的溫度值我的?法&教材答案:1.分析:直接套?公式進?轉(zhuǎn)換表達即可2.涉及知識點:(1)當(dāng)/運算符?于兩個整數(shù)相除時,如果商含有?數(shù)部分,將被截掉。若不想其被截掉,則?少保證除數(shù)或被除數(shù)中有?個是浮點數(shù)或雙精度數(shù)(2)\n——換?\t——空格轉(zhuǎn)義序列\(zhòng)n含義換?\t空格\v豎向跳格\b退格,相當(dāng)于backspace鍵回車(return)?紙(feed)換頁鳴鈴(alert)\r\f\a\\反斜杠符\'單引號\''雙引號\ooo\xhhooo為3位?進制數(shù)hh為兩位?六進制數(shù)3.代碼:#include<iostream>usingnamespacestd;intmain(){intf,c=0;cin>>f;c=(5/9.0)*(f-32);//當(dāng)/運算符?于兩個整數(shù)相除時,如果商含有?數(shù)部分,將被截掉。若不想其被截掉,則?少保證除數(shù)或被除數(shù)中有?個是浮點數(shù)或雙精度數(shù)cout<<"攝?度為:"<<f<<"\n"<<"轉(zhuǎn)化后的華攝?度為:"<<c<<endl;return0;}?三?運算符?較出最?者題?:?三?運算符求出x、y、z的最?者我的?法:1.涉及知識點:三?運算符是條件運算符,實現(xiàn)簡單的選擇功能2.代碼:#include<iostream>usingnamespacestd;intmain(){intx,y,z;cin>>x>>y>>z;intmax=(((x>y)?x:y)>z)?((x>y)?x:y):z;cout<<max<<endl;}變量值的交換題?:分別寫出引進和不引進第3個變量交換兩個變量值的表達式(語句)我的?法:1.分析:引進第三個變量即常規(guī)的tmp交換,?不引進第三個變量我?了vector容器2.代碼:#include<iostream>#include<vector>usingnamespacestd;intmain(){//引?第三個變量inta=3,b=4;cout<<"交換之前的a為:"<<a<<"交換之前的b為:"<<b<<endl;inttmp=a;a=b;b=tmp;cout<<"交換之后的a為:"<<a<<"交換之后的b為:"<<b<<endl;//不引?第三個變量vector<int>v1;v1.push_back(9);vector<int>v2;v2.push_back(6);cout<<"交換之前的c為:";for(vector<int>::iteratorit=v1.begin();it!=v1.end();it++){cout<<*it<<endl;}cout<<"交換之前的d為:";for(vector<int>::iteratorit=v2.begin();it!=v2.end();it++){cout<<*it<<endl;}swap(v1,v2);cout<<"交換之后的c為:";for(vector<int>::iteratorit=v1.begin();it!=v1.end();it++){cout<<*it<<endl;}cout<<"交換之后的d為:";for(vector<int>::iteratorit=v2.begin();it!=v2.end();it++){cout<<*it<<endl;}return0;}教材答案:1.分析:跟我的不?樣的是不引進第三個變量的那?條2.代碼:#include<iostream>#include<vector>usingnamespacestd;intmain(){//引?第三個變量inta=3,b=4;cout<<"交換之前的a為:"<<a<<"交換之前的b為:"<<b<<endl;inttmp=a;a=b;b=tmp;cout<<"交換之后的a為:"<<a<<"交換之后的b為:"<<b<<endl;//不引?第三個變量intx=8,y=9;cout<<"交換之前的x為:"<<x<<"交換之前的y為:"<<y<<endl;x=x+y;y=x-y;x=x-y;cout<<"交換之后的x為:"<<x<<"交換之后的y為:"<<y<<endl;return0;}優(yōu)化等級分判斷題?:改寫本章將百分制換算成等級分的程序,優(yōu)化判斷我的?法&教材答案:1.分析:優(yōu)化判斷即減少循環(huán)次數(shù),?般來說,考試成績呈正態(tài)分布,因此70-80分會居多,因此把70-80分設(shè)置在循環(huán)的第?層,可減少判斷次數(shù)2.涉及知識點:switch...case判斷3.代碼:#include<iostream>usingnamespacestd;intmain(){intn;cout<<"請輸?您的分數(shù):";cin>>n;switch(n/10){case7:case6:cout<<"thedegreeisC"<<endl;break;case8:cout<<"thedegreeisB"<<endl;break;case9:case10:cout<<"thedegreeisA"<<endl;break;default:cout<<"thedegreeisD"<<endl;}return0;}優(yōu)化百錢買百雞題?:改寫本章百錢買百雞程序,減少循環(huán)層數(shù)以及循環(huán)次數(shù),優(yōu)化循環(huán)我的?法&教材答案:1.分析:循環(huán)優(yōu)化是指通過減少循環(huán)層數(shù)以及每層循環(huán)體執(zhí)?的次數(shù)來節(jié)省系統(tǒng)資源,提?運?效率。在本題當(dāng)中,可將其中?種類別數(shù)量化為100-i-j,完成優(yōu)化2.分析:循環(huán)優(yōu)化3.代碼:#include<iostream>usingnamespacestd;intmain(){constintcock=20,hen=33,chick=100;inti=0,j=0;for(inti=0;i<=hen;++i)for(intj=0;j<chick;j++)if(i+j<100&&(3*i+j/3+(100-i-j)*5)==100&&j%3==0)cout<<"三種雞各有:"<<100-i-j<<"只"<<"\t"<<i<<"只"<<"\t"<<j<<"只"<<endl;return0;}判斷位數(shù)并逆向輸出?個整數(shù)題?:從鍵盤輸??個整數(shù),判斷該數(shù)是?位數(shù),逆向輸出該數(shù)我的?法:1.分析:判斷該數(shù)是?位數(shù),將數(shù)字轉(zhuǎn)換為字符串類型,通過循環(huán)++count最終輸出個數(shù)即為位數(shù)。逆向輸出即建??個新的字符串,通過倒序的for循環(huán)增加其成員,最終輸出這個新的字符串2.涉及知識點:整型轉(zhuǎn)換為字符串型、for循環(huán)的利?3.代碼:#include<iostream>#include<string>usingnamespacestd;intjiweishu(intn){intcount=0;stringstr=to_string(n);for(inti=0;i<str.size();++i){++count;}returncount;}stringdaoxushuchu(intn){stringstr=to_string(n);stringres="";for(inti=str.size()-1;i>=0;i--){res+=str[i];}returnres;}intmain(){intn;cout<<"請輸??個整數(shù):";cin>>n;cout<<"經(jīng)過判斷得知其為"<<jiweishu(n)<<"位數(shù)"<<endl;cout<<"逆向輸出該數(shù)為:"<<daoxushuchu(n)<<endl;}教材答案:給的答案輸出不出來,但是其核?思想值得借鑒longn,rn(0);cin>>n;inti=0;for(;i<10;i++){if(n>0){rn=rn*10+rn%10;//倒序輸出n=n/10;位數(shù)計算}elsebreak;}輸??個整數(shù)判斷是否回?數(shù)題?:從鍵盤輸??個整數(shù),判斷該數(shù)是否是回?數(shù)我的?法:1.分析:這道題與習(xí)題三的不同之處在于,規(guī)定了輸?的?個數(shù)必須為整數(shù),?我的思路就是輸??個整數(shù)后將其轉(zhuǎn)換為字符串類型?較,即倒序后與順序依舊相等2.涉及知識點:?較類型字符串類型字符類型?較?法str1=str2strcmp(a,b)3.代碼:#include<iostream>#include<string>usingnamespacestd;boolishuiwenshu(intn){stringstr=to_string(n);stringres="";for(inti=str.size()-1;i>=0;i--){res+=str[i];}if(str==res)returntrue;returnfalse;}intmain(){intn;cout<<"請輸??個整數(shù):";cin>>n;if(true){cout<<"輸?的數(shù)字是回?數(shù)"<<endl;}else{cout<<"輸?的數(shù)字不是回?數(shù)"<<endl;}}教材答案:1.代碼:#include<iostream>usingnamespacestd;intmain(){inttmp,n,rn(0);cin>>n;tmp=n;for(inti=0;i<10;i++){if(tmp>0){rn=rn*10+rn%10;n=n/10;}elsebreak;}cout<<rn<<endl;if(n==rn)cout<<"是回?數(shù)"<<endl;elsecout<<"不是回?數(shù)"<<endl;return0;}正向、逆向輸出26個英?字母題?:編寫程序,分別正向、逆向輸出26個?寫英?字母我的答案:1.分析:按照字符類型循環(huán)即可2.代碼:#include<iostream>usingnamespacestd;intmain(){for(chari='A';i<='Z';i++){cout<<i<<"";}cout<<endl;for(chari='Z';i>='A';i--){cout<<i<<"";}cout<<endl;}教材答案:1.代碼:#include<iostream>usingnamespacestd;intmain(){for(inti=0;i<26;i++){cout<<char('A'+i)<<"";}cout<<endl;for(inti=0;i<26;i++){cout<<char('Z'-i)<<"";}cout<<endl;}判斷閏年及?份天數(shù)題?:根據(jù)歷法,凡是135781012?,每?31天,凡是46911?,每?30天,2?閏年29天,平年28天。閏年的判斷?法如下:1.如果年號能被400整除,此年為閏年。2.如果年號能被4整除,且不能被100整除,此年為閏年。3.否則不是閏年。編程輸?年?,輸出該?的天數(shù)。我的答案:1.分析:此題不過就是if的運?循環(huán)嵌套。2.if選擇語句3.代碼:#include<iostream>usingnamespacestd;intmain(){intn,m;cout<<"請輸??個年份:";cin>>n;cout<<"請輸??個?份:";cin>>m;if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){cout<<n<<"年"<<m<<"?有31天"<<endl;}elseif(m==4||m==6||m==9||m==11){cout<<n<<"年"<<m<<"?有30天"<<endl;}elseif(m==2){if(n%400==0||n%4==0&&n%100!=0){cout<<n<<"年"<<m<<"?有29天"<<endl;}else{cout<<n<<"年"<<m<<"?有28天"<<endl;}}system("pause");}根據(jù)重量和郵寄距離計算郵資題?:假定包裹的計費標準如下表,輸?包裹重量以及郵寄距離,計算出郵資。(重量在檔次之間按?檔靠)我的答案:1.分析:if選擇語句的運?,重量在檔次之間,即??在范圍之內(nèi)2.代碼:#include<iostream>usingnamespacestd;intmain(){intweight;cout<<"請輸?包裹的重量(g):";cin>>weight;intdistance;cout<<"請輸?郵寄包裹的郵寄距離(km):";cin>>distance;intmoney=0;if(weight<=15){cout<<"重量為"<<weight<<"g"<<","<<"郵寄距離為"<<distance<<"km"<<"的包裹"<<"郵資費?為5元"<<endl;}elseif(weight>15&&weight<=30){cout<<"重量為"<<weight<<"g"<<","<<"郵寄距離為"<<distance<<"km"<<"的包裹"<<"郵資費?為9元"<<endl;}elseif(weight>30&&weight<=45){cout<<"重量為"<<weight<<"g"<<","<<"郵寄距離為"<<distance<<"km"<<"的包裹"<<"郵資費?為12元"<<endl;}elseif(weight>45&&weight<=60){money=14;if(distance>=1000)money+=(distance/1000);cout<<"重量為"<<weight<<"g"<<","<<"郵寄距離為"<<distance<<"km"<<"的包裹"<<"郵資費?為"<<money<<"元"<<endl;}elseif(weight>60){money=15;if(distance>=1000)money+=(distance/1000);cout<<"重量為"<<weight<<"g"<<","<<"郵寄距離為"<<distance<<"km"<<"的包裹"<<"郵資費?為"<<money<<"元"<<endl;}}教材答案:1.分析:思路差不多,但代碼簡潔度?我好太多了2.代碼:#include<iostream>usingnamespacestd;intmain(){intweight,distance,fee;cout<<"Inputweightanddistance:";cin>>weight>>distance;if(weight<=15)fee=5;elseif(weight<=30)fee=9;elseif(weight<=45)fee=12;elseif(weight<=60)fee=14+distance/1000;elsefee=15+distance/1000;cout<<"fee="<<fee<<endl;return0;}素數(shù)的判斷題?:設(shè)計?函數(shù),判斷?整數(shù)是否為素數(shù)我的答案:1.分析:素數(shù)?名質(zhì)數(shù),是除了?和它本?以外不能再被其它數(shù)整除的數(shù)字。即設(shè)計令?個數(shù)n與[2,n-1]?直相除,如果相除結(jié)果為整,則count++,最后若count>0,則說明這個數(shù)不是素數(shù)。2.代碼:#include<iostream>usingnamespacestd;intmain(){intn;cout<<"請輸??個整數(shù):";cin>>n;intcount=0;for(inti=2;i<n;i++){if(n%i==0){++count;}}if(count>0||n==1){cout<<n<<"不是素數(shù)"<<endl;}else{cout<<n<<"是素數(shù)"<<endl;}}教材答案:1.分析:為了節(jié)省循環(huán)次數(shù),循環(huán)sqrt次數(shù)即可2.代碼:#include<iostream>#include<cmath>usingnamespacestd;boolissushu(intn){if(n<=1)returnfalse;for(inti=2;i<sqrt(n);i++){if(n%i==0)returnfalse;elsereturntrue;}}intmain(){intn;cout<<"請輸??個數(shù):";cin>>n;if(issushu(n)){cout<<n<<"是?個素數(shù)"<<endl;}else{cout<<n<<"不是?個素數(shù)"<<endl;}}遞歸求x的y次冪題?:設(shè)計?遞歸函數(shù),求x的y次冪我的答案:1.分析:在主函數(shù)中輸?兩個實數(shù),設(shè)計?個函數(shù)實現(xiàn)求冪。思路就是從0開始循環(huán)y-1次,每循環(huán)?次,令doubleret*x,得到的結(jié)果就是所求2.代碼:#include<iostream>usingnamespacestd;doublemi(intx,inty){if(y==0)return1;else{doubleret=1.0;for(inti=0;i<y;i++){ret*=x;}returnret;}}intmain(){doublex,y;cin>>x>>y;cout<<mi(x,y)<<endl;}習(xí)題三冒泡排序題?:輸?10個整數(shù),將10個整數(shù)升序排列輸出,并且奇數(shù)在前,偶數(shù)在后。如果輸?的10個數(shù)是10987654321,則輸?shù)?法:1.分析:冒泡輸出10個數(shù)從?到?的排序,遍歷數(shù)組后先插?奇數(shù)進vector容器,第?次遍歷再插?偶數(shù)進vector容器2.涉及知識點:冒泡排序、vector容器的使?、%2=0為偶數(shù),%2==1為奇數(shù)3.代碼:#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>v;intarr[10]={10,9,8,7,6,5,4,3,2,1};for(inti=0;i<9;++i)//冒泡排序{for(intj=0;j<9-i;++j){if(arr[j]>arr[j+1]){inttmp=arr[j];arr[j]=arr[j+1];arr[j+1]=tmp;}}}for(inti=0;i<10;i++){if(arr[i]%2==1)//若對應(yīng)的數(shù)為奇數(shù),則插?vector容器中{v.push_back(arr[i]);}}for(inti=0;i<10;i++)//若對應(yīng)的數(shù)為偶數(shù),則插?vector容器中{if(intb=arr[i]%2==0){v.push_back(arr[i]);}}for(vector<int>::iteratorit=v.begin();it!=v.end();it++)//vector迭代器輸出內(nèi)容{cout<<*it<<"";}cout<<endl;}教材答案:我覺得書上答案太繁瑣了哈哈就不展?出來了反向輸出字符串題?:編寫?個程序,實現(xiàn)將?戶輸?的?個字符串以反向形式輸出。?如,輸?的字符串是asdfghjkl,輸出為lkjhgfdsa我的?法:1.分析:看到題?的第?眼,我就想到了reverse函數(shù),但難受的是,我忘記了怎樣運?。剛好最近學(xué)到了容器,就想著套?。?開始我直接輸?:vector<string>v;v.pushback("asdfghjkl");reverse(v.begin(),v.end());但最后的結(jié)果是,程序?qū)⑵淇闯闪?個整體的字符串,?不是?個個分開的字母,因此不發(fā)對其完成反轉(zhuǎn)。我只好應(yīng)?暴?法將其?個個插?容器當(dāng)中,最終輸出成功2.涉及知識點:vector容器的使?、reverse函數(shù)的使?3.代碼:#include<iostream>#include<string>#include<vector>#include<algorithm>//包含reverse算法頭?件usingnamespacestd;voidtext01(){vector<string>v;v.push_back("a");v.push_back("s");v.push_back("d");v.push_back("f");v.push_back("g");v.push_back("h");v.push_back("j");v.push_back("k");v.push_back("l");cout<<"反轉(zhuǎn)前:"<<endl;for(vector<string>::iteratorit=v.begin();it!=v.end();it++){cout<<*it<<"";}cout<<endl;reverse(v.begin(),v.end());cout<<"反轉(zhuǎn)后:"<<endl;for(vector<string>::iteratorit=v.begin();it!=v.end();it++){cout<<*it<<"";}cout<<endl;}intmain(){text01();}教材答案:1.分析:?先要定義?個數(shù)組的最?容量,并?strlen函數(shù)巧妙算出字符串的長度(注意:strlen僅計算字符串長度,不包括’\0’在內(nèi))2.涉及知識點:strlen函數(shù)的運?3.代碼:#include<iostream>usingnamespacestd;intmain(){charstr[180];cin>>str;intk=strlen(str);for(inti=0;i<k;++i)cout<<str[k-i-1];return0;}從其他地?搜羅來的答案:1.?字符串?dāng)?shù)組#include<iostream>#include<string>usingnamespacestd;intmain(){charstr[20];cin>>str;for(inti=strlen(str);i>=1;i--)cout<<str[i-1];return0;}2.?string?法加函數(shù)#include<iostream>#include<string>#include<algorithm>usingnamespacestd;intmain(){stringstr;cin>>str;reverse(str.begin(),str.end());cout<<str<<endl;}刪除字符串的某個字符題?:編寫?個程序,實現(xiàn)將?戶輸?的?個字符串中所有的字符'c'刪除,并輸出結(jié)果我的?法歷程1:1.分析:?先?開始我想到deque容器可以兩端實現(xiàn)的特點,可以頭插,也可以尾插,因此通過遍歷輸?的字符串,如果掃描到‘c’字符,就將其pop操作,反之則繼續(xù)插?到deque容器的尾端。但最終出來的結(jié)果是,如果c在中間位置的話,同時也會把c后?的字符也給pop掉,現(xiàn)在依舊不知道是為什么。因此這種?法只適合c在尾部的字符串2.代碼:#include<iostream>#include<deque>usingnamespacestd;voidtext01(){charstr[180];cin>>str;deque<char>q1;q1.push_back(str[180]);for(inti=0;i<q1.size();++i){if(str[i]=='c'){q1.pop_front();}else{q1.push_back(str[i]);}}for(deque<char>::iteratorit=q1.begin();it!=q1.end();it++){cout<<*it;}cout<<endl;}intmain(){text01();}最終運?結(jié)果:我的?法歷程2:1.分析:先直接遍歷數(shù)組,再將不是c的字符裝進vector容器,完美解決問題。2.代碼:#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<char>v;charstr[80];cin>>str;intk=strlen(str);for(inti=0;i<k;++i){if(str[i]!='c'){v.push_back(str[i]);}}for(vector<char>::iteratorit=v.begin();it!=v.end();it++){cout<<*it;}cout<<endl;}最終運?結(jié)果:教材答案:教程提供的答案其實我沒有整明?。。。但還是貼上來叭,說不定以后再回來看就會突然理解了代碼:#include<iostream>usingnamespacestd;intmain(){charstr[180];charc='c';cin>>str;for(inti=0,j=0;str[i]!='\0';i++,j++)if(str[j]==c)i--;elsestr[i]=str[j];cout<<str<<endl;return0;}不理解的地?:for(inti=0,j=0;str[i]!='\0';i++,j++)if(str[j]==c)i--;不?strcpy函數(shù)復(fù)制字符數(shù)組題?:編寫?個程序,將字符數(shù)組s2中的全部字符復(fù)制到字符數(shù)組s1中,不?strcpy函數(shù)。在復(fù)制時,'\0'也要復(fù)制過去,'\0'后?的字符不復(fù)制我的?法:1.分析:依舊是運?容器,?先將s1放?容器中,再把s2放?容器當(dāng)中,當(dāng)遇到‘\0’時,結(jié)束放?。?開始的時候?論怎樣都?法將'\0'?起復(fù)制,最終再次查關(guān)于'\0'的解釋,發(fā)現(xiàn)'\0'字符是空字符(NULL)對應(yīng)的ASCII碼,即‘\0’=NULL,因此我把'\0'替換成'',成功復(fù)制。(但這種想法也可能是錯的,?前我的?平只能照著這種?式做了)2.涉及知識點:'\0'轉(zhuǎn)義字符的理解3.代碼:#include<iostream>#include<vector>usingnamespacestd;intmain(){chars1[5]={'a','c','d','e',''};chars2[6]={'x','c','v','l','','y'};vector<char>v;for(constcharval:s1){v.push_back(val);}for(inti=0;i<6;i++){v.push_back(s2[i]);if(s2[i]=='')break;}for(vector<char>::iteratorit=v.begin();it!=v.end();it++){cout<<*it;}cout<<endl;}最終運?結(jié)果:教材答案:對著答案打發(fā)現(xiàn)答案運?不出來哈哈,我也不是很理解說實話,實在看不懂解決不了就先放著了2.代碼:#include<iostream>usingnamespacestd;intmain(){chars2[180],s1[180];cin>>s2;for(inti=0;s2[i]!='\0';i++)s1[i]=s2[i];s1[i]=s2[i];cout<<s1;return0;}運?結(jié)果:不?strcat連接兩個字符串題?:不?strcat函數(shù)編程實現(xiàn)字符串連接函數(shù)strcat功能,將字符串DStr連接到字符串SStr的尾部我的?法:1.分析:現(xiàn)將DStr先放?vector容器,再將SStr尾插即可2.代碼:#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<char>v;charDStr[180]="asdfghjk";charSStr[180]="16728dcnacnd";intk=strlen(DStr);intz=strlen(SStr);cout<<"插?之前為:"<<endl;for(inti=0;i<k;++i){v.push_back(DStr[i]);}for(vector<char>::iteratorit=v.begin();it!=v.end();it++){cout<<*it;}cout<<endl;cout<<"插?之后為:"<<endl;for(inti=0;i<z;++i){v.push_back(SStr[i]);}for(vector<char>::iteratorit=v.begin();it!=v.end();it++){cout<<*it;}cout<<endl;}教材答案:代碼:#include<iostream>usingnamespacestd;intmain(){charSStr[180],DStr[180];cin>>SStr>>DStr;intSL=strlen(SStr);intDL=strlen(DStr);for(inti=0;i<DL+1;i++)//i<DL+1:保證SStr有?夠的的空間SStr[SL+i]=DStr[i];//SStr的長度以及將DStr賦值到SStr尾部cout<<SStr<<endl;return0;}判斷是否為回?數(shù)題?:編寫?個函數(shù),判斷輸?的?串字符是否為“回?”。所謂“回?“是指順讀和倒讀都?樣的字符串。例如”level“。我的?法:1.分析:順讀和倒讀都?樣,也就是說輸??個字符串,再將字符串倒序輸出與倒序之前?較兩者是否相等,相等即是回?數(shù)。第?次提交答案,編譯器提?我str2未進?初始化:charstr1[180],str2[180];//編譯器提?未對str2進?初始化charstr1[180],str2[180]={};//修改后第?次提交答案,編譯器崩潰,我猜想是給str2分配內(nèi)存空間??不適配所致。for(inti=0;i<k;++i){str2[180]+=str1[k-i-1];}//編譯器崩潰for(inti=0;i<k;++i){str2[i]+=str1[k-i-1];}//提供適配的內(nèi)存空間第三次提交答案,成功輸出str1,str2,但?論我輸?什么,編譯器都會告訴我str1和str2不是回?數(shù)。if(str1==str2){cout<<"輸?的字符串是回?數(shù)"<<endl;}else{cout<<"輸?的字符串不是回?數(shù)"<<endl;}//?論輸?什么,最終都輸出不是回?數(shù)//改為if(strcmp(str1,str2)==0){cout<<"輸?的字符串是回?數(shù)"<<endl;}else{cout<<"輸?的字符串不是回?數(shù)"<<endl;}原因我在中找到了答案,在?較兩個字符串時不能利?符號“==”,“==”符號?較的是兩個字符串的地址是否相等。若要對字符串進??較,利?://正確的?較?法:cout<<"利?strcmp()?較a,b兩個字符串,結(jié)果是(相等為0,不等?0):"<<strcmp(a,b)<<endl;2.涉及知識點:字符串的?較3.代碼:#include<iostream>usingnamespacestd;intmain(){charstr1[180],str2[180]={};cin>>str1;intk=strlen(str1);for(inti=0;i<k;++i){str2[i]+=str1[k-i-1];}cout<<str2<<endl;if(strcmp(str1,str2)==0){cout<<"輸?的字符串是回?數(shù)"<<endl;}else{cout<<"輸?的字符串不是回?數(shù)"<<endl;}}教材答案:代碼:#include<iostream>usingnamespacestd;intmain(){charstr[180];cin>>str;inth=strlen(str);for(inti=0;i<h/2;i++)if(str[i]!=str[h-i-1])cout<<"輸?的不是回?數(shù)"<<endl;elsecout<<"輸?的是回?數(shù)"<<endl;}求兩個矩陣的乘積題?:編程求兩個矩陣的乘積,要求兩個矩陣的維數(shù)由鍵盤臨時輸?教材答案1.分析:?開始寫如下代碼時:intM=3,K=2,N=4;//修改后constintM=3,K=2,N=4;系統(tǒng)報錯:在int前?加上const即可2.代碼:#include<iostream>usingnamespacestd;intmain(){constintM=3,K=2,N=4;inta[M][K]={{1,2},{3,4},{5,6}};intb[K][N]={{1,0,1,1},{0,1,0,1}};intc[M][N]={0};for(inti=0;i<M;++i)for(intj=0;j<N;j++)for(intk=0;k<K;++k)c[i][j]=c[i][j]+a[i][k]*b[k][j];for(inti=0;i<M;++i){for(intj=0;j<N;j++)cout<<c[i][j]<<"\t";cout<<endl;}return0;}打印楊輝三?1.分析:要注意的點,由于i是從0開始,因此是i<=n-1for(inti=0;i<=n-1;i++)2.涉及知識點:?維數(shù)組的簡單運?3.代碼:#include<iostream>usingnamespacestd;intmain(){constintn=6;inta[n][n];for(inti=0;i<=n-1;i++)

溫馨提示

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

最新文檔

評論

0/150

提交評論