一、程序题
程序每次读入一个正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 零为零