当前位置:首页计算机类软件水平考试中级嵌入式系统设计师->阅读以下关于C语言编程方面说明和程序,回答下列问题。[说明]

阅读以下关于C语言编程方面说明和程序,回答下列问题。

[说明] 在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中: 程序1是关于文件操作一段程序。 程序2是某信息管理系统系统登录和密码验证程序,规定密码最长为20个字符。首先,打开密码文件sys_code,如果成功,则将文件中密码信息与用户输入密码进行比较,若相等,则身份验证通过并进入信息管理系统,否则输出错误信息并退出登录系统。如果打开文件sys_code失败,则由用户输入密码并保存到密码文件sys_code。

[程序1] #include image.pngstdio.h> #include image.pngstdlib.h> Void main15 { FILE *fp; char c, fname [20]; printf("输入文件名:"); Scanf("%S", fname); if((fp=fopen(fname, "r"))==______) { printf("不能打开文件:%sin", fname); exit16; } while (______) /*检测文件是否结束*/ { c=fgetc(fp); if (______) /*检测文件是否出错*/ { printf("文件读错误\n"); break; } putchar(c); } }

[程序2] void password15 { int sign=0; sign=checkcode15; if (______) { printf("\a\n\n\n\n\n\n\n\n\n\t\t密码错误, 请重新登录!"); getch 19; system("cls"); exit20; } system("cls"); printf ("\a\n\n\n\n\n\n\n\n\n\t\t"); printf("欢迎登录信息管理系统!\n"); getch 19; return; } int checkcode 15 { 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(image.png=20): "); for(i=0; iimage.png20; i++){ ch=getchar19; if (ch=='\r' || ch=='\n') break; ______ =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; iimage.png20; i++){ ch=getehar19; if (ch=='\r' ||ch=='\n') break; usrpwd[i]=ch; } if(strcmp(______)!=0) return 1; } return 0; } }

1、变量存储类型是指数据在内存中存储方法,即确定所定义变量在内存中存储位置,也确定了变量作用域和生存期,内部变量有3种存储类型。假设有一个内部整型变量aa,请按不同存储类型给出相应变量声明。

2、王工在编写某嵌入式程序时,用到对文件系统操作,由于要保证系统安全性,要求必须使用文件检测函数feof()和ferror(),完成[程序1]中空。

3、王工根据系统需求编写了[程序2],请填写其中空。

答案:
本题解析:

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

2、(1)NULL或者0 (2)!feof(fp) (3)ferror(fp)

3、(1)sign==1或sign或sign!=0或等价表示形式 (2)syspwd[i]或*(syspwd+i)或等价表示形式 (3)usrpwd, syspwd或syspwd, usrpwd或等价表示形式

1、本题考查C语言基本概念和编程方面基本知识。 变量存储类型是指数据在内存中存储方法,即确定所定义变量在内存中存储位置,也确定了变量作用域和生存期,内部变量存储类型有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;

2、王工在编写某嵌入式程序时,用到对文件系统操作,由于要保证系统安全性,要求必须使用文件检测函数feof()和ferror(),完成[程序1]中空。 feof()函数用于检测文件当前读写位置是否处于文件尾部。只有当当前位置不在文件尾部时,才能从文件读数据。

函数定义:int feof(FILE*fp) 返回值:0或非0 如果fp所指文件位置处于文件尾部,返回非0;否则返回0。在对文件进行读操作前,应用这个函数测试当前位置是否在文件尾部。 文件操作每个函数在执行中都有可能出错,C语言提供了相应标准函数ferror用于检测文件操作是否出现错误。

函数定义:int ferror (FILE*fp) 返回值:0或非0 Ferror函数检查上次对文件fp所进行操作是否成功,如果成功则返回0;否则返回非0。因此,应该及时调用ferror函数检测操作执行情况,以免丢失信息。

[程序1]首先输入文件名,打开这个文件,如果不能打开,则输出“不能打开文件:XX”,程序退出。如果能正常打开该文件,则循环读这个文件,一次读一个字节,读取后,及时检测读操作是否出错,如果出错,报“文件读错误”,退出循环;否则输出该字符。在循环语句判断冬件中,检测文件是否结束,如果结束,则退出循环。

[程序1]需要填空三条完整语句为: (1)if((fp=fopen(fname, "r'))===NULL) (2)while(!feof(fp)) /*检测文件是否结束*/ (3)if(ferror(fp)) /*检测文件是否出错*/

3、[程序2]是某信息管理系统系统登录和密码验证一个简易程序示例,其密码最长为20个字符。首先,打开密码文件sys_code,如果成功,则将文件中密码信息与用户输入密码进行比较,若相等,则身份验证通过并进入信息管理系统,否则输出错误信息并退出登录系统。如果打开文件sys_code失败,则由用户输入密码并保存到密码文件sys_code。

[程序2]需要填空3条完整语句为: (1)if(sign) (2)syspwd[i]=ch; (3)if(strcmp(usrpwd, syspwd)!=0)

更新时间:2022-07-15 02:51
纠错

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)、P(S1)和V(S2)V(S3)
  • B.P(S1)、V (S1)和V(S2)V(S3)
  • C.V(S1)、V(S2)和P(S1)V(S3)
  • D.P(S1)、V(S2)和V(S1)V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.序列图
  • B.状态图
  • C.通信图
  • D.活动图
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.合并分叉
  • B.分支
  • C.合并汇合
  • D.流
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.产甲2套,乙3套
  • B.生产甲1套,乙4套
  • C.生产甲3套,乙4套
  • D.生产甲4套,乙2套
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案