OJ练习题

/**************************************************************
A+B(2)
****************************************************************/

#include<stdio.h>
int main(){
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF){
        printf("%d\n",a+b);
    }
    printf("\n");
}

在这里插入图片描述

/**************************************************************
A+B(5)
****************************************************************/

#include<stdio.h>
int main()
{
    int n,i,x,s;
    while(scanf("%d",&n)!=EOF && n!=0)
    {
        s=0;
         for(i=1;i<=n;i++)
         { 
             scanf("%d",&x);
             s=s+x;
         }
         printf("%d\n",s);
         if(n==0)
         break;
    }
    
    return 0;
}

在这里插入图片描述

/**************************************************************
求和
****************************************************************/

#include<stdio.h>
#include<string.h>
 
int main()
{
    long a;
    long s=0;
    int i=0;
    while(scanf("%d",&a)!=EOF){
        for(;a!=0;i++){
            s=s+(a%10);
            a=a/10;
        }
        printf("%d %d\n",s,i);
        i=0;
        s=0;
    }
}

/**************************************************************
害死人不偿命的(3n+1)
****************************************************************/

#include<stdio.h>
int main(){
    int n=0;
    int i=0;
    while(scanf("%d",&n)!=EOF){
            while(n!=1){
                if(n%2==0){
                    n/=2;
                }else{
                    n=(3*n+1)/2;
                }
                i++;
            }
            printf("%d\n",i);
            i=0;
    }
}

/**************************************************************
写出这个数
****************************************************************/

#include<stdio.h>
#include<string.h>
#include<stdbool.h>
int main(){
        char *str[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
        char s[99];
        int j=0;
        int sum=0;
        int sumRe = 0;
        bool flag = false;
        while(scanf("%s",s)!=EOF){
                for(j=0;j<strlen(s);j++){
                        sum+=s[j]-'0';
                }
                while(sum!=0){//50
                    sumRe*=10;//0
                    sumRe+=sum % 10;//0
                    if(sum/10!=0 && sum%10==0){
                        if(sumRe==0){
                            flag=true;
                        }
                    }
                    sum/=10;//5
                }
                while(sumRe!=0){
                    if(sumRe<10){
                       printf("%s",str[sumRe%10]);
                    }else{
                        printf("%s ",str[sumRe%10]);
                    }
                    sumRe/=10;
                }
                if(flag==true){
                    printf(" %s\n",str[0]);
                    flag=false;
                }else printf("\n");
                sum =0;sumRe=0;
        }
}

在这里插入图片描述

/**************************************************************
简单数学函数(1)
****************************************************************/

#include<stdio.h>
#include<math.h>
int f(int x){
   return  pow(x,2)+2+pow(2,x);
}
int main()
{
    int x;
    while(scanf("%d",&x)!=EOF){
        if(x>=0){
            printf("%d\n",f(x));
        }
    }
}

/**************************************************************
长方体的表面积和体积
****************************************************************/

#include<stdio.h>
#include<math.h>
int main(){
    int a,b,h;
    while(scanf("%d %d %d",&a,&b,&h)!=EOF){
        int v,u;
        v=2*(a*b+b*h+a*h);
        u=a*b*h;
        printf("%d %d\n",v,u);
    }
   // printf("\n");
}

在这里插入图片描述

/**************************************************************
找最大最小数
****************************************************************/

#include<stdio.h>
int Max=-1e7,Min=1e7,n,t;
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        Max=-1e7,Min=1e7;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&t);
            if(t>Max)
            {
                Max=t;
            }
            if(t<Min)
            {
                Min=t;
            }
        }
        printf("%d %d\n",Max,Min);
    }
}

在这里插入图片描述

/**************************************************************
三个数排序
****************************************************************/

#include<stdio.h>
    int main(){
        int a,b,c,temp=0;
       while(scanf("%d %d %d",&a,&b,&c)!=EOF){
     
               if(a>b){
                temp=a;
                a=b;
                b=temp;
     
              }
                if(a>c){
                    temp=a;
                    a=c;
                    c=temp;
                }
                if(b>c){
                    temp=b;
                    b=c;
                    c=temp;
                }
                printf("%d %d %d",a,b,c);
     
     
          printf("\n");
       }
     
    }

在这里插入图片描述

/**************************************************************
星星(5)
****************************************************************/

#include <stdio.h>
 
 
int main()
{
 
    int i=0,j=0,n;
    while(scanf("%d",&n)!=EOF){
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=i-1;++j)
        {
            printf(" ");
        }
        for(j=1;j<=2*n-(2*i-1);++j)
        {
            printf("*");
        }
        printf("\n");
    }
}
}
 

在这里插入图片描述

/**************************************************************
星星(6)
****************************************************************/

#include <stdio.h>
int main(){
    int i,j,n;
 
    while(scanf("%d",&n)!=EOF){
        for(i=0;i<n;i++){
            for(j=1;j<=n-i-1;++j){
                printf(" ");
            }
                printf("*");
            if(2*n-1==2*i+1){
                for(j=1;j<2*n-2;++j){
                    printf("*");
                }
            }else{
                for(j=1;j<=2*i-1;++j){
                    printf(" ");
                }
            }
            if(2*i-1>0){printf("*");}
            printf("\n");
        }
 
 
 
    }
}

在这里插入图片描述

/**************************************************************
判断闰年
****************************************************************/

#include<stdio.h>
 
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        if(n % 4==0 && n%100!=0 ||n%400==0)
        {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
 
    }
}

在这里插入图片描述

/**************************************************************
这个月有多少天
****************************************************************/

#include<stdio.h>
int main(void){
    int y,m;
    while(scanf("%d %d",&y,&m)!=EOF){
        if(y%4==0&&y%100!=0||y%400==0&&m==2)
 //{
  //if(m==2)
  printf("29\n");
 //}
 
 else{
    switch(m)
 
  {
   case 1:printf("31\n");break;
   case 2:printf("28\n");break;
   case 3:printf("31\n");break;
   case 4:printf("30\n");break;
   case 5:printf("31\n");break;
   case 6:printf("30\n");break;
   case 7:printf("31\n");break;
   case 8:printf("31\n");break;
   case 9:printf("30\n");break;
   case 10:printf("31\n");break;
   case 11:printf("30\n");break;
   case 12:printf("31\n");break;
 
  }
 
   // m=0;
   // y=0;
}
 }
 
 
}
 

在这里插入图片描述

/**************************************************************
今天是今年第几天
****************************************************************/

#include<stdio.h>
int main(){
    int i,y,m,d,sum=0;
    int arr[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    while(scanf("%d %d %d",&y,&m,&d)!=EOF){
        if(y%4==0&&y%100!=0||y%400==0)
            arr[1]=29;
        else
            arr[1]=28;
 
            for(i=0;i<m-1;++i){
                sum+=arr[i];
            }
            sum+=d;
            printf("%d\n",sum);
            sum=0;
    }
 
 }
 

在这里插入图片描述

}
/**************************************************************
陶陶摘苹果
****************************************************************/

#include <stdio.h>
#include <math.h>
#define  H 30
int main() {
    int n=0;
    int num[10],maxHeight;
 
    while(scanf("%d %d %d %d %d %d %d %d %d %d",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8],&num[9])!=EOF){
        scanf("%d",&maxHeight);
        for(int i=0;i<10;i++){
            if(maxHeight+H>=num[i]){
                n++;
            };
        }
        printf("%d\n",n);
        n=0;
    }
}

/**************************************************************
一元多项式相加
****************************************************************/

#include <stdio.h>
#include <string.h>
 
int main(){
    int n1, n2;
 
    while(scanf("%d", &n1) != EOF) {
        int map[10000];
        int cnt = 0;
        memset(map, 0, sizeof map);
        for(int i = 0; i < n1; i ++) {
            int a, b;
            scanf("%d%d", &a, &b);
            map[b] += a; cnt ++;
        }
        scanf("%d", &n2);
         
        for(int i = 0; i < n2; i ++) {
            int a, b;
            scanf("%d%d", &a, &b);
            if(!map[b]) cnt ++;
            map[b] += a;
        }
        cnt --;
        for(int i = 0; i < 10000; i ++) {
            if(map[i] > 0) {
                printf("%d %d", map[i], i);
                if(cnt --) printf(" ");
            }
        }
        puts("");
    }
 
    return 0;
}

/**************************************************************
括号匹配
****************************************************************/

#include <stdio.h>
#include <string.h>
 
int main(){
    int n1, n2;
 
    while(scanf("%d", &n1) != EOF) {
        int map[10000];
        int cnt = 0;
        memset(map, 0, sizeof map);
        for(int i = 0; i < n1; i ++) {
            int a, b;
            scanf("%d%d", &a, &b);
            map[b] += a; cnt ++;
        }
        scanf("%d", &n2);
         
        for(int i = 0; i < n2; i ++) {
            int a, b;
            scanf("%d%d", &a, &b);
            if(!map[b]) cnt ++;
            map[b] += a;
        }
        cnt --;
        for(int i = 0; i < 10000; i ++) {
            if(map[i] > 0) {
                printf("%d %d", map[i], i);
                if(cnt --) printf(" ");
            }
        }
        puts("");
    }
 
    return 0;
}

/**************************************************************
一维数组的删除
****************************************************************/

import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[5];
        boolean flag = false;
        while (sc.hasNext()) {
            for(int i=0;i<5;i++) {
                arr[i] = sc.nextInt();
            }
            int key = sc.nextInt();
            for(int i=0;i<5;i++) {
                if (arr[i] == key) {
                    arr[i] = 0;
                    flag = true;
                    break;
                } else flag = false;
            }
            if (flag) {
                for(int i=0;i<4;i++) {
                    if (arr[i] != 0)
                        System.out.print(arr[i] + " ");
                }
                System.out.println(arr[4]);
            } else {
                System.out.println("not found");
            }
        }
        sc.close();
    }
}

/**************************************************************
约瑟夫问题(1)
****************************************************************/

import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            System.out.println(yuesefu(n, 3) + 1);
        }
        sc.close();
    }
 
    public static int yuesefu(int n, int m) {
        if (n == 1) return 0;
        else return (yuesefu(n - 1, m) + m) % n;
    }
}

/**************************************************************
关于回文串
****************************************************************/

# include <stdio.h>
# include <string.h>
# include <ctype.h>
int main()
{
    int i,j,n,m;
    char c1[999],c2[999],c3[999];
    while(scanf("%d",&n)!=EOF)
    {
        int l=0;
        while(n--)
        {
            int flag = 1;
            memset(c1,0,sizeof(c1));
            memset(c2,0,sizeof(c2));
            memset(c3,0,sizeof(c3));
            l++;
            scanf("%s",c1);
            int len=strlen(c1);
            for(i=0,j=len-1;i<j;i++,j--)
            {
                if(c1[i]!=c1[j])
                {
                    flag = 0;
                    break;
                }
                c2[i]=c1[i];
                c3[i]=c3[j];
            }
            if(flag)
            {
                int flag1=1;
                for(i=0,j=len/2-1;i<len/2-1;i++,j--)
                {
                    if(c2[i]!=c2[j]||c3[i]!=c3[j])
                    {
                        flag1=0;
                        break;
                    }
                }
                if(flag1)
                    printf("Case #%d: Double Palindrome\n",l);
                else
                    printf("Case #%d: Single Palindrome\n",l);
            }
            else
                printf("Case #%d: Not Palindrome\n",l);
        }
    }
    return 0;
}

/**************************************************************
超级楼梯
****************************************************************/

import java.util.Scanner;
  
public class Main {
  
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            System.out.println(fib(n));
        }
        sc.close();
    }
      
    public static int fib(int n) {
        if (n == 1) return 0;
        if (n == 2) return 1;
        if (n == 3) return 2;
        return fib(n - 1) + fib(n - 2);
    }
}

/**************************************************************
杨辉三角
****************************************************************/

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = 0;
        int arr[][];
        while(scanner.hasNext()){
            n = scanner.nextInt();
            arr=new int[n][];
            if(n>0){
                arr[0]=new int[1];
                arr[0][0]=1;
                System.out.println(arr[0][0]);
            }
            for(int i =1;i<n;i++){
                arr[i]=new int[i+1];
                arr[i][0]=1;
                arr[i][i]=1;
                System.out.print(arr[i][0]+" ");
                for(int j = 2;j<=i;j++){
                    arr[i][j-1]=arr[i-1][j-2]+arr[i-1][j-1];
                    System.out.print(arr[i][j-1]+" ");
                }
                System.out.println(arr[i][i]);
            }
        }
        scanner.close();
    }
 
}

/**************************************************************
大小数问题
****************************************************************/

import java.util.Scanner;
  
public class Main {
  
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            for(int i=0;i<n;i++) {
                long a = sc.nextLong();
                long b = sc.nextLong();
                System.out.printf("Case %d:\n", i + 1);
                System.out.printf("%d+%d=%d\n", a, b, a + b);
            }
        }
        sc.close();
    }
      
}

/**************************************************************
递归-求逆序对数
****************************************************************/
i

mport java.util.Scanner;
  
public class Main {
  
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int count = 0;
            int n = sc.nextInt();
            int[] arr = new int[n+1];
            for(int i=0;i<n;i++) arr[i] = sc.nextInt();
            for(int i=0;i<n;i++) {
                for(int j=i+1;j<n;j++) {
                    if (arr[i]>arr[j]) count++;
                }
            }
            System.out.println(count);
        }
        sc.close();
    }
}

/**************************************************************
递归-全排列
****************************************************************/

#include <cstdio>
#include <algorithm>
#include <cstring>
   
int main() {
    char s[50];
    int count = 0;
    while (scanf("%s",s) != EOF) {
        do{
            count++;
        } while (std::next_permutation(s, s + strlen(s)));
        printf("%d\n",count);
        count = 0;
    }
    return 0;
}

/**************************************************************

****************************************************************/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值