C程序设计上机实验报告6

时间:2024.4.21

C程序设计实验报告

实验名称:函数程序设计                   学时安排:2学时

实验类别:上机操作型                      实验要求:1人1组                   

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

一、实验目的

1. 熟练掌握函数的定义和调用;

2. 熟练掌握使用函数编写程序;

3. 掌握函数的实参、形参和返回值的概念及使用;

4. 掌握单步调试进入函数和跳出函数的方法。

二、实验设备介绍

软件需求: Visual C++ 6.0或CFree3.5以上版本

硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。

三、实验内容

1. 输入x,计算并输出分段函数sign(x)的值。要求定义和调用函数sign(x)实现该分段函数。x大于、等于和小于0时sign(x)的值分别为1、0和-1。输入输出示例如下(运行三次):

Enter x:10                        Enter x:0                          Enter x:-5

sign(10)=1                          sign(0)=0                            sign(-5)=-1

2. 给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留两位小数)。要求定义和调用函数dist(x1,y1,x2,y2)计算两点间的距离。输入输出示例如下:

Input(x1,y1): 10  10

Input(x2,y2): 200  100

distance = 210.24

3. 输入2 个正整数a 和n, 求a+aa+aaa+aa?a(n 个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa?a(n 个a)。例如,fn(3,2)的返回值是33。例:括号内是说明

Enter a and n:8 5 (a=8, n=5)

sum=98760 (8+88+888+8888+88888)

4. 输入2 个正整数m 和n(1<=m, n<=500),统计并输出m 和n 之间的素数的个数以及这些素数的和。要求定义并调用函数prime(m)判断m 是否为素数。例:括号内是说明

Enter m and n: 1  10 (m=1, n=10)

count=4, sum=17 (1 到10 之间有4 个素数:2,3,5,7)

Enter m and n: 14  16 (m=14, n=16,这里是第二次运行)

count=0, sum=0 (14 到16 之间没有素数)

5. 输入2 个正整数m 和n(1<=m,n<=1000),输出m 到n 之间的所有完数(完数就是因子和与它本身相等的数)。要求定义并调用函数factorsum(number),它的功能是返回number 的因子和。例如,digitsum(12)的返回值是16(1+2+3+4+6)。输出语句:printf("%d ", i);例:括号内是说明(运行两次)

Enter m and n: 20  500 (m=20, n=500)                          Enter m and n: 1  100 (m=1, n=100)

28 496                                                                          1 6 28

6. 输入1 个正整数n,将其转换为二进制后输出。要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。输出语句:printf("%d");

例:括号内是说明(运行两次)

Enter n: 100                                             Enter n: 0

1100100                                                   0

四、程序清单

第一题

#include<stdio.h>

int sign(int n,int x)

{

    if(x>0)

    n=1;

    else if(x==0)

    n=0;

    else

    n=-1;

    return n;

}

int main()

{

    int i,s;

    int sign(int n,int x);

     printf("Enter x:");

     scanf("%d",&i);

     s=sign(s,i);

     printf("sign(%d)=%d\n",i,s);

     return 0;

}

第二题

#include<stdio.h>

#include<math.h>

double dist(double x1,double y1,double x2,double y2)

{

    double d,j,k;

    j=pow((x2-x1),2);

    k=pow((y2-y1),2);

    d=sqrt(j+k) ;

    return d;

}

int main()

{

    double x1,y1,x2,y2,distance;

    printf("Input(x1,y1):");

    scanf("%lf%lf",&x1,&y1);

    printf("Input(x2,y2):");

    scanf("%lf%lf",&x2,&y2);

    distance=dist(x1,y1,x2,y2);

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

    return 0;

}

第三题

#include <stdio.h>

void main()

{

int i, n;

long a, sn;

long fn(long a, int n);

printf("Enter a and n:");

scanf("%ld%d", &a, &n);

sn=0;

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

 sn=sn+fn(a,i);

printf("sum=%ld\n",sn);

}

long fn(long a, int n)

{

  long sum;

  int i;

  sum=0;

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

    sum=sum*10+a;

  return sum;

}

第四题

#include "stdio.h"

#include "math.h"

int main( )

{

int count, i, m, n, sum;

int prime(int m);

printf("Enter m and n:");

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

sum=0;

count=0;

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

{

  if(prime(i)!=0)

  {

    sum=sum+i;

    count++;

  }

}

printf("count=%d, sum=%d\n", count, sum);

}

 int prime(int x)

 {

    int i;

    if(x==1)

    return 0;

    for(i=2;i<=sqrt(x);i++)

        if(x%i==0)

       return 0;

        return 1;

 }

第五题

#include "stdio.h"

int main( )

{

  int i, m, n;

  int factorsum(int number);

  printf("Enter m and n:");

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

  if(m==1)

  printf("1 ");

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

   {

      if(factorsum(i)==i)

      printf("%d ",i);

   }

   printf("\n");

    return 0;

}

int factorsum(int n)

{

    int i,sum=0;

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

       {

        if(n%i==0)

        sum=sum+i;

       }

        if(sum==n)

        return sum ;

}

五、运行结果

第一题

第二题

第三题

第四题

第五题

 

六、实验心得

1.函数定义中出现的是形参,函数调用中出现的是实参。函数名后面一定有一对圆括号,函数定义后面一定没有分号。函数定义告诉编译系统三件事:函数名,函数有几个参数,都是啥类型的,函数返回值的类型。函数返回值的类型不定义,则默认是整型的(int)。

2.被调函数应实现一个具体的功能,如求n!、排序等。形参是被调函数的输入,从主调函数的实参处得到数据;return是函数的输出,将函数值返回到主调函数的调用处,一般不在被调函数中进行输入、输出操作。

3.在主调函数中实现输入、调用函数(处理)和输出操作。

4.在调用函数时注意分清形参和实参。


第二篇:C程序设计上机实验报告07


C程序设计实验报告

实验名称:控制结构综合程序设计 学时安排:2课时 实验类别:上机操作型 实验要求:1人1组  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

一、实验目的

1. 熟练掌握分支结构、循环结构的综合应用;

2. 熟练掌握使用函数编写程序的方法;

3. 掌握结构化程序设计的思想及方法;

4. 熟练掌握C程序的调试方法。

二、实验设备介绍

软件需求: Visual C++ 6.0或CFree3.5以上版本

硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。

三、实验内容

1. 输入一个十进制,转换成对应的八进制数和十六进制数并输出。注意不能直接用%o和%x输出结果,可以参考整数逆序输出的方法,按位输出。输入输出示例如下:

Input a decimal: 31

The octal is 37

The hexadecimal is 1F

2. 改正程序error06_2.cpp中的错误。改程序实现功能,输入两个整数,分别将其逆向输出,要求定义并调用函数fun(n),它的功能是返回n的逆向值。如fun(123)的返回值为321。输入输出结果如下面4行所示: 123的逆向是321

-910的逆向是-19

要求先读该源程序,并理解其中的算法。然后把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。

注释示例如下:

int i; /*循环控制变量不能定义为double类型*/

3. 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和。例如6=3+3,8=3+5,…,18=5+13。将100~200之间的偶数都表示成2个素数之和,打印时一行打印5组。要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。

四、程序清单

第一题

#include<stdio.h>

void showoct(int n)

{

if(n>7)

showoct(n/8);

printf("%d",n%8);

}

void showhex1(int n)

{

switch(n)

{

case 10: putchar('A'); break; case 11: putchar('B'); break; case 12: putchar('C'); break; case 13: putchar('D'); break; case 14: putchar('E'); break; case 15: putchar('F'); break; default: printf("%d",n); }

}

void showhex(int n)

{

if(n>15)

{

showhex(n/16);

showhex1(n%16);

}

else

showhex1(n%16);

}

int main()

{

int n;

scanf("%d",&n);

printf("The octal is ");

showoct(n);

printf("\n");

printf("The hexadecimal is "); showhex(n);

printf("\n");

return 0;

}

第二题

#include <stdio.h>

int main(void )

{

int m1,m2;

int fun(int m1); /*函数首部要定义*/

int fun(int m2);

scanf("%d%d", &m1, &m2);

printf("%d的逆向是%d\t", m1, fun(m1));

printf("%d的逆向是%d\n", m2, fun(m2));

return 0;

}

int fun(int n)

{

int m,y;

y = 0;

if(n>0) /*n>0时赋给m,使m的值大于0*/

m = n;

else

m = -n;

while(m!=0) /*应该是m不为0时进行运算*/ {

y = y * 10 + m%10; /*逆序输出,m要取余*/ m = m/10; /*m除以10,减少位数*/ }

if(n>=0)

return y;

else

return -y;

}

第三题

#include<stdio.h>

#include<math.h>

int prime(int x)

{

int i;

for(i=2;i<=sqrt(x);i++)

if(x%i==0)

return 0;

return 1;

}

int main()

{

int i,j,count=0;

for(i=100;i<=200;i=i+2)

{

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

if(prime(j)==1&&prime(i-j)==1) {

printf("%d=%d+%d ",i,j,i-j); count++;

if(count%5==0)

printf("\n");

break;

}

}

return 0;

}

五、运行结果

六、实验心得

更多相关推荐:
C++程序设计实验报告

C++程序设计实验报告学号:姓名:班级:指导老师:实验一、字符和格式的输出实验一,实验目的1、重点把握各种内部数据类型、数值和逻辑运算,各种表达式、函数声明、定义和调用。2、掌握过程控制编程方法,正确编制多重循…

程序设计实验报告模板

C语言程序设计实验报告1实验目的(1)掌握函数的定义方法、调用方法、参数说明以及返回值;(2)掌握实参与形参的对应关系,以及参数之间的值传递的方式;(3)掌握函数的嵌套调用及递归调用的设计方法;(4)在编程过程…

Java程序设计实验报告

学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指导教师:20XX20XX学年第二学期金陵科技学院教务处制实验报告书写要求实验报告…

程序设计综合实验报告册

西南交通大学程序设计综合实验实验地点实验学期学生班级学生学号学生姓名任课教师龚勋信息科学与技术学院20xx年4月实验一ATM机用户操作界面业务逻辑编写实验目的及内容1根据ATM的工作流程编写用户界面掌握文本用户...

C程序设计实验报告

C语言程序设计实验报告学号不告诉你哦班级信管一班姓名你猜猜哈哈一实验题目一编程实验猜数问题输入两个整数并求这两个整数的和输入所猜的结果如果输入数比正确的结果要大提示猜大了如果输入数比正确的结果要小提示猜小了当猜...

C程序设计实验报告5

工学院工业设计专业10级20xx至20xx学年度第1学期学号2104021638姓名杨芹芹20xx年9月22日第34节综合楼325教室

C程序设计实验报告2

院专业20xx级20xx至20xx学年度第1学期学号姓名20xx年9月22日第34节综合楼325教室

C#程序设计实验报告

实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。纸张一律采用A4的纸张。实验报告书写说明实验报告中实验目的和要求、实验仪器和设备、…

程序设计实验报告

兰州商学院陇桥学院工学系课程设计报告设计题目:迷宫与栈问题系别:工学系专业(方向):年级、班:学生姓名:学生学号:指导教师:目录一、系统开发的背景...1二、系统分析与设计...1(一)系统的分析...1(二)…

程序设计实践 实验报告

程序设计基础课程设计通讯录管理系统院系:计算机学院班级:信息工程1班姓名:学号:合作者:指导教师:20##年5月3日目录摘要.11.研究背景及意义...1第一章系统设计说明以及功能分析.21.1系统简述...2…

C语言程序设计实验报告——通讯录

C语言程序设计实验报告通讯录目录:课程设计任务书......................................................................2目录:.......…

蔡宇航实验报告——子程序设计

实验六子程序设计课程名称实验项目名称实验时间班级姓名学号实验目的掌握程序设计中的子程序的设计实验环境WIN7MASM轻松汇编实验内容及过程编程实现已知数据段定义如下datasegmentxdw12ydw34wd...

程序设计实验报告(37篇)