阅读以下关于C语言编程方面的说明和程序,回答问题1至问题3,将答案填入答题纸的对应栏内。 【说明】 在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中: 程序1是关于文件操作的一段程序。 程序2是某信息管理系统的系

admin2016-11-11  38

问题 阅读以下关于C语言编程方面的说明和程序,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
    在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中:
    程序1是关于文件操作的一段程序。
    程序2是某信息管理系统的系统登录和密码验证程序,规定密码最长为20个字符。首先,打开密码文件sys_code,如果成功,则将文件中的密码信息与用户输入的密码进行比较,若相等,则身份验证通过并进入信息管理系统,否则输出错误信息并退出登录系统。如果打开文件sys_code失败,则由用户输入密码并保存到密码文件sys_code。
【程序1】
    #include
    #include
    Void main{}
{
    FILE*fp;
    char c,fname[20];
    printf("输入文件名:");
    scanf("%s",fname);
    if((fp=fopen(fname,"r“))==__________(1)
    {
    printf("不能打开文件:%s\n",  fname);
    exit(0);
    }
    while(__________(2))    /*检测文件是否结束*/
    {
        C=fgetc(fp);    ’
        if(___________(3))  /*检测文件是否出错*/
        {
          printf("文件读错误\n");
          break;
        }
        putchar(c);
      }
    }
【程序2】
    void password()
    {
      int sign=0;
      sign=checkcode();
      if(__________(1))
      {
        printf("\a\n\n\n\n\n\n\n\n\n\t\t密码错误,请重新登录!");
        getch();
        system("cls");
        exit(1);
      }
    system("cls");
    printf("\a\n\n\n\n\n\n\n\n\n\t\t");
    printf("欢迎登录信息管理系统!\n");
    getch();
    return;
}
int checkcode()
{
    FILE*fp;
    char ch,syspwd[21]="\0";
    char usrpwd[21]="\0";
    int i;
    /*身份验证*/
    if((fp=fopen("sys code","r"))==NULL)
    {
    system("cls");
    printf("please set your identify\n");
    printf("password(<=20):");
    for(i=0;i<20;i++){
      ch=getchar();
       if  (ch==’\r’ ||ch==’\n’)  break;
        __________(2)=ch;
      }
      fp=fopen("sys code","W");
      fputs(syspwd,fp);
      fclose(fp);
      return 0;
      }
    else{
       system("cls");
       fgetS(Syspwd,21,fp);
       fclose(fp);
       printf("please enter your password:");
       for(i=0;i<20;i++){
          ch=getchar();
          if(ch==’\r’||ch==’\n’)break;
    usrpwd=ch;
    }
    if(strcmp(__________(3))!=0)
    {
      return 1;
      }
      return 0;
      }
    }
【问题1】
    变量存储类型是指数据在内存中存储的方法,即确定所定义的变量在内存中的存储位置,也确定了变量的作用域和生存期,内部变量有3种存储类型。假设有一个内部整型变量aa,请按不同存储类型给出相应的变量声明。

选项

答案自动内部变量:int aa;或auto int aa; 寄存器内部变量:register int aa;或register aa; 静态内部变量:static int aa;

解析 本题考查C语言的基本概念和编程方面的基本知识。
    【问题1】
    变量存储类型是指数据在内存中存储的方法,即确定所定义的变量在内存中的存储位置,也确定了变量的作用域和生存期,内部变量:存储类型有3种,分别是:自动内部变量、寄存器内部变量、静态内部变量。
    自动(auto)存储型变量又称自动变量,它是最常用的一种变量的存储类型,在函数内部或复合语句内部定义的局部变量(或称为内部变量)。只要存储类型是缺省的,均为自动变量。它的特点是其生命期域定义它的函数或复合语句的执行期同长,且有效范围仅在定义它的函数或复合语句内。
    寄存器(register)存储型变量一般存储在计算机CPU的通用寄存器中,因而定义的这种类型变量存取速度快,适合于频繁使用的变量,可加快程序的运行速度,由于CPU中通用寄存器的数目有限,且每次可供C语言使用的通用寄存器数更有限,因而在程序中不宜大量使用这种存储类型的变量,以二三个为宜,当然超过可用的寄存器数,也不会出错,编译程序将会将超过可用寄存器数的寄存器型变量当作auto变量处理。一般将最频繁使用的变量定义成寄存器型变量。
    静态(static)存储型变量是分配在存储器中C程序占据的数据段内,对运行的C程序而言,这是一个程序所用的固定内存区域,因而静态变量的存储地址在整个程序的运行执行期间均保留,不会被别的变量占据。静态变量可以定义成全局变量或局部变量,当定义成全局变量时,它在定义它的整个程序执行期间均存在,其原来的存储位置不会变化。当定义成局部变量时,虽然在定义它的函数内或复合语句中有效,但在执行完该函数或复合语句后,静态变量最后取得的值仍然保存,不会消失,因为它所占的存储地址不会被别的变量占用,这样,当程序再次调用该函数或执行该复合语句时,该静态变量当前值就是再次进入该函数或执行该复合语句的初始值。
    假设有一个内部整型变量aa,按不同存储类型的变量声明如下:
    a)自动内部变量:int aa;或auto int aa;
    b)寄存器内部变量:register int aa;或register aa;
    c)静态内部变量:static int aa;
转载请注明原文地址:https://kaotiyun.com/show/XQWZ777K
0

最新回复(0)