CPP2022-15-函数传参(指针与引用)

简介: CPP2022-15-函数传参(指针与引用)

6-1 总秒数转时、分、秒

分数 10

全屏浏览题目

切换布局

作者 李祥

单位 湖北经济学院

请编写函数,将当天的总秒数转换成时间(时、分和秒数)。

函数原型

void ToHms(int *hour, int *minute, double *second, double total);

说明:hour、minute 和 second 分别为指示时、分和秒数的指针,total 为当天的总秒数。函数根据总秒数 total 计算时、分和秒数,分别保存至 hourminutesecond 所指示的变量中。

裁判程序

#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. }

 

 

相关文章
|
21天前
|
存储 C语言 C++
如何通过指针作为函数参数来实现函数的返回多个值
在C语言中,可以通过将指针作为函数参数来实现函数返回多个值。调用函数时,传递变量的地址,函数内部通过修改指针所指向的内存来改变原变量的值,从而实现多值返回。
|
1月前
链表指针的传参,传值和传地址
本文讨论了链表操作中指针传参的问题,特别是指针的传值与传地址的区别,并提供了修正代码,以确保链表插入操作能正确地修改指针指向的地址。
16 1
链表指针的传参,传值和传地址
|
21天前
|
存储 搜索推荐 C语言
如何理解指针作为函数参数的输入和输出特性
指针作为函数参数时,可以实现输入和输出的双重功能。通过指针传递变量的地址,函数可以修改外部变量的值,实现输出;同时,指针本身也可以作为输入,传递初始值或状态。这种方式提高了函数的灵活性和效率。
|
5月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
72 1
|
1月前
利用指针函数
【10月更文挑战第2天】利用指针函数。
17 1
|
1月前
|
算法 搜索推荐 C语言
【C语言篇】深入理解指针4(模拟实现qsort函数)
【C语言篇】深入理解指针4(模拟实现qsort函数)
22 2
|
2月前
|
Linux
在Linux内核中根据函数指针输出函数名称
在Linux内核中根据函数指针输出函数名称
|
3月前
|
程序员 C语言
指针在函数参数和返回值中的使用
指针在函数参数和返回值中的使用
47 9
|
3月前
|
存储 搜索推荐 C语言
C语言中的指针函数:深入探索与应用
C语言中的指针函数:深入探索与应用
|
4月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
31 3