一、A除以B
真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。(如果学习的小伙伴对C基础掌握较好,这道题确实简单,奈何俺不是【⋌ ↔ ⋌】)
1、题目内容
输入格式:
输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。
输出格式:
在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error
。输出的商应保留小数点后2位。
输入样例1:
-1 2
输出样例1:
-1/2=-0.50
输入样例2:
1 -3
输出样例2:
1/(-3)=-0.33
输入样例3:
5 0
输出样例3:
5/0=Error
2、正确结果
#include<stdio.h>
int main(){
float A,B;
float Mut; //存放除法的结果
scanf("%f %f",&A,&B);
Mut = A / B;
if(B<0){
printf("%.0f/(%.0f)=%.2f",A,B,Mut); //.0f ,用来控制精度,无尾数的浮点数;
}
else if(B==0){
printf("%.0f/%.0f=Error",A,B);
}
else printf("%.0f/%.0f=%.2f",A,B,Mut); //.2f ,用来控制精度,保留2为尾数的浮点数;
return 0;
}
思路:运算结果多样,需要进行判断
除法运算:分母不为0,若为0,报错;
除法的结果不为整数时,结果保留尾数的问题;
分子分母为非正整数时,输出格式上分母要加括号;
二、日期格式化
1、题目内容
世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例:
03-15-2017
输出样例:
2017-03-15
2、正确结果
#include <stdio.h>
int main()
{
int y,m,d; //y-年、m-月、d-日
scanf("%d-%d-%d",&m,&d,&y);
printf("%d-%02d-%02d\n",y,m,d); //主要是输出时需要保证日期的格式,补零操作
return 0;
}
3、个人理解
自己最开始写的代码
#include<stdio.h>
int main(){
int y,m,d;
scanf("%d-%d-%d",&d,&m,&y);
printf("%d-%d-%d",y,m,d);
return 0;
}
问题:并没有按照指定格式输出,且未保证输入的一定就是合法日期、格式输出错误;
%d的知识点:
(1)%d是占位符:%是引导符,d表示十进制整数的形式。
(2)%2d是C语言中printf函数的输出格式说明符。<——(可点击查看)
百度解释:
#include<stdio.h>
int main(){
printf("%2d", 12); // 输出12
printf("%2d", 1); // 输出 _1 (_代表空格)
printf("%2d", 102); // 输出102
printf("%2d", 12.23); // 输出12 (强制类型转换,即取整数部分)
return 0;
}
使输出的int型的数值以2位的固定位宽输出。不足2位,则在前面补空格;超过2位,则按实际位数输出。
补充:如输出的数值非int型,会自动进行强制类型转换。
举例:
printf("%2d", 1); // 输出 1 (是空格+1),代码中专门使用“ | ”符号使得空格更明显。