c语言课后习题参考答案(编辑修改稿)内容摘要:

} 输入一个字符串,按相反次序输出其中的所有字符。 include void main() { char str[80],*p=str。 gets(p)。 while(*p!=39。 39。 ) p++。 for(p。 p=str。 p) putchar(*p)。 putchar(39。 39。 )。 } 输入一个一维数组,输出其中的最大值、最小值和平均值。 include void main() { float a[10],*pmax=a,*pmin=a,*p=a,average=0。 for(。 p scanf(%f,p)。 for(p。 p=a。 p) { if(*pmax*p)pmax=p。 if(*pmin*p)pmin=p。 average+=*p。 } average/=10。 printf(max=%f,min=%f,average=%f ,*pmax,*pmin,average)。 } 输入一个 3 6 的二维整型数组,输出其中最大值,最小值及其所在的行列下标。 include main() { int a[3][6]。 int (*p)[6]=a。 int max,min,max_i,max_j,min_i,min_j,i,j。 printf(请输入数组: )。 for(i=0。 i3。 i++) for(j=0。 j6。 j++) scanf(%d,*(p+i)+j)。 max=min=**p。 max_i=max_j=min_i=min_j=0。 for(i=0。 i3。 i++) for(j=0。 j6。 j++) { if(*(*(p+i)+j)max) { max=*(*(p+i)+j)。 max_i=i。 max_j=j。 } if(*(*(p+i)+j) { min=*(*(p+i)+j)。 min_i=i。 min_j=j。 } } printf(这个数组的最大值是 a[%d][%d]=%d,最小值是 a[%d][%d]=%d , max_i,max_j,max,min_i,min_j,min)。 } 输入 3 个字符串,输出其中最大的字符串。 include main() { char a[80],b[80],c[80],*p,*pmax,*pa=a,*pb=b,*pc=c。 gets(a)。 gets(b)。 gets(c)。 pmax=pa。 do { if(*pa*pb) break。 else if(*pmax==*pb) continue。 else { pmax=b。 break。 } } while(pa++!=39。 39。 amp。 amp。 pb++!=39。 39。 )。 p=pmax。 do { if(*p*pc) { pmax=c。 break。 } else if(*p==*pc) continue。 else break。 } while(*p++!=39。 39。 amp。 amp。 *pc++!=39。 39。 )。 printf(这 3 个字符串中最大的是 %s ,pmax)。 } 输入 2 个字符串,将其连接后输出。 include main() { char str1[80],str2[40],*p1=str1,*p2=str2。 gets(p1)。 gets(p2)。 while(*p1!=39。 39。 ) p1++。 do *p1++=*p2。 while(*p2++!=39。 39。 )。 puts(str1)。 } 比较 2 个字符串是否相等。 include main() { char str1[80],str2[80],*p1=str1,*p2=str2。 char flag=39。 y39。 gets(p1)。 gets(p2)。 do { if(*p1==*p2) continue。 else {flag=39。 n39。 break。 } } while(*p1++!=39。 39。 amp。 amp。 *p2++!=39。 39。 )。 if(flag==39。 y39。 ) printf(这两个字符串是相等的 )。 else printf(这两个字符串不相等 )。 } 输入 10 个整数,将其中最大数和最后一个数交换,最小数和第 1 个数交换。 include main() { int num[10],*max,*min,*p=num,t1,t2。 for(。 p scanf(%d,p)。 for(max=min=p=num。 p { if(*max*p) max=p。 if(*min*p) min=p。 } t1=num[9]。 num[9]=*max。 t2=num[0]。 num[0]=*min。 *max=t1。 *min=t2。 printf(交换后的数组是: )。 for(p=num。 p printf(%4d,*p)。 printf( )。 } 第六章习题参考答案 一、单项选择题 ②③①②③① 二、填充题 定义该变 量的函数或复合语句 内部。 地址传递、值传递 函数内部、局部 return、 void 6354 *、 *z w[i1] *s*t 三、程序分析题 对两个数按从小到大排序 求数组 a 中前 n 个元素的平均值。 12 四、程序设计题 编一个名为 root 的函数,求方程 ax2+ bx+c=0 的 b24ac,并作为函数的返回值。 其中 a、 b、 c 作为函数的形式参数。 float root(float a,float b,float c) { return(b*b4*a*c)。 } 编一个函数,若参数 y 为闰年,则返回 1;否则返回 0; int leap(int year) { if(year%4==0amp。 amp。 year%100!=0||year%400==0) return(1)。 else return(0)。 } 编一个无返回值、名为 root2 的函数,要求如下: 形式参数: a,b,c 单精度实型, root 单精度实型数组名。 功能:计算 ax2+bx+c=0 的两个实根(设 b2+4ac0)存入 root[2]中。 include void root2(float a,float b,float c,float root[]) { float delta。 delta=b*b4*a*c。 root[0]=(b(float)sqrt(delta))/(2*a)。 root[1]=(b+(float)sqrt(delta))/(2*a)。 } 编一个无返回值、名为 trus 的函数,要求如下: 形式参数: s1[2][3],s2[3][2] 整型数组 功能:将 s1 数组转置后存入 s2 数组中。 void trus(int s1[2][3],int s2[3][2]) { int i,j。 for(i=0。 i2。 i++) for(j=0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。