杭电oj刷题第一阶段-记录

杭电oj刷题第一阶段(C语言)-记录

本文章为个人做题后经过上传验证后的记录,不一定是最优方法,欢迎交流最优方法


前一部分做的时候没想着保存,所以少了一部分。。。可以去参考 杭电oj刷题第一阶段答案

回归水题

2012 素数判定

在这里插入图片描述

#include <stdio.h>

int main(void)
{
    int x, y;
    scanf("%d %d\n",&x,&y);
    while(x!=0||y!=0)
    {
        int flag = 0;//素数标志

        for(int n = x;n<=y;n++)
        {
            int m = n*n+n+41;
            for(int i = 2;i<m;i++)
            {
                if(0==m%i)
                {
                    flag=1;
                    break;
                }
            }
        }

        if(0==flag) {printf("OK\n");}
        else {printf("Sorry\n");}
        scanf("%d %d\n",&x,&y);
    }
    return 0;
}

2013 蟠桃记

前一天的数目为加1后乘2
在这里插入图片描述

#include <stdio.h>

int main(void)
{
    int n;
    while(scanf("%d\n",&n)!=EOF)
    {
        int sum = 1;
        for(int i = n;i>1;i--)
        {
            sum = (sum+1)*2;
        }
        printf("%d\n",sum);
    }
    return 0;
}

2014 青年歌手大奖赛_评委会打分

在这里插入图片描述

#include <stdio.h>

int main(void)
{
    int temp[100];
    int n;
    while(scanf("%d",&n) != EOF)
    {   
    	int sum = 0;
        for(int i=0;i<n;i++)
        {
            scanf(" %d",&temp[i]);
            sum += temp[i];
        }
        getchar();
        int max = temp[0];
        int min = temp[0];
        for(int j=0;j<n;j++)
        {
            if(temp[j]>max) {max = temp[j];}
            else if(temp[j]<min) {min = temp[j];}
        }
        double average;
        printf("%.2f\n",(float)(sum-max-min)/(n-2));
    }
    return 0;
}

2015 偶数求和

在这里插入图片描述

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

2016 数据的交换输出

#include <stdio.h>

int main(void)
{
    int n, num[100];
    scanf("%d",&n);
    while(n!=0)
    {
        scanf(" %d",&num[0]);
        int min = num[0];
        int flag = 0;
        for(int i=1;i<n;i++)
        {
            scanf(" %d",&num[i]);
            if(num[i]<min)
            {
                flag = i;
                min = num[i];
            }
        }
        int temp = num[flag];
        num[flag] = num[0];
        num[0] = temp;
        for(int i=0;i<n;i++)
        {
            printf("%d",num[i]);
            if(i==n-1) {printf("\n");}
            else {printf(" ");}
        }
        scanf("%d",&n);
    }
    return 0;
}

2017 字符串统计

下面这个答案没有什么问题,但是我有点不理解我写的有什么问题,大家帮我看一下
杭电OJ刷题-2017 字符串统计-程序问题

#include<stdio.h>
#include<string.h>
int main(){
	int n;
	scanf("%d",&n);
	char string[1000];
	while(n--){
		scanf("%s",&string);
		int length=strlen(string);
		int count=0;
		for(int i=0;i<length;i++){
			if(string[i]>='0'&&string[i]<='9'){
				count++;
			}
		}
		printf("%d\n",count);
	}
	return 0;
}

2018 母牛的故事

属于斐波拉契数列(递归输出)
f(n) = f(n-1) + f(n-3)
在这里插入图片描述

#include <stdio.h>

int f[56] = {0,1,2,3,4};

int main(void)
{
    int n;
    int fn;
    scanf("%d\n",&n);
    
    while(n!=0)
    {
        if(n<=4)
        {
            fn = n;
        }
        else
        {
            for(int i=5;i<=n;i++)
            {
                f[i] = f[i-1]+f[i-3];
                fn = f[i];
            }
            
        }
        printf("%d\n",fn);
        scanf("%d\n",&n);
    }
    return 0;
}

版权声明:本文为weixin_43576926原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。