#include
int x=1,y=0,a=0,b=0; switch(x) {
case 1:switch(y) { }
printf(\}
A. a=2,b=1
B. a=1,b=1
C. a=1,b=0
D. a=2,b=2
}
case 0:a++;break; case 1:b++;break;
case 2:a++;b++;break;
【答】A
2. 填空题
(1)有定义int x;则“x是偶数”的表达式是 。
【答】x % 2 == 0
(2)有定义int a,b;则“a是b的整数倍”的表达式是 。
【答】a % b == 0
(3)有定义int a,b,c;它们表示三个边长,则能够构成一个直角三角形的条件是 。
【答】a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a
(4)有定义int a,b,c;它们表示三个边长,则能够构成一个三角形的条件是 。
【答】(a+b 16 int k=2; switch (k) { } case 1: printf(\ break; case 2: printf(\case 3: printf(\ break; case 4: printf(\default:printf(\ 【答】k=2,执行case 2分支,k++返回2,此时k=3,输出2,后跟一空格。由于没有break语句,继续执行case 3分支,k++返回3,此时k=4,输出3,由于有break语句,退出switch语句。所以输出为:2 3。 (6)以下程序的运行结果是 。 #include 【答】a>0,s变为2。a>b为真,t=t+s=3。所以输出为:s=2,t=3。 (7)以下程序的运行结果是 。 #include 【答】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)以下程序的运行结果是 。 #include int x=0,y=2,z=3; switch(x) { int k=2; switch(k) { } printf(\ case 1:printf(\case 2:printf(\case 3:printf(\case 4:printf(\default:printf(\ VC++6.0 int s=1,t=1,a=5,b=2; if (a>0) s++; t+=s; t=5; t=2*s; if (a>b) else if (a==b) else printf(\ 17 } } case 0: switch(y==2) { } { } case 1:printf(\case 2:printf(\default:printf(\case 1:printf(\case 2:printf(\ case 1: switch(z) 【答】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'之间的为字母字符;否则为其他字符。程序如下: /*文件名:exci4_1.cpp*/ #include (2)假设今天是星期日,编写一个程序,求123456天后是星期几。 【解】星期是7天一个轮回,由于今天是星期日,所以123456除以7的余数即为星期几。程序如下: /*文件名:exci4_2.cpp*/ #include int n=123456; 18 VC++6.0 char c; printf(\输入一个字符:\scanf(\if (c>='0' && c<='9') printf(\是数字字符\\n\\n\printf(\是字母字符\\n\\n\printf(\是其他字符\\n\\n\ else if ((c>='a' && c<='z') || (c>='A' && c<='Z')) else VC++6.0 } n=n%7; printf(\星期\switch(n) { } printf(\ case 0: printf(\天\ break; break; break; break; break; break; break; case 1: printf(\一\case 2: printf(\二\case 3: printf(\三\case 4: printf(\四\case 5: printf(\五\case 6: printf(\六\ (3)编写一个程序,输入年号和月份,判断该年是否为闰年,并根据给出的月份判断是什么季节和该月有多少天?闰年的条件是年号能被4整除但不能被100整除,或者能被400整除。 【解】直接根据闰年的定义求解,如果是闰年,2月份为29天;否则为28天,其他月份相同。规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2和12月为冬季。本题程序如下: /*文件名:exci4_3.cpp*/ #include int y,m,leap,season,days; printf(\年份,月份:\scanf(\ if ((y%4==0 && y0!=0) || (y@0==0)) leap=1; leap=0; season=1; season=2; season=3; season=4; else if (m>=3 && m<=5) else if (m>=6 && m<=8) else if (m>=9 && m<=11) else VC++6.0 19 } switch (m) { } printf(\年%s闰年\\n\是\不是\switch(season) { } printf(\当月天数:%d\\n\ case 1:printf(\春季\\n\case 2:printf(\夏季\\n\case 3:printf(\秋季\\n\case 4:printf(\冬季\\n\case 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break; case 4: case 6: case 9: case 11:days=30;break; case 2: if (leap==1) days=29; days=28; else printf(\该季度是\ (4)报数游戏。A、B、C、D、E、F、G、H共8人站成一排,按图4.1所示的方法从1开始报数。问谁先报到123456? A B C D E F G H 1→ 2→ 3→ 4→ 5→ 6→ 7→ 8 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的余数加以判断即可。程序如下: /*文件名:exci4_4.cpp*/ #include VC++6.0 20