水仙花
韩星点兵
倒三角
#include<stdio.h>
int main(){
int n = 5;
for(int i =n-1;i>=0;i--){
for(int j=0;j<n-i-1;j++){
printf(" ");
}
for(int j=0;j<i*2+1;j++){
printf("#");
}
printf("\n");
}
return 0;
}
子序列的和
分数化小数
题意:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。其中a,b ≤ 106, c≤100。输入包含多组数据,结束标记为a=b=c=0。
测试数据:
样例输入:
1 6 4
0 0 0
样例输出:
Case 1: 0.1667
手动模拟除法的运算,用小学时候的学的不停“乘10取余”法即可解决。先输出小数点前的数字,由于测试样例中最后一位需要四舍五入,因此先输出前c-1位,最后第c位根据c+1位判断是否舍入。
#include <iostream>
#include <cstdio>
using namespace std;
int main(int argc, char const *argv[])
{
int a,b,c,kase = 0;
while (~scanf("%d%d%d", &a, &b, &c))
{
if (!a && !b && !c) break;
kase++;
//先输出小数点前的数字
printf("Case: %d: %d.", kase, a/b);
a %= b;
//输出小数点后的c-1位
for (int i = 0; i < c-1; ++i)
{
a *= 10;
printf("%d", a/b);
a %= b; //跳出时a为c-1位运算后的余数
}
//考虑最后一位四舍五入
int more = ((a*10)%b * 10) / b; //观察第c位的后一位
if (more >= 5)
printf("%d\n", (a*10)/b + 1);
else printf("%d\n", (a*10)/b);
}
return 0;
}
注意:模运算;1=0*6+1;
网友评论