前言
本部分由Frex和Godyu辅助分享答案,部分题解用python较为简单也附上了python答案.
有什么不懂的问题联系FrexQQ2821154546或Godyu QQ1641281102
1151:大整数加法
域用python写的
n=int(input())
for i in range(0,n):
a=input()
n,m=a.split()
print(int(n)+int(m))
C语言
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[1000],arr2[1000];
int a1[1000],a2[1000];
int str[1000];
int len1,len2;
int t,flag=0,n;
scanf("%d",&t);
while(t--)
{
flag=0;
memset(a1,0,sizeof(a1));
memset(a2,0,sizeof(a2));
memset(str,0,sizeof(str));
scanf("%s%s",arr1,arr2);
len1=strlen(arr1);
len2=strlen(arr2);
if(len1>len2)
{
n=len1-len2;
for(int i=0;i<len1;i++)
{
a1[i]=arr1[i]-'0';
if(i<len2)
{
a2[i+n]=arr2[i]-'0';
}
}
}
else
{
n=len2-len1;
for(int i=0;i<len2;i++)
{
a2[i]=arr2[i]-'0';
if(i<len1)
{
a1[i+n]=arr1[i]-'0';
}
}
}if(len2>len1)
{
n=len1;
len1=len2;
len2=n;
}
for(int i=len1-1;i>=0;i--)
{
str[i]=a1[i]+a2[i]+flag;
flag=0;
if(i>0)
{
if(str[i]>=10)
{
str[i]=str[i]%10;
flag=1;
}
}
}
for(int i=0;i<len1;i++)
{
printf("%d",str[i]);
}
printf("\n");
}
return 0;
}
1152:二分搜索
#include <stdio.h>
int serch(int num[],int serchnum,int len)
{
int ret=-1;
int left=0,right=len-1;
int mid;
while(left<=right)
{
mid=(left+right)/2;
if(num[mid]==serchnum)
{
ret=mid;
break;
}
else if(serchnum>num[mid])
{
left=mid+1;
}else
{
right=mid-1;
}
}
return ret;
}
int main()
{
int ret;
int num[100000];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
int m;
scanf("%d",&m);
int serchnum;
for(int k=0;k<m;k++)
{
scanf("%d",&serchnum);
ret=serch(num,serchnum,n);
if(ret==-1)
{
printf("Not found!\n");
}else
{
printf("%d\n",ret);
}
}
return 0;
}
1153:简易版最长序列
python:
# 方法一:用字典
t = int(input()) # 读取t的值
for _ in range(t): # 循环t次
n = int(input()) # 读取n的值
g = list(map(int, input().split())) # 读取n个整数,并转换为列表
count = {} # 创建一个空字典
for x in g: # 遍历列表中的每个元素
count[x] = count.get(x, 0) + 1 # 如果元素在字典中,就加一,否则就设为一
max_count = max(count.values()) # 找出字典中最大的值
print(max_count) # 输出最大的值
C语言
#include <stdio.h>
int main()
{
int t,n;
scanf("%d",&t);
int a[10000];
int ts;
while(t--)
{
int len=1,maxlen=1;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
ts=a[i];
a[i]=a[j];
a[j]=ts;
}
}
}
for(int i=0;i<n;i++)
{
if(a[i-1]==a[i])
{
len++;
}
else
{
len=1;
}
if(len>maxlen)
{
maxlen=len;
}
}
printf("%d\n",maxlen);
}
return 0;
}
1154:校门外的树
#include<stdio.h>
#include<string.h>
int main()
{
int n, m, l, a, b, i, sum;
scanf("%d", &n);
while(n--)
{
int c[10000]={0};
sum=0;
scanf("%d%d", &l, &m);
while(m--)
{
scanf("%d%d", &a, &b);
for(i=a;i<=b;i++)
{
c[i]++;
}
}
for(i=0;i<=l;i++)
{
if(c[i]!=0)
sum++;
}
printf("%d\n", l+1-sum);
}
return 0;
}
1155:字符串比较 多实例
#include <stdio.h>
#include <string.h>
int main()
{
char a[10005],b[10005];
while(scanf("%s %s",a,b)!=EOF)
{
for(int i=0;a[i]!='\0';i++)
{
if(a[i]>='a')
{
a[i]=(a[i]-96)*2+1;
}
else
{
a[i]=(a[i]-64)*2;
}
}
for(int i=0;b[i]!='\0';i++)
{
if(b[i]>='a')
{
b[i]=(b[i]-96)*2+1;
}
else
{
b[i]=(b[i]-64)*2;
}
}if(strcmp(a,b)<0)
printf("YES\n");
else printf("NO\n");
}
return 0;
}
1156:单数变复数
#include<stdio.h>
#include<string.h>
int main()
{
char a[25];
int l;
gets(a);
l=strlen(a);
if(a[l-1]=='s' || a[l-1]=='x' || a[l-1]=='o' || (a[l-2]=='s'&&a[l-1]=='h') || (a[l-2]=='c'&&a[l-1]=='h')){
a[l]='e';
a[l+1]='s';
a[l+2]='\0';
}
else if(a[l-1]=='y'){
a[l-1]='i';
a[l]='e';
a[l+1]='s';
a[l+2]='\0';
}
else{
a[l]='s';
a[l+1]='\0';
}
puts(a);
return 0;
}
1157:连续的n个1
python:
n = input()
n = list(map(int, n))
c = int(input())
sum=0
h=0
for x in range(len(n)):
if n[x]==1:
count=1
for y in range(x+1,len(n)):
if n[y]==1:
count=count+1
else:
break
if count>=c:
h=h+1
print(h)
C语言:
#include <stdio.h>
int main()
{
char str[1000];
gets(str);
int num;
scanf("%d",&num);
int cnt,count=0;
for(int i=0;str[i]!='\0';i++)
{
cnt=0;
for(int k=i;k<i+num;k++)
{
if(str[k]=='1')
{
cnt++;
}
}
if(cnt==num)
{
count++;
}
}
printf("%d\n",count);
return 0;
}
1158:又是排序(指针专题)
#include <stdio.h>
void psort(int *pa,int *pb,int *pc,int *pd);
int main()
{
int a,b,c,d;
scanf("%d %d %d %d",&a,&b,&c,&d);
psort(&a,&b,&c,&d);
return 0;
}
void psort(int *pa,int *pb,int *pc,int *pd)
{
int h=0;
int i=0;
int g=0;
int t=0;
int arr[4]={*pa,*pb,*pc,*pd};
for(i=0;i<4;i++)
{
for(g=i+1;g<4;g++){
if(arr[i]<arr[g]){
t=arr[i];
arr[i]=arr[g];
arr[g]=t;
}
}
}
for(i=0;i<4;i++)
{
printf("%d",arr[i]);
if(i<4)
{
printf(" ");
}
}
}
1159:最大的两个数(指针专题)
#include <stdio.h>
void LargestTwo(int a[],int n,int *pfirst,int *psecond);
int main()
{
int a[100001];
int n;
int c,d;
LargestTwo(a,n,&c,&d);
printf("%d %d",c,d);
return 0;
}
void LargestTwo(int a[],int n,int *pfirst,int *psecond)
{ int i;
int t;
int g;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
for(g=i+1;g<n;g++){
if(a[i]<a[g]){
t=a[i];
a[i]=a[g];
a[g]=t;
}
}
}
*pfirst=a[0];
*psecond=a[1];
}
1160:矩阵的最大值(指针专题)
python:
def Maritx(matrix):
matrix_max= matrix[0][0]
matrix_max = 0
max_max=0
max_low=0
for i in range(len(matrix)):
for j in range(len(matrix)):
if matrix[i][j]>matrix_max:
matrix_max=matrix[i][j]
max_row=i
max_low=j
return matrix_max,max_row,max_low
matrix = []
for _ in range(2):
row=list(map(int,input().split()))
matrix.append(row)
matrix_max, max_row, max_low = Maritx(matrix)
print(matrix_max,max_row,max_low)
C语言:
#include <stdio.h>
void FindMax(int p[][3], int m, int n, int *pRow, int *pCol)
{
int x=0,y=0;
int max=p[0][0];
for(int i=0;i<m;i++)
{
for(int k=0;k<n;k++)
{
if(p[i][k]>max)
{
max=p[i][k];
x=i;
y=k;
pRow=&x;
pCol=&y;
}
}
}
printf("%d %d %d",max,*pRow,*pCol);
}
int main()
{
int a[2][3];
for(int i=0;i<2;i++)
{
for(int k=0;k<3;k++)
{
scanf("%d",&a[i][k]);
}
}
int *pRow=NULL,*pCol=NULL;
FindMax(a,2,3,pRow,pCol);
return 0;
}
1161:字符串长度(指针专题)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int len(char *sp);
int main()
{
char arr[101];
gets(arr);
len(arr);
return 0;
}
int len(char *sp){
int x=strlen(sp);
int i=0;
int num=0;
for(i=0;i<x;i++)
{
if(sp[i]!=' ')
{
num++;
}
}
printf("%d",num);
}
1162:循环移动(指针专题)
此题python切片较为简单,具体看我文章
def f(a,n,k):
a=a[-k:]+a[:-k]
return a
n=int(input())
a=list(map(str,input().split()))
k=int(input())
a=f(a,n,k)
# 用enumerate函数遍历列表a,同时得到索引和元素
for x, val in enumerate(a):
# 只打印元素,不打印索引
print(val,end=' ')
python第二种方法:
def f(a,n,k):
a=a[-k:]+a[:-k]
return a
n=int(input())
a=list(map(str,input().split()))
k=int(input())
a=f(a,n,k)
print(*a)
C语言:
#include <stdio.h>
#include <malloc.h>
void ringShift(int *a, int n, int k)
{
int *b=malloc(n*sizeof(int));
for(int i=0;i<n;i++)
{
if(i+k<n)
{
b[i+k]=a[i];
}
else b[i+k-n]=a[i];
}
for(int i=0;i<n-1;i++)
{
printf("%d ",b[i]);
}
printf("%d",b[n-1]);
}
int main()
{
int n;
scanf("%d",&n);
int *a=malloc(n*sizeof(int));
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int k;
scanf("%d",&k);
ringShift(a,n,k);
return 0;
}
1163:亲和串(字符串)
python:
def main():
while 1:
try:
str1=input()
str2=input()
except EOFError:
break
if len(str1)<len(str2):
print("no")
else:
str3=str1+str1
if str2 in str3:
print("yes")
else:
print("no")
if __name__ =="__main__":
main()
C语言:
#include <stdio.h>
#include <string.h>
char s1[1000001],s2[1000000],s3[2000000];
int main()
{
int len1,len2;
while(scanf("%s\n%s",s1,s2)!=EOF)
{
len1=strlen(s1);
len2=strlen(s2);
if(len1<len2)
{
printf("no\n");
}
else
{
strcpy(s3,s1);
strcat(s1,s3);
if(strstr(s1,s2)!=NULL)
{
printf("yes\n");
}
else printf("no\n");
}
}
return 0;
}
1164:字符串加密
#include<stdio.h>
#include<string.h>
/*
字符串加密(循环)
共有26字母,+k后对26求余
*/
int main(){
char str[10001];
int k,a=0;
gets(str);
scanf("%d",&k);
for(int i=0;str[i]!='\0';i++){
if(str[i]>='a'&&str[i]<='z'){
str[i]=(str[i]-'a'+k)%26+'a';
a=1;
}
if(str[i]>='A'&&str[i]<='Z'){
str[i]=(str[i]-'A'+k)%26+'A';
a=1;
}
}
if(a==1) puts(str);
return 0;
}
1165:实数的小数部分(指针专题)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *decimal(char *p);
int main()
{ char str[10001];
char *p;
p=decimal(str);
int h=0;
if(p!= NULL)
printf("0%s", p);
else
printf("No decimal part");
return 0;
}
char *decimal(char *p)
{ int flag=0;
int i=0;
char *star;
int j=0;
star = (char*)malloc(100*sizeof(char));
scanf("%s",p);
int x = strlen(p);
for (i=0;i<x;i++){
if(p[i]=='.'){
flag=1;
}
if(flag==1){
star[j++]=p[i];
}
}
star[j]='\0';
while(j--){
if(star[j]=='0'){
star[j]='\0';
}
else{
break;
}
}
if(star[j]=='.')
return NULL;
return star;
}
1166:实数取整(指针专题)
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char *rounding(char *p);
int main(){
char *p;
p=(char*)malloc(sizeof(char)*100);
gets(p);
printf("%s\n",rounding(p));
return 0;
}
char *rounding(char *p){
char *q;
while(*p=='0'){
p++;
}
while(*p=='\0'||*p=='.'){
p--;
}
q=strchr(p,'.');
if(q!=NULL){
*q='\0';
}
// printf("%s",p);
return p;
}
1167:逆转数(指针专题)
#include <stdio.h>
#include <string.h>
void reverse(char *str)
{
int len=strlen(str);
int idex;
for(int i=len-1;i>0;i--)
{
if(str[i]!='0')
{
idex=i;
break;
}
}
if(str[0]!='-')
{
for(int i=idex;i>=0;i--)
{
printf("%c",str[i]);
}
}
if(str[0]=='-')
{
printf("-");
for(int i=idex;i>0;i--)
{
printf("%c",str[i]);
}
}
for(int i=idex+1;i<len;i++)
{
printf("%c",str[i]);
}
}
int main()
{
char a[101];
scanf("%s",a);
reverse(a);
return 0;
}
1168:账单(指针专题)
#include <string.h>
#include <stdio.h>
#include <math.h>
#define N 100
int main()
{
int ncase,n;
char *p,*q;
p = (char *)malloc(sizeof(char) * N);
scanf("%d",&ncase);
double money;
double sum;
while(ncase--){
sum=0;
scanf("%d ",&n);
while(n--){
gets(p);
q=strrchr(p,' ');
sscanf(q,"%lf",&money);
sum=sum+money;
}
printf("%.1lf\n",sum);
}
return 0;
}
1169:大整数(指针专题)
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int cmp(char *a,char *b)
{
int ret;
int len1=strlen(a);
int len2=strlen(b);
if(len1>len2)
ret=1;
else if(len1<len2)
ret=-1;
else
{
if(strcmp(a,b)>0)
ret=1;
else if(strcmp<0)
ret=-1;
else
ret=0;
}
return ret;
}
int main()
{
char *p[3],temp[101];
for(int i=0;i<3;i++)
{
p[i]=(char *)malloc(sizeof(char)*101);
scanf("%s",p[i]);
}
for(int i=0;i<3;i++)
{
for(int j=i+1;j<3;j++)
{
if(cmp(p[i],p[j])>0)
{
strcpy(temp,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],temp);
}
}
}
for(int i=0;i<3;i++)
{
printf("%s\n",p[i]);
}
return 0;
}
1170:最长字符串(指针专题)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define P 90
//从字符串数组str中找出最长的一个字符串,并将其下标存入形参指针max所指内存。
void maxLenStr(char *str[],int n,int *max)
{
int i,m=0;
for(i=0; i<n; i++)
{
if(strlen(str[m])<strlen(str[i]))
{
m=i;
}
}
*max=m;
}
int main()
{
int i,max;
char *str[101],s[90];
for(i=0;; i++)
{
gets(s);
if(strcmp(s,"****")==0)
break;
else
{
str[i]=(char*)malloc(sizeof(char)*(strlen(s)+1));
strcpy(str[i],s);
}
}
maxLenStr(str,i,&max);
printf("%s\n",str[max]);
return 0;
}
1171:加密(指针专题)
C语言:
#include <stdio.h>
#include <string.h>
int encrypt(char *plain, char *cipher)
{
int i;
for(i=0;plain[i]!='\0';i++)
{
cipher[i]=plain[i]-24;
}
cipher[i]='\0';
}
int main()
{
char a[200],b[200];
gets(a);
encrypt(a,b);
int len=strlen(b);
for(int j=len-1;j>=0;j--)
{
printf("%d%d",b[j]%10,b[j]/10);
}
return 0;
}
python:
a = list(input())
for x in range(len(a)):
a[x] = str(ord(a[x]) - 24)
a = ''.join(a) # 将列表转换为字符串
a = a[::-1] # 反转字符串
print(a)
1172:矩阵边界和(指针专题)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int i=0;
int j=0;
int *p;
int sum=0;
p = (int*) malloc(sizeof(int) *(m*n));
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&p[i*n+j]);
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(i==0||j==0||i==m-1||j==n-1){
sum=sum+p[i*n+j];
}
}
}
free(p);
printf("%d",sum);
return 0;
}
1173:密码解密(指针专题)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
void decrypt(char *cipher, char *plain);
int main()
{
char *p;
char *q;
p=(char *)(malloc(sizeof(char)*200));
q=(char*)(malloc(sizeof(char)*300));
gets(p);
decrypt(p,q);
puts(q);
return 0;
}
void decrypt(char *cipher, char *plain)
{ int i=0;
int j=0;
for(i=0;cipher[i]!='\0';){
plain[j++]=(cipher[i]-'0')*10+(cipher[i+1]-'0')+24;
i=i+2;
}
plain[j]='\0';
}
1174:长整数排序(指针专题)
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int greater(char *s1, char *s2)
{
int ret;
int len1=strlen(s1);
int len2=strlen(s2);
if(len1>len2)
ret=1;
else if(len1<len2)
ret=-1;
else if(len1==len2)
{
if(strcmp(s1,s2)>0)
ret=1;
if(strcmp(s1,s2)<0)
ret=-1;
if(strcmp(s1,s2)==0)
ret=0;
}
return ret;
}
char*del(char*buf)
{
char *ch;
int i;
for(i=0;buf[i]!='\0';i++)
{
if(buf[i+1]=='\0')
break;
if(buf[i]!='0')
break;
}
ch=&buf[i];
return ch;
}
int main()
{
char *a[11],*t,buf[101];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",buf);
t=del(buf);
a[i]=(char*)malloc(sizeof(char)*(strlen(t)+1));
strcpy(a[i],t);
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(greater(a[i],a[j])==1)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(int i=0;i<n;i++)
{
printf("%s\n",a[i]);
}
return 0;
}
1175:矩阵转置(指针专题)
#include <stdio.h>
#include <malloc.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int *a;
a=(int *)malloc(sizeof(int)*(m*n));
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[n*i+j]);
}
}
for(int j=0;j<n;j++)
{
for(int i=0;i<m;i++)
{
printf("%d ",a[n*i+j]);
}
printf("\n");
}
return 0;
}
1176:查找最大字符串(指针专题)
#include <stdio.h>
#include <string.h>
#include <malloc.h>
void find(char *name[], int n, int *p)
{
int idex=0;
char*ch=name[0];
for(int i=1;i<n;i++)
{
if(strcmp(ch,name[i])<0)
{
ch=name[i];
idex=i;
}
}
*p=idex;
}
int main()
{
char *name[100];
char str[6];
int i=0;
for(i=0;;i++)
{
gets(str);
if(strcmp(str,"*****")==0)
{
break;
}
else
{
name[i]=(char*)malloc(sizeof(char)*6);
strcpy(name[i],str);
}
}
int flag=0,n=i;
find(name,n,&flag);
printf("%s",name[flag]);
}
1177:按要求排序(指针专题)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void sort1(int a[], int n, int (*cmp)(int x,int y));
int CmpAsc(int x, int y); /*按升序要求判断两元素是否逆序*/
int CmpDec(int x, int y); /*按降序要求判断两元素是否逆序*/
int CmpAbsAsc(int x, int y); /*按绝对值升序要求判断两元素是否逆序*/
int main()
{
int a[10],i,n;
int slt;
/*读入n和n个整数,存入数组a*/
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
/*读入用户的选择,存入slt; */
scanf("%d",&slt);
switch(slt)
{
case 1: sort1(a, n, CmpAsc); break;
case 2: sort1(a, n, CmpDec); break;
case 3: sort1(a, n, CmpAbsAsc);break;
}
/*输出排序后的数组*/
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[n-1]);
return 0;
}
void sort1(int a[], int n, int (*cmp)(int x,int y))
{
/*对数组a排序,排序原则由cmp指定,若cmp为真,表示两元素逆序*/
int t;
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)//冒泡循环
{
if(cmp(a[i],a[j]))
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
int CmpAsc(int x, int y)
{
//如果x>y返回1,否则返回0;
if(x>y)
return 1;
return 0;
}
int CmpDec(int x, int y)
{
//如果x<y返回1,否则返回0;
if(x<y)
return 1;
return 0;
}
int CmpAbsAsc(int x, int y)
{
//如果abs(x)>abs(y)返回1,否则返回0
if(abs(x)>abs(y))
return 1;
//若绝对值相同,符号不同时,负数在前;
if(abs(x)==abs(y)&&x>y)//abs头文件不是math.h而是stdlib.h
return 1;
return 0;
}
1178:单词数
#include <stdio.h>
#include<string.h>
int main()
{
char a[30001]={0},b[31]={0},c[1001][31]={0};
int len,i,j=0,o,l,q=0;
while(gets(a),strcmp(a,"#")!=0){
l=0;
len=strlen(a);
for(i=0;i<=len;i++){
if(a[i]!=' '){
b[j]=a[i];
j++;}
if((a[i-1]!=' '&&a[i]==' '&&i>0)||(a[i-1]!=' '&&a[i]=='\0'&&i>0)){
for(o=0;o<l;o++)
if(strcmp(c[o],b)==0)
q=1;
if(q==0){
strcpy(c[l],b);
l++;}
memset(b,'\0',sizeof(b));
j=0,q=0;}}
printf("%d\n",l);}
return 0;
}
1179:带参宏定义(函数专题)
#include <stdio.h>
#define SWAP(a, b, t) { t=a; a=b; b=t; }
int main()
{
char a,b,c,t;
scanf("%c %c %c",&a,&b,&c);
if(a<b)
{
SWAP(a,b,t)
}
if(a<c)
{
SWAP(a,c,t);
}
if(b<c)
{
SWAP(b,c,t);
}
printf("%c %c %c\n",a,b,c);
return 0;
}
答案2:
#include<stdio.h>
#define SWAP(a,b,t){t=a; a=b; b=t;}
int main()
{
char a,b,c,t;
scanf("%c %c %c",&a,&b,&c);
if(a<b)
SWAP(a,b,t);
if(a<c)
SWAP(a,c,t);
if(b<c)
SWAP(b,c,t);
printf("%c %c %c\n",a,b,c);
return 0;
}
1180:成绩统计(结构体专题)
#include<stdio.h>
struct u{
char ID[20];
char name[30];
int a,b,c;
};
int main()
{
int i,max=0,n,sum[100];//存储每个学生的总成绩
struct u stu[100];//结构体数组
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %s %d %d %d",stu[i].ID,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);//输入各个学生的数据存入结构体数组
sum[i]=stu[i].a+stu[i].b+stu[i].c;//将每个学生的总成绩存入数组
if(sum[i]>sum[max])//记录最高成绩的下标
max=i;
}
printf("%s %s %d %d %d\n",stu[max].ID,stu[max].name,stu[max].a,stu[max].b,stu[max].c);
return 0;
}
1181:谁的年龄最小(结构体专题)
#include <stdio.h>
typedef struct s{
char name[21];
int a,b,c;
}G;
int main()
{
int n;
scanf("%d",&n);
int i=0;
int max=0;
G stu[100];
for(i=0;i<n;i++){
scanf("%s %d %d %d",stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
if(stu[i].a>stu[max].a){
max=i;
}
else if(stu[i].a==stu[max].a){
if(stu[i].b>stu[max].b){
max=i;
}
else if(stu[i].b==stu[max].b){
if(stu[i].c>stu[max].c)
{
max=i;
}
}
}
}
printf("%s %04d-%02d-%02d",stu[max].name,stu[max].a,stu[max].b,stu[max].c);
return 0;
}
1182:查询记录(结构体专题)
#include <stdio.h>
#include <string.h>
typedef struct s{
char name[21];
char id[21];
int a,b,c;
}G;
int main()
{
int n;
int flag=0;
scanf("%d",&n);
int i=0;
int max=0;
G stu[1000];
for(i=0;i<n;i++){
scanf("%s %s %d %d %d",stu[i].id,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
}
char g[25];
scanf("%s",g);
int j=0;
for(j=0;j<n;j++){
if(strcmp(stu[j].id,g)==0){
max=j;
flag=1;
break;
}
}
// printf("%s %04d-%02d-%02d",stu[max].name,stu[max].a,stu[max].b,stu[max].c);
if(flag==0){
printf("Not Found");
}
else{
printf("%s %s %d %d %d",stu[max].id,stu[max].name,stu[max].a,stu[max].b,stu[max].c);
}
return 0;
}
1183:平面点排序(一)(结构体专题)
#include<stdio.h>
#include <math.h>
typedef struct dis
{
int x;
int y;
int d;
}s;
int main()
{
int n;
s a[11];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %d",&a[i].x,&a[i].y);
a[i].d=pow(a[i].x*a[i].x+a[i].y*a[i].y,0.5);
}
s t;
for(int i=0;i<n;i++)
{
for(int k=i+1;k<n;k++)
{
if(a[i].d>a[k].d)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
}
for(int i=0;i<n;i++)
{
printf("(%d,%d) ",a[i].x,a[i].y);
}
return 0;
}
1184:平面点排序(二)(结构体专题)
#include<stdio.h>
#include<math.h>
struct Dis{
int x; //x轴坐标值
int y; //y轴坐标值
};
int main()
{
int i,j,n;
scanf("%d",&n); //输入整数的个数n
struct Dis a[n]; //创建一个结构体数组
struct Dis temp; //定义结构体变量temp,用作交换时的临时变量。
//输入数据
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y); //输入x,y
}
//进行升序排序,到时候逆序输出就是降序排序
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i].x==a[j].x) //如果横坐标相同,按照纵坐标排序
{
if(a[i].y>a[j].y)
{
temp=a[i];a[i]=a[j];a[j]=temp;
}
}
else //横坐标不同,按照纵坐标排序
{
if(a[i].x>a[j].x)
{
temp=a[i];a[i]=a[j];a[j]=temp;
}
}
}
//输出升序排好序的数据
for(i=0;i<n;i++)
printf("(%d,%d) ",a[i].x,a[i].y);
printf("\n");
//逆序输出,得到降序序列
for(i=n-1;i>=0;i--)
printf("(%d,%d) ",a[i].x,a[i].y);
printf("\n");
return 0;
}
1185:添加记录(结构体专题)
答案1:
#include<stdio.h>
#include<string.h>
#define swap(a,b,t) {t=a;a=b;b=t;}
struct Student{
long long id; //学号
char name[21]; //姓名
int a,b,c; //三门课的成绩
};
int main()
{
int i,j,k,n,flag=0;
struct Student stu[102]; //定义一个结构体数组
struct Student p,t;
scanf("%d",&n); //输入学生人数
//输入学生信息
for(i=0;i<n;i++)
scanf("%lld%s%d%d%d",&stu[i].id,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
//输入要添加的信息
scanf("%lld%s%d%d%d",&p.id,p.name,&p.a,&p.b,&p.c);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(stu[i].id>stu[j].id)
swap(stu[i],stu[j],t);
}
//利用循环判断能否插入及插入的位置
for(i=0;i<n;i++)
{
if(stu[i].id==p.id) //若学号相等则存在重复,无法插入,结束循环
break;
if(i==0&&p.id<stu[0].id) //考虑需要在第一个元素之前插入的情况
{
flag=1;
k=0;
break;
}
if(p.id>stu[i].id&&(p.id<stu[i+1].id||i==n-1))
{
flag=1; //标志着有合法插入位置
k=i+1; //表示应该在k位置插入信息
break;
}
}
//插入
if(flag==0)
printf("error!\n");
else
{
for(i=n;i>k;i--) //把插入位置后的元素都后移
{
stu[i]=stu[i-1];
}
stu[k]=p;
//输出插入后的元素
for(i=0;i<=n;i++)
{
printf("%lld %s %d %d %d\n",stu[i].id,stu[i].name,stu[i].a,stu[i].b,stu[i].c);
}
}
return 0;
}
答案2:
#include <string.h>
#include <stdio.h>
typedef struct s{
char name[13];
char id[21];
int a,b,c;
}SY;
int main()
{
int n;
scanf("%d",&n);
SY b[105];
int flag=0;
int i=0;
for(i=0;i<n;i++){
scanf("%s %s %d %d %d",b[i].id,b[i].name,&b[i].a,&b[i].b,&b[i].c); // 这里没有逻辑错误,但是建议使用%12s和%20s限制输入的长度,避免溢出
}
getchar();
SY t,y;
scanf("%s %s %d %d %d",&y.id,&y.name,&y.a,&y.b,&y.c);
b[n]=y;
for(i=0;i<n;i++){
if(strcmp(b[i].id, y.id) == 0){
flag=1;
break;
}
}
if(flag==1){
printf("error!");
}
if(flag==0){
for(i=n-1;i>=0;i--){
if(strcmp(y.id,b[i].id)<0){
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
}
}
for(i=0;i<n+1;i++){
printf("%s %s %d %d %d\n",b[i].id,b[i].name,b[i].a,b[i].b,b[i].c); // 这里应该加一个换行符\n,否则输出不会换行
}
}
return 0;
}
1186:删除记录(结构体专题)
#include <stdio.h>
#include <string.h>
int main()
{
typedef struct student
{
char no[13];
char name[25];
int c;
int m;
int e;
}date;
int flag=0;
date a[101];
int n;
int idex;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s %s %d %d %d",&a[i].no,&a[i].name,&a[i].c,&a[i].m,&a[i].e);
}
char num[13];
scanf("%s",num);
for(int i=0;i<n;i++)
{
if(strcmp(a[i].no,num)==0)
{
flag=1;
break;
}
}
if(flag==0)
{
printf("error!\n");
}
else
{
for(int i=0;i<n;i++)
{
if(strcmp(a[i].no,num)==0)
{
idex=i;
}
}
for(int i=0;i<n;i++)
{
if(i==idex)
{
continue;
}
printf("%s %s %d %d %d\n",a[i].no,a[i].name,a[i].c,a[i].m,a[i].e);
}
}
return 0;
}
1187:棒棒糖(结构体专题)
#include <stdio.h>
#include<math.h>
#include<limits.h>
#include<string.h>
#include<ctype.h>
#include<malloc.h>
typedef struct lollipop
{
double c;
int b;
}POP;
int main()
{
POP a[10],b;
int n,i,m,j,num=0;
double sum=0.0;
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%lf %d",&a[i].c,&a[i].b);
for(i=0;i<m-1;i++)
for(j=1;j<m-i;j++)
{
if(a[j-1].c>a[j].c)
{
b=a[j-1];
a[j-1]=a[j];
a[j]=b;
}
}
for(i=0;i<m;i++)
{
if(num+a[i].b<=n)
{
sum+=a[i].b*a[i].c;
num+=a[i].b;
}
else
{
a[i].b=n-num;
sum+=a[i].b*a[i].c;
num+=a[i].b;
}
if(num==n)
{
printf("%.2lf",sum);
return 0;
}
}
}
1188:选票统计(一)(结构体专题)
#include <stdio.h>
#include <string.h>
int main()
{
typedef struct voter
{
char name[11];
int votes;
}date;
int n;
scanf("%d",&n);
date a[5]=
{
{"zhang",0},
{"wang",0},
{"zhao",0},
{"liu",0},
{"miao",0},
};
char s[6];
for(int i=0;i<n;i++)
{
scanf("%s",s);
for(int k=0;k<5;k++)
{
if(strcmp(a[k].name,s)==0)
{
a[k].votes++;
}
}
}
for(int i=0;i<5;i++)
{
printf("%s %d\n",a[i].name,a[i].votes);
}
return 0;
}
1189:选票统计(二)(结构体专题)
#include <stdio.h>
#include <string.h>
int main()
{
typedef struct student
{
char name[25];
int votes;
}date;
date a[505];
char name[25];
int i=0,j=0,flag,max=0;
while(strcmp("#",gets(name))!=0)
{
flag=1;
for(i=0;i<j;i++)
{
if(strcmp(name,a[i].name)==0)
{
flag=0;
a[i].votes++;
}
}
if(flag==1)
{
strcpy(a[j].name,name);
a[j].votes=1;
j++;
}
for(i=0;i<j;i++)
{
if(a[i].votes>a[max].votes)
{
max=i;
}
}
}
printf("%s",a[max].name);
return 0;
}
1190:按出生日期排序(结构体专题)
#include <stdio.h>
int main()
{
typedef struct friend
{
char name[21];
int y;int m;int d;
}date;
date a[11],t;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s %d %d %d",a[i].name,&a[i].y,&a[i].m,&a[i].d);
}
for(int j=0;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
if(a[j].m>a[k].m)
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
else if(a[j].m==a[k].m)
{
if(a[j].d>a[k].d)
{
t=a[j];
a[j]=a[k];
a[k]=t;
}
}
}
}
for(int i=0;i<n;i++)
{
printf("%s %d-%02d-%02d\n",a[i].name,a[i].y,a[i].m,a[i].d);
}
return 0;
}
1191:数星星(结构体专题)
#include <stdio.h>
int main()
{
typedef struct star
{
int x;
int y;
}date;
date a[303];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %d",&a[i].x,&a[i].y);
}
date t;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i].x>a[j].x)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
else if(a[i].x==a[j].x)
{
if(a[i].y>a[j].y)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
for(int i=1;i<n;i++)
{
if(a[i].x==a[i-1].x&&a[i].y==a[i-1].y)
{
n--;
}
}
printf("%d\n",n);
return 0;
}
1192:奖学金(结构体专题)
#include <stdio.h>
#include <malloc.h>
int main()
{
typedef struct student
{
char name[21];
int s1;
int s2;
char ch1;
char ch2;
int num;
int sum;
}date;
date a[11];
int n,sum=0,max=0,idex;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
a[i].sum=0;
scanf("%s %d %d %c %c %d",a[i].name,&a[i].s1,&a[i].s2,&a[i].ch1,&a[i].ch2,&a[i].num);
if(a[i].s1>80&&a[i].num>0)
a[i].sum+=8000;
if(a[i].s1>85&&a[i].s2>80)
a[i].sum+=4000;
if(a[i].s1>90)
a[i].sum+=2000;
if(a[i].s1>85&&a[i].ch2=='Y')
a[i].sum+=1000;
if(a[i].s2>80&&a[i].ch1=='Y')
a[i].sum+=850;
sum+=a[i].sum;
if(a[i].sum>a[max].sum)
{
max=i;
}
}
for(int i=0;i<n;i++)
{
}
printf("%s\n%d\n%d",a[max].name,a[max].sum,sum);
return 0;
}
1193:单科成绩排序(结构体专题)
#include <stdio.h>
#include <string.h>
int main()
{
typedef struct student
{
char no[13];
char name[21];
int c,m,e;
}date;
date a[101],t;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s %s %d %d %d",a[i].no,a[i].name,&a[i].c,&a[i].m,&a[i].e);
}
int num;
scanf("%d",&num);
if(num==1)
{
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(a[i].c<a[j].c)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
else if(a[i].c==a[j].c)
{
if(strcmp(a[i].no,a[j].no)>0)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
if(num==2)
{
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(a[i].m<a[j].m)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
else if(a[i].m==a[j].m)
{
if(strcmp(a[i].no,a[j].no)>0)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
if(num==3)
{
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(a[i].e<a[j].e)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
else if(a[i].e==a[j].e)
{
if(strcmp(a[i].no,a[j].no)>0)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
for(int i=0;i<n;i++)
{
printf("%s %s %d %d %d\n",a[i].no,a[i].name,a[i].c,a[i].m,a[i].e);
}
return 0;
}
1194:总成绩排序(结构体专题)
#include <stdio.h>
#include <string.h>
int main()
{
typedef struct student
{
char no[13];
char name[21];
int c,m,e;
int sum;
}date;
date a[101],t;
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s %s %d %d %d",a[i].no,a[i].name,&a[i].c,&a[i].m,&a[i].e);
a[i].sum=a[i].c+a[i].m+a[i].e;
}
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
if(a[i].sum<a[j].sum)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
else if(a[i].sum==a[j].sum)
{
if(strcmp(a[i].name,a[j].name)>0)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(int i=0;i<n;i++)
{
printf("%s %s %d %d %d %d\n",a[i].no,a[i].name,a[i].c,a[i].m,a[i].e,a[i].sum);
}
return 0;
}
1195:猴子选大王(结构体专题)
#include <stdio.h>
int main()
{
typedef struct monkey
{
int id;
}date;
date a[102];
int m,n,k=1;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
a[i].id=i;
}
while(n>1)
{
if((k+m-1)%n!=0)
{
k=(k+m-1)%n;
}
else k=n;
for(int i=k;i<=n;i++)
{
a[i]=a[i+1];
}
n--;
if(k==n+1)
{
k=1;
}
}
printf("%d",a[1].id);
return 0;
}
1196:数星星(二)(结构体专题)
//就三百组点,全给试一遍就完事了
#include<stdio.h>
struct star
{
double x, y;
}s[301];
int main()
{
int n;
int i, j, t, answer;
int m, max = 2;
double k;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%lf %lf", &s[i].x, &s[i].y);
for (i = 0; i < n - 1; i++)//每次选两个点,遍历所有可能的直线
{
for (j = i+1; j < n; j++)
{
m = 2;//两点确定一条直线,至少有两个点在一条直线上
answer = 1;//记录斜率的状况
if (s[i].x != s[j].x)
k = (s[i].y - s[j].y) / (s[i].x - s[j].x);//有斜率的话,套斜率公式求斜率
else
answer = 0;//没有的话,记录斜率状态
if (answer == 1)
{
for (t = 0; t < n; t++)//遍历出点i,j外的所有点,寻找在当前判断的这条直线上的点
if (t != i && t != j)
if (s[t].y - s[i].y == k * (s[t].x - s[i].x))//公式原型:y-y0=k(x-x0);
m++;
}
else
{
for (t = 0; t < n; t++)
if (t != i && t != j)
if (s[t].x == s[i].x)//只要横坐标相等,就在线上
m++;
}
if (m > max)
max = m;
}
}
printf("%d", max);
return 0;
}
1197:考试排名(一)(结构体专题)
#include <stdio.h>
#include <string.h>
struct score
{
char name[20];
int n;
int arr[10];
int s;
};
int main()
{
int b[10],m,i,j,c,d=0,z;
struct score a[100],t;
scanf("%d%d%d",&m,&c,&z);
for(i=0;i<c;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<m;i++)
{
a[i].s=0;
scanf("%s%d",&a[i].name,&a[i].n);
for(j=0; j<a[i].n; j++)
{
scanf("%d",&a[i].arr[j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<a[i].n;j++)
{
a[i].s+=b[a[i].arr[j]-1];
}
}
for(i=1;i<=m;i++)
{
for(j=0;j<m-i;j++)
{
if(a[j].s<a[j+1].s)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
else if(a[j].s==a[j+1].s&&strcmp(a[j].name,a[j+1].name)>0)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<m;i++)
{
if(a[i].s>=z)
{
d++;
}
}
printf("%d\n",d);
for(i=0; i<m; i++)
{
if(a[i].s>=z)
{
printf("%s %d\n",a[i].name,a[i].s);
}
}
return 0;
}
1198:考试排名(二)(结构体专题)
#include<stdio.h>
#include<string.h>
struct player{//定义结构体player
char name[11];//名字
int sum;//总时长
int t;//答对题目的数目
};
int main(){
struct player man[120];
int n;
scanf("%d",&n);
int num=0;
while((scanf("%s",man[num].name))!=EOF){
man[num].t=0; //输入一个人将其答对题目初始化为0
man[num].sum=0; //输入一个人将答题总时初始化为0
int c;
for(int j=0;j<n;j++){
scanf("%d",&c);//输入一个数c表示这一题的时长
if(c>0){//如果c大于0说明答对了,c此时代表的是答题所用时长
man[num].sum+=c;//总时长加上c即为现在总用时
man[num].t++;//答对题目数目加1
}
char b;//录入这个数的下一个字符
b=getchar();
if(b=='('){//如果答对没有罚时b应为空格,如果没有答对也应该为空格
scanf("%d",&c);//此时录入c,c表示在答对前答错的次数
man[num].sum+=c*20;//求现在的总时长
getchar();//将)从缓冲区取出
}
}
num++;//进入下一位选手
}
for(int i=0;i<num-1;i++){//按题目数量排序
for(int j=i+1;j<num;j++){
if(man[i].t<man[j].t){
struct player killer=man[i];
man[i]=man[j];
man[j]=killer;
}
}
}
for(int i=0;i<num-1;i++){//题目数量相同按时长排序
for(int j=i+1;j<num;j++){
if(man[i].t==man[j].t&&man[i].sum>man[j].sum){
struct player killer=man[i];
man[i]=man[j];
man[j]=killer;
}
}
}
for(int i=0;i<num-1;i++){//都相同按字典序排序
for(int j=i+1;j<num;j++){
if(man[i].t==man[j].t&&man[i].sum==man[j].sum&&strcmp(man[i].name,man[j].name)>0){
struct player killer=man[i];
man[i]=man[j];
man[j]=killer;
}
}
}
for(int i=0;i<num;i++){//按格式输出
printf("%-10s %2d %4d\n",man[i].name,man[i].t,man[i].sum);
}
return 0;
}
1199:在线判题(字符串)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
/*该函数用于除去s1和s2的空格符和制表符再进行判断*/
int Judge(char *s1, char *s2)
{
char a1[1000], a2[1000];
int i, j = 0;
for(i = 0; s1[i] != '\0'; i++){
if(s1[i] != ' ' && s1[i] != '\t' && s1[i] != '\n')
a1[j++] = s1[i];
}
a1[j] = '\0';
j = 0;
for(i = 0; s2[i] != '\0'; i++){
if(s2[i] != ' ' && s2[i] != '\t' && s2[i] !='\n')
a2[j++] = s2[i];
}
a2[j] = '\0';
if(strlen(a1) == strlen(a2)){
for(i = 0; i < strlen(a1); i++){
if(a1[i] != a2[i])
return 0;
}
return 1;
}
else
return 0;
}
int main()
{
/*a和b做换行符计数器,flag当控制器,控制文件的读入*/
int n, i, flag = 0, a, b;
/*buf和s做缓存判断,s1和s2分别是两个文件*/
char s[1000], s1[1000], s2[1000], buf[1000];
scanf("%d",&n);
for(i = 0; i < n; i++){
flag = 0;
a = 0;
b = 0;
memset(s1,0,sizeof(s1));
memset(s1,0,sizeof(s2));
while(1){
if(flag == 0){
gets(s);
if(strcmp(s,"START") == 0)
flag = 1;
}
else if(flag == 1){
gets(s);
flag = 2;
if(strcmp(s,"END") == 0) //这里先判断是否已经结束,如果没有结束再将s复制给s1,下面同理
break;
strcpy(s1,s);
a++;
}
else if(flag == 2){
gets(buf);
if(strcmp(buf,"END") == 0)
break;
strcat(s1,buf);
a++;
}
}
flag = 0;
while(1){
if(flag == 0){
gets(s);
if(strcmp(s,"START") == 0)
flag = 1;
}
else if(flag == 1){
gets(s);
flag = 2;
if(strcmp(s2,"END") == 0)
break;
strcpy(s2,s);
b++;
}
else if(flag == 2){
gets(buf);
if(strcmp(buf,"END") == 0)
break;
strcat(s2,buf);
b++;
}
}
if(strcmp(s1,s2) == 0 && a == b)
printf("Accepted\n");
else{
if(Judge(s1,s2))
printf("Presentation Error\n");
else
printf("Wrong Answer\n");
}
}
return 0;
}
1200:数组的距离
#include <stdio.h>
#include <math.h>
int main()
{
int m,n,i,j;
scanf("%d %d",&m,&n);
int f[m];
int g[n];
for(i=0;i<m;i++)
{
scanf("%d",&f[i]);
}
for(i=0;i<n;i++)
{
scanf("%d",&g[i]);
}
int max;
max=abs(f[0]-g[0]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(abs(f[i]-g[j])<max)
max=abs(f[i]-g[j]);
}
printf("%d\n",max);
return 0;
}
THE END
暂无评论内容