#寒假二月颓废日,2-2回顾2-1
今天是2-2日,原计划是在串完门回到家,准备二月份要好好学习,结局就是2-1的第一天,学习了一个小时的教资,睡了俩小时,然后无头绪的忙碌,等到21时准备练习一会PTA、打字,写一篇博客后,再看一下教资的书,结果抱着手机看到了两点,两点!!!追悔莫及,然后现在开始了第二天的学习时间。
PTA简单习题
7-4,进化论
输入样例
3
3 3 9
3 3 6
3 3 12
输出样例
Lv Yan
Tu Dou
zhe du shi sha ya!
1.个人解题思路
1.1自己编写的程序
#include<stdio.h>
int main(){
int N,A,B,C; //输入的三个A,B,C变量
scanf("%d",&N); //输入需要循环的数 N
if(N<=100){ //第一个条件判断 —— N <= 100
for(int i=1;i<=N;i++){ //进入循环
scanf("%d %d %d",&A,&B,&C); //循环里依次输入数字,下面进入if进行判断
if(C<=10000||A<=100||B<=100){
if(C==A*B)printf("Lv Yan\n"); //如果 C 是前两个数的乘积,输出Lv Yan
else if(C==A+B)printf("Tu Dou\n"); //如果 C 是前两个数的累加和,输出Tu Dou
else printf("zhe du shi sha ya!\n"); //否则,输出zhe du shi sha ya!
}
else return 0;
}
}
else return 0;
}
2.学习其他解题思路
这里主要考察的对循环的应用,
(1)先输入第一个数N,限制输入的行数(即需要对输入行数要进行判断的次数,例如输入是3行,那么就判断三次);
(2)然后利用for循环依次输入A、B、C 的值,并对其进行判断;
(3)这里比较核心的判断条件是 C==A*B、C==A+B,根据判断的结果输入Lv Yan 和Tu Dou 以及 zhe du shi sha ya!
这道题比较简单,所以我就挑选了两个比较吸引我的两个代码进行展示。
2.1使用continue
对于continue,相信大家在第一次学习C / C++的时候,就已经认识了。所以我对continue有一种执着,想把它记住,但因为不常用,所以老是记不住,所以在学习一遍吧~
(1)continue的用法:
a.作用
break和continue都是用来控制循环结构的,主要作用是停止循环。b.区别
1、break用于跳出一个循环体 / 完全结束一个循环,不仅可结束其所在的循环,还可结束其外层循环。注意:
(1)只能在循环体内和switch语句体内使用break。
(2)不论哪种循环,一旦在循环体内遇到break,系统便完全结束循环,开始执行循环之后的代码。
(3)当break出现在循环体内的switch语句时,其作用只是跳出该switch语句体,并不能终止循环体的执行。2、continue,在一个循环体内,跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定。只是中止(跳过)本次循环,接着开始下一次循环。
注意:
(1)continue语句并未使德整个循环终止;
(2)continue 只能在循环语句中使用,即只能在 for、while 和 do…while 语句中使用;
(2)register
是在C和C++中都可用的一种存储类说明符,用于建议编译器将变量存储在寄存器中,以加快访问速度。然而,随着现代编译器的发展,
register
的实际效用已经降低,并且在C++17标准中已经被废弃。因此,在现代代码中,register
通常是不必要的,并且建议避免使用。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for(register int i=1;i<=n;i++)
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a+b==c)
{
printf("Tu Dou\n");
continue; //继续向下运行
}
if(a*b==c)
{
printf("Lv Yan\n");
continue; //进入下一重循环
}
printf("zhe du shi sha ya!\n");
}
return 0;
}
2.2利用while循环
#include<stdio.h>
int main(){
int N,A,B,C;
scanf("%d",&N);
while(N--){ //用while代替for循环,N-- 控制循环次数
scanf("%d %d %d",&A,&B,&C);
if(C==A*B){
printf("Lv Yan\n");
}else if(C==A+B){
printf("Tu Dou\n");
}else{
printf("zhe du shi sha ya!\n");
}
}
return 0;
}
7-3程序员买包子
需要注意的是在c中char是单个字符——%c,如果要输入字符串需要定义数组——%s
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int N,M,K;
char X[20]="";
scanf("%d %s %d %d",&N,&X,&M,&K);
if(K==N)printf("mei you mai %s de\n",X);
else if(K==M)printf("kan dao le mai %s de\n",X);
else printf("wang le zhao mai %s de\n",X);
return 0;
}