6-1 总秒数转时、分、秒
分数 10
全屏浏览题目
切换布局
作者 李祥
单位 湖北经济学院
请编写函数,将当天的总秒数转换成时间(时、分和秒数)。
函数原型
void ToHms(int *hour, int *minute, double *second, double total);
说明:hour、minute 和 second 分别为指示时、分和秒数的指针,total 为当天的总秒数。函数根据总秒数 total 计算时、分和秒数,分别保存至 hour
、minute
和 second
所指示的变量中。
裁判程序
#include <stdio.h> #include <math.h> void TimeOutput(int hour, int minute, double second); void ToHms(int *hour, int *minute, double *second, double total); int main() { int h, m; double s, t; scanf("%lg", &t); ToHms(&h, &m, &s, t); TimeOutput(h, m, s); return 0; } void TimeOutput(int hour, int minute, double second) { ...(略)... } /* 你提交的代码将被嵌在这里 */
输入样例
29405.5
输出样例
08:10:05.50
1. void ToHms(int *hour, int *minute, double *second, double total) 2. { 3. int time=total; 4. *hour=time/3600; 5. *minute=time/60%60; 6. *second=total-*hour*3600-*minute*60; 7. }
6-2 三整数排序(升序)
分数 10
全屏浏览题目
切换布局
作者 李祥
单位 湖北经济学院
请编写函数,对三个整数按升序排序。
函数原型
void IntSortAsc3(int *x, int *y, int *z);
说明:参数 x、y 和 z 为指示三个整型变量的指针,函数值对这三个整型变量进行排序,使 x、y 和 z 所指变量的值按由小到大的顺序排列。
裁判程序
#include <stdio.h> void IntSwap(int *x, int *y); void IntSortAsc3(int *x, int *y, int *z); int main() { int a, b, c; scanf("%d%d%d", &a, &b, &c); IntSortAsc3(&a, &b, &c); printf("%d %d %d\n", a, b, c); return 0; } void IntSwap(int *x, int *y) { ...(略)... } /* 你提交的代码将被嵌在这里 */
输入样例
15 -27 36
输出样例
-27 15 36
要求:调用前面作业中的 IntSwap 函数交换两个整数的值。
关联习题:交换整数。
1. void IntSortAsc3(int *x, int *y, int *z) 2. { 3. if(*x>*y) 4. { 5. IntSwap( x, y); 6. } 7. if(*x>*z) 8. { 9. IntSwap( x, z); 10. } 11. if(*y>*z) 12. { 13. IntSwap( y, z); 14. } 15. }
6-3 使用函数找出数组中的最大值
分数 20
全屏浏览题目
切换布局
作者 张泳
单位 浙大城市学院
本题要求实现一个找出整型数组中最大值的函数。
函数接口定义:
int FindArrayMax( int a[], int n );
其中a
是用户传入的数组,n
是数组a
中元素的个数。函数返回数组a
中的最大值。
裁判测试程序样例:
#include <stdio.h> #define MAXN 10 int FindArrayMax( int a[], int n ); int main() { int i, n; int a[MAXN]; scanf("%d", &n); for( i=0; i<n; i++ ){ scanf("%d", &a[i]); } printf("%d\n", FindArrayMax(a, n)); return 0; } /* 请在这里填写答案 */
输入样例:
1. 4 2. 20 78 99 -14
输出样例:
99
1. int FindArrayMax( int a[], int n ) 2. { 3. int m=a[0]; 4. for(int i=0;i<n;i++) 5. { 6. if(m<a[i]) 7. { 8. m=a[i]; 9. } 10. } 11. return m; 12. }
6-4 指针做参数: 求解鸡兔同笼。
分数 20
全屏浏览题目
切换布局
作者 苑丽红
单位 长春理工大学
鸡兔同笼是中国古代的数学名题之一。 大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?这四句话的意思是:
有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?
本题要求编写函数,利用指针做参数求解鸡兔同笼问题。头和脚的数目从键盘输入。
函数接口定义:
void fun ( int h,int f,int *p,int *q );
其中h和f由主函数传入,代表头和脚的数目, (假定输入数据都合理)。 函数fun可求出鸡和兔的数目,并在主函数输出。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> void fun ( int h,int f,int *p,int *q ); int main() { int h,f,x,y ; scanf("%d%d", &h, &f); fun (h ,f, &x,&y ); //x、y代表鸡和兔的数目 printf("cocks=%d,rabbits=%d", x,y); return 0; } /* 您填写的代码将嵌入这里,注意无需写主函数,只需完成fun的设计 */
输入样例:
35 94
输出样例:
cocks=23,rabbits=12
1. void fun ( int h,int f,int *p,int *q ) 2. { 3. for(int i=0;i<=h;i++) 4. { 5. for(int j=0;j<=f;j++) 6. { 7. if((i+j==h)&&(2*i+4*j==f)) 8. { 9. *p=i; 10. *q=j; 11. } 12. } 13. } 14. }
6-5 指针做参数: 求两数的和、积、平均值。
分数 10
全屏浏览题目
切换布局
作者 苑丽红
单位 长春理工大学
本题求两整数的和、积、平均值。要求用原型是 void fun(int x, int y, int *p, int *q,float *s) 的函数来实现。
函数接口定义:
void fun(int x, int y, int *p, int *q,float *s) ;
其中x和y是需要计算的两个数,p、 q、s指向的变量保存计算结果。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> void fun(int x, int y, int *p, int *q, float *s) ; int main() { int x,y,sum,product; float aver; scanf("%d%d", &x, &y); fun (x ,y, &sum,&product,&aver ); printf("%d,%d,%.1f", sum,product,aver); return 0; } /* 请在这里填写答案 */
输入样例:
31 2
输出样例:
33,62,16.5
1. void fun(int x, int y, int *p, int *q,float *s) 2. { 3. *p=x+y; 4. *q=x*y; 5. *s=(double)(x+y)/2; 6. }
6-6 实现两数据值的交换
分数 10
全屏浏览题目
切换布局
作者 王宇
单位 集美大学诚毅学院
本题要求实现一个函数,该函数完成主调函数传递的数据实现值的交换。
函数接口定义:
在这里描述函数接口。例如: void swap( int *x,int *y );
在这里解释接口参数。例如:其中 x 和 y都是用户传入的参数。 当x的间访值大于y的间访值; x与y指向空间的值发生交换。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> void swap( int *x,int *y ); int main() { int a,b; scanf("%d%d",&a,&b); printf("%d %d\n",a,b); swap( &a,&b ); //如果a>b,则交换,否则不交换 printf("%d %d\n",a,b); return 0; } /* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
2 1
输出样例:
在这里给出相应的输出。例如:
1. 2 1 2. 1 2
在这里给出一组输入。例如:
1 2
输出样例:
在这里给出相应的输出。例如:
1. 1 2 2. 1 2
1. void swap( int *x,int *y ) 2. { 3. if(*x>*y) 4. { 5. int temp=*y; 6. *y=*x; 7. *x=temp; 8. } 9. }
6-7 引用作函数形参交换两个整数
分数 10
全屏浏览题目
切换布局
作者 李廷元
单位 中国民用航空飞行学院
设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作。
裁判测试程序样例:
#include <iostream> using namespace std; /* 请在这里填写答案 */ int main() { int a, b; cin >> a >> b; Swap(a, b); cout << a << " " << b << endl; return 0; }
输入样例:
3 5
输出样例:
5 3
1. void Swap(int &a,int &b) 2. { 3. int temp=b; 4. b=a; 5. a=temp; 6. }
6-8 买一送一(引用传参、引用作为函数返回值)
分数 10
全屏浏览题目
切换布局
作者 徐婉珍
单位 广东东软学院
某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。
裁判测试程序样例:
#include <iostream> using namespace std; //请在此处添加代码 int main(){ float a,b; cin>>a>>b; cut(a,b)=0; cout<<"to pay:"<<a+b<<endl; return 0; }
输入样例:
在这里给出一组输入。例如:
239 180
输出样例:
在这里给出相应的输出。例如:
239
1. float &cut(float &a,float &b) 2. { 3. if(a>b) 4. { 5. return b; 6. } 7. else 8. { 9. return a; 10. } 11. }