PTA 2019-1-12(有些题不会)

一、程序题
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7

#include<stdio.h>
int main()
 {
 	int i,a,n;
 	scanf("%d",&a);
 	for(i=1;a>0;i++)
 	{
 		n=a%10;
 		printf("%d",n);
 		a=a/10;
	 }
	 return 0;
 }

错因
没有将最后一位数情况考虑且万一倒数第1 2位都是0的情况也没考虑

正确

#include<stdio.h>
int main()
{
 int a,b,i,first;
 scanf("%d",&a);
 for(i=1,first=1;a>0;i++)
    {b=a%10;
     a=a/10;
     if(b==0&&first==1)
       continue;
       else
       {printf("%d",b);first++;}
    }
}

如何修正的:设一个first 当每次取余时 判断是否为0 若前面到现在都为0 则first值不变 若不是则first值改变;

闰年判断,规则是能被4整除但不能被100整除或者能被400整除的年份是闰年。

输入样例:
在这里给出一组输入。例如:

2
2008
1900
输出样例:
在这里给出相应的输出。例如:

YES
NO

#include<stdio.h>
int main()
{
	int n,y,i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
	scanf("%d",&y);
	if((y%4==0&&y%100!=0)||y%400==0)
	printf("YES");
	else printf("NO"); 
	return 0;	}
 } 

错误:输出后并不是逐个判断
错因:暂时不知

二、程序填空题

1.写出满足条件10<x<100或者x<0的的C表达式。
自己:(x<100&&x>10)||x<0;
正确:(x<100&&x>10)||x<0

错因:不能写分号

2.假设有以下实型变量定义
double a, b;
若希望完成下面的计算
a^b则计算的表达式为

自己:double a,b;int i; for(i=1;i<b;i++) a*=a;
正确:
错因:

三、填空题
若变量已正确定义,写出以下程序段的运行结果。

scanf ("%d", &k);  
while(k >= 0){   
    printf("%d#", k);          
    scanf ("%d", &k); 
}

输入1 2 3 0 -1,输出
输入1 0 2 3 -1,输出
输入1 2 3 -1 9,输出

自己:1230 1023 123
正确:1#2#3#0# 1#0#2#3# 1#2#3#
错因:要严格看题 按照题上输出来写

三、选择题
若x为浮点型,则表达式x=10/4为( )
自己 2
正确2.0
思想:无论计算式是什么样的 结果一定是严格按照声明的来写

判断 i 和 j 至少有一个值为非0的表达式是____。
A.i!=0 && j!=0
B.i+j!=0
C.i || j
D.i&&j

自己:A
正确:C

分析每个选项:
A:A和B都不为零
B:只能判断j!=0,i=0
C:i或j有一个为1
D:i与j都不为零
思想:
1.题目的意思不能两个都是0
2.0!等于1(如果条件为真则逻辑非运算符将使其为假)常数判断时非零为1 零为零

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值