蓝桥杯习题

        这个月我都不知道忙什么了,反正蓝桥杯就这样过去了,把自己的整理的习题发上去吧。

 

 

问题描述

  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式

  输入的第一行为一个正整数n (1<=n<=10)。
   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式

  输出n行,每行为输入对应的八进制正整数。

注意

  输入的十六进制数不会有前导0,比如012A。
   输出的八进制数也不能有前导0。

样例输入

2
 39
 123ABC

样例输出

71
 4435274

提示

  先将十六进制数转换成某进制数,再由某进制数转换成八进制。

 

<span style="font-size:18px;">#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define MAXSIZE 100000

//输出 
void Print(char *data,int n){
 int i;
 for(i=n-1;i>=0;i--)
    printf("%c",data[i]);
    printf("\0");
 printf("\n");
}

//去掉前缀0 
int Trim(char *data,int n){
 while(data[--n]=='0');
  return n+1;
}
//初始化 
void Init(char *data,int n){
 int i;
 for(i=0;i<n;i++)
 data[i]='0'; 
}

//16进制转化2进制 
int HexToBinary(char *hex,char *binary){ 
 int i;
 int value;
 int hex_n=strlen(hex);
 int binary_n=0;
 int length=4*hex_n;
 
 if(length%3==1)  length+=2;
 else if(length%2==2)  length++;
 
 Init(binary,length);

 for(i=hex_n-1;i>=0;i--){
  int count=0;
  switch(hex[i])
  {
   case 'A':value=10;break;
   case 'B':value=11;break;
   case 'C':value=12;break;
   case 'D':value=13;break;
   case 'E':value=14;break;
   case 'F':value=15;break;
   default:value=hex[i]-'0';
  }
  
  while(value)
  {
   binary[binary_n+count]=value%2+'0';
   count++;
   value/=2;
  }
  binary_n+=4;
 }
 return length; 
}
//2进制转化8进制 
int BinaryToOctal(char *binary,int binary_n,char *octal){
 int i;
 int n=0;
 for(i=0;i+2<binary_n;i+=3){
  octal[n++]=(binary[i]-'0')+(binary[i+1]-'0')*2+(binary[i+2]-'0')*2*2+'0';
 } 
 return n;
}

int main(){ 
 int n;
 int i;
 char hex[MAXSIZE];
 char octal[3*MAXSIZE];
 int octal_n;
 char binary[4*MAXSIZE];
 int binary_n;
 scanf("%d",&n);
 getchar();
 for(i=0;i<n;i++)
 {
  gets(hex);
  binary_n=HexToBinary(hex,binary);
  octal_n=BinaryToOctal(binary,binary_n,octal);
  octal_n=Trim(octal,octal_n);
  Print(octal,octal_n);
 }
   return 0;  
}
</span>


 

            

16进制转化10进制

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()  
{  
    char a[8];
    int i=0,length=0;
    long int value=0;
    gets(a);    
    length=strlen(a);
    while(length)
    {
        if(a[length-1]>='A'&&a[length-1]<='F')
           value+=(a[length-1]-'7')*pow(16,i++);
        else
           value+=(a[length-1]-'0')*pow(16,i++);
           
        length--;
    	
    }
    printf("%I64d",value);
   
    
    return 0;  
}  


 

问题描述

  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式

  输入的第一行为一个正整数n (1<=n<=10)。
   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式

  输出n行,每行为输入对应的八进制正整数。

注意

  输入的十六进制数不会有前导0,比如012A。
   输出的八进制数也不能有前导0。

样例输入

2
 39
 123ABC

样例输出

71
 4435274

提示

  先将十六进制数转换成某进制数,再由某进制数转换成八进制。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define MAXSIZE 100000

//输出 
void Print(char *data,int n){
	int i;
	for(i=n-1;i>=0;i--)
	   printf("%c",data[i]);
	   printf("\0");
	printf("\n");
}

//去掉前缀0 
int Trim(char *data,int n){
	while(data[--n]=='0');
	 return n+1;
}
//初始化 
void Init(char *data,int n){
	int i;
	for(i=0;i<n;i++)
	data[i]='0';	
}

//16进制转化2进制 
int HexToBinary(char *hex,char *binary){	
	int i;
	int value;
	int hex_n=strlen(hex);
	int binary_n=0;
	int length=4*hex_n;
	
	if(length%3==1)  length+=2;
	else if(length%2==2)  length++;
	
	Init(binary,length);

	for(i=hex_n-1;i>=0;i--){
		int count=0;
		switch(hex[i])
		{
			case 'A':value=10;break;
			case 'B':value=11;break;
			case 'C':value=12;break;
			case 'D':value=13;break;
			case 'E':value=14;break;
			case 'F':value=15;break;
			default:value=hex[i]-'0';
		}
		
		while(value)
		{
			binary[binary_n+count]=value%2+'0';
			count++;
			value/=2;
		}
		binary_n+=4;
	}
	return length;	
}
//2进制转化8进制 
int BinaryToOctal(char *binary,int binary_n,char *octal){
	int i;
	int n=0;
	for(i=0;i+2<binary_n;i+=3){
		octal[n++]=(binary[i]-'0')+(binary[i+1]-'0')*2+(binary[i+2]-'0')*2*2+'0';
	}	
	return n;
}

int main(){	
	int n;
	int i;
	char hex[MAXSIZE];
	char octal[3*MAXSIZE];
	int octal_n;
	char binary[4*MAXSIZE];
	int binary_n;
	scanf("%d",&n);
	getchar();
	for(i=0;i<n;i++)
	{
		gets(hex);
		binary_n=HexToBinary(hex,binary);
		octal_n=BinaryToOctal(binary,binary_n,octal);
		octal_n=Trim(octal,octal_n);
		Print(octal,octal_n);
	}
   return 0;		
}


     某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。
输入格式
要求程序首先输入一个整数N(N<100)表示后面数据行数。
接着读入N行数据。每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。每个整数代表一个ID号。
输出格式
要求程序输出1行,含两个整数m n,用空格分隔。
其中,m表示断号ID,n表示重号ID

#include<stdio.h>

 int main(){
   int a[10001]={0};
   char c;
   long m,min=100000,max=0,i,n;
   scanf("%d",&n);
   for(i=0;i<n;i++)
     while(1)	
 	{
 		scanf("%ld",&m);
 		if(m>max) max=m;
 		if(m<min) min=m;
 		a[m]++;
 		c=getchar();
 		if(c!=' ') break;
 	}
 	
 	for(i=min;i<=max;i++)
 	{
 		if(a[i]==0)
 		   printf("%ld ",i);
 		if(a[i]==2)
 	       m=i;
 	}
 	printf("%ld",m);
 	
 	
 	return 0;
 }


 

 从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。  样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
   5
  3 4 0 0 2
  样例输出:(输出格式说明:3为非零数据的个数,3 4 2 是以空格隔开的3个非零整数)
   3
  3 4 2

样例输入

7
 0 0 7 0 0 9 0

样例输出

2
 7 9

样例输入

3
 0 0 0

样例输出

0

#include <cstdio>
#include <cstdlib>
int CompactIntegers(int a[],int n)
{
	int i,j;
	
	for(i = j = 0;j < n;j++){
		if(a[j])
			a[i++] = a[j];
	}
	
	return i;
}

int main(int argc, char* argv[])
{
	int *a;
	int n;
	
	scanf("%d",&n);
	a = (int *)malloc(n * sizeof(int));
	
	for(int i = 0;i < n;i++){
		scanf("%d",a+i);
	}
	
	n = CompactIntegers(a,n);
	
	printf("%d\n",n);

    return 0;
}








#include<stdio.h>
#include<stdlib.h>

int CompactIntegers(int *a,int n){
	int i,j;
	for(i=0;i<n;i++)
	{
	     if(a[i]==0)
		 {

		   for(j=i;j<n-1;j++)
		       a[j]=a[j+1];
		 	n--;
		 	i--;
		 	
		 }
			
	}
	    return n;
}

int main()
{    
     int n,i;
     int m;
	 int *a;
	 scanf("%d",&n);
	 a=(int *)malloc(n*sizeof(int));
	 for(i=0;i<n;i++)
	   scanf("%d",&a[i]);
	 m=CompactIntegers(a,n);
	 printf("%d\n",m);
     for(i=0;i<m;i++)
	   printf("%d ",a[i]);
	  printf("\n");	  
	return 0;
}


 

 从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出。要求尽可能使用函数实现程序代码。平均值为小数的只保留其整数部分。

样例输入

5
 3 4 0 0 2

样例输出

9 1

样例输入

7
 3 2 7 5 2 9 1

样例输出

29 4

#include <cstdio>
#include <vector>
using namespace std;

int main(int argc, char* argv[])
{
	vector<int> a;
	int n;
	long long sum = 0;
	vector<int>::iterator ivec;
	
	scanf("%d",&n);
	for(int i = 0;i < n;i++){
		int temp;
		scanf("%d",&temp);
		a.push_back(temp);
	}
	
	for(ivec = a.begin();ivec != a.end();ivec++){
		sum += *ivec;
	}
	printf("%I64d %I64d",sum,sum/n);
}

问题描述

  编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。
   输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。
   输出格式:输出经过转换后的字符串。
   输入输出样例

样例输入

AeDb

样例输出

aEdB

#include <cstdio>
#include <cstring>
#define N 21

int main(int argc, char* argv[])
{
	char str[N];
	
	gets(str);
	for(int i = 0;i < strlen(str);i++){
		if(str[i] >= 'a' && str[i] <= 'z')
			str[i] -= 32;
		else
			str[i] += 32;
	}	
	
	puts(str);
	


 

问题描述

  输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。

输入格式

  第一行,空格隔开的三个正整数m,s,n(均不超过200)。
   接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。
   接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。

输出格式

  m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。

样例输入

2 3 2
 1 0 -1
 1 1 -3
 0 3
 1 2
 3 1

样例输出

-3 2
 -8 2

提示
 矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。
 例如样例中C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3

#include <cstdio>
#define MAX 220

int main(void)
{
	int m,n,s;
	int m1[MAX][MAX],m2[MAX][MAX],p[MAX][MAX];
	
	scanf("%d%d%d",&m,&s,&n);
	
	//init
	for(int i = 0;i < m;i++){
		for(int j = 0;j < s;j++){
			scanf("%d",m1[i]+j);
		}
	}
	
	for(int i = 0;i < s;i++){
		for(int j = 0;j < n;j++){
			scanf("%d",m2[i]+j);
		}
	}
	
	for(int i = 0;i < m;i++){//遍历m1的行
		for(int j = 0;j < n;j++){//遍历m2的列 
			int sum = 0;
			for(int k = 0;k < s;k++){//做乘法,输入到p 
				sum += m1[i][k] * m2[k][j];
			}
			p[i][j] = sum;
		} 
	}
	
	for(int i = 0;i < m;i++){
		for(int j = 0;j < n;j++){




#include<stdio.h>
int main(){
	int m,s,n;
	int i,j,k;
	int a[100][100]={0},b[100][100]={0},c[100][100]={0};
	scanf("%d%d%d",&m,&s,&n);
	for(i=0;i<m;i++)
	   for(j=0;j<s;j++)
	     scanf("%d",&a[i][j]);
	for(j=0;j<s;j++)
		for(i=0;i<n;i++)
		 scanf("%d",&b[j][i]);
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
         for(k=0;k<s;k++)
             c[i][j]+=a[i][k]*b[k][j];
    for(i=0;i<m;i++)
     {
     	for(j=0;j<n;j++)
         printf("%d ",c[i][j]);
       printf("\n");	
     }  
	   	
	
	
}


 

问题描述

  编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。
   输入格式:输入只有一行,即三个整数,中间用空格隔开。
   输出格式:输出只有一行,即排序后的结果。
   输入输出样例

样例输入

9 2 30

样例输出

30 9 2

#include <stdio.h>


int main(int argc, char* argv[])
{
	int a[3];
	
	scanf("%d%d%d",a,a+1,a+2);
	for(int i = 0;i < 2;i++)
		for(int j = i+1;j < 3;j++)
			if(a[i] < a[j]){
				a[i] = a[i] ^ a[j];
				a[j] = a[i] ^ a[j];
				a[i] = a[i] ^ a[j];
			}
	printf("%d %d %d",a[0],a[1],a[2]);
	return 0;
}


int main(){
	int a[3];
	scanf("%d%d%d",a,a+1,a+2);
	for(int i=0;i<2;i++)
	 for(int j=i+1;j<3;j++)
	   if(a[i]<a[j]){
	      a[i]=a[i]+a[j];
	      a[j]=a[i]-a[j];
	      a[i]=a[i]-a[j];
	   }
	 printf("%d %d %d",a[0],a[1],a[2]); 
	   return 0;
}


 

问题描述


给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。

输入格式


第一行包含一个数n,表示序列长度。

第二行包含n个正整数,表示给定的序列。

第三个包含一个正整数m,表示询问个数。

接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。

输出格式

总共输出m行,每行一个数,表示询问的答案。

样例输入

5
 1 2 3 4 5
 2
 1 5 2
 2 3 2

样例输出

4
 2

数据规模与约定


对于30%的数据,n,m<=100;

对于100%的数据,n,m<=1000;

保证k<=(r-l+1),序列中的数<=106。

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
 int i,j,t,temp;
 int n,m,l,r,k;
 int *a,*copy;
 
 scanf("%d",&n);
 a = (int *)malloc( (n+1) * sizeof(int) );
 for(i=1;i<=n;i++)
  scanf("%d",a+i);
 scanf("%d",&m);
 for(t=0;t<m;t++){
  scanf("%d%d%d",&l,&r,&k);
  copy = (int *)malloc( (r-l+1) * sizeof(int) );
  for(i=0;i<r-l+1;i++)
   copy[i] = a[l+i];
  for(i=0;i<r-l;i++){
   for(j=i+1;j<r-l+1;j++){
    if(copy[i] < copy[j]){
     temp = copy[i];
     copy[i] = copy[j];
     copy[j] = temp;
    }
   }
  }
  printf("%d\n",copy[k-1]);
  free(copy);
 }
 

 

 

将字符串转化成整形数字

 

#include<stdio.h>
#include<string.h>


int Translate(char *ch,int *a){
	int i=0;
    int y;
	char *p=ch;
//	fflush(stdin); 
	while(*p)
	{
		if(*p>='0'&&*p<='9')
		{   
		    y=0;
			while(*p!=' '&&*p)
			{
			  y=y*10+*p-'0';
			  p++;
			   
			}
			a[i++]=y;
		}
		p++;		       
		
	}
	return i-1;
	
}


int main(){
	char ch[1000];
	int  a[50]={0};
	int n;
	int i;
	 gets(ch);
     n=Translate(ch,a);
     printf("num=%d\n",n);
     for(i=0;i<=n;i++)
       printf("%d ",a[i]);
    printf("\n");	
	return 0;
}


 

问题描述

  给两组数,各n个。
   请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。
   例如两组数分别为:1 3  -5和-2 4 1

  那么对应乘积取和的最小值应为:
   (-5) * 4 + 3 * (-2) + 1 * 1 = -25

输入格式

  第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。
   n<=8,T<=1000

输出格式

  一个数表示答案。

样例输入

231 3 -5-2 4 151 2 3 4 51 0 1 0 1

样例输出

-256

#include <cstdio>
#define N 10

int main(void)
{
	int a[N],b[N];
	int n;
	int min = 0;
	int T;
	
	scanf("%d",&T);
	
	for(int k = 0;k < T;k++){
		min = 0;
		scanf("%d",&n);
	
		for(int i = 0;i < n;i++)
			scanf("%d",a+i);
		
		for(int i = 0;i < n;i++)
			scanf("%d",b+i);
	
		for(int i = 0;i < n;i++){
			for(int j = 0;j < n;j++){
				if(a[i] < a[j]){
					int temp = a[i];
					a[i] = a[j];
					a[j] = temp;
				}
			}
		}
	
		for(int i = 0;i < n;i++){
			for(int j = 0;j < n;j++){
				if(b[i] > b[j]){
					int temp = b[i];
					b[i] = b[j];
					b[j] = temp;
				}
			}
		}	
}


 

问题描述

  编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中。当用户输入0时,表示输入结束。然后程序将把这个数组中的值按逆序重新存放,并打印出来。例如:假设用户输入了一组数据:7 19 -5 6 2 0,那么程序将会把前五个有效数据保存在一个数组中,即7 19 -5 6 2,然后把这个数组中的值按逆序重新存放,即变成了2 6 -5 19 7,然后把它们打印出来。
   输入格式:输入只有一行,由若干个整数组成,中间用空格隔开,最末尾的整数为0。
   输出格式:输出也只有一行,即逆序排列后的整数,中间用空格隔开,末尾没有空格。
   输入输出样例

样例输入

7 19 -5 6 2 0

样例输出

2 6 -5 19 7



 

#include <cstdio> 
#define N 20
  
int main(void){  
	int a[N];
	int n = 0;
	int temp;

	while(1){
		scanf("%d",&temp);
		if(temp == 0)
			break;
		else
			a[n++] = temp;
	}
	
	for(int i = n-1;i >= 0;i--)
		printf("%d ",a[i]);

return 0;
}

#include<stdio.h>

int main()
{
	int a[20];
	int i=0,n,j;
	while(1){
	   scanf("%d",&a[i]);
	   if(a[i]==0)
	       break;
	   i++;
		
	}
	for(j=i-1;j>=0;j--)
	   printf("%d ",a[j]);
	printf("\n");
	
	return 0;
}


 


问题描述

  编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束。然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来。说明:(1)0表示输入结束,它本身并不计入这组整数中。(2)在这组整数中,既有正数,也可能有负数。(3)这组整数的个数不少于2个。
   输入格式:输入只有一行,包括若干个整数,中间用空格隔开,最后一个整数为0。
   输出格式:输出第二大的那个整数。
   输入输出样例

样例输入

5 8 -12 7 0

样例输出

7

#include <cstdio>
#define N 25

int main(void)
{
	int a[N];
	int n;
	
	for(n = 0;n < 20;){
		scanf("%d",a+n);
		if(a[n] == 0)
			break;
		else
			n++;
	}
	
	for(int i = 0;i < n-1;i++){
		for(int j = i+1;j < n;j++){
			if(a[i] < a[j]){
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
	}
	
}


 

  编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i*b/sqrt(a*a+b*b) 。使用结构体指针类型作为函数参数可能是必要的。其中实部和虚部由键盘输入,输出为归一化结果,如果归一化结果的实部或虚部为小数的要求保留一位小数。
   样例输入:(格式说明:3 4 分别为以空格隔开的实数的实部和虚部)
   3 4

样例输出

0.6+0.8i

样例输入

2 5

样例输出

0.4+0.9i

#include <cstdio> 
#include <cmath>
#define N 20
  
typedef struct node{
	int a;
	int b;
}data;  
  
int main(void){  
	data d;
	double ta,tb,tn;
	
	scanf("%d%d",&d.a,&d.b);
	tn = (double)sqrt(d.a*d.a+d.b*d.b);
	ta = d.a / tn;
	tb = d.b / tn;
}


 

问题描述

  观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

   本题要求你找到一些5位或6位的十进制数字。满足如下要求:
   该数字的各个数位之和等于输入的整数。

输入格式

  一个正整数 n (10<n<100), 表示要求满足的数位和。

输出格式

  若干行,每行包含一个满足要求的5位或6位整数。
   数字按从小到大的顺序排列。
   如果没有满足条件的,输出:-1

样例输入

44

样例输出

99899
 499994
 589985
 598895
 679976
 688886
 697796
 769967
 778877
 787787
 796697
 859958
 868868
 877778
 886688
 895598

 949949
 958859
 967769
 976679
 985589
 994499

样例输入

60

样例输出

-1

 

#include <stdio.h>

int main(void)
{
	int n;
	int tag = 1;
	
	scanf("%d",&n);
	
	for(int i = 10000;i <= 999999;i++){
		int s = 0;
		int x = i;
		int count = 0;
		while(x){
			int temp = x%10;
			x/=10;
			s = s*10 + temp;
			count += temp;
		}
		if(count == n && s == i){
			printf("%d\n",i);
			tag = 0;
		}
	}
	
	if(tag)
	
      printf("-1");
 return 0;
} 


 

题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。

例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int n;
	int *a;
	int i;
	int sum=0,bettersum=0;
	scanf("%d",&n);
	a=(int *)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
	  scanf("%d",a+i);
    for(i=0;i<n;i++){
           sum+=a[i];
           //如果当前和值为零,则把当前和值置为零 
		   if(sum<0)
		      sum=0;
		//如果当前和值大于最优值,则最优值记录当前和值 
		   if(bettersum<sum)
		      bettersum=sum;    	
       	
    }
    //如果数组全为负值,只需要找到一个最大的负值 
	if(0==bettersum) {
		bettersum=a[0];
		for(i=0;i<n;i++){
			if(a[i]>bettersum)
			  bettersum=a[i];
		}
	}
	
    printf("bettersum=%d\n",bettersum);
	return 0;
} 



 


 

 

 

      

 

你可能感兴趣的:(算法,C语言,蓝桥杯)