第12次上机内容 函数

发布时间 2023-12-21 15:54:54作者: zerocloud01

1、阅读程序

(1)

作用:打印a的值。
分析结果:38。

运行结果:

考察函数传值,不是经典转换ab值不是很认可。

(2)

说什么来什么,不过很没必要省着点空间吧?

作用:打印x、y的值

    或者应该是交换x、y的值未果,证明函数传值不修改变量值。

分析结果

    3,5

    5,3

运行结果

    

2、上机调试

(1)

错误在第1、第9行,函数返回值为void时,不可赋于float型变量。

#include<stdio.h>

float func(float,float);//here

int main(void)
{
    float x,y;
    float z;
    scanf("%f,%f",&x,&y);
    z = func(x,y);
    printf("z = %f\n",z);
    return 0;
}

float func(float a,float b)//here
{
    float c;
    c = a * a + b * b;
    return c;
}

(2)

就没见过这么写的

1、函数调用前需声明;

2、x未声明,且x、y未赋值;

3、就没见过把函数体写在主函数里面的,什么四不像。

不过经典A+B到是充满回忆。

#include<stdio.h>

int sum(int,int);

int main(void)
{
    int x,y;
    scanf("%d %d",&x,&y);
    printf("%d\n",sum(x,y));
    return 0;
}

int sum(int a,int b)
{
    return a + b;
}

 

3、填空题

(1)

()内填i

但是程序缺失太多,填上空显然无法运行

#include<stdio.h>

int F(int);
int sumFun(int);

int main(void)
{
    printf("The sum = %d\n",sumFun(10));
    return 0;
}

int sumFun(int n)
{
    int s = 0;
    for(int i=0;i<=n;++i)   s += F(i);
    return s;
}

int F(int x)
{
    return x * x + 1;
}

 (2)

填空见下代码注释处
#include<stdio.h>

double max(double,double); //here

int main(void)
{
    double x,y;
    scanf("%lf,%lf",&x,&y);
    printf("%.8f\n",max(x,y));
    return 0;
}

double max(double a,double b)
{
    return a > b ? a : b ;
}

(3)

自改那就肯定要有自己风格了

#include<stdio.h>

double func(double x,int y);

int main(void)
{
    double x;
    int y;
    printf("Enter x and y for z = x ^ y\n");
    scanf("%lf %d",&x,&y);
    printf("%f",func(x,y));
    return 0;
}

double func(double x,int y)
{
    double z = 1;
    for(int i=1;i<=y;++i)    z *= x;//here
    /*            按题意应该写z = z * x               */
    return z;
}

 4、编程题

(1)

此程序适用于1e5以内数,需要改大见注释处

#include<stdio.h>

const int N = 1e5 + 10;

int n;
int a[N];

void sort(int a[],int,int);
double avg(int a[]);

int main(void)
{
    scanf("%d",&n);
    for(int i=0;i<n;++i)    scanf("%d",&a[i]);
    sort(a,0,n-1);
    for(int i=0;i<n;++i)
    {
        if(i % 10 == 0) printf("\n");
        printf("%d ",a[i]);
    }
    printf("\nMax:%d\nMin:%d\nAvg:%f",a[0],a[n-1],avg(a));
    return 0;
}

void sort(int q[], int l, int r)
{
    if (l >= r) return;

    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j)
    {
        do i ++ ; while (q[i] < x);
        do j -- ; while (q[j] > x);
        if (i < j)
        {
            int stp;
            stp = q[i];
            q[i] = q[j];
            q[j] = stp;
        }
    }
    sort(q, l, j),sort(q, j + 1, r);
}

double avg(int a[])
{
    double z;
    for(int i=0;i<n;++i)    z += a[i];
    return z / n;
}

10个

100个

 再大就贴不下了

(2)

#include<stdio.h>

int add(int,int);

int main(void)
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",add(a,b));
}

int add(int x,int y)
{
    return x + y;
}

(3)

#include<stdio.h>

int max(int ,int);

int main(void)
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",max(a,b));
    return 0;
}

int max(int x,int y)
{
    if(x > y)   return x;
    else        return y;
}