Problem A:【函数的指针参数】交换2个实数
题目描述
用指针变量作为函数形参,编写函数实现2个实数的交换
函数接口定义:
void mySwap(double*,double*);
裁判测试程序样例:
输入
测试数据有多组,处理到输入结束
输出
输出交换后的2个实数,保留2位小数。
每个输出占1行
样例输入
3.5 5.25
5 3
样例输出
5.25 3.50
3.00 5.00
答案
void mySwap(double *p1,double *p2){
double temp;
temp= *p1;
*p1=*p2;
*p2=temp;
}
Problem B:【函数的指针参数】三个整数的排序
题目描述
使用自定义函数sort(int a,int b)完成从小到大的排序功能
函数的参数:两个指针指向待排序的两个整数,函数执行完毕,使得a≤b
裁判测试程序样例:
样例输入
4 3 2
样例输出
2 3 4
答案
void sort(int *p1, int *p2){
int temp;
if(*p1>*p2){
temp= *p1;
*p1=*p2;
*p2=temp;
}
}
Problem C:【函数的指针参数】求解鸡兔问题
题目描述
使用自定义函数int calc(int,int,int*,int*)求解鸡兔问题
函数的参数:头的总数量h与脚的总数量f,通过两个指针参数获得计算结果
如果无解,则返回0,否则返回1.
裁判测试程序样例:
#include <stdio.h>
#include <stdio.h>
int calc(int,int,int*,int*);
int main()
{
int h,f;
while(scanf("%d%d",&h,&f)!=EOF){
int c,r;
if(calc(h,f,&c,&r))
printf("%d %d\n",c,r);
else
printf(“no solution\n”);
}
return 0;
}
// 你的代码将被嵌在这里
输入
测试数据有多组,处理到输入结束。
输出
输出对应的鸡和兔的数量,中间用空格隔开。
每个输出占1行。
样例输入
5 16
2 4
样例输出
2 3
2 0
答案
int calc(int h,int f,int *p1, int *p2){
*p2=(f-2*h)/2;
*p1=h-*p2;
if(f-2*h<0 || (f-2*h)%2==1)
return 0;
else if(*p1<0)
return 0;
else
return 1;
}
Problem D:【函数的指针参数】日期问题
题目描述
输入年和天数,输出对应的月和日。例如:输入2000和61,输出3和1。
函数接口定义:
void month_day(int,int,int*,int*);
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void month_day(int,int,int*,int*);
int main( )
{
int d,m,y,yd;
while(scanf("%d%d",&y,&yd)!=EOF){
month_day(y,yd,&m,&d);
printf("%d-%d\n",m,d);
}
}
/* 你的代码将被嵌在这里 */
输入
输入年和天数;测试数据有多组,处理到输入结束。
输出
输出对应的月和日。
每个输出占1行。
样例输入
2010 1
2010 32
样例输出
1-1
2-1
答案
void month_day(int year,int yearday,int *pmonth,int *pday){
int pd,i;
int tab[2][13]={
{
0,31,28,31,30,31,30,31,31,30,31,30,31},