9.12的作业题解

多少只签字笔?

题目很简单,首先要做的就是统一用角来表示钱,这样方便计算,代码如下:

#include<stdio.h>

int main()
{
	int a, b;
	scanf("%d%d", &a, &b);
	printf("%d", (a * 10 + b) / 19);
	return 0;
}

分肥宅快乐水

题目一看就会,非常简单的数学问题,但是写代码的时候要注意。

首先就是,t是一个带小数的数字,因此要用float或者double,而n明显是个整数,建议用int,当然用浮点型也没问题。注意占位符和变量的数据类型一定要匹配,否则会出现错误。

题目要求控制结果有3位小数,因此,占位符需要变化一下,把%f改成%.3f注意不要漏掉点

代码如下:

#include<stdio.h>

int main()
{
	int n;
	double t;
	scanf("%lf%d", &t, &n);
	printf("%.3f\n%d", t / n, 2 * n);
    return 0;
}

我们来看一个错误例子

#include<stdio.h>

int main()
{
	int n;
	double t;
	double b = t / n;//表示每人多少毫升
	int c = 2 * n;//表示总共要几个杯子
	scanf("%lf%d", &t, &n);
	printf("%.3f\n%d", t / n, 2 * n);
	return 0;
}

代码乍一看没什么问题,但是问题很大,存在逻辑问题。程序运行到定义b的时候就不知所措了,因为b = t / n,我们只定义了t,n,但是没有给t,n一个值。因此我们应该先给值,再去运算。在编译器里,如果没有初始化,编译器会自动给变量一个值,那么这个值肯定不是我们所期望的,因此要提防未初始化变量值。

字符大小写转换

题目的意思很简单,把小写字符换成大写字符,看似无中生有,我们要想到字符有一个ascii码,可不可以通过ascii码来转换呢?代码如下:

#include<stdio.h>

int main()
{
	char a;
	scanf("%c",&a);
	printf("%c", a - 32);//大小写对应ascii码差32
    return 0;
}

a-32其实就是把a变量存的字符转换成十进制整数,然后再-32,因为占位符是%c,输出字符,因此再把这个数字转换成字符,从而实现大小写的转换。

买苹果

简单的乘法

#include<stdio.h>

int main()
{
	int num1, num2;
	scanf("%d%d", &num1, &num2);
	printf("%d", num1 * num2);
	return 0;
}

打印菱形 

这个题只需要用printf打印一下就行,不过也可以用循环来做,以后会讲到

#include<stdio.h>

int main()
{
	printf("  *  \n");
	printf(" *** \n");
	printf("*****\n");
	printf(" *** \n");
	printf("  *  \n");
	return 0;
}

算BMI

 

#include<stdio.h>

int main()
{
	double height, weight;
	printf("请输入身高(m),体重(kg)\n");
	scanf("%lf%lf", &height, &weight);
	double bmi = weight / height / height;
	printf("你的BMI为%.1f\n", bmi);
	if (bmi < 18.5) printf("你太瘦了\n");
	else if (bmi >= 18.5 && bmi <= 23.9) printf("你很正常\n");
	else printf("你太胖了\n");
	return 0;
}

 算闰年

#include<stdio.h>

int main()
{
	int year;
	scanf("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		printf("%d年是闰年", year);
	else printf("%d年不是闰年",year);
	return 0;
}

#include<stdio.h>

int main()
{
	int x;//要查询的包裹
	scanf("%d", &x);
	if (x % 6 == 0) printf("包裹的代号是6");
	else printf("包裹的代号是%d", x % 6);
	return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值