C语言编程基础习题答案_第1页
C语言编程基础习题答案_第2页
C语言编程基础习题答案_第3页
C语言编程基础习题答案_第4页
C语言编程基础习题答案_第5页
免费预览已结束,剩余25页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言编程基础(第2版)习题答案刖百C语言编程基础(第2版)每章后面都安排了一定数量的习题,这有利于读者理解、消化和掌握各单元的学习内容。习题中,除了有填空题、选择题、回答问题等适合掌握基本概念的题型外,大部分是分析程序运行结果和要求编写实用程序,这有利于读者训练编程技巧和增强编程能力。应广大读者要求,特别是一线教学老师的要求,我们给出全部习题答案,供读者参考。编程答案只是实现题目算法要求的一种,并不一定是最好的。希望读者自己多做思考,利用多种方法进行编程,用以提高自己的程序设计水平和锻炼自己的创新能力。由于作者水平所限,错误和不当之处在所难免,恳请批评指正。习题一1、填空题。C语言程序由函数

2、组成,其中必须有且只能有一个名为main的函数。C程序的执行从名为main的主函数开始。每个C语句必、须以分号结束。标识符只能由英文字母、数字和下划线三类符号构成,而且标识符的第一个字符必须是英文字母或下划线。关键是指C语言编译系统所固有的、具有专门意义的标识符。C程序中,注释的内容应放在/和*/符号之间。2、选择题。下面合法的C语言标识符是C。C语言中主函数的个数是A。以下有关注释的描述中,错误的是C。C程序中,main函数的位置D。3、指出并改正下面程序中的错误。(1)main应为main()应在本程序最后加上大括号。语句结束应有分号。如:inta,b;a=1;b=2;printf(&qu

3、ot;%d",a+b);4、分析下列程序,写出运行结果该程序是计算两个整数a和b的乘积并赋值给c,运行结果为:c=30该程序输出一个字符串和一排星号,运行结果为:Hello!*5、编程题。按题目要求,编写输出固定信息的程序如下:main()Pt();printf("Welcome!");Pt();Pt()printf("*");按题目要求,编写输入数据输出其表达式的程序如下:main()inta,b,c;scanf("%d",&a);scanf("%d",&b);c=a*b+10;prin

4、tf("c=%d",c);习题二1、单项选择题。C语言中的变量名只能由字母、数字和下划线组成,且第一个字符CQ合法的常量是D。C语言中的基本数据类型所占存储空间长度的顺序是Do下列符号用中与相同的合法常量是C02、填空。C语言中的基本数据类型包括整型(int)_、浮点型(flot)和字符型(char)三种。整型常数有一十进制整数、.八进制整数和_十六进制整数一三种表示形式;整型变量可分为四类:一般整型(int)_、短整型(short)_、长整型(long)、无符号型。其中一无符号型又可分为_无符号整型(unsignedint)、_无符号短整型(unsignedshort)和

5、_无符号长整型(unsignedlong)_3种。有10个用指数形式表示的符点常数:请指出合法的有。在C中,没有专为存贮字符串的变量,但可以用字符型数组或字符型指针变量存贮字符串。其定义格式为charstr6;禾口char*a;。数据类型混合运算时,要进行同型转换,转换方式分为自动转换(隐式转换)和强制转换(显式转换)两种。3、写出下列程序运行结果。(1) 215/9=238(2) 97b(3)4、编写程序。按题目要求编写求三个已知数的乘积,程序如下:main()inta,b,c;a=19;b=22;c=650;printf("a*b*c=%dn",a*b*c);按题目要求

6、,编写将值整数化后赋值的程序如下:main()inta1,a2;floatb,c;b=35.425;c=52.954;a1=(int)(b*c);a2=(int)c%(int)b;printf("a1=%d;a2=%dn",a1,a2);按题目要求,编写计算圆周长、面积和圆柱体积的程序如下:main()intr,h,c,s,v;r=15;h=3;c=2*3.14*15;s=3.14*r*r;v=s*h;printf("c=%d,s=%d,v=%dn",c,s,v);习题三1、填空题。设有intx=11;则表达式(x+*1/3)的值是3。已知数学表达式y=

7、x2-2x+5,写出对应的C语言表达式y=x*x-2*x+5。(3)已知a=10,则表达式x=(a=a+b,a-b)的值为x=1002、选择题。在C语言中,下列运算符的操作数必须是int类型的运算符是(D)。假设所有变量均为整型,则表达式(a=2,b=5,a+,b+,a+b)的值为(A)。已定义intm=6,n=5;,则执行m%=n-1之后,m的值是(B)。已有inta=1,b=1;则执行b=(a=2*3,a*5),a+7之后,a,b的值是(B)。已有intx=2,y=1;则执行x+=y-;的结果是(D)。3、求下面算术表达式的值。(1)4、分析下列程序,写出运行结果。注意,在C语言中,因为函

8、数调用中参数按从右到左的顺序求值,因此该程序执行打印输出的结果为:311该程序在计算条件表达式的值赋给a时,其x值已为6,y值已为7,因此运行结果为:a=7,b=0,c=6该程序利用运算符与结合性的优先级不同,而取得a与b的值。(因为该题使用了逻辑运算符,可在学了第5章以后再详细分析)运行结果如下:a=2,b=1该程序应用复合的赋值运算符和从右至左结合性的运算规则,求取n的值,运行结果如下:n=28该程序在执行语句“y=x+-1;”时,y为0而x在执行后变为2;在执行语句“z=-y+1;”时,z为0而y便成了-1o运行结果如下:x=2,y=-1,z=05、编程题。用符号常量编写简单计算程序如下

9、(复杂应用应在第9章学习后再做):#defineN12#defineM25main()floatc;printf("N+M=%dn",N+M);printf("N-M=%dn",N-M);printf("N*M=%dn",N*M);c=(float)N/M;printf("N/M=%fn",c);查看i+与+j运算结果差异的程序,编写如下:main()inti=20,j=20;printf("i+:%dn+j:%dn",i+,+j);查看m-与-n运算结果差异的程序,编写如下:main()int

10、m=20,n=20;printf("m-:%dn-n:%dn",m-,-n);习题四1、单项选择题。下列叙述不正确的是B。当输入数据为12345678时,下面程序运行的结果是C。putchar函数可以向终端输出一个D。按格式输出的格式符C。2、回答问题。在键盘上输入数据格式如下:12,24,Aa/(代表空格,其中数据1是为了对付*f占位,/代表回车)该题是求输入任意两个整数a与b的和。若读入a=b=5,其运行结果为:typeanumberplease!a=?5/typeanotherplease!b=?5/asumbis103、写出下列程序的执行结果。执行结果:32767,

11、-327682147483647,-214748364865535,0执行结果:yes,Iamcomputer.执行结果:abtw123执行结果:58.887,5.88873e+01,5.6e+02B,66,102,427567890,34675022,7a1211232,25740,2be0,11232COMPUTERABC4、编写程序。对输入的大写字母改用小写输出的程序,编写如下:#include<stdio.h>main()charc;printf("输入一个大写字母:n");c=getchar();putchar(c+32);计算三门课总成绩等数据的程序

12、,编写如下:#include<math.h>main()floata,b,c,sum,ave,mod;printf("输入三门课程的成绩:n");scanf("%f%f%f',&a,&b,&c);sum=a+b+c;ave=(a+b+c)/3;mod=fmod(sum,3);printf("总成绩=%5.1f,平均成绩=%5.1f,总成绩除3的余值二%n",sum,ave,mod);已知数据,按输出结果的要求编写输出程序如下:main()inta=1,b=2,c=3,g=12345;floatd=7.

13、2,e=-5.5,f=1.56;longh=123456;chari='o',j='p'printf("a=%db=%dc=%dn",a,b,c);printf("d=%f,e=%f,f=%fn",d,e,f);printf("d+e=%e+f=%d+f=%n",d+e,e+f,d+f);printf("g=%7dh=%ldn",g,h);printf("i=%cor%dnj=%cor%dn",i,i,j,j);习题五1、单项选择题。C语言用C表示逻辑量为“假”要

14、求当A勺值为奇数时,表达式的值为“真”;A勺值为偶数时,表达式的值为“假”。以下不满足要求的表达式是Do(3)在if语句的嵌套中,else总是与C配对。下面对for循环概念描述正确的是D。2、填空题。switch后面的“表达式”,通常为上型或字符_型表达式;每个case的常量表达式的值不能相同。如果不算goto语句构成的循环结构,那么C语言可以构建循环的语句一共有3不中,分另是for循环、while循环、do-while循环。continue语句与break语句在使用时,有两点主要的不同:它不适用于switch语句;它跳转时是跳过循环体中下面的语句从下一次循环开始。把下面的两条if分支语句合并

15、成一条if分支语句应该写成:if(x>=y)printf("m=%dn,m=2);elseprintf("n=%dn”,n=1);3、指出以下程序的打印结果。该程序运行结果如下:x=11y=10x=55y=10x=8y=10z=10x=2y=2x=3y=3x=4y=4x=5y=5x=6y=6x=7y=7x=8y=8x=9y=9x=2y=2x=1y=1000x=2y=100x=3y=104、编写程序。按要求,用两种循环方式编写相关程序如下:-的for循环#include<math.h>main()intr;floatv;for(r=1;r<=100;r

16、+=2)v=4/3*3.14*pow(r,3);printf("r=%d,v=%fn",r,v);-的while循环#include<math.h>main()intr;floatv;r=1;while(r<=100)v=4/3*3.14*pow(r,3);printf("r=%d,v=%fn",r,v);r+=2;-的for循环main()ints,i;s=0;for(i=13;i<=103;i+=10)s=s+i;printf("s=%dn",s);-的while循环main()ints,i;s=0;i=1

17、3;while(i<=103)s+=i;i+=10;printf("s=%dn",s);找出学生成绩中的最高分和最低分的程序,编写如下:main()intmax,min,n;printf("请输入成绩,-1结束:");scanf("%d",&n);max=min=n;while(n!=-1)if(n>max)max=n;if(n<min)min=n;scanf("%d",&n);printf("最高分:%d,最低分:%dn",max,min);输出“水仙花数”的

18、程序,编写如下:#include<math.h>main()intn,a,b,c;for(n=100;n<=999;n+)a=n/100;b=n%10;c=(n%100-b)/10;if(pow(a,3)+pow(b,3)+pow(c,3)=n)printf("%dn",n);习题六1、填空题。数组是一组具有相同类型的数据的集合。如果一个数组的长度为10,则该数组中数组元素下标的最小值为0,最大值为9。(3)若有inta=10,20,30,40;则数组a的长度为4。在C语言中,没有字符串变量,字符串的存储是通过一字符数组来实现的。strlen函数的功能是_

19、测试字符串的长度_,strcmp函数的功能是_比较两个字符串的大小2、选择题。定义一个有100个元素的int型数组,下面正确的语句是_D_0下面正确的对数组b进行初始化的语句是_C_0在C程序中,引用一个数组元素时,其下标的数据类型允许是_D_0下面语句中正确的是A。若有定义:charstr="Hello"则数组str所占的空间为B。3、分析下列程序,写出运行结果。该程序通过for循环为数组元素自动赋值,然后输出。运行结果如下:a0=1a1=2a2=3a3=4a4=5a5=6a6=7a7=8a8=9a9=10该程序定义并初始化了a、b、c三个数组,然后分别输出各数组的各个元

20、素,用来验证初始化的结果。运行结果如下:数组a:1020304050数组b:12300数组c:0123该程序通过gets()函数为字符数组接收字符,然后输出各元素。运行结果如下:abc/(输入的字符)str0=astr1=bstr2=c4、编写程序。对输入一组数进行相关统计的程序,编写如下:main()inti,num10;intmax,min,sum=0;floataverage;clrscr();printf("输入10个数:n");for(i=0,i<10;i+)scanf("%d",&numi);/*输入数值*/sum+=numi;

21、/*累加求和*/average=(float)sum/10;/*求平均值*/max=min=num0;for(i=1;i<10;i+)if(numi>max)max=numi;/*求最大值*/elseif(numi<min)min=numi;/*求最小值*/printf("最大值=%dn",max);printf("最小值=%dn",min);printf("10个数的和为:%dn",sum);printf("平均值为:%6.2f",average);求素数的程序编写如下:main()inti,j

22、,k,m=0;clrscr();for(i=2;i<=100;i+)k=0;for(j=2;j<=i-1;j+)if(i%j=0)k=1;break;if(k=0)printf("%4d",i);m=m+1;if(m%8=0)printf("n");判断一个浮点数是否在一个浮点型数组中的程序,编写如下:main()inti,exist;floata4,n;printf("输入浮点型数组:n");for(i=0;i<4;i+)printf("a%d=",i);scanf("%f"

23、,&ai);printf("n");printf("输入一个浮点数:");exist=0;scanf("%f",&n);for(i=0;i<4;i+)printf("a%d=%f;n",i,ai);if(ai=n)exist=1;if(exist=1)printf("%f在数组中。n",n);elseprintf("%f不在数组中!n”,n);此题前面的浮点型数组的值,也可通过初始化直接赋值的办法得到。输出二维数组中最大值及位置的程序,编写如下:main()int

24、i,j,row=0,col=0,max;inta46;for(i=0;i<4;i+)for(j=0;j<6;j+)scanf(“%d”,&aij);max=a00;for(i=0;i<4;i+)for(j=0;j<6;j+)if(aij>max)max=aij;row=i;col=j;printf(“max=%d,row=%d,col=%dn”,max,row,col);main()charch110,ch23,ch313;inti=0,n;printf("输入字符串1(长度为10):n");scanf("%s",c

25、h1);printf("输入字符串2(长度为3):n");scanf("%s",ch2);printf("插入位置n(n<10):n");scanf("%d",&n);n-;for(i=0;i<n;i+)ch3i=ch1i;for(i=n;i<n+3;i+)ch3i=ch2i-n;for(i=n;i<10;i+)ch3i+3=ch1i;printf("%s",ch3);习题七1、填空题。C语言函数分成系统提供的库函数口用户自定义函数两大类。一个C程序由主函数和若干

26、个自定义函数组成,各个函数在程序中的定义是相互独立的。函数的递归调用是指函数直接或间接地调用自己。当_用数组名_作函数参数时,实参与形参的传递为“地址传递”。根据变量的作用范围的不同,可将变量分为一局部变量和一全局变量。根据变量生存期的不同,可以将变量分为一动态存储变量和一静态存储变量。static变量的特点是其佰始终存在。2、选择题。如果一个函数有返回值,那么这个函数只有A个返回值。下面关于空函数的定义,正确的是B。以下错误的描述是C。调用一个不含return语句的函数,以下正确的说法是D。下面函数调用语句中含有实参的个数为C。(6)数组名作函数参数时,实参传递给形参的是B。3、指出并改正下

27、面程序在函数定义或调用中的错误。被调函数f(x)定义时对形式参数x未做参数说明。应改为:f(intx)或:f(x)intx;函数调用时,实际参数的类型应与被调函数形式参数的类型相一致。本题在主函数中的整型变量a应改为浮点型:inta;改为floata;被调函数f()定义时不需要加分号,f();应改为:f()在C程序中,不能在一个函数的函数体内定义另一个函数。该题在主函数中定义f()为空值类型且作为一个语句是错误的。应去掉voidf();4、分析下列程序,写出运行结果。主函数以a=2为实参调用f(x)函数,f(x)通过return语句向主函数返回y的值赋给b,结果应为:b=4在该程序中实参变量a

28、、b和形参变量x、y分别占用不同的存储单元,虽然在swap函数中x、y的值发生了交换,但主函数中a、b的值却没有改变。运行结果应为:a=1/b=2/x=2,y=1a=1,b=2全局变量x初始化为1,调用被调函数f()执行一次x+,然后再执行x+后输出x值应为:x=3x为定义在整个函数体和复合语句内的同名自动变量,其作用域不同。intx=20;定义在复合语句中,只在复合语句中有效。运行结果如下:x=20x=11执行被调函数,将原数组元素初值分别加1,因此输出结果为:num0=2num1=3num2=4num3=5num4=65、编写程序。该题目要求使用判断奇偶数函数,编写程序如下:main()i

29、ntn;printf("输入一个整数:");scanf("%d",&n);a(n);a(intn)if(n%2=0)printf("%d是偶数n",n);elseprintf("%d是奇数n",n);编写一个将3个数从小到大顺序输出的函数如下:sort(x,y,z)intx,y,z;intt;if(x>y)t=x;x=y;y=t;if(x>z)t=x;x=z;z=t;if(y>z)t=y;y=z;z=t;Printf("%d%d%d",x,y,z);将输入的秒数值,转换

30、为时:分:秒输出,编程如下:inthou=0,min=0;main()intsec,sec2;clrscr();printf("请输入秒数:n");scanf("%d",&sec);sec2=change(sec);printf("%d个小时:%d分钟:%d秒",hou,min,sec2);intchange(sec1)intsec1;if(sec1>3600)hou=sec1/3600;min=(sec1%3600)/60;sec1=sec1%60;elseif(sec1>60)hou=0;min=sec1/60

31、;sec1=(sec1%60);return(sec1);求一组学生成绩的总分、平均分、最高分和最低分的程序,编写如下:main()floats,ave,score100;intI,m;clrscr();printf("输入学生人数:");scanf("%d",&m);printf("输入阶学生的成绩:n”,m);for(i=0;i<m;i+)scanf("%d",&scorei);s=s+scorei;printf("总成绩=%.2fn",s);ave=average(score,

32、m);printf("最高分=%dn",max);printf("最低分=%dn",min);printf("平均成绩=%.2f",ave);floatmax=0,min=0;floataverage(array,n)floatarray;intn;inti;floataver,sum=array0;max=min=array0;for(i=1;i<n;i+)if(arrayi>max)max=arrayi;/*求最高分*/elseif(arrayi<min)min=arrayi;/*求最低分*/sum=sum+ar

33、rayi;aver=sum/n;/*求取平均成绩*/return(aver);/*返回主程序值*/显示菜单并实现相应选择功能的程序,编写如下:#include<math.h>main()inti;while(i!=3)clrscr();printf("I*n");printf("1.求整数n的立方n");printf("2.求整数n的立方根n");printf("3.结束程序n");printf("*n");scanf("%d",&i);if(i=1)li

34、fang();elseif(i=2)lifanggen();lifang()intn;longs;printf("inputn:n");scanf("%d",&n);s=pow(n,3);printf("%d的立方为:%ldnn",n,s);lifanggen()intn;doubles;printf("inputn:n");scanf("%d",&n);s=(double)1/3;s=pow(n,s);printf("%d的立方根为:%fnn",n,s);用

35、递归法求n!的程序,编写如下:main()longf(),t;intn;printf("inputnumber:n");scanf("%d",&n);t=f(n);printf("%d的阶乘为:%ld",n,t);longf(intn)staticlongs=1;if(n>1)f(n-1);s*=n;习题八1、填空。(1)文件是存贮在外部存贮设备上的信息集合一般分为J1庄_文件和_数据文件。(2)C语言文件存贮在磁盘上有两种形式,一种是按ASCII码存储,另一种是按二进制码存储0(3)定义文件指针变量的格式为FILE*f

36、p。(4)feof()函数是文件尾检测函数,当文件位置指针处于文件尾时,它返回一个非0值。(5)对流式文件可以进行顺序读写,也可以进行随机读写,关键是一如何控制文件的位置指针。2、回答问题。有三大好处:保存运算的中间结果或最终结果,方便使用;将数据独立于程序之外,便于多处、多人共享;事先录入保存所需数据,可以提高程序运行时的效率。在ASCII码文件中,一个字节代表一个字符,便于字符的输入输出处理,但占用存储空间较大;二进制文件占用的存储空间较小,但在文件中,一个字节并不代表一个字符。w:创建一个ASCII码文件只写;r:打开一个ASCII码文件只读;a:打开一个ASCII码文件添加;wb:创建

37、一个二进制文件只写;rb+:打开一个二进制文件读/写。文件操作完以后及时关闭,可将文件指针脱离该文件,并将内存缓冲区中的数据写入磁盘,用以保证写入文件的数据完整。EOF在中定义为-1,它也是一个合法的二进制整数,用fgetc()函数检查文件尾容易发生错判。3、程序改错。该程序是要求将键盘上输入的一些字符写入磁盘文件中,程序中有两处错误: (检查文件是否存在且要向文件写,注意文件名和打开方式)fp=fopen("","r")应改为:fp=fopen("xt1.txt","w") (向文件中写而不是读)fgetc(fp

38、);应改为:fputc(c,fp);该程序是要求从文件中读并统计其正数、负数和零的个数,在屏幕上显示。程序中有两处错误:(当不是文件尾时才读取并统计)while(feof(p)=1)应改为:while(feof(p)=0)(f为存储负数的变量应取i<0)elseif(i=0)f+;应改为:elseif(i<0)f+;4、编写程序。将字符串写入文件的程序,编写如下:#include<stdio.h>FILE*fp;main()chara28="TurboC","BASIC"fp=fopen("lx1.txt",&

39、quot;w");fputs(a0,fp);fputs(a1,fp);fclose(fp);将字符串从文件中读出的程序,编写如下:#include<stdio.h>FILE*fp;main()char*a;if(fp=fopen("lx1.txt","r")=NULL)printf("cannotopenfilen");exit(1);fgets(a,13,fp);clrscr();printf("%sn",a);fclose(fp);将三个数写入文件的程序,编写如下:#include<

40、stdio.h>FILE*fp;main()inta,b,c;fp=fopen("lx2.txt","wb");fprintf(fp,"%dn%dn%d",100,200,300);fclose(fp);将数值从文件中读出并求其和的程序,编写如下:#include<stdio.h>FILE*fp;main()inta,b,c;if(!(fp=fopen("lx2.txt","rb")printf("cannotopenfile!n");exit(1);fsc

41、anf(fp,"%d%d%d",&a,&b,&c);printf("%d+%d+%d=%dn",a,b,c,a+b+c);fclose(fp);将10个整数写入文件的程序,编写如下:#include<stdio.h>FILE*fp;main()inti,a10=8,2,6,4,5,9,1,3,7,4;fp=fopen("lx3.txt","wb");for(i=0;i<10;i+)fwrite(&ai,2,1,fp);fclose(fp);将指定位置的整数从文件中读

42、出的程序,编写如下:#include<stdio.h>FILE*fp;main()intn,i,num;if(!(fp=fopen("lx3.txt","rb")printf("cannotopenfilen");exit(1);printf("输入数值i:");scanf("%d",&i);n=2*(i-1);fseek(fp,n,SEEK_SET);fread(&num,2,1,fp);printf("第出数据是:dn",i,num);fclo

43、se(fp);习题九1选择题。将C的库函数中数学函数库的头文件包含到程序中,应在程序的头部加上(C)。欲将一个文件file.c包含到程序中,应该在程序的头部加上(A)。“文件包含”预处理语句的使用形式中,当#include后面的文件名用“”括起时,寻找被包含的文件的方式为(B)。在C语言中,编译预处理命令都是以(B)符号开头的。2、分析下列程序,写出运行结果。该程序是定义了一个带参数的宏:S(x),在程序运行时它的置换内容是x*x,用实参代替形参后计算(3+1)的平方。其运行结果为:a=16该程序是定义了一个带两个参数的宏:MIN(x,y),在程序运行时它的置换内容是条件表达式(x)<(

44、y)?(x):(y),用实参代替形参后其运行结果为:500该程序运行时,先执行宏PRINT1,输出A*B的值,然后执行宏PRINT输出回车换行;最后执行宏PRINT2输出(A+1)*(B+1)的值,运行结果为:1524在该程序中,定义宏时用了宏嵌套,控制循环终值的宏NUM其值应为:(M+1)*M/2=(N+1+1)*(N+1)/2=(2+1+1)*(2+1)/2=4*2=8运行结果为:123456783、编程题。用带参数的宏实现求两个整数相除取余的程序,编写如下:#defineDIV(x,y)x%ymain()inta,b,d;scanf("%d%d",&a,&am

45、p;b);d=DIV(a,b);printf("%dn",d);利用宏按从大到小顺序输出3个整数的程序,编写如下:#definechag(x,y)(x=x+y,y=x-y,x=x-y)main()inta,b,c;printf("输入3个整数:n");scanf("%d%d%d",&a,&b,&c);if(a<b)chag(a,b);if(a<c)chag(a,c);if(b<c)chag(b,c);printf("%d,%d,%d",a,b,c);按题目要求,利用条件编译

46、方法编写程序如下:#include<string.h>#defineLOWCASE0main()char*a;printf("输入字符串:n");scanf("%s",a);#ifLOWCASEa=strlwr(a);#elsea=strupr(a);#endifprintf("%sn",a);习题十(1)若已定义“int*p,a;",则语句“p=&a”中的运算符“&”的含义是(D)。执行该程序断后,a的值为(B)。该程序段的运行结果是(A)0若有定义inta35,i,j;(且0&i<

47、;3,0<j<5),则a皿的地址不正确的是(D)。设有语句“int(*p)()”,则p是一个(B)0给出程序的输出结果为(A)。2.填空题。以下程序用来输出字符串。printf("sn",*p);exchange函数的调用语句为“exchange(&a,&b,&c);"。他将3个数按由小到大的顺序调整后依次放入a,b,c三个变量中,a中放最大值,请填空。if(*q3>*q2)swap(q2,q3)if(*q1<*q3)swap(q1,q3J;if(*q1<*q2)swap(q1,q2J;以下程序段完成给数组所有

48、元素输入数据。while(j<10)scanf("d,&aj);以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,_int*z)*z=x+y;该程序的输出结果是7o3.分析下列程序,写出运行结果。该程序用指针变量取得a、b的地址,用来比较哪个地址中变量的值更大并输出。运行结果如下:max=33该程序用指针变量做循环控制变量,控制输出字符的个数。运行结果如下:ABCDEBCDECDEDEE(3)利用指针做函数参数,在执行子函数时,将a+b的值赋给了c,a-b的值赋给了do输出c、d,运行结果如下:7,1利用指针做函数参数,在执

49、行子函数时,用两个指针变量指向a数组的首地址和尾地址,通过循环控制指针,交换不同位置的数组元素达到反序排列。运行结果如下:GFEDCBA4、编程题。输入三个数后,按由小到大的顺序输出。编程如下:main()inta,b,c,*p1,*p2,*p3;printf("输入3个数:n");scanf("%d%d%d",&a,&b,&c);if(a>=b)p1=&b,p3=&a;elsep1=&a,p3=&b;if(c>=*p3)p2=p3,p3=&c;elseif(c<=*p1)

50、p2=p1,p1=&c;elsep2=&c;printf("%d,%d,%dn",*p1,*p2,*p3);按题目要求,编写排序函数及程序如下:int*sort(inta,intn)inti,j,t;for(i=0;i<n;i+)for(j=i+1;j<n;j+)if(ai>aj)t=ai,ai=aj,aj=t;returna;main()int*b,i,a10;printf("输入10个数:");for(i=0;i<10;i+)scanf("%d",&ai);b=sort(a,10);

51、for(i=0;i<10;i+)printf("%d",bi);printf("n");按题目要求,编写统计输入字符串中大小写字母个数的函数及程序如下:#include<ctype.h>count(char*p)intu=0,l=0;while(*p)if(islower(*p)l+;if(isupper(*p)u+;p+;printf("大写字母个数:d;小写字母个数:d",u,l);main()char*a;printf("输入字符串:n");scanf("%s",a);count(a);按题目要求,编写连接字符串的函数及程序如下:main()char*strcat(),*str1,*str2,*p;printf("输入字符串1:n");scanf("%s",str1);printf("输入字符串2:n");scanf("%s&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论