C、C編程題目和代碼3_第1頁
C、C編程題目和代碼3_第2頁
C、C編程題目和代碼3_第3頁
C、C編程題目和代碼3_第4頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C、C++編程題目和代碼3目錄.矩陣左轉(zhuǎn) …,…2.函數(shù)指針(函數(shù)調(diào)TOC\o"1-5"\h\z用) 4.數(shù)字判斷(指針為函數(shù)參數(shù)) 6.字符串比較(字符指針) 8.秘鑰加密法(指針應(yīng)用) 10.誰是老二(結(jié)構(gòu)體) 12.抄襲查找(結(jié)構(gòu)體+指針+函數(shù)) 14.結(jié)構(gòu)和鏈表初步(指針+結(jié)構(gòu))(冒泡排序) 18.堆棧練習(xí)(類和對象實驗一) 2010.隨機數(shù)練習(xí)(類和對象實驗TOC\o"1-5"\h\z—) 221L買彩游戲(類和對象實驗一) 24.堆棧練習(xí)擴展(類和對象實驗一) 27.堆棧排序練習(xí)(類和對象實驗一) 30.Date(類與對象) 32.點和圓(類與對象) 35.分?jǐn)?shù)類 .......39.軟件備份(拷貝構(gòu)造函TOC\o"1-5"\h\z數(shù)) 44.電話號碼升位(拷貝構(gòu)造函數(shù)) 47.Equation(類與對象) 49.Complex(類與對TOC\o"1-5"\h\z象) 50身份證設(shè)定(復(fù)合類) 51Point_Array(類與對象) 55Array(類與對象) 59軟件備份(拷貝構(gòu)造函數(shù)) 62分?jǐn)?shù)類 65=======================================================1.矩陣左轉(zhuǎn)輸入ー個2*3的矩陣,將這個矩陣向左旋轉(zhuǎn)90度后輸出比如現(xiàn)在有2*3矩陣:123456向左旋轉(zhuǎn)90度后的矩陣變?yōu)?14要求:除了矩陣創(chuàng)建和數(shù)據(jù)輸入可以使用數(shù)組和數(shù)組下標(biāo)的方法,其他過程對矩陣的任何訪問都必須使用指針提示:m行n列的二維矩陣,第i行第j列的元素與首元素的距離為i*n+j,序號從。開始計算輸入第一行輸入t表示有t個測試實例連續(xù)兩行輸入一個2*3的矩陣的數(shù)據(jù)依次輸入t個實例輸出依次輸出左轉(zhuǎn)后的矩陣結(jié)果在輸出的每行中,每個數(shù)據(jù)之間都用空格隔開,最后ー個數(shù)據(jù)后面也帶有空格樣例輸入2123456456樣例輸出362514695847#include<iostream>usingnamespacestd;voidchange(int*p,int*q);intmain()(inta[2][3Lb[3][2];inti,j,t;cin>>t;while(t-)(for(i=0;i<2;i++)for(j=0;j<3;j++)cin>>a[i][j];change(a[0],b[0]);})voidchange(int*p,int*q){inti,j;for(i=0;i<2;i++)for(j=0;j<3;j++)*(q+4-2*j+i)=*(p+3*i+j);// b[2-j](i]=a[i][j];for(i=0;i<3;i++)()}for(j=0;j<2;j++)cout<<*(q+2*i+j)<<"cout<<endl;函數(shù)指針(函數(shù)調(diào)用)定義并實現(xiàn)三個函數(shù):第一個函數(shù)是整數(shù)函數(shù),返回類型為整數(shù),參數(shù)是ー個整數(shù)變量,操作是求該變量的平方值第二個函數(shù)是浮點數(shù)函數(shù),返回類型為浮點數(shù),參數(shù)是ー個浮點數(shù)變量,操作是求該變量的平方根值。求平方根可以使用函數(shù)sqrt(浮點參數(shù)),將返回該參數(shù)的平方根,在VC中需要頭文件cmath。第三個函數(shù)是字符串函數(shù),無返回值,參數(shù)是ー個字符串指針,操作是把這個字符串內(nèi)所有小寫字母變成大寫。要求:定義三個函數(shù)指針分別指向這三個函數(shù),然后根據(jù)調(diào)用類型使用函數(shù)指針來調(diào)用這三個函數(shù)。不能直接調(diào)用這三個函數(shù)。如果類型為I,則通過指針調(diào)用整數(shù)函數(shù);如果類型為F,則通過指針調(diào)用浮點數(shù)函數(shù);如果類型為S,則通過指針調(diào)用字符串函數(shù)輸入第一行輸入一個t表示有t個測試實例每行先輸入一個大寫字母,表示調(diào)用類型,然后再輸入相應(yīng)的參數(shù)依次輸入t行輸出每行輸出調(diào)用函數(shù)后的結(jié)果樣例輸入5SshenzhenI25F6.25I31SChina樣例輸出SHENZHEN6252.5961CHINA#include<iostream>#include<cmath>#include<cstring>usingnamespacestd;intfuckl(inta);floatfuck2(floata);voidfuck3(char*a);intmain()int(*INT)(int);float(*FLOAT)(float);void(*CHAR)(char*a);charch,b[30];inta,t;floatc;cin>>t;while(t-)(cin>>ch;if(ch=='l')(INT=fuckl; cin>>a;cout<<INT(a)<<endl;}elseif(ch=='F') {FLOAT=fuck2; cin>>c;cout<<FLOAT(c)<<endl;}elseif(ch=='S') {CHAR=fuck3;cin>>b;CHAR(b);cout<<b<<endl;)intfuckl(inta)(returna*a;}floatfuck2(floata)(returnsqrt(a);}voidfuck3(char*a)(inti,l=strlen(a);for(i=0;i<l;i++)if(*(a+i)>='a'&&*(a+i)<='z')*(a+i)=*(a+i)-32;數(shù)字判斷(指針為函數(shù)參數(shù))輸入ー個字符串,判斷這個字符串是否ー個完全整數(shù)值的字符串,例如輸入"1234",那么表示整數(shù)1234,輸入"12a3"就表示只是ー個字符串,不是ー個整數(shù)要求編寫函數(shù)isNumber,參數(shù)是ー個字符指針,返回值是整數(shù)類型如果字符串表示ー個整數(shù),則計算出這個整數(shù)并且返回如果字符串不是表示一個整數(shù),則返回ー1主函數(shù)必須調(diào)用isNumber來判斷字符串,不能使用任何C++自帶或第三方的類似函數(shù)輸入輸入t表示有t個測試實例每行輸入一個字符串依次輸入t行輸出每行輸出判斷結(jié)果樣例輸入31234567a0890樣例輸出1234-1890#include<iostream>#include<cstring>usingnamespacestd;intisnumber(char*a);intl,k=O,t;chara[20];char*p;P=a;cin>>t;while(t-)(cin>>a;cout<<isnumber(p)<<endl;})intisnumber(char*a)(inti,j,l,m=O;l=strlen(a);for(i=0;i<l;i++) {if(isdigit(a[i]))m=m*10+a[i]-'0';elsereturn-1;returnm;}=======================================================4.字符串比較(字符指針)編寫ー個函數(shù)比較兩個字符串,參數(shù)是兩個字符指針(要求顯式定義,例如char*S,char*T),比較字符串S和T的大小。如果S大于T,則返回1,如果S小于T則返回ー1,如果S與T相等則返回O。比較規(guī)則:.把兩個字符串的相同位置上的字符進行比較,字符的大小比較以ASCI!值為準(zhǔn).在比較中,如果字符串S的字符大于字符串T的字符的數(shù)量超過小于的數(shù)量,則認(rèn)為S大于T,如果等于則S等于T,如果小于則S小于T例如S為aaccdd,T為eebbbb?每個位置比較得到S前兩個字母都小于T,但后4個字母都大于T,最終認(rèn)為S大于T.如果兩個字符串長度不同,則更長的字符串為大在主函數(shù)中輸入兩個字符串,并調(diào)用該函數(shù)進行判斷,在判斷函數(shù)中必須使用函數(shù)參數(shù)的指針進行字符比較輸入輸入t表示有t個測試實例接著每兩行輸入兩個字符串依次輸入t個實例輸出每行輸出ー個實例的比較結(jié)果樣例輸入3aaccddeebbbbAAbb++aaEE*-zznnkkaaaaaaa樣例輸出1-1#include<iostream>#include<cstring>usingnamespacestd;intbijiao(char*a,char*b);

chara[30],b[30];intt;cin>>t;while(t-)(cin>>a>>b;cout<<bijiao(a,b)<<endl;}}intbijiaofchar*a,char*b)(inti,x=0,y=0,m,n;m=strlen(a);n=strlen(b);if(m>n)return1;elseif(m<n)return-1;elsefor(i=0;*(a+i)!='\0';i++) {if(*(a+i)>*(b+i)) x++; elseV++; }if(x>y)return1;elseif(x==y)return0;elsereturn-1;if(x>y)return1;elseif(x==y)return0;elsereturn-1;=======================================================5.秘鑰加密法(指針應(yīng)用)有一種方式是使用密鑰進行加密的方法,就是對明文的每個字符使用密鑰上對應(yīng)的密碼進行加密,最終得到密文例如明文是abcde?密鑰是234,那么加密方法就是a對應(yīng)密鑰的2,也就是a偏移2位轉(zhuǎn)化為c;明文b對應(yīng)密鑰的3,就是b偏移3位轉(zhuǎn)化為e,同理c偏移4位轉(zhuǎn)化為g。這時候密鑰已經(jīng)使用完,那么又重頭開始使用。因此明文的d對應(yīng)密鑰的2,轉(zhuǎn)化為f,明文的e對應(yīng)密鑰的3轉(zhuǎn)化為h。所以明文abcde,密鑰234,經(jīng)過加密后得到密文是cegfho如果字母偏移的位數(shù)超過26個字母范圍,則循環(huán)偏移,例如字母z偏移2位,就是轉(zhuǎn)化為b,同理字母x偏移5位就是轉(zhuǎn)化為c要求:使用三個指針p、q、s分別指向明文、密鑰和密文,然后使用指針p和q來訪問每個位置的字符,進行加密得到密文存儲在指針s指向的位置。除了變量定義和輸入數(shù)據(jù),其他過程都不能使用數(shù)組下標(biāo)法,必須使用三個指針來訪問明文、密鑰和密文。提示:當(dāng)指針q已經(jīng)移動到密鑰的末尾,但明文仍然沒有結(jié)束,那么q就跳回密鑰頭輸入第一行輸入t表示有t個測試實例第二行輸入一個字符串,表示第一個實例的明文第三行輸入一個數(shù)字串,表示第一個實例的密鑰依次輸入t個實例輸出每行輸出加密后的密文樣例輸入2abcde234XenOS56樣例輸出cegfhCksUX#include<iostream>#include<cstring>usingnamespacestd;voidchangelfchar*d,int*b);voidchange2(char*a,int*b,char*c,intI);intmain()chara[30],d[30],c[30],*p,*s;inti,l,b[30],*q,t;cin>>t;while(t-)(cin>>a>>d;changel(d,b);l=strlen(d);change2(a,b,c,l);for(i=0;*(c+i)!='\0';i++)cout<<c[i];cout<<endl;})voidchangel(char*d,int*b)(inti,l=strlen(d);for(i=0;i<l;i++)b[i]=d[i]-'0';)voidchange2(char*a,int*b,char*c,intI){inti,j;)for(i=0;*(a+i)!='\0';i++){ if(*(a+i)>='a'&&*(a+i)<='z')*(c+i)=((*(a+i)+*(b+i%l)-97)%26+97);else*(c+i)=((*(a+i)+*(b+i%l)-65)%26+65); } *(c+i)='\0';=======================================================6.誰是老二(結(jié)構(gòu)體)題目描述定義ー個結(jié)構(gòu)體,包含年月日,表示一個學(xué)生的出生日期。然后在一群學(xué)生的出生日期中找出誰的出生日期排行第二要求:出生日期的存儲必須使用結(jié)構(gòu)體,不能使用其他類型的數(shù)據(jù)結(jié)構(gòu)。要求程序全過程對出生日期的輸入、訪問、輸出都必須使用結(jié)構(gòu)。輸入第一行輸入t表示有t個出生日期每行輸入三個整數(shù),分別表示年、月、日依次輸入t個實例輸出輸出排行第二老的出生日期,按照年一月一日的格式輸出樣例輸入61980561981831980319198053198391219811123樣例輸出1980-5-3#include<iostream>usingnamespacestd;intsheng(inty,intm,intd);structstudent(intyear;intmonth;intday;intsheng;};intmain()(studenta[10];studentb;intn,i,j;cin>>n;for(i=0;i<n;i++)cin>>a[i].year;cin>>a[i].month;cin>>a[i].day;}for(i=0;i<n-l;i++)for(j=0;j<n-l-i;j++)if(a[j].year>a[j+l].year){b=aU],a[j]=a[j+l];a[j+l]=b;}for(i=0;i<3;i++)a[i].sheng=sheng(a[i].year;a[i].month,a[i].day);for(i=0;i<2;i++)for(j=0;j<2-i;j++)if(a[j].sheng>a[j+l].sheng){b=a[j],a[j]=a[j+l];a[j+l]=b;}cout<<a[l].year<<"-";cout<<a[l].month<<"-";cout<<a[l].day<<endl;}intsheng(inty,intm,intd)intdis=O;switch(m)casel:dis+=31;case2:if(y%400==011y%4==0&&y%100!=0)dis+=29;elsedis+=28;case3:dis+=31;case4:dis+=30;case5:dis+=31;case6:dis+=30;case7:dis+=31;case8:dis+=31;case9:dis+=30;case10:dis+=31;casell:dis+=30;case12:dis+=31;returndis-d;.抄襲查找(結(jié)構(gòu)體+指針+函數(shù))題目描述已知一群學(xué)生的考試試卷,要求對試卷內(nèi)容進行對比,查找是否有抄襲。每張試卷包含:學(xué)號(整數(shù)類型)、題目1答案(字符串類型)、題目2答案(字符串類型)、題目3答案(字符串類型)要求:使用結(jié)構(gòu)體來存儲試卷的信息。定義ー個函數(shù),返回值為一個整數(shù),參數(shù)是兩個結(jié)構(gòu)體指針,函數(shù)操作是比較兩張試卷的每道題目的答案,如果相同題號的答案相似度超過90%,那么就認(rèn)為有抄襲,函數(shù)返回抄襲題號,否則返回。。相似度是指在同一題目中,兩個答案的逐個位置上的字符兩兩比較,相同的數(shù)量大于等于任一個答案的長度的90%,就認(rèn)為抄襲。輸入第一行輸入t表示有t張試卷第二行輸入第1張試卷的學(xué)生學(xué)號第三行輸入第1張試卷的題目1答案第四行輸入第1張試卷的題目2答案第五行輸入第1張試卷的題目3答案每張試卷對應(yīng)4行輸入依次輸入t張試卷的數(shù)據(jù)輸出在一行中,把發(fā)現(xiàn)抄襲的兩個學(xué)號和題目號,數(shù)據(jù)之間用單個空格隔如果發(fā)現(xiàn)是題目1抄襲,題目號為1,以此類推輸出順序按照輸入的學(xué)號順序進行輸出樣例輸入52088150555aabcdefllZZ887766ddCC33447799ZZ2088150333abedef00AABBCCDDEEZZ668899cc2088150111AABBCCDDEEZZ668899ccabedef002088150222AABBCFDDeEZZ889966ddabcdefOOO2088150444aabcdefOOAABBCDDDEECC668899ZZ樣例輸出208815033320881504442208815011120881502223#include<iostream>#include<cstring>usingnamespacestd;intxiao(inta,intb);structpaper(intno;chara[100];charb[100];charc[100];};intcompare(paper*p,paper*q);intmain()(paper*a;intn,i,j,k;//freopen("c:\\123.txt","r",stdin); cin>>n;a=newpaper[n];for(i=0;i<n;i++)(cin>>a[i].no;cin>>a[i].a;cin>>a[i].b;cin>>a[i].c;)for(i=0;i<n-l;i++)for(j=i+l;j<n;j++)(k=compare(&a[i],&a[j]); if(k!=O)cout<<a[i].no<<""<<a[j].no<<""<<k<<endl;))intcompare(paper*p,paper*q)(intiJ,m,x=O;l=strlen(p->a);m=strlen(q->a);l=xiao(l,m);for(i=0;i<l;i++)if(p->a[i]==q->;a[i])x++;if(x>=l*9/10)return1;x=0;l=strlen(p->b);m=strlen(q->b);l=xiao(l,m);for(i=0;i<l;i++)if(p->b[i]==q->b[i])x++;if(x>=l*9/10)return2;x=0;l=strlen(p->c);m=strlen(q->c);l=xiao(l,m);for(i=0;i<l;i++)if(p->c[i]==q->c[i])x++;if(x>=l*9/10)return3;return0;}intxiao(inta,intb)(if(a<b)returna;elsereturnb;.結(jié)構(gòu)和鏈表初步(指針+結(jié)構(gòu))(冒泡排序)#include<iostream>usingnamespacestd;structstudent(inta;student*next;};student*create();voidfuck(student*head);intmain()(fuck(create());)student*create()(student*head/ps,*pend;head=NULL;ps=newstudent;cin>>ps->a;pend=ps;while(ps->a)(if(head==NULL)head=ps;elsepend->next=ps;pend=ps;ps=newstudent;cin>>ps->a;pend->next=NULL;deleteps;return(head);)voidfuck(student*head)(student*endpt; 〃控制循環(huán)比較student*p; 〃臨時指針變量student*pl,*p2;pl=newstudent;pl->next=head; 〃注意理解:我們增加一個節(jié)點,放在第一個節(jié)點的前面,主要是為了便于比較。因為第一個節(jié)點沒有前驅(qū),我們不能交換地址head=pl; 〃讓head指向pl節(jié)點,排序完成后,我們再把pl節(jié)點釋放掉for(endpt=NULL;endpt!=head;endpt=p) 〃結(jié)合第6點理解(for(p=pl=head;pl->next->next!=endpt;pl=pl->next)(if(pl->next->a>pl->next->next->a)〃如果前面的節(jié)點鍵值比后面節(jié)點的鍵值大,則交換p2=pl->next->next; 〃結(jié)合第1點理解pl->next->next=p2->next; 〃結(jié)合第2點理解p2->next=pl->next; 〃結(jié)合第3點理解pl->next=p2; 〃結(jié)合第4點理解p=pl->next->next;〃結(jié)合第6點理解pl=head; 〃把pl的信息去掉head=head->next;〃讓head指向排序后的第一個節(jié)點deletepl; 〃釋放plpl=NULL; 〃pl置為NULL,保證不產(chǎn)生“野指針”,即地址不確定的指針變量while(head->next)}{cout<<head->a<<"";head=head->next;}cout<<head->a<<endl;.堆棧練習(xí)(類和對象實驗ー)題目描述堆棧是程序設(shè)計里面一個很重要的數(shù)據(jù)結(jié)構(gòu),也是指針應(yīng)用的一個重點,請同學(xué)們設(shè)計ー個可以放N個學(xué)生姓名的堆棧,如果滿棧則提示不能再放,如果出棧時為空,則提示沒有信息可取,用C語言實現(xiàn)該要求。輸入第一行輸入堆棧的大小:第二行輸入元素數(shù)目;第三行起依次輸入堆棧各元素的值,如果棧滿,則提示:滿棧!。輸出按出棧順序每行輸出各元素的值,如果棧空則提示:棧空!樣例輸入34TomTimJohnMarry樣例輸出滿棧!JohnTimTom#include<iostream>usingnamespacestd;classfuckprivate:intm,n,i,k;char**a;public:voidset(intmu,intnu,char**b){k=0;inti;m=mu;n=nu;a=newchar*[m];for(i=0;i<m;i++)a[i]=newchar;for(i=0;i<n;i++)(a[i]=b[i];k++;if(i>=m-l){cout<<"滿棧!"<<endl;break;}}if(k==O)cout<<"???"<<endl;elsefor(i=m-l;i>=0;i-)cout<<a[i]<<endl;}};intmain()(fucksb;char**a;intm,n,i,j,k;cin>>m>>n;a=newchar*[n];for(i=0;i<n;i++)a[i]=newchar;for(i=0;i<n;i++)}cin>>a[i];sb.set(m,n,a);.隨機數(shù)練習(xí)(類和對象實驗ー)題目描述我們知道福利彩票銷售中也有通過機選隨機生成你需要的號碼,現(xiàn)假設(shè)福利彩票共有七個號碼,每個號碼的區(qū)間為0-30,現(xiàn)在請你利用C語言設(shè)計ー個生成七個福利彩票號碼的隨機數(shù)模擬器,當(dāng)用戶確定下注后,輸出七個不同的號碼。(需要利用隨機函數(shù)rand()、srand。,具體用法參見參考書)。輸入第一行輸入要生成福利彩票的組數(shù);第二行輸入買入彩票的客戶名稱;輸出第一行輸出客戶名稱;第二行為第一組彩票號碼,第三行為第二組彩票號碼,以此類推。。。。。。樣例輸入2Tom樣例輸出提示#include<iostream>#include<ctime>#include<stdlib.h>usingnamespacestd;classcaipiaoprivate:intzu;charname[20];int**haoma;public:voidset(inta,charn[20])(zu=a;inti=0;while(n[i]!='\0')(name[i]=n[i];i++;}name[i]='\0';haoma=newint*[zu];for(i=0;i<zu;i++)haoma[i]=newint[7];}voidfuzhi()(inti,j;srand(unsigned(time(NULL)));for(i=0;i<zu;i++)for(j=0;j<7;j++)haoma[i][j]=rand()%31;}voidprintf()(inti=O,j;while(name[i]!='\0')(cout<<name[i];i++;}cout<<endl;for(i=0;i<zu;i++)(for(j=0;j<6;j++)cout<<haoma[i][j]<<"cout<<haoma[i][j]<<endl;int

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論