实验1:C语言基础实验
目录
实验1:C语言基础实验
实验步骤分析:
1、定义结构体:
2、信息录入
3、信息修改
4、信息展示
5、主函数编写
结果展示:
源代码:
实验设备:
目标系统:windows
软件工具:VS2022/vc6/dev
实验要求:
- 使用结构体数组完成中国四大名著的信息录入,包括:书名,作者,出版社,价格,页码等;
- 程序需使用到#define和typedef定义相关内容;
- 程序能完成名著的信息修改和展示。
实验步骤分析:
-
定义结构体:
使用结构体定义相关内容。定义一个名为BOOK的结构体,结构体中定义相关结构成员变量,其中分别表示:Name--书名、Author--作者、Press--出版社、Value--价格、Page--页码。结构体变量book定义为全局数组。
2、信息录入
编写Entry函数,利用形参变量将相关数据(四大名著的书名,作者,出版社,价格,页码)传到结构体数组中,
3、信息修改
编写Modify函数实现信息修改,以输入的i表示需要修改的书的相关内容对应的序号,其中分别表示0-退出 1-书名 2-作者 3-出版社 4-价格 5-页码,利用switch case来实现对应的内容修改,指出修改书籍中的哪一项信息。因为修改后的新信息为char *型,所以在修改price、page时还用到了atoi()函数,将字符数化为整型数。
4、信息展示
编写Show函数实现信息展示,用for循环遍历来展示之前录入在结构体数组中的内容。
5、主函数编写
调用Entry函数,将四大名著的相关信息调入进去,(char*)强制转换,不然编译会出现警告,printf打印相关提示信息。同时调用Show函数实现信息的展示。0,1,2,3表示书本在数组中的位置,即数组下标。
使用while(true),可以实现一直修改书籍信息,除非输入0选项退出,调用Show()函数实现每次修改完的信息展示。
结果展示:
源代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 4 //使用宏定义将MAX的值定义为4
typedef struct BOOK{ //定义一个名为BOOK结构体
char Name[40]; //书名
char Author[40]; //作者
char Press[40]; //出版社
int Value; //价格
int Page; //页码
}S; //结构体别名S
S book[MAX]; //定义一个全局book数组
//信息录入
void Entry(int i,char* name,char* author,char* press,int value,int page)
{
strcpy(book[i].Name,name);
strcpy(book[i].Author,author);
strcpy(book[i].Press,press);
book[i].Value = value;
book[i].Page = page;
}
//修改书的信息
void Modify(int i)
{
char str[40];
int n = 0;
printf("\n请选择要修改的相关信息对应的序号(0-退出 1-书名 2-作者 3-出版社 4-价格 5-页码 ):\n");
scanf("%d",&n);
if(n == 0) return;
else if(n == 1||n ==2||n == 3||n == 4||n == 5){
printf("输入新的信息:");
scanf("%s",str);
switch(n){
case 1:strcpy(book[i].Name,str);break;
case 2:strcpy(book[i].Author,str);break;
case 3:strcpy(book[i].Press,str);break;
case 4:book[i].Value = atoi(str);break;
case 5:book[i].Page = atoi(str);break;
default:printf("输入错误!");break;
}
}
}
//信息展示
void Show()
{
for(int i = 0;i < MAX;i++){
printf("%8s %8s ",book[i].Name,book[i].Author);
printf("%12s %2d %2d\n",book[i].Press,book[i].Value,book[i].Page);
}
}
int main()
{
//调用Entry函数录入相关信息
Entry(0,(char*)"西游记",(char*)"吴承恩",(char*)"人民出版社",100,83892);
Entry(1,(char*)"水浒传",(char*)"施耐庵",(char*)"光明出版社",101,373892);
Entry(2,(char*)"红楼梦",(char*)"曹雪芹",(char*)"清华出版社",102,262003);
Entry(3,(char*)"三国演义",(char*)"罗贯中",(char*)"湖南出版社",103,93003);
printf("当前信息显示:\n");
printf(" 书名 作者 出版社 价格 页码\n");
Show();
int n = 0;
while(1){
printf("请选择修改的书籍序号(0-退出 1-西游记 2-水浒传 3-红楼梦 4-三国演义):\n");
scanf("%d",&n);
if(n == 0) break;
else if(n == 1||n == 2||n == 3||n == 4){
Modify(n-1);
Show();
}
else printf("输入错误!");
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)