C语言设计实验报告(二)

C程序设计实验报告

姓   名:赖瑾                     
实验地点:家                      
实验时间:2020年3月9日                 
实验项目:2.3.3 字符与ASCLL码
     2.3.4 运算符与表达式的运用
     2.3.5 顺序结构应用程序
     3.3.1 数学函数的算法描述
     3.3.2 鸡兔同笼的算法描述
     3.3.3 确定坐标的算法描述
 

一、实验目的与要求

1、掌握自增++、自减--运算符的正确使用。

2、掌握基本的输入/输出函数的基本功能、调用方法、输入/输出格式控制规定等。

3、掌握结构化程序的算法描述方法。

4、熟练掌握C语言的运算符,即运算符的优先级和结核性、运算规则、运算对象类型等。
                

二、实验内容

(1)2.3.3 字符与ASCLL码

1、问题的简单描述:赋值后a的值已经变化
2、实验代码:

#include<stdio.h>
void main()
{
    char a,b,c,s;  
    printf("请输入一个大写字母:\n");
    scanf("%c",&a) ;  //a为输入的大写字母/
    a=a+32;
    b=a-1;   //b为输入字母的小写的前一个字母
    c=a+1;   //c为输入字母的小写的后一个字母
    printf("小写字母为%c,%c,%c\n",b,a,c);
    printf("ASCII值为%d,%d,%d\n",b,a,c);
    s=(a+b+c)/3;//ACSII值的平均值 
    printf("平均值=%d",s);
 } 

3、问题分析:刚开始写的是b=a+31,c=a+33没有意识到a的值已经改变。
         

(2)2.3.4 运算符与表达式的运用

1、问题的简单描述:不清楚十位数的取值怎么算
2、实验代码:

#include<stdio.h>
void main()
{
    int a,b,c,x,y;//x为输入的数 
    printf("请输入一个3位正整数:\n");
    scanf("%d",&x);
    a=x/100;     //百位的数 
    b=x/10%10;  //十位的数 
    c=x%10;    // 个位的数 
    y=c*100+b*10+a;
    printf("%d:%d\n",x,y);
 } 

3、问题分析:对十位数的取值要分别除两次十而不是除100取余。
        

(3)2.3.5 顺序结构应用程序

1、问题的简单描述:注意输入法
2、实验代码:

float x,j,c,cw,g,f,hj,fk,zh;
    //其中,x代表西药费;j代表检查费;c代表材料
    //cw代表床位费;g代表观察费;f代表护理费 
    //hj代表应付款;fk代表病人付款项;zh代表应找回的金额
    printf("请输入西药费,检查费,材料费,床位费,观察费,护理费:\n");
    scanf("%f,%f,%f,%f,%f,%f",&x,&j,&c,&cw,&g,&hj);
    hj=x+j+c+cw+g+f;
    printf("应付款(元):%.2f",hj);
    printf("病人付款(元):"); 
    scanf("%f",&fk); 
    zh=fk-hj;
    printf("计算结果:\n");
    printf("病人付款(元):%.2f元\n",fk); 
    printf("应收款(元):%.2f元",hj);
    printf(",应找回(元):%.2f元",zh); 
    
}

3、问题分析:注意输入法
         

(4)3.3.1 数学函数的算法描述

1、问题的简单描述:
2、流程图:

3、实验代码:

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

4、问题分析:
        

(5)3.3.2 鸡兔同笼的算法描述

1、问题的简单描述:数字与变量的混合运算
2、流程图:

3、实验代码:

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

4、问题分析习惯了数学表达忘记了打*
                                

(6)3.3.3 确定坐标的算法描述

1、问题的简单描述:以为^2可以表示平方,可以利用if函数变得更简单。
2、实验代码:

#include<stdio.h>
#include<math.h>
 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;
    printf("该塔的高度为%d",h);
}

3、问题分析:pow(x,y)函数表示x的y次方
更简单的方法:
#include<stdio.h> int main() { float x,y; printf("请输入一个点(x,y):"); scanf("%f,%f",&x,&y); if(x<0) x=-x; if(y<0) y=-y; if(((x-2)*(x-2)+(y-2)*(y-2))<1) printf("10"); else printf("0"); }          

三、实验小结

  巩固了流程图的画法和markdown的用法,if函数的使用更加熟练了,学习了pow(x,y)函数表示x的y次方等新的知识,还从其他同学的讲解中学习了不同的代码表示。但自己还是不够细致经常犯一些小错误比如少了*。
        
    回到顶部

猜你喜欢

转载自www.cnblogs.com/LaiJin/p/12458451.html