1、下面的一段程序的输出结果为( D )
#include <stdio.h>
int main()
{
if(-1)
printf("1");
else
printf("2");
if(0)
printf("3");
else
printf("4");
return 0;
}
A. 23 B. 24 C. 13 D. 14
解析:
2、设int s = 100,要输出字符串"s的值是100"应使用下列哪个语句? ( A D )
A. printf("s 的值是%d", s); B. printf("s 的值是%s", s)
C. printf("s 的值是%x", s): D. printf("s 的值是%i", s)
解析:int 的格式控制符是:%i 和%d
3、if(n==8)和if(8== n)两种判断方式,哪一种更好,为什么?
解析:if(8== n)更好,两种判断方式效率上没有什么区别,但第一种if(n==8)在写判断语句的时候很容易漏写一个"="
4、if-elseif-else结构和switch-case结构,哪个效率高,为什么?
解析:switch...case...执行效率高,switch…case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch…case不用像if…else那样遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。
5、结构化程序设计所规定的三种基本控制结构是: 顺序、选择、循环
6、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符: C
A. 必须为字母 B. 必须为下划线
C. 必须为字母或下划线 D. 可以是字母,数字和下划线中任一字符
7、若执行下面的程序时,从键盘上输入 5,则输出是 ( C )
int main(int argc, char **argv)
{
int x;
scanf("%d", &x);
if(x++ > 5)
printf("%d\n", x);
else
printf("%d\n", x--);
return 0;
}
A. 7 B. 4 C. 6 D. 5
解析:通过scanf输入,得到x=5, if(x++ > 5) 表示先5赋值给x,在++自增为6,判断5>6为假,执行else语,此时x=6,x自减;输出6
8、以下语句中,能够判断uiNum(unsigned int)可以被16整除的有( ABCD)
A. if (((uiNum / 16) * 16) == uiNum)
B. if ((uiNum % 16) == 0)
C. if ((uiNum & 0x0F) == 0)
D. if (((uiNum >> 4) << 4) == uiNum)
9、编写一个程序。实现输入一个小写字母,程序输出它对应的大写字母。(提示:小写字母的ASCII码值比大写宇母大32)
#include <stdio.h>
int main()
{
char ch;
printf("请输入一个小写字母:");
scanf("%c",&ch);
if(ch>='a'&&ch<='z')
{
printf("%c\n",ch-32);
}
return 0;
}
运行结果:
10、已知学生成绩(100分为满分)与等级的对应关系为: (中科四平)
成绩(grade) | 等级 |
90<=grade<=100 | A |
80<=grade<90 | B |
70<=grade<80 | C |
60<=grade<70 | D |
grade<60 | E |
请你编写一个程序,要求:输入学生成绩,输出学生成绩对应的等级。(提示:使用switch....case 语句)
#include <stdio.h>
int main()
{
//定义成绩score,等级grade变量
int score,grade;
printf("请输入成绩:");
scanf("%d",&score);
//判断成绩是否有效
if(score<0||score>100)
{
printf("成绩无效\n");
return 0;
}
//划分成绩等级
grade=score/10;
switch(grade)
{
case 10: case 9: printf("A\n"); break; //A等级
case 8: printf("B\n"); break; //B等级
case 7: printf("C\n"); break; //C等级
case 6: printf("D\n"); break; //D等级
default: printf("E\n"); break; //E等级
}
return 0;
}
运行结果:
11、编写一个程序。a=3,b=5,对a和b的值进行交换。 (北京君正集成电路)
(1)引入中间参数
#include <stdio.h>
int main()
{
int a,b,t;
printf("输入两个数值:");
scanf("%d %d",&a,&b);
t=a;
a=b;
b=t;
printf("%d %d",a,b);
return 0;
}
(2) 相加分离法
#include <stdio.h>
int main()
{
int a,b;
printf("输入两个数值:");
scanf("%d %d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("%d %d",a,b);
return 0;
}
两种方法都可以运行正确结果:
12、编写一个程序。实现输入一个三位数,判断是否是水仙花数。水仙花数——各个位立方之和等于本身。eg:
#include <stdio.h>
int main()
{
int num;
printf("请输入一个三位数:");
scanf("%d",&num);
if(num>=100&&num<=999) //三位数
{
int g,s,b; //定义个位,十位,百位
g=num%10;
s=num/10%10;
b=num/100%10;
if(g*g*g+s*s*s+b*b*b==num) //判断是否是水仙花数
{
printf("是水仙花数");
}
else
{
printf("不是水仙花数");
}
}
return 0;
}
运行结果:
13、编写一个程序。实现输入一个年份,判断是不是闰年
#include <stdio.h>
int main()
{
int year;
printf("请输入一个年份:");
scanf("%d",&year);
//判断是否是闰年
if(year%4==0&&year%100!=0||year%400==100)
{
printf("%d年是闰年\n",year);
}
else
{
printf("%d年不是闰年\n",year);
}
return 0;
}
运行结果:
14、编写一个程序。请实现以下功能:
输入三个数,分别为年、月、日,输出此日是该年的第几天。
输入:XXX XXX XXX
输出:此日是该年的第XXX 天
示例:
输入 2020 2 20
程序输出 此日是该年的第51 天
#include <stdio.h>
int main()
{
int y1=31,y3=31,y5=31,y7=31,y8=31,y10=31,y12=31;
int y4=31,y6=31,y9=31,y11=31;
int y2=28;
int year,month,day,sum; //定义年,月,日,求和
printf("请输入年月日:\n");
scanf("%d %d %d",&year,&month,&day);
if((year%4==0&&year%100!=0)||year%400==0)
{
y2 = 29;
}
printf("%d %d %d\n",year,month,day);
if(month>12||month<0) printf("输入的月份不正确");
if(day>31||day<0) printf(" 输入的日期不正确");
sum=0;
switch(month)
{
case 12: sum=sum+y11;
case 11: sum=sum+y10;
case 10: sum=sum+y9;
case 9: sum=sum+y8;
case 8: sum=sum+y7;
case 7: sum=sum+y6;
case 6: sum=sum+y5;
case 5: sum=sum+y4;
case 4: sum=sum+y3;
case 3: sum=sum+y2;
case 2: sum=sum+y1;
case 1: sum=sum+day;
break;
}
printf("此日该年的%d天",sum);
return 0;
}
运行结果:
16、编写一个程序。输入三角形的 三个边长判断能否构成三角形,如果能输出能构成三角形,再输出是什么三角形?
等边 [a==b && a==c && b==c]
等腰 [a==b || a==c || b==c]
直角(勾股定理)[a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a]
普通
如果不能: 输出不能构成三角形
#include <stdio.h>
int main()
{
int a,b,c;
printf("请输入三个边长:");
scanf("%d %d %d",&a ,&b ,&c);
if(a+b>c&&a-b<c)
{
printf("能构成三角形\n");
if(a==b&&b==c&&a==c)
{
printf("等边三角形");
}
else if(a==b||b==c||a==c)
{
printf("等腰三角形");
}
else if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)
{
printf("直角三角形");
}
else
{
printf("其他三角形");
}
}
else
printf("不能构成三角形");
return 0;
}
运行结果:
16、编写一个程序。有 4 个变量 a,b,c,d,我们提前并不知道他们的值,请用你的方式将他们从大到小排序。算法任意。
#include <stdio.h>
int main()
{
int a,b,c,d,t;
printf("输入四个数值:");
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a<b) t=a , a = b , b = t;
if(b<c) t=b , b = c , c = t;
if(c<d) t=c , c = d , d = t;
if(a<b) t=a , a = b , b = t;
if(b<c) t=b , b = c , c = t;
printf("%d %d %d %d",a,b,c,d);
return 0;
}
运行结果: