C语言实验报告(四)

时间:2024.4.21

C语言实验报告(四)

一、实验目的

1.  掌握C语言中函数和模块

2.  掌握怎样定义函数,如何调用或使用函数,如何声明函数

3.  掌握函数的参数,了解在函数调用时,参数是如何传递的

4.  在使用函数的过程中怎样确定函数的参数

5.  如何使用局部变量和全局变量

二、实验内容

1. 偶数判断

描述: 编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。编写一个程序,从键盘输入m个整数,分别调用用户自定义函数来判断这m个整数的奇偶性。

输入: 第一行为一个整数m,表示要判断m个整数的奇偶性;紧接着是m行,每行一个整数。

输出:有m行,分别对应输入的第2到第m+1行的整数的奇偶性

样例输入:   2

1

6

样例输出:  奇数

偶数

·程序代码:

#include"stdio.h"

int isEven(int a)

{

    if(a%2==0)

        return 1;

    else

        return 0;

}

int main()

{

    int m,i,b;

    scanf("%d",&m);

        for(i=1;i<=m;i++)

        {

            scanf("%d",&b);

            if(isEven(b)==1)

                printf("偶数\n");

            else

                printf("奇数\n");

        }

                return 0;

}

2. 温度转换

描述: 编写一个用户自定义函数,函数的功能是:将华氏温度转F换为摄氏温度C。转换公式为:C=5*(F-32)/9。编写一个程序,输出指定范围的华氏温度与摄氏温度的对照表,其中华氏温度步长为4。

输入: 两个空格隔开的整数n,m(且0<n<m<1000)

输出: 华氏温度与摄氏温度的对照表

样例输入:  32 45

样例输出:  32              0.00

36              2.22

40              4.44

44              6.67

·程序代码:

#include "stdio.h"

float conver(int f)

{

    return 5*(f-32)/9.0;

}

int main()

{

    int n,m,i;

    scanf("%d%d",&n,&m);

    for(i=n;i<=m;i+=4)

        printf("%d%10.2f\n",i,conver(i));

    return 0;

}

3.最大值函数

描述:编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。

输入:第一行为N,表示有N组数据,接下来是N行,每行是5个用空格隔开的整数(在VC++6.0 int范围)。

输出:有N行,每行是对应输入的5个整数的最大值。

样例输入:  3

1 2 3 4 5

5 4 3 2 1

1 2 5 3 4

样例输出:  5

5

5

·程序代码:

#include "stdio.h"

int max(int a, int b, int c )

{

    int t;

    t=a;

    if(b>t)

        t=b;

    if(c>t)

        t=c;

    return t;

}

int main()

{

    int n,a,b,c,d,e,i;

    scanf("%d",&n);

    for(i=1;i<=n;i++)

    {

        scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);

        printf("%d\n",max(a,b,max(c,d,e)));

    }

    return 0;

}

4. 三位数数字排序

描述: 对于给定的若干个三位正整数,将它们的各位上的数字按由小到大的顺序输出。要求,写一个函数,能将其整型参数的各位数字按照由小到大进行输出。主函数完成对输入的若干个三位数,分别调用该函数,完成指定的输出。

输入: 若干行,每行有一个三位正整数,输入为0结束。

输出: 有若干行,依次对应于非0的整数,将相应三位正整数的数字由小到大输出,数字间没有空格。

样例输入:  123

987

670

0

样例输出:  123

789

067

·程序代码:

#include "stdio.h"

int main(void)

{

    int n,a[4],xx,sum;

    scanf("%d",&n);

    while(n!=0)

    {

        int i,j;

        for(i=1;i<=3;i++)

        {

            a[i]=n%10;

            n/=10;

        }

        for(i=1;i<=3;i++)

        {

            for(j=i;j<=3;j++)

            {

                if (a[i]>a[j])

                {

                xx=a[j];

                a[j]=a[i];

                a[i]=xx;

                }

            }

        }

        for(i=1;i<=3;i++)

        {

            printf("%d",a[i]);

        }

            printf("\n");

            scanf("%d",&n);

    }

    return 0;

}

5.排列数计算

描述: sy21表示从m个元素中抽出n个元素的排列的个数。

计算公式为:sy2编写一个用户自定义函数,该函数有一个整数参数,函数的功能是求解这个整数的阶乘,函数的返回值为这个整数的阶乘。编写一个程序,从键盘输入m、n值,分别两次调用用户自定义函数来求解sy21.jpg

输入: 多行测试数据,每行两个用空格隔开的整数,0  0 表示结束。

输出: 有多行,对应于非0  0行的排列值。

样例输入:  5 3

8 2

0 0

样例输出:  60

56

·程序代码:

#include "stdio.h"

int main(void) 

    double n,m,t; 

    double x1,x2,i,k,kk; 

    scanf ("%lf%lf",&m,&n); 

    while (n!=0&&m!=0) 

    {   

        x1=1; 

        /*if(m<n) 

        { 

        t=m; 

        m=n; 

        n=t; 

        } 

        */

        for(i=1;i<=m;i++) 

        { 

            x1*=i; 

        } 

        k=m-n; 

        x2=1; 

        for(i=1;i<=k;i++)

        { 

            x2*=i; 

        } 

        kk=x1/x2; 

        printf("%.0lf\n",kk);

        scanf ("%lf%lf",&m,&n); 

    }

    return 0; 

}

6.素数对

描述: 哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.做好了这件实事,就能说明这个猜想是成立的.由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的,而且素数对中的第一个数不大于第二个数.

输入:输入中是一些偶整数M(6<M<=10000).

输出:对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数(要求这两个素数是不等的)。

样例输入:  20

30

40

46

样例输出:  7 13

13 17

17 23

17 29

·程序代码:

#include "stdio.h"

int prime(int n)

{

    int i;

    for (i=2;i<n;i++)

        if(n%i==0)

            return 0;

        return 1;

}

int main()

{

    int m,i;

    while(scanf("%d",&m)==1)

    for(i=m/2;i>=2;i--)

        if(prime(i)&&prime(m-i)&&i!=m-i)

        {

            printf("%d %d\n",i,m-i);

            break;

        }

        return 0;

}

7.函数表达式计算

描述:计算下列表达式的值:

hsbds

输入:输入x和n的值,其中x为非负实数,n为正整数。

输出:输出f(x,n),保留2位小数。

样例输入: 3 2

样例输出: 2.00

·程序代码:

#include "math.h"

#include "stdio.h"

/*

f(x,1)=sqrt(1+x);

f(x,2)=sqrt(2+sqrt(1+x))=sqrt(2+f(x,1));

f(3,x)=sqrt(3+sqrt(2+qrt(1+x)))=sqrt(3+f(x,2));

......

f(x,n)=sqrt(n+f(x,n-1));*/

double f(double x,int n)

{

    if(n>1)

        return sqrt(n+f(x,n-1));

    else

        return sqrt(1+x);

}

int main()

{

    int n;

    double x;

    scanf("%lf%d",&x,&n);

    printf("%.2f\n",f(x,n));

    return 0;

}

8. 递归公约数

描述:递归形式的公约数定义如下:

dggys

使用此定义求两个整数的最大公约数。

输入: 有多行,每行为两个用空格隔开的整数。

输出: 对应的有多行,每行为对应输入的两个整数的最大公约数。

样例输入: 12 6

          9  5

          11 3

样例输出: 6

1
1

·程序代码:

# include "stdio.h" 

int gcd(int m, int n ) 

    if(m%n==0)

        return n; 

    else

        gcd(n,m%n); 

int main(void) 

    int a,b; 

    while (scanf("%d%d",&a,&b)==2) 

    { 

        printf("%d\n",gcd(a,b)); 

    } 

    return 0;

}


第二篇:C语言上机实验四(实验报告)


仲恺农业工程学院实验报告纸

计算机科学与工程(院、系)计算机专业计机093微机原理与接口技术

学号 2009102143   姓名    实验日期 20##-6-6  教师评定          

实验四  竞赛抢答器

一、实验目的

1、了解微机化竞赛抢答器的基本原理。

2、进一步学习使用并行接口。

二、实验内容

图1为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号(0~7)显示出来,并使微机扬声器响一下。

图1 硬件连接图

表1 LED 数码表

三、编程提示

设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。根据读取数据可判断其组号。从键盘上按空格键开始下一轮抢答,按其它键程序退出。

四、参考流程图(见图2)

图2 程序流程图

五、实验代码

data segment

   led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h

data ends

code segment

   assume cs:code,ds:data

start:

   mov ax,data

   mov ds,ax

   mov dx,28bh

   mov ax,89h

   out dx,al

   mov bx,offset led

sss:

   mov dx,28ah

   in al,dx

   or al,al

   je sss

   mov cl,0ffh

rr:

   shr al,1

   inc cl

   jnc rr

   mov al,cl

   xlat

   mov dx,288h

   out dx,al

   mov dl,7

   mov ah,2

   int 21h

vai:

   mov ah,1

   int 21h

   cmp al,20h

   jne eee

   mov al,0

   mov dx,288h

   out dx,al

   jmp sss

eee:

   mov ah,4ch

   int 21h

code  ends

   end start

      

      

六、实验总结

     通过本次实验,我懂得了如何控制8255芯片工作,当一个逻辑开关的值置为“1”,8255根据输入,控制七段数码管显示相应的数字。

更多相关推荐:
c语言实验报告

四川师范大学计算机科学学院C语言程序设计实验手册20xx年2月年级20xx级专业电子商务班级04班姓名罗桂清学号20xx110438指导教师廖雪花1C语言程序设计实验课程简介课程名称C语言程序设计实验课程性质专...

c语言实验报告

课程设计报告学院课程名称专业班级学生姓名学号指导教师完成时间年月目录1菜单选择程序课程设计2学生信息管理系统课程设计题目1菜单选择程序课程设计一课程设计内容与要求1主菜单编写程序能够显示以下的主菜单主菜单1字母...

C语言实验报告书写格式及模板

大学学院实验报告专业名称实验室实验课程C实验名称姓名学号同组人员实验日期语言程序设计程序设计12345678

c语言实验报告模板完成版

高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运...

C语言实验报告(八)

华北水院高级语言程序设计C语言实验报告20xx20xx学年第二学期20xx级专业班级学号一实验题目文件二实验目的略三实验内容1程序验证用记事本编辑文本文件file1txt分析一下程序的功能及结果并验证inclu...

大学C语言实验报告答案

郑州大学09级C语言实验报告答案实验一1includeltstdiohgtvoidmainintabcscanfquotdddquotampaampbampcprintfquotsumdnquotabc2inc...

C语言实验报告样本

实验报告课程名称C语言程序设计实验项目顺序结构程序设计实验仪器计算机系别机电工程学院专业机械设计制造及其自动化班级学号机械110120xx010008学生姓名郭奎宇实验日期20xx年10月24日成绩指导教师一实...

C语言实验报告(五)

C语言实验报告五一实验目的1掌握使用C语言中数组的方法2掌握如何定义数组如何引用数组元素3掌握二维数组的元素在内存中的存放方式4掌握什么是字符串字符串结束符的作用5实现字符串的存储和操作包括字符串的输入和输出6...

《C语言》课内实验报告7

C语言实验报告一实验题目结构体的应用二实验目的1进一步掌握结构体变量数组的定义和使用方法掌握结构体与指针的应用2学习共用体的概念和使用3学习链表的概念和使用三实验内容1有6个学生每个学生的数据包括学号姓名性别4...

C语言贪吃蛇实验报告

C语言程序设计实训报告姓名专业班级指导教师二011年7月14日11112目录实训目的和要求1实训目的和任务1实训要求122122实训任务内容1游戏规则1流程设计23313233软件使用说明3编辑程序主要软件3编...

c语言三种基本控制结构实验报告

学生实验报告实验课名称C语言实验项目名称三种基本控制结构专业名称班学级号学生姓名教师姓名月日实验日期年月日实验室名称六实验中遇到的问题解决方法及体会在实验过程中写的很多程序显示错误的结果做起来不熟练体会到平时上...

C语言程序设计实验报告9

C语言程序设计实验报告九专业计算机科学与技术班级卓越工程师班日期20xx年12月23日实验组别第一组成绩第九次实验结构与联合实验指导教师李开学生姓名学号实验名称结构与联合实验一实验目的1熟悉和掌握结构的说明和引...

c语言实验报告(38篇)