PTA|天梯赛简单习题总结

本文分享了解题过程中的两种C/C++循环方法,包括for循环实现的逻辑判断和使用continue优化,以及while循环的应用。同时提到了如何在编程挑战中保持学习效率和时间管理问题。
摘要由CSDN通过智能技术生成

#寒假二月颓废日,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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值