国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13
- 格式:doc
- 大小:34.14 KB
- 文档页数:7
国家二级(C语言)机试模拟试卷123(题后含答案及解析)题型有:1. 选择题 2. 程序填空题 3. 程序修改题 4. 程序设计题选择题1.在关系代数运算中,有5种基本运算,它们是( )。
A.并(∪)、差(-)、交(∩)、除(÷)和笛卡儿积(×)B.并(∪)、差(-)、交(∩)、投影(π)和选择(σ)C.并(∪)、交(∩)、投影(π)、选择(σ)和笛卡儿积(×)D.并(∪)、差(-)、投影(π)、选择(σ)和笛卡儿积(×)正确答案:D解析:并、差、笛卡儿积、投影和选择是5种基本的运算,其他运算即交、连接和除,均可以通过5种基本的运算来表达。
2.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。
A.外模式/模式B.内模式/外模式C.模式/内模式D.内模式/模式正确答案:A解析:数据库有两层映像,即外模式/模式和模式/内模式映像。
模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。
3.下列关于线性链表的描述中,正确的是( )。
Ⅰ、只含有一个指针域来存放下一个元素地址Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)Ⅲ、结点由两部分组成:数据域和指针域。
A.仅Ⅰ、ⅡB.仅Ⅰ、ⅢC.仅Ⅱ、ⅢD.全部正确答案:D解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。
在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。
其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
4.下面关于数据库三级模式结构的叙述中,正确的是( )。
A.内模式可以有多个,外模式和模式只有一个B.外模式可以有多个,内模式和模式只有一个C.内模式只有一个,模式和外模式可以有多个D.模式只有一个,外模式和内模式可以有多个正确答案:B解析:数据库的三级模式结构是指数据库系统的外模式、模式和内模式。
国家二级C语言(C语言程序设计)机试模拟试卷13(题后含答案及解析)题型有:1. 选择题选择题1.关于do 循环体while (条件表达式); 以下叙述中正确的是A.循环体的执行次数总是比条件表达式的执行次数多一次B.条件表达式的执行次数总是比循环体的执行次数多一次C.条件表达式的执行次数与循环体的执行次数无关D.条件表达式的执行次数与循环体的执行次数一样正确答案:D解析:do-while语句先执行语句,后判断表达式的值。
故do-while语句又称“直到型”循环结构。
由于是先执行后判断,因此do-while语句的循环语句至少被执行一次,循环条件至少判断一次。
知识模块:C语言程序设计2.以下不构成无限循环的语句或语句组是A.n=0; do {++n;} while (n<=0);B.n=0; while (1) { n++;}C.n=10; while (n); {n--;}D.for(n=0,i=1; ; i++) n+=i;正确答案:A解析:选项B中while(1)永远为真所以进入死循环,选项C中while(n=10)同理,选项D中for循环没有循环限定条件也将进入无限循环,只有选项A中while(n<=0)循环判定成立,循环将不进入无限循环。
知识模块:C语言程序设计3.有以下程序main( ){ int i=5; do { if (i%3=1) if (i%5==2) { printf(“*%d”, i); break;} i++; } while(i!=0); printf(“\n”);}程序的运行结果是A.*3*5B.*5C.*7D.*2*6正确答案:C解析:由于循环变量i的初值等于5,所以第一、二次进入do….while循环语句时,条件语句if(i%3==1), if(i%5==2){printf(“*%d”,i);break;}不执行,只执行i++语句。
当i=7时,满足条件语句if(i%3==1),if(i%5==2){printf(“*%d”,i);break;},所以输出*7,结束循环。
国家二级C语言机试(操作题)模拟试卷313(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:将不带头结点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头至尾的数据为10,4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#include<stdlib.h>#define N 6typedef struct node{ int data;struct node*next;}NODE;void fun(NODE*h){ NODE*p,*q;int t ;p=h;while(P){/*********found*********/q=【1】;/*********found*********/while(【2】) {if(P->data>q->data) {t=P->data;P->data=q ->data ;q->data=t;) q=q->next;}/*********found*********/p=【3】;} } NODE*creatlist(int a[]) { NODE*h,*p,*q;int i;h=NULL;for(i=0;i<N;i++) { q=(NODE *)malloc(sizeof (NODE));q->data=a[i];q->next=NULL;if(h==NULL)h=P=q;else{P->next=q;P=q;) } return h;} void outlist(NODE*h) { NODE*P;p=h;if(P==NULL) printf(“The list is NULL!\n”);else { printf(“\nHead”);do {printf(“->%d”,P->data);p=p->next;) while(p!=NULL);printf(“->End\n”);} } main( ){ NODE*head;int a[N]={0,10,4,2,8,6);head=creatlist(a);printf(“\nThe original list:\n”);outlist(head);fun(head);printf(“\nThe list after inverting:\n”);outlist(head);}正确答案:(1)p->next(2)q(3)p->next解析:填空1:从第2个while循环可知,q的初值应该为p的next,故此空应该填写p->next。
国家二级C语言机试(结构体、共同体、位运算及文件操作)模拟试卷12(题后含答案及解析)题型有:1. 选择题选择题1.关于typedef的叙述中错误的是( )。
A.用typedef可以为各种类型起别名,但不能为变量起别名B.可以通过typedef增加新的类型C.用typedef定义新的类型名后,原有类型名仍有效D.可以用typedef将已存在的类型用一个新的名字来代表正确答案:B解析:C语言允许用typedef说明一种新类型名或为现有类型起个别名,而不是创建新类型,说明新类型名的语句一般形式为:typedef类型名标识符;在此,“类型名”必须是在此语句之前已有定义的类型标识符。
标识符是一个用户定义标识符,用作新的类型名。
typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。
知识模块:结构体及文件操作2.正确的结构体类型说明和变量定义是( )。
A.typedef struct f{int n;char c;}STR;STR t1,t2;B.struct STR;{int n;char C;};STR t1,t2;C.typedef stmct STR;{int n=0;char c=‘A’;}t1,t2;D.struct{int n;char c;}STR;STR t1,t2;正确答案:A解析:定义结构体类型的一般形式为:struct结构体名{成员列表};struct 结构体名后不能加“:”号。
但定义完之后要在句末加分号,所以选项B、C有误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为“stmct t1,t2;”。
选项A为用户自定义类型,其为正确的定义形式。
知识模块:结构体及文件操作3.若typedef int*T;T a[5];则与a的定义相同的是( )。
A.int*a[5];B.int(*a)[5]C.int,*a;D.int a[5];正确答案:A解析:typedef的主要功能是为存在的类型指定一个新的别名,后面的代码中可以利用该新定义的别名定义变量,题目定义了整型指针类型T,而后利用T 定义了整型指针数组a,含有5个元素,选项A中定义了整型指针数组a,选项B定义了一个指向一维数组的指针a,选项C定义指针变量,而选项D为定义整型数组最常用的形式,数组a中可以存放5个数据元素。
国家二级计算机考试c语言试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中变量的描述,错误的是:A. 变量名必须以字母开头B. 变量名可以包含数字和下划线C. 变量名区分大小写D. 变量名可以以数字开头答案:D2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C4. 下列哪个选项不是C语言中的控制结构?A. 顺序结构B. 选择结构C. 循环结构D. 函数结构5. 在C语言中,用于定义函数的关键字是:A. intB. voidC. returnD. function答案:B6. C语言中,用于声明一个字符型变量的关键字是:A. intB. charC. floatD. double答案:B7. 在C语言中,以下哪个选项是正确的注释方式?A. //B. /* */C.D. @@答案:B8. C语言中,用于定义一个浮点型变量的关键字是:A. intB. floatC. doubleD. char答案:B9. 在C语言中,以下哪个选项不是合法的整数常量?B. 0x1AC. 0123D. 1.23答案:D10. 在C语言中,以下哪个选项不是合法的标识符?A. _nameB. name2C. 2nameD. name-name答案:C二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个数组。
答案:int2. C语言中,使用________函数可以输出格式化的字符串。
答案:printf3. 如果要定义一个指向整型数据的指针,应该使用________关键字。
答案:int*4. 在C语言中,使用________关键字可以定义一个结构体。
答案:struct5. 使用________函数可以获取当前系统时间。
答案:time6. 在C语言中,使用________关键字可以定义一个枚举类型。
国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷1(题后含答案及解析)题型有:1. 选择题选择题1.若定义:int array[9],*p=array;并在以后的语句中未改变p的值,不能表示array[1]地址的是( )。
A.p+1B.array++C.array+1D.++p正确答案:B解析:本题选项C)中array++是先取array的值,后自增,所以是错误的。
知识模块:编译预处理和指针2.在说明语句”int*f( );”中,标识符f代表的是( )。
A.一个用于指向函数的指针变量B.一个返回值为指针类型的函数名C.一个用于指向一维数组的行指针D.一个用于指向整型数据的指针变量正确答案:B解析:本题主要考查指针函数和函数指针,本题申是指针函数,即f指向一个返回值为指针的函数。
知识模块:编译预处理和指针3.不合法的main(、)函数命令行参数表示形式是( )。
A.main(int a,char*c[])B.main(int argv,char*argc[])C.main(int arc,char*arv[][])D.main(int argc,char*argv[])正确答案:C解析:C语言中规定:在main( )函数中使用命令行参数时,第二个参数应该为字符型指针数组或字符型二级指针。
知识模块:编译预处理和指针4.有函数如下:char fun(char*p) { return p;} 该函数的返回值是( )。
A.无确切的值B.形参p自身的地址值C.形参p中存放的地址值D.一个临时存储单元的地址正确答案:C解析:本题中p是一个字符型的指针,p是一个地址,因此返回的是形参p 中地址值。
知识模块:编译预处理和指针5.下列程序的输出结果是( )。
struct U {int x,y,z;};main( ) { struct U s[2]={{1,2,3},{4,5,6));int t;t=s[0].x+s[1].y;printf(“%d\n”,t);}A.5B.6C.7D.8正确答案:B解析:本题中的”struct U”结构含有3个数值域,并定义了一个结构数组S,计算s[0]的x域与s[1]的y域之和,故s[0].x+s[1].y=1+5=6,答案为B)。
计算机二级《C语言》模拟试题及答案第一篇:C语言基础知识1. C语言的发明人是谁?简要介绍一下他的背景。
2. int型变量的取值范围是多少?unsigned int呢?3. 请问下面这段代码输出的结果是什么?char str1[] = "hello";char str2[] = "world";strcat(str1, str2);printf("%s", str1);4. 以下哪些数据类型可以用来存储浮点数?A. floatB. doubleC. long doubleD. char5. 下列代码的输出结果是什么?int a = 1;long b = 2;float c = 3.0;printf("%ld\n", a + b + c);答案:1. C语言的发明人是丹尼斯·里奇(Dennis Ritchie)。
他于1941年出生在美国,是贝尔实验室研究员和计算机科学家。
在20世纪70年代,他和肯·汤普逊(Ken Thompson)合作,发明了UNIX操作系统和C语言。
C语言是一种高级计算机程序语言,在操作系统、编译器、数据库、游戏等领域被广泛使用。
丹尼斯·里奇因发明了C语言,被誉为“计算机编程之父”。
2. int型变量的取值范围是-2147483648到2147483647,unsigned int的取值范围是0到4294967295。
3. 输出结果为“helloworld”。
strcat是C语言的字符串拼接函数,将两个字符串连接成一个字符串。
在拼接之前,需要保证第一个字符串的数组足够大,以容纳两个字符串的内容。
如果第一个字符串不够大,程序会出现内存溢出等问题。
4. A、B、C三个数据类型可以用来存储浮点数。
5. 输出结果为“6”。
在printf函数中,%ld表示输出长整型数据,而c是一个float型变量。
一、选择题在下列各题旳A)、B)、C)、D)四个选项中,只有一种选项是对旳旳,请将对旳旳选项涂写在答题卡对应位置上,答在试卷上不得分。
(1)程序流程图中带有箭头旳线段体现旳是CA)图元关系B)数据流C)控制流D)调用关系(2)下面不属于软件设计原则旳是 CA)抽象B)模块化C)自底向上D)信息隐蔽(3)下列选项中,不属于模块间耦合旳是 CA)数据耦合B)标识耦合C)异构耦合D)公共耦合(4)下列论述中,不属于软件需求规格阐明书旳作用旳是DA)便于顾客、开发人员进行理解和交流B)反应出顾客问题旳构造,可以作为软件开发工作旳基础和根据C)作为确认测试和验收旳根据D)便于开发人员进行需求分析(5)算法旳时间复杂度是指CA)执行算法程序所需要旳时间B)算法程序旳长度C)算法执行过程中所需要旳基本运算次数D)算法程序中旳指令条数(6)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用旳算法是BA)堆排序B)直接插入排序C)迅速排序D)B)和C) (7)栈底至栈顶依次寄存元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列也许是BA)ABCED B)DCBEA C)DBCEA D)CDABE(8)数据库设计包括两个方面旳设计内容,它们是AA)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)构造特性设计和行为特性设计(9)关系表中旳每一横行称为一种AA)元组B)字段C)属性D)码(10)设有体现学生选课旳三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC旳关键字(键或码)为 CA)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)如下不对旳旳论述是DA)在C程序中,逗号运算符旳优先级最低B)在C程序中,APH和aph是两个不同样旳变量C)若a和b类型相似,在计算了赋值体现式a=b后b中旳值将放入a中,而b中旳值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(12)请选出可用作C语言顾客标识符旳是BA)void,define,WORD B)a3_b3,_123,IF C)FOR,--abc,CaseD)2a,Do,Sizeof(13)如下选项中,不能作为合法常量旳是BA)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 (14)在C语言中,运算对象必须是整型数旳运算符是AA)% B)\ C)%和\D)**(15)若变量均已对旳定义并赋值,如下合法旳C语言赋值语句是AA)x=y==5; B)x=n%2.5; C)x+n=i; D)x=5=4+1;(16)有如下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a旳ASCII码值为97,则执行上述程序段后输出成果是DA)因变量类型与格式描述符旳类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12 D)a,97,k=12(17)已知字母A旳ASCII代码值为65,若变量kk为char型,如下不能对旳判断出kk中旳值为大写字母旳体现式是BA)kk>=′A′&&kk<=′Z′ B)!(kk>=′A′||kk<=′Z′) C)(kk+32)>=′a′&&(kk+32)<=′Z′ D)isa lpha(kk)&&(kk<91)(18)当变量c旳值不为2、4、6时,值也为"真"旳体现式是BA)(c==2)||(c==4)||(c==6) B)(c>=2&& c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若有条件体现式(exp)?a++:b--,则如下体现式中能完全等价于体现式(exp)旳是BA)(exp==0) B)(exp!=0) C)(exp==1) D)(exp!=1)(20)如下不对旳旳定义语句是BA)double x[5]={2.0,4.0,6.0,8.0,10.0}; B)int y[5]={0,1,3,5,7,9}; C)char c1[]={′1′,′2′,′3′,′4′,′5′}; D)char c2[]={′\x10′, ′xa′, ′\x8′};(21)下列程序执行后旳输出成果是Bmain(){ int a[3][3], *p,i;p=&a[0][0];for(i=1; i<9; i++)p[i]=i+1;printf("%d\n",a[1][2];)A)3 B)6 C)9 D)随机数(22)设有如下程序段Bint x=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中旳控制体现式是非法旳D)程序段执行无限次(23)下面程序段旳运行成果是Cchar *s="abcde";s+=2;printf("%d",s);A)cde B)字符′c′ C)字符′c′旳地址D)无确定旳输出成果(24)阅读下列程序,则执行后旳成果为A#include "stdio.h"main(){ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}A)3e,6 B)62,5 C)56,5 D)3E,6(25)下面判断对旳旳是CA)char *a="china";等价于char *a;*a="china"; B)char str[5]={"china"};等价于char str[]={"china"};C)char *s="china";等价于char *s;s="china"; D)char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";(26)若有定义:int a[2][3];,如下选项中对a数组元素对旳引用旳是DA)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1](27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误旳输入语句是DA)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)有如下程序(29)#include <stdio.h>#define N 5#define M N+1#define f(x) (x*M)main(){ int i1,i2;i1=f(2);i2=f(1+1);printf("%d %d\n",i1,i2);}程序旳运行成果是BA)12 12 B)11 7 C)11 11 D)12 7(29)若有如下阐明和定义union dt{ int a; char b; double c;}data;如下论述中错误旳是DA)data旳每个组员起始地址都相似B)变量data所占内存字节数与组员c所占字节数相等C)程序段:data.a=5;printf("%f\n",data.c);输出成果为5. D)data可以作为函数旳实参(30)有如下程序#include<stdio.h>main(){FILE *fp;int k,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后旳输出成果是DA)1 2 B)1 4 C)123 4 D)123 456 (31)若已定义int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;其中则对a数组元素不对旳旳引用是DA)a[p-a] B)*(&a[i]) C)p[i] D)a[10](32)有如下程序#include <stdio.h>void fun(int *s,int n1,int n2){ int i,j,t;i=n1; j=n2;while(i<j) {t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){ int a[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3); fun(a,4,9); fun(a,0,9);for(k=0;k<l0;k++)printf("%d",a[k]); printf("\n");}程序旳运行成果是CA) B) C) D)(33)阅读下列程序,当运行函数时,输入asd af aa z67,则输出为A#include <stdio.h>#include <ctype.h>#include <string.h>int fun (char *str){ int i,j=0;for(i=0;str[i]!=′ \0′;i++)if(str[i]!=′ ′)str[j++]=str[i];str[j]= ′\0′;}main(){char str[81];int n;printf("Input a string : ");gets(str);puts(str);fun(str);printf("%s\n",str);}A)asdafaaz67 B)asd af aa z67 C)asd D)z67(34)有如下程序int fun(int n){if(n==1)return 1;elsereturn(n+fun(n-1));}main(){int x;scanf("%d",&x); x=fun(x);printf("%d\n",x)}执行程序时,给变量x输入10,程序旳输出成果是AA)55 B)54 C)65 D)45(35)下面程序段中,输出*旳个数是 Cchar *s="\ta\018bc";for(;*s!='\0';s++)printf("*");A)9 B)5 C)6 D)7(36)C语言构造体类型变量在程序运行期间BA)TC环境在内存中仅仅开辟一种寄存构造体变量地址旳单元B)所有旳组员一直驻留在内存中C)只有最开始旳组员驻留在内存中D)部提组员驻留在内存中(37)已知函数旳调用形式为fread(buf,size,count,fp),参数buf旳含义是CA)一种整型变量,代表要读入旳数据项总数B)一种文献指针,指向要读旳文献C)一种指针,指向要读入数据旳寄存地址D)一种存储区,寄存要读旳数据项(38)设有如下语句char x=3,y=6,z;则z旳二进制值是BA) B) C) D)(39)在C语言中,只有在使用时才占用内存单元旳变量,其存储类型是AA)auto和register B)extern和register C)auto和static D)static和register (40)设有定义语句int (*f)(int);,则如下论述对旳旳是BA)f是基类型为int旳指针变量B)f是指向函数旳指针变量,该函数具有一种int类型旳形参C)f是指向int类型一维数组旳指针变量D)f是函数名,该函数旳返回值是基类型为int类型旳地址二、填空题请将每一种空旳对旳答案写在答题卡序号旳横线上,答在试卷上不给分。
二级计算机技能考试c语言试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 若有定义 `int a[3][4], *p[4];`,则以下哪个表达式是合法的?A. p[0] = a[0]B. p[0] = &a[0]C. p = aD. *p[0] = a[0]答案:A3. 在C语言中,以下哪个函数用于计算并返回字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A4. 以下哪个选项是正确的C语言变量声明?A. int 5;B. int $a;C. int _5a;D. int a-5;答案:C5. 在C语言中,以下哪个运算符用于计算两个整数的差?A. %B. /C. -D. ^答案:C6. 若有定义 `int a = 10;`,则执行 `a += 5;` 后,变量a的值是多少?A. 5B. 10C. 15D. 20答案:C7. 在C语言中,以下哪个关键字用于声明一个无限循环?A. whileB. doC. forD. goto答案:C8. 在C语言中,以下哪个函数用于打开一个文件?A. fopen()B. fclose()C. fgetc()D. fputs()答案:A9. 若有定义 `char str[] = "Hello";`,则执行 `str[0] = 'J';` 后,字符串str的内容是什么?A. "Hello"B. "Jello"C. "Jello"D. "Jello"答案:B10. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:B二、填空题(每题2分,共20分)1. 在C语言中,使用________运算符可以实现逻辑与操作。
计算机二级C语言测试题及答案解析计算机二级C语言测试题及答案解析C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,下面给大家整理了计算机二级C语言测试题及答案,欢迎阅读!计算机二级C语言测试题及答案解析1.(A )是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从 C 开始执行。
A、程序中第一条可执行语句B、程序中第一个函数C、程序中的main函数D、包含文件中的第一个函数3、以下说法中正确的是( C )。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是( B ) 。
A、 C程序的工作过程是编辑、编译、连接、运行B、 C语言不区分大小写。
C、 C程序的三种基本结构是顺序、选择、循环D、C程序从main函数开始执行5.下列正确的标识符是(C )。
A、-a1B、a[i]C、a2_iD、int t5~8题为相同类型题考点:标识符的命名规则只能由字母、数字、下划线构成数字不能作为标识符的开头关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B )。
A、3axB、xC、caseD、-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是( C )。
A、 %xB、a+bC、a123D、123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是( A)。
2021年3月全国计算机等级考试二级C语言历年真题和答案2021年3月全国计算机等级考试《二级C语言》题库【历年真题+章节题库+模拟试题】目录•第一部分历年真题•全国计算机等级考试《二级C语言程序设计》真题及详解(一)•全国计算机等级考试《二级C语言程序设计》真题及详解(二)•全国计算机等级考试《二级C语言程序设计》真题及详解(三)•全国计算机等级考试《二级C语言程序设计》真题及详解(四)•全国计算机等级考试《二级C语言程序设计》真题及详解(五)•全国计算机等级考试《二级C语言程序设计》真题及详解(六)•第二部分章节题库•公共基础知识•第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语言程序设计》模拟试题及详解(八)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(九)•全国计算机等级考试《二级C语言程序设计》模拟试题及详解(十)•常见问题电子书常见问题1.电子书产品(电子书、题库、视频、全套等)能在几种设备上使用?如何使用?答:支持电脑(WIN10、WIN8、WIN7)、手机、平板等多端同步使用。
国家c语言二级机试题及答案一、选择题(每题2分,共40分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是正确的C语言函数声明?A. int function(int a, int b);B. int function(int, int);C. int function(int a; int b);D. int function(int a, int b)答案:A3. 在C语言中,哪个运算符用于取地址?A. *B. &C. %D. #答案:B4. 下列哪个选项是C语言中合法的数组声明?A. int a[10];B. int b[2,3];C. int c[2][3];D. int d[];答案:C5. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[] = "Hello";B. char str[6] = "Hello";C. char str[5] = "Hello";D. char str[] = "Hello", "World";答案:A6. 在C语言中,以下哪个关键字用于定义一个枚举类型?A. enumB. structC. unionD. typedef答案:A7. C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h" <stdio.h>D. #include <stdio.h> "stdio.h"答案:B8. 在C语言中,以下哪个选项是正确的循环语句?A. do-whileB. do...whileC. do { ... } while (condition);D. do { ... } while;答案:C9. 下列哪个选项是C语言中合法的函数原型?A. int function();B. int function(int);C. int function(int a, int b);D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int *ptr = 0;C. int *ptr = NULL;D. All of the above答案:D二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个指针变量。
全国计算机二级《C语言》考试题库与答案全国计算机二级《C语言》考试题库与答案在学习、工作中,我们都离不开试题,借助试题可以检验考试者是否已经具备获得某种资格的基本能力。
什么样的试题才能有效帮助到我们呢?以下是店铺为大家收集的全国计算机二级《C语言》考试题库与答案,欢迎大家分享。
全国计算机二级《C语言》考试题库与答案篇1(1)下列关于栈叙述正确的是( )。
A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先被删除(2)下列叙述中正确的是( )。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D.以上说法都不正确某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( )。
A.3B.4C.6D.7软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是( ):A.学生成绩管理系统B.c语言编译程序C.UNIX操作系统D.数据库管理系统(5)结构化程序所要求的基本结构不包括( )。
A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构(6)下面描述中错误的是( )。
A.系统总体结构图支持软件系统的详细设计B.软件设计是将软件需求转换为软件表示的过程C.数据结构与数据库设计是软件设计的任务之一D.PAD图是软件详细设计的表示工具(7)负责数据库中查询操作的数据库语言是( )。
A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言一个教师可讲授多门课程,一门课程可由多个教师讲授。
则实体教师和课程间的联系是( )。
A.1:1联系B.1:m联系C.m:1联系D.m:n联系(9)已知大写字母A的ASCIl码值是65,小写字母a的ASCIl码值是97。
以下不能将变量C中的大写字母转换为对应小写字母的语句是( )。
国家二级C语言机试(C语言基础知识)模拟试卷13(题后含答案及解析)题型有:1. 选择题选择题1.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。
关于转换以下说法错误的是A.一条C语句可能会被转换成多条机器指令B.一条C语句对应转换成一条机器指令C.一条C语句可能会被转换成零条机器指令D.某种类型和格式的C语句被转换成机器指令的条数是固定的正确答案:B解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。
这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。
知识模块:C语言基础知识2.以下选项中不属于C语言程序运算符的是A.sizeofB.( )C.<>D.&&正确答案:C解析:sizeof为测试内存的运算符,( )为算术运算符,&&为逻辑运算符。
而<>不是C语言的运算符,C语言中!=表示不等于。
知识模块:C语言基础知识3.若变量已正确定义并赋值,以下不能构成C语句的选项是A.A=a+b:B.B++:C.a=a+bD.A?a:b;正确答案:C解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。
知识模块:C语言基础知识4.以下叙述中正确的是A.程序必须包含所有三种基本结构才能成为一种算法B.如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达C.只有简单算法才能在有限的操作步骤之后结束D.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令正确答案:D解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。
由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。
(11)以下叙述中正确的是A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所⽤数据结构C.程序设计的任务就是确定所⽤算法D.以上三种说法都不完整(12)以下选项中,能⽤作⽤户标识符的是A.voidB.8_8C._0_D.unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输⼊2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产⽣错误,其出错原因是A.定义语句出错,case是关键字,不能⽤作⽤户⾃定义标识符B.定义语句出错,printF不能⽤作⽤户⾃定义标识符C.定义语句⽆错,scanf不能作为输⼊函数使⽤D.定义语句⽆错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A.0B.3C.4D.5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A.-20B.-10C.0D.10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运⾏后的输出结果是A.0,0B.1,0C.3,2D.1,217)设有定义:int a=1,b=2,c=3;,以下语句中执⾏效果与其它三个不同的是A.if(a>B. c=a,a=b,b=c;B.if(a>B. {c=a,a=b,b=c;}C.if(a>B. c=a;a=b;b=c;D.if(a>B. {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,C.;}程序运⾏后的输出结果是A.3B.5C.7D.9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A.if((a>b)&&(b>C.) k=1;else k=0;B.if((a>b)||(b>C. k=1;else k=0;C.if(a<=B. k=0;else if(b<=C.k=1;D.if(a>B. k=1;else if(b>C.k=1;else k=0;20)有以下程序#includemain(){ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运⾏后的输出结果是A.0B.2C.3D.5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运⾏后的输出结果是A.0 2B.1 3C.5 7D.1 2(22)有以下定义语句,编译时会出现编译错误的是A.char a=’a’;B.char a=’\n’;C.char a=’aa’;D.char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运⾏后的输出结果是A.E,68B.D,69C.E,DD.输出⽆定值(24)有以下程序#includep=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运⾏后的输出结果是A.32B.12C.21D.22(25)以下函数findmax拟实现在数组中查找值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i{ max=MIN;if(maxreturn max;}造成错误的原因是A.定义语句int i,max;中max未赋初值B.赋值语句max=MIN;中,不应给max赋MIN值C.语句if(maxD.赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运⾏后的输出结果是A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A.p=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运⾏后的输出结果是A.9,One*WorldB.9,One*DreamC.10,One*DreamD.10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A.3 3 4 4B.2 0 5 0C.3 0 4 0D.0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运⾏后的输出结果是A.7,4B.4,10C.8,8D.10,10(31)下⾯是有关C语⾔字符数组的描述,其中错误的是A.不可以⽤赋值语句给字符数组名赋字符串B.可以⽤输⼊语句把字符串整体输⼊给字符数组C.字符数组中的内容不⼀定是字符串D.字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ while((*b=*a)!=’\0’) {a++,b++;} }A.将a所指字符串赋给b所指空间B.使指针b指向a所指字符串C.将a所指字符串和b所指字符串进⾏⽐较D.检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下⾯对函数指针的定义和赋值均是正确的是A.void (*pf)(); pf=fun;B.viod *pf(); pf=fun;C.void *pf(); *pf=fun;D.void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运⾏以后的输出结果是A.7B.8C.9D.10(35)有以下程序#include#define f(x) x*x*xs=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运⾏后的输出结果是A.10,64B.10,10C.64,10D.64,64(36)下⾯结构体的定义语句中,错误的是A.struct ord {int x;int y;int z;}; struct ord a;B.struct ord {int x;int y;int z;} struct ord a;C.struct ord {int x;int y;int z;} a;D.struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向⼀个字符串的是A.char str[ ]=”string”;c=str;B.scanf(“%s”,C.;C.c=getchar();D.*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.C.;}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运⾏后的输出结果是A.1001,ZhangDa,1098.0B.1001,ZhangDa,1202.0C.1001,ChangRong,1098.0D.1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A.16B.8C.4D.2(40)下列关于C语⾔⽂件的叙述中正确的是A.⽂件由⼀系列数据依次排列组成,只能构成⼆进制⽂件B.⽂件由结构序列组成,可以构成⼆进制⽂件或⽂本⽂件C.⽂件由数据序列组成,可以构成⼆进制⽂件或⽂本⽂件D.⽂件由字符序列组成,其类型只能是⽂本⽂件⼆、填空题(每空2分,共30分)(1)某⼆叉树有5个度为2的结点以及3个度为1的结点,则该⼆叉树中共有【1】个结点。
计算机二级C语言五套模拟卷及答案模拟试题一一、选择题(本大题30分,每小题2分)1.下列说法正确的是。
E) main函数必须放在C程序的开头F) main函数必须放在C程序的最后G) main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的H) main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的2.在下面几组数据类型中, 全为最常用的基本数据类型的是哪一组:。
A)整型实型字符型 B)整型数组指针C)数组结构体共用体 D)指针逻辑型空类型3.若有说明语句:char c= ‘\64’ ; 则变量C包含:。
A)1个字符 B)2个字符C)3个字符 D)说明不合法,C值不确定4.设有如下定义和执行语句,其输出结果为:。
int a=3,b=3;a = --b + 1; printf(“%d %d”,a,b);A)3 2 B)4 2 C)2 2 D)2 35.C语言中,运算对象必须是整型数的运算符是。
A)% B)\ C)% 和 \ D)**6.能正确表示x的取值围在[0,100]和[-10,-5]的表达式是。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)7.程序段如下int k=0;while(k++<=2); printf("last=%d\n",k);则执行结果是last= 。
A)2 B)3 C)4 D)无结果8.下面有关for循环的正确描述是。
国家二级C语言机试(公共基础知识)模拟试卷13(题后含答案及解析)题型有:1. 选择题选择题1.下列关于二叉树的叙述中,正确的是( )。
A.叶子节点总是比度为2的节点少一个B.叶子节点总是比度为2的节点多一个C.叶子节点数是度为2的节点数的两倍D.度为2的节点数是度为1的节点数的两倍正确答案:B解析:由二叉树的性质可以知道,在二叉树中叶子节点总是比度为2的节点多一个。
知识模块:二级公共基础知识2.下列叙述中正确的是( )。
A.循环队列是队列的一种链式存储结构B.循环队列是队列的一种顺序存储结构C.循环队列是非线性结构D.循环队列是一种逻辑结构正确答案:B解析:本题主要考查循环队列的概念。
循环队列作为队列的一种也应该是线性结构。
队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。
知识模块:二级公共基础知识3.支持子程序调用的数据结构是( )。
A.栈B.树C.队列D.二叉树正确答案:A解析:栈是一种限定在一端进行插入与删除的线性表。
在主函数调用子函数时,要首先保存主函数的状态,然后转去执行子函数,把子函数的运行结果返回到主函数调用子函数的位置,主函数再接着往行,这种过程符合栈的特点。
所以一般采用栈式存储方式。
知识模块:二级公共基础知识4.一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA正确答案:B解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。
所以出栈顺序是EDCBA54321。
知识模块:二级公共基础知识5.下列叙述中错误的是( )。
A.栈是一种先进后出的线性表B.队列是一种先进先出的线性表C.栈与队列都是线性结构D.栈和队列都是后进后出的线性表正确答案:D解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。
国家二级C语言机试(结构体、共同体、位运算及文件操作)模拟试卷13 (总分50, 做题时间90分钟)1. 选择题1.下列说法正确的是( )。
SSS_SINGLE_SELA 使用typedef可以定义新的数据类型B 使用struct可以定义新的数据类型C 使用typedef可以对现有类型起别名,但不能定义数据类型D 使用new关键字可以定义新的数据类型分值: 2答案:C解析:C语言中只能通过struct关键字定义新的结构体,使用typedef对现有类型起别名,但不能定义新的数据类型,所以答案C正确。
2.以下说法正确的是( )。
SSS_SINGLE_SELA typedef和struct可以联合使用来定义新数据类型B typedef只能单独使用C struct只能单独使用D 以上说法都不正确分值: 2答案:D解析:typedef和struct可以联合使用来定义新的结构体,但不能定义新的数据类型。
所以A,B,C选项的说法均不正确。
答案选D项。
3.若typedef char T[3];T*a;上述定义中a的类型与下面选项中完全相同的是( )。
SSS_SINGLE_SELA char(*A)[3];B char*a;C char a[3];D char*a[3];分值: 2答案:D解析:C语言允许用typed说明一种新类型名。
题目中利用typedef定义了字符数组类型T,而后定义了该类型的指针a,因此a为指针数组。
4.关于typedef的叙述中正确的是( )。
SSS_SINGLE_SELA 在使用typedef改变原类型的名称后,只能使用新的类型名B 使用typedef说明新类型名时,后面不能加分号C 在程序中,允许用typedef来说明一种新的类型名D 使用typedef说明新类型名时,其格式是:typedef新类型名原类型名分值: 2答案:C解析:C语言允许用typedef说明一种新类型名。
typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。
国家二级C语言机试(结构体、共用体、位运算及文件操作)模拟试卷13(总分:56.00,做题时间:90分钟)一、选择题(总题数:28,分数:56.00)1.有以下定义和语句:struct workers {int num;char name[20];char c;struct {int day;int month;int year;}s;}; struct workers w,*pw; pw:&w;能给w中year成员赋1980的语句是(分数:2.00)A.w.year=1980;B.pw->year=1980;C.w.s.year=1 980;√D.*pw.year=1980;解析:解析:本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构体。
在本题中works这个结构体中包含了结构体s。
所以对结构体变量w中year成员的引用是w.s.year。
2.有以下程序 #include struct tt {int x;struct tt *y;)*p; struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};main() {int i;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;} } 程序的运行结果是(分数:2.00)A.20,15,√B.30,17C.15,30,D.20,30,解析:解析:程序定义了结构体类型tt,其成员包括一个整型数据x和指向其自身结构的指针变量y。
程序在定义结构体数组a的同时对其进行了初始化。
其元素a[0]的成员y被赋值为元素a[1]的地址,a[1].y 被赋值为a[2]的地址,a[2].y被赋予a[3]的地址,a[3].y被赋予a[0]的地址。
这就形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。
在主函数中,通过一个for循环语句,输出该链表前2个节点数值成员的值,即a[0].x和a[1].x。
3.有以下程序 #include #include"string.h" typedef struct{char name[9];char sex;floatscore[2];)STU;void f(STU a) { STU b={"Zhao",'m',85.0,90.0};int i;strcpy(a.name,b.name);a.sex=b.sex; for(i=0;i(分数:2.00)A.Qian,m,85,90B.Zhao,m,85,90 √C.Zhao,f,95,92D.Qian,f,95,92解析:解析:本题考查在结构体中函数的实参和形参的传递,调用f(c)后,实参传向形参,进行f()函数功能的实现,但程序中没有返回语句,故形参不能将值传回实参,它们值的传递具有不可逆性,所与printf 输出的还是c中实参的值。
4.设有定义: struct{char mark[12];int numl;double num2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是(分数:2.00)A.t2.hum1=t1.num1;B.t2.mark=t1.mark;√C.t1=t2;D.t2.num2=t1.num2;解析:解析:这个题目主要涉及到结构体的定义与赋值操作。
根据题意结构体变量t1,t2的成员变量mark 是字符数组,对于字符数组之间的赋值操作应该使用循环语句对每个字符进行赋值,而选项B是用数组名实现字符数组之间的赋值操作,是错误的。
5.有以下程序struct A {int a;charb[10];double c;};void f(structAt);main(){struct A a={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1 f\n",a.a,a.b,a.c);} void f(struct A t) {t.a=1002; strcpy(t.b,"ChangRong"); t.c=1202.0;} 程序运行后的输出结果是(分数:2.00)A.1002,ChangRong,1202.0B.1001,ZhangDa,1098.0 √C.1001,ChangRong,1098.0D.1002,ZhangDa,1202.0解析:解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),形参t接收实参的数据,在函数f(t)中对结构体变量t的各个成员进行了赋值操作,需要注意的,形参和实参之间是数据传递,因此对形参的操作对实参不产生影响,因此在主函数输出仍然输出变量a的数据6.若有以下程序 struct stu {char*name,gender;int score;}; main(){struct stu a={NULL,'m',290),b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;b.gender='f';b.score=350;strcpy(b.name,"Qian");printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.score);} 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Qian,f,350B.Qian,f,350,Qian,f,350C.Zhao,m,290,Zhao,e350D.Qian,m,290,Qian,f,350 √解析:解析:主函数中定义结构体类型struct stu,有三个成员,第一个成员为字符指针变量。
主函数中为stu类型变量a赋值,阿先为a.name成员分配存储空间,存入数据。
b=a;语句执行完毕以后,a和b的各个成员值相同,需要注意的是b.name和a.name成员都保存了同一段内存的地址,因此当为变量b赋值的时候,同样更改了a的name成员,而其他成员由于有单独的存储空间而不会发生改变。
7.若有以下程序 typedef struct stu{char*name,gender;int score;} STU; voidf(char*p){p=(char*)malloc(10);strcpy(p,"Qian");} main(){STU a={NULL,'m',290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;f(b.name);b.gender='f';b.score=350;printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.score);} 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Qian,f,350B.Qian,f,350,Qian,f,350C.Qian,m,290,Qian,f,350D.Zhao,m,290,Zhao,f,350 √解析:解析:函数f(char*p)的主要功能申请字符串的存储空间,然后存入字符串"Qian",但当程序调用结束以后,形参指针变量p撤销,存储的字符串地址丢失,而不能更改实参指针的值。
主函数中结卡勾体变量定义同时赋初值,初始情况其name指针成员存储空,而后语句为其分配存储空间,存入字符串“Zhao”。
执行“b=a;”语句后,b的数据和a的数据相同,调用函数f以后,b的name成员的值没变。
8.若有以下程序typedef struct stu{char name[10],gender;int score;}STU;void f(STU a,STU b){ b=a;printf("%s,%c,%d,",b.name,b.gendeL b.score);} main(){STU a={"Zhao",'m',290},b={"Qian",'f',350}; f(a,b); printf("%s,%c,%d\n",b.name,b.gender,b.score);} 则程序的输出结果是(分数:2.00)A.Zhao,m,290,Zhao,m,290B.Zhao,m,290,Qian,f,350 √C.Qian,f,350,Qian,f,350D.Zhao,m,290,Zhao,f,350解析:解析:函数f(STU a,STU b)的主要功能是为把结构体变量a的值存放到b中,然后输出b中各个成员的值。
主函数中调用函数f(a,b),输出赋值以后b的数据,实际为a{"Zhao",'m'.290}的数据,函数调用结束,形参a和b撤销,流程到主函数输出b{"Qian",'f',350}的数据。
9.若有以下程序typedef struct stu{char name[10],gender;int score;)STU;void f(char*p){strcpy(p,"Qian");} main(){STU a={"Zhao",'m',290},b;b=a;f(b.name);b.gender='f';b.score=350;printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.score);} 则程序的输出结果是(分数:2.00)A.Zhao,m;290,Zhao,m,290B.Qian,f,350,Qian,f,350C.Zhao,m,290,Qian,f,350 √D.Zhao,m,290,Zhao,f,350解析:解析:主函数中结构体变量定义同时赋初值。
执行b=a;语句后,b的数据和a的数据相同,调用函数f(b.name)。