大学C语言设计教程习题.pdf
第一章习 题一、选择题1.以下叙述不正确的是()A.在 C 程序中,语句之间必须要用分号;分隔B.若 a 是实型变量,C 程序中a=10是正确的,因为实型变量中允许存放整型数C.在 C 程序中,无论是整数还是实数都能正确无误地表示D.在 C 程序中,是只能用于整数运算的运算符2.一个C 语言程序总是从()开始执行。A.主过程C.子程序3.一个完整的可运行的C 源程序中(A.可以有一个或多个主函数C.可以没有主函数4.构 成 C 语言源程序的基本单位是(A.子程序 B.过程5.以下说法中正确的是()B.主函数D.主程序B.必须有且仅有一个主函数D.必须有主函数和其他函数C.文本 D.函数A.C 语言程序总是从第一个定义的函数开始执行B.在 C 语言程序中,要调用的函数必须放在main()函数中定义C.C 语言程序总是从main。函数开始执行D.C 语言程序中的main。函数必须放在程序的开始部分6.C 语言规定,一个C 源程序的主函数名必须为()。A.program B.include C.main D.function7.下列说法正确的是()。A.在书写C 语言源程序时,每个语句以逗号结束1B.注释时,“/”和“*”号间可以有空格C.无论注释内容的多少,在对程序编译时都被忽略D.C 程序每行只能写一个语句8.在 Visual C-H-6.0开发环境下,()C/CPP源文件,但只能有(A.1 个C.3 个9.C 语言源程序文件的后缀是(Build后,生成文件的后缀是()。A.obj B.exe10.C 语言的程序一行写不下时,A)用逗号换行C)在任意一空格处换行C 程序按工程(project)进行组织,每个工程可包括)main函数。B.2 个D.1 个 以 上(含 1个),经过Compile后,生成文件的后缀是(),经过C.c D.doc可 以()B)用分号换行D)用回车符换第二章习 题一、选择题I.以下不正确的C 语言标识符是()oA.ABCB.abcC.a bcD.ab.c2.C 语言中最基本的非空数据类型包括A.整型、浮点型、无值型C.整型、浮点型、字符型B.整型、字符型、无值型D.整型、浮点型、双精度型、字符型3.若有定义:int a=7;float x=2.5;y=4.7;则表达式 x+a%3*(int)(x+y)%2/4 的值是:)oA.2.500000B.2.750000C.3.500000D.0.0000004.C 语言中运算对象必须是整型的运算符是()。A.%B./C.D.=10 or a=0|a=l 0&a =1 0|a =09 .下列字符序列中,不可用作C语言标识符的是()。A.x d s 4 2 6 B.N o.l C.ok D.z w d1 0 .在pri n t f()函数中,反斜杠字符T表 示 为()oA.V B.0 C.n D.1 1 .已知有变量定义:i n t a;c h a rc;用s c a n f(%d%c”,&a,&c);语句给a和c输入数据,使3 0存入a,字 符 b 存入c,则正确的输入是()。A.3 0 b v 回车 B.3 0 b v回车,C.3 0 V回车,b v回车,D.3 0 b v回车,1 2 .设先有定义:i n t a=1 0;则表达式a+=a *=a的值为()。A.1 0 B.1 0 01 3 .设先有定义:C.1 0 0 0D.2 0 0i n t a=1 0;则表达式(+a)+(a-)的 值 为()。A.2 0 B.2 11 4.有如下程序C.2 2D.1 9#i n c l u d e m a i n()i n t y=3,x=3,z=l;pri m f f%d%d n”,(+x,y+z+2);运行该程序的输出结果是()。A.3 4 B.4 2 C.4 31 5.假定x、y、z、m均为i n t型变量,有如下程序段:D.3 3x=2;y=3;z=l;m=(y x)?y:x;m=(z z)&(y=z)&x|y+z&y+z 的值为A.0 B.1 C.2 D.318 .如果 a=l,b=2,c=3,d=4,则条件表达式 ab?a:cd?c:d 的 值 为()。A.1 B.2 C.3 D.419.设 i n t m=l,n=2;则 m+=n;的结果是()。A.0 B.1 C.2 D.3二、填空题1.与 乘 法 运 算 具 有 相 同 优 先 级 的 算 术 运 算 符 是。2.在具有嵌套括号的算术表达式中,一括号首先被计算。1.表达式10/3的结果是;1 0%3的结果是。2.执行语句:inta=12;a+=a=a*a;后的值是。3.以 下 语 句 的 输 出 结 果 是。short b=6553 5;printf(H%d ;b);4 .以 下 程 序 的 执 行 结 果 是。#inc l ud e m ain()int a,b,x;x=(a=3,b=a-);printf(Hx=%d,a=%d,b=%d n,x,a,b);5 .以 下 程 序 的 执 行 结 果 是。#inc l ud e m ain()(f l oat f l,f 2,f 3,f 4;int m l,m 2;f l=f 2=f 3=f 4=2;m l=m 2=l;printf(%d nH,(m 1 =f l=f 2)&(m 2=f 3 f 4);)6 .以 下 程 序 的 执 行 结 果 是。#inc l ud e m ain()f l oat f=13.8;int n;n=(int)f%3;printfi(nn=%dn,n);三、编程题1.请编写一个这样的程序:请求用户输入两个数,读取两个数后打印它们的和、乘积、差、商及余数。2.输入一个3位整数,求出该数每个位上的数字之和。如1 2 3,每个位上的数字和就是1+2+3=6。第三章习 题一、选择题1 .结构化程序模块不具有的特征是()。A.只有一个入口和一个出口B.要尽量多使用goto语句C.一般有顺序、选择和循环3种基本结构D.程序中不能有死循环2.程序段如下:则以下说法中不正确的是:#includc main()int k=2,;while(kb)m=a;C.if(a=b)=0)m=a;5.若i,j均为整型变量,则以下循环(B.k=k+1;执行2次D.循环体只执行一次C.非 0 数 D.TRUEB.if(a=0)m=a;)for(i=0j=2;j=l;i+j-)printf(%5d,%dn,i,j);A.循环体只执行一次C.是无限循环6 .程序段如下:则以下说法中正确的是:int k=-2 0;w hil e(k=O)k=k+l;A.w hil e循环执行20次C.循环体语句一次也不执行7 .以下程序段,执行结果为()。a=l;d oa=a*a;(w hil e(!a);A.循环体只执行一次C.是无限循环B.循环体执行二次D.循环条件不合法B.循环是无限循环D.循环体语句执行一次B.循环体执行二次D.循环条件不合法8.C 语言中while与 dowhile语句的主要区别是().,A.dowhile的循环体至少无条件执行一次B.dowhile允许从外部跳到循环体内C.while的循环体至少无条件执行一次D.while的循环控制条件比dowhile的严格9.语句while(!a);中条件等价于(9A.a!=0 B.a C.a=l D.a=010.分析以下程序,下列说法正确的是 Omain()int x=0,a=0,b=0;if(x=a+b)printf(*n);else printf(#n);)A.有语法错,不能通过编译 B.通过编译,但不能连接C.输出*D.输出#11.以下程序的运行结果为()。inc l ud e m ain()int i=l,sum=0;w hil e(i=100)sum+=i;i+;printf(l+2+3+.+99+100=%d,sum);)A.5050 B.112.以下程序的运行结果为()。#include main()int sum,pad;sum=pad=5;pad=sum+;pad+;+pad;printfC%dnH,pad);)A.7 B.613.以下程序的运行结果为()。include main()int a=2,b=10;printf(Ma=%d,b=%dnM,a,b);)A.a=%2,b=%10C.a=%d,b-%dC.0 D.程序陷入死循环C.5 D.4B.a=2,b=10D.a=%d,b=%d14.为了避免嵌套的if-else语句的二义性,C 语言规定else总 是()。A.与缩排位置相同的if组成配对关系B.与在其之前未配对的if组成配对关系C.与在其之前未配对的最近的if组成配对关系D.与同一行上的if组成配对关系15.对于fbr(表达式1;表达式3)可理解为()A.fbr俵 达 式 1;0;表达式3)B.fbr(表达式I;1 ;表达式3)C.fbr(表达式1;表达式1;表达式3)D.fbr(表达式1;表达式3;表达式3)二、填空题1.是算法的图形化表示。2.在流程图中,符号表示了各步骤执行的顺序。3.结束框表示了每个算法的 和4.若 a=5,b=6,c=7,d=8,则表达式 d=a/2&b=c|!a 的值为5.定 义int x=10,y,z;执行y=z=x;x=y=z后,变量x的值为6.下面程序的功能是计算n!。#include main()int i,n;long p;printf(Please input a number:n);scanf(H%dH,&n);P=;fbr(i=2;i=n;i+)primffn!=%ld”,p);7.投票表决器:输入Y、y,打印agree输入N、n,打印disagree输入其他,打印losemain()fchar c;scanf(n%c&c);case Y:case y:p r i n t f(a g r e e );case N:case n:printf(disagree);_:printtplose);8.准备客票。某铁路线上共10个车站,问需要准备几种车票?main。int i,j,station,total=0;printf(输入车站数scanf(M%dM,&station);for(i=l;i;i+)fbr(j=;j=station;j-H-)total=;printf(车票种类=%d nM,total);9.下面程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高和最低成绩,当输入负数时结束输入。#include main()(float score,max,min;printf(Please input one score:n);scanf(*%f*,&score);max=min=score;while()(if(scoremax)max=score;if()min=score;printf(Please input another score:nM);scanf&score);printfCnThc max score is%fnThe min score is%f max,min);10.打印出以下图形*main()(int i,j,k;fbr(i=O;i=;i+)forO=0;j=2-i;j+)print”);fbr(k=0;k=;k+)print*);for(i=0;i=2;i-H-)for0=0y=printff”);for(k=0;k=;k+)printfC*);printffW”);)V Y2 r3 r411.下面程序的功能是:计算产工-工+的值。要求从键盘上输入X的值,精度1 3 5 7控制在0.00001内。#include#include main()(float x,y=0,fz=-l,fm=-1,temp=1;printf(Please input the value of x:nH);scanf(n%f,&x);while()fz=;fm=fm+2;temp=fz/fm;y+=temp;printf(Mny=%fy);1 2.下面的程序完成两个数的四则运算。用户输入一个实现两个数的四则运算的表达式,程序采用switch语句对其运算进行判定后执行相应的运算并给出结果。#include main()float x,y;char op;printfifTlease input Expression:);scanf(,%f%c%fw,&x,&op,&y);caseprintf(n%g%c%g=%gnn,);caseprintf(,%g%c%g=%gnH,x,op,y,x-y);break;case*:printf(,%g%c%g=%gn,x,op,y,x*y);break;case 7:if()printffDivision Error);elseprintf(,%g%c%g=%gn,x,op,y,x/y);break;defaultiprintffExpression Error!nM);三、编程题1.写一程序求y 值(x 值由键盘输入)。sin(x)+cos(x)y=12sin(x)-cos(x)U 0)(x 0)2.给出三角形的三边a、b、c,求三角形的面积。(应先判断a、b、c 三边是否能构成一个三角形)3.有函数y=440,八 x+1015505 0-(X-30)40+(x-45)306 0-*x-7 5)无意义(0 x15)(15x30)(30 x45)(45x75)(75 x 90)(其它)请编程序计算y 的值(x 的值山键盘输入)。4.某幼儿园只收26 岁的小孩,23 岁编入小班,4 岁编入中班,56 岁编入大班,编制程序实现每输入一个年龄,输出该编入什么班。5.输入一元二次方程的3 个系数a、b、c,求出该方程所有可能的根。6.一个灯塔有8 层,共有765盏灯,其中每一层的灯数都是其相邻上层的两倍,求最底层的灯数。207.求,=1 (即求 1!+2!+3!+.+20!)。8.一 张 10元票面的纸钞兑换成1 元、2 元 或 5 元的票面,问共有多少种不同的兑换方法?9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6 的因子为1、2、3,而 6=1+2+3,因此6 是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,310.编程打印出所有的“水仙花数”。所谓水仙花数:是指一个三位数,其各位数字的立方之和等于该数。11.如果一个数等于其所有真因子(不包括其本身)之和,则该数为完数,例如,6 的因子有I、2、3,且 6=1+2+3,故 6 为完数,求 21000中的完数。12.两个乒乓球队进行比赛,各出三人,甲队为A、B、C 三人,乙队为X、Y、Z 三人,已知抽签决定比赛名单。有人向队员打听比赛的名单,A 说他不和X 比,C 说他不和X、Z 比,请编程序找出三对赛手的名单。13.将 4100中的偶数分解成两个素数之和,每个数只取一种分解结果。如 100可分解为 3 和97、或 为 11和 89、或 为 17和 83等,但我们只取第一种分解即可。14.一个自然数平方的末几位与该数相同时,称该数为同构数。例如,252=625,则 25为同构数。编程求出11 000中所有的同构数。15.两 位 数 13和 62具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变,即 13*62=31*26。编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如 11、2 2,重复出现的不在此列,如 13*62与 62*13)。第四章习 题一、选择题1.C 语言中函数形参的缺省存储类型是()。A.静态(static)B.自 动(auto)C.寄 存 器(register)D.外 部(extern)2.在 C 语言中,当函数调用时()。A.实参和形参各占一个独立的存储单元B.实参和形参共用存储单元C,可以由用户指定实参和形参是否共用存储单元D.由系统自动确定实参和形参是否共用存储单元3.如果在一个函数的复合语句中定义了一个变量,则该变量()。A.只在该符合语句中有效,在该符合语句外无效B.在该函数中任何位置都有C.在本程序的原文件范围内均有效D.此定义方法错误,其变量为非法变量4.函数调用语句fbnction(expl,exp2),18)中含有的实参个数为()。A.0 B.1 C.2 D.35.下面函数返回值的类型是()。squarc(float x)return x*x;A.与参数x 的类型相同 B.void型 C.无法确定 D.int型6.C 语言允许函数值类型缺省定义,此时该函数值隐含的类型是。A.float 型 B.int 型 C.long 型 D.double 型7.C 语言规定,程序中各函数之间()oA.不允许直接递归调用,也不允许间接递归调用B.允许直接递归调用,但不允许间接递归调用C.不允许直接递归调用,但允许间接递归调用D.既允许直接递归调用,也允许间接递归调用8.一个函数返回值的类型取决于(16第 4 章函 数A.return语句中表达式的类型 B.调用函数时临时指定C.定义函数时指定或缺省的函数类型 D.调用该函数的主调函数的类型9.以下叙述中正确的是()oA.全局变量的作用域一定比局部变量的作用域范围大B.静态(static)类别变量的生存期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值1 0.下面叙述中,错误的是()。A.函数的定义不能嵌套,但函数调用可以嵌套B.为了提高可读性,编写程序时应该适当使用注释C.变量定义时若省去了存储类型,系统将默认其为静态型变量D.函数中定义的局部变量的作用域在函数内部11.在一个源程序文件中定义的全局变量的有效范围为()。A.一个C 程序的所有源程序文件 B.该源程序文件的全部范围C.从定义处开始到该源程序文件结束 D.函数内全部范围12.某函数在定义时未指明函数返回值类型,且函数中没有return语句,现若调用该函数,则正确的说法是()。A.没有返回值 B.返回一个用户所希望的值C.返回一个系统默认值 D.返回一个不确定的值13.函数swap(int x,int y)可实现对x 和 y 值的交换。在执行如下定义及调用语句后,a和 b 的值分别为()。int a=10,b=20;swap(a,b);A.10 和 10 B.10 和 20 C.20 和 10 D.20 和 2014.下面错误的叙述是()A.在某源程序不同函数中可以使用相同名字的变量B.函数中的形式参数是局部变量C.在函数内定义的变量只在本函数范围内有效D.在函数内的复合语句中定义的变量在本函数范围内有效1 5.以下函数值的类型是()。fun(float x)float y;y=3*x-4;第4章 函 数return y;)A)int B)不确定 C)void D)float二、程序填空1.编写一个验证正整数M 是否为素数的函数,若 M 是素数则把1送到T 中,否则零送到 T 中。在主函数中读入N 个正整数,每读入一个则调用函数判断它是否为素数,在主函数中将T 的值累加到另一个变量中。用此方法可求出N 个数中素数的个数。请填空完成上述功能的程序。#include#includeint prime(int m)int i,pp=l;for(i=2;i+)if(m%i=0)pp=O;if(m=l)retum(pp);main()int a20,i,sum=0;fbr(i=0;i10;i+)scanf(M%dH,&ai);sum=_printfi(nthe number of prime data is:%dH,sum);2.求 s=l!+2!+3!+1 0!之和。程序如下:#include long int factorial(int n)(int k=l;long intp=l;fbr(k=l;k=n;k+)return p;第4章函 数main()(int n;float sum=0;fbr(n=l;n=10;n+)_,printf(6.3An”,sum);)3 .以下函数用以求x的y次方。double fun(double x,int y)(int i;double m=l;for(i=l;i;i+)m=;return m;4 .用递归方法求N阶勒让德多项式的值,递归公式为1(=0)P“=1)#includemain()float pn();float x,lyd;int n;scanf(n%d%f1,&n,&x);lyd=_printf(,pn=%f,lyd);float pn(float x,int n)float temp;if(n=0)temp=else if(n=l)temp=else temp=_第4章 函 数rctum(temp);5.下面定义了一个函数p i,其功能是根据以下的近似值公式来求兀值:7t2,1 1 1不尹+铲+.+/#include#include double pi(long n)double s=:long k;fbr(k=l;k=n;k+)s=s+;return();三、阅读程序并写出运行结果1.下 面 程 序 运 行 的 结 果 是。#include#define MAX_COUNT 4void fun();main()int n;for(n=l;n=MAX_COUNT;n+)fun();void fun()static int k;k=k+2;printf(d,1 k);)2.下 面 程 序 运 行 的 结 果 是。#include int fun(int x)int s;章 函 数iRx=O|x=l)return 3;s=x-fun(x-3);return s;main()printf(%dn,fun(3);3.下面程序运行的结果是 o#include unsigned int fun(unsigncd num)(unsigned int k=l;do(k=k*num%10;num=num/10;while(num);return k;main()unsigned n=25;printf(n%unM,fun(n);4 .下 面 程 序 运 行 的 结 果 是。include int fun(int x,int y)static int m=0,n=2;n+=m+1;m=n+x+y;return m;main()(int j=4,m=l,k;k=fun(j,m);第4章函 数printf(H%d,k);k=fun(j,m);printf(H%dn,k);5.下面程序运行的结果是 o#include void t(int x,int y,int p,int q)p=x*x+y*y;q=x*x-y*y;main()int a=4,b=3,c=5,d=6;t(a,b,c,d);printf(%d,%dn,c,d);四、编程题1.任意输入2 0个正整数,找出其中的素数,并将这些素数按由小到大排序。要求:判断一个数是否为素数用函数实现;排序用函数实现。2.编写一个函数change(x,r),将十进制整数x转换成r(1 进制数后输出。3.求1000以内的亲密数对。亲密数对的定义为:若正整数。的所有因子(不包括a本身)之 和 为 乩b的所有因子(不包括b本 身)之和为a,且火纺,则称a与b为亲密数对。4.试用递归的方法编写一个返回长整型的函数,以计算斐波纳契数列的前2 0项。该数列满足:F(0)=l,F(l)=l,F(ri)=F(n-l)+F(n-2)(n2)5.如果一个数等于其所有真因子(不包括其本身)之和,则该数为完数,例如,6的因子 有1、2、3,且6=1+2+3,故6为完数,求21000中的完数。第五章习 题一、选择题1.在下列数组定义、初始化或赋值语句中,正确的是()oA.int a8;a8=100;B.int X5=1,2,3,4,5,6;C.int x=1,2,3,4,5,6;D.int n=8;int scoren;2.若已有定义:int i,a100;则下列语句中,不正确的是()。A.for(i=0;i100;i+)ai=i;B.for(i=0;i100;i+)scanf(%d,&ai);C.scanf(H%dn,&a);D.for(i=0;il00;i+)scanf(”d”,a+i);3.与定义char c=GOOD;不等价的是()。A.charc=&,O,O,D,0;B.char c=GOOD;C.char c4=GOOD;D.char c5=G,O,O,D,0;4.若已有定义:charc8=GOOD;则下列语句中,不正确的是()A.puts(c);B.for(i=0;ci!=i+)printf(%c,ci);C.printf(%s,c);D.for(i=0;ci!=0;i+)putchar(c);5.若定义a3=0,l,2,3,4,5,6,7;则 a 数组中行的大小是()。A.2 B.3 C.4 D.无确定值6.以下程序的运行结果是()。#include void f(int b )int i=0;while(bi=10)第5章 数 组b i+=2;i+;)ma i n ()(i n t i,a(=1,5,1 0,9,1 3,7 1;f (a+1);f or(i=0;i 6;i+)p r i n t f (*%4 d ,a i);A.2 7 12 11 13 9B.1 7 12 11 13 7C.1 7 12 11 13 9D.112 9 13 77.若执行以下程序段,其运行结果是(7c h a r c =0,*b ,0 ,c ,0 ;p r i n t f (,%s nn,c );A.ab cB.a”bC.abcD.ab8.数组名作为参数传递给函数,作为实际参数的数组名被处理为()。A.该数组长度 B.该数组元素个数C.该函数中各元素的值 D.该数组的首地址9.执行下面的程序段后,变量k 中的值为()。i n t k=3,s 2=1 ;s 0=k;k=s l*1 0;A.不定值B.33C.30D.01 0.在定义i n t a 5 4;之后;对 a 的引用正确的是()o第 5 章 数 组A.a24 B.a50 C.a00 D.a0,01 1.当接受用户输入的含空格的字符串时,应使用函数()。A.scanfif)B.gets()C.getchar()D.getc()二、程序填空1.以下程序用来检查二维数组是否 对 称(即:对所有i,j 都有#include main()(int a4 4 =1,2,3,4,2,2,5,6,3,5,3,7,8,6,7,4;int i,j,found=0;for(j=0;j4;j+)|for(i=0;i4;i+)if()found=12;break;)if(found)break;)if(found)printf(不对称n);else printf(对称n);)2.以下程序是用来输入5 个整数,并存放在数组中,找出最大数与最小数所在的F标位置,并把两者对调,然后输出调整后的5 个数。#include main()(int a 5,tz i,maxi,mini;for(i=0;i5;i+)第 5 章 数 组scanf(*%dz&ai);mini=maxi=3;for(i=l;iamaxi)5;)printf ”最小数的位置是:%3dn,mini);printf(最大数的位置是:33dn,maxi);t=amaxi;【6】;amini=t;printf(调整后的数为:”);for(i=0;i5;i+)printf(%d ,ai);printf(nn);)3.给定一 3 X 4 的矩阵,求出其中的最大元素值,及其所在的行列号:main()(int i,j,row=0,colum=Ozmax;static int a3 4=1,2,3,4,9,8,7,6z10,-10,-4,4);;for(i=0;i=2;i+)for(j=0;j=3;j+)【8】【9】)printf(,max=%d,row=%d,colum=%d,max,row,colum);)4.下述函数用于确定给定字符串的长度,请完成程序。strlen(char s )第5章 数 组int i=0;while(10)+i;return(11);)5.以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符数组,然后输出该字符数组中的字符串,请填空。#includemain()(char s t r 81;int i;for(i=0;i80;i+)s t r i=getchar();if(stri=,n1)break;)stri=0;【12】;while(str i!=1 0 )putchar(13);三、阅读程序并写出运行结果1.写出下列程序的运行结果并分析。#include main()(static int a 4 5=1,2,3,4,0,2,2,0,0,0,3,4,5,0,0,6,0,0,0,0;int j,k;for(j=0;j4;j+)for(k=0;k5;k+)第 5 章 数 组if(ajk=0)break;printf(1%dn,a j k);)printf(nnn);)2.写出下列程序的运行结果并分析。#include main()(int a66zi,j;for(i=l;i6;i+)for(j=l;j6;j+)aij=i*j;for(i=l;i6;i+)(for(j=l;j6;j+)printf(”%-4d ,aij );printf(n);3.写出下列程序的运行结果并分析。#include main()(int a j,s=0;j=l;for(i=3;i=0;i)s=s+ai*j;)第 5 章 数 组printf(ws=%dn,s);)4.写出下列程序的运行结果并分析。#include main()(int a=0,2,5,8,12,15,23,35,60,65;int x=15,i,n=10,m;i=n/2+l;m=n/2;while(m!=0)(if(xa i)i=i+m/2+l;m=m/2;)elsebreak;printf(nplace=%d,i+1);)5.写出下列程序的运行结果并分析。#include main()int a=l,2,3,4,i,j,s=0;第 5 章 数 组3=1;f o r(i=3;i=0;i-)(s=s+a i *j;j=j*1 0;)p r i n tf(s=%d n”,s);)6.写出下列程序的运行结果并分析。#i n c l ud e m a i n ()(c h a r s tr =nl a 2 b 3 c ;i n t i;f o r(i=0;s tr i !=,0*;i+)i f (s tr i =,0*&s tr i =*9*)p r i n tf(n%cHz s tr i );p r i n tf(n nn);)四、编程题1.编一程序用简单选择排序方法对10个整数排序(从大到小)。排序思路为:首先从n个整数中选出值最大的整数,将它交换到第一个元素位置,再从剩余的n T 个整数中选出值次大的整数,将它交换到第二个元素位置,重复上述操作n 次后,排序结束。2.编写一程序,实现两个字符串的连接(不用strcat()函数)。3.编写一个把字符串转换成浮点数的函数.4.若有说明:inta34=1,2,3,4,5,6,7,8,9,10,H,12;现要将 a 的行和列的元素互换后存到另个二维数组b 中。试编程。5.n 皇后问题:在 n X n 的方阵棋盘上,试 放 n 个皇后,每放个皇后,必须满足该皇后与其他皇后互不攻击(即不在同一行、同一列、同一对角线上),求出所有可能解6.背包问题:有一个背包,能装入的物品总重量为S,设 有 N 件物品,其重量分别为W,W2,,WN 希望从N 件物品中选择若干件物品,所选物品的重量之和恰能放入该第 5 章 数 组背包,即所选物品的重量之和等于S。试编程求解。第六章习 题一、选择题1.若已定义int a=8,*p=&a;则下列说法中不正确的是()。A.*p=a=8 B.p=&a C.*&a=*p D.*&a=&*a2.若已定义shorta2=8,10,*p=&a0;假设a0的地址为 2 0 0 0,则执行p+后,指针p的 值 为()。A.2000 B.2001 C.2002 D.20033.若已定义inta8=0,2,3,4,5,6,7,8;*p=a;则数组第2 个元素“2”不可表示为(3A.al B.pl C.*p+l D.*(p+l)4.若已定义int a,*p=&a,*q=&p;则不能表示变量a 的 是(4A.*&a B.*p C.*q D.*q5.设 已定义语句int*p10,(*q)10;其中的P 和 q 分 别 是()。10个指向整型变量的指针 指向具有10个整型变量的函数指针 一个指向具有10个元素的一维数组的指针 具 有 10个指针元素的一维数组A.、B.、C.、D.、6.若已定义 int a24=80,81,82,83,84,85,86,87 ,(*p)4=a;则执行 p+;后,*p代表的元素是()。A.80 B.81 C.84 D.857.执行语句 chara 10=abed;*p=a;后,(p+4)的 值 是()A.abed B.0 C.d D.不能确定8.设 已定义血 232=10,20,30,40,50,60;和语句件)2曰;则*(*8+2)+1)的 值 为()。A.60B.30C.50D.不能确定第六章9.以下程序的运行结果是()。#include main()int a43=1,2,3,4,5,6,7,8,9,10,11,12);int*p4,i;fbr(i=0;i4;i+)Pi=ai;printf(%2d,%2d,%2d,%2dn,*pl,(*p)l,p32,*(p3+l);A.4,4,9,8 B.程序出错 C.4,2,12,11 D.1,1,7,510.以下各语句或语句组中,正确的操作是()。A.char s4=abcde;B.char*s;gets(s);C.char*s;s=abcdeH;D.char s5;scanfC%s,&s);1 1.以下程序的运行结果是()o#include main()(char*s-*xcbc3abcd;int a,b,c,d;a=b=c=d=0;for(;*s;s+)switch(*s)第六章case c*:C-H-;case V:b+;default:d+;break;case a*:a+;)printf(”a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);(2=卬的个数、b=b?。的个数、c=l的个数、(1=非3 的个数)A.a=l,b=5,c=3,d=8 B.a=l,b=2,c=3,d=3C.a=9,b=5,c=3,d=8 D.a=0,b=2,c=3,d=312.若有以下程序:#include main(int argc,char*argv)while(argc)printf(%s,argvargc);printf(nnn);)该程序经编译和连接后生成可执行文件S.EXEo现在如果在DOS提示符下键入S AABB CC后回车,则输出结果是(A.AABBCC B.AABBCCS C.CCBBAA D.CCBBAAS13.若有定义 char*language=FORTRAN,nBASICn,PASCALH,JAVA1,nCn;则language2的 值 是()。A.一个字符 B.一个地址C.一个字符串D.不定值第六章1 4.若有以下定义和语句,则对a 数组元素地址的正确引用是()ointa23,(*p)3;P=a;A.*(p+2)B.p2 C.pl+l D.(p+1)+215.若有int max(),(*p)();为使函数指针变量p 指向函数m ax,正确的赋值语句是()。A.p=max;B.*p=max;C.p=max