上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
实验八 函数
作者:未知 申领版权
2012年01月24日 共有 1151 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    实验八 函数
    【目的与要求】
    1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。
    2.了解主调函数和被调函数之间的参数传递方式。
    【上机内容】
    【一般示例】
    【例1】写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。
    源程序如下:
    mian()
    {
    int number;
    printf(“请输入一个正整数:\n”);
    scanf(“%d”,&number);
    if (prime(number))
    printf(“\n %d是素数.”,number);
    else
    printf(“\n %d不是素数.”,number);
    }
    
    int prime(number) /*此函数用于判别素数*/
    int number;
    {
    int flag=1,n;
    for(n=2;n<number/2&&flag==1;n )
    if (number%n==0)
    flag=0;
    return(flag);
    }
    判断素数的算法,我们在以前学习循环的时候已经学过了,在这里只是把这个算法用函数的形式表示出来。这里我们要注意函数的定义、声明的方法和格式。
    【例2】写一函数,是给定的一个二位数组(4×4)转置,即行列互换。
    源程序如下:
    /*矩阵的转置*/
    #define N 4
    int array[N][N];
    convert(array)
    int array[4][4];
    {
    int i,j,t;
    for (i=0;i<N;i )
    for (j=i 1;j<N;j )
    {
    t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t;
    }
    }
    
    main()
    {
    int i,j;
    printf(“输入数组元素:\n”);
    for (i=0;i<N;i )
    for (j=0;j<N;j )
    scanf(“%d”,&array[i][j]);
    printf(“\n数组是:\n”);
    for (i=0;i<N;i )
    {
    for (j=0;j<N;j )
    printf(“%5d”,array[i][j]);
    printf(“\n”);
    }
    conver(array);
    printf(“转置数组是:\n”);
    for (i=0;i<N;i )
    {
    for (j=0;j<N;j )
    printf(“%5d”,array[i][j]);
    printf(“\n”);
    }
    }
    本例题用数组作为函数参数,大家要注意数组作为函数参数时的用法。
    【典型示例】
    【例1】写两个函数,分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个正数由键盘输入。
    源程序如下:
    #include "stdio.h"
    hcf(u,v)
    int u,v;
    {
    int a,b,t,r;
    if(u>v)
    {
    t=u; u=v; v=t;
    }
    a=u; b=v;
    while((r=b%a)!=0)
    {
    b=a; a=r;
    }
    return(a);
    }
    
    lcd(u,v,h)
    int u,v,h;
    {
    return(u*v/h);
    }
    
    main()
    {
    int u,v,h,l;
    scanf("%d,%d",&u,&v);
    h=hcf(u,v);
    printf("H.C.F=%d\n",h);
    l=lcd(u,v,h);
    printf("L.C.D=%d\n",l);
    }
    这是一个十分典型的算法,同学们一定要认真分析、学习。
    【例2】写一函数,用“起泡法”对输入的10个字符按由小到大顺序排序。
    源程序如下:
    /*起泡法排序*/
    #define N 10
    char str[N];
    main()
    {
    int i,flag;
    for (flag=1; flag = =1;)
    {
    printf(“\n输入字符串,长度为10:\n”);
    scanf(“%s”,&str);
    if (strlen(str)>N)
    printf(“超过长度,请重输!”);
    else
    flag = 0;
    }
    sort(str);
    printf(“\n排序结果:”):
    for (i=0;i<N;i )
    printf(“%c”,str[i]);
    }
    
    sort(str)
    char str[N];
    {
    int i,j;
    char t;
    for (j=1;j<N;j )
    for (i=0;(i<N-j)&&(str[i]!=’\0’);i )
    if (str[i]>str[i 1])
    {
    t=str[i]; str[i]=str[i 1]; str[i 1]=t;
    }
    }
    【例3】用牛顿迭代法求根。方程为ax3 bx2 cx d=0,系数a、b、c、d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。
    源程序如下:
    /*牛顿迭代法解方程*/
    #include “math.h”
    float solut(a,b,c,d)
    float a,b,c,d;
    {
    float x=1,x0,f,f1;
    do
    {
    x0=x;
    f=((a*x0 b)*x0 c)*x0 d;
    f1=(3*a*x0 2*b)*x0 c;
    x=x0-f/f1;
    }while(fabs(x-x0)>=1e-5);
    return(x);
    }
    
    main()
    {
    float a,b,c,d;
    printf(“\n输入方程的系数a,b,c,d\n”);
    scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);
    printf(“\n方程是:%5.2fx^3 %5.2fx^2 %5.2fx %5.2f=0”,a,b,c,d);
    printf(“\nX=%10.7f\n”,solut(a,b,c,d));
    }
    在此题目中,方程的系数是未知的,这是与以前我们用牛顿迭代法的时候不同的地方。但原理、算法是相同的,这里我们用函数来求方程的根。也就是把牛顿迭代法用函数的形式表现出来。
    【作业】
    1.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
    main()
    {
    int x,y;
    printf("%d\n",sum(x y));
    int sum(a,b);
    {
    int a,b;
    return(a b);
    }
    }
    2.定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?
    3.编写一个对n个数据从大到小的排序C函数,再编写一个计算最后得分的C函数,计算方法是:去除一个最高分,去除一个最低分,其余的平均分为参赛选手的最后得分。并在主函数中调用它们对有n个评委评分,m个选手参赛的最后得分,从大到小排序输出。
    4.编写一个计算n!的函数,用主函数调用它,使之输出7阶杨辉三角形:
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    1 6 15 20 15 6 1
    1 7 21 35 35 21 7 1
    杨辉三角形是二项展开式(a b)n的系数,共有n 1项,n=0,1,…。杨辉三角形在数学上具有重要的意义,在高中阶段已学过,系数是按照公式:am= ,其中am是展开式中的第m项系数。
    5.编写一个程序,包括主函数和如下子函数。
    (1) 输入10个无序的整数;
    (2) 用起泡方法从大到小排序;
    (3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入适当位置。
    分析:input函数完成10个整数的录入。sort函数完成起泡法排序,search函数完成输入数的查找。
    

    

 

相关新闻

正切函数
余弦函数
求正弦函数的周期
正弦函数(2)
正弦函数(1)
计算并熟记常用三角函数值
常用角的正弦值
用口诀记简化公式
简化公式
同角三角比的关系

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》