明解C语言 入门篇 第十三章答案
练习13-1
/*
打开与关闭文件
*/ #include <stdio.h> int main(void)
{
char s[];
FILE* fp;
printf("请输入你要打开的文件");
scanf("%s", s);
fp = fopen("*s", "r"); /* 打开文件 */ if (fp == NULL)
printf("该文件不存在\n");
else {
printf("该文件存在\n");
fclose(fp); /* 关闭文件 */
} return ;
}
练习13-2
/*
打开文件。
*/ #include <stdio.h> int main(void)
{
char s[];
FILE* fp;
printf("请输入你要打开的文件:");
scanf("%s", s);
fp = fopen("*s", "w"); /* 打开文件 */
return ;
}
练习13-3
/*
读入身高和体重,计算并显示它们的平均值
*/ #include <stdio.h> typedef struct {
char name[]; /* 姓名 */
double height; /* 身高 */
double weight; /* 体重 */
} Student;
void swap_Student(Student* x, Student* y)
{
Student temp = *x;
*x = *y;
*y = temp;
}
void sort_by_height(Student a[], int n)
{
int i, j; for (i = ; i < n - ; i++) {
for (j = n - ; j > i; j--)
if (a[j - ].height > a[j].height)
swap_Student(&a[j - ], &a[j]);
}
} int main(void)
{
FILE* fp;
int ninzu = ; /* 人数 */
char name[]; /* 姓名 */
double height, weight; /* 身高,体重 */
double hsum = ; /* 身高合计 */
double wsum = ; /* 体重合计 */
int i = ;
Student stu[] = { { }, { }, { }, { }, { }, { }
};
if ((fp = fopen("hw.dat", "r")) == NULL) /* 打开文件 */
printf("\a文件打开失败。\n");
else {
while (fscanf(fp, "%s%lf%lf", stu[i].name, &stu[i].height, &stu[i].weight) == ) { hsum +=stu[ninzu].height;
wsum +=stu[ninzu].weight;
i++;
ninzu++;
}; sort_by_height(stu, i);
for (i = ; i < ninzu; i++) { printf("%-10s %5.1f %5.1f\n",stu[i].name,stu[i].height, stu[i].weight);
} printf("----------------------\n");
printf("平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu);
fclose(fp); /* 关闭文件 */
} return ;
}
练习13-4
/*
读入身高和体重,计算并显示它们的平均值
*/ #include <stdio.h>
#define ninzu 4 typedef struct {
char name[]; /* 姓名 */
int height; /* 身高 */
int weight; /* 体重 */
} Student;
int main(void)
{ FILE* fp;
if ((fp = fopen("gaoji", "w")) == NULL) /* 打开文件 */
printf("\a文件打开失败。\n");
else {
int i;
Student stu[] = { { }, { }, { }, { }, { }
};
puts("输入姓名,身高,体重");
for (i = ; i < ninzu; i++) {
scanf("%s%d%d", stu[i].name, &stu[i].height, &stu[i].weight);
fprintf(fp, "%s %d %d\n", stu[i].name, stu[i].height, stu[i].weight);
}
fclose(fp);
}
return ; }
练习13-5
/*
显示程序上一次运行时的日期和时间
*/ #include <time.h>
#include <stdio.h> char data_file[] = "datetime.dat"; /* 文件名 */ /*--- 取得并显示上一次运行时的日期和时间 ---*/
void get_data(void)
{
FILE* fp; if ((fp = fopen(data_file, "r")) == NULL) /* 打开文件 */
{printf("本程序第一次运行。\n"); }
else {
int year, month, day, h, m, s;
char mood[]; fscanf(fp, "%d%d%d%d%d%d%s", &year, &month, &day, &h, &m, &s,mood);
printf("上一次运行是在%d年%d月%d日%d时%d分%d秒,心情%s\n",
year, month, day, h, m, s,mood);
fclose(fp); /* 关闭文件 */
}
} /*--- 写入本次运行时的日期和时间 ---*/
void put_data(void)
{
FILE* fp;
char mood[];
time_t current = time(NULL); /* 当前日历时间 */
struct tm* timer = localtime(¤t); /* 分解时间*/ if ((fp = fopen(data_file, "w")) == NULL) /* 打开文件 */
printf("\a文件打开失败。\n");
else {
printf("当前的心情是:");
scanf("%s", mood);
fprintf(fp, "%d %d %d %d %d %d %s\n",
timer->tm_year + , timer->tm_mon + , timer->tm_mday,
timer->tm_hour, timer->tm_min, timer->tm_sec,mood);
fclose(fp); /* 关闭文件 */
}
} int main(void)
{
get_data(); /* 取得并显示上一次运行时的日期和时间 */ put_data(); /* 写入本次运行时的日期和时间 */ return ;
}
练习13-6
/*
显示文件内容
*/ #include <stdio.h> int main(void)
{
int ch;
int cnt = ;
FILE* fp;
char fname[FILENAME_MAX]; /* 文件名 */ printf("文件名:");
scanf("%s", fname); if ((fp = fopen(fname, "r")) == NULL) /* 打开文件 */
printf("\a文件打开失败。\n");
else {
while ((ch = fgetc(fp)) != EOF) {
if (ch=='\n')
{cnt++;} putchar(ch);
}
printf("%d", cnt);
fclose(fp); /* 关闭文件 */
} return ;
}
练习13-7
/*
显示文件内容
*/ #include <stdio.h> int main(void)
{
int ch;
int cnt = ;
FILE* fp;
char fname[FILENAME_MAX]; /* 文件名 */ printf("文件名:");
scanf("%s", fname); if ((fp = fopen(fname, "r")) == NULL) /* 打开文件 */
printf("\a文件打开失败。\n");
else {
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
if (ch >' ') {
cnt++;
}
}
printf("字符数:%d", cnt);
fclose(fp); /* 关闭文件 */
} return ;
}
练习13-8
/*
复制文件
*/ #include <stdio.h> int main(void)
{
int ch;
FILE* sfp; /* 原文件 */
FILE* dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */ printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname); if ((sfp = fopen(sname, "r")) == NULL) /* 打开原文件 */
printf("\a原文件打开失败。\n");
else {
if ((dfp = fopen(dname, "w")) == NULL) /* 打开目标文件 */
printf("\a目标文件打开失败。\n");
else { while ((ch = fgetc(sfp)) != EOF)
{
fputc(ch, dfp);
putchar(ch);
} fclose(dfp); /* 关闭目标文件 */
}
fclose(sfp); /* 关闭原文件 */
} return ;
}
练习13-9
/*
复制文件
*/ #include <stdio.h> int main(void)
{
int ch;
FILE* sfp; /* 原文件 */
FILE* dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */ printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname); if ((sfp = fopen(sname, "r")) == NULL) /* 打开原文件 */
printf("\a原文件打开失败。\n");
else {
if ((dfp = fopen(dname, "w")) == NULL) /* 打开目标文件 */
printf("\a目标文件打开失败。\n");
else { while ((ch = fgetc(sfp)) != EOF)
{
ch=toupper(ch);
fputc(ch, dfp);
putchar(ch);
} fclose(dfp); /* 关闭目标文件 */
}
fclose(sfp); /* 关闭原文件 */
} return ;
}
练习13-10
/*
复制文件
*/ #include <stdio.h> int main(void)
{
int ch;
FILE* sfp; /* 原文件 */
FILE* dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */ printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname); if ((sfp = fopen(sname, "r")) == NULL) /* 打开原文件 */
printf("\a原文件打开失败。\n");
else {
if ((dfp = fopen(dname, "w")) == NULL) /* 打开目标文件 */
printf("\a目标文件打开失败。\n");
else { while ((ch = fgetc(sfp)) != EOF)
{
ch=tolower(ch);
fputc(ch, dfp);
putchar(ch);
} fclose(dfp); /* 关闭目标文件 */
}
fclose(sfp); /* 关闭原文件 */
} return ;
}
练习13-11
#include <stdio.h> int main(void)
{
FILE* fp;
double v[];
int i; for (i = ; i < ; i++) {
printf("v[%d]=", i);
scanf("%lf", &v[i]);
} /* 写入操作 */
if ((fp = fopen("PI.bin", "wb")) == NULL) /* 打开文件 */
printf("\a文件打开失败。\n");
else {
fwrite(&v, sizeof(double), , fp);
fclose(fp);
} /* 关闭文件 */ /* 读取操作 */
if ((fp = fopen("PI.bin", "rb")) == NULL) /* 打开文件 */
printf("\a文件打开失败。\n");
else {
fread(&v, sizeof(double), , fp);
for (i = ; i < ; i++) {
printf("v[%d]=%.2f\n", i,v[i]);
} fclose(fp); /* 关闭文件 */
} return ;
}
练习13-12
暂时不会
练习13-13
#include <stdio.h>
int main(void)
{
int n;
int ch;
FILE* sfp; /* 原文件 */
FILE* dfp; /* 目标文件 */
char sname[FILENAME_MAX]; /* 原文件名 */
char dname[FILENAME_MAX]; /* 目标文件名 */ printf("打开原文件:"); scanf("%s", sname);
printf("打开目标文件:"); scanf("%s", dname);
if ((sfp = fopen(sname, "rb")) == NULL)
printf("\a原文件打开失败。\n");
else
{
if ((dfp = fopen(dname, "wb")) == NULL)
printf("\a目标文件打开失败。\n");
else
{
while (n = fread(&ch, sizeof(int), , sfp) > )
{
fwrite(&ch, sizeof(int), , dfp);
}
fclose(dfp);
}
fclose(sfp);
printf("done!\n");
}
return ; }
明解C语言 入门篇 第十三章答案的更多相关文章
- 明解C语言 入门篇 第五章答案
练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...
- 明解C语言 入门篇 第四章答案
练习4-1 #include <stdio.h> int main(void) { int no; int x; do{ printf("请输入一个整数:"); sca ...
- 明解C语言 入门篇 第三章答案
练习3-1 #include <stdio.h> int main() { int x; int y; puts("请输入两个整数."); printf("整 ...
- 明解C语言 入门篇 第十一章答案
练习11-1 /* 用指针实现的字符串的改写 */ #include <stdio.h> int main(void) { "; printf("p = \" ...
- 明解C语言 入门篇 第七章答案
练习7-1 #include <stdio.h> int main() { int n; printf(,, ); //此行显示结果为 4 3 6 因为1的字节就是为4,而-1的字节也是4 ...
- 明解C语言 入门篇 第六章答案
练习6-1 /* 求两个整数中的最小值 */ #include <stdio.h> /*--- 返回三个整数中的最小值 ---*/ int min2(int a, int b) { int ...
- 明解C语言 中级篇 第四章答案
练习4-1 /* 珠玑妙算 */ #include <time.h> #include <ctype.h> #include <stdio.h> #include ...
- 明解C语言 中级篇 第三章答案
练习3-1 /* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h ...
- 明解C语言 入门篇 第二章答案
练习2-1 #include <stdio.h> int main() { int x; int y; int percent; puts("请输入两个整数"); pr ...
随机推荐
- Ansible-Tower自动化运维管理环境 - 安装破解记录
公司中实现运维自动化的架构中主要用到ansible,ansible脚本在部署服务器指令行中显得不太直观.Ansible-Tower(之前叫做awx)是将ansible的指令界面化,简明直观,简单易用. ...
- zookeeper C client API 和zkpython 的安装
1 zookeeper C API 安装 yum install -y ant 在解压的zookeeper包中执行: ant compile_jute 进入src/c 安装:yum -y instal ...
- MySQL-8.0.18 引入了破坏性变更
MySQL-8.0.18 引入了破坏性变更 变更日志里面有这样一项 When the server is run with --initialize, there is no reason to lo ...
- ElasticSearch简介(三)——中文分词
很多时候,我们需要在ElasticSearch中启用中文分词,本文这里简单的介绍一下方法.首先安装中文分词插件.这里使用的是 ik,也可以考虑其他插件(比如 smartcn). $ ./bin/ela ...
- Z从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储+服务+抽象接口模式
本文梯子 本文3.0版本文章 前言 零.完成图中的粉色部分 2019-08-30:关于仓储的相关话题 一.创建实体Model数据层 二.设计仓储接口与其实现类 三.设计服务接口与其实现类 四.创建 C ...
- Jquery选择器个人总结
1.选择第一级子节点 通过> 或者children方法实现 $('#XtraTabPage8>.datagrid-ftable') $('#XtraTabPage8').children( ...
- XCode保存问题
1. 确认下证书是不是开发证书,如果是发布证书就会出现这样的提示. 2. 证书失效了,去开发者中心重新生成一个. 3. 包标识符不与描述文件包含的包标识符不一致,按照它的提示换一下就好了,最好不要点 ...
- ABP进阶教程0 - 目录
ABP进阶教程 本教程主要讲解如何基于ABP实现条件查询/分页/排序/导出/打印等功能. 源码已分享: GitHub Gitee ABP进阶教程0 - 目录 ABP进阶教程1 - 条件查询 A ...
- 有趣的bug——Java静态变量的循环依赖
背景 是的,标题没有错误,不是Spring Bean的循环依赖,而是静态变量之间的循环依赖. 近期的项目均是简单的Maven项目,通过K8S部署在阿里云上,其配置文件读取规则如下所示: (1) 优先读 ...
- [20190910]索引分支块中TERM使用什么字符表示.txt
[20190910]索引分支块中TERM使用什么字符表示.txt --//做索引块转储,一些root,分支节点出现TERM,从来没有关注使用字符表示,简单探究看看. 1.环境:SCOTT@test01 ...