C语言,怎样把两组不相干的数据一一对应起来?

下面程序用来生成图书名称,有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,如果找不到就没有这本书。