杭电oj2022-2030

2022 海选女主角

 1 #include <stdio.h>
 2 #include <math.h>
 3  
 4 int main(){
 5     int s[50][50];
 6     int n,m,x,y,z,i,j;
 7     while(scanf("%d %d",&m,&n)!=EOF){
 8         for(x=1;x<=m;x++){
 9             for(y=1;y<=n;y++){scanf("%d",&s[x][y]);}
10         }
11         z =  0;
12         for(x=1;x<=m;x++){
13             for(y=1;y<=n;y++){
14                 if(z<abs(s[x][y])){i = x;j = y;z = abs(s[x][y]);}
15             }
16         }
17         printf("%d %d %d\n",i,j,s[i][j]);
18     }
19 }

 

2023  求平均成绩

 1 #include <stdio.h>
 2  
 3 int main(){
 4     int s[51][10];
 5     int n,m,i,j,k,flag,count;
 6     double sum,c[50];
 7     while(scanf("%d %d",&n,&m)!=EOF){
 8         k=0;count=0;
 9         for(i=0;i<n;i++){
10             for(j=0;j<m;j++){scanf("%d",&s[i][j]);}
11         }
12         
13         for(i=0;i<n;i++){
14             sum = 0;
15             for(j=0;j<m;j++){
16                 sum += s[i][j];
17             }
18             if(i==n-1){printf("%.2lf\n",sum/m);}
19             else{printf("%.2lf ",sum/m);}
20         }
21         for(i=0;i<m;i++){
22             sum = 0;
23             for(j=0;j<n;j++){
24                 sum += s[j][i];
25             }
26             c[k] = sum/n;
27             k++;
28             if(i==m-1){printf("%.2lf\n",sum/n);}
29             else{printf("%.2lf ",sum/n);}
30         }
31         for(i=0;i<n;i++){
32             flag = 0;
33             for(j=0;j<m;j++){
34                 if(s[i][j]<c[j]){flag++;}
35             }
36             if(flag==0){count++;}
37         }
38         printf("%d\n\n",count);
39     }
40     
41 }

 

2024  C语言合法标识符

 1 #include <stdio.h>
 2 #include <math.h>
 3  
 4 int main(){
 5     char s[51];
 6     int n,len,i,flag;
 7     while(scanf("%d",&n)!=EOF){
 8         getchar();
 9         while(n--){
10             gets(s);
11             len = strlen(s);
12             if((s[0]=='_')||(s[0]>='a'&&s[0]<='z')||(s[0]>='A'&&s[0]<='Z')){
13                 flag = 0;
14                 for(i=1;i<len;i++){
15                     if((s[i]=='_')||(s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='0'&&s[i]<='9')){
16                         continue;
17                     }else{flag++;break;}
18                 }
19                 if(flag==0){printf("yes\n");}
20                 else{printf("no\n");}
21             }else{printf("no\n");}
22 
23         }
24     }
25     
26 }

 

2025  查找最大元素

 1 #include <stdio.h>
 2 #include <string.h>
 3  
 4 int main(){
 5     char s[101],m;
 6     int i,len;
 7     while(gets(s)!=NULL){
 8         len = strlen(s);
 9         m = 'a';
10         for(i=0;i<len;i++){
11             if(s[i]>=m){m = s[i];}
12         }
13         for(i=0;i<len;i++){
14             printf("%c",s[i]);
15             if(s[i]==m){printf("(max)");}
16         }
17         printf("\n");
18     }
19 }

这题有个坑,输出格式问题:

while(gets(str)!=NULL)                    NULL返回值对应的是char
while(scanf("%d",&x)!=EOF)         EOF返回值对应却是int

 

 

2026  首字母变大写

 1 #include <stdio.h>
 2 #include <string.h>
 3  
 4 int main(){
 5     char s[101];
 6     int i,len;
 7     while(gets(s)!=NULL){
 8         len = strlen(s);
 9         s[0] -= 32;
10         for(i=1;i<len;i++){
11             if(s[i]==' '){
12                 s[i+1] -= 32;
13             }
14         }
15         for(i=0;i<len;i++){
16             printf("%c",s[i]);
17         }
18         printf("\n");
19     }
20 }

 

2027  统计元音

 1 #include <stdio.h>
 2 #include <string.h>
 3  
 4 int main(){
 5     char s[101],m;
 6     int n,i,j,len,s1[10];
 7     while(scanf("%d",&n)!=EOF){
 8         getchar();
 9         for(i=0;i<n;i++){
10             gets(s);
11             len = strlen(s);
12             s1[0]=s1[1]=s1[2]=s1[3]=s1[4]=0;
13             for(j=0;j<len;j++){
14                 if(s[j]=='a'){s1[0]++;}
15                 if(s[j]=='e'){s1[1]++;}
16                 if(s[j]=='i'){s1[2]++;}
17                 if(s[j]=='o'){s1[3]++;}
18                 if(s[j]=='u'){s1[4]++;}
19             }
20             printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n",s1[0],s1[1],s1[2],s1[3],s1[4]);
21             if(i!=n-1){printf("\n");}
22         
23         }
24         
25     }
26 }

 

2028  Lowest Common Multiple Plus

 1 #include <stdio.h>
 2 
 3 int gcd(int x,int y){  //求x,y的最大公约数
 4     if(y==0){return x;}
 5     else{return gcd(y,x%y);}
 6 }
 7  
 8 int main(){
 9     int a,b,n,i;
10     while(scanf("%d",&n)!=EOF){
11         scanf("%d",&a);
12         for(i=1;i<n;i++){
13             scanf("%d",&b);
14             a = a*b/gcd(a,b);
15         }
16         printf("%d\n",a);
17     }
18 }

 

 

2029  Palindromes _easy version

 1 #include <stdio.h>
 2 #include <string.h>
 3  
 4 int main(){
 5     int n,i,len,flag;
 6     char s[100];
 7     while(scanf("%d", &n)!=EOF){
 8         getchar();
 9         while(n--){
10             gets(s);
11             len = strlen(s);
12             flag=0;
13             for(i=0;i<len;i++){
14                 if(s[i]!=s[len-i-1]){flag=1;break;}
15                 
16             }
17             if(flag==0){printf("yes\n");}
18             else{printf("no\n");}
19         }
20     }
21 }

 

2030  汉字统计

 1 #include <stdio.h>
 2 #include <string.h>
 3  
 4 int main(){
 5     int n,i,len,flag;
 6     char s[1000];
 7     while(scanf("%d", &n)!=EOF){
 8         getchar();
 9         while(n--){
10             gets(s);
11             len = strlen(s);
12             flag = 0;
13             for(i=0;i<len;i++){
14                 if(s[i]<0){flag++;}
15             }
16             printf("%d\n",flag/2);
17         }
18     }    
19 }

注:

1—— 一个汉字在字符串中是以两个负的字符形式存储,所以本题只要把字符串中负字符的个数找出来,再除以2 就OK了。

2——汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。 计算机中, 补码第一位是符号位, 1 表示为 负数, 
所以 汉字机内码的每个字节表示的十进制数都是负数

 

posted @ 2019-02-24 21:32  Ragd0ll  阅读(820)  评论(0编辑  收藏  举报