洛谷题目【入门1】顺序结构(2021-4-1)

本文介绍了编程中的一些实用技巧,包括字符转换、数字反转以及数学计算。通过示例展示了如何将小写字母转为大写字母,如何反转输入的数字字符串,并探讨了一个苹果消耗问题的解决方案。此外,还涉及到了一个数学问题,计算特定形状图形中对角线的数量,展示了编程与数学的结合应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

超级玛丽游戏

//注意输出的形状
#include<stdio.h>
int main() {
    printf(
    "                ********\n"
    "               ************\n"
    "               ####....#.\n"
    "             #..###.....##....\n"
    "             ###.......######              ###            ###\n"
    "                ...........               #...#          #...#\n"
    "               ##*#######                 #.#.#          #.#.#\n"
    "            ####*******######             #.#.#          #.#.#\n"
    "           ...#***.****.*###....          #...#          #...#\n"
    "           ....**********##.....           ###            ###\n"
    "           ....****    *****....\n"
    "             ####        ####\n"
    "           ######        ######\n"
    "##############################################################\n"
    "#...#......#.##...#......#.##...#......#.##------------------#\n"
    "###########################################------------------#\n"
    "#..#....#....##..#....#....##..#....#....#####################\n"
    "##########################################    #----------#\n"
    "#.....#......##.....#......##.....#......#    #----------#\n"
    "##########################################    #----------#\n"
    "#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#\n"
    "##########################################    ############\n"
    );
    return 0;
}
#include<stdio.h>
int main()
{
	printf("                ********\n");
	printf("               ************\n");
	printf("               ####....#.\n");
	printf("             #..###.....##....\n");
	printf("             ###.......######              ###            ###\n");
	printf("                ...........               #...#          #...#\n");
	printf("               ##*#######                 #.#.#          #.#.#\n");
	printf("            ####*******######             #.#.#          #.#.#\n");
	printf("           ...#***.****.*###....          #...#          #...#\n");
	printf("           ....**********##.....           ###            ###\n");
	printf("           ....****    *****....\n");
	printf("             ####        ####\n");
	printf("           ######        ######\n");
	printf("##############################################################\n");
	printf("#...#......#.##...#......#.##...#......#.##------------------#\n");
	printf("###########################################------------------#\n");
	printf("#..#....#....##..#....#....##..#....#....#####################\n");
	printf("##########################################    #----------#\n");
	printf("#.....#......##.....#......##.....#......#    #----------#\n");
	printf("##########################################    #----------#\n");
	printf("#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#\n");
	printf("##########################################    ############\n");
	return 0;
}

字母转换

#include<stdio.h>
int main()
{
	char c;
	scanf("%c", &c);
	printf("%c", c - 32);//小写字母变成大写字母,ASCII码大写字母在小写字母前面
	return 0;
}

数字反转

//采用字符串的方法
#include<stdio.h>
int main()
{
	char str[100];
	scanf("%s", str);
	int i = 0, count = 0;
	do
	{
		count = count + 1;
		i = i + 1;
	} while (str[i] != '\0');
	for (i = count - 1; i >= 0; i--)
	{
		printf("%c", str[i]);
	}
	return 0;
}
#include<stdio.h>
int main()
{
	char str[100];
	scanf_s("%s", str,100);//注意VS2019的差异!!
	int i = 0, count = 0;
	do
	{
		count = count + 1;
		i = i + 1;
	} while (str[i] != '\0');
	for (i = count - 1; i >= 0; i--)
	{
		printf("%c", str[i]);
	}
	return 0;
}

Apples Prologue

#include<stdio.h>
int main()
{
	int m;
	double t, s;
	scanf("%d %lf %lf", &m, &t, &s);
	if (s / t >= m)//一段时间后苹果已经吃完了
	{
		printf("0");
	}
	else
	{
		int n;
		n = (int)(s / t);//类型转换不遵循四舍五入
		if (n == s / t)
		{
			printf("%d", m - n);
		}
		else
		{
			printf("%d", m - n - 1);
		}
	}
	return 0;
}

对角线

#include<stdio.h>
int main()
{
	unsigned long long n, t;//变量类型防止爆掉
	scanf("%lld", &n);
	t = n * (n - 1) / 2 * (n - 2) / 3 * (n - 3) / 4;
	printf("%lld", t);
	return 0;
}
/*和对角线的公式没什么关系
由于不会有三条对角线交于一点,所以过某一个交点有且只能有2条对角线,而这两条对角线实质上是确定了4个顶点,因此我们只需要确定4个顶点就得到了这个唯一确定的交点。
因此我们只需要求这样4个顶点的搭配有多少个了也就是从n个顶点中取4个出来。根据组合数的公式,由于改变四个点的顺序不会改变对角线,因此是求的组合而不是排列,也就要除以4!,也就是24,于是我们就得到了公式:n*(n-1)*(n-2)*(n-3)/24
同时为了防止爆掉,但又不想写高精,我们可以采用一种化简的技巧于是原式可以化为:n*(n-1)/2*(n-2)/3*(n-3)/4
那为什么这样一定是对的呢?难道不会因为除不尽却向下取整而导致错误吗?事实上是一定除得尽的首先n和n-1一定有一个是2的倍数,因此2可以除尽,同理n,n-1,n-2中一定有一个是3的倍数,因此3可以除尽(除掉2只会消除因数2而对3没有影响)同理4也可以除尽*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值