总结写在前面~
写了两天的PTA,后面确实有点吃力,课程仅学习到判断和循环,还有很多很多很多知识点没接触,深感自己还有很大不足:即使是判断和循环,保守估计我都没吃透十分之一二,虽然面对笔试可以不再紧张,但我的目标不仅仅是这点。
借用高中历史老师对我们说过的一句话:
勤学如春起之苗,日有所增,不见其长,怠学如磨刀之石,日有所减,不见其少。
第19题(计算天数)
#include <stdio.h>
int main()
{
int yyyy,mm,dd,day;
scanf("%d/%d/%d",&yyyy,&mm,&dd);
if(yyyy%4==0&&yyyy%100!=0||yyyy%400==0){
switch(mm){
case 1:
day=dd;
break;
case 2:
day=31+dd;
break;
case 3:
day=31+29+dd;
break;
case 4:
day=31+29+31+dd;
break;
case 5:
day=31+29+31+30+dd;
break;
case 6:
day=31+29+31+30+31+dd;
break;
case 7:
day=31+29+31+30+31+30+dd;
break;
case 8:
day=31+29+31+30+31+30+31+dd;
break;
case 9:
day=31+29+31+30+31+30+31+31+dd;
break;
case 10:
day=31+29+31+30+31+30+31+31+30+dd;
break;
case 11:
day=31+29+31+30+31+30+31+31+30+31+dd;
break;
case 12:
day=31+29+31+30+31+30+31+31+30+31+30+dd;
}
}else switch(mm){
case 1:
day=dd;
break;
case 2:
day=31+dd;
break;
case 3:
day=31+28+dd;
break;
case 4:
day=31+28+31+dd;
break;
case 5:
day=31+28+31+30+dd;
break;
case 6:
day=31+28+31+30+31+dd;
break;
case 7:
day=31+28+31+30+31+30+dd;
break;
case 8:
day=31+28+31+30+31+30+31+dd;
break;
case 9:
day=31+28+31+30+31+30+31+31+dd;
break;
case 10:
day=31+28+31+30+31+30+31+31+30+dd;
break;
case 11:
day=31+28+31+30+31+30+31+31+30+31+dd;
break;
case 12:
day=31+28+31+30+31+30+31+31+30+31+30+dd;
}
printf("%d",day);
return 0;
}
疑问点:不知道怎么让它自己记录数据,考虑闰月的话又会多出一大段代码。估计这的确是一个只有新手才会用的笨蛋解决方案吧
有一说一,hh,我都觉得这个代码很…蠢,太过于冗长了,不过我短时间内凭自己那点东西还真想不出好的解决方案,暂且放这里,等后面代码敲多了,学习了新的知识点,就来试试看能不能改良一下。
第20题(简单计算器)
# include<stdio.h>
int main()
{
int a,b,c,flag=0;
char ch;
scanf("%d",&a);
while((ch=getchar())!='=')
{
scanf("%d",&b);
if((ch=='/')&&(b==0))
{
flag=1;break;
}
switch(ch)
{
case '+': a=a+b;break;
case '-':a=a-b;break;
case '*':a=a*b;break;
case '/':a=a/b;break;
default :
flag=1;break;
}
if(flag) break;
}
if(flag)
{
printf("ERROR");
}
else
{
printf("%d",a);
}
return 0;
}
百度找到的解决方案(现在还看不懂 )
疑问点:实在想不出如何改变四则运算的优先级。
有问过群里大佬,说:进栈 遇到左括号 还有乘除法 出栈计算了 再进栈
听起来的确不难,百度了一下栈的概念,出现在数据结构部分,暂时还没学到,等过两天就来解决这个问题。