求帮忙 有一段c++代码想传承c代码 求帮助啊

C++语言 码拜 9年前 (2016-04-04) 1038次浏览
网上找的程序是c++的 可是我们只学了c语言 想求高手帮忙转换一下
如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define B 1000
typedef struct Book                          /*定义教材结构体*/
{  char num[20];
char name[20];
char author[20];
char press[20];
int count;
float shoujia;
}book[B];
struct Book books[B];
void luru()                             /*录入教材信息*/
{
static int i = 0;
printf(“\n请输入教材名称:”);
scanf(“%s”, books[i].name);
printf(“请输入作者:”);
scanf(“%s”, books[i].author);
printf(“请输入出版社:”);
scanf(“%s”, books[i].press);
printf(“请输入教材册数:”);
scanf(“%d”, &books[i].count);
printf(“请输入编号:”);
scanf(“%s”, books[i].num);
printf(“请输入售价:”);
scanf(“%f”, &books[i].shoujia);
printf(“教材录入结束.\n”);
i++;
}
void tianjia()                                                    /*教材添加*/
{
int i,count;
char name[10];
printf(“\n请输入教材名称:”);
scanf(“%s”,name);
for(i=0;i<1000;i++)
{    if(strcmp(books[i].name,name)==0)
{   printf(“\n输入添加册数:”);
scanf(“%d”, &count);
books[i].count += count;
printf(“\n教材已添加\n”);
break;
}
else
{
printf(“\n无此教材\n”);
break;
}
}
}
void save()
{
int i = 0;
FILE *fp;
fp = fopen(“e:\book.txt”, “wr”);
while(books[i].count > 0)
{
fprintf(fp, “教材名称:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售价:%f\n”, books[i].name, books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
i++;
}
fclose(fp);
}
void chaxun() /*教材查询*/
{   FILE *fp;
int i,flag=0;
int a;
char x[32];
char y[32];
if((fp=fopen(“e:\book.txt”,”r”))==NULL)
{
printf(“此文件无法打开!\n”);
return;
}
printf(“请选择查询方式:1.教材名   2.编号\n”);
scanf(“%d”,&a);
switch(a)
{
case 1: printf(“输入教材名:\n”);scanf(“%s”,x);
for(i=0;i<1000;i++)
if (strcmp(books[i].name,x)==0) /*比较输入名与存储名的字符串大小*/
{printf(“教材名:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售价:%f\n”,books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
flag=1;
}
if(flag==0)
printf(“此教材不存在\n”);
break;
case 2: printf(“输入编号:\n”);scanf(“%s”,y);
for(i=0;i<1000;i++)
if (strcmp(books[i].num,y)==0)
{printf(“教材名称:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售价:%f\n”,books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
flag=1;
}
if(flag==0)
printf(“此教材不存在\n”);
break;
default:
break;
}
fclose(fp);
}
void show() /*显示操作界面*/
{printf(“\n      ******************沈阳航空航天大学教材管理系统********************* “);
printf(“\n      *                         1  录入教材信息                         *”);
printf(“\n      *                         2  查询教材信息                         *”);
printf(“\n      *                         3  更改教材信息                         *”);
printf(“\n      *                         4  保存教材信息                         *”);
printf(“\n      *                         5  退出系统                             *\n”);
printf(“\n 请输入您要选择的操作序号,按回车键确认:”);
}
void main()
{int n;
show();
scanf(“%d”,&n);
while (1)
{switch(n)
{    case 1: luru();  break;
case 2: chaxun(); break;
case 3: tianjia(); break;
case 4: save();  break;
case 5: exit(0); break;
default: break;
}
show();
scanf(“%d”,&n);
}
FILE *fp;
fp = fopen(“e:\book.txt”, “r+”);
if(fp==0)
printf(“无法打开文件\n”);
fclose(fp);
}
解决方案

200

这就是C语言的代码。
把变量定义放在函数的最前面就行了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define B 1000                              
typedef struct Book                          /*定义教材结构体*/
{  
	char num[20];
	char name[20];                                                      
	char author[20];                                                    
	char press[20];                                                   
	int count; 
	float shoujia;
}book[B];
struct Book books[B];  
void luru()                             /*录入教材信息*/
{
	static int i = 0;                                                   
	printf("\n请输入教材名称:");
	scanf("%s", books[i].name);
	printf("请输入作者:");
	scanf("%s", books[i].author);
	printf("请输入出版社:");
	scanf("%s", books[i].press);
	printf("请输入教材册数:");
	scanf("%d", &books[i].count);
	printf("请输入编号:");
	scanf("%s", books[i].num);
	printf("请输入售价:");
	scanf("%f", &books[i].shoujia);
	printf("教材录入结束.\n");
	i++;
}
void tianjia()                                                    /*教材添加*/
{   
	int i,count;
	char name[10];
	printf("\n请输入教材名称:");
	scanf("%s",name);
	for(i=0;i<1000;i++)
	{    if(strcmp(books[i].name,name)==0)
	{   printf("\n输入添加册数:");
	scanf("%d", &count);
	books[i].count += count;                                               
	printf("\n教材已添加\n");
	break;
	}
	else
	{
		printf("\n无此教材\n");
		break;
	}
	}
}
void save()                                      
{
	int i = 0;                                                    
	FILE *fp;
	fp = fopen("e:\book.txt", "wr");              
	while(books[i].count > 0)                                
	{
		fprintf(fp, "教材名称:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售价:%f\n", books[i].name, books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);        
		i++;                                                                
	}
	fclose(fp);                                                  
}
void chaxun() /*教材查询*/
{   
	FILE *fp;
	int i,flag=0;                                                 
	int a;                                                           
	char x[32];                                                    
	char y[32];
	if((fp=fopen("e:\book.txt","r"))==NULL)
	{
		printf("此文件无法打开!\n");
		return;
	}
	printf("请选择查询方式:1.教材名   2.编号\n");
	scanf("%d",&a);
	switch(a)                                                 
	{
	case 1: printf("输入教材名:\n");scanf("%s",x);
		for(i=0;i<1000;i++) 
			if (strcmp(books[i].name,x)==0) /*比较输入名与存储名的字符串大小*/
			{printf("教材名:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售价:%f\n",books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
		flag=1;
		}
		if(flag==0) 
			printf("此教材不存在\n");
		break;
	case 2: printf("输入编号:\n");scanf("%s",y);
		for(i=0;i<1000;i++)
			if (strcmp(books[i].num,y)==0)
			{printf("教材名称:%s 教材作者:%s 出版社:%s 册数:%d 编号:%s 售价:%f\n",books[i].name,books[i].author,books[i].press,books[i].count,books[i].num,books[i].shoujia);
		flag=1;
		}
		if(flag==0) 
			printf("此教材不存在\n");
		break;
	default:
		break;
	}
	fclose(fp);
}
void show() /*显示操作界面*/
{
	printf("\n      ******************沈阳航空航天大学教材管理系统********************* ");
	printf("\n      *                         1  录入教材信息                         *");
	printf("\n      *                         2  查询教材信息                         *");
	printf("\n      *                         3  更改教材信息                         *");
	printf("\n      *                         4  保存教材信息                         *");
	printf("\n      *                         5  退出系统                             *\n");
	printf("\n 请输入您要选择的操作序号,按回车键确认:");
}
void main()
{
	int n;
	FILE *fp;
	show();                                                  
	scanf("%d",&n);
	while (1)
	{
		switch(n)                               
		{    
		case 1: luru();  break;
		case 2: chaxun(); break;
		case 3: tianjia();	break;
		case 4: save();  break;
		case 5: exit(0); break;
		default: break;
		}
		show();
		scanf("%d",&n);                                    
	}
	fp = fopen("e:\book.txt", "r+");            
	if(fp==0)                                   
		printf("无法打开文件\n");
	fclose(fp);                               
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求帮忙 有一段c++代码想传承c代码 求帮助啊
喜欢 (0)
[1034331897@qq.com]
分享 (0)