算法-蓝桥杯习题(二)

蓝桥杯习题

蓝桥杯练习系统习题加答案更新新地址(已更新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\n",lenth);
29     for(i=0;i<lenth;i++)
30     {
31         printf("%d ",array[i]);
32     }
33     printf("\n");
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\n");
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\n",i);
66                   return 0;
67               }
68           }
69           printf("0\n");
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\n",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\n",i+1);
29             return 0;

30         }
31     }
32     printf("0\n");
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\n",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\n",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\n");
31     }
32     else
33     {
34         printf("no\n");
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\n",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("\n");
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\n",sum);
26     }
27     else
28     {
29         time-=40;
30         if(time<=10)
31         {
32             sum=time*money*1.5+40*money;
33             printf("%.2f\n",sum);
34         }
35         else
36         {
37             time-=10;
38             sum=time*money*2+10*money*1.5+40*money;
39             printf("%.2f\n",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("\n"); 
37     
38     return 0;
39 }
 1 /*
 2 算法训练 Hello World!
 3 
 4 描述
 5   本题定义本学期作业题的输出格式,请认真阅读。
 6   如无特殊说明,开头无空格,间隔符为1个空格,答案最后必须输出换行符("\n")。
 7 输入格式
 8   无
 9 输出格式
10   Hello World!
11 */
12 #include <stdio.h>
13 
14 main()
15 {
16     printf("Hello World!\n");
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\n");
124             else
125             printf("N\n");
126         }
127         else
128         {
129             printf("N\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\n",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("\n");
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("\n");
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\n",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("\n"); 
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\n");
28   else 
29       printf("%d\n",(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("\n");
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)!='\0';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\n");
18     
19     if(t>=80 && t<=89)
20     printf("B\n");
21     
22     if(t>=70 && t<=79)
23     printf("C\n");
24     
25     if(t>=60 && t<=69)
26     printf("D\n");
27     
28     if(t<60)
29     printf("E\n");
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\n",a[i1]-b[i1]);
27             ok=0;
28              break;
29          }
30 }
31 if(ok==1)
32 if(strlen(a)==strlen(b))
33     printf("0\n");
34 else if(strlen(a)>strlen(b))
35      printf("%d\n",a[i1]);
36  else 
37     printf("%d\n",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("\n");
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\n",max,min);
25     
26     return 0;
27 }

 

posted @ 2015-03-15 11:20  鬼狐  阅读(8010)  评论(1编辑  收藏  举报