下面程序用来生成图书名称,有676种书,每一种书的名字都不一样。
#include<stdio.h>
int main(){
int i,j,n=0;
int name1,name2;
for(i=0;i<=25;i++){
for(j=0;j<=25;j++){
name1=i+65;
name2=j+65;
n=n+1;
if(n%6==0)printf("\n");
printf("%c%cBook ",name1,name2);
}
}
return 0;
}
下面程序用来随机生成数字,共有676个数字,代表上面每一种书的数量。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, n,N;
time_t t;
n=0;
N = 676;
/* 初始化随机数发生器 */
srand((unsigned) time(&t));
/* 输出 1 到 50 之间的 N=676个随机数 */
for( i = 0 ; i < N ; i++ ) {
n=n+1;
printf("%d ", rand() % 50+1);
if(n%6==0)printf("\n");
}
return(0);
}
每次数据都不一样,我只取其中一次生成的数据
接下来我想编写一个程序,能够让这些书和数量能够对应起来,
比如第一本书的名字是AABook,对应的数字是31;
第二本书的名字是ABBook,对应的数字是19……
用户输入书的名字,就能找到对应的书的数量。
(可是我刚刚开始学C语言,编不出来┭┮﹏┭┮)
想过用结构体、数组、文件等等,可是每种方法都没有思路,该怎么编?
你定义一个数据结构,包含书的名称和数量信息,然后用你上面的函数来产生书名和数量就可以了
typedef struct _BOOK
{
char name[20];
int num;
}BOOK;
BOOK book[676];
void create()
{
int i,j;
srand((unsigned)time(NULL));
for(i=0;i<=25;i++){
for(j=0;j<=25;j++)
{
sprintf(book[i*26+j].name,"%d%dBook",i+65,j+65);
book[i*26+j].num = rand() % 50+1;
}
}
int find(char *name)
{
for(int i=0;i<676;i++)
{
if(strcmp(book[i].name,name) == 0)
return book[i].num;
}
return -1;
}
void main()
{
create();
char name[20];
printf("请输入需要查询数量的书名:");
scanf("%s",name);
int num = find(name);
if(num < 0)
printf("查无此书\n");
else
printf("该书数量为%d\n",num);
}
相当于java的hashmap或python的字典,如果数据结构学过哈希表可以仿照前两者写个简单的key-value集合。
最简单的办法你可以用数组存一个name和num对应的结构体,用户输入要查找的书input,通过遍历这个数组比较每一本书的name和input是否相同,相同时返回对应的num,如果找不到就没有这本书。