zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【洛谷】C语言题解 更新中~~

2023-04-18 14:09:07 时间

作者为编程初学者,现将自己在洛谷的刷题的一些代码与心得同大家分享~~如有错误麻烦指正,欢迎与作者交流讨论~~~希望在这里为大家提供帮助,并能与各位一起学习共同进步~~

【入门1】顺序结构

P1001    A+B Problem

输入两个整数 a, ba,b,输出它们的和(|a|,|b| le {10}^9a,b109

#include <stdio.h>
int main()
{
    long long int a,b;
    scanf("%lld %lld",&a,&b);
    printf("%lld",a+b);
    return 0;
}

P1000  超级玛丽游戏

超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。

#include<stdio.h>

int main()
{
   printf("                ********
");
   printf("               ************
");
   printf("               ####....#.
");
   printf("             #..###.....##....
");
   printf("             ###.......######              ###            ###
");
   printf("                ...........               #...#          #...#
");
   printf("               ##*#######                 #.#.#          #.#.#
");
   printf("            ####*******######             #.#.#          #.#.#
");
   printf("           ...#***.****.*###....          #...#          #...#
");
   printf("           ....**********##.....           ###            ###
");
   printf("           ....****    *****....
");
   printf("             ####        ####
");
   printf("           ######        ######
");
   printf("##############################################################
");
   printf("#...#......#.##...#......#.##...#......#.##------------------#
");
   printf("###########################################------------------#
");
   printf("#..#....#....##..#....#....##..#....#....#####################
");
   printf("##########################################    #----------#
");
   printf("#.....#......##.....#......##.....#......#    #----------#
");
   printf("##########################################    #----------#
");
   printf("#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
");
   printf("##########################################    ############
");
   return 0;
}

P5703 【深基2.例5】苹果采购

现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?输入两个不超过 10^9109 正整数,分别表示每人分到的数量和同学的人数。

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);//数量和人数
    printf("%d",a*b);
    return 0;
}

P5704【深基2.例6】字母转换

输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q

#include<stdio.h>
int main()
{
    char a,b;//用char输入 注意输入输出时改为%c
    scanf("%c",&a);
    b=a-32;//小写字母减32为大写字母
    printf("%c",b);
    return 0;
}

P5705【深基2.例7】数字反转

输入一个不小于 100100 且小于 10001000,同时包括小数点后一位的一个浮点数,例如 123.4123.4 ,要求把这个数字翻转过来,变成 4.3214.321 并输出。

#include<stdio.h>
int main()
{
    char a,b,c,d,e;//直接将数字和标点看成符号!而不是用数字的取余运算
    scanf("%c %c %c %c %c",&a,&b,&c,&d,&e);
    printf("%c%c%c%c%c",e,d,c,b,a);
    return 0;
}

P5706【深基2.例8】再分肥宅水

现在有 t 毫升肥宅快乐水,要均分给 n 名同学。每名同学需要 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 位),以及一共需要多少个杯子。输入一个实数 t 和一个整数 n,使用空格隔开。输出两个数字表示答案,使用换行隔开。

0t10000且不超过3位小数,1n1000

#include<stdio.h>
int main()
{
    double t;//double和float的区别
    int n=0;
    double a=0;
    int b=0;
    scanf("%lf%d",&t,&n);    
    printf("%.3lf
%d",(t/(double)(n)),(n*2));
    return 0;    
}

P1425小鱼的游泳时间

伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。

这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按24小时制计算),它发现自己从ab分一直游泳到当天的cd分,请你帮小鱼计算一下,它这天一共游了多少时间呢?

小鱼游的好辛苦呀,你可不要算错了哦。

#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    if(b>d)
    {
     printf("%d %d",c-a-1,60-b+d);
    }
    else{printf("%d %d",c-a,d-b);}
    return 0;
}

P5708【深基2.习2】三角形面积

一个三角形的三边长分别是 aabbcc,那么它的面积为 {p(p-a)(p-b)(p-c)},其中 p=1/2(a+b+c)p。输入这三个数字,计算三角形的面积,四舍五入精确到 1 位小数。

保证能构成三角形,0a,b,c≤1000,每个边长输入时不超过2位小数。

#include<stdio.h>
#include<math.h>//平方之前要声明数学符号
int main()
{
   double a,b,c,s,p;//float,对应%f. double,对应%lf.
   scanf("%lf %lf %lf",&a,&b,&c);//&&&之间要加逗号
   p=(a+b+c)/2;//不能是×二分之一
   s=sqrt(p*(p-a)*(p-b)*(p-c));//平方
   printf("%.1lf",s);//精确到一位小数
   return 0;
}

P1421小玉买文具

班主任给小玉一个任务,到文具店里买尽量多的签字笔。已知一只签字笔的价格是 11  99 角,而班主任给小玉的钱是 aa  bb 角,小玉想知道,她最多能买多少只签字笔呢。

#include<stdio.h>
int main()
{
   int a,b,c,d=19,e;
   scanf("%d %d",&a,&b);
   c=a*10+b;
   e=c/d;
   printf("%d",e);
   return 0;
}

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

八尾勇喜欢吃苹果。她现在有 m(m100) 个苹果,吃完一个苹果需要花费 t(0t100) 分钟,吃完一个后立刻开始吃下一个。现在时间过去了s(s10000) 分钟,请问她还有几个完整的苹果?

#include<stdio.h>
int main()
{
   int m,t,s;
   scanf("%d %d %d",&m,&t,&s);
   if (s>=m*t)printf("%d",0);//首先判断过去的时间是否吃完了苹果,吃完直接输出0
   else
   {
       if(s%t==0)printf("%d",m-s/t);//判断过去的时间能否整吃一个苹果的时间
       else printf("%d",m-1-s/t);}//不完整即有一个不完整的苹果m-1
   return 0;
}

P2181对角线

对于一个 nn 个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出图形中对角线交点的个数。

#include<stdio.h>
int main()
{
    unsigned long int n,a;//注意是非负长整型
   scanf("%ld",&n);
   if (n<=3) a=0;//注意对角线不存在的情况
   else a=n*(n-1)/2*(n-2)/3*(n-3)/4;
   printf("%ld",a);
   return 0;
}

P5707【深基2.例12】上学迟到

yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有  (s10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。

#include<stdio.h>
int main()//别忘了括号!!
{
    int s,v,t,h=8,m=00,h1,h2,m1,m2;//八点前=七点五十九
    scanf("%d %d",&s,&v);
    if(s%v==0)t=s/v+10;
    else t=s/v+1+10;

    while(t!=0) //一分钟一分钟的算
	{
		if(m!=0)m--;
		else
		{
		    if(h!=0){h--;m=59;}
			else{h=23;m=59;}
		}
		t--;
	}

    h1=h/10;//分开保存十位和个位
    h2=h%10;
    m1=m/10;
    m2=m%10;

    printf("%d%d:%d%d",h1,h2,m1,m2);
    return 0;
}

P3954[NOIP2017 普及组] 成绩

牛牛最近学习了 C++ 入门课程,这门课程的总成绩计算方法是:

总成绩=作业成绩 imes 20\%+×20%+小测成绩×30\%+×30%+期末考试成绩 imes 50\%×50%

牛牛想知道,这门课程自己最终能得到多少分。

#include<stdio.h>
int main()
{
    double zy,xc,qm;
    int s;
    scanf("%lf %lf %lf",&zy,&xc,&qm);
    s=zy*0.2+xc*0.3+qm*0.5;
    printf("%d",s);
    return 0;
}