SDUST C++結課考試幾個例題程式碼
阿新 • • 發佈:2018-12-16
c++結課考試例題程式碼
刪除一個字串中的指定字母,如:字串 “aca”,刪除其中的 a 字母
#include <iostream> using namespace std; int main(){ char str[100],a,*p,*q; cout<<"請輸入一個字串"<<endl; cin>>str; cout<<"請輸入一個字母,將字串中的該字母全部刪除"<<endl; cin>>a; //使指標p等於字串str p=str; while(*p!='\0'){ if(*p==a){ //*p等於需要刪除的字母,此時q的地址等於p的地址 q=p; //利用該while迴圈對需要刪除的字母進行覆蓋,後面的統一往前移動一個 while(*q!='\0'){ *q=*(q+1); q++; } } //如果*p不等於需要刪除的字母,則指標向後指 else{ p++; } } //此時需要刪除的字母已經全部覆蓋,直接輸出字串即可 cout<<str; return 0; }
字串反轉,如將字串 “www.runoob.com” 反轉為 “moc.boonur.www”
#include <iostream> using namespace std; int main(){ char str[100],*p; cin>>str; //讓指標的首指向字串首,隨後遍歷 p=str; while(*p!='\0'){ p++; } //此時的*p已經是\0,所以要p-1 p--; //建立迴圈輸出反轉字串 while(*p!='\0'){ cout<<*p; p--; } cout<<endl; return 0; }
輸入一個字串,求出其中字元數,數字數,空格數以及其他符號的數量
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(){ char str[1000],*p; int a=0,b=0,c=0,d=0; //gets(str)gets方法輸入字串,空格不代表回車 gets(str); p=str; while(*p!='\0'){ if((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z')){ a++; } else if(*p==' '){ b++; } else if(*p>='0'&&*p<='9'){ c++; } else{ d++; } p++; } cout<<"字母數="<<a<<" 空格數="<<b<<" 數字數="<<c<<" 其他字元="<<d<<endl; return 0; }
將一個正整數分解質因數。例如:輸入90,打印出90=233*5
#include <iostream>
using namespace std;
int main(){
int a;
cin>>a;
for(int i=a-1;i>1;i--){
int t;
if(a%i==0){
t=i;
}
cout<<t;
}
return 0;
}
判斷一個數是否是素數
#include <iostream>
using namespace std;
bool ss(int x){
for(int i=x-1;i>1;i--){
if(x%i==0){
return false;
}
}
return true;
}
int main(){
int x;
cin>>x;
if(ss(x))
cout<<"是素數"<<endl;
else
cout<<"不是素數"<<endl;
return 0;
}
打印出999之內所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方
#include <iostream>
using namespace std;
bool sxhs(int a){
int temp=a;
int t,s=0;
for(int i=0;i<=2;i++){
t=a%10;
s=s+t*t*t;
a=a/10;
}
if(s==temp){
return true;
}
else
{
return false;
}
}
int main(){
int a;
cin>>a;
if(sxhs(a))
cout<<"是水仙花數"<<endl;
else
cout<<"不是水仙花數"<<endl;
return 0;
}
給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字
#include <iostream>
using namespace std;
int main(){
int a;
cout<<"輸入一個數,顯示其位數且逆序打印出該數" <<endl;
cin>>a;
int temp=a;
int i=0;
for(a;a>=1;a=a/10){
i++;
}
cout<<"該數字的位數是:"<<i<<endl;
int sum;
while(temp!=0){
sum=sum*10+temp%10;
temp=temp/10;
}
cout<<sum<<endl;
return 0;
}
求一個數的最大公約數和最小公倍數
#include <iostream>
using namespace std;
int gy(int a,int b){
//定義公約函式
int min; //尋找兩數中最小值
if(a>b)
min=b;
else
min=a;
for(min;min>=1;min--){ //找到最小值後,最小值逐漸-1尋找最小公約數,但最終一定要大於等於1
if(a%min==0&&b%min==0)
break; //退出迴圈
}
return min; //返回值為min
}
int gb(int c,int d){
//定義公倍函式
int max; //尋找兩數中最大值
if(c>d)
max=c;
else
max=d;
for(max;max<=c*d;max++){ //找到兩數中最大值後,最大值逐漸+1,但要小於等於兩數之積
if(max%c==0&&max%d==0){
break;
}
}
return max;
}
int main(){
//定義主函式
int x,y;
cout<<"輸入兩個數,求最大公約數和最小公倍數"<<endl;
cin>>x>>y;
//引用前兩個函式
cout<<"最大公約數為:"<<gy(x,y)<<endl;
cout<<"最小公倍數為:"<<gb(x,y)<<endl;
return 0;
}
輸入年月日,求這天是今年的第幾天
#include <iostream>
using namespace std;
int main(){
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d,s=0;
cin>>y>>m>>d;
if(y%400==0||(y%100!=0&&y%4==0)){
mon[1]=29;
}
for(int i=0;i<m-1;i++){
s=s+mon[i];
}
s=s+d;
cout<<"第"<<s<<"天"<<endl;
return 0;
}
編寫一個函式,找出一個英文字串中出現次數最多的字母
#include <iostream>
using namespace std;
int main() {
//編寫一個函式,找出一個英文字串中出現次數最多的字母
char s[1000],*p; //定義字串s以及指標p
int a[26]={0}; //因為有26個英文字母,定義int型別陣列a26,分別對應每個小寫字母
cout<<"輸入這段字元,將會得到出現次數最多的字母"<<endl;
cin>>s;
p=s; //令指標指向字串s
int k; //定義k為int型別陣列a26的下標,分別對應每個字母
while(*p!='\0'){
k=*p-'a'; //轉換型別,將字元形式轉換成下標數字形式
a[k]++; //計數,記錄每個下標對應字母出現的次數
p++; //指標指向的地址+1
}
int max=0; //定義中間量max,max表示出現次數最多的字母對應的下標
for(int i=1;i<=26;i++){ //迴圈26次原因是共26個英文字母
if(a[i]>a[0]){
a[0]=a[i];
max=i;
}
}
char z; //定義最終輸出z,使用字元型別
z=max+'a'; //max表示下標,'a'強行轉換為ascⅡ碼中對應的數字
cout<<"出現次數最多的字母是"<<endl;
cout<<z<<endl;
return 0;
}
單鏈表以及struct結構的學生學號問題
#include <iostream>
using namespace std;
struct student{
//定義這個學生類裡含有姓名,年齡,顏值評分。
char name[10];
int age;
float yanzhi;
//定義指標
student *next;
};
int main(){
student *head,*tail,*p;
for(int i=0;i<5;i++){
p=new student();
cout<<"請輸入姓名"<<endl;
cin>>p->name;
p->age=i+10;
p->yanzhi=i+100;
p->next=NULL;
if(i==0){
head=p;
tail=p;
}
else{
tail->next=p;
tail=p;
}
}
p=head;
while(p!=NULL){
cout<<"姓名"<<p->name<<" 年齡"<<p->age<<" "<<p->yanzhi<<" "<<endl;
p=p->next;
}
return 0;
}