日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C / C++ 经典代码和常考类型

發(fā)布時(shí)間:2025/3/8 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C / C++ 经典代码和常考类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • C語言常考類型
  • 經(jīng)典代碼
    • 1) 兔子問題
    • 2) 斐波那契數(shù)列
    • 3) 百元買百雞
    • 4) 實(shí)心菱形
    • 5) 空心菱形
    • 6) 十進(jìn)制轉(zhuǎn)換為二進(jìn)制
    • 7) 水仙花
    • 8) 大數(shù)相加
    • 9) 冒泡排序
    • 10) 選擇排序
    • 11) 打印字母V
    • 12) 打印空心等腰三角形
    • 13) 打印大寫字母Y
    • 14 ) 判斷輸入字符是否為回文數(shù)
    • 15) 利用sort函數(shù)進(jìn)行排序
    • 16) 利用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的相加
    • 17) 利用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換
    • 18) 解一元二次方程組
    • 19)冒泡排序與交換排序的結(jié)合
    • 20) 倒序輸出
    • 21)八皇后問題
    • 22)漢諾塔問題
    • 23)數(shù)組的行列互換
    • 24)求1000內(nèi)的完全數(shù)
    • 25) 輾轉(zhuǎn)相除法
    • 26) 回文串
    • 27)采用非strcat和strcat方式實(shí)現(xiàn)字符串的連接
    • 28)用宏定義計(jì)算兩個(gè)數(shù)的和
    • 29)逆序輸出

C語言常考類型

(1)求及格人數(shù)或平均成績(jī)或最大最小成績(jī),素?cái)?shù),水仙花,完數(shù),選擇排序,加密(字母循環(huán)移動(dòng)),自定義函數(shù)的定義與調(diào)用,求階乘
(2)最大公約數(shù)和最小公倍數(shù),文件讀寫,遞歸函數(shù)與遞歸調(diào)用,Fibonacci數(shù)列
(3)指針變量做函數(shù)參數(shù),數(shù)組做函數(shù)參數(shù), 結(jié)構(gòu)體類型定義以及結(jié)構(gòu)體變量的定義, 聯(lián)合,指針與結(jié)構(gòu)體變量,二重循環(huán),指針與一維數(shù)組,二維數(shù)組
(4)自增運(yùn)算++,自減運(yùn)算–,基礎(chǔ)知識(shí)(背誦),求累加和,交換兩個(gè)變量的值,switch, 一維數(shù)組
函數(shù)的調(diào)用

#include<stdio.h> int fun(int x, int y); // 函數(shù)聲明,如果函數(shù)寫在被調(diào)用處之前,可以不用聲明 void main() {int a=1, b=2, c;c = fun(a, b); // 函數(shù)的調(diào)用,調(diào)用自定義函數(shù)fun,其中a,b為實(shí)際參數(shù),傳遞給被調(diào)用函數(shù)的輸入值 } // 自定義函數(shù)fun int fun(int x, int y) // 函數(shù)首部 { // {}中的語言為函數(shù)體return x>y ? x : y; // 返回x和y中較大的一個(gè)數(shù) }

自加與自減

a++ //是先執(zhí)行表達(dá)式后再自增,執(zhí)行表達(dá)式時(shí)使用的是a的原值。 ++a //先自增再執(zhí)行表達(dá)示,執(zhí)行表達(dá)式時(shí)使用的是自增后的a。 int a=0 printf("%d",a++); //輸出0,執(zhí)行完后a=1int a=0 printf("%d",++a);//輸出1,執(zhí)行完后a=1

經(jīng)典代碼

1) 兔子問題

#include<stdio.h> int main() {int f1=1,f2=1;int i;for(i=1; i<20; i++) {printf("%12d %12d",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f2+f1;}return 0; }

2) 斐波那契數(shù)列

#include<iostream> using namespace std; int main() {int f1=0,f2=1,t,n=1;cout<<"數(shù)列第1個(gè):"<<f1<<endl;cout<<"數(shù)列第2個(gè):"<<f2<<endl;for(n=3; n<=20; n++) {t=f2;f2=f1+f2;f1=t;cout<<"數(shù)列第"<<n<<"個(gè):"<<f2<<endl;}cout<<endl;return 0; }

斐波那契數(shù)列的應(yīng)用

#include<stdio.h> int main() {int i,m;int n;printf("輸入要求的項(xiàng)數(shù):");scanf("%d",&n);float num1=2,num2=1,sum=0;for(i=1; i<=n; i++) {sum=sum+num1/num2;m=num1;num1=num1+num2;num2=m;}printf("sum=%.2f",sum); }

3) 百元買百雞

#include <stdio.h> #include <math.h>void swap(int x,int y,int z) {for(x=1; x<=20; x++)for(y=1; y<=33; y++) {z=100-x-y;if(x*5+y*3+z/3.0==100)printf("x=%d y=%d z=%d\n",x,y,z);} } int main() {int x,y,z;swap(x,y,z);return 0; }

4) 實(shí)心菱形

#include<iostream> using namespace std; int main() {int i,j,k;int N;//控制菱形的大小N;cin>>N;//先打上邊的N行for(i=1; i<=N; i++) {for(j=1; j<=N-i; j++) {cout<<" ";//打印的空格數(shù)}for(k=1; k<=2*i-1; k++)cout<<"*";//星號(hào)數(shù)cout<<endl;}//下邊的N-1行for(i=N-1; i>=0; i--) {for(j=1; j<=N-i; j++) {cout<<" ";//打印的空格數(shù)}for(k=1; k<=2*i-1; k++)cout<<"*";//星號(hào)數(shù)cout<<endl;}return 0; }

5) 空心菱形

方法一:

#include<stdio.h> int main() {int a,n,i;scanf("%d",&a);for(n=1; n<=a/2+1; n++) { //n是行for(i=1; i<=a-n; i++)printf(" ");printf("*");for(i=1; i<=2*n-3; i++) {printf(" ");}if(n>1)printf("*");printf("\n");}for(n=a/2; n>0; n--) { //n是個(gè)數(shù)for(i=1; i<=a-n; i++) //這是個(gè)函數(shù)!a-n斜率為-1,a-n/2斜率為-2!printf(" ");printf("*");for(i=1; i<=2*n-3; i++) {printf(" ");}if(n>1)printf("*");printf("\n");}return 0; }

方法二:

#include<stdio.h> int main() {int i,j,k,line,m;printf("請(qǐng)輸入行數(shù):");scanf("%d",&line);m=(line+1)/2;for(i=1; i<=m; i++) {for(k=0; k<m-i; k++) {printf(" ");}printf("*");if(i==1) {printf("\n");continue;}for(j=0; j<2*i-3; j++){printf(" ");}printf("*");printf("\n");}for(i=m-1; i>0; i--) {for(k=0; k<m-i; k++) {printf(" ");}printf("*");if(i==1) {printf("\n");continue;}for(j=0; j<2*i-3; j++) {printf(" ");}printf("*");printf("\n");}return 0; }

方法三:

#include"stdio.h" #include"math.h" int main() {int i,j,n;scanf("%d",&n);for(i=-n; i<=n; i++) {for(j=-n; j<=n; j++)if(abs(i)+abs(j)==n) printf("*");else printf(" ");printf("\n");} }

6) 十進(jìn)制轉(zhuǎn)換為二進(jìn)制

#include<stdio.h> int main() {int a,i=2,j=0;int b[100];scanf("%d",&a);while(i>=1) {i=a/2;if(i*2==a) {b[j++]=0;} else {b[j++]=1;}a=i;}for(j-=1; j>=0; j--)printf("%d",b[j]);return 0; }

7) 水仙花

#include<iostream> using namespace std;void a1() {int count =0;int x,backNum,befNum,t,num;cout<<"請(qǐng)輸入一個(gè)三位數(shù):"<<endl;cin>>x;t=x;for(int i=1; i<=3; i++) {backNum=x%10;befNum=x/10;x=befNum;num=backNum*backNum*backNum;count+=num;}cout<<"x="<<t<<endl;cout<<"count="<<count<<endl;if(count==t) {cout<<"Yes"<<endl;} else cout<<"No"<<endl; }int main() {a1();return 0; }

8) 大數(shù)相加

#include<iostream> #include<string> #include<algorithm> using namespace std;string addStringString(string a, string b) {string s = "";reverse(a.begin(), a.end());reverse(b.begin(), b.end());int i = 0, m=0, k = 0;while(a[i] && b[i]) {m = a[i] - '0' + b[i] - '0' + k;k = m/10;s += m%10 + '0';i++;}if(i == a.size()) {while(i != b.size()) {m = b[i] - '0' + k;k = m/10;s += m%10 + '0';i++;}if(k != 0) {s += (k+'0');}} else if(i == b.size()) {while(i != a.size()) {m = a[i] - '0' + k;k = m/10;s += m%10 + '0';i++;}if(k != 0) {s += (k+'0');}}reverse(s.begin(), s.end());return s; } int main() {string a;string b;cin >> a >> b;cout << addStringString(a,b) << endl; }

9) 冒泡排序

1)一維冒泡

#include<stdio.h> int main() { int a[10]={1,2,3,4,5,6,7,8,10,9};int i=0,j=0;int t;for(i=0;i<10;i++){for(j=0;j<10-1;j++){if(a[j]>a[j+1]){int t=a[j];a[j]=a[j+1];a[j+1]=t;}}}printf("排好的數(shù)列為:\n");for(i=0;i<10;i++){printf("%2d ",a[i]);}}

2)二維冒泡:

#include<stdio.h> int main() {int a[3][3]= {{1,2,3},{4,5,6},{7,8,9}};int i,j,k;for(i=0; i<3; i++)for(j=0; j<2; j++) {if(a[i][j]>a[i][j+1]) {k=a[i][j];a[i][j]=a[i][j+1];a[i][j+1]=k;}}for(i=0; i<3; i++)for(j=0; j<3; j++)printf("%4d",a[i][j]); }

10) 選擇排序

#include <stdio.h> int main() {int i,j,t,a[11]; //定義變量及數(shù)組為基本整型printf("請(qǐng)輸入10個(gè)數(shù):\n");for(i=1; i<11; i++)scanf("%d",&a[i]); //從鍵盤中輸入要排序的10個(gè)數(shù)字for(i=1; i<10; i++)for (j=i+1; j<11; j++)if(a[i]>a[j]) { //如果前一個(gè)數(shù)比后一個(gè)數(shù)大,則利用中間變量t實(shí)現(xiàn)兩值互換t=a[i];a[i]=a[j];a[j]=t;}printf("排序后的順序是:\n");for(i=1; i<11; i++)printf("%5d", a[i]); //輸出排序后的數(shù)組printf("\n");return 0; }

11) 打印字母V

#include<stdio.h> int main() {int line;int i;scanf("%d",&line);int n=(line+1)/2;for(int i=n; i>0; i--) {for(int k=0; k<n-i; k++) {printf(" ");}printf("*");if(i==1) {printf("\n");continue;}for(int j=0; j<2*i-3; j++) {printf(" ");}printf("*");printf("\n");}}

12) 打印空心等腰三角形

#include <iostream> #include <string> using namespace std;void PriTriangle(int n) {for(int i=1; i<=n; ++i) {for(int j=1; j<=n-i; ++j) {cout<<" ";}for(int k=1; k<=2*i-1; ++k) {if(i==1 || i==n)cout<<"*";else {if(k==1 || k==2*i-1)cout<<"*";elsecout<<" ";}}cout<<"\n";} }int main() {cout<<"please input a number: ";int n;cin>>n;PriTriangle(n);}

13) 打印大寫字母Y

#include<iostream> using namespace std; int main() {int n;cin>>n;int m=(n+1)/2;for(int i=m; i>=1; i--) {for(int k=1; k<=m-i; k++)cout<<" ";for(int j=1; j<=2*i-1; j++) {if(j==1||j==2*i-1) {cout<<"*";} else {cout<<" ";}}cout<<endl;}for(int i=0; i<m; i++) {for(int k=1; k<=m-1; k++) {cout<<" ";}cout<<"*"<<endl;}return 0; }

14 ) 判斷輸入字符是否為回文數(shù)

#include<stdio.h> #include<string.h> int main() {char s[100];int i,j,n;printf("輸入字符串:\n");gets(s);n=strlen(s);for(i=0,j=n-1; i<j; i++,j--)if(s[i]!=s[j])break;if(i>=j)printf("是回文串\n");elseprintf("不是回文串\n");return 0; }

15) 利用sort函數(shù)進(jìn)行排序

#include<iostream> #include<string> #include<algorithm>using namespace std; //bool cmp(int a,int b) //{ // return a>b; //} int main() {int a[10]={5,1,0,3,7,8,4,6,9,2};sort(a,a+10); // sort(a,a+10,cmp);for(int i=0;i<10;i++){cout<<a[i]<<" ";}return 0; }

16) 利用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的相加

#include<stdio.h> float add(float x,float y) {float z;z=x+y;return (z); } int main() {float add(float x,float y);float a,b,c;scanf("%f%f",&a,&b);c=add(a,b);printf("sum is %f",c);return 0; }

17) 利用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換

#include<stdio.h> void swap(int *a,int *b) {int temp;temp = *a;*a = *b;*b = temp; } int main() {int a,b;scanf("%d%d",&a,&b);swap(&a,&b);printf("%d %d\n",a,b);return 0; }

18) 解一元二次方程組

#include<stdio.h> #include<math.h> int main() {double a,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);return 0; }

19)冒泡排序與交換排序的結(jié)合

#include<stdio.h> void swap(int *a,int *b) {int temp=*a;*a=*b;*b=temp; }void b_sort(int a[]) {int t;for(int i=0; i<10; i++) {for(int j=0; j<9; j++) {if(a[j]>a[j+1]) { // t=a[j]; // a[j]=a[j+1]; // a[j+1]=t;swap(&a[j],&a[j+1]);}}}} int main() {int a[10]= {1,2,3,4,-5,6,7,8,9,10};b_sort(a);for(int i=0; i<10; i++) {printf("%4d",a[i]);}}

20) 倒序輸出

#include<stdio.h> int main() {int i,j;int t;int a[8];printf("請(qǐng)輸入7個(gè)數(shù):"); for(i=1;i<8;i++)scanf("%d",&a[i]);for(i=0;i<8;i++)for(j=1;j<7;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}printf(" ");for(i=1;i<=7;i++)printf("%5d",a[i]); }

21)八皇后問題

#include <iostream> #include <cmath> #define N 8 using namespace std; int board[N+1],cnt; bool judge(int l,int n) { //判斷在第l行第n個(gè)位置放是否合法for(int i=1; i<=l-1; ++i)if(board[i]==n||abs(board[i]-n)==abs(i-l))return false;return true; } void print() {for(int i=1; i<=N; ++i) {for(int j=1; j<board[i]; ++j)cout<<'*';cout<<'Q';for(int j=board[i]+1; j<=N; ++j)cout<<'*';cout<<endl;}cout<<endl; } void dfs(int l) {for(int i=1; i<=N; ++i) {if(judge(l,i)) {board[l]=i;if(l==N) {print();++cnt;} elsedfs(l+1);}} } int main() {dfs(1);cout<<cnt;//輸出答案總數(shù)return 0; }

22)漢諾塔問題

#include<stdio.h> int main() {void hanoi(int n,char one,char two,char three);int m;printf("input the number of diskes:");scanf("%d",&m);printf("The step to move %d diskes:\n",m);hanoi(m,'A','B','C'); } void hanoi(int n,char one,char two,char three){void move(char x,char y);if(n==1)move(one,three);else{hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);}} void move(char x,char y) {printf("%c->%c\n",x,y); }

23)數(shù)組的行列互換

#include<iostream> using namespace std; main() {int t,i,j,r[3][3]= {{1,2,3},{7,8,9}}; //定義要交換的數(shù)組r,大小為3*3,實(shí)際只使用了2*3for(i=0; i<2; i++) { //r的大小是2*3,把2*3變?yōu)?*2for(j=i; j<3; j++) {t=r[i][j];r[i][j]=r[j][i];r[j][i]=t;//交換過程,相當(dāng)于交換了下標(biāo)}}for(i=0; i<3; i++) { //顯示,因?yàn)?*3已經(jīng)是3*2了for(j=0; j<2; j++)printf("%d ",r[i][j]);printf("\n");} }

24)求1000內(nèi)的完全數(shù)

#include<stdio.h> #define N 1000 int main() {int i,m,g;for(m=2;m<=N;m++){g=0;for(i=1;i<m;i++){if(m%i==0)g=g+i; } if(g==m){printf("完數(shù)%d的因子是:\n",m); for(i=1;i<m;i++){if(m%i==0){printf("%d\t\n",i);}}}}return 0;}

25) 輾轉(zhuǎn)相除法

#include<stdio.h>int main() {int u=32;int v=26;while(v!=0) {int temp=u%v;u=v;v=temp;}printf("%d",u);return 0; }

如果v等于0,計(jì)算結(jié)束,u就是最大公約數(shù)
如果v不等于0,那么計(jì)算u除以v的余數(shù),讓u等于v,而v等于那個(gè)余數(shù)
回到第一步

26) 回文串

#include<iostream> #include<string.h> using namespace std;int main() {//char str[20];string str;int i,n;cin>>str;//scanf("%s",str);//n=strlen(str);n = str.length();cout<<n<<endl;for(i=0; i<=n/2; i++) {if(str[i]!=str[n-1-i]) {printf("N\n");break;} else {if(i==n/2)printf("Y\n");}}return 0;}

27)采用非strcat和strcat方式實(shí)現(xiàn)字符串的連接

本題要求編寫程序,實(shí)現(xiàn)兩個(gè)字符串的連接,并將連接后的字符串輸出。

輸入格式:
輸入一行以回車結(jié)束的非空字符串(不超過20個(gè)字符),再輸入一行以回車結(jié)束的非空字符串(不超過20個(gè)字符)。

輸出格式:
一行輸出倆字符串連接后新的字符串。

輸入樣例:
Hello_
China
輸出樣例:
Hello_China

解題一:

非空字符串但是字符串中可能含有空格,用scanf不會(huì)通過,采用gets函數(shù)。

#include<stdio.h> #include<string.h> int main(){char a[100],b[100];gets(a);gets(b);int extent=strlen(a);int extent2=strlen(b);int i=0;while(i<=extent2){a[extent++]=b[i++];}puts(a);}

解題二
采用strcat函數(shù)實(shí)現(xiàn)字符串的連接

#include<stdio.h> #include<string.h> int main(){char a[100],b[100]; // strcpy(a,"Hello_"); // strcpy(b,"China");scanf("%s",&a);scanf("%s",&b);strcat(a,b);printf("%s",a);return 0; }

28)用宏定義計(jì)算兩個(gè)數(shù)的和

#include <cstdio> #include <iostream> #define lol long long int #define A using #define Long namespace #define time std #define ago ; #define Here int #define was main #define a () #define monkey { #define called lol x,y; #define Jack cin>>x>>y; #define ak cout<<x+y; #define ioi return 0; #define Orz } A Long time ago Here was a monkey called Jack ak ioi Orz

輸出結(jié)果圖如下:

29)逆序輸出

#include<stdio.h> #include<string.h> int main() {char s[10];scanf("%s",s);int len=strlen(s);int flag=0;for(int i=len-1;i>=0;i--){if(s[i]=='0' && !flag)continue;if(s[i]!='0' && !flag) {printf("%c",s[i]);flag=1;continue;}printf("%c",s[i]);} printf("\n");return 0; } #include<stdio.h>int main(){int a=1; // printf("%d %d %d",++a,a++,a);printf("%d %d %d",a++,++a,a);return 0; }

總結(jié)

以上是生活随笔為你收集整理的C / C++ 经典代码和常考类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。