多少只签字笔?
题目很简单,首先要做的就是统一用角来表示钱,这样方便计算,代码如下:
#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;
}