zoukankan      html  css  js  c++  java
  • 蓝桥复习1

    项目一:汉诺塔

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 void hano(int n,char A,char B,char C);
     5 
     6 int main() {
     7     hano(4,'A','B','C');
     8     getchar(); 
     9     return 0;
    10 }
    11 /*
    12 n 表示要移动盘子的个数
    13 后面的 ABC 第一个是盘子的位置 最后一个是盘子 要移动的位置 
    14 */
    15 void hano(int n,char A,char B,char C)
    16 {
    17     if(n>=1)
    18     {
    19     hano(n-1,A,C,B);//把上面的n-1个盘子从A移动到B
    20     printf("第%d个%c--->%c
    ",n,A,C);//直接操作    
    21     hano(n-1,B,A,C); 
    22     } 
    23 }

    项目二:奖卷数目

    有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
    虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 void hano(int n,char A,char B,char C);
     5 
     6 int main() {
     7     int m=0,n=0,i,temp;
     8     for(i=10000;i<99999;i++)
     9     {
    10         temp=i; 
    11         while(temp>0)
    12         {
    13             m=temp%10;
    14             if(m==4)
    15             {
    16             n++;
    17             break;
    18             }
    19             temp/=10;
    20         }
    21     }
    22     printf("%d",99999-10000-n+1);
    23     getchar(); 
    24     return 0;
    25 }

    结果:52488

    项目三:星际炸弹


    在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
    每个炸弹都可以设定多少天之后爆炸。
    比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
    有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
    请填写该日期,格式为 yyyy-mm-dd  即4位年份2位月份2位日期。比如:2015-02-19
    请严格按照格式书写。不能出现其它文字或符号。
     1 #include <stdio.h>
     2 int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
     3 bool isleap(int year)
     4 {
     5     if((year%4==0&&year%100!=0)||year%400==0)
     6     return true;
     7     return false;
     8 }
     9 
    10 int main() {
    11     int year=2014;
    12     int sum=1000-52;//2014年还剩52天到期 直接用2015年1月1日来算 
    13     int sum1,month,day;
    14     while(true)
    15     {
    16         if(isleap(year+1))
    17         sum1=366;
    18         else
    19         sum1=365;
    20         if(sum<sum1)
    21         {
    22             year++;
    23             break;
    24         }
    25         else
    26         {
    27             year++;
    28             sum-=sum1;
    29         }
    30     } 
    31     if(isleap(year))
    32     {
    33         mon[2]++;
    34     }
    35     for(int i=1;i<=12;i++)
    36     {
    37         if(sum>mon[i])
    38         {
    39             sum-=mon[i];
    40         }
    41         else
    42         {
    43             month=i;
    44             break;
    45         }
    46     }
    47     day=sum;
    48     printf("%d %d %d",year,month,day);
    49     return 0;
    50 }

    项目四:三羊献瑞

    观察下面的加法算式:
          祥 瑞 生 辉
      +  三 羊 献 瑞
    -------------------
       三 羊 生 瑞 气
    (如果有对齐问题,可以参看【图1.jpg】)
    其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
    请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
     1 #include <stdio.h>
     2 int main()
     3 {
     4     int a1,a2,a3,a4,a5,a6,a7;
     5     long temp1,temp2,result;
     6     for(a1=1;a1<10;a1++)
     7     {
     8         for(a2=0;a2<10;a2++)
     9         {
    10             for(a3=0;a3<10;a3++)
    11             {
    12                 for(a4=0;a4<10;a4++)
    13                 {
    14                     for(a5=0;a5<10;a5++)
    15                     {
    16                         for(a6=0;a6<10;a6++)
    17                         {
    18                             for(a7=0;a7<10;a7++)
    19                             {
    20                                 temp1=a1*1000+a2*100+a3*10+a4;
    21                                 temp2=1000+a5*100+a6*10+a2;
    22                                 result= 10000+a5*1000+a3*100+a2*10+a7;
    23                                 if(a1==a2||a1==a3||a1==a4||a1==a5||a1==a6||a1==a7||a2==a3||a2==a4||a2==a5||a2==a6||a2==a7||a3==a4||a3==a5||a3==a6||a3==a7||a4==a5||a4==a6||a4==a7||a5==a6||a5==a7||a6==a7||a7==1)
    24                                 continue; 
    25                                 if(temp1+temp2==result)
    26                                 {
    27                                     printf("%ld+%ld=%ld
    ",temp1,temp2,result);
    28                                 }
    29                             }
    30                         }
    31                     }
    32                 }
    33             }
    34         }
    35     }
    36     
    37     getchar();
    38     return 0;
    39 }

    项目五:格子中输出

    StringInGrid函数会在一个指定大小的格子中打印指定的字符串。
    要求字符串在水平、垂直两个方向上都居中。
    如果字符串太长,就截断。
    如果不能恰好居中,可以稍稍偏左或者偏上一点。
    下面的程序实现这个逻辑,请填写划线部分缺少的代码。
    #include <stdio.h>
    #include <string.h>
    
    void StringInGrid(int width, int height, const char* s)
    {
    	int i,k;
    	char buf[1000];
    	strcpy(buf, s);
    	if(strlen(s)>width-2) buf[width-2]=0;
    	
    	printf("+");
    	for(i=0;i<width-2;i++) printf("-");
    	printf("+
    ");
    	
    	for(k=1; k<(height-1)/2;k++){
    		printf("|");
    		for(i=0;i<width-2;i++) printf(" ");
    		printf("|
    ");
    	}
    	
    	printf("|");
    	
    	printf("%*s%s%*s",_____________________________________________);  //填空
    	          
    	printf("|
    ");
    	
    	for(k=(height-1)/2+1; k<height-1; k++){
    		printf("|");
    		for(i=0;i<width-2;i++) printf(" ");
    		printf("|
    ");
    	}	
    	
    	printf("+");
    	for(i=0;i<width-2;i++) printf("-");
    	printf("+
    ");	
    }
    
    int main()
    {
    	StringInGrid(20,6,"abcd1234");
    	return 0;
    } 

    对于题目中数据,应该输出:
    +------------------+
    |                  |
    |     abcd1234     |
    |                  |
    |                  |
    +------------------+

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 void StringInGrid(int width, int height, const char* s)
     5 {
     6     int i,k;
     7     char buf[1000];
     8     strcpy(buf, s);
     9     if(strlen(s)>width-2) buf[width-2]=0;
    10     
    11     printf("+");
    12     for(i=0;i<width-2;i++) printf("-");
    13     printf("+
    ");
    14     
    15     for(k=1; k<(height-1)/2;k++){
    16         printf("|");
    17         for(i=0;i<width-2;i++) printf(" ");
    18         printf("|
    ");
    19     }
    20     
    21     printf("|");
    22     
    23     printf("%*s%s%*s",(width-strlen(buf)-2)/2,"",buf, (width-1-strlen(s))/2, "");  //填空
    24               
    25     printf("|
    ");
    26     
    27     for(k=(height-1)/2+1; k<height-1; k++){
    28         printf("|");
    29         for(i=0;i<width-2;i++) printf(" ");
    30         printf("|
    ");
    31     }    
    32     
    33     printf("+");
    34     for(i=0;i<width-2;i++) printf("-");
    35     printf("+
    ");    
    36 }
    37 
    38 int main()
    39 {
    40     StringInGrid(20,6,"abcd1234");
    41     return 0;
    42 }
     
  • 相关阅读:
    java,php,js;AES 互通加解密
    将本地代码上传github
    为什么我们做分布式使用Redis?
    Git服务器环境搭建(打造属于自己的存储库)
    Redhat6.5——解决yum功能不能正常使用
    数据库设计——评论回复功能
    nginx 配置信息
    Linux常用基础命令整理:关机命令、查看目录下文件命令等
    【Qt】QTabWidget 竖向 QTabBar横向
    Google BreakPad使用集
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/10583979.html
Copyright © 2011-2022 走看看