C语言第八章复习题(不含答案)
C语言练习题1
C语言练习题1第八章结构体与共用体1练习题一、c语言基础知识1.1选择题1.以下不是c语言的特点的就是(b)。
a.语言简洁紧凑b.能够编制出功能复杂的程序c.c语言可以直接对硬件操作d.c 语言移植性好2.以下字符序列中,不容用做c语言标识符的就是(b)。
a.abc123b.no.1c._123_d._ok3.正确的c语言标识符是(a)。
a._buy_2b.2_buyc.?_buyd.buy?4.恳请挑选出可以用做c语言用户标识符的一组标识符(b)。
a.voidb.a3_b3c.ford.2adefine_123-abcdowordifcasesizeof5.以下符号中,不属于转义字符的就是(b)。
a.\\\\b.\\0xaac.\\td.\\06.不属于c语言关键字的是(d)。
a.intb.breakc.whiled.character7.就是c语言提供更多的合法关键字的就是(b)。
a.floatb.signedc.integerd.char8.以下不能定义为用户标示符的是(d)。
a.一个主程序和若干子程序共同组成b.一个或多个函数共同组成c.若干过程共同组成d.若干子程序共同组成10.c语言程序的基本单位是(c)。
a.程序行b.语句c.函数d.字符20.下列变量定义中合法的是aa.short_a=1-.le-1;b.doubleb=1+5e2.5;c.longdo=0xfdal;d.float2_and=1-e-3;9xn21.与数学式子对应的c语言表达式是(c)。
2x?1a.9*x^n/(2*x-1)b.9*x**n/(2*x-1)c.9*pow(x,n)*(1/(2*x-1))d.9*pow(n,x)/(2*x-1)第八章结构体与共用体222.若存有代数式3ab,则不正确的c语言表达式是(c)。
cda.a/c/d*b*3b.3*a*b/c/dc.3*a*b/c*dd.a*b/d/c*323.已知各变量的类型说明如下:intm=8,n,a,b;unsignedlongw=10;doublex=3.14,y=0.12;则以下符合c语言语法的表达式是(a)。
《数据结构(C语言版 第2版)》(严蔚敏 著)第八章练习题答案
《数据结构(C语言版第2版)》(严蔚敏著)第八章练习题答案第8章排序1.选择题(1)从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,这种排序方法称为()。
A.归并排序B.冒泡排序C.插入排序D.选择排序答案:C(2)从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为()。
A.归并排序B.冒泡排序C.插入排序D.选择排序答案:D(3)对n个不同的关键字由小到大进行冒泡排序,在下列()情况下比较的次数最多。
A.从小到大排列好的B.从大到小排列好的C.元素无序D.元素基本有序答案:B解释:对关键字进行冒泡排序,关键字逆序时比较次数最多。
(4)对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数最多为()。
A.n+1B.n C.n-1D.n(n-1)/2答案:D解释:比较次数最多时,第一次比较n-1次,第二次比较n-2次……最后一次比较1次,即(n-1)+(n-2)+…+1=n(n-1)/2。
(5)快速排序在下列()情况下最易发挥其长处。
A.被排序的数据中含有多个相同排序码B.被排序的数据已基本有序C.被排序的数据完全无序D.被排序的数据中的最大值和最小值相差悬殊答案:C解释:B选项是快速排序的最坏情况。
(6)对n个关键字作快速排序,在最坏情况下,算法的时间复杂度是()。
A.O(n)B.O(n2)C.O(nlog2n)D.O(n3)答案:B解释:快速排序的平均时间复杂度为O(nlog2n),但在最坏情况下,即关键字基本排好序的情况下,时间复杂度为O(n2)。
(7)若一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。
A.38,40,46,56,79,84B.40,38,46,79,56,84C.40,38,46,56,79,84D.40,38,46,84,56,79答案:C(8)下列关键字序列中,()是堆。
C语言试题 (无答案)
C语言复习题一、选择题1. C语言中,if语句后的表达式()A.只能是关系表达式B. 只能是逻辑表达式C.只能是关系或逻辑表达式D. 可以是任何合法的表达式2 关于与switch语句配套的case语句中所使用的表达式,说法正确的是()。
A.可以是变量B. 可以是常量或变量C.只能是常量或常量表达式D.无论是何种表达式,只要在执行时有确定的值就行3.下列数组定义语句中,正确的是()A. int a[][]={1,2,3,4,5,6};B.char a[2][3]=‟a‟,‟b‟;C.int a[][3]={1,2,3,4,5,6};D.int a[][]={{1,2,3},{4,5,6}};4. 已定义int a[][3]={1,2,3,4,5,6,7,8,9};则a[1][2]的初值为()A. 2B. 4C. 6D. 85.以下正确的函数首部是()。
A. void fun(int x,int y)B. void fun(int x;int y)C. void fun(int x,y)D. void fun(x,y)6.下面语句中,:int *px = &a;其中指针变量的名字应该()A. *pzB. aC. pxD. &a7. 当调用函数时,实参时一个数组名,则向函数传递的是()A. 数组的长度B.数组的首地址C. 数组的每一个元素的地址D. 数组的每一个元素的值8.以下叙述正确的是()A. 全局变量的作用域一定比局部变量的作用域作用范围的B. 静态static类型变量的生存期贯穿于整个程序的运行期间C. 函数的形参都属于全局变量D. 未在定义语句中赋初值的auto变量和static变量的初值都是随机值9.假设已有#define M(r)r*r,则语句printf(“%d”,M(2+3));的执行结果是()A.11B.5C.25D.410. 已知int a=12;a的地址是2200,若想使整型指针变量p指向a,赋值正确的是()A &a=2200;B *p=12;C *p=2200D p=&a;11. 以下可用作C语言用户自定义标识符的一组是()A. Void, return, ifB. printf, include, fabsC. Max, _abs, MainD. 2abc, pay$, sum-1012. 下面定义字符型变量ch的语句不正确的是()A. char ch=‟\X2A‟;B. char ch=”c”;C. char ch=65;D. char ch=NULL;13. 以下选项中,与k=n++;完全等价的语句是()A. k=n;n=n+1;B. n=n+1;k=n;C. k=++n;D. k+=n+1;14. 已定义inta[][3]={1,2,3,4,5,6,7,8,9};,则a[1][2]的初值为()A. 2B. 4C. 6D. 815. 当调用函数时,实参是一个数组名,则向函数传递的是()A. 数组的长度B. 数组的首地址C. 数组的每一个元素的地址D. 数组的每一个元素的值16. 对for(表达式1;;表达式3),可理解为()A. for(表达式1;0;表达式3)B. for(表达式1;1;表达式3)C. 语法错误D. 仅执行循环一次17. 转换说明符%x的输出形式是()。
C语言 第八章.用户自定义数据类型
u2占2个字节
例:以下程序输出结果是?
union example { struct { int x,y; e.b e.a e.in.x }in; e.in int a; e.in.y int b; }e; void main() { e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); }
内存低地址 01100001 00001010
字符变量c占1个字节
整型变量i占2个字节 单精度实型变量f占4个字节
u1.i=10;
例:以下程序输出结果是?
union u_type { char c[2]; u1
p
内存高地址 内存低地址 ‘a’ ‘b’ c1 c2 c[1] c[0] u1占2个字节 内存高地址 内存低地址 ‘A’ ‘B’ ‘a’ ‘b’ c1 c2 c[1] c[0]
{"0208103322","lisi",19,'M'},{"0208103323","lili",20,'F'}, {"0208103324","xulin",21,'M'}};
学号(number) 姓名(name) 年龄(age) 性别(sex)
stu[0] stu[1] stu[2] stu[3]
char name[8];
int age; char sex;
定义结构体类 sizeof(stu) 型的同时创建 =? 结构体数组
(完整版)C语言各章节复习题(带答案)
一、C语言概述练习题选择1.一个C程序的执行是从。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由。
A)一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成5.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是。
A) C语言程序仅可以编译执行B) C语言程序仅可以解释执行C) C语言程序既可以编译执行又可以解释执行D) 以上说法都不对6.以下叙述中错误的是。
A) C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe 文件7.以下叙述正确的是。
A) C语言程序是由过程和函数组成的B) C语言函数可以嵌套调用,例如:fun(fun(x))C) C语言函数不可以单独编译 D) C语言中除了main函数,其他函数不可作为单独文件形式存在二、数据类型、运算符与表达式选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为x=(i=4,j=16,k=32) A) 4 B) 16 C) 32D) 522.下列四组选项中,均不是C语言关键字的选项是。
《C语言程序设计》 课后习题答案 高等教育出版社
《C语言程序设计》课后习题答案高等教育出版社《C语言程序设计》课后习题答案高等教育出版社第一章:C语言概述1. C语言的特点C语言是一种以处理底层任务和系统编程为目标的高级编程语言。
其特点包括语法简洁、执行效率高、可移植性强等。
第二章:C语言基本数据类型1. C语言中的基本数据类型C语言中的基本数据类型包括整型、字符型、浮点型等。
整型可以进一步细分为有符号整型和无符号整型。
第三章:C语言运算符1. C语言中的运算符C语言中常见的运算符包括算术运算符、赋值运算符、关系运算符、逻辑运算符等。
这些运算符用于执行各种数学和逻辑操作。
第四章:C语言控制语句1. C语言中的条件语句C语言提供了if语句和switch语句来实现条件判断。
if语句用于执行基于布尔表达式的条件分支,而switch语句用于根据不同的值执行不同的代码块。
第五章:C语言函数1. C语言中的函数定义和调用函数是C语言中的基本模块,用于封装可重用的代码。
函数定义包括函数返回类型、函数名、参数列表和函数体等部分。
第六章:C语言数组1. C语言中的数组定义和使用数组是一组相同类型的数据元素的集合。
C语言中可以使用数组来存储和操作大量数据。
第七章:C语言指针1. C语言中的指针概念指针是一种变量,它存储了内存地址。
通过指针,可以直接访问和修改对应内存地址中的数据。
第八章:C语言字符串1. C语言中的字符串操作字符串是由一系列字符组成的数据类型。
C语言通过字符数组来表示和操作字符串。
第九章:C语言结构体1. C语言中的结构体定义和使用结构体是一种自定义的复合数据类型,它可以包含多个不同类型的成员变量。
第十章:C语言文件操作1. C语言中的文件读写操作文件操作是一种重要的数据输入和输出方式。
C语言提供了一系列函数来实现文件的读写操作。
总结:通过解答以上习题,我们可以更好地掌握C语言的各个方面,提升我们的编程能力和解决问题的能力。
希望本文对读者有所帮助。
数据结构(C语言版)考研复习题
数据结构(C语言版)考研复习题第1 页共19 页第一章绪论1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。
1.2 常用的存储表示方法有哪几种?1.3 算法的时间复杂度仅与问题的规模相关吗?1.4 有时为了比较两个同数量级算法的优劣,须突出主项的常数因子,而将低次项用大"O"记号表示。
例如,设T1(n)=1.39nlgn+100n+256=1.39nlgn+O(n), T2(n)=2.0nlgn-2n=2.0lgn+O(n), 这两个式子表示,当n足够大时T1(n)优于T2(n),因为前者的常数因子小于后者。
请用此方法表示下列函数,并指出当n足够大时,哪一个较优,哪一个较劣?函数大"O"表示优劣(1) T1(n)=5n22-3n+60lgn 5n22+O(n)(2) T2(n)=3n22+1000n+3lgn 3n22+O(n)(3) T3(n)=8n22+3lgn 8n22+O(lgn)(4) T4(n)=1.5n2+6000nlgn 1.5n2+O(nlgn)第二章线性表2.1 试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。
2.2 何时选用顺序表、何时选用链表作为线性表的存储结构为宜?2.3 为什么在单循环链表中设置尾指针比设置头指针更好?2.4 下述算法的功能是什么?LinkList Demo(LinkList L){ // L 是无头结点单链表ListNode *Q,*P;if(L&&L->next){Q=L;L=L->next;P=L;while (P->next) P=P->next;P->next=Q; Q->next=NULL;}return L;}// Demo2.5设线性表的n个结点定义为(a0,a1,...a n-1),重写顺序表上实现的插入和删除算法:InsertList 和DeleteList.2.6 设顺序表L是一个递减有序表,试写一算法,将x插入其后仍保持L的有序性。
C语言程序设计(第八章)
的读写函数。 每次可从文件读出或向文件写入一个字符。
第八章
1.读字符函数fgetc()
fgetc() 函数的功能是从指定的文件中读一个字符,函
数调用的形式为:
字符变量 = fgetc(文件指针);
例如:
ch = fgetc(fp);
的意义是从打开的文件fp中读取一个字符并送入ch中 。
(1)字符读/写函数 :fgetc()/fputc()
(2)字符串读/写函数:fgets()/fputs()
(3)数据块读/写函数:freed/()fwrite()
(4)格式化读/写函数:fscanf()/fprinf()
以上函数原型都在头文件stdio.h中加以声明。
第八章
8.5.1字符读/写函数 :fgetc()/fputc()
关闭文件则断开指针与文件之间的联系,禁止再对该文
件进行操作。
第八章
8.3.1 文件打开的函数fopen()
open函数用于打开一个文件,其调用的一般形式为: 文件指针名 = fopen(文件名, 使用文件方式);
“文件指针名”:必须是被说明为FILE 类型的指针变量。
“文件名”:被打开文件的文件名,“文件名”是字符串常 量、字符数组或字符指针。 “使用文件方式”:指文件的类型和操作要求。
/* 输出系统提示信息 */
上面程序段的意义是,如果返回的指针为空,表示不能 打开test.dat文件,则给出提示信息“打开文件test.dat出 错!”,然后输出系统提示信息,当用户从键盘敲任一键后 执行exit(1)退出程序 。
第八章
8.3.2 文件关闭的函数fclose()
智慧树知到程序设计基础(C语言)测试第八章单元测试参考答案
智慧树知到程序设计基础(C语言)测试第八章单元测试参考答案•总题数: 101【判断题】 (10分)有如下函数调用语句:fun(r1,r2+r3,(r4,r5));该函数调用语句中,含有的实参个数是3个。
A.错B.对正确本题总得分10分2【判断题】 (10分)函数可以嵌套定义,但不能嵌套调用。
A.对B.错正确本题总得分10分3【判断题】 (10分)mian函数可以自己调用自己。
A.对B.错正确本题总得分10分4【单选题】 (5分)以下正确的函数定义是()。
A.fun(int x,y){ int z; return int z; }B.double fun(int x,int y){ z=x+y; return z; }C.double fun(int x,int y){ double z;z=x+y;return z; }D.fun(x,y){int x,y; z=x+y; retun z;}正确本题总得分5分5【单选题】 (10分)在C语言函数中,下面说法正确的是()。
A.一个函数中只能有一个return语句。
B.一个return语句可以返回多个值。
C.一个函数中可以有多个return语句,但是最多执行其中一个return语句。
D.一个函数中可以有多个return语句,可能多个return语句全部执行正确本题总得分10分6【单选题】 (10分)在C语言函数中,以下说法正确的是()。
A.return后边的值不能为表达式B.定义函数时,形参的类型说明可以放在函数体内。
C.如果形参与实参的类型不一致以实参类型为准D.如果函数值的类型与return返回值类型不一致,以函数值类型为准正确本题总得分10分7【单选题】 (10分)在C语言程序中,以下正确的描述是()。
A.函数的定义和调用均可以嵌套B.函数的定义和函数的调用均不可以嵌套C.函数的定义可以嵌套,但函数的调用不可以嵌套D.函数的定义不可嵌套,但函数的调用可以嵌套正确本题总得分10分8【单选题】 (10分)有下列程序,程序运行后的输出结果是()。
(完整版)C语言试题库(完整版)
C语言试题库一、单项选择第一章 C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的MAIN函数开始,到本程序的最后一个函数结束。
D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。
(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。
B、 C程序的每行中只能写一条语句。
C、 C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(3) C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。
B、必须在系统调用的库函数的后面C、可以在任意位置。
D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、 C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、 if, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4) 以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5) 若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#include “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”); else printf(“$ $ $\n”); }以上程序。
C语言上机题库百科园第八章!南信大!
第八章以下叙述中正确的是()若有以下语句typedefstruct S{int g; char h;}T;A.可用T定义结构体变量是struct S类型的变量C.可用S定义结构体变量是struct类型的变量当定义一个结构体变量时,系统分配给它的内存是()。
A.结构体中最后一个成员所需内存量B.成员中占内存量最大的容量C.结构体中第一个成员所需内存量D.各成员所需内存量的总和若有以下定义:struct link{int data;struct link *next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构,若指针p指向a,指针q指向c。
则能把c插入到a和b之间形成新的链表的语句是()>next=&c;q->next=p->next;q->next=&b;=b;/*N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。
请编写函数fun,它的功能是:求出平均分,由函数值返回。
例如,若学生的成绩是85,76,69,91,72,64,87,则平均分应当是。
注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:*/#include<>#include<>#define N 8struct sliststruct slist *next;};typedef struct slist STREC;double fun(STREC *h){/***********Begin***************//***********End**************/}STREC *creat(double *s) /*创建链表*/ {STREC *h,*p,*q;int i=0;h=p=( STREC*)malloc(sizeof(STREC));p->s=0;while(i<N){q=( STREC*)malloc(sizeof(STREC));q->s=s[i];i++;p->next=q;p=q;}p->next=0;return h;}outlist(STREC *h){STREC *p;p=h->next;printf("head ");do{printf("->%4.1f ",p->s);p=p->next; /*输出各成绩*/}while(p!=NULL);printf("\n\n");}void main(){FILE *wf;double s[N]={85,76,69,85,91,72,64,87},ave; STREC *h;h=creat(s);ave=fun(h);printf("ave=%6.3f\n ",ave);/******************************/wf=fopen("debug\\","w");fprintf(wf,"%6.3f\n",ave);fclose(wf);/*****************************/}【参考代码】double av=;STREC *p=h->next;/*p直接指向"头节点"的下一个节点,即第一个成绩*/while(p!=NULL){av=av+p->s; /*求总分数*/p=p->next;}return av/N; /*返回平均值*//*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
c语言第八章课后题答案
for(j=0; j<ROW; j++)
{
printf("%6d",a[i][j]);
}
printf("\n");
}
}
int main()
{
int a[ROW][COL],b[COL][ROW],c[ROW][ROW],i,j;
printf("Input 2*3 matrix a:\n");
for(i=0; i<ROW; i++)
printf("%d",x);
return 0;
}
结果:
分析:调用函数时只发生值的传递,形参与实参之间再也没有关系,子函数一旦退出,内部变量就释放空间
(2)
#include <stdio.h>
void Func(int b[])
{
int j;
for(j=0; j<4; j++)
{
b[j]=j;
}
}
int main()
int i;
int m;
srand(time(NULL)); /*注意:只能将产生随机数种子写在循环外面*/
for(i=0; i<6000; i++)
{
m=rand()%6+1;
switch (m)
{
case 1:
a++;
break;
case 2:
b++;
break;
case 3:
c++;
break;
printf("Results:\n");
《C语言程序设计》课后习题答案第八章
8.1 编写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数由键盘输入。
void main(){ int Mgy(int x,int y);int Mgb(int z);int a,b,mgy,mgb;printf("请输入两个数:\n");scanf("%d,%d",&a,&b);mgy=Mgy(a,b);mgb=Mgb(a,b,mgy);printf("两个数的最大公约数为%d,最小公倍数为%d\n",mgy,mgb);}int Mgy(int x,int y){ int r,temp;if(x<y){ temp=x;x=y;y=temp;}while(x%y!=0){ r=x%y;x=y;y=r;}return y;}int Mgb(int x,int y,int z){ return (x*y/z);}8.2 求方程ax²+bx+c=0的根,用三个函数分别求当b²-4ac大于零、等于零和小于零时的根,8.3编写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。
#include<math.h>void main(){ int Isprime(int a);int m,temp=0;printf("请输入一个数:\n");scanf("%d",&m);temp=Isprime(m);if(temp==0) printf("%d不是素数。
\n",m);else printf("%d是素数。
\n",m);}int Isprime(int a){ int i,k,flag;if(a==0||a==1) flag=0;else{ k=sqrt(a);for(i=2;i<=k;i++)if(a%i==0) flag=0; }return flag; }8.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一格空8.9编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符8.10 写一个函数,输入一行字符,将此字符串中最长的单词输出。
c语言程序设计第五版课后答案谭浩强第八章课后答案
c语⾔程序设计第五版课后答案谭浩强第⼋章课后答案c语⾔程序设计第五版课后答案谭浩强习题答案第⼋章善于利⽤指针本章习题均要求使⽤指针⽅法处理。
1. 输⼊3个整数,要求按由⼩到⼤的顺序输出。
解题思路:先获取到三个变量的地址,然后获取三个数据,通过指针进⾏⽐较转换即可答案:#include <stdio.h>void swap(int *p_a, int *p_b){int temp = *p_a;*p_a = *p_b;*p_b = temp;}int main(){int a, b, c, *p_a = &a, *p_b = &b, *p_c = &c; // 获取每个变量空间的地址printf("Please enter three numbers:");scanf_s("%d%d%d", p_a, p_b, p_c);if (*p_a > *p_b) {swap(p_a, p_b);//通过指针进⾏指向空间内的数据交换}if (*p_a > *p_c) {swap(p_a, p_c);}if (*p_b > *p_c) {swap(p_b, p_c);}printf("%d %d %d\n", *p_a, *p_b, *p_c);system("pause");return 0;}2. 输⼊3个字符串,要求按由⼩到⼤的顺序输出。
解题思路:字符串的⽐较可以使⽤strcmp函数,返回值>0表⽰⼤于,返回值⼩于0表⽰⼩于,返回追等于0表⽰相同。
其他的⽐较排序思路与数字的排序交换没有区别,逐个进⾏⽐较先找出最⼤的,然后找出第⼆⼤的。
答案:#include <stdio.h>int main(){char str[3][32];char *p[3];printf("Please enter three strings:");for (int i = 0; i < 3; i++) {p[i] = str[i];scanf_s("%s", p[i], 32);//后边的数字限制缓冲区边界,防⽌缓冲区溢出访问越界}//让p[0]和p[1]/p[2]分别进⾏⽐较,找出最⼤的字符串,i+1之后,则让p[1]和p[2]进⾏⽐较,找出第⼆⼤//i循环总个数-1次,最后⼀个是不需要⽐较的for (int i = 0; i < 2; i++) {for (int j = i + 1; j < 3; j++) {if (strcmp(p[i], p[j]) > 0) {char *tmp = p[i]; p[i] = p[j]; p[j] = tmp;}}}printf("%s %s %s\n", p[0], p[1], p[2]);system("pause");return 0;}3. 输⼊10个整数,将其中最⼩的数与第⼀个数对换, 把最⼤的数与最后⼀个数对换。
C语言 第八章 结构体
共用体
3)直接定义联合变量 union {
int i;
float f; }num; 说明:(1)共用体变量的所有成员占有同一段内存,所占内存空 间是其成员中字节数最大的成员占有的字节数。
(2)共用体变量中可以定义许多不同类型的成员,但同一时刻只
有一个成员的数据有效。
共用体
4.共用体变量初始化 初始化时,只能对第一个成员的数据类型初始化。 例:union data num={10}; 正确 union data num={10,25.4}; 错误
结构体变量
方法三:定义结构体类型的同时定义结构体变量,省略结构体类型名
struct DATE{ int year; int month; int day;}; struct {
long int number;
char name[8]; int age;
char *sex;
struct DATE birthday; }stu1,stu2;
数据类型
数据类型
成员名1;
成员名2;
//成员表
……
};
结构体类型
2.结构体类型的定义: 说明: (1) struct是关键字,标识一个结构体类型定义的开头 (2)“结构体类型名”是表示该结构体类型的名称的标识符,可
类比int、char
(3)“成员表”是构成结构体类型的成份,由一个或多个成员构
成,每个成员有自己的成员名。各成员数据类型可以不同,既可以
枚举类型
3.枚举变量定义
方式一:类型和变量分开定义 enum WEEKDAY{Sun,Mon,Tue,Wed,Thu,Fri,Sat};//定义枚举类型 enum WEEKDAY w;//定义枚举变量w
C语言程序设计智慧树知到答案章节测试2023年甘肃财贸职业学院
第一章测试1.构成C语言程序的基本单位是()。
A:框架B:语句C:预处理D:函数答案:D2.在程序开发过程中,把文本文件格式源程序转化为二进制格式的目标程序的过程称之为()。
A:编辑B:连接C:编译D:运行答案:C3.关于主函数,下列说法不正确的是()。
A:C语言程序的运行从主函数开始,以主函数为核心展开B:主函数可以被其他自定义函数调用C:主函数的名称只能是mainD:一个完整的C语言应用程序有唯一的主函数答案:B4.关于标识符,下列说法不正确的是()。
A:用户自定义标识符中不区分大小写字母B:关键字不能作为用户自定义标识符C:标识符中可以出现下划线,且可以出现在标识符的任意位置D:库函数名称为预定义标识符,不建议用作用户自定义标识符答案:A5.以下可用作用户自定义标识符的一组是()。
A:printf、include、fabsB:2abc、pay$、sum-10C:Max、_abc、MainD:void、return、if答案:C第二章测试1.在C语言中,int、short、char三种类型数据所占用的存储空间是()。
A:int和short占2个字节,char占1个字节B:由用户自己定义C:与编译环境有关D:均为2个字节答案:C2.下面定义字符型变量ch的语句不正确的是()。
A:char ch=“c”;B:char ch=65;C:char ch=NULL;D:char ch=‘X2A’;答案:A3.已知大写字母A的ASCII是65,小写字母a的ASCII是97,以下不能将字符型变量c中的大写字母转换成对应的小写字母的语句是()。
答案:B4.设有定义:double d,h;,其中d为三角形的底边长,h为三角形的高,则以下C语言表达式与其面积公式1/2dh计算结果不相符的是()。
A:d h/2B:d/2hC:d h1/2D:1/2d h答案:D5.以下选项中,与k=n++;完全等价的语句是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.以下程序的输出结果是( )int f(){ static int i=0;int s=1;s+=i; i++;return s;}main(){ int i,a=0;for(i=0;i<5;i++) a+=f();printf("%d\n",a);}(A) 20 (B) 24 (C) 25 (D) 152.有以下程序#define N 20fun(int a[],int n,int m){ int i,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){ int i,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是( )。
(A)10234 (B)12344 (C)12334 (D)122343.若有以下程序#include <stdio.h>void f(int n);main(){ void f(int n);f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中不正确的是( )(A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f(B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f(C) 对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明(D) 函数f无返回值,所以可用void将其类型定义为无值型4.在C语言中,形参的缺省存储类是( )。
(A) auto (B) register (C) static (D) extern5.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )。
(A) 地址传递(B) 单向值传递(C) 由实参传给形参,再由形参传回实参(D) 传递方式由用户指定6.下列函数的功能是( )。
(A)求字符串的长度(B)比较两个字符串的大小(C)将字符串x复制到字符串y (D)将字符串x连接到字符串y后面int fun1(char * x){char *y=x;while(*y++);return(y-x-1);}7.下面程序的输出是( )。
(A)3 (B)4 (C)6 (D)9fun3(int x){static int a=3;a+=x;return(a);}main(){int k=2,m=1,n;n=fun3(k);n=fun3(m);printf("%d\n",n);}8.下面程序的输出是( )。
(A)1 (B)2 (C)7 (D)10int m=13;int fun2(int x,int y){int m=3;return(x*y-m);}main(){int a=7,b=5;printf("%d\n",fun2(a,b)/m);}9.若程序中定义了以下函数double myadd(double a,double b){ return (a+b) }并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( A )。
(A) double myadd(double a,b)(B) double myadd(double,double);(C) double myadd(double b,double a)(D) double myadd(double x,double y);10.以下对C语言函数的有关描述中,正确的是( )。
(A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参(B)C函数既可以嵌套定义又可以递归调用(C)函数必须有返回值,否则不能使用函数(D)C程序中有调用关系的所有函数必须放在同一个源程序文件中11.以下叙述中不正确的是( )。
(A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值(B)在C中,在调用函数时,实际参数和对应形参在类型上只需赋值兼容(C)在C中,外部变量的隐含类别是自动存储类别(D)在C中,函数形参可以说明为register变量12.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是 ( )。
(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和13.以下叙述中不正确的是( )。
(A) 在不同的函数中可以使用相同名字的变量(B) 函数中的形式参数是局部变量(C) 在一个函数内定义的变量只在本函数范围内有效(D) 在一个函数内的复合语句中定义的变量在本函数范围内有效14.设有以下函数:f ( int a){ int b=0;static int c = 3;b++; c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是( )。
main(){ int a = 2, i;for(i=0;i<3;i++) printf("%d\n",f(a));}(A) 7 (B) 7 (C) 7 (D) 78 9 10 79 11 13 715.有以下函数int aaa(char *s){char *t=s;while(*t++);t--;return(t-s);}以下关于aaa函数的功能叙述正确的是( )。
(A)求字符串s的长度 (B)比较两个串的大小(C)将串s复制到串t (D)求字符串s所占字节数16.有以下程序int abc(int u,int v);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;}输出结果是( C )。
(A) 6 (B) 7 (C) 8 (D) 917.以下程序运行后,输出结果是( )。
func(int a, int b){ static int m=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){ int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}(A) 8,15 (B) 8,16 (C) 8,17 (D) 8,818.以下程序运行后,输出结果是( )。
int d=1;fun(int p){ 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 9 (C) 9 5 (D) 4 419.以下程序的输出结果是( )。
(A) 6 9 9 (B) 6 6 9 (C) 6 15 15 (D) 6 6 15int d=1;fun(int p){ static int d=5;d+=p;printf("%d ",d);return(d);}main( ){ int a=3; printf("%d \n",fun(a+fun(d))); }20.以下叙述中错误的是( )。
(A)C程序必须由一个或一个以上的函数组成(B)函数调用可以作为一个独立的语句存在(C)若函数有返回值,必须通过return语句返回(D)函数形参的值也可以传回给对应的实参21.若有以下调用语句,则不正确的fun函数的首部是 ( )。
(A) void fun(int m, int x[]) (B) void fun(int s, int h[41])(C) void fun(int p, int *s) (D) void fun(int n, int a)main(){ …int a[50],n;…fun(n, &a[9]);… }以下程序的输出结果是( )。
(A) 6 9 9 (B) 6 6 9 (C) 6 15 15 (D) 6 6 15int d=1;fun(int p){ static int d=5;d+=p;printf("%d ",d);return(d);}main( ){ int a=3; printf("%d \n",fun(a+fun(d))); }22.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5);该函数调用语句中,含有的实参个数是( )。
(A) 3 (B) 4 (C) 5 (D) 有语法错23.有如下程序int func(int a,int b){ return(a+b);}main(){ int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%\d\n”,r);该程序的输出的结果是( )。
(A) 12 (B) 13 (C) 14 (D) 1524.在C语言中,函数的隐含存储类别是( )。
(A) auto (B) static (C) extern (D) 无存储类别25.下列叙述中正确的是( )。
(A) C语言编译时不检查语法(B) C语言的子程序有过程和函数两种(C) C语言的函数可以嵌套定义(D) C语言所有函数都是外部函数26.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )。
(A) 地址传递(B) 单向值传递(C) 由实参传给形参,再由形参传回实参(D) 传递方式由用户指定27.以下所列的各函数首部中,正确的是()。
(A) void play(var :Integer,var b:Integer) (B) void play(int a,b)(C) void play(int a,int b) (D) Sub play(a as integer,b as integer)28.以下程序的输出结果是()。
(A) 0 (B) 29 (C) 31 (D) 无定值fun(int x, int y, int z){ z=x*x+y*y; }main(){ int a=31;fun(5,2,a);printf("%d",a);}29.当调用函数时,实参是一个数组名,则向函数传送的是()。