|
|
第12章习题:
1,用scanf接收输入的日期,格式为YYYY-MM-DD,然后再用printf函数按DD/MM/YYYY的格式打印输出。
参考答案:
# include <stdio.h>
int main (void)
{
int y, m, d;
printf ("请输入YYYY-MM-DD格式的日期:");
scanf ("%d-%d-%d", & y, & m, & d);
printf ("%d/%d/%d\n", d, m, y);
}
以上答案未考虑非法输入的情况。
2,用scanf 输入一个整数和一个浮点数,然后用printf输出。要求:整数占 8 个字符宽度,右对齐(不足补空格);浮点数占 10 个字符宽度,保留 2 位小数,右对齐。
参考答案:
# include <stdio.h>
int main (void)
{
int i;
float f;
printf ("请输入一个整数和一个浮点数:");
scanf ("%d", & i);
scanf ("%f", & f);
printf ("%8d%10.2f\n", i, f);
}
3,编写两个程序,第一个程序用scanf输入若干学生的姓名(字符串)、学号(整数)、成绩(浮点数),然后将这些数据保存为文件myfile3.dat;第二个程序从文件myfile3.dat中读取所有学生的数据,并用printf以表格的形式输出。要求姓名占10个字符宽度,左对齐;学号占6个字符宽度,右对齐;成绩占8个字符宽度,保留 1 位小数,右对齐。
参考答案:
第一个程序:
# include <stdio.h>
struct stud
{
char name[17];
int id;
float score;
};
# define N 5
int main (void)
{
struct stud studs [N];
for (int x = 0; x < N; x ++)
{
printf ("姓名:");
scanf ("%16s", studs [x].name);
printf ("学号:");
scanf ("%d", & studs [x].id);
printf ("成绩:");
scanf ("%f", & studs [x].score);
}
FILE * fp;
fp = fopen ("myfile3.dat", "wb");
if (fp == NULL) {
printf("无法创建文件!\n");
return 1;
}
fwrite (studs, sizeof (struct stud), N, fp);
fclose (fp);
}
第二个程序:
# include <stdio.h>
struct stud
{
char name[17];
int id;
float score;
};
# define N 5
int main (void)
{
struct stud studs [N];
FILE * fp;
fp = fopen ("myfile3.dat", "rb");
if (fp == NULL) {
printf("无法打开文件!\n");
return 1;
}
fread (studs, sizeof (struct stud), N, fp);
fclose (fp);
printf ("--------------------------------\n");
for (int x = 0; x < N; x ++)
printf ("%-10s%6d%8.1f\n", studs [x].name, studs [x].id, studs [x].score);
printf ("--------------------------------\n");
}
|
|