【入门2】分支结构

【入门2】分支结构

P2433 【深基1-2】小学数学 N 合一

#include<stdio.h>
#include<math.h>
#define pi 3.141593
int main()
{
    int T, r;
    scanf("%d", &T);//输入题号
    switch (T)
    {
    case 1:
        printf("I love Luogu!"); break;
    case 2:
        printf("6 4"); break;
    case 3:
        printf("3\n12\n2\n"); break;
    case 4:
        printf("%.6g", 500.0 / 3); break;
    case 5:
        printf("15"); break;
    case 6:
        printf("%.6g",sqrt(117)); break;
    case 7:
        printf("110\n90\n0"); break;
    case 8:
        r = 5;
        printf("%.6g\n%.6g\n%.6g\n", 2 * pi * r, pi * r * r, pi * r * r * r * 4 / 3.0); break;
    case 9:
        printf("22"); break;
    case 10:
        printf("9"); break;
    case 11:
        printf("%.4lf", 100 / 3.0); break;
    case 12:
        printf("13\nR"); break;
    case 13:
        printf("%.lf", cbrt(4256 * pi / 3.0)); break;
    case 14:
        printf("50"); break;
    }
    return 0;
}
//C语言中输出n位有效数字
//若规定整数p位,小数部分q位 用%p.qf 输出
//若规定整数+小数一共是n位有效 用%.ng 输出

P5709 【深基2.习6】Apples Prologue / 苹果和虫子

#include<stdio.h>
int main()
{
    int m, t, s;// m个苹果,吃一个要t分钟,过了s分钟
    scanf("%d %d %d", &m, &t, &s);
    //如果吃的光速,那么一个不剩
    if (t == 0)
        printf("0");
    //如果时间充裕,仍然一个不剩
    else if (s > m * t)
        printf("0");
    //没给一点时间,一个都吃不了
    else if (t > s)
        printf("%d", m);
    //时间不充裕,看看能吃多少个
    else
    {
        // int count=0;
        //while(s>t){
        //    s-=t;
        //  count++;
        //}
        //printf("%d",m-count);
        //算法冗杂
        double num = 1.0 * s / t;
        int num1 = num;
        if (num - (int)num != 0)
            printf("%d", m-num1 - 1);
        else
            printf("%d",m-num1);
    }
    return 0;
}

P5710 【深基3.例2】数的性质

#include<stdio.h>
int main()
{
	int x;
	scanf("%d",&x);//输入
	if (x % 2 == 0 && (x > 4 && x <= 12))
		printf("1 ");
	else
		printf("0 ");
	if ((x % 2 == 0 || (x > 4 && x <= 12))||(x % 2 == 0 && (x > 4 && x <= 12)))
		printf("1 ");
	else
		printf("0 ");
	if ((x%2!=0&&(x>4&&x<=12))||(x%2==0&&(x<=4||x>12)))
		printf("1 ");
	else
		printf("0 ");
	if (x % 2 != 0 && x <= 4 || x > 12)
		printf("1 ");
	else
		printf("0 ");
	return 0;
}

//输出时候注意空格
//理解 ||与 &&区别,前者有1跳出判断,后者有0跳出判断

P5711 【深基3.例3】闰年判断


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

知识点:先弄清楚闰年的概念是什么
1、非整百年:能被4整除而不能被100整除的为闰年。(如2016年就是闰年,2100年不是闰年)
2、整百年:能被400整除而不能被3200整除的是闰年。(如2000年是闰年,3200年不是闰年)
3、对于数值很大的年份:这年如果能整除3200,并且又能整除172800则是闰年。如172800年是闰年,86400年不是闰年。
 

P5712 【深基3.例4】Apples

#include<stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    if(x>1)
        printf("Today, I ate %d apples.",x);
    else
        printf("Today, I ate %d apple.",x);
    return 0;
}



知识点:C语言规定,else 总是与它前面最近的 if 配对

P5713 【深基3.例5】洛谷团队系统

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);//输入
	if (5*n < 3*n+11)
		printf("Local");
	else
		printf("Luogu");
	return 0;
}
//本质就是个不等式比较

P5714 【深基3.例7】肥胖问题

#include<stdio.h>
#include<math.h>
int main()
{
	double m, h;
	scanf("%lf %lf",&m,&h);//输入
	if (m / (pow(h, 2)) < 18.5)
		printf("Underweight\n");
	else if (m / (pow(h, 2)) >= 18.5 && m / (pow(h, 2)) < 24)
		printf("Normal\n");
	else
		printf("%.6g\nOverweight", m / (pow(h, 2)));
	return 0;
}

知识点:%的利用

浮点数的存储方式

P5715 【深基3.例8】三位数排序

#include<stdio.h>
int main()
{
    int arr[3] = { 0 };
    for (int i = 0; i < 3; i++)
        scanf("%d", &arr[i]);//输入
    for (int j = 0; j < 2; j++)
    {
        for (int k = 0; k < 2 - j; k++)
        {
            if (arr[k] > arr[k + 1])
            {
                int temp = arr[k + 1];
                arr[k + 1] = arr[k];
                arr[k] = temp;
            }
        }
    }
    //冒泡排序的实现
    for (int i = 0; i < 3; i++)
        printf("%d ", arr[i]);//挨个输出
    return 0;
}

知识点:排序类型

P5716 【深基3.例9】月份天数

#include<stdio.h>

void judge(int num)
{
    if(num==1||num==3||num==5||num==7||num==8||num==10||num==12)
        printf("31"); 
    else
        printf("30");
}
int main()
{
	int y=0;
	scanf("%d",&y);
	int m;
	scanf("%d",&m);
	//是闰年
	if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
	{
	    if(m==2)
	        printf("29");
	    else
	        printf("30");

	}
    //不是闰年
	else
	{
	    if(m==2)
	        printf("28");
	    else
	       judge(m);
	}
	return 0;
}

知识点:函数声明与调用

P1085 [NOIP2004 普及组] 不高兴的津津

#include<stdio.h>
int main()
{
    int arr[14] = { 0 };
    int sum[7] = { 0 };//星期的对应的学习时长
    int week = 1;//星期第几天记住
    for (int i = 0; i < 14; i++)
        scanf("%d", &arr[i]);//进行输入
    int j = 0;
    for( j = 0; j < 7; j++)
      sum[j] = arr[j * 2] + arr[j * 2 + 1];//总的一天学习时长  
    for ( j = 0; j < 7; j++){
        if (sum[j] <= 8)
            sum[j] = 0;
    }
    //通过遍历找到最大的
    int max = sum[0];
    for (int i = 1; i < 7; i++){
        if (max < sum[i])
        {
            max = sum[i];//对比找到最大
            week = i+1;
        }
    }
    if(max>8)
        printf("%d\n", week);
    else
        printf("0");
    return 0;
}

P1909 [NOIP2016 普及组] 买铅笔

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);//输入->需要铅笔的数量
    int num,val;
    int row=2;//输出2行 //下面先输出一行用于min的代入
    scanf("%d %d",&num,&val);//num->一盒铅笔数量 val->对应的价格
        if(n%num!=0){
            num=n/num+1;//需要买的盒数
            val*=num;//总价格
        }
        else{
            num=n/num;//刚好整除无需+1
            val*=num;//总价格
        }
       int min=val;
    while(row--)
    {
        scanf("%d %d",&num,&val);//num->一盒铅笔数量 val->对应的价格
        if(n%num!=0){
            num=n/num+1;//需要买的盒数
            val*=num;//总价格
        }
        else{
            num=n/num;//刚好整除无需+1
            val*=num;//总价格
        }
        if(min>val)
            min=val;//如果有更小的方案就选它
    }
    printf("%d",min);//单行输出
    return 0;
}

P5717 【深基3.习8】三角形分类

#include<stdio.h>
int main()
{
	int d[3],i,j;
	scanf("%d %d %d",&d[0],&d[1],&d[2]);
	//排序
	for (i = 0; i < 2; i++) {
		for (j = 0;j<2-i;j++)
			if (d[j] > d[j + 1]) 
			{
				d[j] ^= d[j + 1];
				d[j + 1] ^= d[j];
				d[j] ^= d[j + 1];
			}
	}
	if (d[0]+d[1]<=d[2])
		printf("Not triangle\n");
	else
	{
		if (d[0]*d[0]+d[1]*d[1]==d[2]*d[2])
			printf("Right triangle\n");
		if (d[0] * d[0] + d[1] * d[1] > d[2] * d[2])
			printf("Acute triangle\n");
		if (d[0] * d[0] + d[1] * d[1] < d[2] * d[2])
			printf("Obtuse triangle\n");
		if (d[0]==d[1])
			printf("Isosceles triangle\n");
		if (d[0]==d[1] && d[0]==d[2])//注意,不能写为a==b==c,因为会先转为bool值的0 1 然后再a==1? 所以不成立
			printf("Equilateral triangle\n");	
	}
	return 0;
}

//不用数组也可以,自行完成

知识点:交换a,b值的三种方法

P1422 小玉家的电费

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);//表示用电总量
    double total=0;
    if(n<=150)
         total=n*0.4463;
    else if(n>=151&&n<=400)
        total=(n-150)*0.4663+150*0.4463;
    else
        total=(n-400)*0.5663+250*0.4663+150*0.4463;
    printf("%.1lf",total);//注意输出为.1lf,留一位小数点
    return 0;
}

知识点:%m.nd等的用法(m,n为数字)

P1424 小鱼的航程(改进版)

#include<stdio.h>
int main()
{
    int x,n;
    scanf("%d %d",&x,&n);//输入
    int count=0;
    while(n--)
    {
        //如果是周六周日,则休息,但日期(x)也要加
        if(x%7==6||x%7==0)
        {   
            x++;
            continue;
        }
        count++;
        x++;
    }
    printf("%d",250*count);
    return 0;
}

P1888 三角函数

#include<stdio.h>
int gcd(int m, int n)
{
    while (n != 0)
    {
        int temp = m % n;
        m = n;
        n = temp;
    }
    return m;
}
int main()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    int min = ((a < b ? a : b) < c) ? (a < b ? a : b) : c;
    int max = ((a > b ? a : b) > c )? (a > b ? a : b) : c;
    int num = gcd(max, min);
    printf("%d/%d", (min / num), (max / num));
    return 0;
}

知识点:gcd与lcm函数的写法,各类运算符

P1046 [NOIP2005 普及组] 陶陶摘苹果

#include<stdio.h>
int main()
{
    int arr[10]={0};//苹果到地面的高度
    int height=0;//陶陶的高度
    int count=0;//初始化能够到苹果的数量
    for(int i=0;i<10;i++)
        scanf("%d",&arr[i]);
    scanf("%d",&height);
    int h_sum=height+30;//能够到最高的高度
    for(int i=0;i<10;i++)
    {
        if(arr[i]<=h_sum)
            count++;
    }
    printf("%d",count);
    return 0;
}

P4414 [COCI2006-2007#2] ABC

#include<stdio.h>
#include<stdlib.h>
int cmp(const void* a, const void* b) {
	return *(int*)a - *(int*)b;
}

int main()
{
	int arr[3],i;//存放三个数
	char ch[5];//遍历查找顺序
	for(i=0;i<3;i++)
		scanf("%d ",&arr[i]);
	//排序
	qsort(arr,3,sizeof(int),cmp);
	//fgets(ch,4,stdin);//为4而不是3是因为还统计了最后的\0
	gets(ch);
	for (i = 0; i < 3; i++)
		printf("%d ",arr[ch[i]-'A']);
	return 0;
}

知识点:c语言自带的qsort()函数排序

P1055 [NOIP2008 普及组] ISBN 号码

#include<stdio.h>
int main()
{
	char ch[15] = {0};//唯一需要注意的是这里X代表10
	int i,j,total=0;
	gets(ch);//输入  
	for (i = 0,j=1; i < 11; i++) {
		if (ch[i] != '-') {
			if (ch[i] == 'X')
				total += j * 10;
			else {
				total += j * (ch[i] - '0');
				j++;
			}			
		}			
	}
	if (total % 11 == (ch[12] - '0') || (ch[12]=='X' && total%11==10))
		printf("Right");
	else {
		ch[12] =(total % 11)+'0';
		if (total % 11 == 10)
			ch[12]='X';
		puts(ch);
	}
	return 0;
}

//里面的坑点就是X代表10,要特况处理

知识点:gets与fgets,puts与fputs的掌握

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值