文档详情

中国石油大学(华东)C语言在线测评答案第9章指针(2013级亲测正确)选编.docx

发布:2017-04-17约1.23万字共24页下载文档
文本预览下载声明
 PAGE \* MERGEFORMAT 24 9.0利用指针求最大值 问题描述 在主程序中从键盘输入两个整数。 要求: 一、比较它们的大小; 二、使用函数实现,函数参数使用指针; 三、在主函数中按由小到大输出,每个数据以一个空格隔开。 提示 比较大小的实现,需引入一个变量暂时存放其中的一个数, 比较大小的功能可以用一个函数实现,在主函数中引用此函数即可。 #includestdio.h int main() { void swap(int *p1,int *p2); int n1,n2; int *p1,*p2; scanf(%d %d,n1,n2); p1=n1; p2=n2; if(n1n2) swap(p1,p2); printf(%d %d\n,n1,n2); return 0; } void swap(int *p1,int *p2) { int p; p=*p1; *p1=*p2; *p2=p; } 9.1 数的合并 请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a的十位和个位依次存放在c数的十位和千位上,b的十位和个位依次存放在c数的个位和百位上。 例如:当a=45,b=12,调用该函数后,c=5241。 部分源程序如下,只需要完成fun函数的编写即可。 #includestdio.h void fun(int x,int y,int *p) { int x1,x2,y1,y2; x1=x/10; x2=x%10; y1=y/10; y2=y%10; *p=10*x1+1000*x2+y1+100*y2; } /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ int main() { int a,b,c; scanf(%d,%d,a,b); fun(a,b,c); printf(%d\n,c); return 0; } /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ 9.2 数组中奇偶数 请编一个函数 fun,函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参 n 给了数组中数据的个数:利用指针 odd 返回奇数之和,利用指针 even 返回偶数之和。 例如:数组中的值依次为: 1 , 8 , 2 , 3 , 11 , 6 ; 则利用指针 odd 返回奇数之和?15 ;利用指针 even 返回偶数之和?16 。 #include stdio.h #define N 20 void fun(int a[],int n,int *odd,int *even) { int i; *odd=0; *even=0; for(i=0;in;i++) { if(a[i]%2) *odd=*odd+a[i]; else *even=*even+a[i]; } } /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ int main() { int a[N],i,n,odd,even; scanf(%d,n); for(i=0;in;i++) scanf(%d,a[i]); fun(a,n,odd,even); printf(The sum of odd numbers:%d\n,odd); printf(The sum of even numbers:%d\n,even); return 0; } /* PRESET CODE END - NEVER TOUCH CODE ABOVE */ 9.3 浮点数四舍五入 请编一个函数?void fun(double a,double?*h) ,函数的功能是对变量 h 中的值 保留 2 位小数,并对第三位进行四舍五入(规定 h 中的值为正数)。 注意:本题只需提交fun函数即可 #includestdio.h void fun(double a,double *h) { int k; k=1000*a; if(k%10=5) *h=(k/10+1)/100.0; if(k%105) *h=k/10/100.0; } /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */ int main( ) { double a,h; scanf(%lf,a); fun(a,h); printf(The result:%lf\n,h);
显示全部
相似文档