| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1153 人关注过本帖
标题:求大神这个程序有个问题不知如何解决。
取消只看楼主 加入收藏
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
结帖率:78.57%
收藏
已结贴  问题点数:30 回复次数:17 
求大神这个程序有个问题不知如何解决。
为防止程序外露,请留下你的ID,我发短消息给你。完成后给分。
搜索更多相关主题的帖子: 如何 
2012-11-18 12:16
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
我是随便说说,增加关注度的。
2012-11-18 17:40
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_CHAR  20  // 最大字符
#define MAX_NUM  100  // 单词的最大个数
typedef struct word
//单词的结构体
{
   char  en[MAX_CHAR]; // 英文形式
   char  no[MAX_CHAR];   //中文形式
}word;

word  s[MAX_NUM]; //单词数组
int   num;           //单词个数
void  read_from_file()
//从文件中读取单词的信息
{
   FILE *fp;
   int i=0;
   fp=fopen("test.txt","rb");
   if(!fp)
   {
       printf("打开文件test.txt失败!\n");
       return ;
   }
   fread(&num,1,sizeof(num),fp); //先读取单词的个数
   for(i=0;i<num;i++)
        fread(&s[i],1,sizeof(word),fp); //读取每个单词的信息存放到结构体      
   fclose(fp);//关闭文件
}
static int c=0,d=0;
void  write_to_file()
//从文件中读取单词的信息
{
   FILE *fp;
   int i=0;
   fp=fopen("test.txt","wb+");
   if(!fp)
   {
       printf("打开文件test.txt失败!\n");
       return ;
   }
   fwrite(&num,1,sizeof(num),fp); //先写入单词的个数
   for(i=0;i<num;i++)
    fwrite(&s[i],1,sizeof(word),fp); //写入每个单词的信息
    fclose(fp);//关闭文件
}




void add_infor()          //单词添加
{  
    int a,i=num;
    printf("请输入单词的英文形式:");
    scanf("%s",s[i].en);
   
    printf("请输入单词的中文形式:");
    scanf("%s",s[i].no);
    num++;
    printf("您输入的信息为: 英文: %s 中文: %s \n  Enter 0 继续输入;  Enter 1 返回主菜单",s[i].en,s[i].no);
}

void del_infor()//删除单词信息
{
    int i=0,j=0;
    char  no[MAX_CHAR];   //中文形式
      printf("请输入您要删除的单词(中文):");   
    scanf("%s",no);
    for(i=0;i<num;i++)//先找到该中文形式对应的序号
        if(strcmp(s[i].no,no)==0)
        {
            for(j=i;j<num-1;j++)
                 s[j]=s[j+1];
            num--; //数量减少 1
            puts("删除成功!");
        printf("Enter 4 继续删除;  Enter 1 返回主菜单");
            return;
        }
   printf("没有找到对应的单词!\n");
   printf("Enter 4 继续删除;  Enter 1 返回主菜单");
}

void modify_infor()//修改单词信息
{
    int i=0;
    char  no[MAX_CHAR];   //中文形式
      printf("请输入你要修改的单词中文形式:");   
    scanf("%s",no);
    for(i=0;i<num;i++)//先找到该中文形式对应的序号
        if(strcmp(s[i].no,no)==0)
        {
                printf("请输入单词正确的英文形式:");
                scanf("%s",s[i].en);
                printf("请输入此单词正确的的中文形式:");
                scanf("%s",s[i].no);
             printf("Enter 5 继续修改  Enter 1 返回主菜单");
                return;
        }
        printf("没有这个单词!");
        printf("Enter5 继续修改  Enter 1 返回主菜单");
}
void show_infor()
{int  i=0;
  printf("单词:    英文       中文         \n");
  for(i=0;i<num;i++)
       printf("   %10s%10s\n",s[i].en,s[i].no);
printf("       Enter 1 返回主菜单");
}
void search_infor()//查询单词
{   
    int i=0;
    char  no[MAX_CHAR];   //中文形式
    system("cls");//清屏
      printf("请输入你要查询的单词中文形式:");   
    scanf("%s",no);
    for(i=0;i<num;i++)//先找到该中文形式对应的序号
        if(strcmp(s[i].no,no)==0)
        {        
            printf("英文形式       中文形式         \n");
            printf("%10s%12s\n",s[i].en,s[i].no);
        printf("Enter 6 继续查询;  Enter 1 返回主菜单\n");
            return;
        }
        printf("没有这个中文形式!\n");
        printf("Enter 6 继续查询   Enter 1 返回主菜单");
}
void CtoE_infor()
    {   
    char b1[20];
    int z;
    int   i;
    i = rand()%num;
    printf("【%s】请输入英文单词:",s[i].no);
    scanf("%s",b1);
system("cls");//清屏
    for(z=0;strcmp(b1,s[i].en)!=0;z=z)
    {printf("抱歉,你答错了,请重新输入:");scanf("%s",b1);c=c+1;}
    printf("\n恭喜你,回答正确,加10分!\n\n");d=d+1;
    printf("Enter 2 继续输入  Enter 1 返回主菜单\n",s[i].en,s[i].no);
    }
void EtoC_infor()
    {
    char b1[20];
    int z,x=41;
    int   i;
    i = rand()%num;
    printf("【%s】请输入中文意思:",s[i].en);
    scanf("%s",b1);
    system("cls");//清屏
    for(z=0;strcmp(b1,s[i].no)!=0;z=z)
    {printf("抱歉,你答错了,请重新输入:");scanf("%s",b1);c=c+1;}
    printf("\n恭喜你,回答正确,加10分!\n\n");d=d+1;
    printf("\n  Enter 3 继续输入  Enter 1 返回主菜单",s[i].en,s[i].no);
    }
void chengji_infor()
    {
    int c,d;
    printf("\n    共计输入错误:%d次    **每次扣10分**\n",c);
    printf("    共计输入正确:%d次    **每次加10分**\n",d);
    printf("    你的总得分为:%d分\n\n",10*d-10*c);
    printf("          Enter 1 返回主菜单");
    }



void show_main_menu()
{
printf("\n");
printf("                                                                         \n");
printf("           ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※    \n");
printf("                                                                         \n");
printf("                                                               \n");
printf("                                                                         \n");
printf("                   1、背诵(中to英)      2、背诵(英to中)                  \n");
printf("                                                                         \n");      
printf("                   3、添加单词信息      4、删除单词信息                  \n");
printf("                                                                         \n");
printf("                   5、修改单词信息      6、显示单词信息                  \n");
printf("                                                                         \n");
printf("                   7、查询成绩          8、查询单词信息                  \n");
printf("                                                                         \n");
printf("                   9、退出                                               \n");
printf("                                                                         \n");
printf("           ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ \n");  //用户界面
printf("\n");
printf("                    选择您需要的操作序号(1-9),按回车确认:");
}



int main()
{
   int m=0;
   char a;
   num=0;//初始化单词个数为0
   read_from_file(); //读取文件   
   show_main_menu();
   scanf("%d",&m);
   printf("\n");
   while(m!=9)
   {
      switch(m)
       {
         case 1:
              CtoE_infor();break;
         case 2:
              EtoC_infor();break;
         case 3:
              add_infor();break;
         case 4:
              del_infor();break;
         case 5:
              modify_infor();break;
         case 6:
              show_infor();break;
         case 7:
              chengji_infor();break;
         case 8:
              search_infor();break;
        case  9:return 0;
       }
      while (a<10000){scanf("%d",&a);
     if(a==0){
        write_to_file();
         add_infor();}
     if(a==1)  
     {printf("\n");
 system("cls");//清屏
     write_to_file();
      main();
     printf("\n");}
     if(a==2)
     {
    write_to_file();
       CtoE_infor();}
     if(a==3)
     {
    write_to_file();     
         EtoC_infor();}
     if(a==4)
     {
    write_to_file();     
         del_infor();}
     if(a==5)
     {
    write_to_file();     
        modify_infor();}
    if(a==6)
     {
    write_to_file();
    search_infor();}
     else
     {break;}
   }
     write_to_file();//写入文件
   }
   printf("         ***************谢谢使用背单词系统!欢迎再次使用!***************  \n");   
   getchar();
   return 1;
}
2012-11-18 20:52
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
其实就是这个程序,有些地方不会弄了,比如说成绩就不对
2012-11-18 20:53
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
还有输入错误再输入正确的后,自动进入下一个,你不能选择了。
2012-11-18 20:54
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
竟然没有一个人会,好吧。我太高估了。
2012-11-19 22:08
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
希望版主TongDeng来看看,如何?
2012-11-19 22:58
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
就剩下一个没解决了,大家努力吧。(输入两次就不能选择了)
2012-11-20 12:57
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
回复 16楼 TonyDeng
void EtoC_infor()
    {
    char b1[20];
    int z,x=41;
    int   i;
    i = rand()%num;
    printf("【%s】请输入中文意思:",s[i].en);
    scanf("%s",b1);
    system("cls");//清屏
    for(z=0;strcmp(b1,s[i].no)!=0;z=z)
    {printf("抱歉,你答错了,请重新输入:");scanf("%s",b1);c=c+1;}
    printf("\n恭喜你,回答正确,加10分!\n\n");d=d+1;
    printf("\n  Enter 3 继续输入  Enter 1 返回主菜单",s[i].en,s[i].no);
    }
这个地方。
2012-11-20 21:58
qishi123
Rank: 1
等 级:新手上路
帖 子:78
专家分:9
注 册:2012-9-5
收藏
得分:0 
希望大家看看,有没有解决方案呀,我改了好几个小时了,还不行,求指导。
2012-11-20 23:05
快速回复:求大神这个程序有个问题不知如何解决。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017288 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved