C++第十課字符串_第1頁(yè)
C++第十課字符串_第2頁(yè)
C++第十課字符串_第3頁(yè)
C++第十課字符串_第4頁(yè)
C++第十課字符串_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第10課字符串1

例charch[5]={‘H’,’e’,’l’,’l’,’o’};ch[0]Hello逐個(gè)字符賦值ch[1]ch[2]ch[3]ch[4]例charch[5]={‘B’,’o’,’y’};ch[0]Boy\0\0逐個(gè)字符賦值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ù)組的初始化逐個(gè)字符賦值用字符串常量字符數(shù)組的引用例charc[10],ch[3][4];2字符數(shù)組的輸入與輸出chara[100];cin>>a;cout<<a[2];輸入:abc

輸出:c輸入:abc

輸出:空格?因?yàn)檫@時(shí)a數(shù)組只能取“a”,空格后面的不能讀入。因此,字符數(shù)組的讀入與整數(shù)類似,也是以空格作為分隔的。上例中如果改成cin>>a>>b;則b數(shù)組的值是“bc”3自動(dòng)跳過空格程序中有下列語句:

charstr1[5],str2[5],str3[5];

cin>>str1>>str2>>str3;

運(yùn)行時(shí)輸入數(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;}運(yùn)行結(jié)果:

Iamaboy5charc[10];

inti;for(i=0;i<10;i++)

c[i]=getchar();//一次只能讀一個(gè)變量

cout<<c;注意:必須先知道長(zhǎng)度,或有控制標(biāo)志。頭文件中必須有:#include<cstdlib>輸入:123456789輸出:123456789空格輸入(知道長(zhǎng)度)6空格輸入(不知長(zhǎng)度)例2:輸入一行字符,不超過200個(gè),包含若干個(gè)單詞。約定相鄰兩個(gè)單詞用空格隔開,編程統(tǒng)計(jì)單詞的個(gè)數(shù)。樣例:輸入:Todayis

aniceday輸出:5輸入的不知道長(zhǎng)度,只能使用字符串輸入。#include<cstring>頭文件中先打開字符串定義stringa;//a長(zhǎng)度不限,與P語言不一樣

cin>>a;//a[0]是輸入的第一個(gè)字符但只能讀入第一個(gè)單詞,直接讀入也是以空格作為分隔。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;}文件操作的時(shí)候正常讀。鍵盤輸入的時(shí)候以ctrl+Z結(jié)束9string的操作加法:stringst;

getline(cin,st);

st=’’+st;//st前面多一個(gè)空格

st=st+st;//復(fù)制一遍但st=‘a(chǎn)bc’+st;是錯(cuò)誤的,可以寫成st=“abc”+st;操作作用返回值例子字符串.length()求字符串的長(zhǎng)度整型s=“123456789”;l=s.length();{l的值為9}字符串.substr(w,k)復(fù)制字符串中從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號(hào)位開始插入s2

cout<<s1;//s2=“13452”11刪除字符串.erase(x,n)從x位開始的n個(gè)字符

strings1="12345";s1.erase(2,2);//從2號(hào)位開始的兩個(gè)字符

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í)數(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,相當(dāng)麻煩#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;//分解出個(gè)位數(shù)字

n=n/10;

ch=48+a;//ch取數(shù)字的ASCII碼,自動(dòng)轉(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題一:?jiǎn)栴}:加法算式(P1211)輸入:僅一行,符合格式A+B,0<=A,B<=60000(A,B為整數(shù))

文件不含空格,數(shù)字開頭無多余的零。輸出:僅一行,即A與B的和。樣例:輸入

113+355

輸出

468上機(jī)作業(yè)思路:1、字符串輸入。2、找到加號(hào)的位置。3、將加號(hào)左邊、右邊分解出來。4、輸出加法的值。21另一巧妙的方法scanf(“%d+%d”,&a,&b);printf(“%d”,a+b);22題二數(shù)字反轉(zhuǎn)

(NOIP2011初中組第1題)P1100

給定一個(gè)整數(shù),請(qǐng)將該數(shù)各個(gè)位上數(shù)字反轉(zhuǎn)得到一個(gè)新數(shù)。新數(shù)也應(yīng)滿足整數(shù)的常見形式,即除非給定的原數(shù)為零,否則反轉(zhuǎn)后得到的新數(shù)的最高位數(shù)字不應(yīng)為零(參見樣例2)?!据斎搿抗?行,一個(gè)整數(shù)N?!据敵觥恳粋€(gè)整數(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。提示:先處理負(fù)數(shù)。23題三:數(shù)字統(tǒng)計(jì)(NOIP2010初中組第1題)P1113【問題描述】

請(qǐng)統(tǒng)計(jì)某個(gè)給定范圍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次?!据斎搿抗?行,為兩個(gè)正整數(shù)L和R,之間用一個(gè)空格隔開?!据敵觥抗?行,表示數(shù)字2出現(xiàn)的次數(shù)?!緲永縯wo.in

222two.out6【數(shù)據(jù)范圍】1≤L≤R≤10000。24題四:變態(tài)的等式P1212

輸入一行一個(gè)等式,要求在左邊插入一個(gè)加號(hào),使等式成立,如果沒有答案則輸出“No"(不含引號(hào)).樣例:輸入

1122=33

輸出

11+22=33數(shù)據(jù)范圍:所有的數(shù)不超過2.1*10^925題五.統(tǒng)計(jì)單詞數(shù)

P1107

給定一個(gè)單詞,請(qǐng)你輸出它在給定的文章中出現(xiàn)的次數(shù)和第一次出現(xiàn)的位置。注意:匹配單詞時(shí),不區(qū)分大小寫,但要求完全匹配,即給定單詞必須與文章中的某一獨(dú)立單詞在不區(qū)分大小寫的情況下完全相同(參見樣例1),如果給定單詞僅是文章中某一單詞的一部分則不算匹配(參見樣例2)?!据斎搿枯斎牍?行。第1行為一個(gè)字符串,其中只含字母,表示給定單詞;第2行為一個(gè)字符串,其中只可能包含字母和空格,表示給定的文章?!据敵觥恐挥幸恍?,如果在文章中找到給定單詞則輸出兩個(gè)整數(shù),兩個(gè)整數(shù)之間用一個(gè)空格隔開,分別是單詞在文章中出現(xiàn)的次數(shù)和第一次出現(xiàn)的位置(即在文章中第一次出現(xiàn)時(shí),單詞首字母在文章中的位置,位置從0開始);如果單詞在文章中沒有出現(xiàn),則直接輸出一個(gè)整數(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≤單詞長(zhǎng)度≤10。1≤文章長(zhǎng)度≤1,000,000。算法:1、輸入第一行,將大寫字母轉(zhuǎn)成小寫字母。2、輸入第二行,將大寫字母轉(zhuǎn)成小寫字母。3、將第二行前面與后面插入一個(gè)空格。4、查找第二行中第一行出現(xiàn)的次數(shù)。

(1)相同的單詞必須前后均是空格。(2)統(tǒng)計(jì)相同的個(gè)數(shù),還要記下第一次出現(xiàn)的位置。5、輸出26字符串?dāng)?shù)組字符串相當(dāng)于一維數(shù)組

stringst;st=“abc”;

則有數(shù)組st,st[0]=‘a(chǎn)’st[1]=‘b’st[2]=‘c’字符串?dāng)?shù)組相當(dāng)于二維數(shù)組

stringst[10];st[0]=“ab”;st[1]=“cd”;st[2]=“ef”;

請(qǐng)問:字符’c’的表示方法是什么?st[1][0]=‘c’27

求最大數(shù)設(shè)有n個(gè)正整數(shù)(n≤20),將它們聯(lián)接成一排,組成一個(gè)最大的多位整數(shù)。例如:n=3時(shí),3個(gè)整數(shù)13,312,343聯(lián)接成的最大整數(shù)為:34331213又如:n=4時(shí),4個(gè)整數(shù)7,13,4,246聯(lián)接成的最大整數(shù)為:7424613程序輸入:nn個(gè)數(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題六:學(xué)生成績(jī)(P1223)【問題描述】給出若干

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論