C语言练习题1-5及参考答案
更新时间:2024-01-22 18:41:01 阅读量: 教育文库 文档下载
练习题1及参考答案
1. 单项选择题
(1)以下并非C语言的特点的是 。 A. C语言简洁和紧凑 B. 能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D. C语言移植性好 【答】B
(2)一个C程序的执行是从 。 A. main()函数开始,直到main()函数结束 B. 第一个函数开始,直到最后一个函数结束 C. 第一个语句开始,直到最后一个语句结束 D. main()函数开始,直到最后一个函数结束 【答】A
(3)在C程序中,main()的位置 。 A. 必须作为第一个函数 B. 必须作为最后一个函数 C. 可以任意
D. 必须放在它所调用的函数之后 【答】C
(4)一个C程序是由 。 A. 一个主程序和若干子程序组成 B. 一个或多个函数组成 C. 若干过程组成 D. 若干子程序组成 【答】B
(5)下列说法正确的是 。
A. 在执行C程序时不是从main()函数开始的 B. C程序书写格式限制严格,一行内必须写一个语句 C. C程序书写格式比较自由,一个语句可以分行写在多行上 D. C程序书写格式严格要求一行内必须写一个语句,并要求行号 【答】C
2. 填空题
(1)一个C源程序至少有 ① 个main()函数和 ② 个其他函数。 【答】①一 ②若干
(2)任何C语句必须以 结束。
1
【答】分号
(3)C语言源程序的基本单位是 。 【答】函数
(4)C编译程序的功能是 。 【答】将C源程序编译成目标代码
2
练习题2及参考答案
1. 单项选择题
(1)以下字符串为标识符的是 。
A. _MY B. 2_2222 C. short D. LINE 5 【答】A
(2)下列符号可以作为变量名的是 。
A. +a B. *p C. _DAY D. next day 【答】C
(3)设c是字符变量,则以下表达式正确的是 。
A. c=666 B. c='c' C. c=\c=\【答】B
(4)23+'m'+3.6-123.45/'b'的结果是 型数据。
A. char B. double C. int D. long int 【答】3.6和123.45均为double型,运算结果也是double型。本题答案为B。 (5)若变量已正确赋值,以下符合C语言语法的表达式是 。 A. a=a+7; B. a=7+b+c,a++ C. int(12.3%4) D. a=a+7=c+b
【答】选项A错误,以分号结尾是一个语句而不是表达式;选项B正确,是一个逗号表达式;选项C错误,因为%求模运算的两个运算数必须均为整数;选项D错误,给一个表达式(a+7)而非变量赋值是不正确的。本题答案为B。
(6)整型变量x=1,y=3,经下列计算后,x的值不等于6的表达式是 。 A. x=(x=1+2,x*2) B. x=y>2?6:5
C. x=9-(--y)-(--y) D. x=y*(int)(4.8/2)
【答】选项A的计算过程——x=1+2=3,再计算x=x*2=6;选项B的计算过程——y>2为真,x=6;选项C的计算过程——式中有两个--运算,最后y=1,x=9-1-1=7;选项D的计算过程——x=y*(int)(4.8/2)=y*2=6。本题答案为C。 (7)若定义 int m=7,n=12;
则能得到值为3的表达式是 。
A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5)
【答】A、B、C、D选项各表达式的值分别是0、2、2、3。本题答案为D。 (8)以下程序的运行结果是 。 #include
int i=5,j=6,m=i+++j; printf(\
3
}
A. 6,6,11 B. 5,6,11 C. 5,6,12 D. 6,6,12 【答】m=i+++j等价于m=(i++)+j。本题答案为A。 (9)以下程序的运行结果是 。 #include
double f=3.14159; int n;
n=(int)(f+10)%3; printf(\} A.
1
B.
0
C.
2 D. 3
【答】f+10=13.14159,(int)(f+10)=13,13%3=1。本题答案为A。 (10)以下程序的运行结果是 。 #include
int n,i=2,j=4; n=(++i==j--); printf(\} A.
0
B.
1
C.
2 D. 3
【答】++i返回3,j--返回4,两者不等,故n=0。本题答案为A。
2. 填空题
(1)表达式语句与表达式的不同是 。
【答】语句必须以分号结尾,而表达式结尾没有分号;语句可以出现在函数体中数据定义或声明语句后面的任何位置,而表达式只能出现在语句中规定的位置或表达式中(嵌套出现)。 (2)在C语言中可以利用 将一个表达式的值转换成指定的类型。 【答】强制类型转换
(3)写出完成下列功能的表达式:
· 如果变量c是大写字母,则将c转换成对应的小写,否则c的值不改变。 ① · 如果d是数字,则将d转换成相应的整数,否则d的值不改变。 ② · 返回两个整数x、y中较大者。 ③ · 返回三个整数x、y和z中最大者。 ④ 【答】① c=(c>='A' && c<='Z') ? c-'A'+'a' : c ② d=(d>='0' && d<='9') ? d-'0' : d ③ (x>y) ? x : y
④ (x>y) ? (x>z ? x : z) : (y>z ? y : z) 或 (x>y && x>z) ? x : (y>z ? y : z) (4)以下程序的运行结果是 。
4
#include
char s[]=\
printf(\}
【答】字符串s由字符'a'、'b'、'\\n'、'\\\\'、'\\''、'\\r'、'\\b'等7个字符组成,故长度为7,但字符串本身有一个结束标志'\\0'。所以,s的长度为7,在内存中占用8个字节。输出为:8,7。 (5)以下程序的运行结果是 。 #include
int a=2,b=4,c=6,x,y; y=(x=a+b),(b+c);
printf(\}
【答】结果为y=6,x=6。
(6)以下程序的运行结果是 。 #include
char a,b; a='a';b='b'; a=a-32;b=b-32;
printf(\}
【答】A,B,65,66
(7)以下程序的运行结果是 。 #include
int i,j,x,y; i=5;j=7; x=++i;y=j++;
printf(\}
【答】执行x=++i后,i=6,x=6;执行y=j++后,j=8,y=7;所以输出为:6,8,6,7。 (8)以下程序的运行结果是 。 #include
int a=1; char c='a';
5
float f=2.0;
printf(\\\n\ printf(\\\n\ printf(\\\n\
printf(\\\n\ printf(\\\n\ printf(\\\n\}
【答】①:1 (a+2=3,c-100=-3,表达式结果=1(真)) ②:1(a>c的结果是0(假),f>4的结果是0,表达式结果=1) ③:1(!a的结果是0,!f的结果是0,表达式结果=1) ④:1(!a&&1的结果是0,!c||1的结果是1,表达式结果=1)
⑤:0(!a>2的结果是0,(!a>2)?3:0的结果是0,f!=1的结果是1,(f!=1)?0:1的结果是0,表达式结果=0)
⑥:1((1,2,3)表达式的结果是3,(3,3,3)的结果是3
6
练习题3及参考答案
1. 单项选择题
(1)以下说法正确的是 。
A. 输入项可以为一个实型常量,如scanf(\
B. 只有格式控制没有输入项也能进行正确输入,如scanf(\
C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(\D. 当输入数据时,必须指明变量的地址,如scanf(\【答】D
(2)若a为整型变量,则以下语句 。 a=-2L;
printf(\
A. 赋值不合法 B. 输出值为-2 C. 输出为不确定值 D. 输出值为2 【答】B
(3)若x和y均定义为int型,z定义为double型,以下scanf()函数调用语句不合法的是 。 A. scanf(\C. scanf(\【答】scanf()函数中没有精度控制。本题答案为D。
(4)若a,b,c均定义为int型,要给它们输入数据,正确的输入语句是 。
A. read(a,b,c); B. scanf(\C. scanf(\【答】D
(5)若有定义和语句: int n=10; printf(\其输出结果是 。
A. 输出10 B. 输出一空行 C. 没有输出 D. 编译不通过 【答】D
(6)若a是float型变量,b是unsigned型变量,以下输入语句中合法的是 。 A. scanf(\C. scanf(\【答】C
(7)字母a的ASCII码为97,则下列语句的运行结果为 。 char a='a'; a--;
printf(\
A. b,c B. a--运算不合法,故有语法错
C. 98,c D. 格式描述和输出项不匹配,输出无定值 【答】C
7
(8)若k1,k2,k3,k4均为int型变量,为了将整数10赋给k1和k3,将整数20赋给k2和k4,则对应以下scanf()函数调用语句的正确输入方式是 。 scanf(\scanf(\A. 1020 B. 10 20 C. 10,20 D. 10 20 1020 10 20 10,20 10,20 【答】D
(9)有如下程序,输入数据12345 678↙后,x的值是 ① ,y的值是 ② 。 #include
int x; float y;
scanf(\} ①
A.
12345
B.
123
45 D.345
② A. 45.000000 B. 45678.000000 C. 678.000000 D.123.000 【答】① B ② A
(10)有如下程序,输入数据25,13,10↙后,正确的运行结果是 。 #include
int x,y,z;
scanf(\ printf(\}
A. x+y+z=48 B. x+y+z=35 C. x+y+z=38 D. 不确定值 【答】输入的数据与scanf()函数的格式不匹配。本题答案为D。
(11)有如下程序,输入数据12 345↙后,x的值是 ① ,y的值是 ② 。 #include
int x; float y;
scanf(\}
8
C.
① A. 12 B. 123 C. 12345 D. 0 ② A. 12.000000 B. 345.000000 C. 12345.000000 D. 0.000000 【答】① A ② B
(12)有如下程序,输入数据9876543210↙后,程序的运行结果是 。 #include
int a; float b,c;
scanf(\ printf(\}
A. a=98,b=765,c=4321 B. a=10,b=432,c=8765 C. a=98,b=765.000000,c=4321.000000 D. a=98,b=765.0,c=4321.0 【答】C
(13)以下程序的运行结果是 。 #include
float a=3.1415; printf(\}
A. |3.1415| B. | 3.0| C. | 3| D. | 3.| 【答】C
(14)以下程序的运行结果是 。 #include
float a=3.1415; printf(\}
A. |000003| B. |3.1415| C. |00003.0| D. | 3| 【答】A
(15)以下程序的运行结果是 。 #include
float a=3.1415; printf(\}
A. |3 | B. |000003| C. |3.1415| D. |3.0 | 【答】A
(16)以下程序的运行结果是 。 #include
9
main() {
int i=010,j=10;
printf(\}
A. 11.10 B. 9,10 C. 010,9 D. 10,9 【答】B
(17)以下程序的运行结果是 。 #include
int x=10,y=10;
printf(\}
A. 10,10 B. 9,9 C. 9,10 D. 10,9 【答】D
2. 填空题
(1)以下程序的运行结果是 。 #include
float f=3.1415927;
printf(\}
【答】3.141593,3.1416,3.142 (2)以下程序的运行结果是 。 #include
float f=3.5;
printf(\}
【答】3.500000,3.5
(3)以下程序的运行结果是 。 #include
float f=31.41592; printf(\}
【答】31.415920,3.141592e+001 (4)以下程序的运行结果是 。
10
#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 } int n=123456,i; i=n; printf(\报数到%d的人是\switch(i) { } printf(\ case 1: printf(\case 2:case 14: case 3:case 13: case 4:case 12: case 5:case 11: case 6:case 10: case 7:case 9: case 8: printf(\printf(\printf(\printf(\printf(\printf(\printf(\ 程序的运行结果: 报数到123456的人是D (5)编写一个程序,求ax+bx+c=0方程的根。 【解】先计算d=b-4ac,再根据d是大于0、等于0还是小于0分别求根。程序如下: /*文件名:exci4_5.cpp*/ #include int func(float a,float b,float c,float *x1,float *x2) { } main() { float a,b,c,x1,x2,n; printf(\输入a,b,c:\float d; d=b*b-4*a*c; if (d>0) { } else if (d==0) { } else return 0; *x1=(-b)/(2*a); return 1; *x1=(-b+sqrt(d))/(2*a); *x2=(-b-sqrt(d))/(2*a); return 2; VC++6.0 2 2 21 scanf(\ n=func(a,b,c,&x1,&x2); if (n==2) { printf(\两个根:\\n\ printf(\ printf(\ } else if (n==1) { printf(\一个根:\\n\ printf(\ } else printf(\没有根\\n\ } 22 4.3 上机实验4及参考答案 实验内容 假定向国外邮寄包裹的收费如下计算:首先,包裹重量四舍五入到最近的15g的倍数,然后按表4.1收费。编写一个程序根据用户输入的包裹重量和里程计算邮费。 表4.1 包裹邮费计算表 重量(g) 收费(元) 15 5 30 9 45 12 60 14(每足1000 km加1元) 75以上 15(每足1000 km加2元) 编程要求 在程序中使用switch语句进行判断计算。 解题思路和程序代码 对于用户输入的重量w,采用如下公式四舍五入到最近的15g的倍数: x=((w+7)/15)*15 当w小于8时,x=0,但邮费应为5;当x=60或x>=60时,还应考虑里程费用。因此采用一个switch语句进行判定计算。程序如下: /*文件名:prog4.cpp*/ #include int p,w,f,x; printf(\重量,里程:\ scanf(\ x=((w+7)/15)*15; switch (x) { case 0: f=5; break; case 15: f=5; 23 VC++6.0 break; case 30: f=9; break; case 45: f=12; break; case 60: f=14+(p/1000)*1; break; default: f=15+(p/1000)*2; break; } printf(\邮费:%d元\\n\} 程序运行结果: 重量,里程:80,2300↙ 邮费:19元 24 i=i0+1; 练习题5及参考答案 if (i==20) break; } B. for (i=1;;i++) sum=sum+1; 1. 单项选择题 C. k=0; do (1)语句while (!e);中的条件!e等价于 。 { A. e==0 B. e!=1 C. e!=0 ++k; D. ~e } while (k<=0); 【答】!e等价于!(e!=0),即e==0。本题答案为A。 D. s=3379; (2)下面有关for循环的正确描述是 。 while (s++%2+3%2) A. for循环只能用于循环次数已经确定的情况 s++; B. for循环是先执行循环体语句,后判定表达式 【答】A C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号(7)与以下程序段等价的是____。 括起来 while (a) 【答】D { (3)C语言中 。 if (b) continue; A. 不能使用do-while语句构成的循环 c; B. do-while语句构成的循环必须用break语句才能退出 } C. do-while语句构成的循环,当while语句中的表达式值A. while (a) 为非零时结束循环 { if (!b) c; } D. do-while语句构成的循环,当while语句中的表达式值C. while (c) 为零时结束循环 { if (b) c; } 【答】D c; } (4)C语言中while和do-while循环的主要区别【答】A 是 。 (8)以下程序的输出结果是____。 A. do-while的循环体至少无条件执行一次 #include main() C. do-while允许从外部转到循环体内 { D. do-while的循环体不能是复合语句 int i; 【答】A for (i=4;i<=10;i++) (5)以下程序段 。 { int x=-1; if (i%3==0) continue; do printf(\{ } x=x*x; } } A. 45 B. 457810 while (!x); D. 678910 A. 是死循环 B. 循环执行二次 【答】B C. 循环执行一次 D. 有语法错误 (9)以下程序的输出结果是____。 【答】C #include main() A. i=100; { while (1) int num=0; { while (num<=2) { 25 B. while (c) D. while (a) { if (b) break; C. 69 { if (!b) break; c; } num++; printf(\ } } A. 1 B. 1 C. 1 D. 1 2 2 2 3 3 4 【答】C 2. 填空题 (1)以下程序的运行结果是____。 #include int s=0,k; for (k=7;k>=0;k--) { switch(k) { case 1: case 4: case 7: s++; break; case 2: case 3: case 6: break; case 0: case 5: s+=2; break; } } printf(\} 【答】s=7 (2)以下程序的运行结果是 。 #include if (s%7==0) continue; else ++i; } while (s<15); printf(\ } 【答】执行第1次循环时,i++返回1,i=2,s=3+1=4,执行else部分,i=3;执行第2次循环时,i++返回3,i=4,s=4+3=7,执行if部分;执行第3次循环时,i++返回4,i=5,s=7+4=11,执行else部分,i=6;执行第4次循环时,i++返回6,i=7,s=11+6=17,执行else部分,i=8,此时while条件不满足,退出循环。所以输出结果为:8。 (3)以下程序的运行结果是____。 #include int i,j; for (i=4;i>=1;i--) { printf(\ for (j=1;j<=4-i;j++) printf(\ printf(\ } } 【答】使用两重循环。本题答案为: * ** *** **** (4)以下程序的运行结果是____。 #include int i,j,k; for (i=1;i<=6;i++) { for (j=1;j<=20-2*i;j++) printf(\ for (k=1;k<=i;k++) printf(\ printf(\ } } 【答】使用两重循环。本题答案为: 1 2 2 3 3 3 26 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 (5)以下程序的运行结果是____。 #include int i,j,k; for (i=1;i<=6;i++) { for (j=1;j<=20-3*i;j++) printf(\ for (k=1;k<=i;k++) printf(\ for (k=i-1;k>0;k--) printf(\ printf(\ } } 【答】使用两重循环。本题答案为: 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1 (6)以下程序的运行结果是____。 #include int i,j,k; for (i=1;i<=4;i++) { for (j=1;j<=20-3*i;j++) printf(\ for (k=1;k<=2*i-1;k++) printf(\ printf(\ } for (i=3;i>0;i--) { for (j=1;j<=20-3*i;j++) printf(\ for (k=1;k<=2*i-1;k++) printf(\ printf(\ } } 【答】使用两重循环。本题答案为: * * * * * * * * * * * * * * * * * * * * * * * * * 3. 编程题 (1)编写一个程序,求 之值。【解】使用一个for循环即可。程序如下: /*文件名:exci5_1.cpp*/ VC++6.0 #include int i; float s; s=0; for (i=1;i<=100;i++) { if (i%2==0) /*i为偶数*/ s=s-1.0/i; else /*i为奇数*/ s=s+1.0/i; } printf(\} 程序运行结果: s=0.688172 (2)编写一个程序,求s=1+(1+2)+(1+2+3)+?+(1+2+3+?+n)的值。 【解】采用两层循环求解,外层i从1到n,里层从1到i。程序如下: /*文件名:exci5_2.cpp*/ VC++6.0 #include /* 求1+ ? +i */ for (j=1;j<=i;j++) 27 } } s1=s1+j; } do { d=n; printf(\n=n/10; s=s+s1; printf(\ (3)编写一个程序,对用户输入的字符流(以Ctrl+Z结束)中的行、单词和字符个数进行统计。 【解】用nc、nl和nw分别统计字符个数、行数和单词数。使用lnword作为单词开始与否的标记,开始时为0。lnword=0表示一个单词可以开始计数,为了使一个单词只计一次,在遇到单词的第一个字符后让lnword为1。程序如下: /*文件名:exci5_3.cpp*/ #include (4)编写一个程序,用户输入一个正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。 【解】对于正整数n,从高位到低位依次计算出它的各位上的数字d,在计算出d后立即输出该数字,输出序列构成的数正好是n的各位数字前后颠倒的结果。程序如下: /*文件名:exci5_4.cpp*/ #include int n,d; printf(\输入一个正整数:\scanf(\printf(\颠倒结果:\ 28 VC++6.0 int c,nl,nw,lnword,nc; lnword=NO; nl=1;nw=nc=0; while ((c=getchar())!=EOF) /*按Ctrl+Z输入结束*/ { } printf(\字符个数:%d,行数:%d,单词个 nc++; if (c=='\\n') nl++; /*增加一行*/ if (c==' ' || c=='\\n' || c=='\\t') lnword=NO; /*else if (lnword==NO) { } lnword=YES;++nw; VC++6.0 } while (n!=0); printf(\ (5)编写一个程序,求输入的三个正整数的最小公倍数。 【解】采用穷举法求解。输入三个整数分别为x,y和z,该最小公倍数一定是x的倍数。程序使用while循环,倍增x查找满足s % y == 0 && s % z == 0条件的s。程序如下: /*文件名:exci5_5.cpp*/ #include (6)编写一个程序,求出200到300之间的数,且满足条件:它们三个数字之积为42,三个数字之和为12。 【解】采用穷举法求解。使用两重for循环嵌套语句,i、j、k分别表示该数的百位数、十位数、个位数,i只能是2,j和k进行循环。程序如下: /*文件名:exci5_6.cpp*/ #include (7)编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12。 【解】采用穷举法求解。该数是一个四位数,其平方数只能在32到99之间,使用一个for循环即可。程序如下: int i,j,k; i=2; for (j=0;j<=9;j++) for (k=0;k<=9;k++) if (i*j*k==42 && i+j+k==12) printf(\ VC++6.0 int x,y,z,s; printf(\输入三个整数=>x,y,z:\scanf(\s=x; while (1) { } printf(\最小公倍数:%d\\n\ if (s%y==0 && s%z==0) break; s+=x; VC++6.0 不计空白符*/ 数:%d\\n\ /*文件名:exci5_7.cpp*/ #include (8)编写一个程序,求e的值。 } d=j-a*1000-b*100-c*10; if (a+c==10 && b*d==12) printf(\ c=j/10-a*100-b*10; b=j/100-a*10; int i,j,a,b,c,d; for (i=32;i<=99;i++) { j=i*i; VC++6.0 { int n,s; s=n=0; while (s<=1000) { ++n; s=s+n*n; /*j为要找的数*/ /*a为j的千位数/*b为j的百位数/*c为j的十位数 } printf(\} (10)编写一个程序,从键盘输入一个整数,将每位数字转变为英文,如输入9124,则输出:nine,one,two,four。 【解】使用一个for循环获取输入的每个数字,然后使用switch语句进行转变。程序如下: /*文件名:exci5_10.cpp*/ #include char c; int i; printf(\输入一个数:\ for (i=0;(c=getchar())!='\\n';i++) { } printf(\ if (i>0) printf(\switch(c) { } case '0':printf(\case '1':printf(\case '2':printf(\case '3':printf(\case '4':printf(\case '5':printf(\case '6':printf(\case '7':printf(\case '8':printf(\case '9':printf(\ a=j/1000; /*d为j的个位数*/ VC++6.0 【解】设 ,则 。采 用do-while循环语句,程序如下: /*文件名:exci5_8.cpp*/ #include (9)编写一个程序,求满足如下条件的最大的n: float t,e=0; int n=2; t=1; do { e+=t; t=t/n++; VC++6.0 } } while (t>1.0e-6); printf(\ 【解】采用穷举法求解。最大的n从1开始找起,然后递增n,并且每次计算累加平方和s,当s大于1000时,这时的得。程序如下: /*文件名:exci5_9.cpp*/ #include 29 VC++6.0 即为所 (11)某人摘下一些桃子,卖掉一半,又吃了一只;第二天卖掉剩下的一半,又吃了一只;第三天、第四天、第五天都如此办理,第六天一看,发现就剩下一只桃子了。编写一个程序,采用迭代法问某人共摘了多少只桃子。 【解】经分析有: 第6天的桃子数: 第5天的桃子数:第4天的桃子数:第3天的桃子数:第2天的桃子数:第1天的桃子数: 迭代变量为n,迭代初值为 ,迭代表达式为 , 迭代条件为5≥i≥1。程序如下: /*文件名:exci5_11.cpp*/ #include n=(n+1)*2; printf(\ } VC++6.0 30
正在阅读:
C语言练习题1-5及参考答案01-22
墨尔本大学城市设计与规划专业07-19
大学物理C考试公式01-15
四年级解决问题及有关答案11-12
2017-2018学年人教版必修2:第22课 战后资本主义世界经济体系的形成(作业)10-24
高中历史学科学生自主学习能力的培养策略08-19
武术必备基本功动作图解分析04-18
基于DSP的数字信号采集处理系统设计05-10
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 练习题
- 答案
- 语言
- 参考
- 分析化学课试卷(带标准答案)
- 评估材料目录
- 房地产定价计算免税临界点(DOC)
- 人教版小学语文六年级下册《匆匆》评课记录
- 2018年10月国庆入党申请书范文
- 关于化工项目必须进入园区的政策文件汇总分析
- 2015年全国水利安全生产知识网络竞赛答案(六)
- 憨山老人年谱自叙实录文白对照
- 养老院创业计划书 - 图文
- fluent使用总结
- 浅析党委、政务信息写作
- 莆田市秀屿区土海生态湿地公园(一期)修建性详细规划设 - 图文
- 爆破吹扫方案
- 工商管理论文3
- 2018-2019学年北师大版七年级上学期期末数学测试题及答案
- 初中语文七年级(下)第一单元测试(A)
- 甲级单位编制纸包装制品项目可行性报告(立项可研+贷款+用地+2013案例)设计方案
- 招标文件--山东融汇城音乐中心(A2地块)施工总承包工程
- 长沙一日游
- 《财务管理学》练习 第三章 工业企业要素费用核算