实验报告
实验目的:
1. 熟练掌握函数的定义与使用
实验内容:
1. 有如下的一段程序,程序调用maxt()函数将两个数中的最大值输出,并根据最大值打印相应行的#号,请定义printat()函数、maxt()函数与printnx()函数并将主程序补充完整,使之正常运行。
#include <stdio.h>
void main()
{
int a=3,b=4,max;
printat();//打印一行@号
printf("打印ab行的#号\n");
max=maxt(a,b);
printnx(max);//打印max行#号
}
1).无参无返回值函数
函数名
printat
函数返回值
无返回值
函数参数
无参数
函数功能
打印一行@号
2)有参无返回值函数
函数名
printnx
函数返回值
无返回值
函数参数
有一个参数,(形式参数),是整型
函数功能
打印n行#号
3).有参有返回值函数
函数名
maxt
函数返回值
有返回值,函数类型为整型
函数参数
有两个整型的参数
函数功能
返回a与b中的最大值
阅读知识:.如何在主函数中使用用户自定义的函数
函数调用基础知识
用户自定义函数在main()函数中调用时的三种方式:
1. 函数语句
把函数调用作为一个语句,适用无返回值的函数
    printstar( );
2函数表达式
函数出现在一个表达式中,适用有返回值的函数
  c=2*max(a,b);
3函数参数
函数调用作为一个函数的实参,适用有返回值的函数
m=max(a,max(b,c))
#include <stdio.h>
void main()
{
    void printat();
    void printnx(int n);
    int maxt(int a,int b);
int a=3,b=4,max;
printat();
printf("打印ab行的#号\n");
max=maxt(a,b);
printnx(max);
}
void printat()
{
    printf("@@@@@@@@@\n");
}
void printnx(int n)
{
    for(int i=1;i<=n;i++)
    {
    printf(">####\n");
    }
}
int maxt(int a,int b)
{
    int z;
    if(a>=b)
        z=a;
    else
        z=b;
    return (z);
}
2. 有如下的一段程序,程序调用max3t()函数将三个数中的最大值输出,请定义max3t并将主程序补充完整,使之正常运行。
#include <stdio.h>
void main()
{
int a=3,b=4,c=8,max;
max=max3t(a,b,c);
printf("三个数中的最大值是%d",max);
}
函数名
max3t
函数返回值
有一个返回值,int型
函数参数
有三个整型的参数,
函数功能
返回三个数中的最大值
#include <stdio.h>
void main()
{
    int max3t(int x,int y,int z);
int a=3,b=4,c=8,max;
max=max3t(a,b,c);
printf("三个数中的最大值是%d",max);
}
int max3t(int x,int y,int z)
{
    int k;
    if(x>=y&&x>=z)
        k=x;
    else if(y>=x&&y>=z)
        k=y;
    else
        k=z;
    return (k);
}
3. 有如下的一段程序,程序调用g( )函数进行累加求和,请定义g( )函数并将主程序补充完整,使之正常运行。
#include <stdio.h>
void main()
{
printf("请输入你想求从到多少的和\n");
scanf("%d",&n);
sum=g(n); //如输入,则g(5)输出+2+3+4+5的和
printf("从到%d的和为%d",n,sum);
}
函数名
g
函数返回值
有一个返回值,int型
函数参数
+2+3+4+5+。。。g的和
#include <stdio.h>
void main()
{
    int g(int x);
    int n,sum;
printf("请输入你想求从到多少的和\n");
scanf("%d",&n);
sum=g(n); //如输入,则g(5)输出+2+3+4+5的和
printf("从到%d的和为%d",n,sum);
}
int g(int x)
{
    int sum2=0;
    for(int i=0;i<=x;i++)
    {
        sum2=sum2+i;
    }
    return (sum2);
}
4. 有如下的一段程序,程序调用isryear( )函数进行是否闰年判断,请定义isryear( )函数并将主程序补充完整,使之正常运行。
#include <stdio.h>
void main()
{
int year;
printf("请输入你要判断的年份:");
scanf("%d",&year);
if(isryear(year)==1)
  printf("\n%d是闰年",year);
else
  printf("\n%d不是闰年",year);
}
判断是否是闰年的函数
函数名
isryear
函数返回值
有一个,int型
函数参数
判断是否为闰年
#include <stdio.h>
void main()
{
    int isyear (int自定义函数怎么用c语言 year);
int year;
printf("请输入你要判断的年份:");
scanf("%d",&year);
if(isyear(year)==1)
  printf("\n%d是闰年",year);
else
  printf("\n%d不是闰年",year);
}
int isyear(int year)
{
    int a;
    if(year%4==0&&year%100!=0||year%400==0)
        a=1;
    else
        a=0;
    return (a);
}
5. 写一个判素数的isss()函数,在主函数输入一个整数,输出是否素数的信息
函数名
isss
函数返回值
有一个,int型
函数参数
一个
函数功能
判断一个数是否为素数
#include<stdio.h>
void main()
{
    int isss(int x);
    int a;
    scanf("%d",&a);
    if(isss(a)==1)
        printf("这个数为素数");
    else
        printf("这个数不是素数");
}
int isss(int x)
{
    int k,n=0;
    for(int i=2;i<=x;i++)
    {
        if(x%i==0)
        {
            n=n+1;
        }
    }
    if (n==1)
        k=1;
    else
        k=0;
    return (k);
}
6. 写一个交换两个变量值的函数
函数名
change
函数返回值
无返回值
函数参数
两个float类型的数
函数功能
交换两个数的值
然后在如下主函数中调用change函数,观察输出的结果,为什么?
void main()
{void change(float a,float b);
int m=30,n=40;
  change(m,n);
  printf("交换数据后的值m=%d,n=%d",m,n);
}
不能交换
7. 有如下的一段程序,程序调用sort( )函数对数组进行排序,请定义sort( )函数并将主程序补充完整,使之正常运行。
#include <stdio.h>
void main()
{
    int num[6]={3,4,6,2,10,1};
    sort(num,6);
    printf("排序后的数组为:");
    for(int i=0;i<=5;i++)
        printf("%d ",num[i]);
}
编写一个函数,实现数组的排序
函数名
sort
函数返回值
无返回值
函数参数
数组
函数功能
对数组进行从小到大的排序
#include <stdio.h>
void main()
{void sort(int num[],int n);
    int num[6]={3,4,6,2,10,1};
    sort(num,6);
    printf("排序后的数组为:");
    for(int i=0;i<=5;i++)
        printf("%d ",num[i]);
}
void sort(int num[],int n)
{
    int i,j,k,t;
    for(i=0;i<=n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(num[j]<num[k])
                k=j;
        t=num[k];num[k]=num[i];num[i]=t;
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。