icoding测试代码——实验五

本代码适用于:

 

 icoding的实验五并没有一个测试代码,其都是直接编写一个函数的形式,现在把实验五的原型框架代码分享。

实验五为改造一个具体的程序

要求:修改1invertory.c程序,使 inventory 和 num_parts 为 main 函数的局部变量。

每个题目仅仅需要修改一个函数即可

书本原始代码(即需要改造的代码)如下:

/*
*@书本原始代码
*/
#include <stdio.h>
#include <string.h> 
#include <ctype.h>
#include <stdbool.h> 	
//#include <time.h>
#include <stdlib.h>

#define NAME_LEN 25				    //单词的最长长度 
#define MAX_PARTS 100				//最多元件数 

struct part{                         //定义一个零件数据库结构体,结构数组形式(元素为结构体的数组)
    int number;                      //编号
    char name[NAME_LEN + 1];         //零件名称
    int on_hand;                     //现有数量
}inventory[MAX_PARTS];

int num_parts = 0;                  //当前数组中零件的数量

/* 函数声明*/

int read_line(char str[], int n);	//读入单词到数组

int find_part(int number);			//根据编号查找数组中零件信息
void insert(void);  	            // 增加新零件
void search(void);				    // 搜索零件
void update(void);				    // 跟新零件信息
void print(void);				    // 显示零件信息

/*主函数*/
int main(void)		 
{
	char code;

	for(;;)
	{
		printf("Enter operation code: ");
        scanf(" %c", &code); 
        while(getchar() != '\n')   
            ;
        switch(code)
        {
            case 'i' : insert(); break;
            case 's' : search(); break;
            case 'u' : update(); break;
            case 'p' : print(); break;
            case 'q' : return 0;
            default: printf("Illegal code \n");
        }
        printf("\n");
	 } 
				
	system("pause");	
	return 0;
	
}

int find_part(int number)			
{
    int i;
    for(i =0; i < num_parts; i++)   
        if(inventory[i].number == number)
            return i;   
    
    return -1;          

}


void insert(void)  	            
{
    int part_number;

    if(num_parts == MAX_PARTS)
        printf("Database is full; can't add more parts.\n");

    printf("Enter part number: ");
    scanf("%d", &part_number);

    if((find_part(part_number)) >= 0)
    {    
        printf("Part already exists.\n");
        return;
    }

    inventory[num_parts].number = part_number;
    printf("Enter part name: ");
    read_line(inventory[num_parts].name, NAME_LEN);
    printf("Enter quantity on hand: ");
    scanf("%d",&inventory[num_parts].on_hand);
    
    num_parts++; 
}


void search(void)				    
{
    int i, number;

    printf("Enter part number : ");
    scanf("%d",&number);
    i = find_part(number);
    if(i >= 0)
    {
        printf("Part name: %s\n", inventory[i].name);
        printf("Quantity on hand: %d\n", inventory[i].on_hand);
    }
    else
    {
        printf("Part not found.\n");
    } 
}


void update(void)				    
{
    int i, number, change;

    printf("Enter part number: ");
    scanf("%d", &number);
    i = find_part(number);
    if(i >= 0)
    {
        printf("Enter change in quantity on hand: ");
        scanf("%d",&change);
        inventory[i].on_hand += change;
    }
    else
    {
        printf("Part not found.\n");
    }  
}


void print(void)				    
{
    int i;
    printf("Part Number    Part Name                Quantity on Hand\n");
    for(i = 0; i < num_parts; i++)
    {
        printf("%7d        %-25s%11d\n", inventory[i].number, inventory[i].name, inventory[i].on_hand);
    }
}


/*读入单词到数组*/
int read_line(char str[], int n)	
{
	int ch, i = 0;
	
	while(isspace(ch = getchar()))	
		;	
	while(ch != '\n' && ch != EOF )		
	{
		if(i < n)
			str[i++] = ch;			 
		ch = getchar();	
	}
	str[i] = '\0';					
    return i;
}


待更新的程序框架

/*
*@待更新框架
*/
#include <stdio.h>
#include <string.h> 
#include <ctype.h>
#include <stdbool.h> 	
//#include <time.h>
#include <stdlib.h>

#define NAME_LEN 25				    //单词的最长长度 
#define MAX_PARTS 100				//最多元件数 

struct part{                         //定义一个零件数据库结构体,结构数组形式(元素为结构体的数组)
    int number;                      //编号
    char name[NAME_LEN + 1];         //零件名称
    int on_hand;                     //现有数量
}inventory[MAX_PARTS];

int num_parts = 0;                  //当前数组中零件的数量

/* 函数声明*/

int find_part(int number, const struct part inv[], int np);//根据编号查找数组中零件信息
void insert(struct part inv[], int *np);// 增加新零件
void search(const struct part inv[], int np);// 搜索零件
void update(struct part inv[], int np);//更新零件信息
void print(const struct part inv[], int np); // 显示零件信息

int read_line(char str[], int n);	//读入单词到数组
		
/*读入单词到数组*/
int read_line(char str[], int n)	
{
	int ch, i = 0;
	
	while(isspace(ch = getchar()))	
		;	
	while(ch != '\n' && ch != EOF )		
	{
		if(i < n)
			str[i++] = ch;			 
		ch = getchar();	
	}
	str[i] = '\0';					
    return i;
}

/*主函数*/
int main()		 
{
	//TODO
	
}

int find_part(int number, const struct part inv[], int np)
{
    //TODO
    
}



void insert(struct part inv[], int *np)
{
    //TODO
    
}


void search(const struct part inv[], int np)
{
    //TODO
    
}


void update(struct part inv[], int np)
{
    //TODO
    
}


void print(const struct part inv[], int np)
{
    //TODO
    
}












本题目为一个系列题目,目的是考察大家的函数基本功底。使 inventory 和 num_parts 为 main 函数的局部变量。要理解局部变量的意思和意义。大家写程序的时候也尽量不要用全局变量,用局部变量。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谨慎谦虚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值