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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

蓝桥杯练习系统习题-算法训练5

發布時間:2025/3/20 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯练习系统习题-算法训练5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章推薦

  • 精選java等全套學習資源
  • 精選java電子圖書資源
  • 精選大數據學習資源
  • java項目練習精選

藍橋杯練習系統習題-算法訓練5

題目搜索方式:Ctrl+F—-> 輸入題目名稱—>定位到解答.

入門訓練(詳見 算法-藍橋杯習題(1-1))

基礎練習(詳見 算法-藍橋杯習題(2-1))

基礎練習(詳見 算法-藍橋杯習題(2-2))

算法訓練(詳見 算法-藍橋杯習題(3-1))

算法訓練(詳見 算法-藍橋杯習題(3-2))

算法訓練(詳見 算法-藍橋杯習題(3-3))

算法訓練(詳見 算法-藍橋杯習題(3-4))

算法訓練(詳見 算法-藍橋杯習題(3-5))

算法訓練(詳見 算法-藍橋杯習題(3-6))

算法提高(詳見 算法-藍橋杯習題(4-1))

算法提高(詳見 算法-藍橋杯習題(4-2))

歷屆試題(詳見 算法-藍橋杯習題(5-1))

歷屆試題(詳見 算法-藍橋杯習題(5-2))

算法訓練 輸出米字形

根據輸入的正整數n (1  米字形由一個(2n-1)*(2n-1)的矩陣組成,矩陣包含從大寫A開始的n個字母
  例如:n=3時,包含A,B,C;n=4時,包含A,B,C,D。
  矩陣的正中間為n個字母中字典序最大的那個,從這個字母開始,沿著西北、正北、東北、正西、正東、西南、正南、東南八個方向各有一條由大寫字母組成的直線。并且直線上的字母按字典序依次減小,直到大寫字母A。
  矩陣的其它位置用英文句號.填充。

  樣例輸入一
  3

  樣例輸出一
  A.A.A
  .BBB.
  ABCBA
  .BBB.
  A.A.A

  樣例輸入二
  4

  樣例輸出二
  A..A..A
  .B.B.B.
  ..CCC..
  ABCDCBA
  ..CCC..
  .B.B.B.
  A..A..A

#include <stdio.h> int main() { int n,i,j,k,t; scanf("%d",&n); char a[2*n-1][2*n-1]; for(i=0;i<2*n-1;i++) for(j=0;j<2*n-1;j++) a[i][j]=0; k=n; for(i=0;i<n-1;i++) //行數 { k--; //k為字符間隔 t=i; for(j=1;j<=3;j++) { a[i][t]='A'+i; t+=k; } } for(i=0;i<n;i++) //中間一行 { a[n-1][i]='A'+i; a[n-1][2*n-2-i]='A'+i; } for(i=0;i<=n-2;i++) //填補句號 for(j=0;j<2*n-1;j++) { if(a[i][j]==0) a[i][j]='.'; } for(i=0;i<=n-2;i++) //翻轉 for(j=0;j<2*n-1;j++) a[2*n-2-i][j]=a[i][j]; for(i=0;i<2*n-1;i++) { for(j=0;j<2*n-1;j++) printf("%c",a[i][j]); printf("\n"); } return 0; }

算法訓練 階乘

問題描述
  一個整數n的階乘可以寫成n!,它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在一個整型變量中;而35!就更大了,它已經無法存放在一個浮點型變量中。因此,當n比較大時,去計算n!是非常困難的。幸運的是,在本題中,我們的任務不是去計算n!,而是去計算n!最右邊的那個非0的數字是多少。例如,5! = 12345 = 120,因此5!最右邊的那個非0的數字是2。再如:7! = 5040,因此7!最右邊的那個非0的數字是4。請編寫一個程序,輸入一個整數n(n<=100),然后輸出n! 最右邊的那個非0的數字是多少。
  輸入格式:輸入只有一個整數n。
  輸出格式:輸出只有一個整數,即n! 最右邊的那個非0的數字。
  輸入輸出樣例
樣例輸入
6
樣例輸出
2

#include<stdio.h> int main(void) { int n; int i; int sum=1; scanf("%d",&n); for(i=n;i>=1;i--) { sum = sum*i; while(sum%10==0) sum=sum/10; if(sum/100>0) sum=sum%100; } printf("%d",sum%10); return 0; }

算法訓練 進制轉換

問題描述
  編寫一個程序,輸入一個二進制的字符串(長度不超過32),然后計算出相應的十進制整數,并把它打印出來。
  輸入格式:輸入為一個字符串,每個字符都是’0’或’1’,字符串的長度不超過32。
  輸出格式:輸出一個整數。
  輸入輸出樣例
樣例輸入
1101
樣例輸出
13

#include <stdio.h> #include <math.h> #include <string.h> #define MaxSize 32 void print2Return10(char str[]) { long long int num=0; int lenth=strlen(str),i; for(i=0;i<lenth;i++) { if(str[i]!='0') { num+=pow(2,lenth-i-1); } } printf("%lld\n",num); return ; } main() { char str[MaxSize]; gets(str); print2Return10(str); return 0; }

算法訓練 字串統計

問題描述
  給定一個長度為n的字符串S,還有一個數字L,統計長度大于等于L的出現次數最多的子串(不同的出現可以相交),如果有多個,輸出最長的,如果仍然有多個,輸出第一次出現最早的。
輸入格式
  第一行一個數字L。
  第二行是字符串S。
  L大于0,且不超過S的長度。
輸出格式
  一行,題目要求的字符串。

  輸入樣例1:
  4
  bbaabbaaaaa

  輸出樣例1:
  bbaa

  輸入樣例2:
  2
  bbaabbaaaaa

  輸出樣例2:
  aa
數據規模和約定
  n<=60
  S中所有字符都是小寫英文字母。

  提示
  枚舉所有可能的子串,統計出現次數,找出符合條件的那個

#include<stdio.h> #include<string.h> char b[60][60]; int c[60]; int main() { int l,i1,max=1,now=0,maxn=1,i2,weizhi=0,i3,i4,weizhi1,changdu1=-1; char a[10000]; scanf("%d",&l); getchar(); gets(a); int n=strlen(a); for(i1=n;i1>=l;i1--)//長度 { weizhi=0; for(i3=0;i3<n-i1;i3++) c[i3]=0; for(i2=0;i2<n;i2++)//開始位置 { if(i2+i1>n) break; int ok=1; for(i3=0;i3<weizhi;i3++)//b的位置 { int ko=1; for(i4=0;i4<i1;i4++) { if(b[i3][i4]!=a[i2+i4]) ko=0; } if(ko) { ok=0; c[i3]++; if(c[i3]>max) {max=c[i3]; changdu1=i1; weizhi1=i2; } break; } } if(ok) { for(i4=0;i4<i1;i4++) { b[weizhi][i4]=a[i2+i4]; } c[weizhi]=1; weizhi++; } } } for(i1=weizhi1;i1<weizhi1+changdu1;i1++) printf("%c",a[i1]); printf("\n"); return 0; }

算法訓練 字符刪除

問題描述
  編寫一個程序,先輸入一個字符串str(長度不超過20),再輸入單獨的一個字符ch,然后程序會把字符串str當中出現的所有的ch字符都刪掉,從而得到一個新的字符串str2,然后把這個字符串打印出來。
  輸入格式:輸入有兩行,第一行是一個字符串(內部沒有空格),第二行是一個字符。
  輸出格式:經過處理以后的字符串。
  輸入輸出樣例
樣例輸入
123-45-678


  • 樣例輸出
    12345678
#include <stdio.h> #include <string.h> #define MaxSize 20+5 void printResult(char str[],char ch) { int i; for(i=0;i<strlen(str);i++) { if(str[i]!=ch) { printf("%c",str[i]); } } printf("\n"); } main() { char ch,str[MaxSize]; //if(scanf("%s %c",str,&ch)!=EOF) if(gets(str)!=NULL) { scanf("%c",&ch); printResult(str,ch); } return 0; }

算法訓練 反置數

問題描述
  一個整數的“反置數”指的是把該整數的每一位數字的順序顛倒過來所得到的另一個整數。如果一個整數的末尾是以0結尾,那么在它的反置數當中,這些0就被省略掉了。比如說,1245的反置數是5421,而1200的反置數是21。請編寫一個程序,輸入兩個整數,然后計算這兩個整數的反置數之和sum,然后再把sum的反置數打印出來。要求:由于在本題中需要多次去計算一個整數的反置數,因此必須把這部分代碼抽象為一個函數的形式。
  輸入格式:輸入只有一行,包括兩個整數,中間用空格隔開。
  輸出格式:輸出只有一行,即相應的結果。
  輸入輸出樣例
樣例輸入
435 754
樣例輸出
199

#include <stdio.h> #include <math.h> int getTheNumber(int num) { int number=1,i,j=1,flag=0; if(!num) return 0; while(num) { i=num%10; if(i||flag) { if(!flag) { number=i; } else { number=number*10+i; } flag=1; } num/=10; } return number; } main() { int n,m; scanf("%d%d",&n,&m); printf("%d\n",getTheNumber(getTheNumber(n)+getTheNumber(m))); return 0; }

算法訓練 新生舞會

問題描述
  新生舞會開始了。n名新生每人有三個屬性:姓名、學號、性別。其中,姓名用長度不超過20的僅由大小寫字母構成的字符串表示,學號用長度不超過10的僅由數字構成的字符串表示,性別用一個大寫字符‘F’或‘M’表示。任意兩人的姓名、學號均互不相同。換言之,每個人可被其姓名或學號唯一確定。給出m對兩人的信息(姓名或學號),判斷他們是否能共舞。兩人能共舞的充要條件為兩人性別相異。
輸入格式
  第一行一個整數n(2<=n<=1000),表示學生人數。接下來的n行每行依次包含一名新生的姓名、學號、性別,分別用一個空格隔開。
  之后的一行是一個整數m(1<=m<=1000),表示詢問的數目。接著的m行每行包含兩個信息(姓名或學號),保證兩個信息不屬于同一人,中間用一個空格隔開。
輸出格式
  對于每個詢問輸出一行,如果兩人可以共舞,輸出一個大寫字母‘Y’,否則輸出一個大寫字母‘N’。
樣例輸入
4
John 10 M
Jack 11 M
Kate 20 F
Jim 21 M
3
John 11
20 Jack
Jim Jack
樣例輸出
N
Y
N

提示
可以把名字和學號都當成字符串處理。可以按以下流程實現。

#include<iostream> #include<cstring> using namespace std; struct tstudent { char name[21]; char num[21]; char sex; }; void readdata(tstudent student[], int n) { 輸入N個學生的信息 } int findstudent(tstudent student[], int n, char* data) { if (data == NULL) return -1; 判斷是否有某個學生的學號或名字等于data,如果有,函數返回該學生在student數組中的序號,否則返回-1 } void solve(tstudent student[], int n, int m) { char x[21], y[21]; for (int i=0; i<m; i++) { 輸入兩個人的信息X、Y。通過調用findstudent函數判斷這兩個人能否成為舞伴 } } int main() { int n, m; tstudent student[1010]; cin>>n; readdata(student, n); cin>>m; solve(student, n, m); } #include <stdio.h> #include <string.h> #define MaxSize 1000+5 typedef struct { char name[21]; char num[21]; char sex; }tstudent; void readdata(tstudent student[], int n) { int i; //輸入N個學生的信息 for(i=0;i<n;i++) { scanf("%s %s %c",student[i].name,student[i].num,&student[i].sex); } } int findstudent(tstudent student[], int n, char* data) { int i; if (data == NULL) { return -1; } //判斷是否有某個學生的學號或名字等于data,如果有,函數返回該學生在student數組中的序號,否則返回- for(i=0;i<n;i++) { if(!strcmp(data,student[i].name)||!strcmp(data,student[i].num)) return i; } return -1; } void solve(tstudent student[], int n, int m) { char x[21], y[21]; int i,a,b; for (i=0; i<m; i++) { //輸入兩個人的信息X、Y。通過調用findstudent函數判斷這兩個人能否成為舞伴 scanf("%s %s",x,y); if((a=findstudent(student,n,x))!=-1&&(b=findstudent(student,n,y))!=-1) { if(student[a].sex!=student[b].sex) printf("Y\n"); else printf("N\n"); } else { printf("N\n"); } } } int main() { int n, m; tstudent student[MaxSize]; scanf("%d",&n); readdata(student, n); scanf("%d",&m); solve(student, n, m); return ; }

算法訓練 Hello World!

描述
  本題定義本學期作業題的輸出格式,請認真閱讀。
  如無特殊說明,開頭無空格,間隔符為1個空格,答案最后必須輸出換行符("\n")。
輸入格式
  無
輸出格式
  Hello World!

#include <stdio.h> main() { printf("Hello World!\n"); return 0; }

算法訓練 數位分離

問題描述
  編寫一個程序,輸入一個1000 以內的正整數,然后把這個整數的每一位數字都分離出來,并逐一地顯示。
  輸入格式:輸入只有一行,即一個1000以內的正整數。
  輸出格式:輸出只有一行,即該整數的每一位數字,之間用空格隔開。
  輸入輸出樣例
樣例輸入
769
樣例輸出
7 6 9

#include <stdio.h> void getResult(int num) { //出口 if(num<10) { printf("%d ",num); return ; } //遞歸 getResult(num/10); printf("%d ",num%10); } main() { int n; scanf("%d",&n); getResult(n); printf("\n"); return 0; }

算法訓練 薪水計算

問題描述
  編寫一個程序,計算員工的周薪。薪水的計算是以小時為單位,如果在一周的時間內,員工工作的時間不超過40 個小時,那么他/她的總收入等于工作時間乘以每小時的薪水。如果員工工作的時間在40 到50 個小時之間,那么對于前40 個小時,仍按常規方法計算;而對于剩余的超額部分,每小時的薪水按1.5 倍計算。如果員工工作的時間超過了50 個小時,那么對于前40 個小時,仍按常規方法計算;對于40~50 個小時之間的部分,每小時的薪水按1.5 倍計算;而對于超出50 個小時的部分,每小時的薪水按2 倍計算。請編寫一個程序,輸入員工的工作時間和每小時的薪水,然后計算并顯示他/她應該得到的周薪。
  輸入格式:輸入只有一行,包括一個整數和一個實數,分別表示工作時間和每小時薪水。
  輸出格式:輸出只有一個實數,表示周薪,保留小數點后2位。
  輸入輸出樣例
樣例輸入
40 50
樣例輸出
2000.00

#include <stdio.h> main() { int time; float money,sum; scanf("%d%f",&time,&money); if(time<=40) { sum=time*money; printf("%.2f\n",sum); } else { time-=40; if(time<=10) { sum=time*money*1.5+40*money; printf("%.2f\n",sum); } else { time-=10; sum=time*money*2+10*money*1.5+40*money; printf("%.2f\n",sum); } } return 0; }

算法訓練 整除問題

問題描述
  編寫一個程序,輸入三個正整數min、max和factor,然后對于min到max之間的每一個整數(包括min和max),如果它能被factor整除,就把它打印出來。
  輸入格式:輸入只有一行,包括三個整數min、max和factor。
  輸出格式:輸出只有一行,包括若干個整數。
  輸入輸出樣例
樣例輸入
1 10 3
樣例輸出
3 6 9

#include <stdio.h> void getResult(int min,int max,int factor) { int i; for(i=min;i<=max;i++) { if(i%factor==0) { printf("%d ",i); } } printf("\n"); return ; } main() { int min,max,factor; scanf("%d%d%d",&min,&max,&factor); getResult(min,max,factor); return 0; }

總結

以上是生活随笔為你收集整理的蓝桥杯练习系统习题-算法训练5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。