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