头歌C语言实验 辅助练习:输入输出格式控制

第1关:保留3位小数

问题描述
读入一个单精度浮点数,保留3位小数输出这个浮点数。

输入
只有一行,一个单精度浮点数。

输出
只有一行,输出读取的单精度浮点数,保留3位小数。

输入示例
12.123456

输出示例
12.123

1
2
3
4
5
6
7
#include<stdio.h>
int main(){
float num;
scanf("%f",&num);
printf("%.3f",num);
return 0;
}

第2关:保留12位小数

问题描述
读入一个双精度浮点数,保留12位小数,输出这个浮点数。

输入
只有一行,一个双精度浮点数。

输出
只有一行,输出读取的双精度浮点数,保留12位小数。

输入示例
3.1415926535798932

输出示例
3.141592653580

1
2
3
4
5
6
7
#include<stdio.h>
int main(){
double num;
scanf("%lf",&num);
printf("%.12lf",num);
return 0;
}

第3关:空格分隔输出

问题描述
依次读入一个字符,一个整数,一个单精度浮点数和一个双精度浮点数,然后按顺序输出它们,并且两两之间用一个空格分开。
输出浮点数时保留3位小数。

输入
输入包括4行:
第1行是一个字符;
第2行是一个整数;
第3行是一个单精度浮点数;
第4行是一个双精度浮点数。

输出
输出只有1行,按输入顺序分别输出字符、整数、单精度浮点数和双精度浮点数,两两之间用一个空格分开,并且浮点数只保留3位小数。

输入示例
a
12
2.3
3.2

输出示例
a 12 2.300 3.200

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
int main(){
char c;
int n;
float f;
double d;
scanf("%c",&c);
scanf("%d",&n);
scanf("%f",&f);
scanf("%lf",&d);
printf("%c %d %.3f %.3lf",c,n,f,d);
return 0;
}

第4关:浮点数的输出格式

问题描述
读入一个双精度浮点数,分别按照不同的输出格式输出这个浮点数。

输入
一个双精度浮点数。

输出
输出共包含4行:
第1行以十进制小数格式输出;
第2行以十进制小数格式输出,保留4位小数;
第3行以指数形式输出;
第4行以指数形式输出,保留2位小数。

输入示例
12.3456789

输出示例
12.345679
12.3457
1.234568e+001
1.23e+001

提示
在以指数形式输出浮点数时,示例和标准答案之间有差异,这是因为不同的编译环境的差异,大家可以忽略这个差异。

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main(){
double num;
scanf("%lf",&num);
printf("%lf\n",num);
printf("%.4lf\n",num);
printf("%e\n",num);
printf("%.2e\n",num);
return 0;
}

第5关:输出成绩表

问题描述
现有李静、张扬、王琴三位同学在语文、数学、英语三门课的期末考试中的期末考试成绩(都是浮点数),请编写程序读入这位同学的三门课成绩后,按照指定的格式对齐输出包含这三位同学成绩的成绩表。

输入
输入包括3行,每行3个浮点数:
第1行的3个浮点数表示李静的三门课成绩;
第2行的3个浮点数表示张扬的三门课成绩;
第3行的3个浮点数表示王琴的三门课成绩;

输出
输出的成绩表由3行构成。
第1行是李静的成绩,第2行是张扬的成绩,第3行是王琴的成绩。
每一行中首先输出姓名,然后依次输出语文、数学、英语的成绩,其中每个成绩占用8个字符的宽度,保留1位小数,并且按照右对齐的格式输出。

输入示例
95.36 98 92.5
87.65 88.98 94.34
75.64 83.28 91.57

输出示例
李静 95.4 98.0 92.5
张扬 87.7 89.0 94.3
王琴 75.6 83.3 91.6

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
int main(){
double chinese[3],math[3],english[3];
char name[3][10]={"李静","张扬","王琴"};
int i;
for(i=0;i<3;i++){
scanf("%lf %lf %lf",&chinese[i],&math[i],&english[i]);
}
for(i=0;i<3;i++){
printf("%s%8.1lf%8.1lf%8.1lf\n",name[i],chinese[i],math[i],english[i]);
}
return 0;
}

第6关:打印字符

问题描述
输入一个正整数表示的ASCII码,输出对应的字符。

输入
一个不超过255的正整数,即字符的ASCII码,保证存在对应的可见字符。

输出
该ASCII码对应的字符。

输入示例
65

输出示例
A

1
2
3
4
5
6
7
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
printf("%c",(char)a);
return 0;
}