【第五章 选择】练习题答案
(2011-05-07 09:22:42)
标签:
杂谈 |
分类: C语言教学 |
1. 单项选择题
(1)【答】A
(2)【答】C
(3)【答】选项B、C、D中的比较运算符不正确,在选项A中,a=b返回b,若b为0或空字符,则为假,否则为真。本题答案为A。
(4)【答】B。应改为if (x=y && x!=0) x+=y;
(5)【答】D
(6)【答】①
(7)【答】①
(8)【答】A
2. 填空题
(1)【答】x % 2 == 0
(2)【答】a % b == 0
(3)【答】a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a
(4)【答】(a+b<c && a+c<b && b+c<a)
(5)【答】k=2,执行case 2分支,k++返回2,此时k=3,输出2,后跟一空格。由于没有break语句,继续执行case 3分支,k++返回3,此时k=4,输出3,由于有break语句,退出switch语句。所以输出为:2 3。
(6)【答】a>0,s变为2。a>b为真,t=t+s=3。所以输出为:s=2,t=3。
(7)【答】k=2,执行case 2分支,k++返回2,此时k=3,屏幕输出2,后跟一空格。由于没有break语句,继续执行case 3分支,k++返回3,此时k=4,屏幕输出3,由于没有break语句,继续执行case 4分支,k++返回4,此时k=5,屏幕输出4,由于有break语句,退出switch语句。所以输出为:2 3 4。
(8)【答】x=0,执行外层switch语句的case 0部分,y==2为真,则执行里层switch语句的case 1部分,输出“*”,遇到break语句,退出里层的switch语句,由于里层的switch语句之后没有break语句,所以转而执行外层switch语句的case 1部分,这时z=3,故执行里层switch语句的default部分,输出“#”,整个程序执行完毕。所以输出为:*#。
3.
(1)编写一个程序判断用户输入的字符是数字字符、字母字符还是其他字符。
【解】在'0'到'9'之间的为数字字符,在'a'到'z'或'A'到'Z'之间的为字母字符;否则为其他字符。程序如下:
#include <stdio.h>
main()
{
}
(2)假设今天是星期日,编写一个程序,求123456天后是星期几。
【解】星期是7天一个轮回,由于今天是星期日,所以123456除以7的余数即为星期几。程序如下:
#include <stdio.h>
main()
{
}
(3)编写一个程序,输入年号和月份,判断该年是否为闰年,并根据给出的月份判断是什么季节和该月有多少天?闰年的条件是年号能被4整除但不能被100整除,或者能被400整除。
【解】直接根据闰年的定义求解,如果是闰年,2月份为29天;否则为28天,其他月份相同。规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2和12月为冬季。本题程序如下:
#include <stdio.h>
main()
{
}
(4)报数游戏。A、B、C、D、E、F、G、H共8人站成一排,按图4.1所示的方法从1开始报数。问谁先报到123456?
A
1→
14←13←12←11←10← 9
15→16→17→18→19→20→21→22
28←27←26←25←24←23
29→30→…
图4.1
【解】从图4.1中看到1到14是一个来回,再重复这一过程,所以只需对123456除以14的余数加以判断即可。程序如下:
#include <stdio.h>
main()
{
}
程序的运行结果:
报数到123456的人是D
(5)编写一个程序,求ax2+bx+c=0方程的根。
【解】先计算d=b2-4ac,再根据d是大于0、等于0还是小于0分别求根。程序如下:
#include <stdio.h>
#include <math.h>
int func(float a,float b,float c,float *x1,float *x2)
{
}
main()
{
}

加载中…