IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 余贞侠C语言程序设计课后参考答案 -> 正文阅读

[C++知识库]余贞侠C语言程序设计课后参考答案

第十章 (答案仅供参考),有问题大家可以在评论区一起讨论。


10.2//用Windows的记事本编辑一个文本文件,编写程序读取该文件中的数据,并在屏幕上显示;
#include<stdio.h>
#include<stdlib.h>
int main()
{
	FILE *fp;
	char name[20];
	char ch;
	printf("请输入文件名称:\n");
	scanf("%s",name);
	fp=fopen(name,"r");
	if(fp==NULL)
	{
		printf("File can not be opened!\n");
		exit(0);//返回程序;
	}
	ch=fgetc(fp);//以字符方式从文件中读取一个字符;
	while(ch!=EOF)//若读取到末尾,解fgetc()返回EOF(-1);
	{
		putchar(ch);//将字符送往屏幕;
		ch=fgetc(fp);//从文件读取下一个字符;
	}
	putchar('\n');
	fclose(fp);//关闭文件;
	return 0;
}

10.3//将一个文本文件的内容复制到另一个文本文件中,文本文件的名字从键盘输入;
#include<stdio.h>
#include<stdlib.h>
int main()
{
	FILE *fp1,*fp2;
	char data;//一个内存数据域
	char c;
	char name1[21],name2[21];
	
	printf("请输入要读的文件名:\n");
	scanf("%s",name1);
	fp1=fopen(name1,"w");
	//fp1=fopen("student.txt","w");
	if(fp1==NULL)
	{
		printf("File can not be opened!\n");
		exit(0);//返回程序;
	}
	scanf("%c",&c);
	while(c!='$')
	{
		fputc(c,fp1);
		scanf("%c",&c);
	}
	fclose(fp1);


	//fp1=fopen("student.txt","rb");
	//fp2=fopen("stu.txt","wb");
	fp1=fopen(name1,"rb");//以二进制打开文件,供读
	printf("请输入要写的文件名:\n");
	scanf("%s",name2);
	fp2=fopen(name2,"wb");//以二进制打开文件,供写
	if(fp1==NULL||fp2==NULL)
	{
		printf("File can not be opened!\n");
		exit(0);//返回程序;
	}
	fread(&data,sizeof(char),1,fp1);//从fp1中对一个字节的内容到变量data;
	while(!feof(fp1))//所要读的文件未读完,feof()返回值为0;
	{
		fwrite(&data,sizeof(char),1,fp2);//将变量data的内容复制到fp2中;
		fread(&data,sizeof(char),1,fp1);//从fp1中在读一个字节的内容到变量data
	}
	fclose(fp1);
	fclose(fp2);
	return 0;
}
	
10.4//输入五个学生信息,(姓名,年龄,数学,英语,语文),将学生信息存入名为"student.txt"文本文件中,
//每个学生占一行,各个数据之间用空格分隔,写文件采用fprintf()函数;
#include<stdio.h>
#include<stdlib.h>
#define N 5
struct STU
{
	char name[21];
	int age;	
	float score[3];//三门课成绩;	
};		
int main()
{
	struct STU stu[N];
	FILE *fp;
	int i,s;
	fp=fopen("student.txt","w");
	if(fp==NULL)
	{
		printf("File can not be opened!\n");
		exit(0);//返回程序;
	}
	for(i=0;i<N;i++)
	{
		printf("%d_student information:\n姓名 年龄 数学 英语 语文\n",i+1);
		/*从键盘读入一个结构体数据到变量;*/
		scanf("%s %d %f %f %f",stu[i].name,&stu[i].age,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
		fprintf(fp,"%s %d %4.2f %4.2f %4.2f\n",stu[i].name,stu[i].age,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
	}
	fclose(fp);
	/*
	fp=fopen("student.txt","r");
	printf("students information:\n姓名 年龄 英语 数学 语文\n");
	//利用fscanf()从文件读出学生信息,利用返回值判断是否读出成功,(成功则返回fscanf以赋值变量的个数
	//负责返回EOF(-1)
	for(i=0;i<N;i++)
	{
		s=fscanf(fp,"%s %d %f %f %f",stu[i].name,&stu[i].age,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
		if(s==5)//fscanf返回值(以赋值变量个数)
		{
			printf("%s %3d %5.2f %5.2f %5.2f\n",stu[i].name,stu[i].age,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
		}
	}
	fclose(fp);
	*/

	return 0;
}

10.5/*将第四题文件中的数据读出来并求出平均成绩,按平均成绩从高到低显示学生信息(读文件采用fscanf()函数)*/
#include<stdio.h>
#include<stdlib.h>
#define N 5
struct STU
{
	char name[21];
	int age;	
	float score[3];//三门课成绩;
	float avg;//平均成绩
};		
int main()
{
	struct STU stu[N],t;
	FILE *fp;
	int i,j,s;
	float sum;
	fp=fopen("student.txt","r");
	if(fp==NULL)
	{
		printf("File can not be opened!\n");
		exit(0);//返回程序;
	}
	printf("students information:\n姓名 年龄 英语 数学 语文\n");
	//利用fscanf()从文件读出学生信息,利用返回值判断是否读出成功,(成功则返回fscanf以赋值变量的个数
	//负责返回EOF(-1)
	for(i=0;i<N;i++)
	{
		sum=0;
		s=fscanf(fp,"%s %d %f %f %f",stu[i].name,&stu[i].age,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
		if(s==5)//fscanf返回值(以赋值变量个数)
		{
			printf("%s %3d %5.2f %5.2f %5.2f\n",stu[i].name,stu[i].age,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
	        for(j=0;j<3;j++)
			{
				sum=sum+stu[i].score[j];
			}
			stu[i].avg=sum/3;
		}
	}
	for(i=0;i<N;i++)
	{
		printf("平均成绩:%.2f ",stu[i].avg);
	}
	for(i=0;i<N;i++)//比较排序法
	{
		for(j=i+1;j<N;j++)
		{
			if(stu[i].avg<stu[j].avg)
			{
				t=stu[i];
				stu[i]=stu[j];
				stu[j]=t;
			}
		}
	}
	printf("排序后的信息:\n姓名  年龄  英语  数学  语文  平均成绩\n");
	for(i=0;i<N;i++)
	{
		printf("%6s %2d %6.2f %6.2f %6.2f %6.2f\n",stu[i].name,stu[i].age,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
	}
	fclose(fp);
	return 0;
}
10.6//定义一个结构体类型,其成员变量分别用来描述商品的名称,单价,数量,金额。输入n个商品的信息,将其保存到二进制文件中。
#include<stdio.h>
#include<stdlib.h>
#define N 5
struct Product
{
	char name[21];//名称
	float price;//单价
	int num;//数量
	float money;//金额
};
int main()
{
	struct Product p[N];
	int i,n;
	char a[21];//用来存放文件地址;
	FILE *fp;
	printf("please input product numbers(1~%d):\n",N);
	scanf("%d",&n);
	if(n<=0||n>N)
	{
		printf("please input again!\n");
		exit(0);
	}
	printf("please input text site:\n");
	scanf("%s",a);//二进制文件以dat为文件名后缀;
	fp=fopen(a,"wb");
	if(fp==NULL)
	{
		printf("File can not be opened!\n");
		exit(0);//返回文件
	}
	for(i=0;i<n;i++)
	{
		printf("please input %d product information:\n名称 单价 数量\n",i+1);
		scanf("%s %f %d",p[i].name,&p[i].price,&p[i].num);
		p[i].money=p[i].price*p[i].num;
		fwrite(&p[i],sizeof(struct Product),1,fp);
	}

	fclose(fp);
	fp=fopen(a,"rb");//以二进制打开文件供读;
	printf("product information:\n名称 单价 数量 金额\n");
	for(i=0;i<n;i++)
	{
		while(fread(&p[i],sizeof(struct Product),1,fp)==1)//返回值为数据块的个数,说明还有内容
		{
	    	printf("%3s %3.2f %3d %3.2f\n",p[i].name,p[i].price,p[i].num,p[i].money);
		}
	}
	fclose(fp);
	return 0;
}


10.7//将第六题的商品信息文件读出并显示,要求在显示数据时,首先按照金额从高到低排序,若金额相同,在按产品单价从高到低排序;

#include<stdio.h>
#include<stdlib.h>
#define N 5
struct Product
{
	char name[21];//名称
	float price;//单价
	int num;//数量
	float money;//金额
};
int main()
{
	struct Product p[N],t;
	int i,j,n;
	char a[21];//用来存放文件地址;
	FILE *fp;
	printf("please input text site:\n");
	scanf("%s",a);//二进制文件以dat为文件名后缀;
	fp=fopen(a,"rb");
	if(fp==NULL)
	{
		printf("File can not be opened!\n");
		exit(0);//返回文件
	}
	printf("product information:\n名称 单价 数量 金额\n");
	/*for(i=0;i<N;i++)
	{
		if(fread(&p[i],sizeof(struct Product),1,fp)==1)//返回值为数据块的个数,说明还有内容
		{
	    	printf("%6s %3.1f %2d %4.2f\n",p[i].name,p[i].price,p[i].num,p[i].money);
		}
		if(feof(fp))//feof()判断文件是否读
		{
			break;
		}
	}*/
	for(i=0;i<N;i++)
	{
		if(feof(fp))
		{
			break;
		}
		fread(&p[i],sizeof(struct Product),1,fp);
	}
	n=i-1;//n表示的是结构体变量(数据块)的个数,i-1是因为feof函数会在文件内容输入完后在循环一次才结束,
	for(i=0;i<n;i++)//比较排序法
	{
		for(j=i+1;j<n;j++)
		{
			if(p[i].money<p[j].money)//比较金额
			{
				t=p[i];
				p[i]=p[j];
				p[j]=t;
			}
			else if(p[i].money==p[j].money&&p[i].price<p[j].price)//比较价格
			{
				t=p[i];
				p[i]=p[j];
				p[j]=t;
			}
		}
	}
	printf("product finally information:\n名称 单价 数量 金额\n");
	for(i=0;i<n;i++)
	{
		printf("%6s %3.1f %2d %4.2f\n",p[i].name,p[i].price,p[i].num,p[i].money);
	}
	fclose(fp);
	return 0;
}


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:17:43  更:2021-11-09 19:19:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:43:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码