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
void ToHms(int *hour, int *minute, double *second, double total)
{
int time=total;
*hour=time/3600;
*minute=time/60%60;
*second=total-*hour*3600-*minute*60;
}
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 函数交换两个整数的值。
关联习题:交换整数。
void IntSortAsc3(int *x, int *y, int *z)
{
if(*x>*y)
{
IntSwap( x, y);
}
if(*x>*z)
{
IntSwap( x, z);
}
if(*y>*z)
{
IntSwap( y, z);
}
}
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; } /* 请在这里填写答案 */
输入样例:
4
20 78 99 -14
输出样例:
99
int FindArrayMax( int a[], int n )
{
int m=a[0];
for(int i=0;i<n;i++)
{
if(m<a[i])
{
m=a[i];
}
}
return m;
}
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
void fun ( int h,int f,int *p,int *q )
{
for(int i=0;i<=h;i++)
{
for(int j=0;j<=f;j++)
{
if((i+j==h)&&(2*i+4*j==f))
{
*p=i;
*q=j;
}
}
}
}
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
void fun(int x, int y, int *p, int *q,float *s)
{
*p=x+y;
*q=x*y;
*s=(double)(x+y)/2;
}
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
输出样例:
在这里给出相应的输出。例如:
2 1
1 2
在这里给出一组输入。例如:
1 2
输出样例:
在这里给出相应的输出。例如:
1 2
1 2
void swap( int *x,int *y )
{
if(*x>*y)
{
int temp=*y;
*y=*x;
*x=temp;
}
}
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
void Swap(int &a,int &b)
{
int temp=b;
b=a;
a=temp;
}
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
float &cut(float &a,float &b)
{
if(a>b)
{
return b;
}
else
{
return a;
}
}