已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章习题解答(李梅)一、 选择题17:B A D C A B C备注:2:参考P8页中的标识符命名规则3:参考P8页中的表1.1二、 填空题1:编辑、编译、连接、运行2:.obj3:.exe4: 编译5:文件6:【1】char ch; 【2】”%dn”,ch备注:知识点参考P12页的C语言开发过程三、 编程题备注参考答案第2题有问题,注意数据类型转换:比如语句hs=9/5*ss+32,其中9/5运算结果是1,是要的中间结果吗?第二章习题解答(蔡晓妍)一 选择题1. D (考查不同类型在内存中所占字节)类型长度/字节short2int4char1float4double8unsigned char1long int42. D (这个内容跟我们没有多大关系) 3. A (考查不同类型数据的有效范围)由表2.2可知,short int的取值范围是 -32768-32767037是8进制数,相当于十进制数310xaf是十六进制数,相当于十进制数1754. A (考查常数的表示方法)A选项中:xcdf没有这个表示方式,017为八进制数,0xe为十六进制数,123为十进制数B选项中:160为十进制数,0xffff为十六进制数,011为八进制数,0L表示长整数C选项中:01为八进制数,32768u为无符号整数,0617为八进制数,0x163为十六进制数D选项中:0x48a为十六进制数,0205为八进制数,0x0为十六进制数,-256为负数。5. A (考查整型常数的表示方法)6. A (考查无符号字符型的表示范围)参见书中第25页的表2.27. D 这个题本身是有错的,D选项应该是少了一个单撇号,A选项的错误解释见24页8. D 考查不同类型整数尾符的表示方法,前三个既可表示成整数,也可以理解为长整型,只有D才明确地由尾符L表示为长整型了。9. B (考查字符与整型数之间的转换,说明字符在内存中是以整型数的形式存放的) 参见P319页的“附录C:ASCII代码表” 字符B的ASCII码值为66,字符E的ASCII码值为69,字符a的ASCII码值为97,字符A的ASCII码值为65, 所以,c2-c1=69-66=3,c2+a-A=69+97-65=101,但由于按照%c的格式输出,所以ASCII码值101对应的字符为e。10. C (考查不同数制型数据的转换与表示)printf语句中的%d,意味着需要按照十进制整数形式打印出结果。u=010为八进制数,转化为十进制数为=8v=0x10为十六进制数,转化为十进制数为=16w=10本身就是十进制数11. C (同第9题)12. B 这个题向我们展示这样一个道理,当我们向计算机表示不同进制数据时,我们必须按要求写上前导符,如0开头啊,0X开头什么的,但计算机向我们表示各种进制时是没有前导符的,除非我们自己设置。k=15为十进制数,而在printf语句中,需要将该数分别用十进制数,八进制数以及十六进制数表示。13. C (考查宏定义常数)参见第28页“(1)宏定义”相关内容14. A (考符符号定义常数)参见第28页“(2)const定义”相关内容15. B (考查scanf的数据输入)参见第35页的一句话“当一个scanf()函数中包含若干个输入项或几个scanf( )函数连续出现时,可以依次输入几个数据,各数据之间只能用空格、制表符或回车符分隔,其他符号都不能作为分隔符”。选项B中,各数据是用逗号分隔的,所以错误。16. B (考查点与第15题相同)17. A (考查点与第15题相同)18. B (考查点与第15题相同)二 填空题1. 2个字节,1个字节 “C”是字符串常量,由第25页的一句话“一个含有n个字符的字符串常量要占用n+1个字节的存储空间”,因此“C”占用的存储空间为1+1=2个字节 C是字符常量,占用1个字节2. #define 标识符 字符串3. unsigned int,double,char 参见第22页“3. 基本数据类型的扩展”4. 10,8,165. 4 参见第23页的表2.26. stdio.h7. 0,%s8. 5.0, 4, c=39. a=1,b=2三 编程题1. 将100按不同进制输出#include void main()int a=100;printf(%o,%d,%xn,a,a,a);本题考查的是对整数的不同输出格式控制。2. 输入一个实数,按不同的格式输出。#include void main()float a;scanf(%f,&a);printf(%.2f,%.2en,a,a,a);本题考查的是对实数的不同输出格式控制,但本题有点小问题,作者没有搞清楚什么是有效数字,应该改为保留两位小数。3. 按不同形式输出一个字符。#include void main()char ch1=a,ch2=a;printf(%c,%d,%o,%xn,ch1,ch1,ch1,ch1);printf(%c,%d,%o,%xn,ch2,ch2,ch2,ch2);本题没什么意义,只需要用一个变量就可以了,考查的是对字符型数据的不同格式输出。第三章习题解答(陈勇)一、选择题1. C,考查运算符运算规则2. D C,考查C语言中的数据类型自动转换3. A ,这种题可以给两个变量任意赋个整数,然后代入表达式计算,根据计算结果来选择。4. C,这种题将a,b分别赋值为5,7和7,5根据结果选择。5. C,考查运算符运算特点6. C,A、B中第二个赋值号左侧不是一个变量,而是一个表达式,右侧的值不可能赋给一个表达式;D中第二个赋值号左侧是常量7,一个变量的值不可能赋给一个常量。7. C,sqrt函数返回值是double类型。8. B,-、+的赋值特点9. A,复合赋值运算符的特点10. C,强制类型转换11. B,同9题12. D,同第6题 13. D,同9题14. C,同第9题 15. C,给两变量代入两个值算一下即可。16. A,B中%两侧必须是整数,C中2不能赋给a*3,D中强制类型转换错误17. A,同9题 18. C,“/”两侧为整型数时,计算结果也是整型数。19. B,那个赋值表达式可以改写为:a=2+(c=c+(c+,c+8,+c); 其中:(c+,c+8,+c)是一个逗号表达式,运算从左到右,表达式最后的值为最后一个表达式的计算结果,这三个互不相关,但因为+c是先+再用,c+是先用后加(这里所谓的后加是指整个表达式运算结束后再自加),所以,C初值为5,+C后变成6,原表达式变为: a=2+(c=6+6),即a=1420. A,printf中涉及两个逗号表达式,逗号表达式的结果为最后一个表达式的值,所以前者为a的值,后者为a+b的值。21. B,&运算符连接多个表达式时,从左向右只要有一个表达式值为0,后面表达式都不再运行。22. A,不解释23. C,不解释24. D,不解释25. C,原因同2126. A,不解释27. C,+,-运算规则28. C,因为计算结果是一个整数。二、填空题 1double 22,a+*1/5相当于两个语句,a*1/5;a+;30.0,因为整型变量a的值为1。46 6 6.0 6.7 ,高级别的数据类型向低级别类型变量赋值引起数据丢失。55,4,c=3,scanf中的格式控制符中如果加入了其它符号,输入时必须原样输入。617a=0809610x=2,y=1,这是一种不借助第三个变量交换两个变量值的方法,尽管很变态。三、编程题 见习题答案。不解释。第四章 程序流程控制(韩宏)一、选择题15.该程序的功能是输出1-50内能同时被2、3、7整除的数。所以选择“D”。17.该程序的功能是对输入的字符串中的大写字母转换成小写字母,而小写字母转换成大写字母。所以选择“B”。18.相当一部分同学可能会选择“D”,主要是没有注意while后的表达式a=14,也就是说第二次循环时,变量a的值是14,而不是12,所以结果是“B”。三、编程题1.从键盘输入100个整数,从中找出最大数和最小数。编程思想:假设最大数是max,最小数是min。当只有一个数时,它既是最大数又是最小数,所以当输入第一个数时,它既是最大数又是最小数,以后每输入一个数,都与最大数max和最小数min进行比较,如果大于max,就赋给max;否则如果小于min,就赋给min。最后所有数据都比较完,max就是所有数中最大数,min就是所有数中最小数。#include Void main()int i,a,max,min;scanf(”%d”,&a); /输入第一个数min=a,max=a; /令第一个数既是最大数又是最小数for(i=2;ia) min=a; /如果比最小数还小,此数作为最小数 If(maxa) max=a; /如果比最大数还大,此数作为最大数Printf(“max=%d,min=%dn”,max,min);2.编制程序计算4个已知数a,b,c,d的最小公倍数。编程思想:从键盘输入4个整数a,b,c,d,将其中一个(例如a)存入s中,判断s能否同时被b,c,d整除,若能整除,s就是最小公倍数;否则,将s增加a,再继续上述的判断,直到s能被b,c,d同时整除为止。#include void main() int a,b,c,d,s;scanf(“%d%d%d%d%d”,&a,&b,&c,&d);s=a;while(!(s%b=0 & s%c=0 & s%d=0) /如果s不能同时被b,c,d整除 s+=a;printf(“a=%d,b=%d,c=%d,d=%d,s=%dn”,a,b,c,d,s);3.试编程计算1!+2!+20!。编程思想:求n!就是求1n之间所有自然数的乘积,令p=1,变量i从1循环到n,则p*i就是n!。#include void main() int i;float s=0,p=1;for(i=1;i=20;i+) p=p*i; /求i! s=s+p; /求i!的累加和printf(“%1d”,s);4.编制程序打印出100以内的所有素数。编程思想:素数的特点是除了1和本身外,不能被其他任何整数整除。对一个数m,只要判断它不能被2m-1之间的任何整数整除就可以了。#include void main() int m,i,flag;for(m=3;m=100;m+) flag=1; /变量flag是设立素数的标记 for(i=2;im;i+) if(m%i=0) /如果m被2m-1之间的任何整数整除 flag=0;break; /令flag=0,并退出内循环 if(flag) printf(“%d ”,m); /如果flag=1,则m为素数,输出m5.编制程序用辗转相除法求a和b的最大公约数。算法为:将较大的数放在变量a中,较小的数放在变量b中。然后求a除以b的余数r。如果r为0,则除数b即为最大公约数;否则,将b存入a,将r存入b,反复求a和b的余数r,直到余数r为0.#include void main() int r,a,b;scanf(“%d%d”,&a,&b);if(ab) /若ab,交换a,br=a;a=b;b=r; r=a%b; /求a除以b的余数while(r) /余数r不为0,继续求余数r a=b;b=r;r=a%b;printf(“%dn”,b);6.编制程序是用二分法求方程2x3-4x2+3x-6=0在区间1,5中的一个实根,并要求绝对误差不超过0.001。算法为,假设在区间m,n中f(m)与f(n)异号。先取区间的中点r,如果|f(r)|0.001,则r是方程的近似根;否则,若f(r)与f(m)异号,则取新的解区间为(m,r),反之取新的解区间为(r,n)。不断对解区间对分,直到解区间已经小于给定的误差时,取该区间的中点作为解的近似值。#include #include float f(float x) return 2*x*x*x-4*x*x+3*x-6; /自定义函数void main() float m=1.n=5,r;r=(m+n)/2; /区间对分while(fabs(f(r)=0.001) if(f(r)*f(m)0) m=r; /确定新的解区间 else n=r; r=(m+n)/2; /得到解的近似值 printf(“Answer is %6.3fn”,(m+n)/2); /输出解的近似值第五章(王娟勤)【5-1-4】#includemain()int i,a10;for(i=9;i=0;i-)ai=10-i; /从此处可以看出下标是i的元素中放的数据是10-iprintf(%d%d%d,a2,a5,a8);【5-1-9】设已定义char s=abcdEnglishn;则字符串s所占的字节数是_。A.19 B.18 C.15 D.14解释:为一个转意字符,代表一个,代表字符,n代表回车换行。【5-1-10】考察的内容是数组初始化,定义时不赋初值,第一维和第二维都不可省略,如有初始化,第一维的大小可省,但第二维的大小不能省。【5-1-11】#include#includemain()char w10=ABCD,EFGH,IJKL,MNOP,k;for(k=1;k3;k+)printf(%sn,&wkk);解释:用%s输出时,从给出的起始地址开始输出字符,直到遇到0,程序中第一次循环时,以&w11为起始地址,所以输出字符串FGH,第二次循环时以&w22为起始地址,输出KL。【5-1-12】考察的内容是字符数组的初始化,用字符串和字符常量对字符数组的初始化时字符数组元素的个数不同,字符串初始化时,字符数组的元素个数等于字符串长度加1,字符常量初始化时,字符数组元素的个数与字符常量的个数相同。【5-1-16】#includemain()char s100;int c,i;scanf(%c,&c); /将输入的1作为字符接收scanf(%d,&i); /将23作为整数接收scanf(%s,s); /将456作为一个字符串接收,%s输入字符串时,以空格或回车做为字符串结束标志,停止接收。printf(%c,%d,%sn,c,i,s);【5-1-18】#includemain()char ch7=65ab21; int i,s=0; for(i=0;chi=0 &chi=0 &chi=9条件为假,循环终止。所以打印输出6.【5-1-19】main()char s=12134211;int v1=0,v2=0,v3=0,v4=0,k;for(k=0;sk;k+) switch(sk)default:v4+; case 1:v1+; case 3:v3+; case 2:v2+; printf(v1=%d,v2=%d,v3=%d,v4=%dn,v1,v2,v3,v4);此题考查switch语句中default与case的顺序颠倒,而且没有break时开关语句的执行过程。sk的值与case语句后面的常量表达式都不匹配时,执行default后面的语句,但default后面的语句没有break,所以会继续执行case 1,case 3,case 2,后面的语句;如果sk的值与case后面的常量表达式值其中一个匹配,则执行其后面的语句,由于没有break,所以会顺序执行后面case 中的表达式的值。【5-1-20】main()char st20=hello0!t;printf(%d,%dn,strlen(st),sizeof(st);所有的字符串处理函数都是从给出的起始地址开始处理字符串,直到遇到0;sizeof(st)是运算数组st所占字节数,为20。【5-2-6】将字符数组a中下标值为偶数的元素从小到大排列,其他的元素不变。#include#includemain()char a=clanguage,t;int i,j,k;k=strlen(a);for(i=0;i=k-2;i+=2) /从下标是0的元素处理起,对下标是偶数的元素排序for(j=i+2;jaj) /aj与ai比较,如果aiaj,则互换t=ai;ai=aj;aj=t;puts(a);printf(n);课后编程题中1、2、3、4,补充实现两个字符串比较函数1求矩阵主、次对角线及四周元素之和。程序代码:#include#define N 5void main() int aNN,i,j,s1,s2,s3;printf(Enter elements of matrix a,row by row:n); for(i=0;iN;i+) /用循环嵌套给二维数组的每个元素赋值for(j=0;jN;j+)scanf(%d,&aij);s1=0;s2=0;s3=0; for(i=0;iN;i+) /求主对角线元素和s1+=aii;for(i=0;iN;i+) /求次对角线元素和s2+=aiN-1-i;for(i=0;iN;i+); /求二维数组第0列和N-1列的和 s3=s3+ai0+aiN-1;for(j=1;jN-1;j+) /求二维数组第0行和N-1行(除了本行第一和最后一个元素)的和s3=s3+a0j+aN-1j;printf(s1=%d s2=%d s3=%dn,s1,s2,s3);另解:根据主、次对角线及四周元素特点做循环。 #include#define N 5void main() int aNN,i,j,s1,s2,s3; for(i=0;iN;i+) /用循环嵌套给二维数组的每个元素赋值for(j=0;jN;j+)aij=rand()%9+1;/为了调试方便用随机数生成元素值。printf(%4d,aij);/同时输出各元素值。printf(n);/换行s1=s2=s3=0; /给累加器赋初值 for(i=0;iN;i+) for(j=0;jN;j+)if(i=j)s1+=aij;/主对角线求和if(i+j=N-1)s2+=aij;/次对角线求和if(i*j=0|i=N-1|j=N-1)s3+=aij;/周边元素求和/因为三类元素有可能有重复,所以用的是三个单分支选择结构,而不能用多分支选择。printf(s1=%d s2=%d s3=%dn,s1,s2,s3);2归并排序#define M 5#define N 4#includevoid main() int aM,bN,cM+N,i,ia=0,ib=0,ic=0; printf(Enter the element of array a:n); for(i=0;iM;i+) scanf(%d,&ai); printf(Enter the element of arrayb:n); for(i=0;iN;i+) scanf(%d,&bi); while(iaM&ibN) /依次扫描数组a和数组b中的元素 if(aia=M) /如果a数组中的元素已归并完,将b数组中余下部分赋给c即可。 while(ibN) cic+=bib+; else /如果b数组中的元素已归并完,将a数组中余下部分赋给c即可。 while(iaM) cic+=aia+; printf(Matrix a:n); for(i=0;iM;i+) printf(%d,ai); printf(nMatrix b:n); for(i=0;iN;i+) printf(%d,bi); printf(nmatrix c:n); for(i=0;iM+N;i+) printf(%d,ci); printf(n);3统计一个字符串中各种小写字母的个数程序代码:#includevoid main()int a26=0,i=0; char str80;printf(Enter a string:n);gets(str);while(stri)/等价于判断stri!=0astri-97+=1;i+; for(i=0;i26;i+)if(ai!=0) printf(%c=%d,i+97,ai);4. 测试一个字符串是否包含在另一个字符串中./思路:先求str2的长度,再根据长度从str1中一段一段地截取/相同长度的字符串来比较,直到str1中剩余长度不够截取为止。#include#include void main()char str180,str280,t;int i,n,flag=-1;/标记变量,先假设str2不在str1中。printf(please enter string1:);gets(str1);printf(please enter string2:);gets(str2);n=strlen(str2);/求str2的长度for(i=0;strlen(&str1i)=n & flag=-1;i+)/从str1的第i个字符开始求长度,如果长度不够循环结束,如果已经找到包含了也结束。t=str1n+i;/先把n+i位置将字符取出来放在临时变量t中。str1n+i=0;/再将这个位置设置为0,使str1字符串到此结束。if(strcmp(&str1i,str2)=0) /从第i位开始到结束,将两个字符串比较flag=i; /如果相等,表示包含,改变标记变量值str1n+i=t; /恢复刚才设置的那个0/以上关键是从str1中取出一段来和str2进行比较,请认真理解。if(flag!=-1)printf(%s in %s!begin:%dn,str2,str1,flag+1);elseprintf(%s not in %sn,str2,str1);附加:编程实现两个字符串比较函数sstrcmp (char str1,char str2);#include#includeint sstrcmp(char *st1,char *st2)for(;*st1=*st2 & *st1;st1+,st2+);/如果st1与st2指向的字符相等且其中一个不等于0,则继续比较下一对,直到遇到第一对不相等的字符,或者st1与st2指向的字符依然相等,但一个为0则停止循环。 return *st1-*st2; /如果st1和st2指向的字符不相等,返回不相等的字符ASCII码相减的结果,如果相等且同时为0,相减的结果为0,返回0.void main()char str180,str280; printf(Enter first string:n); gets(str1); printf(Enter first string:n); gets(str2); printf(%dn,sstrcmp(str1,str2);第六章(成宝国)一、选择题1. 答案:D分析:p=a,p和a都指向了a0。p-a是两个同类型指针相减运算,结果是这两个指针之间所包含的数据元素的个数,p和a都是指向了a0,所以p-a结果为0,ap-a就是a0。*(&ai)是ai先取地址再进行间接运算,结果就是ai。pi就是ai。*(a+i)代表元素ai,*(*(a+i)不知道是什么。2. 答案:B3. 答案:B4. 答案:A分析:值为3的元素是a2,所以p往后移动2个整型单元才能指向a2;+运算优先级高于*,且都是自右向左结合,*p+和*(p+),都是先计算*p,然后p=p+1;*+p,先计算p=p+1,再计算*p;+*p等价于+(*p)5. 答案:D分析:数组a的长度是10,元素的下标从0到9,没有a106. 答案:B分析:本题用指针实现求一组数中的最大值。s指向当前的最大数,p从前往后对数组元素逐个扫描,当p指向的元素大于s指向的元素,要更新s的指向。7. 答案:A分析:本题要分清楚*是乘法运算还是间接运算。8. 答案:D分析:本题要分清楚指针的类型。a和prt都是指向了由3个元素组成的一维数组,p是整型指针;要表示a12,分别是*(*(a+1)+2),*(*(prt+1)+2),*(p+1*3+2)9. 答案:B10. 答案:A分析:字符数组赋值要用strcpy函数。11. 答案:D二、阅读程序题1. a=0,b=7分析:a=p=&m,=优先级低于=,所以先计算p=&m,表达式是假,结果为0,再赋值, 所以a是0。b=(*p1)/(*p2)+7,两个整数相除,结果是整数,(*p1)/(*p2)为02. 103. 49分析:(p+=3)3表示p加3后再偏移3个单元的数据元素。详细内容参考课本P135, 运算符。4. 65. 196. 63857. 18. 60分析:i的变化范围是0到2,j的变化范围是0到1,所以程序中把数组前两列的元素全部加起来存到k中。9. k=2 a=3 b=2分析:注意如何把一个数字字符转化为数值。10. ABCD BCD CDD分析:printf(“%s”,p)是把以p为首地址的字符串输出。11. 9876 87612. GFEDCB分析:chp开始指向了字符串结束标记,循环中,只要chp比&b0大,则输出该位置上的字符。13. How does she分析:strlen(str1)/2为6,strcpy(str1+strlen(str1)/2,”es she”)表示从str16的位置开始,把字符串常量”es she”拷贝过去。14. GDABC15. ABCDCD16. 2 417. 9三、填空题1. 52. p=p+63. 604. t12四、编程题1./*算法思想:(1)对于数组中的元素,先把最后一个元素保存在临时变量中,其他元素从倒数第二个开始,顺序移动一个位置。(2)把(1)重复做m次。*/#include stdio.h#define N 10void main() int aN,m,i; /i为循环控制变量 int temp; /临时存储空间 int *p=a; printf(请输入数组a:n); for(;pa+N;p+) scanf(%d,p); printf(请输入m:n); scanf(%d,&m); for(i=0;ia;p-) /从倒数第二个元素开始,顺序后移一个位置 *p=*(p-1); *p=temp; /temp保存的值存到数组中第一个位置 printf(移动后的结果:n); for(;pa+10;p+) printf(%d ,*p);2.#include stdio.h#define M 5#define N 6void main() int aMN,bNM; int i,j; for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,*(a+i)+j); for(i=0;iN;i+) /循环,使得bij=aji for(j=0;jM;j+) *(*(b+i)+j)=*(*(a+j)+i); for(i=0;iN;i+) for(j=0;jp1) ch=*p1; *p1=*p2; *p2=ch;/交换对称位置上的字符 p2-; p1+;/修改指针 puts(str);第七章(田杰)一、选择题1. C2. A,返回值的类型由函数类型决定3. A4. C5. A6. B7. B8. B,while(*y+);这个循环就是为了找到字符串结束标志0,然后停止循环,返回值是两个指针之差,应该是两个指针之间的元素个数。由于循环中y多向后移了一位,所以要减1.9. static10、11. 涉及函数指针,跳过12. 涉及带参数的主函数,跳过二阅读程序题3.下列程序的输出结果是 0 。#include void fun(int *n)while(*n)-); /形参n接收的是实参a的地址,所以*n即指a,即a-;循环体为空语句。printf(“%dn”,+(*n);/相当于+avoid main()int a=10;fun(&a);/将a地址传给形参。8.以下程序运行后,如果从键盘输入Hello Kitty后按Enter键,则输出结果为 11 。#includeint func(char str) int num=0;while(*(str+num)!=0) num+;/str接收到实参p(数组str首地址);第一次循环,num初值为0,str+num为&str0,*(str+num)为str0,具体执行中部分变量得值变化过程见右下图:循环次数numstr+num*(str+num)num(循环体执行后)10&str0str0,H121&str1str1,e232&str2str2,l3.4109&str9str9,t101110str+10y110return (num);void main()char str10,*p=str;gets(p);/输入Hello Kittyprintf(“%dn”,func(p);/将p,即数组str首地址传给形参,分别用puts(str)和scanf(“%s”,str)看输出结果有何不同。9.以下程序的输出结果是 9 。#include #include void fun(int *s,int p23)/s可以理解为指向一个二维整型数组的首地址,*s就是这个二维数组中0行首地址*s=p11;/ p11即为a11void main()int a23=1,3,5,7,9,11,*p;/ a11为9;p=(int *)malloc(sizeof(int);/动态分配一整形内存fun(&p,a);/将p和a地址传给形参。printf(“%dn”,*p);16. 以下程序的输出结果是 0 1 2 3 4 5 。#include void main()int w=5;void fun(int);fun(w);fun(k-1) k0输出k k=0fun(k)=printf(“n”);void fun(int k)/fun为一递归函数,可以改写为if(k0) fun(k-1);printf(“%d “,k);18.该题可以不用看。三、填空题第9题涉及函数指针,跳过。四、编程题1. 编写判断一个整数是否为素数的函数。#include #include int prime(int m)int i,k;k=(int)sqrt(m);for(i=2;i=k;i+)if(m%i=0)break;if(i=k+1)return 1;else return 0;2. 跳过3. 写一个函数,实现对一个字符串中大小写字母的互换。#include void change(char a)int i;for(i=0;ai!=0;i+)if(ai=a & ai=A & ai=Z)ai+=32;void main()char x100;gets(x);change(x);puts(x);另解:注意函数原型的变化及调用方式的变化。#include char *change(char a)/返回字符型指针int i;for(i=0;ai!=0;i+)if(ai=a & ai=A & ai=Z)ai+=32;return a;/将数组首地块返回给函数void main()char x100;gets(x);puts(change(x);/因为返回的是字符数组首地块,所以可以直接用puts函数输出。4. 用递归求连续自然数的和。#include int sum(int n)if(n=1)return 1;else return sum(n-1)+n;void main()int n;scanf(%d,&n);printf(%dn,sum(n);与求阶乘类似!5. 编制求CMN的递归程序#include int cmn(int m,int n)if(n=0)return 1;else if(n=1) return m;else if(nm/2)return cmn(m,m-n);else return cmn(m-1,n)+cmn(m-1,n-1);void main()int m,n;scanf(%d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- F公司国际化战略研究(MBA毕业论文提纲)
- 地铁规划中的可达性分析与改善策略研究
- 毕业设计论文评语-1
- 结课论文评分标准
- 工程监理合同范本文库(3篇)
- 工程合同一般需要几份(3篇)
- 论文中的学术写作的规范和要求
- 西安翻译学院本科毕业论文(设计)写作技术规范
- 毕业设计评语表(四)
- 校内实习指导教师经典评语
- 全面从严治团课件
- 专利布局培训课件
- 锅炉维护保养课件
- 再生资源回收企业操作规程及环保要求
- 冬季四防安全培训课件
- 评标专家廉政课件
- 第15课 红红火火中国年(教学课件)小学二年级上册 统编版《道德与法治》新教材
- 2025年政府会计准则制度实施能力考试考点清单解析集
- 宠物中医康复知识培训课件
- 《动物疫病流行病学调查技术规范 小反刍兽疫》
- 2025年中国诚通招聘笔试参考题库附带答案详解
评论
0/150
提交评论