![C++第十課字符串_第1頁](http://file4.renrendoc.com/view/16fcaa09c36c5631ad65592e58234716/16fcaa09c36c5631ad65592e582347161.gif)
![C++第十課字符串_第2頁](http://file4.renrendoc.com/view/16fcaa09c36c5631ad65592e58234716/16fcaa09c36c5631ad65592e582347162.gif)
![C++第十課字符串_第3頁](http://file4.renrendoc.com/view/16fcaa09c36c5631ad65592e58234716/16fcaa09c36c5631ad65592e582347163.gif)
![C++第十課字符串_第4頁](http://file4.renrendoc.com/view/16fcaa09c36c5631ad65592e58234716/16fcaa09c36c5631ad65592e582347164.gif)
![C++第十課字符串_第5頁](http://file4.renrendoc.com/view/16fcaa09c36c5631ad65592e58234716/16fcaa09c36c5631ad65592e582347165.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第10課字符串1
例charch[5]={‘H’,’e’,’l’,’l’,’o’};ch[0]Hello逐個字符賦值ch[1]ch[2]ch[3]ch[4]例charch[5]={‘B’,’o’,’y’};ch[0]Boy\0\0逐個字符賦值ch[1]ch[2]ch[3]ch[4]
例charch[6]={“Hello”};charch[6]=“Hello”;charch[]=“Hello”;用字符串常量ch[0]Helloch[1]ch[2]ch[3]ch[4]\0ch[5]
例charch[5]=“Boy”;ch[0]Boy\0\0用字符串常量ch[1]ch[2]ch[3]ch[4]字符數(shù)組P221定義字符數(shù)組的初始化逐個字符賦值用字符串常量字符數(shù)組的引用例charc[10],ch[3][4];2字符數(shù)組的輸入與輸出chara[100];cin>>a;cout<<a[2];輸入:abc
輸出:c輸入:abc
輸出:空格?因為這時a數(shù)組只能取“a”,空格后面的不能讀入。因此,字符數(shù)組的讀入與整數(shù)類似,也是以空格作為分隔的。上例中如果改成cin>>a>>b;則b數(shù)組的值是“bc”3自動跳過空格程序中有下列語句:
charstr1[5],str2[5],str3[5];
cin>>str1>>str2>>str3;
運行時輸入數(shù)據(jù):
Howareyou?內(nèi)存中變量狀態(tài)如下:
str1:How\0str2:are\0str3:you?\044空格初始化輸入#include<iostream>usingnamespacestd;intmain(){charc[10]={'I','','a','m','','a','','b','o','y'};
inti;for(i=0;i<10;i++)
cout<<c[i];//或者不用循環(huán),直接
cout<<c;return0;}運行結(jié)果:
Iamaboy5charc[10];
inti;for(i=0;i<10;i++)
c[i]=getchar();//一次只能讀一個變量
cout<<c;注意:必須先知道長度,或有控制標志。頭文件中必須有:#include<cstdlib>輸入:123456789輸出:123456789空格輸入(知道長度)6空格輸入(不知長度)例2:輸入一行字符,不超過200個,包含若干個單詞。約定相鄰兩個單詞用空格隔開,編程統(tǒng)計單詞的個數(shù)。樣例:輸入:Todayis
aniceday輸出:5輸入的不知道長度,只能使用字符串輸入。#include<cstring>頭文件中先打開字符串定義stringa;//a長度不限,與P語言不一樣
cin>>a;//a[0]是輸入的第一個字符但只能讀入第一個單詞,直接讀入也是以空格作為分隔。7#include<iostream>usingnamespacestd;#include<cstring>intmain(){stringst;
inti,L,num;
getline(cin,st);//getling
讀入一行字符串,包含空格
i=0;L=st.length();num=0;while(i<L){while(st[i]=='')i++;if(i<L)num++;while(st[i]!=''&&i<L)i++;}
cout<<num<<endl;return0;}8更快的方法#include<iostream>#include<cstring>usingnamespacestd;intnum;intmain(){stringst;while(cin>>st)num++;
cout<<num<<endl;return0;}文件操作的時候正常讀。鍵盤輸入的時候以ctrl+Z結(jié)束9string的操作加法:stringst;
getline(cin,st);
st=’’+st;//st前面多一個空格
st=st+st;//復制一遍但st=‘a(chǎn)bc’+st;是錯誤的,可以寫成st=“abc”+st;操作作用返回值例子字符串.length()求字符串的長度整型s=“123456789”;l=s.length();{l的值為9}字符串.substr(w,k)復制字符串中從w開始的k位字符串s=“123456789”;s1=s.substr(0,5);{s1的值為“12345”}10操作作用返回值例子字符串.find(str)在字符串中查找字符串str的位置整型s=“123456789”;l=s.find(“34”);{l的值為2}字符串.swap(str)將字符串與str交換無s=“123”;s1=“456”s.swap(s1);{s1的值為“123”,s的值是“456”}插入字符串.insert(x,str)strings1="12",s2="345";s1.insert(1,s2);//從s1的1號位開始插入s2
cout<<s1;//s2=“13452”11刪除字符串.erase(x,n)從x位開始的n個字符
strings1="12345";s1.erase(2,2);//從2號位開始的兩個字符
cout<<s1;//輸出12512字符數(shù)組轉(zhuǎn)字符串直接轉(zhuǎn)chara[100];stringb;b=a;13字符串轉(zhuǎn)字符數(shù)組不可直接轉(zhuǎn),用循環(huán)轉(zhuǎn)一下chara[100];stringb;for(i=0;i<b.length();i++)a[i]=b[i];14將string轉(zhuǎn)成int
st:string;
cin>>st;方法一:
inti=atoi(st.c_str());方法二:sscanf(st.c_str(),"%d",&i);15字符數(shù)組轉(zhuǎn)成整數(shù)#include<cstdio>#include<cstring>#include<iostream>usingnamespacestd;intmain(){chars1[100]="111",s2[100]="222";int
a,b;sscanf(s1,"%d",&a);//sscanf()的作用是從字符數(shù)組中讀入sscanf(s2,"%d",&b); cout<<a+b<<endl;return0;}輸出:333轉(zhuǎn)實數(shù)的方法:doublec;sscanf(s1,"%lf",&c);16string轉(zhuǎn)int
通用程序法#include<iostrseam>#include<cstring>usingnamespacestd;intmain(){stringst;
int
i,j,n,s=0;
cin>>st;j=st.length();for(i=0;i<j;i++){n=st[i]-48;s=s*10+n;}
cout<<s;return0;}17將int
轉(zhuǎn)成string,相當麻煩#include<iostream>#include<cstring>#include<cstdlib>#include<strstream>usingnamespacestd;intmain(){strstream
ss;stringst;
intn;
cin>>n;
ss<<n;
ss>>st;
cout<<st<<endl;return0;}18int轉(zhuǎn)string通用程序法
stringst=“”;//初始化,取空
intn;
cin>>n;charch;//ch用來保存每位數(shù)字,轉(zhuǎn)成字符型
while(n>0){
inta=n%10;//分解出個位數(shù)字
n=n/10;
ch=48+a;//ch取數(shù)字的ASCII碼,自動轉(zhuǎn)成字符
st=ch+st;}
cout<<st;19整數(shù)轉(zhuǎn)字符型數(shù)組和字符串#include<cstdio>#include<string>#include<iostream>usingnamespacestd;intmain(){chars1[100];chars2[100];stringst1,st2;inta=123,b=456;sprintf(s1,"%d",a);//產(chǎn)生"123"存在字符型數(shù)組中sprintf(s2,"%d",b);//產(chǎn)生"456" st1=s1;st2=s2; //字符型數(shù)組轉(zhuǎn)到字符串中cout<<st1+st2<<endl;return0;}輸出:123456
整數(shù)與字符型數(shù)組能直接轉(zhuǎn)換20題一:問題:加法算式(P1211)輸入:僅一行,符合格式A+B,0<=A,B<=60000(A,B為整數(shù))
文件不含空格,數(shù)字開頭無多余的零。輸出:僅一行,即A與B的和。樣例:輸入
113+355
輸出
468上機作業(yè)思路:1、字符串輸入。2、找到加號的位置。3、將加號左邊、右邊分解出來。4、輸出加法的值。21另一巧妙的方法scanf(“%d+%d”,&a,&b);printf(“%d”,a+b);22題二數(shù)字反轉(zhuǎn)
(NOIP2011初中組第1題)P1100
給定一個整數(shù),請將該數(shù)各個位上數(shù)字反轉(zhuǎn)得到一個新數(shù)。新數(shù)也應滿足整數(shù)的常見形式,即除非給定的原數(shù)為零,否則反轉(zhuǎn)后得到的新數(shù)的最高位數(shù)字不應為零(參見樣例2)?!据斎搿抗?行,一個整數(shù)N?!据敵觥恳粋€整數(shù),表示反轉(zhuǎn)后的新數(shù)?!緲永?】reverse.in
123reverse.out321【樣例2】Reverse.in-380reverse.out-83【數(shù)據(jù)范圍】-1,000,000,000≤N≤1,000,000,000。提示:先處理負數(shù)。23題三:數(shù)字統(tǒng)計(NOIP2010初中組第1題)P1113【問題描述】
請統(tǒng)計某個給定范圍L---R的所有整數(shù)中,數(shù)字2出現(xiàn)的次數(shù)。比如給定范圍2---22,數(shù)字2在數(shù)2中出現(xiàn)了1次,在數(shù)12中出現(xiàn)1次,在數(shù)20中出現(xiàn)1次,在數(shù)21中出現(xiàn)1次,在數(shù)22中出現(xiàn)2次,所以數(shù)字2在該范圍內(nèi)一共出現(xiàn)了6次?!据斎搿抗?行,為兩個正整數(shù)L和R,之間用一個空格隔開?!据敵觥抗?行,表示數(shù)字2出現(xiàn)的次數(shù)?!緲永縯wo.in
222two.out6【數(shù)據(jù)范圍】1≤L≤R≤10000。24題四:變態(tài)的等式P1212
輸入一行一個等式,要求在左邊插入一個加號,使等式成立,如果沒有答案則輸出“No"(不含引號).樣例:輸入
1122=33
輸出
11+22=33數(shù)據(jù)范圍:所有的數(shù)不超過2.1*10^925題五.統(tǒng)計單詞數(shù)
P1107
給定一個單詞,請你輸出它在給定的文章中出現(xiàn)的次數(shù)和第一次出現(xiàn)的位置。注意:匹配單詞時,不區(qū)分大小寫,但要求完全匹配,即給定單詞必須與文章中的某一獨立單詞在不區(qū)分大小寫的情況下完全相同(參見樣例1),如果給定單詞僅是文章中某一單詞的一部分則不算匹配(參見樣例2)?!据斎搿枯斎牍?行。第1行為一個字符串,其中只含字母,表示給定單詞;第2行為一個字符串,其中只可能包含字母和空格,表示給定的文章?!据敵觥恐挥幸恍校绻谖恼轮姓业浇o定單詞則輸出兩個整數(shù),兩個整數(shù)之間用一個空格隔開,分別是單詞在文章中出現(xiàn)的次數(shù)和第一次出現(xiàn)的位置(即在文章中第一次出現(xiàn)時,單詞首字母在文章中的位置,位置從0開始);如果單詞在文章中沒有出現(xiàn),則直接輸出一個整數(shù)-1?!緲永?】stat.in
Totobeornottobeisaquestionstat.out20【樣例1說明】輸出結(jié)果表示給定的單詞To在文章中出現(xiàn)兩次,第一次出現(xiàn)的位置為0。【樣例2】stat.in
toDidtheOttomanEmpireloseitspoweratthattimestat.out-1【樣例2說明】表示給定的單詞to在文章中沒有出現(xiàn),輸出整數(shù)-1。【數(shù)據(jù)范圍】1≤單詞長度≤10。1≤文章長度≤1,000,000。算法:1、輸入第一行,將大寫字母轉(zhuǎn)成小寫字母。2、輸入第二行,將大寫字母轉(zhuǎn)成小寫字母。3、將第二行前面與后面插入一個空格。4、查找第二行中第一行出現(xiàn)的次數(shù)。
(1)相同的單詞必須前后均是空格。(2)統(tǒng)計相同的個數(shù),還要記下第一次出現(xiàn)的位置。5、輸出26字符串數(shù)組字符串相當于一維數(shù)組
stringst;st=“abc”;
則有數(shù)組st,st[0]=‘a(chǎn)’st[1]=‘b’st[2]=‘c’字符串數(shù)組相當于二維數(shù)組
stringst[10];st[0]=“ab”;st[1]=“cd”;st[2]=“ef”;
請問:字符’c’的表示方法是什么?st[1][0]=‘c’27
求最大數(shù)設(shè)有n個正整數(shù)(n≤20),將它們聯(lián)接成一排,組成一個最大的多位整數(shù)。例如:n=3時,3個整數(shù)13,312,343聯(lián)接成的最大整數(shù)為:34331213又如:n=4時,4個整數(shù)7,13,4,246聯(lián)接成的最大整數(shù)為:7424613程序輸入:nn個數(shù)程序輸出:聯(lián)接成的多位數(shù)樣例:輸入:
313312343
輸出:
34331213
28#include<iostream>#include<cstring>usingnamespacestd;intmain(){
intn;strings[20];
cin>>n;for(inti=1;i<=n;i++)
cin>>s[i];for(inti=1;i<=n-1;i++)for(intj=i+1;j<=n;j++)if(s[i]+s[j]<s[j]+s[i])
swap(s[i],s[j]);for(inti=1;i<=n;i++)
cout<<s[i];return0;}29題六:學生成績(P1223)【問題描述】給出若干
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年咸水菇項目可行性研究報告
- 2025年度工程項目施工圖設(shè)計與審查服務協(xié)議
- 2025年度國際貿(mào)易仲裁條款專用銷售合同
- 塑料制品塑料包裝項目可行性研究報告申請立項
- 2024-2030年中國電力監(jiān)測設(shè)備行業(yè)市場全景監(jiān)測及投資前景展望報告
- 2025年橡膠棍項目可行性研究報告
- 職工困難申請書
- 2025年度建筑工程施工勞務人員勞動合同變更合同
- 中國皮卡行業(yè)市場前景預測及投資方向研究報告
- 測井設(shè)備項目可行性報告范文參考
- 《少兒財商教育》課件
- 銷售人員培訓課程課件
- 電子表格表格會計記賬憑證模板
- 制造過程優(yōu)化與工藝改進培訓
- 46號抗磨液壓油MSDS
- 水磨石地面驗收標準
- MMPI14個量表得分題目號碼
- QC成果提高剪力墻線盒預埋安裝合格率
- 建筑工程施工質(zhì)量驗收規(guī)范檢驗批填寫全表格+示范填寫與說明
- 龍虎山正一日誦早晚課
- 車輛年審委托書下載
評論
0/150
提交評論