全国计算机等级考试二级C语言程序设计
C语言全国计算机二级等级考试教程第一二章(章节带习题)
![C语言全国计算机二级等级考试教程第一二章(章节带习题)](https://img.taocdn.com/s3/m/06a3847afc4ffe473268ab28.png)
2.2 标识符、常量和变量
2.2.3 符号常量
在C语言中,可以用一个符号名来代表一个常量,称为符号常
量。但是这个符号名必须在程序中用(#define)进行特别的“
指定"。 例2.2 计算圆面积和周长,此程序中将如何教大家使用符号常量。
#include “stdio.h” /*包含头文件*/
#define PI 3.14159 /*定义符号常量,符号常量名为PI,用PI来代表3.14159*/
main()
/*主函数,程序的入口*/
{double r,s,l;
/*声明部分,定义了3实型个变量*/
r
r=5.0;
/*给变量r赋值*/
函 s=PI*r*r;
数 体
l=2*PI*r;
/*计算圆的面积*/ /*计算圆的周长*/
s
printf(“s=%f,l=%f\n”,s,l/)*;分别圆的面积和周长*/
/*给变量b赋值*/
数 体
area=a*b;
/*将a*b的结果赋值给变量area*/
printf(“a=%f,b=%f,area=%f\n”,a,b,area/)*;分别输出矩形的两条边长和面积*/
1.2
}
3.6
a=1.200000,b=3.600000,area=4.320000
4.32
注意:
1. C程序由函数组成,一个程序必须有一个且只能有一个主函数(main),C程
a
b
1.5000002.500000 2.5000003.500000
a b
内存空间
2.在程序中,声明变量就是在计算机内存中申请了某个内存单元。对变量 进行赋值,实质上就是把数据存入该变量所代表的存储单元中。
计算机等级考试二级c语言程序设计
![计算机等级考试二级c语言程序设计](https://img.taocdn.com/s3/m/18310d010975f46526d3e197.png)
【答案】
A
【解析】
fgets函数功能是从f所指文件中读入n-1个字符放入s为起始地址的空间内,并在尾端自动加一个结束标志“\0”。同时将读/写位 置指针向前移动字符串长度个字节。在读出n-1个字符之前,如遇到了换行符或EO F,则读出结束,A 项正确。B项中“读取长 度为n”错误。C项与D项中“读取n/n-1个字符串”错误,读取的是n-1个字符。答案选择A 选项。
C. 可以取一个表达式的地址赋值给同类型的指针变量
D. 可以取一个指针变量的地址赋值给基类型相同的指针变量
【答案】
A
【解析】 常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任
何意义,C语言也不允许这样做,编译会出错,B项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量 的区域,对这块地址进行操作也是没有意义的,C语言不允许这样做,编译会出错,C项错误;可以取一个指针变量的地址, 但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D项错误。答案选择A 选项。
程序运行后的输出结果是( )。
A. 4,5,3,4 B. 4,3,2,1 C. 4,5,3,3 D. 4,5,1,3
【答案】
A
【解析】
对于字符数组a,含有4个元素,所以strlen为4,而sizeof包括最后隐藏的\0,故sizeof有5个。对于字符串b,strlen为3大家都 能理解,关键是sizeof,这里的sizeof不再是指数组的长度,因为b是一个地址值,整型数据,所以占用了4个字节,这个题目 是一个难点,请大家谨记。答案选择A 选项。
全国计算机等级考试《二级C语言程序设计》模拟试卷二
![全国计算机等级考试《二级C语言程序设计》模拟试卷二](https://img.taocdn.com/s3/m/2ad0294400f69e3143323968011ca300a7c3f65c.png)
全国计算机等级考试《二级C语言程序设计》模拟试卷二[单选题]1.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是((江南博哥))。
A.外模式B.内模式C.概念模式D.逻辑模式参考答案:B参考解析:数据库管理系统的三级模式包括:①外模式,也称子模式、用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图;②模式,也称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和;③内模式,也称存储模式、物理模式,是指数据在数据库系统内的存储介质上的表示,是对数据的物理结构和存取方式的描述。
答案选择B选项。
[单选题]4.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制定软件集成测试计划参考答案:D参考解析:需求分析阶段的工作主要包括4个方面:①需求获取,其目的是确定对目标系统的各方面需求;②需求分析,对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型;③编写文档,编写需求规格说明书,编写初步用户使用手册;④确认测试计划,修改完善软件开发计划,需求评审。
制定软件集成测试计划属于概要设计阶段的任务。
答案选择D选项。
[单选题]5.结构化程序的三种基本控制结构是()。
A.顺序、选择和重复(循环)B.过程、子程序和分程序C.顺序、选择和调用D.调用、返回和转移参考答案:A参考解析:结构化程序设计中三种基本控制结构为顺序、选择和重复(循环)。
答案选择A选项。
[单选题]6.构成计算机软件的是()。
A.源代码B.程序和数据C.程序和文档D.程序、数据及相关文档参考答案:D参考解析:计算机软件的定义为:与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
答案选择D选项。
[单选题]7.在黑盒测试方法中,设计测试用例的主要根据是()。
A.程序内部逻辑B.程序外部功能C.程序数据结构D.程序流程图参考答案:B参考解析:黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能规格说明。
全国计算机等级考试二级-基础知识和C语言程序设计 模拟考试试卷及答案(四)
![全国计算机等级考试二级-基础知识和C语言程序设计 模拟考试试卷及答案(四)](https://img.taocdn.com/s3/m/024eb459af1ffc4ffe47acac.png)
全国计算机等级考试二级-基础知识和C语言程序设计模拟考试试卷及答案(四)一、选择题(1)通常所说的主机主要包括A)CPU B)CPU和内存C)CPU、内存与外存 D)CPU、内存与硬盘(2)在微机系统中,最基本的输入输出模块BIOS存放在A)RAM中 B)ROM中 C)硬盘中 D)寄存器中(3)一个24*24点阵的汉字字形信息所占的字节数为A)2 B)24 C)32 D)72(4)bit的意思是A)字 B)字长 C)字节 D)二进制位(5)某学校的工资管理程序属于A)系统程序 B)应用程序C)工具软件 D)文字处理软件(6)与十六进制数BB等值的十进制数是A)187 B)188 C)185 D)186(7) 设一张软盘已染上病毒,能清除病毒的措施是A)删除该软盘上的所有文件 B)格式化该软盘C)删除该软盘上的所有可执行文件 C)删除该软盘上的所有批处理文件(8)一张3.5英寸双面高密度软盘片的容量为A)360KB B)720KB C)1.44MB D)1.2MB(9)与二进制小数0.1等值的十六进制小数为A)0.1 B)0.2 C)0.4 D)0.8(10)DOS系统的热启动与冷启动的不同之处为热启动时A)不检测键盘、处设接口与内存 B)不提示用户输入日期与时间C)不用装入文件 D)不能从软盘启动(11)为了将磁盘上的文件K1,K2,K3,依次连接在文件K4的后面,应使用命令A)COPY K1+K2+K3 K4 B)COPY K1+K2+K3+K4C)COPY K1+K2+K3+K4 K4 D)COPY K4+K1+K2+K3(12)下列文件名中可以作为批处理文件名的是A)AUTOEXC.C B)AUTOEXECC)ATX.BAT D)AUTO.TXT(13)要打印输出当前盘的根目录下所有文件与子目录清单,应使用命令A)DIR \ PRN B)TYPE \ PRNC)DIR PRN C)TYPE PRN(14)设可执行文件 ABC.EXE 所需要的本该由键盘输入的数据已经按格式存放在文件XYZ 中,并要求执行结果放在文件 XYZ 中输入数据的后面. 下列命令中正确的是A) ABC XYZ B) ABC XYZC) ABC <XYZ(15)设当前盘中某一目录路径为 \A\B\C,当前目录为\A.下列命令中肯定出错的是A)MD \A\C B) CD C) MD \A\B\A D) MD \A\B(16)设 A 盘的目录结构如下:根目录│┌─────┬┴──┬───┬───┬────┐│ │ │ │ │ │ABC D1子目录 DX.C Q.DAT D2子目录A.FOR│ │┌────┬─┴──┬───┐┌───┬───┐│ │ │ │ │ │ │B.PAS D3子目录 Y.BAS A.C A1.C D4子目录XYZ.C│┌────┬────┬────┐│ │ │ │QR.C NA.C A.TXT B.C如果当前盘为 C 盘,A 盘的当前目录为\D2,则下列对 A 盘上文件QR.C 的指定中,合法的是A)\D2\D4\QR.C B)D4\QR.CC)A:D4\QR.C D)A:D2\D4\QR.C(17)下列DOS命令中,有错误的是A)TYPE AAB.FORCON B)TYPE ?AB.FORC)COPY *.C CON D)COPY CON PRN(18)设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C 盘根目录下的文件XYZ.TXT的后面,正确的命令是A)COPY C:\XYZ.TXT+AB1.TXTB)COPY AB1.TXTC:\XYZ.TXTC)TYPE AB1.TXTC:\XYZ.TXTD)AB1.TXT+C:\XYZ.TXTC:\XYZ.TXT(19)下列命令中合法的是A)DISKCOPY A: A: B)DISKCOPY A: C:C)DISKCOPY C: A: D)DISKCOPY C: D:(20)设当前盘中某一目录路径为\A\B\C\D\XU,当前目录为\A.要将根目录下扩展名为.C的所有文件复制到当前目录下,并将扩展名改为.FOR,应使用命令A)COPY \*.C *.FOR B)COPY *.C \A\*.FORC)COPY *.FOR \*.C D)COPY \A\*.C *.FOR(21)下列不正确的转义字符是A)'\\' B)'\" C)'074' D)'\0'(22)若有以下定义:char a; int b;float c; double d;则表达式a*b+d-c值的类型为A) float B) int C) char D) double(23)表示关系x<=y<=z的c语言表达式为A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z)C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z)(24)设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果为A) 4 B) 3 C) 2 D) 1(25)设x为int型变量,则执行以下语句后,x的值为x=10; x+=x-=x-x;A) 10 B) 20 C) 40 D) 30(26)下列可作为C语言赋值语句的是A) x=3,y=5 B) a=b=6C) i--; D) y=int(x);(27)设x,y,z,t均为int型变量,则执行以下语句后,t的值为x=y=z=1;t=++x||++y&&++z;A) 不定值 B) 2 C) 1 D) 0(28)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf("i=%d,f=%f",&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为A) 100765.12 B) i=100,f=765.12C) 100765.12 D) x=100y=765.12(29)设x和y均为int型变量,则执行下的循环后,y值为for(y=1,x=1;y<=50;y++){ if(x=10))break;if (x%2==1){ x+=5; continue;}x-=3;}A) 2 B) 4 C) 6 D) 8(30)给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为A) 数组X和数组Y等价 B) 数组x和数组Y的长度相同C) 数组X的长度大于数组Y的长度 D) 数组X的长度小于数组Y的长度(31)以下叙述中不正确的是A) 在不同的函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量只在本函数范围内有效D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(32)假定a和b为int型变量,则执行以下语句后b的值为a=1; b=10;do{ b-=a; a++; }while (b--<0);A) 9 B) -2 C) -1 D) 8(33)设j为int型变量,则下面for循环语句的执行结果是for( j=10;j3;j--){ if(j%3)j--;--j; --j;printf("%d ",j);}A) 6 3 B) 7 4 C) 6 2 D) 7 3(34)设有以下宏定义:#define N 3#define Y(n) ( (N+1)*n)则执行语句:z=2 * (N+Y(5+1));后,z的值为A) 出错 B) 42 C) 48 D)54(35)设P1和P2是指向同一个int型一维数组的指针变量,k为int 型变量,则不能正确执行的语句是A)k=*P1+*P2; B)p2=k;C)P1=P2; D)K=*P1 * (*P2);(36)设有如下定义:int arr[]={6,7,8,9,10};int * ptr;则下列程序段的输出结果为ptr=arr;* (ptr+2)+=2;printf ("%d,%d\n",*ptr,*(ptr+2));A)8,10 B)6,8 C)7,9 D)6,10(37)以下程序的输出结果是main(){ int i,k,a[10],p[3]:K=5;for (i=0;i<10;i++) a[i]=i;for (i=0;i<3;i++) p[i]=a[i*(i+1)];for (i=0;i<3;i++) k+=p[i]*2;printf("%d\n",k);}A) 20 B) 21 C) 22 D)23(38)执行以下程序段后,m的值为int a[2][3]={ {1,2,3},{4,5,6} };int m,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A) 15 B) 14 C) 13 D) 12(39)有以下程序段char arr[]="ABCDE";char *ptr;for(ptr=arr;ptr<arr+5;ptr++)printf("%s\n",ptr);输出结果是A) ABCD B) A C) E D)ABCDEB D BCDEC C CDED B DEE A E(40)有以下程序main(){ int x,i;for(i=1;i<=50;i++){ x=i;if(++x%2==0)if(x%3==0)if(x%7==0)printf("%d,i);}}输出结果是A) 28 B) 27 C) 42 D) 41(41)有下列程序#include<stdio.hmain(){ union{ int k;char i[2];} *s,a;s=&a;s-i[0]=0x39; s-i[1]=0x38;printf("%x\n",s-k);}输出结果是A) 3839 B) 3938 C) 380039 D) 390038(42)有以下程序#include <stdio.hmain(){ int a,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}输出结果是A) 2,1 B) 3,2 C) 4,3 D) 2,-1(43)设有如下定义:int (*ptr)*();则以下叙述中正确的是A) ptr是指向一维组数的指针变量B) ptr是指向int型数据的指针变量C) ptr是指向函数的指针,该函数返回一个int型数据D) ptr是一个函数名,该函数的返回值是指向int型数据的指针(44)有以下程序#include <stdio.hstruct stu{ int num;char name[10];int age;};void fun(struct stu *p){ printf("%s\n",(*p).name); }main(){struct stu students[3]={ {9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18} };fun(students+2);}输出结果是A) Zhang B)Zhao C) Wang D) 18(45)设有以下说明和定义:typedef union{ long i; int k[5]; char c; }DATE; struct date{ int cat; DATE cow; double dog; } too;DATE max;则下列语句的执行结果是printf ("%d",sizeof (struct date ) +sizeof(max));A) 26 B) 30 C) 18 D) 8(46)有以下程序main(){ char a[]="programming", b[]="language";char *p1,*p2;int i;p1=a; p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));}输出结果是A) gm B) rg C) or D) ga(47)有以下程序viod fun (int a,int b,int c){ a=456; b=567; c=678;}main(){ int x=10, y=20,z=30;fun (x,y,z);printf("%d,/%d\n",c,d);}输出结果是A)30,20,10 B)10,20,30C)456,567,678 D)678,567,456(48)有以下程序int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A)50,30 B)30,J50 C)80,-20 D)80,20(49)有以下程序main(){ int i, j;for(j=10;j<11;j++){ for(i=9;i<j; i++)if (!(j%i))break;if(i=j-1)printf("%d",j);}}输出结果是A) 11 B) 10 C) 9 D) 10 11(50)有以下程序#include "atdio.h"int abc(int u,intv);main (){ int a=24,b=16,c;c=abc(a,b);printf('%d\n",c);}int abc(int u,int v){ int w;while(v){ w=u%v; u=v; v=w }return u;}输出结果是A) 6 B) 7 C) 8 D) 9二、填空题(1)自动批自理文件名为_______.(2)DOS命令分为内部命令与外部命令,COMP命令属于_______命令.(3)设当前为C盘,现要用一条DOS命令在打印机上输出A盘当前目录下所有扩展名为.DAT的文件内容.这一条DOS命令应为__ _ (4)要将当前盘当前目录下的子目录XYZ中所有扩展名为.BAK 的文件名改成扩展名为.FOR,应使用的DOS命令为__ _(5)设DOS外部命令文件所在的路径均已用PATH命令打通.现要将当前盘当前目录下的文件WST.TXT设置为只读属性,应使用的DOS命令为___(6)设x和y均为int型变量,且x=1,y=2,则以下表达式的值为___ 1.0+x/y(7)设i,j,k均为int型变量,则执行完下面的for循环后,k的值为___for(i=0,j=10;i<=j;i++,j--) k=i+j;(8)设有以下定义的语句:int a[3][2]={10,20,30,40,50,60}, (*p)[2];p=a;则 *(*(p+2)+1)值为___(9)以下程序的输出结果是___#include <stdio.hint fun(int x,int y){ static int m=0,i=2;i+=m+1;m=i+x+y;return m}main(){ int j=4,m=1,k;k=fun(j,m); printf("%d,",k);k=fun(j,m); printf("%d\n",k);}(10)函数fun的功能是:使一个字符串按逆序存放,请填空void fun (char str[]){ char m; int i,j;for(i=0,j=strlen(str);i<____;i++,j--){ m=str[i];str[i]=__ _;str[j-1]=m;}printf("%s\n",str);}(11)以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空.#include"ctype.h"#include"stdio.h"main(){ char str[81],*sptr;int i;for(i=0;i<80;i++){ str[i]=getchar();if(str[i]=='\n') break;}str[i]=____;sptr=str;while(*sptr) putchar(*sptr____(13));}(12)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差.例如:输入的两个字符串分别为abcdef和abceef,则输出为-1.请填空.#includemain(){ char str[100],str2[100],c;int i,s;printf("\n input string 1:\n"); gest(str1);printf("\n input string 2:\n"); gest(str2);i=0;while((strl[i]==str2[i]&&(str1[i]!=____))i++;s=____;printf("%d\n",s);}(13)以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来.请填空.#include<stdio.hmain(){ FILE *fp;char str[100]; int i=0;if((fp=fopen("text.txt",__ __))==NULL){ printf("can't open this file.\n");exit(0);}printf("input astring:\n"); gest(str);while (str[i]){ if(str[i]='a'&&str[i]<='z')str[i]=___ _;fputc(str[i],fp);i++;}fclose(fp);fp=fopen("test.txt",____);fgets(str,100,fp);printf("%s\n",str);fclose(fp);}(14) 以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空.#include.<stdio.hmain(){charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};int c[64],d,i=0,base;long n;printf("enter a number:\n"); scanf("%ld",&n);printf("enter new base:\n"); scanf("%d",&base);do{ c[i]=____;i++; n=n/base;} while(n!=0);printf("transmite new base:\n");for(--i;i=0;--i){ d=c[i];printf("%c",b____;}}_答案一、选择题(1)B (2)B (3)D (4)D (5)B(6)A (7)B (8)C (9)D (10)A(11)D (12)C (13)A (14)B (15)D(16)C (17)B (18)A (19)A (20)A(21)C (22)D (23)A (24)D (25)B(26)C (27)C (28)B (29)C (30)C(31)D (32)D (33)B (34)C (35)B(36)D (37)B (38)A (39)D (40)D(41)A (42)A (43)C (44)B (45)B(46)D (47)A (48)C (49)B (50)C二、填空题(1)AUTOEXEC.BAT(2)外部(答外部命令不扣分)(3)COPY A:*.DAT PRN(在 COPY 后面与A:*.DAT后面都至少要有一个空格)(4)RENXYZ\*.BAK *.FOR 或RENAME XYZ\*.BAK*.FOR(在REN 或RENAME 后面与XYZ\*.BAK 后面都至少要有一个空格) (5)ATTRIB+R WST.TXT(在ATTRIB 后面与+R后面都至少有一个空格)或ATTRIBWST.TXT+R(在ATTRIB后面与WST.TXT后面都至少要有一个空格)(6)1.0或1(7)10(8)60(9)8,17(10)strlen(str )/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1str[j-1]或*(str+j-1)(11)'\0' 或0++(12) '\0'或0strl[i]-str2[i](13) "w"或"w+"或"wt"或"w+t"或"""wt+"str[i]-32 或str[i]-('a'-'A'或str[i]-'a'+'A'"r"或"r+"或"r+t"或"rt+"(14)n%base[d]。
《全国计算机等级考试二级教程C语言程序设计》
![《全国计算机等级考试二级教程C语言程序设计》](https://img.taocdn.com/s3/m/d0521e37ce2f0066f433223a.png)
《全国计算机等级考试二级教程——C语言程序设计》课后题及参考答案第一章程序设计基本概念1.1 在TRUBO C环境中用RUN命令运行一个C程序时,所运行的程序的后缀是______.答案:.exe1。
2 C语言源程序文件的后缀是_____,经过编译后,生成文件的后缀是_____,经过连接后,生成文件的后缀是____ _.答案:。
c 。
obj 。
exe1.3 结构化程序由_____、_____、_____三种基本结构组成.答案:顺序、选择、循环第二章 C程序设计的初步知识一、选择题2。
1 以下选项中正确的整型常量是A)12. B)—20 C)1,000 D)4 5 6答案:B2.2 以下选项中正确的实型常量是A)0 B)3。
1415 C)0.329×10(2)(10的2次方) D)。
871答案:D2。
3 以下选项中不正确的实型常量是A)2。
607E-1 B)0。
8103e 2 C)—77。
77 D)456e-2答案:B2。
4 以下选项中不合法的用户标识符是A)abc。
c B)file C)Main D)PRINTF答案:A2.5 以下选项中不合法的用户标识符是A)_123 B)printf C)A$D)Dim答案:C2。
6 C语言中运算对象必需是整型的运算符是A)%B)/ C)!D)**答案:A2.7 可在C程序中用作用户标识符的一组标识符是A)void define WORDB)as_b3 _123 IfC)For -abc caseD)2c DO SIG答案:B2。
8 若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4)D)a=a+7=c+b答案:B2.9 以下叙述中正确的是A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值.B)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式.C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b 的值由原值变为0.D)已有a=3,b=5。
全国计算机等级考试《二级c语言程序设计》复习全书【核心讲义+历年真题详解]74p
![全国计算机等级考试《二级c语言程序设计》复习全书【核心讲义+历年真题详解]74p](https://img.taocdn.com/s3/m/a3602fbe50e2524de5187ee6.png)
全国计算机等级考试《二级C语言程序设计》复习全书【核心讲义+历年真题详解]最新资料,WORD格式,可编辑修改!目录第一部分备考指南......................................................第1章考试概述....................................................第2章复习技巧.................................................... 第二部分核心讲义......................................................【公共基础知识】....................................................第1章数据结构与算法..........................................第2章程序设计基础............................................第3章软件工程基础............................................第4章数据库设计基础..........................................【C语言程序设计】..................................................第1章程序设计基本概念........................................第2章C程序设计的初步知识....................................第3章顺序结构................................................第4章选择结构................................................第5章循环结构................................................第6章字符型数据..............................................第7章函数..................................................第8章地址和指针..............................................第9章数组..................................................第10章字符串.................................................第11章对函数的进一步讨论.....................................第12章C语言中用户标识符的作用域和存储类 .....................第13章编译预处理和动态存储分配...............................第14章结构体、共用体和用户定义类型...........................第15章位运算.................................................第16章文件................................................. 第三部分历年真题及详解................................................全国计算机等级考试《二级C语言程序设计》真题及详解(一)............全国计算机等级考试《二级C语言程序设计》真题及详解(二)............全国计算机等级考试《二级C语言程序设计》真题及详解(三)............全国计算机等级考试《二级C语言程序设计》真题及详解(四)............全国计算机等级考试《二级C语言程序设计》真题及详解(五)............全国计算机等级考试《二级C语言程序设计》真题及详解(六)............ 第四部分模拟试题及讲解................................................全国计算机等级考试《二级C语言程序设计》模拟试题及详解(一)........全国计算机等级考试《二级C语言程序设计》模拟试题及详解(二)........第一部分备考指南第1章考试概述一、考试简介全国计算机等级考试(National Computer Rank Examination,简称NCRE),是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。
全国计算机等级考试《二级C语言程序设计》历年真题精选及详解
![全国计算机等级考试《二级C语言程序设计》历年真题精选及详解](https://img.taocdn.com/s3/m/af2f391ba1c7aa00b42acb20.png)
全国计算机等级考试《二级C语言程序设计》历年真题精选及详解一、选择题(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,按照题目上的内容进行答题。
作答选择题时键盘被封锁,使用键盘无效,考生须使用鼠标答题。
选择题部分只能进入一次,退出后不能再次进入。
选择题部分不单独计时。
)1.下列叙述中正确的是()。
A.所有数据结构必须有根结点B.所有数据结构必须有终端结点(即叶子结点)C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构D.没有根结点或没有叶子结点的数据结构一定是非线性结构【答案】D【解析】D项正确,线性结构的特点是:①集合中必存在“第一个元素”且惟一;②集合中必存在“最后一个元素”且惟一;③除最后一个元素外,其他数据元素均有惟一的“后继”;④除第一个元素外,其他数据元素均有惟一的“前驱”。
所以没有根结点或没有叶子结点的数据结构一定是非线性结构。
AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。
答案选择D选项。
2.以下叙述中错误的是()。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B.C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D.C语言源程序经编译后生成后缀为.obj的目标程序【答案】A【解析】A项错误,注释语句不会被翻译成二进制的机器指令。
C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。
答案选择A选项。
3.C语言主要是借助以下()功能来实现程序模块化的。
A.定义函数B.定义常量和外部变量C.三种基本结构语句D.丰富的数据类型【答案】A【解析】C程序的模块化主要通过函数来实现。
未来教育·(2016年版)全国计算机等级考试教程:二级C语言程序设计
![未来教育·(2016年版)全国计算机等级考试教程:二级C语言程序设计](https://img.taocdn.com/s3/m/3cb145c603d8ce2f006623f9.png)
C
2.6 赋值表达式
2 程序设计的初步知识
01
2.7.1 自加、 自减运算符
02
2.7.2 逗号运 算符
2.7 自加、自减和逗号运算 符
04 3 顺序结构
3.1 赋值 语句
3.2 数据 输出
3.3 数据 输入
课后习题
3 顺序结构
3.2.1 printf()函数的一般调用形式 3.2.2 printf()函数的输出格式说明 3.3.1 scanf()函数的一般调用形式 3.3.2 scanf()函数的输入格式说明
07 6 字符型数据
6.1.1 字符 型常量
6.1.2 转义 字符
6.1.3 字符 串常量
6 字符型数据
6.3.1 调用 printf和
scanf函数输 出和输入字符 6.3.2 调用
putchar和 getchar函数 输出和输入字
符
6.1 字符 常量
6.2 字符 变量
6.3 字符的 输入和输出
8.5 函数之间地址值的 传递
8.2 指针变量的定义和 指针变量的类型
8.4 对指针变量的操作
课后习题
8.3.1 给指针变量赋地址
8指针
8.3 给指针变量赋值
8.3.2 给指针变量赋“空” 值
01
8.4.1 通过指 针来引用一个存
储单元
02
8.4.2 移动指 针
03
8.4.3 移动比 较
8指针
8.4 对指针变量的操作
12 C语言 中用户标 识符的作 用域和存 储类
12.3 全局变量及其作用域和 生存期
01 12.3.1 全局变量的作用域和生 存期
02 12.3.2 在同一编译单位内用 extern说明符扩展全局变量的作 用域
全国计算机等级考试(二级)---C语言程序设计考试大纲及习题
![全国计算机等级考试(二级)---C语言程序设计考试大纲及习题](https://img.taocdn.com/s3/m/4cfa70ca49649b6648d7479f.png)
选择题
⑥ 以下说法中正确的是 A) C语言程序总是从第一个定义的函数开始 执行 B) 在C语言程序中,要调用的函数必须在 main()函数中定义 √C) C语言程序总是从main()函数开始执行 D) C语言程序中的main()函数必须放在程序 的开始部分
选择题
⑦ 有以下程序段: int x=3; do { printf(“%3d”, x- =2 ) ; } while( ! (--x) ) ; 执行后的输出结果是 A) 1 B) 30 √C) 1 -2
2. 3. 4.
考试方式
1.
2.
笔试:90分钟,满分100分,其中含公 共基础知识部分的30分 上机:90分钟,满分100分
上机操作包括:
① 填空 ② 改错 ③ 编程
第二部分 样题及参考答案
第二部分 样题及参考答案 选择题 填空题 上机操作题
① 填空题 ② 改错题 ③ 编程题
选择题
1. 只要求缓冲文件系统(即高级磁盘 I/O系 统),对非缓冲文件系统(即低级磁盘 I/O 系统)不要求 文件类型指针( FILE类型指针) 文件的打开和关闭( fopen,fclose ) 文件的读写 (fputc,fgetc,fgets,fread,fwrite fprintf,fscanf 函数的应用),文件的定位 ( rewind,fseek 函数的应用)
选择题
⑩ 有以下程序: #include “stdio.h” #include “stdlib.h” fut(int **s,int p[2][3]) { **s=p[1][1]; } main() { int a[2][3]={1,3,5,7,9,11},*p; p=(int *)malloc(sizeof(int)); fut(&p,a); printf(“%d\n”,*p); } 程序的运行结果是 A) 1 B) 7 C) 9
计算机二级 c 语言
![计算机二级 c 语言](https://img.taocdn.com/s3/m/38afeb501fb91a37f111f18583d049649a660e7b.png)
计算机二级 c 语言【原创实用版】目录1.计算机二级 C 语言概述2.计算机二级 C 语言考试内容3.计算机二级 C 语言考试技巧4.学习计算机二级 C 语言的意义正文【计算机二级 C 语言概述】计算机二级 C 语言是指全国计算机等级考试(National Computer Rank Examination,简称 NCRE)的二级 C 语言程序设计。
计算机等级考试是由我国教育部考试中心主办,用于评估考生计算机应用知识和技能的全国性考试。
计算机二级 C 语言主要测试考生对 C 语言程序设计的基本概念、语法、数据结构和算法等方面的掌握程度,以及运用 C 语言编写程序解决实际问题的能力。
【计算机二级 C 语言考试内容】计算机二级 C 语言考试主要包括以下几个方面:1.C 语言基本概念:包括 C 语言编程的基本规则、数据类型、运算符、流程控制等。
2.数据结构和算法:包括线性表、栈与队列、树与二叉树、图等基本数据结构,以及排序、查找、递归等基本算法。
3.函数和文件操作:包括函数的定义、调用、参数传递,以及文件的打开、关闭、读写等操作。
4.指针和内存管理:包括指针的基本概念、指针运算、动态内存分配等。
5.面向对象编程:包括结构体、联合体、枚举等面向对象的数据类型,以及面向对象的程序设计方法。
【计算机二级 C 语言考试技巧】1.扎实掌握基本概念和语法:要熟练掌握 C 语言的基本概念、语法规则和常用运算符,这是解决编程问题的基础。
2.学会分析题目和调试程序:在考试中,要迅速分析题目,明确题目要求,合理设计算法。
同时,要学会调试程序,查找并解决程序中的错误。
3.多练习、多总结:在备考阶段,要多做练习题,总结解题思路和技巧,提高编程效率。
4.注意时间管理和答题技巧:考试时,要合理安排时间,先易后难。
答题时,要注重代码的可读性和简洁性,以便于阅卷老师评分。
【学习计算机二级 C 语言的意义】学习计算机二级 C 语言具有以下意义:1.提升编程能力:通过学习计算机二级 C 语言,可以提高考生的编程能力,为以后从事计算机相关工作打下基础。
全国计算机等级考试二级-基础知识和C语言程序设计 模拟考试试卷及答案(一)
![全国计算机等级考试二级-基础知识和C语言程序设计 模拟考试试卷及答案(一)](https://img.taocdn.com/s3/m/75657f7dfe4733687e21aaa8.png)
全国计算机等级考试二级-基础知识和C语言程序设计模拟考试试卷及答案(一)一、选择题(1)下列设备中只能作为输入设备的是A)磁盘驱动器 B)鼠标器 C)存储器 D)显示器(2)下列DOS组合控制键中,能使标准输出同时送到屏幕与打印机的是A)Ctrl+Break B)Ctrl+P C)Ctrl+C D)Ctrl+H(3)通常所说的386机是A)8位机 B)16位机 C)32位机 D)64位机(4)二进制数01100100转换成十六进制数是A)64 B)63 C)100 D)144(5)十六进制数100转换成十进制数是A)1024 B)512 C)256 D)128(6)对于存有重要数据的5.25英寸软盘,防止计算机病毒感染的主法A)不要与有病毒的软盘放在一起 B)在写保护口贴上胶条C)保持软盘清洁 D)定期对软盘格式化(7)在启支DOS系统时,启动盘的根目录下必须包含的文件有A) B) C) D)(8)DOS系统启动后,下列文件中常驻内存的是A) B) C) D)(9)下列字中,不能作为DOS磁盘文件名的是A)JTU B)93GZ.PRG C)CON D)ATT&T.BAS(10)下列命令中属于内部命令的是A)SYS B)COSP C)DIR D)DISKCOMP(11)下列文件名中,能与ABC?.?匹配的是A)AB12.C B)ABCD.FOR C)ABC.TXT D)ABCD.C(12)要列出当前盘当前目录中第三个字符为"B"的所有文件的清单, 可使用的命令为A)DIR* *B*.* B)DIR ??B*.*? C)DIR ??B.* D)DIR ??B*.*(13)设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1, 若要进入子目录D2,可使用的命令为A)CD D2 B)CD D2\C)CD \D2 D)CD D1\D2(14)设当前盘为C盘,A盘当前目录为根目录, 为了删除A 盘目录\ WS 下扩展名为.TXT的所有文件,可用的命令为A)DEL WS\*.TXT B)DEL \WS\*.TXTC)DEL A:\WS\?.TXT D)DEL A:WS\*.TXT(15)设当前盘为C盘,C盘当前目录为\AAA\BBB\A\B\X.下列命令中正确的是A)MD \AAA\BBB\A B)MD XC)MD \ D)MD \AAA\BBB\A\B\X(16)在下列各组的两个命令中,根据给定的条件,执行效果互相等价的是A)DEL \DOS 与 RD \DOS(当前盘上有目录\DOS)B)FORMAT A:与DEL A:*.*(A盘为启动盘)C)DISKCOPY A: B: 与 COPY A:*.* B:(A盘为启动盘)D)COPY F1 F2 与TYPE F1>F2(当前盘当前目录下有文件F1)(17)为了在1.2MB的高密驱动器A中格式化一张360KB的启动盘,可用的命令为A)FORMAT A: B)FORMAT A:/S/1C)FORMAT A:/S/4 D)FORMAT A:/S(18)要在打印机上输出当前盘当前目录下扩展名为.TXT的所有文件内容,正确的命令为A)COPY *.TXT PRN B)COPY *.TXT >PRNC)TYPE *.TXT PRN D)TYPE *.TXT >PRN(19)设B盘目录结构如下:B:\根目录─┬─F1子目录──F11子目录───FA.TXT│├─F2子目录┬─F21子目录─┬─FB.BAS│ │ ││ │ ││ └─F22子目录└─FC.TXT└─设B盘的当前目录为\F2,要将\A盘当前目录下的文件P.BAS复制到B盘的F3 子目录中,可用的命令为A)COPY P.BAS B: B)COPY A:P.BAS B:\C)COPY A:P.BAS B:\F3 D)COPY A:P.BAS B:F3\(20)设当前盘为A盘,要将B盘当前目录下的两个文件A.TXT与X.TXT 连接后以文件名Y.TXT存放到A盘的当前目录中,可用的命令为A)COPY A.TXT+X.TXT A:Y.TXTB)COPY B.A.TXT+X.TXT A:Y.TXTC)COPY B:A.TXT+B:X.TXT >Y.TXTD)COPY B:A.TXT+B:X.TXT Y.TXT(21)C语言中最简单的数据类型包括A)整型、实型、逻辑型 B)整型、实型、字符型C)整型、字符型、逻辑型 D)整型、实型、逻辑型、字符型(22)C语言中,运乍对象必须是整型数的运算符是A)% B)\C)%和\ D)* *(23)为表示关系x≥y≥z,应使用C语言表达式A)(x>=y)&&(y>=z) B(x>=y)AND(y>=z)C)(x>=y>=z) D)(x>=y)&(y>=z)(24)下述对C语言字符数组的描术中错误的是A)字符数组可以存放字符串B)字符数组中的字符串可以整体输入、输出C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D)不可以用关系运算符对字符数组中的字符串进行比较(25)设有如下定义:int x=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是A)1 B)0C)4 D)3(26)以下程序的输出结果是main(){ int x=10,y=10;printf("%d %d\n",x--,--y);}A)10 10 B)9 9C)9 10 D)10 9(27)定义如下变题和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是for(i=0;i<3;i++) printf("%d",x[i][2-1]);A)1 5 9 B)1 4 7C)3 5 7 D)3 6 9(28)若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为A)a<>0 B)!aC)a=0 D)a(29)阅读程序:#includemain(){int a[10]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("%x\n",p+9);}该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是A)203 B)204C)1a4 D)1a6(30)设有如下函数定义:int f(char *s){ char *p=s;while(*p!='\0')\p++;return(p-s);}如果在主程序中用下面的语句调用上述函数,则输出结果为printf("%d\n",f("goodbey!"));A)3 B)6C)8 D)0(31)以下说法中正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分(32)执行下面的程序后,a的值为main(){ int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}}A)7 B)8C)9 D)10(33)以下程序段的输出结果是int x=3;do{ printf("%3d",x-=2);}while(!(--x));A)1 B)3 0C)1-2 D)死循环(34)定义如下变量:int n=10;则下列循环的输出结果是while(n>7){ n--;printf("%d\n",n);}A)10 B)9 C)10 D)99 8 9 88 7 8 77 6(35)两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是main( ){ int x;scanf("%d",&x);if(x + + 〉 5)printf("%d",x);else printf("%d\n",x - -);}A)7和5 B)6和3 C)7和4 D)6和4(36)设有如下定义:char *aa[2]={"abcd","ABCD"};则以下就法中正确的是A)aa数组成元素的值分别是"abcd"和ABCD"B)aa是指针变量,它指向含有两个数组元素的字符型一维数组C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D)aa数组的两个元素中各自存放了字符'a'和'A'的地址(37)以下程序的输出结果是main( ){ int a=-1,b=4,k;k=(+ +a〈0)&&!(b - -〈=0);printf("%d%d%d\n",k,ab);}A)104 B)103 C)003 D)004(38)设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0]则下列能够正确表示数组元素a[1][2]的表达式是 A)*((*prt+1)[2]) B)*(*(p+5))C)(*prt+1)+2 D)*(*(a+1)+2)(39)下列程序的输出结果是main( ){ char*p1,*p2,str[50]="xyz";p1="abcd";p2="ABCD";strcpy(str+2,strcat(p1+2,p2+1);printf)"%s",str);}A)xyabcAB B)abcABzC)ABabcz D)xycdBCD(40)执行下面的程序后,a的值是#define SQR(X) X*Xmain( ){ int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A)10 B)1 C)9 D)0(41)下列程序执行后输出的结果是#include 〈stdio.h〉f(int a){ int b=0;statin c=3:a=c+ +,b+ +;returu(a);}main( ){ int a=2,i,k;for(i=0;i〈2;i=+ +)k=f(a+ +);printf("%d\n",k);}A)3 B)0 C)5 D)4(42)下列程序的输出结果是main( ){ int a[5]={2,4,6,8,10},*P,* *k;p=a;k=&p;printf("%d",*(p++));printf("%d\n",* *k);}A)4 4 B)2 2 C)2 4 D)4 6(43)阅读下列程序:main( ){ int n[3],i,j,k;for(i=0;i〈3;i++)n[i]=0;k=2;for (i=0;i〈k;i++)for (j=0;j〈k;j++)n[j]=n[i]+1;printf("%d\n",n[1]);}下述程序运行后输出结果是A)2 B)1 C)0 D)3(44)字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是#include〈stdio.h〉main( ){ union { int i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0])}A)39 B)9 C)38 D)8(45)设有以下定义:typedef union{ long i;int k[5];char c;}DATE;struct date{ int cat;DATE cow;double dog;}too;DATE max;则下列语句的执行结果是printf("%d",sizeof(struct date)+sizeof(max));A)25 B)30 C)18 D)8(46)执行以下程序后,y的值是main ( ){ int a[]={2,4,6,8,10};int y=1,x,*p;p=&a[1];for(x=0;x<3;x++)y + = * (p + x);printf("%d\n",y);}A)17 B)18 C)19 D)20(47)下列程序执行后输出的结果是]int d=1;fun (int q){ int d=5;d + =p + +;printf("%d".d);}main( ){ int a=3;fun(a);d + = a + +;printf("%d\n",d);}A)8 4 B)9 6 C)9 4 D)8 5(48)下列程序的输出结果是main( ){ char ch[2][5]={"6934,"8254"},*p[2];int i,j,s=0;for(i=0;i<2;i + +)p[i]=ch[i];for(i=0;i<2;i + +)for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0';printf("%d\n",s);A)6385 B)69825 C)63825 D)693825(49)以下程序的输出结果是fut (int**s,int p[2][3]){ **s=p[1][1]; }main( ){ int a[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);primtf("%d\n",*p);}A)1 B)7 C)9 D)11(50)以下程序的输出结果是#include"ctype.h"space (char *str){ int i,t;char ts[81];for(i=0,t=0;str[i]!='\0';i+=2)if(! isspace(*str+i)&&(*(str+i)!='a')) ts[t++]=toupper(str[i]);ts[t]='\0';strcpy(str,ts);}mian( ){ char s[81]={"a b c d e f g"};space(s);puts(s);}A)abcdeg B)bcde C)ABCDE D)BCDE二、填空题(1)十进制数112.375转换成十六进制数为(2)存储200个32×32点阵的汉字信息需 KB─(3)数字符号0的ASCⅡ码十进制表示为48,数字符号9的ASCⅡ码十进制表示为(4)DOS命令分为内部命令与外部命信,TREE命令属于命令.(5)自动批处理文件的文件名为(6)下列程序的输出结果是int ast(int x,int y,int * cp,int * dp){ *cp=x+y;*dp=x-y;}main(){ int a,b,c,d;a=4;b=3;ast(a,b,&c,&d);printf("%d %d/n",c,d);}(7)以下程序的功能是:人键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.main(){ float x,amax,amin;scanf("%f",&x);amax=x;amin=x;while(9)─{ if(x>amax)amax=x;if(10)amin=x;─scanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin);}(8)下面程序通过函数average计算数组中各元素的平均值,请填空.float average(int * pa,int n){ int i;float avg=0.0;for(i=0;imain(){ FILE * fp;char ch,fname[10];printf("lnput the name of file\n");gets(fname);if((fp=16)==NULL){ printf("Cannot open\n"); exit(0);}printf("Enter data\n");while((ch=getchar())!='#')fputc(17,fp);fclose(fp);}(9)以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾.单向链表的头指针作为函数值返回,请填空: #includestruct list{ char data;struct list * next;};struct list * creat(){ struct list * h,* p,* q;char ch;h=18 malioc(sizeof(struct list));p=q=h;ch=getchar();while(ch!='?'){ p=19 malloc(sizeof(struct list));p->data=ch;p->next=p;q=p;ch=getchar();}p->next='\0';20}答案一、选择题(1)B(2)B(3)C(4)A(5)C(6)B(7)B(8)B(9)C(10)C(11)D(12)D(13)C(14)D(15)B(16)D(17)C(18)A(19)C(20)D(21)B(22)A(23)A(24)C(25)D(26)D(27)C(28)D(29)D(30)C(31)C(32)B(33)C(34)B(35)A(36)D(37)D(38)D(39)D(40)B(41)D(42)C(43)D(44)B(45)B(46)C(47)A(48)A(49)C(50)D二、填空题(1)70.6(2)25(答25KB不扣分)(3)57(4)外部(答外部命令不扣分)(5)AUTOEXEC.BAT(答AUTOEXEC扣1分)。
全国计算机等级考试二级教程——《C语言程序设计》课后题及参考答案
![全国计算机等级考试二级教程——《C语言程序设计》课后题及参考答案](https://img.taocdn.com/s3/m/d119b10b0722192e4536f63e.png)
答案:C
3.20 以下程序的输出结果是
A) 9 8 B) 8 9 C) 6 6 D) 以上三个都不对 #include "math.h" main() { double a=-3.0, b=2; printf("%3.0f %3.0f\n",pow(b,fabs(a)),pow(fabs(a),b)); } 答案:B 来源:
3.23 复合语句在语法上被认为是____。空语句的形式是____。
答案:一条语句、 ;
3.24 C语句的最后用____结束。 答案:;
3.25 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。 写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能 的输入形式____、_____、____。 int k; float a; double x; scanf("%d%f%lf",&k,&a,&x); printf("k=%d,a=%f,x=%f\n",k,a,x); 答案: (1) 100 25.81 1.89234 (2) 100 25.81<CR>1.89234 (3) 100<CR> 25.81<CR> 1.89234<CR>
3.19 若变量已正确说明,要求用以下语句给a赋予
3.12、给b赋予9.0,则正确的输入形式是(□代表空格)
A)
3.12□□9.0<CR> B) a=□□3.12b=□□□9<CR> C) a=3.12,b=9<CR> D)
a=3.12□□,b=9□□□□<CR> scanf("a=%f,b=%f",&a,&b); <CR>表示Enter键
全国计算机等级考试二级教程--C语言程序设计课后习题答案
![全国计算机等级考试二级教程--C语言程序设计课后习题答案](https://img.taocdn.com/s3/m/379140fa03d8ce2f01662315.png)
2.29 {注释符号不可嵌套使用后遗失了“ () ”全国计算机等级考试二级教程 --C 语言程序设计》课后习题答案第一章1.1EXE1.2 C OBJ EXE1.3顺序选择循环第二章一.选择题2.1 B 2.2 D 2.3 B 2.4 A 2.5 C 2.6 A 2.7 B 2.8 B 2.9 D 2.10 C 2.11 B 2.12 B 2.13 A 二. 填空题2.1411 122.15 4.2 4.22.16{ } 定义执行语句2.17关键字用户标识符2.18int float double2.19float a1=1; float a2=1;2.20存储单元2.213.52.22(a*b)/c a*b/c a/c*b2.23把常量10 赋给变量s2.24位1 或02.258 127 0111111 -128 100000002.2632767 -32768 10000000000000002.2710 8 16 三. 上机改错题2.28 #include "stdio.h"; 删除行尾的";"main(); / * main function * / 删除")"后的";",注释中的*要紧靠“ / ” ,即应为“ /* ”和“ */ ”函数开始处遗失了一个“ { ”float r ,s ; /*/*r is radius*/,/* s is area of circuilar*/*/ r = 5.0 ;s = 3.14159 * r * r ;printf("%f\n",s) 行尾遗失了“ ; 函数结束处遗失了一个“ } ”#include "stdio.h" main /* main function */ main float a,b,c,v; /*a,b,c are sides, v is volume of cube */a=2.0; b=3.0; c=4.0 行尾遗失了“ ;} 3.31{3.11 C 3.12 D 3.13 D 3.14 A 3.15 C 3.16 C 3.17 C 3.18v=a*b*c;printf("%f\n", v) 行尾遗失了“ ; ”第三章一.选择题3.1 C 3.2 C 3.3 D 3.4 C 3.5 D 3.6 B 3.7 C 3.8 D 3.9 A 3.10B 无答案3.19C 3.20 B二.填空题3.21 (1)-2002500(2)i=-200,j=2500 (3)i=-200 j=2500 3.22 12 0 03.23一条语句;3.24;3.25100,25.81,1.89234 100 25.81 1.89234 100 25.81 1.892343.26x=127,x= 127,x= 177,x= 7f,x= 1273.27x=127,x=127 ,x=$127 ,x=$000127,x=%06d3.28a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500三. 编程题和改错题3.29修改后的程序如下:main() double a,b,c,s,v;printf("input a,b,c:");scanf("%lf%lf%lf",&a,&b,&c);s =a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n", a,b,c);printf("s=%f,v=%f\n",s,v);3.30 #include main() int a=560,b=60;printf("560 minute is %d hour and %d minute.\n",a/b,a%b);#include main() int a,b;a=1500;b=350;printf("a div b is : %d\n",a/b);printf("a mod b is : %d\n",a%b);3.32 #include main(){4.19 3 2 2三. 编程题4.22double a,b,c,ave;printf ("input 3 double number : \n");scanf ("%lf%lf%lf",&a,&b,&c);printf ("%.1f\n",(a+b+c)/3);3.33 #include void main(){ int a,b,c,t;printf(" 请依次输入整数a,b,c:");scanf("%d%d%d",&a,&b,&c);printf("\n 你输入的值是: a=%d,b=%d,c=%d\n",a,b,c);t=b;b=a;a=c;c=t;printf(" 交换之后的值是:a=%d,b=%d,c=%d\n",a,b,c);第四章一.选择题4.1 A 4.2 A 4.3 A 4.4 D 4.5 C 4.6 A 4.7 B 4.8 C 4.9 D 4.10 C二.填空题4.11 非0 0 4.12 < > >= <= 同级== != 同级4.13 ! && ||4.15!4.16 a == b || a < c x > 4 || x < -44.17 14.18x <= 0 1 > 04.20 *#4.21 略#include /* 检查日期的合法性*/ int checkdate(int year , int month, int day) if(year < 1900 || year > 2005) {printf(" 输入的年份无效!\n");return 0;else if(month < 0 && month > 12){printf(" 输入的月份无效!\n");return 0;return 0; }} else else if(day <= 0 && day > 31){printf(" 输入的日期无效!\n");return 0;else switch(month) case 4: case 6: case 9: case 11: if(day > 30){printf(" 输入的日期无效!\n");return 0;break;case 2: if((year%4 == 0 && year%100 != 0) || year%400 == 0) if(day > 29) {printf(" 输入的日期无效!\n");else if(m0 == m1)if(day > 28)return 0; break; }/* end of switch(m0)*/ return 1; void main()printf (" 请输入学生的生日 :"); scanf("%d%d%d", &y0,&m0,&d0); if(checkdate(y0, m0, d0)) { printf (" 请输入当前日期 :"); scanf("%d%d%d", &y1,&m1,&d1); /* 当前日期合法性检查 */ if(!checkdate(y1, m1, d1)) { return; else if(y0 > y1) { printf (" 出生年份比当前年份晚 !\n"); return; else if(y0 == y1) { if(m0 > m1) { printf (" 出生年月比当前年月晚 !\n"); return;{ printf (" 输入的出生日期无效 !\n"); int y0, m0, d0; /* 生日 */ int y1, m1, d1; /* int years, months, days; /* 当前日期 */ 实足年龄 */} else {if(d0 > d1){printf(" 出生年月日比当前年月日晚!\n"); return;/* 计算实足年龄*/ years = y1 - y0;months = m1 - m0;days = d1 - d0;/* 修正实足年龄天数*/ if(days < 0){ months--;switch(m1) case 1 case 5 case 7 case 10: case 12: days += 30;break;case 2: case 4: case 6: case 8: case 9: case 11: days += 31;break;case 3: if((y1%4 == 0 && y1%100 != 0) ||y1%400 == 0) {days += 29;days += 28;{ break;}/* end of switch(m1) */ }/* end of if(days < 0) */ /* 修正实足年龄月数 */ if(months < 0) {months += 12;years--;}/* end of if(months < 0) */return; 4.23 #include void main() int a; printf (" 请输入一个整数 :"); scanf ("%d",&a); if (a%2==0) { printf ("%d 是偶数 \n", a); else { printf ("%d 是奇数 \n", a); 4.24 #include void main() int a,b,c,temp,max;printf(" 出生日期 : %d printf(" 当前日期 : %d 年%d 年%d 月 %d 月 %d 日 \n", y0, m0, d0); 日 \n", y1, m1, d1); printf(" 实足年龄 : %d 年%d 月%d 日 \n", years, months, days);printf (" 请输入三个整数:");scanf ("%d %d %d",&a,&b,&c);temp=(a>b)? a:b;max=(temp>c)? temp:c;printf ("\n");printf (" 你输入的数中最大的是%d.\n",max);4.25(1)不嵌套的if 语句#include void main() int x,y;printf("input x :");scanf("%d",&x);if ( x>-5 && x<0 ) {printf("y is %d\n",y=x);if ( x==0 ) printf("yis %d\n",y=x-1);if ( x>0 && x<10 ) printf("yis %d\n",y=x+1); }if ( x>=10 || x<=-5)printf("error\n");}(2)嵌套的if 语句#include void main(){int x,y;scanf("%d",&x);printf("\n");if(x < 0)printf("input x :");printf("y is %d.\n",y=x-1); {if(x > -5) printf("y is %d.\n",y=x);else printf("error!\n");}if(0 == x) printf("yis %d.\n",y=x-1);if(x > 0) if(x < 10){printf("y is %d.\n",y=x+1);else printf("error!\n");}(3)if_else 语句#include void main() int x,y; printf("input x :");scanf("%d",&x);if( x>-5 && x<0 ) printf("yis %d.\n",y=x);}else if( x==0 ) else if( x>0 &&x<10 ) printf("y is %d.\n",y=x+1); else printf("error!\n");}(4)switch 语句#include void main() int x,y; printf("input x : ");scanf("%d",&x);switch (x) case -4 case -3 case -2 case -1 printf("y is %d.\n",y=x);break;case 0: printf("y is %d.\n",y=x-1); break;case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: printf("y is %d.\n",y=x+1);break;default: printf("error!\n");第五章printf("e=%f\n",e);(2)一. 选择题5.1 D 5.2 C 5.3 B 5.4 C 5.5 C 5.6 B 5.7 D 5.8 A 5.9 D 5.10 D二.填空题5.11 5 4 65.12死循环5.13-15.14115.15d=1.0 k++ k<=n5.16x>=0 x 三. 编程题5.17 #include void main() int i;int sig = 1; int sum = 0;for(i=1; i<=101; i++,i++) sum += sig*i;sig *= -1;printf("sum=%d\n", sum);5.18 (1) #include void main() int i; double m=1.0;double e = 1.0;for(i=1; i<50; i++){ m *= i;e += 1/m;#include void main() int i=1; double m=1.0;double e = 1.0;while(1/m >= 0.0004) {m *= i;e += 1/m;i++;printf("e=%f\n",e);5.19 #include void main() int year; int col = 0;for(year=1600; year<=2000;year++) if((year%4 == 0 &&year%100 != 0) || year%400 == 0)printf("%d\t", year); col++;if(col%5 == 0) printf("\n");printf("\n");5.20 #include #define N 7void main()void main() {int i;int j;int m;int k = N/2;for(i=0; i { m = i-k;if(m < 0){m *= -1;for(j=0; j { printf(" ");for(j=0; j<2*(k-m)+1; j++) printf("*");} printf("\n");第六章一. 选择题6.1 B 6.2 D 6.3 A 6.4 A 6.5 B 6.6 D 6.7 D 6.8 B 6.9 A 6.10 A 6.11 C二. 填空题6.12-16.13 16.14ctype.h6.15 16.1610A 20B 30C 40D6.177.29 101.298AB6.18A7.29B101.2986.19 A B C (每个字符后有三个空格)三. 编程题6.20 #include #define N 80void main() {int iLoop = 0;gets(str);while(str[iLoop]) printf("%c-%d\t",str[iLoop],str[iLoop]);iLoop++;if(iLoop%3 == 0) {printf("\n");printf("\n");6.21 #include #define N 80 void main() char str[N];int num = 0;int iLoop = 0;gets(str);while(str[iLoop]) if(str[iLoop] >= '0' && str[iLoop] <= '9') {num = 10*num + (str[iLoop] - '0');iLoop++;printf("%d\n",num);6.22 #include #include #define N 80 char str[N];scanf("%d", &line); {do gets(str);num++;}while(strcmp(str , "EOF"));printf(" 您输入了%d 行字符!\n",num);6.23 #include #define N 80 void main() char str[N]; int iLoop = 0;int num = 0;gets(str);while(str[iLoop] && iLoop < N) if(str[iLoop] >= 'a' && str[iLoop] <= 'z') num++;iLoop++;}printf(" 您输入了字符中有%d 个小写字母!\n",num);6.24 #include void main() int line;int iLoop1;int iLoop2;printf(" 请输入图案的行数(不大于26):");for(iLoop1 = 0; iLoop1 < line; iLoop1++) for(iLoop2 = 0; iLoop2 < line - iLoop1; iLoop2++)printf(" ");for(iLoop2 = 0; iLoop2 < 2*iLoop1+1; iLoop2++)printf("%c",iLoop1 + 'A');printf("\n");}第七章一. 选择题7.1 C 7.2 C 7.3 B 7.4 C 7.5 A 7.6 D 7.7 A二. 填空题7.8127.99.0000007.10 47.11n=1 s7.12<=y z*x7.13 1 s*i 0 f(k)三.程序调试和编程题7.14 fun(int n) { int k,yes;for(k=2; k<=n/2; k++) if(n%k == 0) { yes = 0; break;}else yes = 1;return yes;7.15 int mymod(int a, int b) {return a%b;7.16 double fun(int n){double sum = 0;int iLoop;int sig = -1;for(iLoop=1; iLoop<=n; iLoop++) sig *= -1;sum += sig*1.0/iLoop;return sum;7.17 double fun(int n) double t = 1.0;int iLoop;long tmp;for(iLoop=2; iLoop<=n; iLoop++){tmp = iLoop*iLoop;t -= 1.0/tmp;return t;7.18 #include #include double fun(double x) {return x*x + 5*x + 4;void main() int x = 2;printf("y1=%f\n", fun(x));printf("y2=%f\n", fun(x+15));printf("y3=%f\n", fun(sin(x))); }第八章一. 选择题8.1 A 8.2 B 8.3 B 8.4 C 8.5 B 8.6 B 8.7 C 8.8 D 8.9 B 8.10 C 8.11 C 8.12 C二. 填空题8.131108.147 18.15(1)char *p=&ch; (2) p=&ch; (3)scanf("%c",p); (4)*p='A';(5)printf("%c",*p);8.16(1)s=p+3; (2)s=s-2 (3)50 (4)*(s+1) (5)2 (6)10 20 30 40 50三.编程题8.17 void fun(double x, double y, double *sum, double *div) sum = x + y; *div = x - y;return;8.18 void fun(double x, double y, double z, double *max, double *min)*max = x;*min = x;if(*max < y) max = y;if(*max < z) max = z;if(*min > y) {*min = y;if(*min > z) *min = z;return;第九章一. 选择题9.1 D 9.2 A 9.3 A 9.4 C 9.5 C 9.6 A 9.7 B 9.8 D 9.9 C 9.10 C 9.11 C 9.12 D9.13 D 9.14 A 9.15 A 9.16 A 9.17 C 9.18 C二. 填空题{ { }9.199 09.20 69.21129.22 39.2327219.24-850,2,09.25k=p k9.26(c=getchar()) c-'A'三. 编程题9.27 #include #define N 81 int main() int counter[10] = {0};int iLoop = 0;char str[N];gets(str);while(str[iLoop]) if(str[iLoop] >= '0' && str[iLoop] <= '9')counter[str[iLoop] - '0']++;iLoop++;}for(iLoop=0; iLoop < 10; iLoop++) printf("%d - %d\n", iLoop,counter[iLoop]);return 0;9.28 void fun(int array[], int arraysize, int start) int iLoop;if(start < arraysize-1) if(start <=0) start = 1;for(iLoop = start; iLoop < arraysize; iLoop++) array[iLoop-1] =array[iLoop];for(iLoop = 0; iLoop < arraysize; iLoop++) printf("No.%d = %d\n", iLoop, array[iLoop]); }9.29 int fun(int arry1[], int arry2[], int arrysize) int iLoop;int counter = 0;for(iLoop = 0; iLoop < arrysize; iLoop++) if(arry1[iLoop] % 2) {arry2[counter++] = arry1[iLoop];return counter;} } } }9.30 void fun(char array[], int arraysize) int iLoop1;int iLoop2;char temp;/* 冒泡排序*/ for(iLoop1 = 0; iLoop1 < arraysize - 1; iLoop1++)for(iLoop2 = 0; iLoop2 < arraysize - 1 - iLoop1; iLoop2++){if(array[iLoop2] < array[iLoop2 + 1]) temp = array[iLoop2]; array[iLoop2] = array[iLoop2 + 1];array[iLoop2 + 1] = temp;9.31 #include void fun(int array[], int arraysize, int inertNumber) int iLoop;int iLoop2;if(array[0] < array[arraysize-1]) {for(iLoop = 0; iLoop< arraysize; iLoop++) if(array[iLoop] > inertNumber) for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) array[iLoop2 + 1] = array[iLoop2];array[iLoop] = inertNumber; break;if(iLoop >= arraysize) array[arraysize] = inertNumber;else{for(iLoop = 0; iLoop< arraysize; iLoop++) if(array[iLoop] < inertNumber) for(iLoop2 = arraysize - 1; iLoop2 >= iLoop; iLoop2--) array[iLoop2 + 1] = array[iLoop2];array[iLoop] = inertNumber;break;if(iLoop >= arraysize) array[arraysize] = inertNumber;int main() int iLoop;int a[20] = {7,6,5,3,2,1};for(iLoop = 0; iLoop < 6; iLoop++) {printf("%d ", a[iLoop]);printf("\n");fun(a, 6, 0);for(iLoop = 0; iLoop < 7; iLoop++) printf("%d ", a[iLoop]);printf("\n"); fun(a, 7, 4);for(iLoop = 0; iLoop < 8; iLoop++) printf("%d ", a[iLoop]);printf("\n");fun(a, 8, 8);for(iLoop = 0; iLoop < 9; iLoop++) printf("%d ", a[iLoop]); } printf("\n");return 0;9.32 int fun(int number , int array[]) int iLoop = 0;int iLoop2;int binLen;int midNumber;int div;int remain;midNumber = number;doarray[iLoop] = x; } }div = midNumber/2;remain = midNumber%2;midNumber = div;array[iLoop++] = remain;}while(midNumber);binLen = iLoop;for(iLoop2 = 0, iLoop = binLen - 1; iLoop2 < iLoop; iLoop2++, iLoop--) midNumber = array[iLoop2];array[iLoop2] = array[iLoop];array[iLoop] = midNumber;return binLen;9.33 #include #include #define N 15 void fun(int array[], int arraysize) int x;int iLoop;int iLoop2;for(iLoop = 0; iLoop < arraysize; iLoop++) iLoop2 = 0;x = rand()%20;do if(x == array[iLoop2] && iLoop > 0) x = rand()%20;iLoop2 = 0;}iLoop2++;}while(iLoop2 < iLoop);str[iLoop] = '\0'; }int main() int a[N];int iLoop;fun(a, N);for(iLoop = 0; iLoop < N; iLoop++) {printf("%d\n", a[iLoop]);return 0;第十章一. 选择题10.1 C 10.2 B 10.3 C 10.4 B 10.5 C 10.6 A 10.7 C 10.8 A 10.9 C 10.10 C二. 填空题10.11GFEDCB10.12XYZ10.13SO10.141010.15Itis10.16strlen(str)-1 j--10.17 310.18goodgood !三. 编程题10.19 char* mygets(char *str) int iLoop = 0;char ch;while((ch=getchar()) != '\n'){str[iLoop++] = ch;return str;char * myputs(char *str)int iLoop = 0;while(str[iLoop]) putchar(str[iLoop++]);putchar('\n');return str;10.20 #include #include int fun(char *str) int len;int iLoop1;int iLoop2;int result = 1;len = strlen(str);for(iLoop1 = 0, iLoop2 = len - 1; iLoop1 < iLoop2; iLoop1++, iLoop2--)if(str[iLoop1] != str[iLoop2]) result = 0;break;return result;int main(){char a[20] = "ABCDCBA";char b[20] = "ABCDEBA";printf("%d\n", fun(a));printf("%d\n", fun(b));return 0;10.21}char fun(char *str , int pos) int len;int iLoop;char ch;len = strlen(str);if(pos > len){return NULL;ch = str[pos];for(iLoop = pos; iLoop < len - 1; iLoop++) str[iLoop] = str[iLoop + 1];str[len-1] = '\0';return ch;第十一章一. 选择题11.1 D 11.2 B 11.3 A 11.4 C二. 填空题11.5IJKLEFGHABCD11.6711.7811.8*(s+j) i+1 i11.91711.10(*fun)() (*fun)(a+i*h)/h mypoly三. 编程题11.11 #include #include #define N 81 int main(int argc, char **argv) {char sig;int dig;int pos;char outStr[N] = {'\0'};char str[N] = {'\0'};}if(argc < 2) sig = '-';dig = 10;else{sig = argv[1][0];dig = argv[1][1] - '0';printf(" 请输入一个字符串:");gets(str);if(sig == '-') pos = strlen(str) - dig; if(pos <= 0) pos = 0; strcpy(outStr , str + pos);else if(sig == '+') strcpy(outStr , str);pos = strlen(outStr); if(pos > dig) pos = dig;outStr[pos] = '\0';printf(" 处理后的字串为:");printf("%s\n", outStr);return 0;11.12 #include #includefun(a, bin); }void movebin(char *bin) int len;int iLoop;len = strlen(bin);for(iLoop = len; iLoop > 0; iLoop--) bin[iLoop] = bin[iLoop - 1]; } return;void fun(int n, char *bin) int pos;pos = strlen(bin);if(n == 0) return;if(n == 1) movebin(bin);bin[0] = '1';return;movebin(bin);bin[0] = (n%2) + '0'; n /= 2;fun(n, bin);return;int main() int a = 4;char bin[50] = {""};printf("%s\n", bin);return 0;11.13{#include long fun(int n) if(n == 1) return n;} else return fun(n-1) + n;int main() int num;int sum;printf(" 请输入一个自然数:");scanf("%d", &num);sum = fun(num);printf(" 结果是:%d\n", sum);return 0;11.13 #include int fun(int n) if(n == 0 || n == 1) return 1;else{return fun(n-1) + fun(n-2);int num;int result;printf(" 请输入一个自然数:");scanf("%d", &num);result = fun(num);printf(" 斐波拉契级数为:%d\n", result);return 0;第十二章一. 选择题12.1 B 12.2 B 12.3 A 12.4 C 12.5 D 12.6 B 12.7 A 12.8 A二. 填空题12.92,5,1,2,3,-212.102468int main()第十三章一. 选择题13.1 A 13.2 C 13.3 B 13.4 C 13.5 D 13.6 D 13.7 D二. 填空题13.8ar=9 ar=9 ar=1113.9int* s *b三.编程题13.10 #define MYALPHA(C) ((C>='A' && C<='Z') || (C>='a' &&C<='z')) ? 1 : 013.11 #define SWAP(t,x,y) {t tmp; tmp=x; x=y; y=tmp;}13.12 #include #include int main(){int *p;int iLoop;int iLoop2;int tmp;p = (int *)malloc(sizeof(int)*3);scanf("%d%d%d", p,p+1,p+2);for(iLoop = 0; iLoop < 2; iLoop++) for(iLoop2 = 0; iLoop2 < 2 - iLoop; iLoop2++) if(*(p + iLoop2) > *(p + iLoop2 + 1)) {tmp = *(p + iLoop2);*(p + iLoop2) = *(p + iLoop2 + 1);*(p + iLoop2 + 1) = tmp;printf("%d %d %d\n", *p, *(p+1), *(p+2));free(p); p = NULL;return 0;第十四章一. 选择题14.1 D 14.2 D 14.3 D 14.4 A 14.5 C 14.6 C 14.7 C 14.8 B二. 填空题14.9struct link *next14.10p->next m>p->data14.11(struct list*) struct list struct list* struct list return h三. 编程题14.12 #include #define N 3 struct stud{char num[5], name[10];int s[4];double ave;};void readrec(struct stud array[], int size)int iLoop;for(iLoop=0; iLoop { scanf("%s%s%d%d%d%d", array[iLoop].num,array[iLoop].name, &array[iLoop].s[0], &array[iLoop].s[1],&array[iLoop].s[2], &array[iLoop].s[3]);array[iLoop].ave = (array[iLoop].s[0] + array[iLoop].s[1] +array[iLoop].s[2] + array[iLoop].s[3])/4.0; }return;void writerec(struct stud array[], int size) int iLoop;for(iLoop=0; iLoop{ printf("%s\t%s\t%d\t%d\t%d\t%d\t%f\n",array[iLoop].num,array[iLoop].name,array[iLoop].s[0],array[iLoop].s[1],array[iLoop].s[2],array[iLoop].s[3], array[iLoop].ave);return;int main(){struct stud stu[N];readrec(stu, N);writerec(stu, N);return 0;14.13 #include #include #define N 100 struct node struct node* next; int data;}}};int seekMaxValue(struct node *pNode) int max;struct node* pMove;pMove = pNode; max = pMove->data;pMove = pMove->next;while(pMove) if(max < pMove->data) max = pMove->data; pMove = pMove->next;return max;struct node* seekMaxValueAddress(struct node *pNode) int max; struct node* maxAddress;struct node* pMove;pMove = pNode; max = pMove->data;maxAddress = pMove;pMove = pMove->next;while(pMove) if(max < pMove->data) max = pMove->data; maxAddress = pMove;}pMove = pMove->next;return maxAddress;int main()struct node* head;struct node* pNode;int iLoop;head = (struct node*)malloc(sizeof(struct node));pNode = head;pNode->next = NULL; for(iLoop=0; iLoop { pNode->next = (struct node*)malloc(sizeof(struct node));pNode = pNode->next;pNode->next = NULL;pNode->data = iLoop;printf("%d\n", seekMaxValue(head->next));printf("%d\n", seekMaxValueAddress(head->next));return 0;第十五章一. 选择题15.1 D 15.2 A 15.3 B 15.4 A二. 填空题15.51111000015.6ay15.7a|0xffff15.8x|0xff0015.9a=(012500>>2)15.10ch|0x20第十六章一. 选择题16.1 B 16.2 C二. 填空题16.3 3 !feof(f1) f2 fclose(f1) fclose(f2)16.4fopen(fname,"w") ch16.5"r" !feof(fp) fgetc(fp)16.6CCCCBBBBAAAA三. 编程题16.7 #include #define N 10 #define LEN 81 int main(){char *str[N] = {"AAAAAAAAA", "BBBBBBBBB", "CCCCCCCCC","DDDDDDDDD", "EEEEEEEEE", "FFFFFFFFF", "GGGGGGGGG","HHHHHHHHH", "IIIIIIIII", "JJJJJJJJJ"}; char str2[N][LEN];FILE *fp;int iLoop;fp = fopen("str .txt", "w");if(fp == NULL){printf(" 创建文件失败!\n");return 1;} else for(iLoop = 0; iLoop < N; iLoop++) fputs(str[iLoop], fp);fputs("\n",fp);fclose(fp);fp = fopen("str .txt", "r");if(fp == NULL){printf(" 打开文件失败!\n");return 1;else for(iLoop = 0; iLoop < N; iLoop++) fgets(str2[iLoop], LEN - 1, fp);fclose(fp);for(iLoop = 0; iLoop < N; iLoop++) printf("%s", str2[iLoop]);return 0;16.8 #include #define N 10 int main() float num;int iLoop;FILE *fp;fp = fopen("num.bin", "wb+");if(fp == NULL){}printf(" 创建文件失败!\n");return 1;/* 从键盘读入10 个数并写文件*/ printf(" 请输入%d 个数:", N);for(iLoop = 0; iLoop < N; iLoop++) scanf("%f", &num);fwrite(&num, sizeof(num), 1, fp); }/* 文件指针回到开始处*/ rewind(fp);/* 从文件读出10 个数并显示*/ for(iLoop = 0; iLoop < N; iLoop++) {fread(&num, sizeof(num), 1, fp);printf("%f\n", num);}/* 移文件指针到第四个数开始处*/ fseek(fp, 3L*sizeof(num),SEEK_SET);/* 读入一个新数据*/ printf(" 请输入一个新数据:");scanf("%f", &num); fwrite(&num, sizeof(num), 1, fp); /* 文件指针回到开始处*/ rewind(fp);/* 从文件读出10 个数并显示*/ for(iLoop = 0; iLoop < N; iLoop++)fread(&num, sizeof(num), 1, fp);printf("%f\n", num);}/* 关闭文件*/ fclose(fp);return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国计算机等级考试二级C语言程序设计一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列选项中不符合良好程序设计风格的是A)源程序要文档化B)数据说明的次序要规范化C)避免滥用goto语句 D)模块设计要保证高耦合、高内聚(2)从工程管理角度,软件设计一般分为两步完成,它们是A)概要设计与详细设计B)数据设计与接口设计C)软件结构设计与数据设计D)过程设计与数据设计(3)下列选项中不属于软件生命周期开发阶段任务的是A)软件测试B)概要设计C)软件维护D)详细设计(4)在数据库系统中,用户所见的数据模式为A)概念模式B)外模式C)内模式D)物理模式(5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A)编码设计B)测试阶段C)运行阶段D)物理设计(6)设有如下三个关系表下列操作中正确的是A)T=R∩S B)T=R∪SC)T=R×S D)T=R/S(7)下列叙述中正确的是A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小D)上述三种说法都不对(8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A)63 B)64 C)6 D)7(9)数据库技术的根本目标是要解决数据的A)存储问题B)共享问题C)安全问题D)保护问题(10)对下列二叉树进行中序遍历的结果是A)ACBDFEG B)ACBDFGE C)ABDCGEF D)FCADBEG(11)下列叙述中错误的是A)一个C语言程序只能实现一种算法B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在(12)下列叙述中正确的是A)每个C程序文件中都必须要有一个main()函数B)在C程序中main()函数的位置是固定的C)C程序中所有函数之间都可以相互调用,与函数所在位置无关D)在C程序的函数中不能定义另一个函数(13)下列定义变量的语句中错误的是A)int_int; B)doubleint_; C)charFor; D)floatUS$;(14)若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是A)++x,y=x-- B)x+1=y C)x=x+10=x+y D)double(x)/10(15)以下关于逻辑运算符两侧运算对象的叙述中正确的是A)只能是整数0或1 B)只能是整数0或非0整数C)可以是结构体类型的数据D)可以是任意合法的表达式(16)若有定义intx,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是A)(x-y>0) B)(x-y<0) C)(x-y<0||x-y>0) D)(x-y==0)(17)有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是A)2,3,3 B)2,3,2 C)2,3,1 D)2,2,1(18)设有定义:inta;floatb; 执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0<回车>,a和b的值分别是A)876和543.000000 B)87和6.000000C)87和543.000000 D)76和543.000000(19)有以下程序main(){inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf("a+b=%d\n",a+b);/*输出计算结果*/}程序运行后的输出结果是A)a+b=10 B)a+b=30 C)30 D)出错(20)在嵌套使用if语句时,C语言规定else总是A)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对(21)下列叙述中正确的是A)break语句只能用于switch语句B)在switch语句中必须使用defaultC)break语句必须与switch语句中的case配对使用D)在switch语句中,不一定使用break语句(22)有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}执行后的输出结果是A)1 B)2 C)4 D)死循环(23)有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}执行后的输出结果是A)5 B)24 C)32 D)40(24)以下选项中,值为1的表达式是A)1–'0' B)1-'\0' C)'1'-0 D)'\0'-'0' (25)有以下程序fun(intx,inty){return(x+y);}main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是A)6 B)7 C)8 D)9(26)有以下程序main(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}执行后的结果是A)输出字符a的ASCII码B)输出字符c的ASCII码C)输出字符c D)程序出错(27)有以下程序fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}执行后的输出结果是A)5,5 B)5,11 C)11,11 D)11,5(28)有以下程序fun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是A)7 B)3 C)2 D)0(29)在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价(30)有以下程序main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}执行后的输出结果是A)1 B)2 C)3 D)4(31)若有定义:intw[3][5];,则以下不能正确表示该数组元素的表达式是A)*(*w+3) B)*(w+1)[4] C)*(*(w+1)) D)*(&w[0][0]+1) (32)若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是A)intfun(doublex,int*n); B)intfun(double,int);C)intfun(double*x,intn); D)intfun(double*,int*);(33)有以下程序voidchange(intk[]){k[0]=k[5];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4){change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("\n");}程序运行后输出的结果是A)678910 B)13579 C)12345 D)62345(34)有以下程序main(){intx[3][2]={0},i;for(i=0;i<3;i++)scanf("%d",x[i]);printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]);}若运行时输入:246<回车>,则输出结果为A)200 B)204 C)240 D)246(35)有以下程序intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是A)k=(*f)(a,b); B)k=add(a,b);C)k=*f(a,b); D)k=f(a,b); (36)有以下程序#includemain(intargc,char*argv[]){inti=1,n=0;while(iprintf("%d\n",n);}该程序生成的可执行文件名为:proc.exe。
若运行时输入命令行:proc1234567则程序的输出结果是A)3 B)5 C)7 D)11(37)有以下程序#include#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的运行结果是A)1212 B)117 C)1111 D)127(38)有以下结构体说明、变量定义和赋值语句structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句中错误引用结构体变量成员的是A)scanf("%s",s[0].name); B)scanf("%d",&s[0].age);C)scanf("%c",&(ps->sex)); D)scanf("%d",ps->age);(39)若有以下定义和语句uniondata{inti;charc;floatf;}x;inty;则以下语句正确的是A)x=10.5; B)x.c=101; C)y=x; D)printf("%d\n",x); (40)有以下程序#includemain(){FILE*fp;inti;charch[]="abcd",t;fp=fopen("abc.dat","wb+");for(i=0;i<4;i++)fwrite(&ch[i],1,1,fp);fseek(fp,-2L,SEEK_END);fread(&t,1,1,fp);fclose(fp);printf("%c\n",t);}程序执行后的输出结果是A)d B)c C)b D)a二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。