前言
本部分由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))n=int(input()) for i in range(0,n): a=input() n,m=a.split() print(int(n)+int(m))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;}#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; }#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;}#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; }#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) # 输出最大的值# 方法一:用字典 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) # 输出最大的值# 方法一:用字典 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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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=0h=0for x in range(len(n)):if n[x]==1:count=1for y in range(x+1,len(n)):if n[y]==1:count=count+1else:breakif count>=c:h=h+1print(h)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)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;}#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; }#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(" ");}}}#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(" "); } } }#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];}#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]; }#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 = 0max_max=0max_low=0for i in range(len(matrix)):for j in range(len(matrix)):if matrix[i][j]>matrix_max:matrix_max=matrix[i][j]max_row=imax_low=jreturn matrix_max,max_row,max_lowmatrix = []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)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)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;}#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; }#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);}#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); }#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 an=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=' ')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=' ')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 an=int(input())a=list(map(str,input().split()))k=int(input())a=f(a,n,k)print(*a)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)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;}#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; }#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:breakif len(str1)<len(str2):print("no")else:str3=str1+str1if str2 in str3:print("yes")else:print("no")if __name__ =="__main__":main()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()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;}#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; }#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;}#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; }#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);elseprintf("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;}#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; }#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;}#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; }#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;}#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; }#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 100int 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;}#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; }#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;elseret=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;}#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; }#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;}#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; }#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;}#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; }#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)a = list(input()) for x in range(len(a)): a[x] = str(ord(a[x]) - 24) a = ''.join(a) # 将列表转换为字符串 a = a[::-1] # 反转字符串 print(a)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;}#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; }#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 100void 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';}#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'; }#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;}#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; }#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;}#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; }#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]);}#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]); }#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,否则返回0if(abs(x)>abs(y))return 1;//若绝对值相同,符号不同时,负数在前;if(abs(x)==abs(y)&&x>y)//abs头文件不是math.h而是stdlib.hreturn 1;return 0;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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); //输入整数的个数nstruct 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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}}}#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; } } }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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;}#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; }#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);//有斜率的话,套斜率公式求斜率elseanswer = 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;}//就三百组点,全给试一遍就完事了 #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; }//就三百组点,全给试一遍就完事了 #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;}#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; }#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{//定义结构体playerchar 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; //输入一个人将其答对题目初始化为0man[num].sum=0; //输入一个人将答题总时初始化为0int 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;}#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; }#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;}elsereturn 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");elseprintf("Wrong Answer\n");}}return 0;}#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; }#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;}#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; }#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
暂无评论内容