洛谷题单[入门1]顺序结构(C语言)

洛谷题单广场

【入门1】顺序结构

B2002 Hello,World!

#include<stdio.h>    //#include<stdio.h>是编译预处理指令
int main()           //main作为主函数
{
    printf("Hello,World!");    //printf是输出,scanf是输入
}
//补充
//一个C语言程序是由一个或多个函数组成
//在vs上scanf会报错
//两种方法解决:
//1.改为scanf_s
//2.添加#define  _CRT_SECURE_NO_WARNINGS(放到第一行)

B2025 输出字符菱形

//方法一:
#include<stdio.h>
int main()
{   
   printf("  *  \n");
   printf(" *** \n");
   printf("*****\n");
   printf(" *** \n");
   printf("  *  ");
    return 0;
}

//方法二:
#include<stdio.h>
int main()
{
	int i,j=2,k;
	char ch = '*';
	for (i = 0; i < 5; i++) {
		//正序输出
		if (i <= 5 / 2) 
		{
			j = 2 - i;
			while(j--)
				printf(" ");//生成空格
			for (k = 2 * i + 1; k > 0; k--)
				printf("%c", ch);
			printf("\n");//记得换行
		}//倒序输出
		else 
		{
			j = i - 2;
			while(j--)
				printf(" ");//生成空格
			for (k = 9-2*i; k > 0; k--)
				printf("%c", ch);
			printf("\n");//记得换行
		}
	}
	return 0;
}

P1000 超级玛丽游戏

#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;
}

P1001 A+B Problem

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);//效果和scanf("%d%d),&a,&b);等价
    printf("%d",a+b);
    return 0;
}
//注意输入如果是scanf("%d,%d",&a,&b)那么在本地的输入还得加上,(英文下的',')

B2005 字符三角形

//方法一:
#include<stdio.h>
int main()
{   char ch;
    scanf("%c",&ch);
    printf("  %c\n",ch);
    printf(" %c%c%c\n",ch,ch,ch);
    printf("%c%c%c%c%c",ch,ch,ch,ch,ch);
    return 0;
}
//方法二:
#include<stdio.h>
int main()
{
	int i, j, k;
	char ch;
	scanf("%c",&ch);
	for (i = 0; i < 3; i++) {	
			j = 2 - i;
			while(j--)
				printf(" ");//生成空格
			for (k = 2 * i + 1; k > 0; k--)
				printf("%c", ch);
			printf("\n");//记得换行
	}
	return 0;
}

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

#include<stdio.h>
int main()
{   int amount,num;
    scanf("%d %d",&amount,&num);//不要忘记了&  取地址符
    printf("%d",amount*num);
    return 0;
}

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

//方法一:
#include<stdio.h>
int main()
{   //getchar()是单独输入一个字符并读取,在这用scanf也可以
    printf("%c",getchar()-('a'-'A'));//查对应的ASCII码  不是Unicode
    return 0;
}
//方法二:
//调用库函数的toupper
#include<stdio.h>
#include<ctype.h>//调用toupper需要
int main()
{
	printf("%c", toupper(getchar()));
	return 0;
}
//注意:
//1.关于c语言程序设计第五版中strupr也是转为大写的函数,但是在C99标准中被废弃了,strlwr同理
//2.转为小写的函数有tolower()

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

#include<stdio.h>
int main()
{
	double num;//双精度浮点数 float单精度浮点数 %f输入输出
	scanf("%lf",&num);//输入
	int n = (int)num;
	double answer_head=10*(num-n);//先留下小数部分 由于说明了就一位浮点数,故乘10
	int answer_tail=0;
	while (n) {
		answer_tail = answer_tail*10 + n % 10;
		n /= 10;
	}
	printf("%1.f\.%03d",answer_head,answer_tail);//%03d代表输入三位,不足三位的0补齐,超过三位的不会溢出删除,而是原本输出
	return 0;
}

//注意
// 为什么answer_head为double类型?因为无论是单精度还是双精度都是有所缺失,(原因就在于是二进制的转换造成的精度缺失)
//比如输入230.6时候 调试发现是230.599999
//如果answer是int类型,那么则为5而不是6


//有兴趣可以自己尝试字符串或者数组的形式做

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

#include<stdio.h>
int main()
{
    double t;
    int n;
    scanf("%lf %d",&t,&n);
    printf("%.3lf\n", 1.0 * t / n);//注意要1.0而不是1  相当于明确告诉编译时这是浮点型的运算
    printf("%d", n * 2);    //不要写成数学里的2n
    return 0;
}

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

#include<stdio.h>
#include<math.h>    //sqrt要调用math库
int main()
{
    double a,b,c;
    scanf("%lf %lf %lf",&a,&b,&c);//输入
    double p=(a+b+c)/2.0;
    double S=sqrt(p*(p-a)*(p-b)*(p-c));
    printf("%.1lf",S);        //注意留一位小数
    return 0;
}

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

#include<stdio.h>
int main()
{
    int s, v, hour, minute;
    scanf("%d %d",&s,&v);//输入路程与速度
    minute = s / v + 10;
    if (s % v != 0)
        minute++;//如果不是恰好,那就再加一分钟
    hour = minute / 60;//耗费的小时时长
    minute = minute % 60;//耗费的分钟时长
    if (minute == 0)
        hour = 8 - hour;//时长之差
    else
        hour = 7 - hour;
    if (hour < 0)
        hour += 24;//提前一天的考虑
    printf("%02d:%02d",hour,60-minute);//不足的0补齐
    return 0;
}

B2029 大象喝水

#include<stdio.h>
#define pi 3.14        //宏定义 在数组中哪怕是C99之前 也可以 #define p 3 int arr[p];
int main()
{
    int h, r;
    scanf("%d %d",&h,&r);
    float sum = (20000 / (pi * r * r * h));
    int sum1= (20000 / (pi * r * r * h));
    if ((sum-sum1)!= 0)
        sum1++;
    printf("%d",sum1);
    return 0;
}

//一点补充
//定义宏不占用内存,只有在使用时才分配内存
//宏定义不存在类型问题,它的参数也是无类型的
//字符串" "中不能使用宏定义
//预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查
//宏替换在预处理阶段进行,函数调用在编译后程序运行时进行,并且分配内存。预处理在编译之前,因此宏替换    不分配内存
//宏定义前面的替换必须是C语言合法的用户标识符 如 #define 0a 25 就是错误的
//重复定义的宏只有最后一个是有效的
//宏定义不是C语句,不必在行未加“;”号,如果加了连“;”号一起进行置换;

P1425 小鱼的游泳时间

#include<stdio.h>
int main()
{
	int a, b, c, d;
	scanf("%d %d %d %d",&a,&b,&c,&d);//输入 a:b  c:d
	//  a c的时间差都在一天之内
	int e = c - a;//表示小时
	int f = d-b;//表示分钟
    //情况处理
	if (f < 0)
	{
		f+=60;
		e--;
	}
	printf("%d %d",e,f);
	return 0;
}

P1421 小玉买文具

#include<stdio.h>
int main()
{
    double prize=1.9;
    int a,b;
    scanf("%d %d",&a,&b);
    double money=a+0.1*b;
    int total=money/prize;
    printf("%d",total);
    return 0;
}

P3954 [NOIP2017 普及组] 成绩

#include<stdio.h>
int main()
{
	int A, B, C;// 作业成绩 小测成绩· 期末考试
	scanf("%d %d %d",&A,&B,&C);
	double total = A * 0.2 + B * 0.3 + C * 0.5;
	printf("%.lf",total);//注意留一位小数点就行
	return 0;
}

  • 19
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值