您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言内涵教程练习参考答案
7.1charf(charch){if('A'=ch&&ch='Z'){ch+=3;if(ch'Z'){ch-=26;}}elseif('a'=ch&&ch='z')ch=(ch-'a'+3)%26+'a';returnch;}7.2#includemath.hdoublef(doublex){if(x2)returnx;if(x17)return2*x-1;returnsin(x)+1;}7.3intf(intn){intrev=0;intm;while(n0){m=n%10;rev=rev*10+m;n/=10;}returnrev;}7.4intf(intn){intm,sum,num=n;sum=0;while(n0){m=n%10;sum+=m*m*m;n/=10;}returnsum==num;}7.5intf(inta,intb){intr;r=a%b;while(r0){a=b;b=r;r=a%b;}returnb;}7.6/*输出说明1表示不能被2或3或5整除;2,3,5分别表示能被2,3,5整除;6表示能被2和3整除;10表示能被2和5整除;15表示能被3和5整除;30表示能同时被2、3和5整除;*/intf(intn){intm=1;if(n%2==0)m*=2;if(n%3==0)m*=3;if(n%5==0)m*=5;returnm;}7.7不可以。由函数的首部可知,无论在何种情况下,convertGrade函数都必须输出一个字符。可以约定用函数输出字符F表明函数的输入数据非法。if(grade0||grade100)return‘F’;。7.8不能互换使用。库函数abs用于求整数的绝对值,而库函数fabs用于求小数的绝对值。函数调用abs(3)的值为整数3,函数调用abs(2.3)的值为整数2;函数调用fabs(3)的值为double型数3.0,函数调用fabs(2.3)的值为double型数2.3。注:abs(2.3)的实参为2.3,给形参赋值后,形参的值会为2,故它的返回值为2。7.9#includestdio.hintf(intn){intrev=0;intm;while(n0){m=n%10;rev=rev*10+m;n/=10;}returnrev;}voidmain(){inta;printf(请输入一个正整数:\n);scanf(%d,&a);if(f(a)==a)printf(%d是一个回文数\n,a);elseprintf(%d不是一个回文数\n,a);}7.10#includestdio.hcharf(charch){if('A'=ch&&ch='Z'){ch+=3;if(ch'Z'){ch-=26;}}elseif('a'=ch&&ch='z')ch=(ch-'a'+3)%26+'a';returnch;}voidmain(){charstr[1000];inti=0;printf(请输入一个字符串:);gets(str);printf(加密前:%s\n加密后:,str);while(str[i]!='\0'){str[i]=f(str[i]);++i;}puts(str);}7.11#includestdio.hintf(intn){intm=1;if(n%2==0)m*=2;if(n%3==0)m*=3;if(n%5==0)m*=5;returnm;}voidmain(){inta,i;printf(请输入10个正整数:);for(i=0;i10;++i){scanf(%d,&a);printf(%d,a);switch(f(a)){case1:printf(不能被2,3,5中的任一个数整除。\n);break;case2:printf(能被2整除。\n);break;case3:printf(能被3整除。\n);break;case5:printf(能被5整除。\n);break;case6:printf(能被2和3整除。\n);break;case10:printf(能被2和5整除。\n);case15:printf(能被3和5整除。\n);break;case30:printf(能同时被2,3,5整除。\n);break;}}}7.12局部变量m和n的作用域从5行起至第9行止。swap函数形参x和y的作用域从第11行起至第16行止。变量temp的作用域从12行起至第16行止。7.13全局变量m和变量n的作用域从3行起至第16行止。swap函数形参x和y的作用域从第11行起至第16行止。变量temp的作用域从12行起至第16行止。程序的运行结果为:7.14交换前:m=3,n=5交换后:m=5,n=37.15m=10,n=57.1610,1510,2010,207.17例7-14在函数calculate中计算了圆的周长并赋值给了全局变量g_circum;而main函数通过访问全局变量g_circum得到了圆的周长。全局变量的使用方式为,一个函数为全局变量赋值,另一个函数使用全局变量的值。例7-16(1)中函数vary1改变并使用了全局变量的值。例7-17函数vary使用了全局变量的值。例7-18函数vary3把全局变量g_i的作用域限制在函数中,并在函数中使用了全局变量。全局变量可用于在函数之间传递数据。使用全局变量时应参考例7-14的用法,即一个函数向全局变量中赋值,在程序中(main函数中)读取全局变量,普通函数中尽量不要把全局变量作为输入,函数的输入原则上只能通过形参获得。7.18程序7-8中,swap函数执行时main函数的局部变量m,n由于作用域的限制,不能在swap函数使用,但swap函数执行时main函数并没有执行完毕,因此,这两个变量的生命期并没有结束。7.19程序执行情况如下,分析过程略。7.20相同。函数randomize产生的随机序列与种子有关,即与函数中变量seed的初值有关。7.21voidsort(inta[],intn){inti,j,temp;for(i=1;in;++i){temp=a[i];for(j=i;j=0&&tempa[j-1];--j)a[j]=a[j-1];a[j]=temp;}}7.22//只给出了main函数。voidmain(){inta[10],i;printf(排序前:);for(i=0;i10;++i){a[i]=randomize();printf(%d,a[i]);}sort(a,10);printf(\n排序后:);for(i=0;i10;++i){printf(%d,a[i]);}printf(\n);}7.23函数abc的作用为删除字符数组str存储字符串中的字符d。程序的输出结果为acef。7.24例7-21中用整型数组的第一个元素存储了数组中待处理元素的长度。练习7.23中用空字符标示数组存储的字符串的结束位置。7.25#includestdio.hintf(inti){if(i==1)return1;returni+f(i-1);}voidmain(){inti;printf(请输入一个正整数:);scanf(%d,&i);printf(1+2+...+%d=%d\n,i,f(i));}7.26#includestdio.hintf(inti){if(i10)returni;returni%10+f(i/10);}voidmain(){inti;printf(请输入一个正整数:);scanf(%d,&i);printf(%d各位数字和为%d\n,i,f(i));}7.27#includestdio.hintf(inta,intb){if(a%b==0)returnb;returnf(b,a%b);}voidmain(){inta,b;printf(请输入两个正整数:);scanf(%d%d,&a,&b);printf(%d和%d的公约数为%d\n,a,b,f(a,b));}7.28x1=(x0+a/x0)/2;y=mySqrt(a,x1);7.29fun(9)=9-fun(9-2)=9-fun(7)=9-(7-fun(5))=9-(7-(5-fun(3)))=9-(7-(5-(3-fun(1))))=9-(7-(5-(3-2)))7.30递归函数recMin用于返回array数组中的最小值。57.31普通算法如下:intf(inta[],intn,intkey){inti;for(i=0;in;++i)if(a[i]==key)returni;return-1;}递归算法如下:intf(inta[],intn,intkey){if(n0)return-1;if(a[n-1]==key)returnn-1;returnf(a,n-1,key);}查找成功时,普通算法返回第一个值为key的元素的下标,递归算法返回最后一个值为key的元素的下标。7.32分析过程略。7.33voidf(intn){if(n==0)return;f(n/2);printf(%d,n%2);}比较略。
本文标题:C语言内涵教程练习参考答案
链接地址:https://www.777doc.com/doc-2907877 .html