目录

6-1 计算两数的和与差(5分)

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

代码

6-2 拆分实数的整数与小数部分 (5分)

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

代码

6-3 利用指针找最大值 (5分)

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

代码

6-4 在数组中查找指定元素 (15分)

函数接口定义:

裁判测试程序样例:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

代码

6-5 使用函数找出数组中的最大值 (16分)

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

代码


6-1 计算两数的和与差(5分)

本题要求实现一个计算输入的两数的和与差的简单函数。

函数接口定义:

void sum_diff( float op1, float op2, float *psum, float *pdiff );

其中op1op2是输入的两个实数,*psum*pdiff是计算得出的和与差。

裁判测试程序样例:

#include <stdio.h>

void sum_diff( float op1, float op2, float *psum, float *pdiff );

int main()
{
    float a, b, sum, diff;

    scanf("%f %f", &a, &b);
    sum_diff(a, b, &sum, &diff);
    printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);
    
    return 0; 
}

/* 你的代码将被嵌在这里 */

输入样例:

4 6

输出样例:

The sum is 10.00
The diff is -2.00

代码

void sum_diff(float op1, float op2, float* psum, float* pdiff)
{
    *psum = op1 + op2;    //通过传入指针,即使函数返回类型是void,
                          //也可以修改并传回两个值
    *pdiff = op1 - op2;
}

6-2 拆分实数的整数与小数部分 (5分)

本题要求实现一个拆分实数的整数与小数部分的简单函数。

函数接口定义:

void splitfloat( float x, int *intpart, float *fracpart );

其中x是被拆分的实数(0≤x<10000),*intpart*fracpart分别是将实数x拆分出来的整数部分与小数部分。

裁判测试程序样例:

#include <stdio.h>

void splitfloat( float x, int *intpart, float *fracpart );

int main()
{
    float x, fracpart;
    int intpart;
    
    scanf("%f", &x);
    splitfloat(x, &intpart, &fracpart);
    printf("The integer part is %d\n", intpart);
    printf("The fractional part is %g\n", fracpart);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

2.718

输出样例:

The integer part is 2
The fractional part is 0.718

代码

 
void splitfloat( float x, int *intpart, float *fracpart ){
//通过传入指针,即使函数返回类型是void,也可以修改并传回两个值
 *intpart=(int)x; //整数部分,使用强制类型转换

 *fracpart=x-*intpart; //小数部分,用x减去整数部分

}

6-3 利用指针找最大值 (5分)

本题要求实现一个简单函数,找出两个数中的最大值。

函数接口定义:

void findmax( int *px, int *py, int *pmax );

其中pxpy是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。

裁判测试程序样例:

#include <stdio.h>

void findmax( int *px, int *py, int *pmax );

int main()
{    
    int max, x, y; 

    scanf("%d %d", &x, &y);
    findmax( &x, &y, &max );
    printf("%d\n", max);

    return 0;
} 

/* 你的代码将被嵌在这里 */

输入样例:

3 5

输出样例:

5

代码

 
void findmax( int *px, int *py, int *pmax )
{//通过传入指针,即使函数返回类型是void,也可以修改并传回两个值
    if(*px>*py)
        *pmax=*px;
    else
        *pmax=*py;
}

6-4 在数组中查找指定元素 (15分)

本题要求实现一个在数组中查找指定元素的简单函数。

函数接口定义:

int search( int list[], int n, int x );

其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 10

int search( int list[], int n, int x );
    
int main()
{
    int i, index, n, x;
    int a[MAXN];

    scanf("%d", &n);
    for( i = 0; i < n; i++ )
        scanf("%d", &a[i]);
    scanf("%d", &x);
    index = search( a, n, x );
    if( index != -1 )
        printf("index = %d\n", index);
    else
        printf("Not found\n");
            
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

5
1 2 2 5 4
2

输出样例1:

index = 1

输入样例2:

5
1 2 2 5 4
0

输出样例2:

Not found

代码

 
int search( int list[], int n, int x ){
   
    int i,t=-1;
   
    for(i=0;i<n;i++){
        
        if(list[i]==x){ 
            t=i;
            break;         //找到跳出for循环
        }
    }
    
    return t;
    }

6-5 使用函数找出数组中的最大值 (16分)

本题要求实现一个找出整型数组中最大值的函数。

函数接口定义:

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 max=a[0]; //假设最大值是第一个
    
    for(int i=0;i<n;i++) //循环找到最大值
    {
        if(a[i]>=max)   //如果大于最大值则替换
        {
            max=a[i];
        }
    }
        
    return max;
}
02-23 04:16