zoukankan      html  css  js  c++  java
  • 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是一次成功,但在自己调试的过程中还是发现了思维上的错误,即一开始用做数学的角度来思考问题,导致出现了过多变量,最后自己也分不清哪个是哪个,于是重新思考后写出了当前的代码。

  • 相关阅读:
    IIS7中的几种身份鉴别方式(一)Basic身份验证
    IIS7中的几种身份鉴别方式(二)集成身份验证
    java集合
    SharePoint 2010中welcome page的设置细节
    SharePoint中使用Linq出现未将对象引用到实例化的解决方法
    SharePoint 2010中关于An error was encountered while retrieving the user profile的处理方式记录
    The Need for an Architectural Body of Knowledge
    The Softer Side of the Architect
    Event Receivers 学习小结
    使用SmtpClient发送带图片的邮件的代码实现
  • 原文地址:https://www.cnblogs.com/Rex7478/p/13943922.html
Copyright © 2011-2022 走看看