描述
问题:一年约有 3.156×10的7次方
s,要求输入您的年龄,显示该年龄合多少秒。
数据范围: 0<age≤200
输入描述:
一行,包括一个整数age。
输出描述:
一行,包含一个整数,输出年龄对应的秒数。
示例1
输入:
20
复制输出:
631200000
首先:审题可得该题只是简单的计算,同时需要考虑结果的取值范围是非溢出,这就需要了解整型范围以及取值大小,以及printf输出时的格式。
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
方法一 :
#include<stdio.h>
int main(){
long int age,second;//需用到长整型
scanf("%ld",&age);
second = age * 31560000 ;
printf("%ld",second);//注意输出格式
return 0;
}
可以看到将题目3.156该浮点数避开。
方法二:
巧妙的利用打印避开取值
int main()
{
int age;
//一年有3.156×10的7次方秒 =3156×10的4次方秒
int time=3156;//直接令时间为3156,就算人活500年也不会溢出
scanf("%d",&age);
time=age*time;
printf("%d0000",time);//计算的结果再补最后的四个0
return 0;
}