| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 485 人关注过本帖
标题:怎样把 c 和 d 定义成全局变量
只看楼主 加入收藏
neversayneve
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-6-15
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
怎样把 c 和 d 定义成全局变量
#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("data.txt","rb");
   if(!fp)
   {
             return ;
   }
   fread(&num,1,sizeof(num),fp); //先读取单词的个数
   for(i=0;i<num;i++)         //【循环结构】
        fread(&s[i],1,sizeof(word),fp); //读取每个单词的信息存放到结构体      
   fclose(fp);//关闭文件
}
void  write_to_file()
//从文件中读取单词的信息
{
   FILE *fp; //【指针的使用】
   int i=0;
   fp=fopen("data.txt","wb+");
   if(!fp)
   {
            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
            return;
        }
   printf("没有这个单词!");
   printf("Enter   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);
                return;
        }
        printf("没有这个单词!");
        printf("Enter   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   Enter 1 返回主菜单");
}
void search_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("英文形式       中文形式         \n");
            printf("%10s%12s\n",s[i].en,s[i].no);
            return;
        }
        printf("没有这个中文形式!");
        printf("Enter   Enter 1 返回主菜单");
}
void zy_infor()
    {   
    char b1[20];
    int z,d=0,c=0;
    int   i;
    i = rand()%num;
    printf("【%s】请输入英文单词:",s[i].no);
    scanf("%s",b1);
    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 返回主菜单",s[i].en,s[i].no);
    }
void yz_infor()
    {
    char b1[20];
    int z,x=41,d=0,c=0;
    int   i;
    i = rand()%num;
    printf("【%s】请输入中文意思:",s[i].en);
    scanf("%s",b1);
    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   Enter 1 返回主菜单");
    }
void show_main_menu()
{
printf("\n");   
printf("                                                          \n");
printf("                                                                    \n");
printf("                                作者 : 20121829  刘畅              \n");
printf("                                                                    \n");
printf("                       1、添加单词信息      2、删除单词信息         \n");
printf("                                                                    \n");
printf("                       3、修改单词信息      4、显示单词信息         \n");
printf("                                                                    \n");
printf("                       5、背诵(中至英)      6、背诵(英至中)          \n");
printf("                                                                    \n");
printf("                       7、查询成绩          8、退出                 \n");
//用户界面
printf("                    请选择您需要的操作序号(1-8)按回车确认:");
}
int main()
{
   int a,choose=0;
   num=0;//初始化单词个数为0
   read_from_file(); //读取文件   
   show_main_menu();
   scanf("%d",&choose);
   printf("\n");
   while(choose!=8)
   {
      switch(choose)// //【选择结构】
       {
         case 1:
              add_infor();break;
         case 2:
              del_infor();break;
         case 3:
              modify_infor();break;
         case 4:
              show_infor();break;
         case 5:
              zy_infor();break;
         case 6:
              yz_infor();break;
         case 7:
              chengji_infor();break;   
       }
      while (a<10000){scanf("%d",&a);
     if(a==0){
        write_to_file();
         add_infor();}
     if(a==1)  
     {printf("\n");
     write_to_file();
      main();
     printf("\n");}
     if(a==2)
     {
    write_to_file();
    zy_infor();}
     if(a==3)
     {
    write_to_file();     
         yz_infor();}
     if(a>3)
     {break;}
   }
     write_to_file();//写入文件//【写入文件】
   }
   printf("               ***************谢谢使用单词背诵系统!再见!***************  \n");   
   getchar();
   return 1;
}
这个程序在计算成绩是结果不正确。。望大神解释一下

[ 本帖最后由 neversayneve 于 2014-6-15 15:46 编辑 ]
搜索更多相关主题的帖子: include 结构体 英文 中文 单词 
2014-06-15 15:29
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:7 
定义在函数体外,最上面。

我不是砖家,要努力成为砖家。
2014-06-15 17:34
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
#include  .....
//以下区域是定义全局变量的位置

int c
int d
...
...

int main()
{
  ....
  ....
  return 0;
}

DO IT YOURSELF !
2014-06-16 09:21
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:7 
在头文件下面定义一个就行了。。。如果其他.c想要使用变量  记得加extern的

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-06-16 09:24
快速回复:怎样把 c 和 d 定义成全局变量
数据加载中...
 
   



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

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