• C博客作业01--分支、顺序结构


    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业00--我的第一篇博客
    这个作业的目标 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容

    0.展示PTA总分

    1.本章学习总结

    1.1 学习内容总结

    1.字符型数据的输入与输出

    输入输出时,变量用%c读入输出:

    char ch;
    
    scanf("%c",&ch);
    printf("%c",ch);
    

    getchar()【括号内无参数】可以接收一个字符,putchar()【括号内有参数】则输出一个字符。

    ※注意事项

    空格是一个字符,在输入时会被当做输入字符;在使用字符型常量时需要用一对单引号将字符括起来。

    2.关系运算符

    关系运算符用于关系运算,用来判断真假。如5>3为真,则数值为1,相反若3>5为假,则数值为0.
    关系运算符有:

    <
    <=
    >
    >=
    ==//等于
    !=//不等于
    

    ※注意事项

    '=='代表的是等于,而'='用于赋值,二者不等同,与数学上存在差异。

    3.如何控制输出位数

    %xd——当数的位数少于x,则在数的左侧多出x-数的位数个空格。
    %-xd——当数的位数少于x,则在数的右侧多出x-数的位数个空格。
    如:

    #include <stdio.h>
    int main()
    {
       int num1,num2;
       double num3;
       scanf("%d %d %lf", &num1,&num2,&num3);
       printf("%5d%-5d%5.3f", num1,num2,num3);
       return 0;
    }
    

    4.随机数

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main()
    {
     int number;             //定义随机数的变量
     srand(time(0));         //生成种子
     number = rand() % 100;  //生成随机数的范围为0-100
     printf("%d", number);   //输出随机数
     return 0;
    }
    

    若想要生成的随机数有指定区间,可把number=rand()%100改为number=x+rand()%(100-x)。

    1.2 编程技巧总结

    1.利用flag改变数值正负

    这种方法相比于利用pow函数计算的更快。
    如:

    #include<stdio.h>
    #include<math.h>
    int main()
    {
      int denominator, flag;
    	double item, pi;
    
    	flag = 1;
    	denominator = 1;
    	item = 1.0;
    	pi = 0;
    
    	while (fabs(item) >= 0.0001) 
    	{
    		item = flag * 1.0 / denominator;
    		pi += item;
    		flag = -flag;
    		denominator += 2;
    	}
    	pi *= 4;
    	printf("pi=%.4f
    ",pi);
    
    	return 0;
    
    }
    

    2.求中间数

    利用中间变量存储所要求得的中间数。

    #include<stdio.h>
    int main()
    {
        int a,b,c,t;
        scanf("%d %d %d",&a,&b,&c);
        if(a>b){
        	t=a;
        	a=b;
        	b=t;
    	}
    	if(b>c){
    		t=b;
    		b=c;
    		c=t;
    	}
    	if(a>b){
        	t=a;
        	a=b;
        	b=t;
    	}
    	printf("%d",b);
    	return 0;
    }
    

    1.3 本章学习体会

    在思维上感受到了数学与计算机的差别,意识到了以后不能够再用数学的思维来思考问题。
    对于结构的理解不够深刻,往往碰到一道题的时候要思考很久才能够想出如何编写代码。
    在格式上我认为自己得到了很大的提升,有意识的开始让自己定义的变量见名知意,也有意识的开始使用驼峰命名法。

    2.PTA实验作业

    2.1 前天是哪天

    数据表达:用到的变量均为整型变量。有表示年份的year、有表示月份的month、有表示天数的day。
    数据处理:首先判断是否为闰年,其次按照每个月天数的不同进行分支。

    2.1.2 代码截图


    2.1.3 PTA提交列表及说明

    • Q1:一开始跨月显示出现错误,但语法并没有错误。

    • A1:后来经过调试后发现是跨月的表达式写错了,跨月时的天数增加了一天,经过修改后正确。

    • Q2:没有考虑到非闰年的条件。

    • A2:经过长时间的思考,最终也没能想出一个更好的方案,只是把闰年情况下的所有语句复制粘贴一次后,将if判断条件改为非闰年。经过修改后正确。

    • Q3:当输入年数为闰年时,输出的结果总为两个数据。

    • A3:经过单步调试,发现原因是在判断是否为闰年时使用的是两个if语句,而每条if语句都会执行,导致如果是闰年的话年份减一变为非闰年,这样就会执行非闰年的if语句,最终输出两个数据。把if改为else if后最终答案正确。

    2.2 计算油费

    数据表达:加油量a,汽油品种b,服务类型c,须支付金额price。其中a、b为整型变量,c为字符型变量,price为双精度浮点型变量。
    数据处理:将输入的数据先进行服务类型的判断,然后按照不同汽油的价格进行分支计算,得到最终结果。

    2.1.2 代码截图

    2.1.3 PTA提交列表及说明

    • Q1:编译出现错误,无法执行,查看后似乎没有错误

    • A1:翻书找了找相关资料后,发现字符型常量在使用时需要加一对单引号

    • Q2:编译还是出现了错误,再次查看,好像还是没有错误

    • A2:在编写的时候没有第一时间把数据表达放在前列,而是想到什么变量就就势写在那一行,结果把char ch;放在了scanf底下。将其移到scanf前列后答案正确。

    2.3 单步调试————龟兔赛跑

    2.3.1 单步调试截图

    设置断点并输入数据

    单步调试一次循环后的数据

    2.3.2 代码截图

    2.3.3 PTA提交列表及说明

    虽然pta是一次成功,但在自己调试的过程中还是发现了思维上的错误,即一开始用做数学的角度来思考问题,导致出现了过多变量,最后自己也分不清哪个是哪个,于是重新思考后写出了当前的代码。

  • 相关阅读:
    bootstrap初识
    司徒正美居中方式
    css中的浮动(float)
    fio
    简易接口测试脚本
    字符加密
    Python 汉诺塔
    Python 找零问题
    Python 二分法
    Python 冒泡排序
  • 原文地址:https://www.cnblogs.com/Rex7478/p/13943922.html
Copyright © 2020-2023  润新知