ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言实验报告2

2021-04-18 21:35:28  阅读:135  来源: 互联网

标签:语句 case C语言 switch 实验 && printf 实验报告


一、实验目的及要求

1、第三章实验目的的要求:

(1)掌握结构化程序的算法描述方法。
(2)了解C语言的基本语法要素,能熟练地将算法描述转化为C语言程序。
(3)熟练掌握C语言运算符的优先级、结合性、运算规则、运算对象类型等。

2、第四章实验目的及要求:

(1)掌握C语言逻辑值的表示方法(0代表“假”,1代表“真")。
(2)学会正确地使用关系表达式和逻辑表达式。
(3)掌握各种形式的if语句语法和使用方法。注意if语句中if和else的匹配关系,以及if语旬的嵌套。
(4)掌握switch 语句的语法和使用方法。注意在switch 语句中break语句的用法及switch语句的嵌套。
(5)能独立编写分支结构程序并调试通过。)
(6)用if语句、switch语句解决简单的应用问题并上机实现。

二、实验内容

1、实验练习:3.3.1
(1)问题的简单描述:输入x值,输出满足函数关系的y值,并与C语言编写程序进行检验。
(2)实验代码:

#include <stdio.h>
void main()
{
    float x,y;
    printf("请输入x的值:");
    scanf("%f",&x);
    if (x<1)
    y=x;
    else if (x<10)
    y=2*x-1;
    printf("y的值为%.2f\n",y);
}

3)问题分析:
语句中数字和变量中的乘号()不能省略,如y=2x-1,不能写成y=2x-1。

2、实验3-3-2

(1)问题描述:
已知鸡兔的总头数为h (head),总脚数为f(feet),求鸡兔各有多少只?
(2)实验代码:

#include <stdio.h>
void main()
{
    int h,f,x,y;
    printf("鸡兔总数,鸡兔脚总数: ");
    scanf("%d,%d",&h,&f);
    if(x>0&&y>0)
    {
        x=(4*h-f)/2;
        y=(f-2*h)/2;
        printf("鸡有%d 兔有%d\n",x,y);
    }
    else
    printf("输入错误!\n");
     
}

3)问题分析:x和y没赋值就判断X和y>0,运行结果为输入错误,在请教别人后纠正了这个错误,应该判断h和f大于0.
3 ,实验练习:3.3.3
1.问题的简单描述:有四个圆塔,圆心分别为(2,2),(-2,2),(2,-2),(-2,-2),圆半径为1,这4个塔的高度为10米,塔外无建筑物。输入任意一点坐标,若在任意一个塔内,则输出圆塔的高度,若该点不在圆塔内,则输出高度为0。
2.实验代码

#include <stdio.h>
#include <math.h>
void main()
 {
     int h=10;
     float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
     printf("请输入一个点(x,y) :");
     scanf("%f,%f",&x,&y);
     d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
     d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
     d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3));
     d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4));
     if(d1>1&&d2>1&&d3>1&&d4>1)
     h=0;
     else
     h=10;
     printf("该塔高度为:%d\n",h);
 }

3)问题分析:忘记加入math的头文件,在使用sqrt时没有用大括号把表达式括起来。
求两点距离公式时平方相乘的形式。
4,实验练习:4.3.1
1.问题的简单描述:读入3个表示箱子长,宽,高的整数值,判断并输出该箱子是正方体还是长方体。
2.实验代码:

#include <stdio.h>
main()
{
    int l,w,h;
    printf("请输入箱子的长、宽、高: \n");
    scanf("%d,%d,%d",&l,&w,&h);
    if(l==w,w==h)
        printf("该箱子是正方体。\n");
    else
         printf("该箱子是长方体。\n");
    return 0;
}

3)在取地址符时候只写了两个,运行结果一直是该箱子是长方体。查找后发现少取了一个地址符。
4,实验练习:4.3.2
1.问题的简单描述:编写程序实现如下功能:商店有打印纸(18元/本)、墨盒(132元/个)、光盘(4.5元/片)出售,商店进行优惠酬宾活动。具体规则如下:顾客购买商品的总额超过100元,优惠%5;超过200元,优惠%6;超过300元,优惠%7;超过400元,优惠%8;超过500元,优惠%10。根据不同的购买量,计算应付货款。
2.实验代码:

#include <stdio.h>
main()
{
    int a,b,c;
    float d,x;
    printf("请输入打印盒、墨盒、光盘的数量: ");
    scanf("%d,%d,%d",&a,&b,&c);
    d=18*a+132*b+4.5*c;
    if (d>100&&d<=200)
    x=d*0.95;
    else if (d>200&&d<=300)
    x=d*0.94;
    else if (d>300&&d<=400)
    x=d*0.93;
    else if (d>400&&d<=500)
    x=d*0.92;
    else d>500;
    x=d*0.9;
    printf("应付款数%.2f",x);
}

3)问题分析:对switch结构掌握不清楚,不太使用sum函数。在每个语句序列后加上一个分支语句break,构成互相独立的switch条件分支。
4,实验练习:4.3.3
1.问题简单描述:输入某一年,月的数值,输出该月的天数。
2.实验代码:

#include <stdio.h>
main()
{
    int year,month,days;
    printf("Please enter year and month: \n");
    scanf("%d%d",&year,&month);
    switch(month)
    {
        case 2:if((year%4==0&&year%100!=0)||year%400==0)
            days=29;
            else
            days=28;break;
        case 1:    
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:days=31;break;
        case 4:
        case 6:
        case 9:    
        case 11:days=30;break;
    }
    printf("%d年%d月有%d日",year,month,days);
    return 0;
}

3)问题分析:当常量表达式是数字时,case与数字间空一格,否则运行不了。

三、实验总结

1总结所学内容,归纳知识点

(1)算法不是唯一的,对于同一个问题,可以设计多种不同算法
(2)if的合理嵌套可以实现多分支选择,并且其通用性比 switch 更好,但使用时需注意else于if的配对
(3)过多的 if..else 嵌套会造成程序代码过长,降低程序的可读性。
(4)switch 语句也是一种多分支选择语句,其可读性比计语句强。
(5)要注意在 switch 语句中正确地使用 break 语句,以使程序能正常地从 switch 分支中跳出,避免发生逻辑错误。
(6)对于 switch 语句,必须设置 default 标号,用于处理 switch 语句中表达式的值不在 case 标号集的范围内的情况。由 default标号来决定执行什么语句,可避免出现逻辑错误。
(7)在if语句的结构中也可以内嵌一个 switch 结构的语句,同样,在 switch 语句的结构中也可以内嵌一个if结构的语句

2查看你的学习伙伴的作业,并对他的作业提出建议。

学习伙伴的作业内容完整、丰富,缺少部分了细节的分析。

四、预习第四章

归纳第四章知识要点并制作思维导图

标签:语句,case,C语言,switch,实验,&&,printf,实验报告
来源: https://www.cnblogs.com/shishounan/p/14674649.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有