c/c++ 输入输出技巧

C:

小数的四舍五入问题

小数用 %.xf 输出的话 是会自动四舍五入的

比如说

    double e = 2.718, c = 3.141;
    printf("%.2lf\n", e);
    printf("%.2lf\n", c);
    printf("%.2lf\n", (int)(e * 100) / 100.0);
    printf("%.2lf\n", (int)(c * 100) / 100.0);

运行结果
这里写图片描述

也就是说 如果要求 不要让它进位 像整数除法一样,那么就要类似于那样的操作

如果要保留任意 从键盘输入的N位小数输出一个数字 那怎么办呢

printf("%.*lf\n",c,d);   // c 表示保留的小数位数,它替代的是*的位置

对齐问题:

printf("%-5d\n%5d", a, b); //左对齐 无负号  右对齐

填充问题

printf("%05d\n", a); // 如果输出的位数不够五位  自动用0补齐 或者还可以用空格补齐  好像不能填充其他符号吧,,C语言

读入问题

scanf("%1d", &a); // 这样就会只读进来一位数字 

读入字符问题

    printf(" %c", &c); // 这样就可以防止读入空格 因为%c 前面的空格可以吸收空格和空行 就不用再打 getchar()

按格式读入问题

比如说有的题目的input 要求是 (a, b)

但实际上 我们只需要 读入a 和 b 就可以了

scanf("(%d,%d)", &a, &b); // 只要按照它的格式 来就可以了 就像前面的空格可以吸收空格和空行一样

C++

保留小数问题

    double e = 2.718, c = 3.141;
    cout << fixed;    // 表示按照小数形式输出小数 默认是按照科学计数法输出小数
    cout.precision(2);  // 表示输出的小数保留几位
    cout << e << " " << c << endl;

如果要按格式输出 比如左对齐 右对齐

    double e = 2.718, c = 3.141; 
    cout << setw (20);    // 宽度
    cout << left << e << endl;    // 左对齐
    cout << right << e << endl;   // 右对齐

填充问题

    double e = 2.718, c = 3.141;
    cout.fill('*');    // 填充'*'  实际上 ' ' 里面是随便填的 不像 c 里面 只能填充0 和 空字符
    cout << left << setw(20) << e << endl;  // 表明 左对齐 宽度20
    cout << right << setw(20) << e << endl;  // 表明 右对齐 宽度20
posted @ 2018-05-12 22:02  Dup4  阅读(432)  评论(0编辑  收藏  举报