zoukankan      html  css  js  c++  java
  • 算法-蓝桥杯习题(二)

    蓝桥杯习题

    蓝桥杯练习系统习题加答案更新新地址(已更新200左右习题)

    http://blog.csdn.net/rodestillfaraway 


    目录

    算法训练(详见 算法-蓝桥杯习题(一))Go

    算法训练(详见 算法-蓝桥杯习题(二))Go

    算法提高(waiting...)

    历届试题(详见 算法-蓝桥杯习题(六))Go

    历届试题(详见 算法-蓝桥杯习题(七))Go


    蓝桥杯练习系统评测数据

    链接:

    http://pan.baidu.com/s/1mhophTQ

    密码: m2pa


    算法训练(111题)

     

     1 /*
     2 算法训练 明明的随机数
     3 
     4 问题描述
     5   明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
     6 输入格式
     7   输入有2行,第1行为1个正整数,表示所生成的随机数的个数:
     8   N
     9   第2行有N个用空格隔开的正整数,为所产生的随机数。
    10 输出格式
    11   输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
    12 样例输入
    13 10
    14 20 40 32 67 40 20 89 300 400 15
    15 样例输出
    16 8
    17 15 20 32 40 67 89 300 400
    18 题目来源
    19   计13李震摘编自NOIP06PJ01
    20 */
    21 #include <stdio.h>
    22 #define MaxSize 100+5
    23 
    24 void printArray(int array[],int lenth)
    25 {
    26     int i;
    27     
    28     printf("%d
    ",lenth);
    29     for(i=0;i<lenth;i++)
    30     {
    31         printf("%d ",array[i]);
    32     }
    33     printf("
    ");
    34     
    35     return ;
    36 } 
    37 
    38 void sortArray(int array[],int lenth)
    39 {
    40     int i,j;
    41     
    42     for(i=0;i<lenth;i++)
    43     {
    44         for(j=lenth-1;j>i;j--)
    45         {
    46             if(array[j]<array[j-1])
    47             {
    48                 int temp;
    49                 temp=array[j];
    50                 array[j]=array[j-1];
    51                 array[j-1]=temp;
    52             }
    53         }
    54     }
    55     
    56     return ;
    57 } 
    58 
    59 main()
    60 {
    61     int N,m,i,j;
    62     int array[MaxSize];
    63     
    64     scanf("%d",&N);
    65     m=N;
    66     for(i=0;i<m;i++)
    67     {
    68         scanf("%d",&array[i]);
    69         for(j=0;j<i;j++)
    70         {
    71             if(array[i]==array[j])
    72             {
    73                 i--;
    74                 m--;
    75                 continue;
    76             }
    77         }
    78     }
    79     
    80     sortArray(array,m);
    81     
    82     printArray(array,m);
    83     
    84     return 0;
    85 }
      1 /*
      2 算法训练 字符串的展开
      3 
      4   在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获数字串替代其中的减号,即,将上面两个子串分别输出为“defgh”和“45678”。在本题中,我们通过增加一些参数的设置,使字符串的展开更为灵活。具体约定如下:
      5   (1) 遇到下面的情况需要做字符串的展开:在输入的字符串中,出现了减号“-”,减号两侧同为小写字母或同为数字,且按照ASCII码的顺序,减号右边的字符严格大于左边的字符。
      6   (2) 参数p1:展开方式。p1=1时,对于字母子串,填充小写字母;p1=2时,对于字母子串,填充大写字母。这两种情况下数字子串的填充方式相同。p1=3时,不论是字母子串还是数字字串,都用与要填充的字母个数相同的星号“*”来填充。
      7   (3) 参数p2:填充字符的重复个数。p2=k表示同一个字符要连续填充k个。例如,当p2=3时,子串“d-h”应扩展为“deeefffgggh”。减号两边的字符不变。
      8   (4) 参数p3:是否改为逆序:p3=1表示维持原来顺序,p3=2表示采用逆序输出,注意这时候仍然不包括减号两端的字符。例如当p1=1、p2=2、p3=2时,子串“d-h”应扩展为“dggffeeh”。
      9   (5) 如果减号右边的字符恰好是左边字符的后继,只删除中间的减号,例如:“d-e”应输出为“de”,“3-4”应输出为“34”。如果减号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,要保留中间的减号,例如:“d-d”应输出为“d-d”,“3-1”应输出为“3-1”。
     10 输入格式
     11   输入包括两行:
     12   第1行为用空格隔开的3个正整数,一次表示参数p1,p2,p3。
     13   第2行为一行字符串,仅由数字、小写字母和减号“-”组成。行首和行末均无空格。
     14 输出格式
     15   输出只有一行,为展开后的字符串。
     16 输入输出样例1
     17 输入格式
     18 输出格式
     19 1 2 1
     20 abcs-w1234-9s-4zz
     21 abcsttuuvvw1234556677889s-4zz
     22 输入输出样例2
     23 输入格式
     24 输出格式
     25 2 3 2
     26 a-d-d
     27 aCCCBBBd-d
     28 输入输出样例3
     29 输入格式
     30 输出格式
     31 3 4 2
     32 di-jkstra2-6
     33 dijkstra2************6
     34 数据规模和约定
     35   40%的数据满足:字符串长度不超过5
     36   100%的数据满足:1<=p1<=3,1<=p2<=8,1<=p3<=2。字符串长度不超过100
     37 */
     38 #include<stdio.h>
     39  #include<stdlib.h>
     40  #include<string.h>
     41  void fill(char a)
     42  {
     43  }
     44  int main()
     45  {
     46      char s[120]={0};
     47      memset(s,0,sizeof(s));
     48      int p1,p2,p3,i,j,k;
     49      scanf("%d%d%d",&p1,&p2,&p3);
     50      scanf("%s",s);
     51      for(i=0;i<strlen(s);i++)
     52      {
     53          if(s[i]=='-')
     54          {
     55              if(s[i-1]>='a' && s[i-1]<='z' && s[i+1]>='a' && s[i+1]<='z' && s[i+1]>s[i-1]
     56              || s[i-1]>='0' && s[i-1]<='9' && s[i+1]>='0' && s[i+1]<='9' && s[i+1]>s[i-1])
     57              {
     58                  if(p1==3)
     59                  {
     60                      for(j=1;j<=p2*(s[i+1]-s[i-1]-1);j++)
     61                      {
     62                          printf("*");
     63                      }
     64                  }
     65                  else
     66                  {
     67                      if(s[i-1]>='0' && s[i-1]<='9' && s[i+1]>='0' && s[i+1]<='9')
     68                      {
     69                          if(p3==1)
     70                          {
     71                              for(j=s[i-1]+1;j<=s[i+1]-1;j++)
     72                              {
     73                                  for(k=1;k<=p2;k++)
     74                                  {
     75                                      printf("%c",j);
     76                                  }
     77                              }
     78                          }
     79                          else
     80                          {
     81                              for(j=s[i+1]-1;j>=s[i-1]+1;j--)
     82                              {
     83                                  for(k=1;k<=p2;k++)
     84                                  {
     85                                      printf("%c",j);
     86                                  }
     87                              }
     88                          }
     89                      }
     90                      else
     91                      {
     92                          if(p3==1)
     93                          {
     94                              for(j=s[i-1]+1;j<=s[i+1]-1;j++)
     95                              {
     96                                  for(k=1;k<=p2;k++)
     97                                  {
     98                                      printf("%c",p1==1?j:j-32);
     99                                  }
    100                              }
    101                          }
    102                          else
    103                          {
    104                              for(j=s[i+1]-1;j>=s[i-1]+1;j--)
    105                              {
    106                                  for(k=1;k<=p2;k++)
    107                                  {
    108                                      printf("%c",p1==1?j:j-32);
    109                                  }
    110                              }
    111                          }
    112                      }
    113                  }
    114              }
    115              else
    116              {
    117                  printf("%c",s[i]);
    118              }
    119          }
    120          else
    121          {
    122              printf("%c",s[i]);
    123          }
    124      }
    125      return 0;
    126  }
     1 /*
     2 算法训练 貌似化学
     3 
     4 问题描述
     5   现在有a,b,c三种原料,如果他们按x:y:z混合,就能产生一种神奇的物品d。
     6   当然不一定只产生一份d,但a,b,c的最简比一定是x:y:z
     7   现在给你3种可供选择的物品:
     8   每个物品都是由a,b,c以一定比例组合成的,求出最少的物品数,使得他们能凑出整数个d物品(这里的最少是指三者个数的总和最少)
     9 输入格式
    10   第一行三个整数,表示d的配比(x,y,z)
    11   接下来三行,表示三种物品的配比,每行三个整数(<=10000)。
    12 输出格式
    13   四个整数,分别表示在最少物品总数的前提下a,b,c,d的个数(d是由a,b,c配得的)
    14   目标答案<=10000
    15   如果不存在满足条件的方案,输出NONE
    16 样例输入
    17 3 4 5
    18 1 2 3
    19 3 7 1
    20 2 1 2
    21 样例输出
    22 8 1 5 7
    23 */
     1 /*
     2 算法训练 最大体积
     3 
     4 问题描述
     5   每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积。假如每个物品有无限件可用,那么有些体积是永远也装不出来的。为了尽量装满背包,附中的OIER想要研究一下物品不能装出的最大体积。题目保证有解,如果是有限解,保证不超过2,000,000,000
     6   如果是无限解,则输出0
     7 输入格式
     8   第一行一个整数n(n<=10),表示物品的件数
     9   第2行到N+1行: 每件物品的体积(1<= <=500)
    10 输出格式
    11   一个整数ans,表示不能用这些物品得到的最大体积。
    12 样例输入
    13 3
    14 3
    15 6
    16 10
    17 样例输出
    18 17
    19 */
    20 #include <stdio.h>
    21 int n;
    22 int a[510];
    23 int f[100001];
    24 void swap(int *a,int *b)
    25 {
    26    int c;
    27    c=*a;
    28    *a=*b;
    29    *b=c;
    30 }
    31 int gcd(int a,int b)
    32 {
    33     if(a>b)
    34       swap(&a,&b);
    35     if(a==0)
    36       return b;
    37     return gcd(b%a,a);
    38 }
    39 int main()
    40 {
    41     int i,j,t;
    42     scanf("%d",&n);
    43     for(i=1;i<=n;i++)
    44         scanf("%d",&a[i]);
    45     t=a[1];
    46     for(i=2;i<=n;i++)
    47         t=gcd(t,a[i]);
    48     if(t!=1)
    49     {
    50         printf("0
    ");
    51         return 0;
    52     }
    53     else
    54     {
    55           f[0]=1;
    56           for(i=1;i<=n;i++)
    57           {
    58               for(j=a[i];j<=65536;j++)
    59                   f[j] |= f[j-a[i]];
    60           }
    61           for(i=65536;i>=0;i--)
    62           {
    63               if(!f[i])
    64               {
    65                   printf("%d
    ",i);
    66                   return 0;
    67               }
    68           }
    69           printf("0
    ");
    70           return 0;
    71     }
    72 }
     1 /*
     2 算法训练 9-7链表数据求和操作
     3 
     4   读入10个复数,建立对应链表,然后求所有复数的和。
     5 样例输入
     6 1 2
     7 1 3
     8 4 5
     9 2 3
    10 3 1
    11 2 1
    12 4 2
    13 2 2
    14 3 3
    15 1 1
    16 样例输出
    17 23+23i
    18 */
    19 #include <stdio.h>
    20 
    21 main()
    22 {
    23     int i,j,k,time=10,m=0,n=0;
    24     
    25     for(k=0;k<time;k++)
    26     {
    27         scanf("%d%d",&i,&j);
    28         m+=i;
    29         n+=j;
    30     }
    31     
    32     printf("%d+%di
    ",m,n);
    33     
    34     return 0;
    35 }
    36 /*
    37 #include <stdio.h>
    38 #include <malloc.h>
    39 typedef struct linknode
    40 {
    41     int x;
    42     int y;
    43     struct linknode *next;
    44 }node;
    45 
    46 int main()
    47 {
    48 node *begin=(node *)malloc(sizeof(node));
    49 node *q=begin,*p;
    50 int m=0,n=0;
    51 scanf("%d%d",&q->x,&q->y);
    52 int i;
    53 for(i=1;i<10;i++)
    54 {
    55     p=(node *)malloc(sizeof(node));
    56     scanf("%d%d",&p->x,&p->y);
    57     q->next=p;
    58     q=p;
    59 }
    60 p->next=NULL;
    61 while(begin!=NULL)
    62 {
    
    63    m+=begin->x;    
    64    n+=begin->y;
    65    begin=begin->next;    
    66 }
    67 printf("%d+%di",m,n);
    68     return 0;
    69 }
    70 */
     1 /*
     2  算法训练 6-3判定字符位置
     3  
     4  返回给定字符串s中元音字母的首次出现位置。英语元音字母只有‘a’、‘e’、‘i’、‘o’、‘u’五个。
     5   若字符串中没有元音字母,则返回0。
     6   只考虑小写的情况。
     7 样例输入
     8 and
     9 样例输出
    10 1
    11 */
    12 #include <stdio.h>
    13 #include <string.h>
    14 #define MaxSize 1000
    15 
    16 main()
    17 {
    18     char str[MaxSize];
    19     int lenth,i;
    20     
    21     gets(str);
    22     lenth=strlen(str);
    23     
    24     for(i=0;i<lenth;i++)
    25     {
    26         if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u')
    27         {
    28             printf("%d
    ",i+1);
    29             return 0;
    
    30         }
    31     }
    32     printf("0
    ");
    33     
    34     return 0;
    35 }
     1 /*
     2 算法训练 黑色星期五
     3 
     4 问题描述
     5   有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。
     6   说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。
     7   输入格式:输入只有一行,即某个特定的年份(大于或等于1998年)。
     8   输出格式:输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。
     9   输入输出样例
    10 样例输入
    11 1998
    12 样例输出
    13 3
    14 */
    15 #include <stdio.h>
    16 
    17 int getWeekOfFirstDay(int year)
    18 {
    19     //已知1998年1月1日是星期四
    20     int i=1998,week=3;
    21     int days=0;
    22     
    23     for(i=1998;i<year;i++)
    24     {
    25         if(i%400==0||(i%4==0&&i%100!=0))
    26         days+=366;
    27         else
    28         days+=365;
    29     }
    30     
    31     return (days+week)%7;
    32 }
    33 
    34 void printBlackFridayTimes(int year)
    35 {
    36     int day[2][12]={{31,28,31,30,31,30,31,31,30,31,30},{31,29,31,30,31,30,31,31,30,31,30}};
    37     int week=getWeekOfFirstDay(year),flag=year%400==0||(year%4==0&&year%100!=0)?1:0;
    38     int times=0,i,days=0;
    39     
    40     //遍历12个月 
    41     for(i=0;i<12;i++)
    42     {
    43         //判断每个月13号是否是黑色星期五 
    44         if((days+12+week)%7==4)
    45         times++;
    46         
    47         days+=day[flag][i]; 
    48     }
    49     
    50     printf("%d
    ",times);
    51     return ;
    52 } 
    53 
    54 main()
    55 {
    56     int year;
    57 
    58     scanf("%d",&year);
    59     printBlackFridayTimes(year);
    60     
    61     return 0;
    62 }
     1 /*
     2 算法训练 阿尔法乘积
     3 
     4 问题描述
     5   计算一个整数的阿尔法乘积。对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。例如:4018224312的阿尔法乘积等于8,它是按照以下的步骤来计算的:
     6   4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 → 4*2 → 8
     7   编写一个程序,输入一个正整数(该整数不会超过6,000,000),输出它的阿尔法乘积。
     8   输入格式:输入只有一行,即一个正整数。
     9   输出格式:输出相应的阿尔法乘积。
    10   输入输出样例
    11 样例输入
    12 4018224312
    13 样例输出
    14 8
    15 */
    16 #include <stdio.h>
    17 
    18 void getResult(long long int num)
    19 {
    20     long long  int n=1;
    21     int i;
    22     
    23     //出口设计
    24     if(num<10)
    25     {
    26         printf("%I64d
    ",num);
    27         
    28         return ;
    29     }
    30     
    31     //相似设计
    32     do
    33     {
    34         i=num%10;
    35         num/=10;
    36         if(i)
    37         {
    38             n*=i;
    39         }
    40     }
    41     while(num);
    42     
    43     //递归调用 
    44     getResult(n);
    45     
    46 }
    47 
    48 main()
    49 {
    50     long long int num;
    51     
    52     scanf("%I64d",&num);
    53     getResult(num);
    54     
    55     return 0; 
    56 }
     1 /*
     2 算法训练 完数
     3 
     4 问题描述
     5   一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6就是“完数”。又如,28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28也是“完数”。编写一个程序,判断用户输入的一个数是否为“完数”。
     6   输入格式:输入只有一行,即一个整数。
     7   输出格式:输出只有一行,如果该数为完数,输出yes,否则输出no。
     8   输入输出样例
     9 样例输入
    10 6
    11 样例输出
    12 yes
    13 */
    14 #include <stdio.h>
    15 
    16 void getResult(int num)
    17 {
    18     int i,sum=0;
    19     
    20     for(i=1;i<num;i++)
    21     {
    22         if(num%i==0)
    23         {
    24             sum+=i;
    25         }
    26     }
    27     
    28     if(sum==num)
    29     {
    30         printf("yes
    ");
    31     }
    32     else
    33     {
    34         printf("no
    ");
    35     }
    36     
    37 }
    38 
    39 main()
    40 {
    41     int num;
    42     
    43     scanf("%d",&num);
    44     getResult(num);
    45     
    46     return 0;
    47 }
     1 /*
     2 算法训练 数对
     3 
     4 问题描述
     5   编写一个程序,该程序从用户读入一个整数,然后列出所有的数对,每个数对的乘积即为该数。
     6   输入格式:输入只有一行,即一个整数。
     7   输出格式:输出有若干行,每一行是一个乘法式子。(注意:运算符号与数字之间有一个空格)
     8   输入输出样例
     9 样例输入
    10 32
    11 样例输出
    12 1 * 32 = 32
    13 2 * 16 = 32
    14 4 * 8 = 32
    15 8 * 4 = 32
    16 16 * 2 = 32
    17 32 * 1 = 32
    18 */
    19 #include <stdio.h>
    20 
    21 void getResult(int num)
    22 {
    23     int i;
    24     
    25     for(i=1;i<=num;i++)
    26     {
    27         if(num%i==0)
    28         {
    29             printf("%d * %d = %d
    ",i,num/i,num);
    30         }
    31     }
    32     
    33     return ;
    34 }
    35 
    36 main()
    37 {
    38     int num;
    39     
    40     scanf("%d",&num);
    41     
    42     getResult(num);
    43     
    44     return 0;
    45 }
     1 /*
     2 算法训练 整除问题
     3 
     4 问题描述
     5   编写一个程序,输入三个正整数min、max和factor,然后对于min到max之间的每一个整数(包括min和max),如果它能被factor整除,就把它打印出来。
     6   输入格式:输入只有一行,包括三个整数min、max和factor。
     7   输出格式:输出只有一行,包括若干个整数。
     8   输入输出样例
     9 样例输入
    10 1 10 3
    11 样例输出
    12 3 6 9
    13 */
    14 #include <stdio.h>
    15 
    16 void getResult(int min,int max,int factor)
    17 {
    18     int i;
    19     
    20     for(i=min;i<=max;i++)
    21     {
    22         if(i%factor==0)
    23         {
    24             printf("%d ",i);
    25         }
    26     }
    27     printf("
    ");
    28     
    29     return ;
    30 }
    31 
    32 main()
    33 {
    34     int min,max,factor;
    35     
    36     scanf("%d%d%d",&min,&max,&factor);
    37     getResult(min,max,factor);
    38     
    39     return 0;
    40 }
     1 /*
     2 算法训练 薪水计算
     3 
     4 问题描述
     5   编写一个程序,计算员工的周薪。薪水的计算是以小时为单位,如果在一周的时间内,员工工作的时间不超过40 个小时,那么他/她的总收入等于工作时间乘以每小时的薪水。如果员工工作的时间在40 到50 个小时之间,那么对于前40 个小时,仍按常规方法计算;而对于剩余的超额部分,每小时的薪水按1.5 倍计算。如果员工工作的时间超过了50 个小时,那么对于前40 个小时,仍按常规方法计算;对于40~50 个小时之间的部分,每小时的薪水按1.5 倍计算;而对于超出50 个小时的部分,每小时的薪水按2 倍计算。请编写一个程序,输入员工的工作时间和每小时的薪水,然后计算并显示他/她应该得到的周薪。
     6   输入格式:输入只有一行,包括一个整数和一个实数,分别表示工作时间和每小时薪水。
     7   输出格式:输出只有一个实数,表示周薪,保留小数点后2位。
     8   输入输出样例
     9 样例输入
    10 40 50
    11 样例输出
    12 2000.00
    13 */
    14 #include <stdio.h>
    15 
    16 main()
    17 {
    18     int time;
    19     float money,sum;
    20     
    21     scanf("%d%f",&time,&money);
    22     if(time<=40)
    23     {
    24         sum=time*money;
    25         printf("%.2f
    ",sum);
    26     }
    27     else
    28     {
    29         time-=40;
    30         if(time<=10)
    31         {
    32             sum=time*money*1.5+40*money;
    33             printf("%.2f
    ",sum);
    34         }
    35         else
    36         {
    37             time-=10;
    38             sum=time*money*2+10*money*1.5+40*money;
    39             printf("%.2f
    ",sum);
    40         }
    41     }
    42     
    43     return 0;
    44 }
     1 /*
     2 算法训练 数位分离
     3 
     4 问题描述
     5   编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。
     6   输入格式:输入只有一行,即一个1000以内的正整数。
     7   输出格式:输出只有一行,即该整数的每一位数字,之间用空格隔开。
     8   输入输出样例
     9 样例输入
    10 769
    11 样例输出
    12 7 6 9
    13 */
    14 #include <stdio.h>
    15 
    16 void getResult(int num)
    17 {
    18     //出口 
    19     if(num<10)
    20     {
    21         printf("%d ",num);
    22         return ;
    23     }
    24     //递归 
    25     getResult(num/10);
    26     
    27     printf("%d ",num%10);
    28 }
    29 
    30 main()
    31 {
    32     int n;
    33     
    34     scanf("%d",&n);
    35     getResult(n);
    36     printf("
    "); 
    37     
    38     return 0;
    39 }
     1 /*
     2 算法训练 Hello World!
     3 
     4 描述
     5   本题定义本学期作业题的输出格式,请认真阅读。
     6   如无特殊说明,开头无空格,间隔符为1个空格,答案最后必须输出换行符("
    ")。
     7 输入格式
     8   无
     9 输出格式
    10   Hello World!
    11 */
    12 #include <stdio.h>
    13 
    14 main()
    15 {
    16     printf("Hello World!
    ");
    17     
    18     return 0;
    19 }
      1 /*
      2 算法训练 新生舞会
      3 
      4 问题描述
      5   新生舞会开始了。n名新生每人有三个属性:姓名、学号、性别。其中,姓名用长度不超过20的仅由大小写字母构成的字符串表示,学号用长度不超过10的仅由数字构成的字符串表示,性别用一个大写字符‘F’或‘M’表示。任意两人的姓名、学号均互不相同。换言之,每个人可被其姓名或学号唯一确定。给出m对两人的信息(姓名或学号),判断他们是否能共舞。两人能共舞的充要条件为两人性别相异。
      6 输入格式
      7   第一行一个整数n(2<=n<=1000),表示学生人数。接下来的n行每行依次包含一名新生的姓名、学号、性别,分别用一个空格隔开。
      8   之后的一行是一个整数m(1<=m<=1000),表示询问的数目。接着的m行每行包含两个信息(姓名或学号),保证两个信息不属于同一人,中间用一个空格隔开。
      9 输出格式
     10   对于每个询问输出一行,如果两人可以共舞,输出一个大写字母‘Y’,否则输出一个大写字母‘N’。
     11 样例输入
     12 4
     13 John 10 M
     14 Jack 11 M
     15 Kate 20 F
     16 Jim 21 M
     17 3
     18 John 11
     19 20 Jack
     20 Jim Jack
     21 样例输出
     22 N
     23 Y
     24 N
     25 
     26 提示
     27 可以把名字和学号都当成字符串处理。可以按以下流程实现。
     28 
     29 #include<iostream>
     30 #include<cstring>
     31 using namespace std;
     32 
     33 struct tstudent
     34 {
     35 char name[21];
     36 char num[21];
     37 char sex;
     38 };
     39 
     40 void readdata(tstudent student[], int n)
     41 {
     42 输入N个学生的信息
     43 }
     44 
     45 int findstudent(tstudent student[], int n, char* data)
     46 {
     47 if (data == NULL) return -1;
     48 
     49 判断是否有某个学生的学号或名字等于data,如果有,函数返回该学生在student数组中的序号,否则返回-1
     50 }
     51 
     52 void solve(tstudent student[], int n, int m)
     53 {
     54 char x[21], y[21];
     55 for (int i=0; i<m; i++) {
     56 输入两个人的信息X、Y。通过调用findstudent函数判断这两个人能否成为舞伴
     57 }
     58 }
     59 
     60 int main()
     61 {
     62 int n, m;
     63 tstudent student[1010];
     64 
     65 cin>>n;
     66 
     67 readdata(student, n);
     68 cin>>m;
     69 solve(student, n, m);
     70 }
     71 */
     72 #include <stdio.h>
     73 #include <string.h>
     74 #define MaxSize 1000+5
     75 
     76 typedef struct
     77 {
     78     char name[21];
     79     char num[21];
     80     char sex;
     81 }tstudent;
     82 
     83 void readdata(tstudent student[], int n)
     84 {
     85     int i;
     86     //输入N个学生的信息
     87     for(i=0;i<n;i++)
     88     {
     89         scanf("%s %s %c",student[i].name,student[i].num,&student[i].sex);
     90     }
     91 }
     92 
     93 int findstudent(tstudent student[], int n, char* data)
     94 {
     95     int i;
     96     
     97     if (data == NULL) 
     98     {
     99         return -1;
    100     }
    101     //判断是否有某个学生的学号或名字等于data,如果有,函数返回该学生在student数组中的序号,否则返回-
    102     for(i=0;i<n;i++)
    103     {
    104         if(!strcmp(data,student[i].name)||!strcmp(data,student[i].num))
    105         return i;
    106     }
    107     
    108     return -1;
    109 }
    110 
    111 void solve(tstudent student[], int n, int m)
    112 {
    113     char x[21], y[21];
    114     int i,a,b;
    115     
    116     for (i=0; i<m; i++) 
    117     {
    118         //输入两个人的信息X、Y。通过调用findstudent函数判断这两个人能否成为舞伴
    119         scanf("%s %s",x,y);
    120         if((a=findstudent(student,n,x))!=-1&&(b=findstudent(student,n,y))!=-1)
    121         {
    122             if(student[a].sex!=student[b].sex)
    123             printf("Y
    ");
    124             else
    125             printf("N
    ");
    126         }
    127         else
    128         {
    129             printf("N
    ");
    130         }
    131     }
    132 }
    133 
    134 int main()
    135 {
    136     int n, m;
    137     tstudent student[MaxSize];
    138     
    139     scanf("%d",&n);
    140     readdata(student, n);
    141     
    142     scanf("%d",&m);
    143     solve(student, n, m);
    144     
    145     return ;
    146 }

     1 /*
     2 算法训练 反置数
     3 
     4 问题描述
     5   一个整数的“反置数”指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数是5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。
     6   输入格式:输入只有一行,包括两个整数,中间用空格隔开。
     7   输出格式:输出只有一行,即相应的结果。
     8   输入输出样例
     9 样例输入
    10 435 754
    11 样例输出
    12 199
    13 */
    14 #include <stdio.h>
    15 #include <math.h>
    16 
    17 int getTheNumber(int num)
    18 {
    19     int number=1,i,j=1,flag=0;
    20     
    21     if(!num)
    22     return 0;
    23     
    24     while(num)
    25     {
    26         i=num%10;
    27         if(i||flag)
    28         {
    29             if(!flag)
    30             {
    31                 number=i;
    32             }
    33             else
    34             {
    35                 number=number*10+i;
    36             }
    37             flag=1;
    38         }
    39         num/=10;
    40     }
    41     
    42     return number;
    43 }
    44 
    45 main()
    46 {
    47     int n,m;
    48     
    49     scanf("%d%d",&n,&m);
    50     
    51     printf("%d
    ",getTheNumber(getTheNumber(n)+getTheNumber(m)));
    52     
    53     return 0;
    54 }
     1 /*
     2 算法训练 字符删除
     3 
     4 问题描述
     5   编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。
     6   输入格式:输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字符。
     7   输出格式:经过处理以后的字符串。
     8   输入输出样例
     9 样例输入
    10 123-45-678
    11 -
    12 样例输出
    13 12345678
    14 */
    15 #include <stdio.h>
    16 #include <string.h>
    17 #define MaxSize 20+5
    18 
    19 void printResult(char str[],char ch)
    20 {
    21     int i;
    22     for(i=0;i<strlen(str);i++)
    23     {
    24         if(str[i]!=ch)
    25         {
    26             printf("%c",str[i]);
    27         }
    28     }
    29     printf("
    ");
    30 }
    31 
    32 main()
    33 {
    34     char ch,str[MaxSize];
    35     
    36     //if(scanf("%s %c",str,&ch)!=EOF)
    37     if(gets(str)!=NULL)
    38     {
    39         scanf("%c",&ch);
    40         printResult(str,ch);
    41     }
    42     
    43     return 0;
    44 }
      1 /*
      2 算法训练 字串统计
      3 
      4 问题描述
      5   给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。
      6 输入格式
      7   第一行一个数字L。
      8   第二行是字符串S。
      9   L大于0,且不超过S的长度。
     10 输出格式
     11   一行,题目要求的字符串。
     12 
     13   输入样例1:
     14   4
     15   bbaabbaaaaa
     16 
     17   输出样例1:
     18   bbaa
     19 
     20   输入样例2:
     21   2
     22   bbaabbaaaaa
     23 
     24   输出样例2:
     25   aa
     26 数据规模和约定
     27   n<=60
     28   S中所有字符都是小写英文字母。
     29 
     30   提示
     31   枚举所有可能的子串,统计出现次数,找出符合条件的那个
     32 */
     33 #include<stdio.h>
     34 #include<string.h>
     35 char b[60][60];
     36 int c[60];
     37 int main()
     38 {
     39     int l,i1,max=1,now=0,maxn=1,i2,weizhi=0,i3,i4,weizhi1,changdu1=-1;
     40     
     41     char a[10000];
     42     scanf("%d",&l);
     43     getchar();
     44     gets(a);
     45     int n=strlen(a);
     46     
     47     for(i1=n;i1>=l;i1--)//长度 
     48     {
     49         weizhi=0;
     50          for(i3=0;i3<n-i1;i3++)
     51                 c[i3]=0;
     52         for(i2=0;i2<n;i2++)//开始位置 
     53         {
     54             if(i2+i1>n) 
     55               break;
     56             int ok=1;      
     57            
     58 
     59             for(i3=0;i3<weizhi;i3++)//b的位置 
     60             {     int ko=1;
     61                   for(i4=0;i4<i1;i4++)    
     62                    {  
     63                          if(b[i3][i4]!=a[i2+i4])
     64                              ko=0;
     65                              
     66                       }
     67                       if(ko)
     68                         {  ok=0;
     69                            c[i3]++;
     70                         if(c[i3]>max)
     71                            {max=c[i3];
     72                             changdu1=i1;
     73                             weizhi1=i2;
     74                            }
     75                         break;
     76                      }
     77             
     78             }
     79             
     80             if(ok)
     81             {
     82                 for(i4=0;i4<i1;i4++)
     83                 {
     84                     b[weizhi][i4]=a[i2+i4];
     85                 }
     86                 c[weizhi]=1;
     87                 weizhi++;
     88             }
     89             
     90             
     91         }
     92         
     93     
     94         
     95     }
     96 
     97     for(i1=weizhi1;i1<weizhi1+changdu1;i1++)
     98       printf("%c",a[i1]);
     99       printf("
    ");
    100     return 0;
    101 }
     1 /*
     2 算法训练 进制转换
     3 
     4 问题描述
     5   编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来。
     6   输入格式:输入为一个字符串,每个字符都是’0’或’1’,字符串的长度不超过32。
     7   输出格式:输出一个整数。
     8   输入输出样例
     9 样例输入
    10 1101
    11 样例输出
    12 13
    13 */
    14 #include <stdio.h>
    15 #include <math.h>
    16 #include <string.h>
    17 #define MaxSize 32
    18 
    19 void print2Return10(char str[])
    20 {
    21     long long int num=0;
    22     int lenth=strlen(str),i;
    23     
    24     for(i=0;i<lenth;i++)
    25     {
    26         if(str[i]!='0')
    27         {
    28             num+=pow(2,lenth-i-1);
    29         }
    30     }
    31     
    32     printf("%lld
    ",num);
    33     
    34     return ;
    35 }
    36 
    37 main()
    38 {
    39     char str[MaxSize];
    40     
    41     gets(str);
    42     print2Return10(str);
    43     
    44     return 0;
    45 }
     1 /*
     2 算法训练 阶乘
     3 
     4 问题描述
     5   一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5! = 1*2*3*4*5 = 120,因此5!最右边的那个非0的数字是2。再如:7! = 5040,因此7!最右边的那个非0的数字是4。请编写一个程序,输入一个整数n(n<=100),然后输出n! 最右边的那个非0的数字是多少。
     6   输入格式:输入只有一个整数n。
     7   输出格式:输出只有一个整数,即n! 最右边的那个非0的数字。
     8   输入输出样例
     9 样例输入
    10 6
    11 样例输出
    12 2
    13 */
    14 #include<stdio.h>
    15 
    16 int main(void)
    17 {
    18     int n;
    19     int i;
    20     int sum=1;
    21     scanf("%d",&n);
    22 
    23     for(i=n;i>=1;i--)
    24     {
    25         sum = sum*i;
    26         while(sum%10==0)
    27             sum=sum/10;
    28         if(sum/100>0)
    29             sum=sum%100;
    30     }
    31 
    32     printf("%d",sum%10);
    33     
    34     return 0;
    35 }
     1 /*
     2 算法训练 输出米字形
     3 
     4 根据输入的正整数n (1  米字形由一个(2n-1)*(2n-1)的矩阵组成,矩阵包含从大写A开始的n个字母
     5   例如:n=3时,包含A,B,C;n=4时,包含A,B,C,D。
     6   矩阵的正中间为n个字母中字典序最大的那个,从这个字母开始,沿着西北、正北、东北、正西、正东、西南、正南、东南八个方向各有一条由大写字母组成的直线。并且直线上的字母按字典序依次减小,直到大写字母A。
     7   矩阵的其它位置用英文句号.填充。
     8 
     9   样例输入一
    10   3
    11 
    12   样例输出一
    13   A.A.A
    14   .BBB.
    15   ABCBA
    16   .BBB.
    17   A.A.A
    18 
    19   样例输入二
    20   4
    21 
    22   样例输出二
    23   A..A..A
    24   .B.B.B.
    25   ..CCC..
    26   ABCDCBA
    27   ..CCC..
    28   .B.B.B.
    29   A..A..A
    30 */
    31 #include <stdio.h>
    32 int main()
    33 {
    34     int n,i,j,k,t;
    35     scanf("%d",&n);
    36     char a[2*n-1][2*n-1];
    37     for(i=0;i<2*n-1;i++)
    38     for(j=0;j<2*n-1;j++)
    39     a[i][j]=0;
    40     k=n;
    41     
    42     for(i=0;i<n-1;i++) //行数 
    43     {
    44         k--;  //k为字符间隔 
    45         t=i;
    46         for(j=1;j<=3;j++)
    47         {
    48           a[i][t]='A'+i;
    49           t+=k;
    50         }
    51     }
    52     for(i=0;i<n;i++)    //中间一行 
    53     {
    54         a[n-1][i]='A'+i;
    55         a[n-1][2*n-2-i]='A'+i;
    56     }
    57     for(i=0;i<=n-2;i++)   //填补句号 
    58     for(j=0;j<2*n-1;j++)
    59     {
    60         if(a[i][j]==0)
    61         a[i][j]='.';
    62     }
    63     
    64     for(i=0;i<=n-2;i++)    //翻转 
    65     for(j=0;j<2*n-1;j++)
    66     a[2*n-2-i][j]=a[i][j];
    67     
    68     for(i=0;i<2*n-1;i++)
    69     {
    70     for(j=0;j<2*n-1;j++)
    71     printf("%c",a[i][j]);
    72     printf("
    "); 
    73     }
    74 
    75     
    76     return 0;
    77 }
     1 /*
     2 算法训练 整数平均值
     3 
     4 编写函数,求包含n个元素的整数数组中元素的平均值。要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值。  样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
     5   5
     6   3 4 0 0 2
     7 样例输出
     8 1
     9 样例输入
    10 7
    11 3 2 7 5 2 9 1
    12 样例输出
    13 4
    14 */
    15 #include <stdio.h>
    16 int main()
    17 {
    18 int n,i,j,sum=0;
    19 scanf("%d",&n);
    20 for(i=0;i<n;i++)
    21 {
    22 scanf("%d",&j);
    23 sum+=j;
    24 }
    25 printf("%d",sum/n);
    26 return 0;
    27 }
     1 /*
     2 算法训练 确定元音字母位置
     3 
     4 输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0。英语元音字母只有‘a’、‘e’、‘i’、‘o’、‘u’五个。
     5 样例输入
     6 hello
     7 样例输出
     8 2
     9 样例输入
    10 apple
    11 样例输出
    12 1
    13 样例输入
    14 pmp
    15 样例输出
    16 0
    17 */
    18 #include <stdio.h>
    19 #include <string.h>
    20 char s[1000]={0};
    21 int isyuanyin(char a)
    22 {
    23 switch(a)
    24 {
    25 case 'a':return 1;
    26 case 'e':return 1;
    27 case 'i':return 1;
    28 case 'o':return 1;
    29 case 'u':return 1;
    30 }
    31 return 0;
    32 }
    33 int main()
    34 {
    35 int l,i,num=0;
    36 scanf("%s",s);
    37 l=strlen(s);
    38 for(i=0;i<l;i++)
    39 if(isyuanyin(s[i]))
    40 {
    41 num=i+1;break;
    42 }
    43 printf("%d",num);
    44 return 0;
    45 }
     1 /*
     2 算法训练 斜率计算
     3 
     4   输入两个点的坐标,即p1 = (x1, y1)和p2=(x2, y2),求过这两个点的直线的斜率。如果斜率为无穷大输出“INF”。
     5 样例输入
     6 1 2
     7 2 4
     8 样例输出
     9 2
    10 样例输入
    11 1 2
    12 1 4
    13 样例输出
    14 INF
    15 样例输入
    16 1 2
    17 3 2
    18 样例输出
    19 0
    20 */
    21 #include <stdio.h>
    22 int main(){
    23   int a,b,c,d;
    24   scanf("%d %d",&a,&b);
    25   scanf("%d %d",&c,&d);
    26   if(a==c)
    27       printf("INF
    ");
    28   else 
    29       printf("%d
    ",(b-d)/(a-c));
    30 
    31   return 0;
    32 }
     1 /*
     2 算法训练 十进制数转八进制数
     3 
     4   编写函数把一个十进制数输出其对应的八进制数。
     5 样例输入
     6 9274
     7 样例输出
     8 22072
     9 */
    10 #include<stdio.h>
    11 int main()
    12 {
    13     int r;
    14     scanf("%d",&r);
    15     printf("%o",r);
    16     return 0;
    17 }
     1 /*
     2 算法训练 筛选号码
     3 
     4 问题描述
     5   有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。
     6   问最后留下的是原来第几号的那位。
     7   举个例子,8个人围成一圈:
     8   1 2 3 4 5 6 7 8
     9   第1次报数之后,3退出,剩下:
    10   1 2 4 5 6 7 8    (现在从4开始报数)
    11   第2次报数之后,6退出,剩下:
    12   1 2 4 5 7 8     (现在从7开始报数)
    13   第3次报数之后,1退出,剩下:
    14   2 4 5 7 8     (现在从2开始报数)
    15   第4次报数之后,5退出,剩下:
    16   2 4 7 8     (现在从7开始报数)
    17   第5次报数之后,2退出,剩下:
    18   4 7 8     (现在从4开始报数)
    19   第6次报数之后,8退出,剩下:
    20   4 7     (现在从4开始报数)
    21   最后一次报数之后,4退出,剩下:
    22   7.
    23   所以,最后留下来的人编号是7。
    24 输入格式
    25   一个正整数n,(1<n<10000)
    26 输出格式
    27   一个正整数,最后留下来的那个人的编号。
    28 样例输入
    29 8
    30 样例输出
    31 7
    32 数据规模和约定
    33   对于100%的数据,1<n<10000。
    34 */
    35 #include <stdio.h> 
    36 #include <malloc.h> 
    37 typedef struct form{ 
    38     int num; 
    39     int date; 
    40     struct form *link;} 
    41 del; 
    42 del *creat(int n){ 
    43 int i; 
    44 del *head,*p1,*p2; 
    45 head=(del *)malloc(sizeof(del)); 
    46 p1=(del *)malloc(sizeof(del)); 
    47 head->link=p1; 
    48 for(i=1;i<=n-2;i++){p2=(del *)malloc(sizeof(del)); 
    49 p1->link=p2; 
    50 p1=p2;} 
    51 p1->link=head; 
    52 return(head); 
    53 } 
    54 void dateop(del *h,int n){ 
    55     del *p; 
    56     int i,j=1; 
    57     p=h; 
    58     for(i=1;i<=n;i++){ 
    59     p->num=i; 
    60     p->date=j;j++; 
    61     if(j==4) j=1; 
    62     p=p->link;} 
    63 } 
    64 int deal(del *h,int n){ 
    65     del *k; 
    66     int s; 
    67     int count,j=1,i; 
    68     count=n; 
    69     k=h; 
    70     while(count!=1){ 
    71     if(j==3&&k->date!=0) {k->date=0;count--;} 
    72 k=k->link; 
    73     j++; 
    74     if(k->date==0) j--; 
    75 if(j==4) j=1; 
    76     } 
    77     k=h; 
    78     for(i=1;i<=n;i++){ 
    79     if(k->date!=0) {s=k->num;break;} 
    80     k=k->link;} 
    81     return(s);} 
    82 int main(){ 
    83     int x; 
    84     int i; 
    85     del *p; 
    86     scanf("%d",&x); 
    87     p=creat(x); 
    88     dateop(p,x); 
    89     x=deal(p,x); 
    90     for(i=1;i<x;i++){ 
    91     p=p->link;} 
    92     printf("%d",p->num); 
    93 return 0; 
    94 }
     1 /*
     2 算法训练 连接字符串
     3 
     4  编程将两个字符串连接起来。例如country与side相连接成为countryside。
     5   输入两行,每行一个字符串(只包含小写字母,长度不超过100);输出一行一个字符串。
     6 样例输入
     7 country
     8 side
     9 样例输出
    10 countryside
    11 */
    12 #include<stdio.h>
    13 #include<string.h>
    14 int main()
    15 {
    16     char s1[202],s2[202];
    17     scanf("%s",s1);
    18     scanf("%s",s2);
    19     strcat(s1,s2);
    20     printf("%s",s1);
    21     printf("
    ");
    22     return 0;
    23 }
     1 /*
     2 算法训练 统计字符次数
     3 
     4   输入一个字符串(长度在100以内),统计其中数字字符出现的次数。
     5 样例输入
     6 Ab100cd200
     7 样例输出
     8 6
     9 */
    10 #include<stdio.h>
    11 int main()
    12 {
    13     char a[101];
    14     int i=0,s=0;
    15     gets(a);
    16     for(i=0;*(a+i)!='';i++)
    17     {
    18         if(*(a+i)>=48&&*(a+i)<=57)
    19         s++;
    20     }
    21     printf("%d",s);
    22 return 0;
    23 }
     1 /*
     2 算法训练 成绩的等级输出
     3 
     4   输入一个百分制的成绩t后,按下式输出它的等级。等级为:90~100为A,80~89为B,70~79为C,60~69为D,0~59为E。
     5 样例输入
     6 98
     7 样例输出
     8 A
     9 */
    10 #include<stdio.h>
    11 int main()
    12 {
    13     int t;
    14     scanf("%d",&t);
    15     
    16     if(t>=90 && t<=100)
    17     printf("A
    ");
    18     
    19     if(t>=80 && t<=89)
    20     printf("B
    ");
    21     
    22     if(t>=70 && t<=79)
    23     printf("C
    ");
    24     
    25     if(t>=60 && t<=69)
    26     printf("D
    ");
    27     
    28     if(t<60)
    29     printf("E
    ");
    30     return 0;
    31 }
     1 /*
     2 算法训练 比较字符串
     3 
     4  编程实现两个字符串s1和s2的字典序比较。(保证每一个字符串不是另一个的前缀,且长度在100以内)。若s1和s2相等,输出0;若它们不相等,则指出其第一个不同字符的ASCII码的差值:如果s1>s2,则差值为正;如果s1<s2,则差值为负。
     5 样例输入
     6 java basic
     7 样例输出
     8 8
     9 */
    10 #include<stdio.h>
    11 #include<string.h>
    12 int min(int a,int b)
    13 {
    14 return a>b?b:a;
    15 }
    16 int main()
    17 {
    18 char a[1000];
    19 char b[1000];
    20 scanf("%s",a);
    21 scanf("%s",b);
    22 int k=min(strlen(a),strlen(b)),i1;
    23 int ok=1;
    24 for(i1=0;i1<k;i1++)
    25 {       if(a[i1]!=b[i1])
    26         {   printf("%d
    ",a[i1]-b[i1]);
    27             ok=0;
    28              break;
    29          }
    30 }
    31 if(ok==1)
    32 if(strlen(a)==strlen(b))
    33     printf("0
    ");
    34 else if(strlen(a)>strlen(b))
    35      printf("%d
    ",a[i1]);
    36  else 
    37     printf("%d
    ",b[i1]);
    38 return 0;  
    39 }

     33333333333

    33333333333333

    3333333333333

     1 /*
     2 算法训练 最长字符串  
     3 时间限制:1.0s   内存限制:512.0MB
     4        
     5   求出5个字符串中最长的字符串。每个字符串长度在100以内,且全为小写字母。
     6 样例输入
     7 one two three four five
     8 样例输出
     9 three
    10 */
    11 #include<stdio.h>
    12 #include<string.h>
    13 int main()
    14 {
    15     char str[5][100];
    16     int len[5];
    17     int i,j,t,max;
    18     max=0;
    19     for(i=0;i<5;i++)
    20     {
    21         scanf("%s",str[i]);
    22         len[i]=strlen(str[i]);
    23         if(len[i]>max)
    24         {
    25             max=len[i];
    26             t=i;
    27         }    
    28     }
    29     puts(str[t]);
    30     return 0;
    31 }
     1 /*
     2   算法训练 字符串逆序  
     3 时间限制:1.0s   内存限制:512.0MB
     4        
     5   输入一个字符串,长度在100以内,按相反次序输出其中的所有字符。
     6 样例输入
     7 tsinghua
     8 样例输出
     9 auhgnist
    10 */
    11 #include <stdio.h>
    12 #include <string.h>
    13 #define MaxSize 100
    14 
    15 int main()
    16 {
    17     char str[MaxSize];
    18     int lenth;
    19     
    20     gets(str);
    21     lenth=strlen(str);
    22     while(lenth--)
    23     {
    24         putchar(str[lenth]);
    25     }
    26     printf("
    ");
    27     
    28     return 0;
    29 }
     1 /*
     2   算法训练 判定数字  
     3 时间限制:1.0s   内存限制:512.0MB
     4        
     5   编写函数,判断某个给定字符是否为数字。
     6 样例输入
     7 9
     8 样例输出
     9 yes
    10 */
    11 #include <stdio.h>
    12 #include <stdlib.h>
    13 
    14 int main(int argc, char *argv[]) 
    15 {
    16     char x;
    17     scanf("%c",&x);
    18     if('0'<=x&&x<='9')
    19     {
    20         printf("yes");
    21     }
    22     else
    23     {
    24         printf("no");
    25     }
    26     return 0;
    27 }
     1 /*
     2   算法训练 最大值与最小值的计算  
     3 时间限制:1.0s   内存限制:512.0MB
     4        
     5   输入11个整数,计算它们的最大值和最小值。
     6 样例输入
     7 0 1 2 3 4 5 6 7 8 9 10
     8 样例输出
     9 10 0
    10 */
    11 #include<stdio.h>
    12 int main()
    13 {
    14     int n;
    15     int a[11],i1,max=-234234,min=93759347;
    16     for(i1=0;i1<11;i1++)
    17     {
    18         scanf("%d",&a[i1]);
    19         if(max<a[i1])
    20           max=a[i1];
    21         if(min>a[i1])
    22            min=a[i1];
    23     }
    24     printf("%d %d
    ",max,min);
    25     
    26     return 0;
    27 }
  • 相关阅读:
    alpha冲刺9
    alpha冲刺8
    alpha冲刺7
    alpha冲刺6
    团队作业——随堂小测(同学录)
    alpha冲刺5
    【麻瓜制造者】团队项目测试报告与用户反馈
    Android基础学习
    学习博客之工具的学习、安装和使用
    学习博客之Java继承多态接口
  • 原文地址:https://www.cnblogs.com/Ambrose/p/4332905.html
Copyright © 2011-2022 走看看