C语言程序设计单元测试题四
- 格式:doc
- 大小:54.00 KB
- 文档页数:9
2024年6月青少年软件编程C语言等级考试试卷四级真题分数:100 题数:41.人以群分(25分)。
社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。
要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。
输入:第一行给出一个正整数N(2≤N≤105)。
随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。
题目保证这些数字以及它们的和都不会超过231。
输出:按下列格式输出:,其中N1是外向型人的个数;N2是内向型人的个数;N3是两群人总活跃度之差的绝对值。
2.那就别担心了(25分)。
下图转自“英式没品笑话百科”的新浪微博——所以无论有没有遇到难题,其实都不用担心。
博主将这种逻辑推演称为“逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑自洽的定义……)。
现给定一个更为复杂的逻辑推理图,本题就请你检查从一个给定命题到另一个命题的推理是否是“逻辑自洽”的,以及存在多少种不同的推理路径。
例如上图,从“你遇到难题了吗?”到“那就别担心了”就是一种“逻辑自洽”的推理,一共有3条不同的推理路径。
输入:首先在一行中给出两个正整数N(1<N≤500)和M,分别为命题个数和推理个数。
这里我们假设命题从1到N编号。
接下来M行,每行给出一对命题之间的推理关系,即两个命题的编号S1 S2,表示可以从S1推出S2。
题目保证任意两命题之间只存在最多一种推理关系,且任一命题不能循环自证(即从该命题出发推出该命题自己)。
最后一行给出待检验的两个命题的编号A B。
输出:在一行中首先输出从A到B有多少种不同的推理路径,然后输出Yes如果推理是“逻辑自洽”的,或No如果不是。
题目保证输出数据不超过109。
3.凑零钱(25分)。
韩梅梅喜欢满宇宙到处逛街。
一、单选题1、以下数组定义中,错误的是()。
A.inta[3]={‰2,3,4};B.inta[]={l,2,3};C.inta[5]={l z2,3};D.inta[5],b;正确答案:A解析:A、数组长度为3,但赋了4个初值2、设有定义inta[10]={0};则说法正确的是()。
A.数组初始化错误,初值个数少于数组元素个数B.数组a有10个元素,各元素的值为0C.数组a有1个元素,其值为0D.数组a有10个元素,其中a[0]的值为0,其他元素的值不确定正确答案:B解析:B、当定义的同时,给数组赋了初值,但初值个数小于数组长度时,剩余的数组元素全赋为03、执行下面的初始化语句,()保存的不是字符串。
A.charstr[6]={,S, ,r,,,i√n,,,g,};B.charstr[]={'S';t','r,,,i,z,n∖,g,,0};C.charstr[10]={'S',,t',,r',,i√n∖,g,,,∖0,};D.charstr[10]="String";正确答案:A解析:A、Str数组长度为6,6个元素值都不是'0)没有成为字符串B›,∖0,的ASClI码是0,初始化为。
或'∖0'是一样的。
4、设有以下定义,则数组Sl和s2()ocharsl[]={'S'z,t','r'∕i√n','g');chars2[]="String";A.长度不同,但内容相同B.长度相同,内容也相同C.长度相同,但内容不同D.长度不同,内容也不同正确答案:D解析:D、s2比Sl多一个∖0T长度多15、设已定义charstr[6]={,a√b√∖O√c√d√∖O,};执行语句printf(("%s",str)后,输出结果为()。
第一章测试1.在C语言中,下面标识符非法的是()。
A:abc3B:_nameC:sum&D:SUM答案:C2.C语言源程序要正确地运行,必须要有()。
A:自定义函数B:Printf函数C:main函数D:scanf函数答案:C3.一个C 语言程序是由()。
A:若干过程组成B:函数组成C:一个主程序和若干子程序组成D:若干子程序组成答案:B4.C语言中数据的基本类型包括()。
A:整型、实型、字符型和结构体B:整型、实型C:整型、实型、字符型和指针型D:整型、实型、字符型答案:D5. C 语言规定:在一个源程序中,main函数的位置()A:可以任意B:必须在最后C:必须在最开始D:必须在系统调用的库函数的后面答案:A第二章测试1.若变量a是int类型,并执行了语句:a=‘A’+1.6;,则对于运算后变量a正确的叙述是()A:a的值是整型B:不允许字符型和浮点型相加C:a的值是浮点型D:a的值是字符型答案:A2.若有定义:int a=8,b=5,c; ,执行语句c=a/b+0.4;后,c的值为()A:2B:1.4C:1D:2.0答案:C3.如果有定义: int k=8 ,x=13;表达式的值为2的是()A:x%=(k-k%5)B:x%=(k%=5)C:x%=k-k%5D:(x%=k)-(k%=5)答案:D4.已知字母’A’的ASCII码为十进制数65,变量ch1为字符型,则执行语句ch1=‘A’+‘5’-‘2’;后,ch1中的值是( )。
A:‘C’B:67C:‘D’D:不确定答案:C5.若已定义X和Y为double型,则表达式:x=1,y=x+3/2的值是()A:2.5B:2C:2.0D:1答案:C6.以下关于标识符的说法错误的是()。
A:标识符不能与系统的关键字同名B:标识符由字母、数字和下划线组成C:不区分大小写,s和S是同一个变量D:首字符必须是字母或下划线答案:C第三章测试1.函数putchar()可以输出一个()。
第一章测试1【单选题】(1分)C语言程序的基本单位是()A.程序行B.函数C.语句D.字符2【单选题】(1分)C语言规定,在一个源程序中main函数的位置()A.必须在最开始B.必须在最后C.必须在预处理命令的后面D.可以在其他函数之前或之后3【单选题】(1分)对于一个正常运行的C程序,以下叙述中正确的是()A.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束B.程序的执行总是从main函数开始,在程序的最后一个函数中结束C.程序的执行总是从main函数开始,在main函数结束D.程序的执行总是从程序的第一个函数开始,在main函数结束4【单选题】(1分)以下叙述的是()A.C程序的主函数必须用main作为函数名B.C程序在书写时,有严格的缩进要求,否则不能编译通过C.一个C程序只能有一个主函数D.一个C程序可以包含多个不同名的函数5【单选题】(1分)下列说法正确的是()A.一个函数的函数体必须要有变量定义和执行部分B.C程序的书写格式自由,一个语句可以分写在多行上C.一个函数的函数体必须要有执行部分,可以没有变量定义D.C程序的书写格式严格限制,一行内必须写一个语句6【多选题】(1分)下列关于注释行的描述中,正确的是()A.单行注释以“//”开头,“//”后面是注释内容B.注释只在C语言源程序中有效,在编译时会被编译器忽略C.单行注释以符号“/*”开头,以符号“*/”结尾D.注释只能对程序中的某一行代码进行解释7【单选题】(1分)关于计算机语言的描述,正确的是()A.机器语言由0和1组成,执行速度快B.汇编语言比机器语言执行速度快C.汇编语言已将机器语言符号化,所以它与机器无关D.机器语言因为是面向机器的低级语言,所以执行速度慢8【单选题】(1分)用C语言编写的程序()A.可直接被执行B.是一个源程序文件C.经过编译或解释才能被执行D.经过编译、连接后被执行9【单选题】(1分)连接程序将一个C程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终生成一个可执行的二进制文件,它的后缀是()A..objB..cppC..libD..exe第二章测试1【单选题】(1分)C语言提供的数据类型关键字有()A.DoubleB.CharC.shortD.integer2【单选题】(1分)若有说明和语句:inta=5;a++;此处表达式a++的值是()。
第一章测试1.以下叙述正确的是()。
A:注释语句可以嵌套B:简单C语句必须以分号作为结束符C:C程序每一行只能写一个语句D:C程序基本组成单位是语句答案:B2.一个C语言程序是从()开始执行的。
A:程序中第一个函数B:程序中的第一个语句C:包含文件(头文件)的第一个函数D:名为main的函数答案:D3.下列四个叙述中,正确的是()A:C程序中的标识符都不区分大小写B:C程序中的所有字母都必须小写C:C语言中的标识符是区分大小写的D:C程序中的关键字必须小写,其他标识符不区分大小写答案:C4.下面是C语言合法标识符的是()。
A:a2B:2-aC:2_aD:2a答案:A5.以下叙述不正确的是()。
A:函数是C程序的基本单位B:分号是C语句的必要组成部分C:C程序的注释可以写在语句的后面D:主函数的名字不一定非用main来表示答案:D第二章测试1.以下不能定义为用户标识符的是()。
A:_0B:_intC:sizeofD:Main答案:C2.main(){ int m=12,n=34; printf(“%d%d”,m++,++n); printf(“%d%d”,n++,++m);}程序运行后的输出结果是()。
A:12353513B:12343513C:12343514D:12353514答案:D3.以下能正确定义且赋初值的语句是()。
A:int n1=n2=10;B:char c=32;C:double x=12.3E2.5;D:float f=f+1.1;答案:B4.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。
程序在编译时出错。
main()/* Beginning /{ int r; float s;scanf(“%d”,&r);s=p r r;printf(“s=%f”,s);}出错的原因是()。
A:计算圆面积的赋值语句中使用了非法变量B:输出语句中格式描述符非法C:存放圆半径的变量r不应该定义为整型D:注释语句书写位置错误答案:A5.有以下程序#include <stdio.h>main(){char c1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf(%c%c\n,c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<回车>45678<回车>则输出结果是()。
一、单选题1、C语言中,引用数组元素时,其数组下标的数据类型允许是().A.整型表达式B.任何类型的表达式C.整型常量D.整型常量、整型变量或整型表达式正确答案:D2、若有定义:int a[3][4], 则对数组a元素的正确引用是( )A.a(2)(0)B.a[10-10]C.a[1,3]D.a[2][3]正确答案:D3、以下不正确的定义语句是().A.char c1[ ] = { '1', '2', '3', '4', '5' };B.int y[5] = { 0, 1, 3, 5, 7, 9 };C.double x[5] = { 2.0, 4.0, 6.0, 8.0, 10.0 };D.char c2[ ] = { '\x10', '\xa', '\x8' };正确答案:B4、以下程序的输出结果是().#include<stdio.h>int main(){int n[2] = {0},i,j,k = 2;for (i = 0; i < k; i++)for (j = 0; j < k; j++)n[j] = n[i]+1;printf("%d\n",n[k]);return 0;}A.1B. 2C. 3D.不确定的值正确答案:D5、若二维数组a 有m 列,则在a[ i ][ j ] 前的元素个数为( ).A.j*m+iB.i*m+jC.i*m+j+1D.i*m+j-1正确答案:B6、下面语句的输出结果是().int i,x[3][3] = {1,2,3,4,5,6,7,8,9};for (i = 0; i < 3; i++)printf("%d",x[i][2-i]);A.147B.159C.369D.357正确答案:D7、以下对二维数组a的正确说明是()。
一、单选题1、printf("a\rHappi\by");在屏幕上正确的输出形式是( )。
A.HappyB.aHappiC.aHappyD.Happi正确答案:A2、以下程序的输出结果是()。
int main(){float x=3.6;int i;i=(int)x;printf("x=%f,i=%d\n",x,i);return 0;}A.x=3.600000,i=3B.x=3.600000,i=4C.x=3 i=3.600000D.x=3,i=3正确答案:A3、已定义double a; int i;选择正确的输入格式为()。
A.scanf("%6lf%3d",&a,&i);B.scanf("%6.2f%3d", &a,&i);C.scanf("%lf%s", &a,&i);D.scanf("%f%d", a,i);正确答案:A4、已有定义char s1,s2;,下面正确的语句是()。
A.scanf ("%s%c", s1,&s2);B.scanf ("%c%c",s1,s2);C.scanf ("%s%c", s1,s2);D.scanf ("%c%c", &s1,&s2);正确答案:D5、运行下面的程序,正确的输出结果是()。
#include <stdio.h>int main( ){double x=68.7563, y= -789.127;printf ("%f, %10.2f\n", x,y);return 0;}A.68.756300, □□□-789.13B.68.75, □□□-789.13C.68.75, -789.12D.68.756300, □□□-789.12正确答案:A6、已知float x=2.23,y=4.35;,根据下面的输出结果,正确的程序段是()。
一、单选题1、若有以下结构体定义struct A{int x;int y;}a;则正确的引用或定义是()A.struct b;b.x = 10;B.struct A b = [10];C.A.x = 10;D.A b;b.x = 10;正确答案:B解析:B、先定义类型Struct A的一个变量b,使用{}的方式为b提供初值,b正常需要两个值,而这里传一个值10,也是正确的,相当于把10赋值给b.x2、设有以下定义struct Stu{char name [10];int score;}a,b;则以下描述中错误的是()A.Stu为该结构体的类型名,故定义该结构体类型的一个变量c的语法为Stu c;B.a和b为该结构体类型的两个成员C.struct 为结构体类型的关键字D.为变量a的score赋值98的语句可写为a.score = 98;正确答案:A3、设有以下说明语句struct ex{int x;float y;char z;}example;则下面的叙述中不正确的是()A.example是结构体类型名B.x、y、z都是结构体成员名C.struct 是结构体类型的关键字D.struct ex是结构体类型名正确答案:A解析:A、struct example是类型名,只写example并不知道其是函数名还是int变量名还是float变量名4、以下结构体数组的定义格式中正确的是()struct stu{char name[10];char no[15];int score;};A.struct a[10];B.struct stu a[10];C.struct stu [10];D.stu a[10];正确答案:B解析:B、类型名为struct stu 数组名为a 正确5、以下描述中正确的是()typedef struct{int n;char ch[10];A.PER是结构体类型的变量名B.PER是结构体类型的数组名C.PER是结构体类型的类型同义词,代表该结构体类型D.PER是结构体类型的关键字正确答案:C6、以下描述中错误的是()struct Point{float x;float y;}a[5];A.a为struct Point结构体类型的变量,该变量占5个字节B.a为结构体数组名,该数组中含有5个该结构体类型的变量C.struct Point为该结构体类型D.struct为类型关键字正确答案:A7、以下描述中正确的是()struct Point{float x;float y;A.a[5].x = 7.8f;a[5].y = 6.9f;B.a[0].x = 2.1;a[0].y = 4.3;C.a = {1,2}D.a[0] = {2.1,4.3}正确答案:B解析:A、数组下标越界,正确范围0~4 C、数组名是常量,不能为其赋值D、变量a[0]中包含两个成员a[0].x和a[0].y , 不能为变量a[0]整体赋值8、若有以下定义语句,union data{int i;char c;float f;}a;int n;则以下语句中正确的是()A.a= 3.4f;B.a.i = 5;C.a = {3,'e',1.2};D.a.c= "e";正确答案:B解析:A、a.f = 3.4f; C、不能整体赋值D、应为'e'9、下列对枚举类型的定义正确的是()A.enum a{"A","B"=4,"C"};B.enum a{A;B;C};C.enum a={A,B=4;C};D.enum a{A,B=4;C};正确答案:D解析:B、各元素之间用逗号间隔C、不该有赋值号,enum a{A,B=4;C};2、#include<stdio.h>struct abc{ int a, b, c; };int main(void){struct abc s[2]={{1,2,3},{4,5,6}}; int t;t=s[0].a+s[1].b;printf("%d \n",t);return 0;}以上程序的输出结果为:A.8B.5C.7D.6正确答案:D10、struct ex{ int x ; float y; char z ;} example;则下面的叙述中不正确的是()A. x,y,z都是结构体成员名B.struct是结构体类型的关键字C.struct ex是结构体类型D. example是结构体类型名正确答案:D解析:D、example是结构体类型的一个变量,不是类型名11、关于单链表的描述中错误的是()A.结点的指针域中存放下一个数据元素的地址B.为单链表中每个元素分配一个结点,一般结点有两个数据成员,数据域和指针域C.结点的指针域中存放下一个数据元素所在结点的地址D.单链表中头结点可有可无,一般其标志作用,不存储数据元素正确答案:A12、关于单链表基本概念的描述中正确的是()A.单链表中的头结点就是首元结点B.单链表的头指针也就是指向单链表中首元结点的指针C.单链表的头指针是指向单链表中第一个结点的指针D.单链表的头指针也就是指向单链表中头结点的指针正确答案:C二、判断题1、链式存储中每个结点在物理位置上是连续的正确答案:×2、顺序存储结构中,逻辑上相邻的数据元素在物理位置上也相邻正确答案:√3、结构体类型、联合体类型及枚举类型均属于用户自定义的类型正确答案:√。
第一章测试1. C 语言中规定:在一个源程序中main 函数的位置()。
A:必须在系统调用的库函数的后面B:必须在最开始C:可以任意D:必须在最后答案:C2.一个C 语言程序是由()。
A:函数组成B:若干子程序组成C:若干过程组成D:一个主程序和若干个子程序组成答案:A3.C++、Java 以及C#都源自于C语言。
()A:错B:对答案:B4.计算机内部运算不使用的数是()。
A:二进制数B:八进制数C:十进制数D:十六进制数答案:BCD5.不能将高级语言编写的源程序转换为目标程序的是()。
A:WORD 字处理程序B:网络程序C:编译程序D:链接程序答案:ABD第二章测试1.PC机中,’’在内存占用的字节数是( )A:3B:4C:2D:1答案:D2.在以下一组运算符中,优先级最低的运算符是( )A:!=B:+D:=答案:D3.设ch是 char型变量,其值为‘A’,则表达式 ch=(ch>=‘A’&& ch<=‘z’)?(ch+32) : ch 的值是( )A:AB:zC:aD:Z答案:C4.要为字符型变量a赋初值,下列语句中哪一个是正确的( )。
A:char a=’3’B:char a=“3”C:char a=%D:char a=*答案:A5.以下用户标识符中,不合法的是( )A:nitB:123C:a+bD:int答案:BCD第三章测试1.下列语句中符合C语言语法的赋值语句是()。
A:a=7+b, b++, a+7;B:a=7+b++=a+7;C:a=7+b+c=a+7;D:a=7+b, c=a+7;答案:D2.以下程序输出结果是 main(){ int m=5;if(m++>5)printf(“%d”,m);elseprintf(“%d”,m–); } ()A:6B:4C:7D:5答案:A3.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()。
A:!aB:a=0C:a<>0答案:D4.如果c为字符型变量,判断c是否为空格不能使用(假设已知空格ASCII码为32)()。
C语言程序设计模拟试题4(附答案)《C语言程序设计》模拟试卷四一、单项选择题(每题2分,共30分)1、下列对C语言特点的描述中,错误的是。
A)C语言不是结构化程序设计语言B)C语言编程简洁明了C)C语言功能较强D)C语言移植性好2、设变量a是整型,b是实型,c是双精度型,则表达式2+‘ a ’+b*c值的数据类型。
A)int B)float C)double D)不确定3、在a=2,b=0,c;则执行c=b||a--;语句后,a和c的结果是。
A)0,1 B)1,0 C)1,1 D)2,04、在scanf()函数的给是说明符中,长整型数的输入格式说明符是。
A)%d B)%ld C)%lf D)%x5、以下程序的执行结果是。
main(){ int n=1;printf(“%d,%d,%d”,n,++n,n--); }A)1,1,1 B)1,2,1 C)0,1,1 D)1,2,26、判断char型变量ch是否为大写字母的正确表达式是。
A)‘A’<=ch<=‘Z’B)(ch>=‘A’)&(ch<=‘Z’)C)(‘A’<=ch)AND(‘Z’>=ch)D)(ch>=‘A’)&&(ch<=‘Z’)7、能够完成如下函数计算的程序段是。
- 1 x < 0y = 0 x = 01 x > 0A)y = - 1 ; B)if ( x > = 0 )if ( x != 0 ) if ( x > 0 ) y = 1 ;if ( x > 0 ) y = 1 ; else y = 0 ;else y = 0 ; else y = -1 ;C)y = 0 ; D)y = - 1 ;if ( x > = 0 ) if ( x > 0 ) y = 1 ;if ( x > 0 ) y = 1 ; else y = 0 ;else y = -18、下列循环语句中,执行循环体的次数是。
C语言程序设计_单元测试题四本单元包含“指针、结构体与共同体、编译预处理”的内容。
一、选择题1.以下叙述中正确的是________.A)在程序的一行上可以出现多个有效的预处理命令行B)使用带参的宏时,参数的类型应与宏定义时的一致C)宏替换不占用运行时间,只占用编译时间D)在以下定义中CR是称为“宏名”的标识符#define CR 0452.以下程序的运行结果是________.#define MIN(x,y) (x)<(y)?(x):(y)main(){int i=10,j=15,k;k=10*MIN(i,j);printf("%d\n",k);}A)10 B)15 C)100 D)1503.若有宏定义如下:#define X 5#define Y X+1#define Z Y*X/2则执行以下printf语句后,输出结果是_______.int a;a=Y;printf("%d\n",Z);printf("%d\n",--A);A)7 B)12 C)12 D)76 6 5 54.请读程序:#include <stdio.h></P< p>#define MUL(x,y) (x)*ymain(){int a=3,b=4,c;c=MUL(a++,b++);printf("%d\n",C);}上面程序的输出结果是__________.A)12 B)15 C)20 D) 165.对下面程序段:#define A 3#define B(A) ((A+1)*A)...x=3*(A+B(7));正确的判断是_________.A)程序错误,不许嵌套宏定义B)x=93C)x=21D)程序错误,宏定义不许有参数6.以下正确的描述是____________.A)C语言的预处理功能是指完成宏替换和包含文件的调用B)预处理指令只能位于C源程序文件的首部C)凡是C源程序中行首以"#"标识的控制行都是预处理指令D)C语言的编译预处理就是对源程序进行初步的语法检查7.在"文件包含"预处理语句的使用形式中,当#include后面的文件名用< >(尖括号)括起时,找寻被包含文件的方式是_______.A)仅仅搜索当前目录B)仅仅搜索源程序所在目录C)直接按系统设定的标准方式搜索目录D)先在源程序所在目录搜索,再按照系统设定的标准方式搜索8.变量的指针,其含义是指该变量的_________.A)值 B)地址 C)名 D)一个标志9.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_____.A)a,point,*&a B)&*a,&a,*pointC)*&point,*point,&a D)&a,&*point ,point10.若有说明;int *p,m=5,n;以下正确的程序段的是________.A)p=&n; B)p=&n;scanf("%d",&p); scanf("%d",*p);C)scanf("%d",&n); D)p=&n;*p=n; *p=m;11.下面程序段的运行结果是_________.char *s="abcde";s+=2;printf("%d",s);A)cde B)字符'c' C)字符'c'的地址D)无确定的输出结果12.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.A)c=*p1+*p2; B)p2=c C)p1=p2 D)c=*p1*(*p2);13.以下正确的程序段是_________.A)char str[20]; B)char *p;scanf("%s",&str); scanf("%s",p);C)char str[20]; D)char str[20],*p=str; scanf("%s",&str[2]); scanf("%s",p[2]);14.若有说明语句char a[]="It is mine";char *p="It is mine";则以下不正确的叙述是________.A)a+1表示的是字符t的地址B)p指向另外的字符串时,字符串的长度不受限制C)p变量中存放的地址值可以改变D)a中只能存放10个字符15.下面程序的运行结果是_______.#include <stdio.h>#include <string.h>main(){char *s1="AbDeG";char *s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}A)正数B)负数C)零D)不确定的值16.下面程序的运行结果是_______.#include <stdio.h>#include <string.h>fun(char *w,int n){char t,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char *p;p="1234567";fun(p,strlen(p));puts(p);}A)7654321 B)1714171 C)1711717 D)717717117.若有以下定义,则对a数组元素的正确引用是_________.int a[5],*p=a;A)*&a[5] B)a+2 C)*(p+5) D)*(a+2)18.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.A)*(a[i]+j) B)(a+i) C)*(a+j) D)a[i]+j19.若有以下定义,则p+5表示_______.int a[10],*p=a;A)元素a[5]的地址 B)元素a[5]的值C)元素a[6]的地址 D)元素a[6]的值20.C语言结构体类型变量在程序执行期间_________.A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中21.下面程序的运行结果是___________.main(){struct cmplx{int x;int y;}cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}A)0 B)1 C)3 D)622.设有如下定义:struct sk{int n;float x;}data ,*p;若要使p指向data中的n域,正确的赋值语句是_______.A)p=&data.n;B)*p=data.n;C)p=(struct sk *)&data.n;D)p=(struct sk *)data.n;23.以下对结构体变量stu1中成员age的非法引用是________.struct student{int age;int num;}stu1,*p;p=&stu1;A)stu1.age B)student.ageC)p->age D)(*p).age25.下面对typedef的叙述中不正确的是______.A)用typedef可以定义各种类型名,但不能用来定义变量B)用typedef可以增加新类型C)用typedef只是将已存在的类型用一个新的标识符来代表D)使用typedef有利于程序的通用和移植26.以下scanf函数调用语句中对结构体变量成员的不正确引用是________.struct pupil{char name[20];int age;int sex;}pup[5],*p;p=pup;A)scanf("%s",pup[0].name); B)scanf("%d",&pup[0].age);C)scanf("%d",&(p->sex)); D)scanf("%d",p->age);二、填空题1.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。
#include "stdlib.h"main(){int *a,*b,*c,num,x,y,z;a=&x;b=&y;c=&z;printf("输入3个整数:");scanf("%d%d%d",a,b,C);printf("%d,%d,%d\n",*a,*b,*C);num=*a;if(*a>*B)______; 【1】if(num>*C)______; 【2】printf("输出最小整数:%d\n",num);}2.下面程序段的运行结果是________.【3】char s[80],*sp="HELLO!";sp=strcpy(s,sp);s[0]='h';puts(sp);3.下面程序段的运行结果是________.【4】char str[]="abc\0def\0ghi",*p=str;printf("%s",p+5);4.下面程序的功能是将两个字符串s1和s2连接起来。
请填空。
#include<stdio.h>main(){char s1[80],s2[80];gets(s1); gets(s2);conj(s1,s2);puts(s1);}conj(char *p1,char *p2){char *p=p1;while(*p1)______; 【5】while(*p2){*p1=______;p1++;p2++;}【6】*p1='\0';__________;【7】}5.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是___【8】___. *(a+5)的值是____【9】_____.6.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是__【10】___. *(*(a+1)+0))的值是____【11】____.7.以下程序将数组a中的数据按逆序存放,请填空。