C语言程序设计单元测试题四
2024年6月青少年软件编程C语言等级考试试卷四级真题

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分)。
韩梅梅喜欢满宇宙到处逛街。
C程序设计基础练习题4及答案

一、单选题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)后,输出结果为()。
C语言程序设计(山东联盟-青岛大学)智慧树知到答案章节测试2023年

第一章测试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()可以输出一个()。
智慧树知道网课《C语言程序设计(西安工程大学)》课后章节测试满分答案

第一章测试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++的值是()。
C语言程序设计智慧树知到答案章节测试2023年西安工商学院

第一章测试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<回车>则输出结果是()。
C语言程序设计(数组)期末单元测试与答案

一、单选题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的正确说明是()。
C语言程序设计:数据的输入与输出单元测试与答案

一、单选题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;,根据下面的输出结果,正确的程序段是()。
C语言程序设计(自定义类型)期末单元测试与答案

一、单选题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、结构体类型、联合体类型及枚举类型均属于用户自定义的类型正确答案:√。
C语言程序设计-案例驱动 轻松掌握智慧树知到答案章节测试2023年山东管理学院

第一章测试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语言程序设计模拟试题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.函数的返回值是通过return语句获得的B.函数中没有return语句,说明不带回值C.函数不能嵌套定义D.函数中无论是否有return语句,都能返回正确值正确答案:C2、下面叙述中错误的是( )。
A.一般来说,函数的形参和实参的类型要一致B.若函数的定义出现在主调函数之前,则可以不必再加说明C.函数的形参和实参必须要使用相同名字的变量D.函数的形式参数,在函数未被调用时不被分配存储空间正确答案:C3、若函数的调用形式如下:f((x1,x2,x3),(y1,y2))则函数形参个数是()。
A.4B.2C.5D.3正确答案:B4、下列程序段中,有错误的是()。
A. int f(){int x;scanf("%d", &x);return x++, x+5;}B. int f2(int x){return (x>1?printf("Y"): putchar('N'));}C. void change(int x, int y){int t;t=x; x=y; y=t;}D.int main(){float a=2.6 , b;b=max(2.1, 3.6)=a++;printf("%f", a+b);}正确答案:D5、关于函数正确的说法是()。
A.主函数可以写在其他函数之后,函数内不可以嵌套定义函数B.主函数必须写在其他函数之前,函数内可以嵌套定义函数C.主函数必须在写其他函数之后,函数内可以嵌套定义函数D.主函数必须写在其他函数之前,函数内不可以嵌套定义函数正确答案:A6、关于函数原型,叙述错误的是()。
A.函数可以不必进行声明,可以放在程序的任意位置B.当自定义函数被放在了主调函数的后面,就需要在函数调用之前,加上函数的原型声明C.被调用函数在主调函数之前定义,可以省略函数原型声明D.所有函数定义放在main函数之前,可以省略原型声明正确答案:A二、判断题1、函数可以根据需要通过参数与调用函数之间进行数据传递。
《c语言程序设计》试题库及答案

《c语言程序设计》试题库及答案一、选择题1. 下列哪个选项是C语言的标准库函数?A. printfB. scanfC. mainD. All of the above答案:D2. C语言中,用于定义字符串的字符数组的语法是什么?A. char str[] = "Hello";B. char str[] = {"Hello"};C. char str = "Hello";D. char str[] = 'Hello';答案:A3. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. functionC. defD. void答案:A二、填空题1. 在C语言中,定义一个整型变量的正确方式是:________。
答案:int variable_name;2. C语言中,用于计算两个数的和的运算符是:______。
答案:+3. 如果要在C语言中声明一个指向整型的指针,应该使用:________。
答案:int *pointer_name;三、简答题1. 请简述C语言中数组和指针的区别。
答案:数组是一组相同类型的元素的集合,可以通过索引访问每个元素。
指针是一个变量,它存储了另一个变量的内存地址。
数组名可以被用作指向数组首元素的指针,但数组本身是一个固定大小的实体,而指针可以被重新赋值为其他地址。
2. 解释C语言中的结构体(struct)是什么?答案:结构体是一种用户定义的数据类型,它允许将不同的数据类型组合成一个单一的数据结构。
它使得可以创建包含多种数据类型的复杂数据结构。
四、编程题1. 编写一个C语言程序,实现计算两个整数的和,并输出结果。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("The sum is: %d\n", sum);return 0;}```2. 编写一个C语言程序,实现将一个字符串反转,并输出结果。
智慧树知到《C语言程序设计》章节测试答案

智慧树知到《C语言程序设计》章节测试答案第一章1、构成c程序的基本单位是函数,有且只有一个主函数A:对B:错答案: 对2、c语言一行可以写多条语句A:对B:错答案: 对3、不正确的叙述是()。
A:注释说明只能位于一条语句的后面。
B:C源程序的基本组成单元是函数。
C:C源程序可由一个或多个函数组成。
D:每条语句最后必须有一个分号。
答案: 注释说明只能位于一条语句的后面。
4、C源程序的调试是指对源程序进行()。
A:录入与编辑。
B:编译、连接与运行。
C:查错与排错。
D:连接与运行。
答案: 编译、连接与运行。
5、以下叙述中正确的是()。
A:C程序的执行总是从main函数开始的。
B:一对花括号"{}"只能作为函数体的定界符。
C:C源程序编译时注释部分的错误将被发现。
D:构成C源程序的基本单位是函数,所有函数名都可以由用户命名。
答案: C程序的执行总是从main函数开始的。
第二章1、以下选项中可用作C程序合法实数的是A:0.1e0B:3.0e0.2C:E9D:9.12E答案: 0.1e02、以下程序的输出结果是#include <stdio.h>main(){ int x=10,y=10;printf("%d %d\n",x–,–y); }A:10 10B:9 9C:9 10D:10 9答案: 10 93、若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是A:a=(b=4)=3;B:a=b=c+1;C:a=(b=4)+c;D:a=1+(b=c=4);答案: a=(b=4)=3;4、写出下面程序的运行结果:#include <stdio.h>void main( ){int x,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d ",x,y,z);}A:2,3,1B:2,2,1C:1,1,1D:2,2,3答案: 2,3,15、写出下面程序的运行结果:#include <stdio.h>void main( ){int a=1,b=0;printf("%d,",b=a+b);printf("%d",a=2*b);}A:3,2B:2,2C:1,2D:1,1答案: 1,26、写出下面程序的运行结果:main(){int a,b,c=9;a=3,b=4;c%= a+b;printf(“%d”,c)}A:3B:2C:1D:4答案: 27、写出下面程序的运行结果:#include <stdio.h>main(){ int a=4,b,c;c=a+(b=2);a+=a-=a*a;printf("%d,%d,%d ",a,b,c);}A:4,2,6B:-8,2,6C:-12,2,6D:-24,2,6答案: -24,2,68、对于int n=3;执行n+=n-=n*n;后n的值是9。
C语言第一章至第四章模拟测试题

第一章至第四章模拟测试题一、单项选择题(本大题共35小题,每小题1分,共35分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.可以用作C 程序标识符的一组是( ) A.print B.i\am oodb one-half aBc 3pai C.Pxq D.Cpp line# pow His.agewhile2.以下叙述正确的是( ) A.宏名必须用大写的英文字母表示 B.宏定义不仅是符号替换,也可以赋值C.宏替换是在程序编译时完成的,不占用程序运行时间D.引用带参数的宏时,实际参数与宏定义中的形式参数类型应一致 3.设char a='\70';则变量a 中( )A.包含1个字符B.包含2个字符C.包含3个字符D.是非法表示4.设long i=65539;,执行语句printf("%d ",i);后的输出结果是( ) A.-3B.3C.65539D.数据不确定5.设float c,f;,将数学表达式C=95(F-32)能正确表示成C 语言赋值表达式的是( )A.c=5*(f-32)/9B.c=5/9(f-32)C.c=5/9*(f-32)D.c=5/(9*(f-32))6.设int i=10;,表达式30-i<=i<=9的值是( ) A.0B.1C.9D.207.以下不能..看作一条C 语句的是( ) A.{;}B.a=5,b=5,c=5;C.if(x>=0&&y=0);D.if(x==0)a=5;b=10;8.设int x=7;,执行语句x=x<<2;后,变量x 的值是( ) A.1B.3C.14D.289.以下属于C 语言保留字的是( )A .fopenB .includeC .getD .unsigned 10.C 语言中,错误..的int 类型的常数是( ) A .1E5 B .0 C .037D .0xaf11.在C 语言中,′a ′和″a ″存储所占用的字节数分别是( ) A .1,1 B .1,2 C .2,1 D .2,212.对于数学表达式3sinxb a x 2++,正确的C 语言表达式是( )A .2sqrt(x)+(a+b)/3sin(x)B .2sqrt(x)+(a+b)/(3sin(x))C .2*sqrt(x)+(a+b)/3/sin(x)D .2*sqrt(x)+(a+b/3*sin(x))13.设int x=10, a=0, b=25;,条件表达式x<1?a+10︰b 的值是( ) A .0 B .1 C .10 D .2514.C 语言中,下列运算符优先级最高的是( ) A .! B .% C .>> D .= =15.sizeof(double)是( ) A .函数调用 B .int 型表达式 C .double 型表达式 D .非法表达式 16.设有以下程序段: int a=1, b=10, c=1, x; x=a&&b||++c;printf(″%d, %d\n ″,x,c); 执行后输出的结果是( ) A .0,0 B .0,1 C .1,0D .1,1 17.设int x;,则以下语句中错误..的输入是( ) A .scanf (″%d ″,x); B .scanf (″%d ″,&x); C .scanf (″%o ″,&x); D .scanf (″%x ″,&x);18.在C 语言中,运算符″=″和″==″的功能分别是( ) A .关系运算和赋值运算 B .赋值运算和关系运算 C .都是关系运算 D .都是赋值运算19.设有以下程序段: int x=2,y=2,z=0,a; a=++x||++y&&z++;printf(″%d,%d,%d\n ″,x,y,z); 执行后输出的结果是( )A .2,2,0B .3,3,1C .3,2,0D .3,2,1 20.设int a=11,b=2;,执行下述程序段后,变量a 和b 的值分别是( ) do {a/=b++;}while(a>b);A.1,3 B.1,4 C.2,3 D.2,421.执行下列程序段后输出的结果是()int x,y,z=1;for(x=1,y=-1;x<y;x++,y--)z++;printf(〞%d\n〞,z);A.1 B.2 C.5 D.622.设int x;,则与计算|x|等价的表达式是()A.x>0?-x:xB.x>0?x:-xC.x<0?x:-xD.x<0?-x:-x23.设int a=0;,错误..的语句是()A. ++a;B. a++;C. a=-a;D. (-a)++;24.设int a=1,b=2,c=3,d=4,f;,执行语句f=(a!=b)?c++:d++;后f的值是()A. 2B. 3C. 4D. 525.设int m=5;,语句while (m==0)printf (″%d″,m-=2);的循环体执行的次数是()A. 0B. 1C. 2D. 无限26. 设int a,b;,则表达式(b=2, a=5, b++, a+b)的值是()A. 2B. 5C. 7D. 827. 设int a=7; float x=2.5, y=4.7;, 则表达式x+3%(int)(x+y)/4的值是()A. 2.75B. 3.5C. 2.5D. 0.028. 设char cl; , 则cl中为小写英文字母字符的正确表达式为()A. ’a’<=c1=’z’B. (cl>=’a’)&&(cl<=’z’)C. (cl>=a)&&(c1<=z)D. (’a’<=c1)| |(’z’>=c1)29. 正确的条件语句为()A. if((a=b;)>0)t=a;B. if((a=b)>0)then t=a;C. if(a>b)t=a;D. if(a<b={a++;b++});30. 若有下列程序段:int x=l, y=2;x=x+y;y=x-y;x=x-y;则执行后x和y的值分别为()A. 1和2B. 2和2C. 2和1D. 1和131. 设int a=3,b=4;,则printf(‘‘%d,%d,”(a,b),(b,a));的输出结果是()A. 3,4B. 4,3C. 3,4,4,3D. 4,3,3,432. 设int i=l, k=2;, 则错误..的循环语句是()A. for(i=0,k=-1;i++,k++);B. for(;k-1;i++);C. for(i=1,k=4;k--;i++);D. for(;k--;);33. 设char c=’A’;int i=l, j;,执行j=!c&&i++;后,i和j的值分别是()A. 1和0B. 1和1C. 2和0D. 2和l34. 设int a;,执行表达式(a=1,2,3),a+1后,a和表达式的值分别是()A. 1和2B. 2和3C. 3和4D. 4和535. 下列程序段中循环体执行的次数是()int x=-1;do{x=x*x;}while(! x);A. 0B. 1C. 2D. 无限二、填空题(本大题共25小题,每小题2分,共50分)请在每小题的空格中填上正确答案。
中国大学mooc《C语言程序设计(郑州轻工业大学) 》满分章节测试答案

titleC语言程序设计(郑州轻工业大学) 中国大学mooc答案100分最新版content点击这里,复制通过码第一章绪论第一章单元测验1、通常把高级语言源程序翻译成目标程序的程序称为( )。
答案: 编译程序2、关于C语言,下面叙述不正确的是()。
答案: 不用编译可以直接运行。
3、程序的开发步骤中不包括()。
答案: 编译链接4、 zzuliOJ的1000:从今天开始入坑C语言通过码答案: ikJ3Wx00syCxTCfJJpvCjVRSePQ5、 zzuliOJ的1001:整数a+b 通过码答案: jkJ2W0pnsnCxTCfJJpvCjVRSePU6、 zzuliOJ1002: 简单多项式求值通过码答案: g0QlCkxntSyxTCfJJpvCjVRSePY第二章简单C程序设计第二单元测验1、关于定点数和浮点数的说法,下列说法错误的是()。
答案: 浮点数表示的数即是数值的精确值2、以下哪种运算能从变量x中取得十进制最低位的数字()。
答案: x % 103、以下哪个数字的值最大()。
答案: 1e24、设有变量定义: float x=2.5; double y=6.0; 则表达式 (int)x / y的值为( )。
(如果结果是浮点类型,用小数点后一位数字表示)答案: 3.05、变量的名字代表内存中的存储单元;变量名和内存中的存储单元相对应,通过变量名来存、取存储单元的内容。
答案: 正确6、变量被定义后没有赋值,其值不可以使用,是内存中残留的垃圾值。
答案: 正确7、变量是在程序执行期间其值可以改变的量,必须先定义后使用。
答案: 正确8、当赋值语句右边表达式类型与左边变量类型不一致时,以右边表达式的值作为赋值表达式的值。
答案: 错误9、 zzuliOJ1003:两个整数的四则运算通过码答案: ikcgXkln5yyxTCfJJpvCjVRSePc10、 zzuliOJ1004:三位数的数位分离通过码答案: iUUkWxg2s3CxTCfJJpvCjVRSePA11、 zzuliOJ1005:整数幂通过码答案: gx5zX082t3SxTCfJJpvCjVRSePE12、 zzuliOJ1006:求等差数列的和通过码答案: 2B8gCk5k5SKxTCfJJpvCjVRSePI13、 zzuliOJ1007:鸡兔同笼通过码答案: iUNzXx015nCxTCfJJpvCjVRSePM14、 zzuliOJ1008:美元和人民币通过码答案: ihJzCkoyvXGxTCfJJpvCjVRSePw15、 zzuliOJ1009:求平均分通过码答案: 2BFyWhs2vHexTCfJJpvCjVRSeP016、 zzuliOJ1010:求圆的周长和面积通过码答案: jBRzD043syWxTCfJJpvCjVRSefQ17、 zzuliOJ1011:圆柱体表面积通过码答案: ixcjXxxnsHaxTCfJJpvCjVRSefU18、 zzuliOJ1012:求绝对值通过码答案: iRV2UR8x5iSxTCfJJpvCjVRSefY19、 zzuliOJ1013:求两点间距离通过码答案: 2hEgXEczsCyxTCfJJpvCjVRSefc20、 zzuliOJ1014:求三角形的面积通过码答案: 2BF1Xkg74iexTCfJJpvCjVRSefA21、 zzuliOJ1015:计算时间间隔通过码答案: 2RMnWUk6sXSxTCfJJpvCjVRSefE22、 zzuliOJ1015:银行利率通过码答案: 3xZxWBswvCSxTCfJJpvCjVRSefI第二章简单C程序设计小练习-不计分1、以下哪种运算能从变量x中取得十进制最低位的数字()。
C语言程序设计:选择结构程序设计单元测试与答案

一、单选题1、下列运算符优先级最高的是( )。
A.&&B.,C.+D.||正确答案:C2、若给定条件表达式(m)?(a++):(a--),则其中表达式m()。
A.和(m==1)等价B.和(m!=1)等价C.和(m==0)等价D.和(m!=0)等价正确答案:D3、C语言中,switch后的括号内表达式( )。
A.只能是整型和字符型B.只能为整型C.可以是任何类型D.只能为整型,字符型或枚举型正确答案:D4、执行下面程序段后,k的值是:( )。
int k=2;switch(k+1)case 3:k+=1;case 4:k--;break;case 5:k*=3;case 6:++k;}A.28B.10C.27D.2正确答案:D5、若在程序运行时,输入:4 3,则执行下面程序输出的结果是( )。
#include <stdio.h>int main(){int a,b,s;scanf("%d%d",&a,&b);s=a;if(a>b) s=b;s=s*s;printf("%d\n", s);return 0;A.15B.16C.9D.13正确答案:C6、下列表达式中,结果为1的表达式是()。
A. !3!=0B.!2>=3C.!6D. !0==1正确答案:D二、判断题1、所有逻辑运算符的优先级都高于关系运算符。
正确答案:×2、在switch语句中,switch与case后的表达式可以为任意类型。
正确答案:×3、在逻辑表达式的求解过程中,并非所有的逻辑运算符都被执行。
正确答案:√4、并非所有的if语句都有等价的switch语句,switch语句只能用来实现以相等关系作为选择条件的多分支结构。
正确答案:√三、填空题1、已知 a=10,b=15,c=1,d=2,e=0,则表达式c==b>e的值为_____。
程序设计与C语言简介单元测试与答案

一、单选题1、结构化程序由三种基本结构组成,三种基本结构组成的算法,()。
A.只能完成部分复杂的任务B.只能完成一些简单的任务C.可以完成任何复杂的任务D.只能完成符合结构化的任务正确答案:C2、下面不是算法特征的是()。
A.确定性B.可行性C.有穷性D.继承性正确答案:D3、关于C语言,下面叙述不正确的是()。
A.语法限制不太严格,例如,对数组下标越界不作检查B.既具有高级语言的特点,又具有汇编语言的特点C.既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序D.不用编译可以直接运行正确答案:D4、下面选项()不属于结构化程序设计原则。
A.不限制GOTO语句使用B.自顶向下C.程序模块化D.逐步求精正确答案:A5、下面选项中,()不属于程序的特性。
A.有序性B.实用性C.有限性D.可操作性正确答案:B二、判断题1、计算机只能完成其能力范围内的计算工作,超出计算机能力范围的计算计算机将无法完成。
正确答案:√2、编译方式下的程序当修改源程序后,需要重新编译才能够正确运行。
正确答案:√3、C语言属于面向过程的优秀程序设计语言,既可作为系统设计语言,也可作为应用程序设计语言。
正确答案:√4、算法可以分为数值算法和非数值算法两大类。
正确答案:√5、在VC++6.0环境下,任何一个C程序都必须包含在一个工程项目中,而且只能有一个main函数。
正确答案:√三、填空题1、C语言开发工具直接输入的程序代码是____文件,经过编译后生成的是目标程序文件,经过连接后生成的是可执行程序文件。
正确答案:源或源程序2、算法的效率通常由_____ 复杂度和空间复杂度衡量。
正确答案:时间3、描述算法的方法主要有_____、专用工具(传统流程图、N-S流程图)和伪代码等。
正确答案:自然语言4、计算机系统由硬件系统和______系统两部分组成。
正确答案:软件5、计算机语言分为:机器语言、汇编语言和_________语言。
C语言程序设计:变量及表达式单元测试与答案

一、单选题1、关于变量定义,下面说法错误的是()。
A.确定了变量的名字B.确定了变量的表数范围C.确定了变量中的内容D.变量的类型确定了变量占据的存储单元的大小正确答案:C2、sizeof(float)的执行结果是()。
A.一个整型表达式B.一个不合法的表达式C.一个浮点表达式D.一种函数调用正确答案:A3、若有 float x=2,y=5.6;则表达式 (int)x%(int)y将完成()。
A.将x和y的的表达式的类型转换为整型,完成求余运算B.将x的值的类型转换为整型C.将x和y的类型转换为整型D.不能进行求余运算正确答案:A4、字符串 "\\\\abcd\\\\\n"在内存中占用的字节数是()。
A.14B.9C.11D.10正确答案:D5、下面关于C语言标识符的命名规则叙述中不准确的是()。
A.首字符必须为字母或下划线B.不能使用系统的保留字C.只能由字母、数字和下划线组成D.不区分大小写字母正确答案:D6、以下哪个数字的值最大()。
A.10.0B.0x10C.010D.10正确答案:B二、判断题1、C语言的关键字是由C语言规定的、具有特定功能的固定字母组合,也称为保留字,共计32个。
正确答案:√2、变量被定义后没有赋值,其单元内容不可以使用,是内存中的随机数。
3、变量的初始化是指在定义时对其赋值。
正确答案:√4、当存储单元溢出时,数据的值不会受到影响,只会丢掉超过的部分。
正确答案:×三、填空题1、在C语言中,对于整型变量采用有符号数和_________数两种存储形式。
正确答案:无符号2、当赋值语句右边表达式类型与左边变量类型不一致时,以_______类型为准。
正确答案:左边变量3、若有变量定义:char w;int x;float y;double z;则表达式w*x+z-y的结果为_____类型。
正确答案:double4、已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是_____。
c语言单元测试实例

c语言单元测试实例【实用版】目录一、C 语言单元测试简介二、C 语言单元测试实例1.实例一:计算两个整数的和2.实例二:计算两个整数的差3.实例三:计算两个整数的积4.实例四:计算两个整数的商三、C 语言单元测试的优点与应用正文一、C 语言单元测试简介C 语言单元测试是对 C 语言程序中的单个函数或模块进行测试的一种方法。
通过编写测试用例,可以检查函数的正确性和健壮性,以确保在实际应用中能够正常工作。
单元测试是软件开发过程中非常重要的一环,可以提高代码质量,减少错误和漏洞,提高开发效率。
二、C 语言单元测试实例1.实例一:计算两个整数的和假设我们有一个名为`add`的函数,用于计算两个整数的和。
我们可以编写一个测试用例来检查该函数的正确性。
```c#include <stdio.h>int add(int a, int b);int main() {int a = 5, b = 3;int result = add(a, b);printf("The sum of %d and %d is %d", a, b, result);return 0;}int add(int a, int b) {return a + b;}```2.实例二:计算两个整数的差接下来,我们编写一个名为`subtract`的函数,用于计算两个整数的差。
我们同样可以编写一个测试用例来检查该函数的正确性。
```c#include <stdio.h>int subtract(int a, int b);int main() {int a = 5, b = 3;int result = subtract(a, b);printf("The difference between %d and %d is %d", a, b, result);return 0;}int subtract(int a, int b) {return a - b;}```3.实例三:计算两个整数的积现在,我们编写一个名为`multiply`的函数,用于计算两个整数的积。
C语言程序设计单元测试题四

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.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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中的数据按逆序存放,请填空。