第三次试验报告

C程序设计实验报告

实验项目:

1、用for语句实现循环
2、用while循环语句实现循环
3、用do-while语句实现循环
4、用while语句和for语句配合实现循环
5、用for语句嵌套实现循环

姓名:陈峰      实验地点: 514实验室       实验时间:2019年4月17日

一、实验目的与要求

5.3.1、用for语句实现循环

掌握for语句实现循环的方法。

循环嵌套的使用

5.3.2、用while循环语句实现循环

掌握while语句实现循环的方法;

5.3.3、用do while语句实现循环

掌握do  while语句实现循环的方法。

5.3.4、用while语句和for语句配合实现循环

掌握while语句和for语句的配合实现循环的方法。

5.3.5、用for语句嵌套实现循环

掌握for语句嵌套实现循环的方法。

掌握continue语句的用法。

二、实验内容

5.3.1.1  、1.问题描述:编写一程序,求出1,1+2,1+2+3……数列中前n项的值。

2、实验代码:

#include<stdio.h>
#include<math.h>
main()
{
    int i,j=0,k,s=0;
    printf("Enter a number: ");
    scanf("%d",&k);
    for(i=1;i<=k;i++)
    {
        s=s+j+1;
        printf("%d",s);
        j++;
    }
    }
    

3、运行结果如下:

4、问题分析:

本题讲的是一个累加求和的概念,只要知道逐级累加这个概念就好做,难点就是在于对for循环的简单运用,这个题不难。

5.3.1.2  、 1、问题描述:编写一程序,求数列1,-3!,5!,-7!···(-1)^n-1(2n-1)!前n项的和。n的值是由键盘输入。

2、实验代码:

#include<stdio.h>
main()
{
    int n,i,j,sign=1;
    float fac,sum;
    printf("please input value of n:");
    scanf("%d",&n);
    sum=0.0;
    for(i=1;i<=n;i++)
    {
        fac=1.0;
        for(j=1;j<=2*i-1;)
        {
        fac=fac*j;
        j=j+1;
        }
        fac=fac*sign;
        sum=sum+fac;
        sign=-sign;

    }
    printf("sum=%.0f\n",sum);
}

3、运行结果如下:

4、问题分析:这个题目一开始我按书上的流程做发现做不出来,后来我就直接看着那个程序框按照它的步骤来做,刚写好发现也出不来,后来仔细检查发现for语句中少了一个{},所以还是得细心啊。

5.3.2.1  、 1、问题描述:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

2、实验代码:

#include<conio.h>
#include<stdio.h>
main()
{
    float x,max,min;
    printf("please input scores:");
    scanf("%f",&x);
    max=min=x;
    while(x>=0)
    {
        if(x>max) max=x;
        if(x<min) min=x;
        scanf("%f",&x);
    }
    printf("\nmax=%f\nmin=%f\n",max,min);
}

3、运行结果如下:

4、问题分析:本题是在一组数据中找出最大值和最小值,只要设置三个变量就可以,两两比较筛选出数据中相对较大较小的量分别赋值最后就可以得出最大最小值。本题的关键就是要设一个大于0的条件。

5.3.2.2  、 1、问题描述:求所有的水仙花数(水仙花数是一个3位数的自然数,该数个位的立方和等于该数本身,如153为水仙花数1^3+5^3+3^3=153)。

2、实验代码:

#include<stdio.h>
main()
{
    int x,y,z;
    int k=100;
    while(k<=999)
    {
        x=k/100;
        y=(k/10)%10;
        z=k%10;
        if(k==x*x*x+y*y*y+z*z*z)
        printf("%d\n",k);
        k++;
    }
}

3、运行结果如下:

4、问题分析:本题求得是水仙花数,主要就是求一个数的个十百位然后将他们立方相加,初始赋个值,还要限定大小范围,就可以求出水仙花数。最主要的还是那个whlie的条件老是会写一个等于号,正确的应该是两个,因为C语言与数学还是不一样的。

5.3.3  、 1、问题描述:问题的简单描述:求满足下列不等式的n的最小值。其中,value是大于1的任何数。1+1/2+1/3+……+1/n>value。

2、实验代码:

#include<stdio.h>
main()
{
    float sum,value;
    int n;
    printf("Input value:");
    scanf("%f",&value);
    sum=0.0;
    n=0;
    do
    {
        ++n;
        sum+=1.0/(float)n;
    }
    while(sum<value);
    printf("n=%d",n);
}

3、运行结果如下:

4.问题分析:这个题不难,只要了解do-while语句的基本格式就很能很好的解决本题。

5.3.4   、  1、问题描述:输入四个数字字符,并把其转换为四位十进制整数后显示出来。

2、实验代码:

#include<stdio.h>
main()
{
    char c;
    int k,data;
    data=0;
    for(k=0;k<4;k++)
    {
        while(1)
        {
            c=getchar();
            if(c>=‘0‘&&c<=‘9‘)
            break;
        }
    if(k==0)
    data+=(c-‘0‘)*1000;
    if(k==1)
    data+=(c-‘0‘)*100;
    if(k==2)
    data+=(c-‘0‘)*10;
    if(k==3)
    data+=(c-‘0‘)*1;
    }
    printf("Data=%d",data);
}

3、运行结果如下:

4、问题分析:本题就是用到了一个for与if语句的结合,一开始我就是吧双单引号给写成了中文的所以出不来结果。

5.3.5.1   、 1、问题描述:有100匹马,要驮100担货物,其中,1匹大马可以驮3担,一匹中马可以驮两担,两匹小马可以驮1担,请问,大马,中马和小马可以有多少种组合。

2、实验代码:

#include<stdio.h>
main()
{
    int m,n,k;
    int sum=0;
    printf("各种驮法如下:\n");
    for(m=1;m<=100;m++)
    for(n=1;n<=100-m;n++)
    {
        k=100-m-n;
        if((k%2==0)&&(3*m+2*n+0.5*k==100))
        {
            printf("大马%3d匹;中马%3d匹;小马%3d匹;.\n",m,n,k);
            sum++;
        }
    }
    printf("共有%d种驮法.\n",sum);
}

3、运行结果如下:

4、问题分析:本题主只要找好大中小马的比例系数,然后设定总的马的个数为100匹,用for语句就很好解决了。

5.3.5.2   、 1、问题描述:编写程序,求一正整数等差数列的前6项的和,该数列前4项之和是26,前4项之积是880。

2、实验代码:

#include<stdio.h>
main()
{
    int a,b,c,d,i,sum=0;
    for(a=1;a<=26;a++)
        for(d=1;d<=26;d++)
        {
            b=4*a+6*d;
            if(b!=26)
            continue;
            else
            {
            c=a*(a+d)*(a+2*d)*(a+3*d);
            if(c!=880)
            continue;
            else
            for(i=0;i<6;i++)
            {
                printf("%d,",a+i*d);
                sum=sum+(a+i*d);
            }
            }
          }
          printf("\n数列的前6项的和:%d\n",sum);
}

3、运行结果如下:

4、问题分析:本题主要是让我们熟练掌握continue语句的用法,合理运用for语句就能很好的解决本题。

5.3.5.3   、 1、问题描述:有30个学生一起买小吃,共花钱50元,其中,每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数共有多少种不同的解(去掉某类学生数为0的解)

2、实验代码:

#include<stdio.h>
main()
{
    int x,y,z,sum;
    sum=0;
    for(x=1;x<30;x++)
    {
        for(y=1;y<30;y++)
        {
        z=30-x-y;
        if((z!=0)&&(3*x+2*y+z==50))
        {
            printf("大学生%3d\t中学生%3d\t小学生%3d\n",x,y,z);
            sum=sum+1;
        }
        else
        continue;
    }
    }
    printf("sum=%d\n",sum);
}

3、运行结果如下:

4、问题分析:本题大中小学生买零食的不同情况,和前面的大中小马的问题可以说是一样的原理,唯一的不同就是多了一个continue语句。但过程都是一样的。

三、实验小结

这次实验当中遇到的问题主要还是在算法的格式,老是会丢三落四,不是少一个括号就是少个标点,然后结果就出不来,大部分时间都浪费在基本语句的查错上。但是这个格式可以说是C语言的基础问题以后肯定是不能犯这类是的错误的。我们现在学的知识基础的基础,是看着算法框架去编程,我们以后肯定是要自己去写算法框架的,因为这是C语言的核心思想。我们要慢慢的养成自己写算法的好习惯,然后独立编程。所以现在就得打好基础。

原文地址:https://www.cnblogs.com/yiyidexioafen/p/10776889.html

时间: 2024-11-19 14:56:03

第三次试验报告的相关文章

实验楼第三次试验报告

实验楼第三次试验报告 北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353 姓名:李雪琦 学号:20135309 成绩:            指导教师:娄嘉鹏   实验日期:2015.6.4 实验密级: 预习程度:   实验时间: 仪器组次: 必修/选修:选修  实验序号:3 实验名称:             Java敏捷开发XP实践 实验内容: 1. XP基础 2. XP核心实践 3. 相关工具 实验仪器: 名称 型号 数量 PC L

java第三次试验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计   班级:1353       姓名:郭皓  学号:20135327 成绩:             指导教师:娄嘉鹏      实验日期: 实验密级:         预习程度:             实验时间: 仪器组次:          必修/选修:选修       实验序号:3 实验名称:                敏捷开发与XP实践 实验目的与要求: 完成实验.撰写实验报告,实验报告以

实验楼第三次实验报告

实验楼第三次试验报告 北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353 姓名:王剑桥 学号:20135316 成绩:            指导教师:娄嘉鹏   实验日期:2015.6.4 实验密级: 预习程度:   实验时间: 仪器组次: 必修/选修:选修  实验序号:3 实验名称:             Java敏捷开发XP实践 实验内容: 1. XP基础 2. XP核心实践 3. 相关工具 实验仪器: 名称 型号 数量 PC L

大三上学期实验楼第一次试验报告

Ctrl+d 键盘输入结束或退出终端 Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg Ctrl+a 将光标移至输入行头,相当于Home键 Ctrl+e 将光标移至输入行末,相当于End键 Ctrl+k 删除从光标所在位置到行末 Alt+Backspace 向前删除一个单词 Shift+PgUp 将终端显示向上滚动 Shift+PgDn 将终端显示向下滚动 字符 含义 * 匹配 0 或多个字符 ? 匹配任意一个字符 [list] 匹

第六周课程总结&amp;试验报告(三)

Java实验报告 实验四类的继承 一. 实验目的 (1)       掌握类的继承方法: (2)       变量的继承和覆盖,方法的继承.重载和覆盖实现: 二. 实验内容 三.实验过程(请自己调整格式) (1)代码: package com.company; class Circle { double radius,perimeter,area; Circle() //构造Circle()对象 { radius = 0; } Circle(double r) { radius = r; //将

第五周课程总结&amp;试验报告(三)

---恢复内容开始--- ?统计该字符串中字母s出现的次数. public class test { public static void main(String[] args) { String s="this is a test of java"; int sum=0; char[] a=s.toCharArray(); for(int i=0;i<a.length;i++) { if(a[i]=='s') sum++; } System.out.println(sum);

第五周课程总结&amp;试验报告 (三)

课程总结 一,类的继承格式 1.在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 {} class 子类 extends 父类 {} 2.可以通过子类扩展父类 3.只允许多层继承,不允许多重继承 二:方法的覆写和重载 覆写:就是指子类中定义了与父类中同名的方法,但是要考虑权限,被子类覆写的方法不能拥有比父类方法更严格的访问权限. 重载:同一个类中相同名称不同参数的方法 四.抽象类的基本概念 1.包含一个抽象方法的类必须是抽象类

实验楼第二次试验报告

实验楼第二次试验报告 北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353 姓名:王剑桥 学号:20135316 成绩:            指导教师:娄嘉鹏   实验日期:2015.5.6 实验密级: 预习程度:   实验时间: 仪器组次: 必修/选修:选修  实验序号:2 实验名称:             JAVA面向对象程序设计 实验目的与要求: 1. 初步掌握单元测试和TDD. 2.理解并掌握面向对象三要素:封装.继承.多态.

angularJs中关于ng-class的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一种:通过数据的双向绑定(不推荐) 第二种:通过对象数组 第三种:通过key/value 下面简单说下这三种: 第一种:通过数据的双向绑定 实现方式: function changeClass(){   $scope.className = "change2"; } <div clas