第二次博客作业
0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
- 学习字符型数据
1、字符型常量:字符型常量指单个字符,用一对单引号及其所括起的字符表示。如:'a'、'9'、‘¥’。
(1)每个字符都有唯一的次序值,即ASCII码。
(2)数字字符'0','1',...,'9'的ASCII码按升序连续排列。
(3)大写字母'A','B',...,'Z'的ASCII码按升序排列。
(4)小写字母'a','b',...,'z'的ASCII码按升序排列。
注意:(1)要区分数字和数字字符,如:1是整型数字,而'1'是字符。
(2)大写字母与小写字母在ASCII码中不是连续的。
2、字符型变量:字符型变量定义时用类型名char,例如:
char op;
定义了一个字符型变量op,它的值是字符型数据。op='+'是将字符型常量'+'赋给字符型变量op。
3、字符型数据的输入输出
(1)调用函数scanf()和printf()输入输出字符,在函数调用的格式控制字符串中相应的格式控制说明为%c。
(2)字符输入函数getchar():调用该函数可以从键盘输入一个字符。一般调用格式为:
ch = getchar();
其功能是从键盘输入一个字符,并赋值给变量ch。
(3)字符输出函数put char():调用该函数可以输出一个字符。一般调用格式为:
putchar(输出参数);
其功能是输出参数是字符型变量或者字符型常量。
注意:(1)输入表达式时,在操作数和运算符之间不能出现空格(' ')。如果输入空格,因为%c表示要读入一个字符,而空格本身也是一个字符,因此空格会被作为输入字符。
(2)getchar()只能读入一个字符,如果要输入多个字符,就需要多次调用。
(3)函数getchar()和putchar()只能处理单个字符的输入输出,即调用一次函数,只能输入或输出一个字符。
简单案例:
int i;
char c;
for (i = 0;i < 10;i++)
{
c = getchars();
putchar(c);
putchat('!');
}
- 学习随机函数的使用
stand(time(0));//初始化随机数
rand()%100;//随机产生0~99的随机数
1、每次召唤"rand()"就得到一个随机整数。
#Include <stdio.h>
#Include <stdlib.h>
#Include <time.h>
int main()
{
stand (time(0));
int a = rand();
printf ("%d\n",a);
return 0;
}
2、x%n的结果是[0,n-1]的一个整数。
- 关系运算
1、运算符有<,<=,>,>=,= =,!= 。
2、用关系运算符将两个表达式连接起来的式子,称为关系表达式,若关系表达式成立则结果为1,否则为0。
注意:==是关系运算符,用于比较两个操作数是否相等;而=是赋值运算符,表示对变量赋值。
联想:
if (表达式)
其中“表达式”中结果为非0就会进入分支。
如:
if(1)
或者if(231%10)
都会进入分支。 - 逻辑运算符
1、逻辑运算符有!,&&,||。
2、设A和B表示逻辑运算对象,逻辑运算符的功能描述如下:
!A:如果A为真,结果是假;如果A为假,结果是真。
A && B:当A和B都为真时,结果是真;否则结果是假。
A || B:A和B都为假时,结果是假;否则结果是真。
注意:(1)逻辑运算符的优先级低于关系运算符。
(2)若a=12,则!a = 0,而!!a=1。
1.2 编程技巧总结
1、取出某一整型数字a的个位数:a = a%10;
2、去除某一整型数字a的个位数:a = a/10;
3、判断整除:a%b = = 0;若结果为1则a整除b,若结果为0则a不整除b。
4、循环次数较多时运用printf()调试;
5、写运算表达式时多使用空格和(),"{"、"}"均占一行。
6、使用驼峰命名法代码和多注释增强代码可读性。
1.3 本章学习体会
- 学习感受:
1、对一些较细节的知识点不是很理解,如不清楚编译预处理命令的作用。
2、部分题目逻辑较难理清。 - 不理解的地方:
对随机数的使用及其知识点的细节不是很清楚。 - 代码量:
PTA中顺序结构、分支结构及实验作业。
2.PTA实验作业
2.1前天是哪天
- 数据处理:
用了整型变量年份year,月份month,日期day,字符型变量_。 - 代码截图:
- 提交列表:
没有问题。
2.2 12-24小时制
- 数据处理:
定义了整型变量12小时制的小时hour1,24小时制的小时hour2,分钟minute,字符型变量存储“:”的N,及用以12小时制的'A'or'P'。 - 代码截图:
- 提交列表:
Q:在编译器写的scanf("%d%c%d",&hour24,&N,&minute);
为scanf("%d:%d",&hour24,&minute);
A:后来发现“:”必须用一个字符型变量表示。
单步调试:
Q:我会用编译器VS上的单步调试,但是我的电脑是MacBook,我目前使用的编译器是XCode(翁凯老师推荐),Xcode编译器为全英文,我还不会用Xcode编译器上的单步调试。
A:但我会使用printf调试。
- 龟兔赛跑:
数据处理:
乌龟的爬行距离turtleDis,兔子爬行距离rabbitDis,时间time,总时间totalTime。
代码截图:
提交列表:
Q:没有考虑到兔子休息不到30min的情况。
A:使用printf调试发现。