-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
C
语言习题
100
例(最新整理版)
习题目
录:
(
按住
Ctrl
< br>点击可以快速跳转到对应页面
)
【程序
1
】
.......................................
..................................................
. 12
题目:有
1
、
2
、
3
、
4
个数字,能组成多少个互不相同且无重复数字的三位数
?都是多
少?
..........
..................................................
.........
12
【程序
2
】
.......................................
..................................................
. 14
题目:企业发放的奖金根据利润提成。利润
(I)
低于或等于
10
万元时,奖金可提
10%
;
利润高于<
/p>
10
万元
,
低于
20
万元时
,
低于
10
万元的部分按
10%
提成
,
高于
10
万元的部分,
可可提成
7.5%
;
20
万到
40
万之间时,高于
20
万元的部分,可提成
5%
;
40
万到
60
万之
间时高于
4
0
万元的部分,可提成
3%
;
60
万到
100
万之间
时,高于
60
万元的部分,可提
成
p>
1.5%
,高于
100
万元时,超过
100
万元的部分按
1%
提成,从键盘输入当月利润
I
,求
应发放奖金总数?
........
.................................................
14
【程序
3
】
..................................................
...............
16
题目:一个整数,它加上
100
后是一个完全平方数,再加
上
168
又是一个完全平方数,
请问该
数是多少?
......................
...................................
16
【程序
4
】
..................................................
...............
17
题目:输入某年某月某日,判断这一天是这一年的第几天?
.
...................
17
【程序
5
】
..................................................
...............
19
题目:输入三个整数
x,y,z
,请把这三个数由小到大输
出。
....................
19
【程序
6
】
..................................................
...............
20
1
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
题目:用
*
号输出字母
C
的图案。
p>
.............................
.............
20
【程序
7
】
..................................................
...............
21
题目:输出特殊图案,请在
c
环境中运行,看一看,
VeryBeautiful!
.
...........
21
【程序
8
】
..................................................
...............
21
题目:输出
9*9
口诀。
..........................................
.........
21
【程序
9
】
..................................................
...............
22
题目:要求输出国际象棋棋盘。
..
.........................................
22
【程序
10
】
..................................................
..............
24
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
...........................
24
【程序
11
】
..................................................
..............
25
题目:古典问题:有一对兔子,从出生后第
3
个月起每个月都
生一对兔子,小兔子长
到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的
兔子总数为多少?
25
【程序
12
】
..................................................
..............
26
题目:判断
101-200
之间有多少个素数,并输出所有素
数。
.
...................
26
【程序
13
】
..................................................
..............
27
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字
立
方和等于该数本身。例如:
153
是一个“水仙花数”,因为<
/p>
153=1
的三次方+
5
的三次
方+
3
的三次方。
p>
........................................
.................
27
【程序
14
】
..................................................
..............
28
2
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
< br>题目:将一个正整数分解质因数。例如:输入
90,
打印
出
90=2*3*3*5
。
.
.........
28
【程序
15
】
..................................................
..............
30
题目:利用条件运算符的嵌套来完成此题:学习成绩
>=90
分的同学用
A
表示,
60-89
分之间的用
B
表示,
60
分以下的用
C
表示。
...................................
30
【程序
16
】
..................................................
..............
31
题目:输入两个正整数
m
和
n
,求其最大公约数和最小公倍数。
................
31
【程序
17
】
..................................................
..............
32
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
32
【程序
18
】
..................................................
..............
33
题
目
:
求
s
=a+aa+aaa+aaaa+aa...a
的
值
,
其
中
a
是
一
个
数
字
。
例
如
2+22+222+2222+22222(
此时共有
5
个数相加
)
,几个数相加有键盘控制。
.
..........
33
【程序
19
】
..................................................
..............
34
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如
6=1
+
2
+
3.
编程找出
1000
以内的所有完数。
1.
程序分析:请参照程序
<--
上页程序
14. .......
34
【程序
20
】
..................................................
..............
36
题目:一球从
100
米高度自由落下,每次落地后反跳回原高
度的一半;再落下,求它
在第
10
次落
地时,共经过多少米?第
10
次反弹多高?
.........................
36
【程序
21
】
..................................................
..............
37
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃
了
一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一
3
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
天剩下的一半零一个。到
第
10
天早上想再吃时,见只剩下一个桃子了。求第一天共摘了
多少。
.............
..................................................
....
37
【程序
22
】
..................................................
..............
38
题目:两个乒乓球队进行比赛,各出三人。甲队为
a,b,c
三人,乙队为
x,y,z
三人。
已抽签
决定比赛名单
。
有人向队员打听比赛的名单
。
a
说他不和
x
< br>比
,
c
说他不和
x,z
比,
请编程序找出三队赛手的名单。
................................
.............
38
【程序
23
】
..................................................
..............
39
题目:打印出如下图案(菱形)
************************
****
.
...............
39
【程序
24
】
..................................................
..............
41
题目:有一分数序列:
2/1
,
3/
2
,
5/3
,
8/5
,
13/8
,
< br>21/13...
求出这个数列的前
20
项
之和。
........
..................................................
.........
41
【程序
25
】
..................................................
..............
42
题目:求
1+2!+3!+...+20!
的和
.
.....................
......................
42
【程序
26
】
..................................................
..............
42
题目:利用递归方法求
5!
。
p>
.
.............................
.................
42
【程序
27
】
..................................................
..............
44
题目:利用递归函数调用方式,将所输入的
5
个字符,以相反
顺序打印出来。
....
44
【程序
28
】
..................................................
..............
46
题目:有
5
个人坐在一起,问第五个人多少岁?他说比第
p>
4
个人大
2
岁。问
第
4
个人
岁数,他说比第
3
个人大
2
岁。问第三个人
,又说比第
2
人大两岁。问第
2
个人,说比
4
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
第一个人大两岁。最后问第一个人,他说是
10
岁。请问第五个人多大?
...........
46
【程序
29
】
..................................................
..............
47
题目:给一个不多于
5
位的正整数,要求:一、求它是几位数
,二、逆序打印出各位
数字。
1.
程
序分析:学会分解出每一位数,如下解释:
(
这里是一种简单的
算法,师专
数
002
班赵鑫提供
)
.............................
...........................
47
【程序
30
】
..................................................
..............
48
题目:一个
5
位数,判断它是不是回文数。即
12321
是回文数,个位与万位相同,十
位与千位相
同。
.........................
..................................
48
【程序
31
】
..................................................
..............
49
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继
续
判断第二个字母。
...................
....................................
49
【程序
32
】
..................................................
..............
51
题目:
Pressanykeytochangecolor,hurryup!
.
.........
51
【程序
33
】
..................................................
..............
52
题目:学习
gotoxy()
与
cl
rscr()
函数
......................................
52
【程序
34
】
..................................................
..............
53
题目:练习函数调用
1.
程序分析:
...........
.............................
53
【程序
35
】
..................................................
..............
54
题目:文本颜色设置
.......
..............................................
54
【程序
36
】
..................................................
..............
55
5
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
题目:求
100
之内的素数
..
...............................................
55
【程序
37
】
..................................................
..............
56
题目:对
10
个数进行排序
..........................................
......
56
【程序
38
】
..................................................
..............
58
题目:求一个
3*3
矩阵对角线元素之和
.....................................
58
【程序
39
】
..................................................
..............
59
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1.
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,
插
入后
.............
..................................................
......
59
【程序
40
】
..................................................
..............
61
题目:将一个数组逆序输出。
...
..........................................
61
【程序
51
】
..................................................
..............
62
题目:学习使用按位与
&
。
..........................................
......
62
【程序
52
】
..................................................
..............
63
题目:学习使用按位或
|
。
..........................................
......
63
【程序
53
】
..................................................
..............
64
题目:学习使用按位异或
^
。
p>
.........................................
.....
64
【程序
54
】
..................................................
..............
65
题目:取一个整数
a
从右端开始的
4
~
7
位。
................................
65
6
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
【程序
55
】
..................................................
..............
66
题目:学习使用按位取反
~
。
p>
.........................................
.....
66
【程序
56
】
..................................................
..............
66
题目:画图,学用
circle
画圆形。
........................................
66
【程序
57
】
..................................................
..............
68
题目:画图,学用
line
画直线。
.......................................
...
68
【程序
58
】
..................................................
..............
70
题目:画图,学用
rectangle
画方形。
.....................................
70
【程序
59
】
..................................................
..............
71
题目:画图,综合例子。
.....
............................................
71
【程序
60
】
..................................................
..............
74
题目:画图,综合例子。
.....
............................................
74
【程序
61
】
..................................................
..............
77
题目:打印出杨辉三角形(要求打印出
10
行如下图)
.........................
77
【程序
62
】
..................................................
..............
78
题目:学习
putpixel
画点。
.......................................
.......
78
【程序
63
】
..................................................
..............
79
题目:画椭圆
ellipse
.
p>
.........................................
..........
79
7
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
【程序
64
】
..................................................
..............
81
题目:利用
ellipseandrectangle
画图。
...................................
81
【程序
65
】
..................................................
..............
82
题目:一个最优美的图案。
....
...........................................
82
【程序
66
】
..................................................
..............
85
题目:输入
3
个数
a,b,c
,按大小顺序输出。
................................
85
【程序
67
】
..................................................
..............
86
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
.......................................
..................................
86
【程序
68
】
..................................................
..............
89
题目:有
n
个整数,使其前面各数顺序向后移
m
个位置,最后
m
个数变成最
前面的
m
个数
.................................................
....................
89
【程序
69
】
..................................................
..............
90
题目:有
n
个人围成一圈,顺序排号。从第一个人开始报数(
从
1
到
3
报数
)
,凡报到
3
的人退出圈子,问最后留
下的是原来第几号的那位。
1.
程序分析:
.............
90
【程序
70
】
..................................................
..............
92
题目:写一个函数,求一个字符串的长度,在
main
函数中
输入字符串,并输出其长度。
..............
..................................................
.........
92
【程序
71
】
..................................................
..............
93
题目:编写
input()
和
out
put()
函数输入,输出
5
个学生的
数据记录。
.
.........
93
8
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
【程序
72
】
..................................................
..............
96
题目:创建一个链表。
......
.............................................
96
【程序
73
】
..................................................
..............
98
题目:反向输出一个链表。
....
...........................................
98
【程序
74
】
..................................................
.............
100
题目:连接两个链表。
......
............................................
100
【程序
75
】
..................................................
.............
104
题目:放松一下,算一道简单的题目。
....................................
104
【程序
76
】
..................................................
.............
105
题目:编写一个函数,输入
n
为偶数时,调用函数求
1/2+1/4+...+1/n,
当输入
n<
/p>
为奇
数时,调用函数
1/1+1/3+.
..+1/n(
利用指针函数
)
.............................
105
【程序
77
】
..................................................
.............
108
题目:填空练习(指向指针的指针)
......................................
108
【程序
78
】
..................................................
.............
109
题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
.
..............
109
【程序
79
】
..................................................
.............
110
题目:字符串排序。
.......
.............................................
110
【程序
80
】
..................................................
.............
111
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多
9
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均
分成五份,又多了一个,它同样把多的一个扔入海中,拿
走了一份,第三、第四、第五
只猴子都是这样做的,问海滩上原来最少有多少个桃子?<
/p>
.
......................
111
【程序
81
】
..................................................
.............
113
题目:
809*??=800*??+9*??+1
其中
p>
??
代表的两位数
,8*??
的结果为两位数,
9*??
的结果
< br>为
3
位数。求
??
代表的两位数,及
809*??
后的结果。
..........................
113
【程序
82
】
..................................................
.............
114
题目:八进制转换为十进制
....
..........................................
114
【程序
83
】
..................................................
.............
115
题目:求
0
—
7
所能组成的奇数个数。
.....................................
115
【程序
84
】
..................................................
.............
116
题目:一个偶数总能表示为两个素数之和。
................................
116
【程序
85
】
..................................................
.............
117
题目:判断一个素数能被几个
9
整除
......................................
117
【程序
86
】
..................................................
.............
118
题目:两个字符串连接程序
....
..........................................
118
【程序
87
】
..................................................
.............
119
题目:回答结果(结构体变量传递)
......................................
119
【程序
88
】
..................................................
.............
121
10
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
题目:读取
7
个数(
1
—
50
)的整数值,每读取一个值,程序打印出该值个数的*。
................................
........................................
121
【程序
89
】
..................................................
.............
122
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,
加密规则如下:每位数字都加上
5,
然后用和除以
10
的余数代替该数字,再将第一位和第
四位交换,
第二位和第三位交换。
.................
.........................
122
【程序
90
】
..................................................
.............
123
题目:专升本一题,读结果。
...
.........................................
123
【程序
91
】
..................................................
.............
124
题目:时间函数举例
1
.
............................................ ......
124
【程序
92
】
..................................................
.............
125
题目:时间函数举例
2
.
............................................ ......
125
【程序
93
】
..................................................
.............
126
题目:时间函数举例
3
.
............................................ ......
126
【程序
94
】
..................................................
.............
127
题目:时间函数举例
4,
一个猜数游戏,判断一个人反应快慢
。
(版主初学时编的)
127
【程序
95
】
..................................................
.............
129
题目:家庭财务管理小程序
....
..........................................
129
【程序
96
】
..................................................
.............
138
11
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
题目:计算字符串中子串出现的次数
......................................
138
【程序
97
】
..................................................
.............
140
题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个
#
为止。
..
140
【程序
98
】
..................................................
.............
141
题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁
盘
文件“
test
”中保存。输入的字符串以!结束。
............................
141
【程序
99
】
..................................................
.............
142
题目
:
有两个磁盘文件
A
和
B,
各存放一行字母
,
要求把这两个文件中的信息合并
(
按字
母
顺序排列
),
输出到一个新文件
p>
C
中
.
....
.....................................
142
【程序
100
】
......................
........................................
145
题目
:
有五个学生
,
每个学生有
3
门课的成绩
,
从键盘输
入以上数据
(
包括学生号
,
姓名
,
三门课成绩
),<
/p>
计算出平均成绩
,
况原有的数据和计算出
的平均分数存放在磁盘文件
中
.
p>
.........................................
......................
145
<
/p>
标准
C
语言头文件
.....................................
.....................
147
【程序
1
】
题目:有
1
、
2
、
3
、
4<
/p>
个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.
程序分析:可填在百位、十位、个位的数字都是
1
、
2
、
3
、
4
。组成所有的排列
后再去
掉不满足条件的排列。
12
233
234
235
236
2.
程序源代码:
#include
main(void)
237
238
{
239
240
241
242
243
244
245
246
247
248
249
250
251
int x,y,z,sum;
sum=0;
printf(
正在计
算中
n
printf(
for(x=1
;x<5;++x)
for(y=1;y<5;++y)
for(z=1;z<5;++z)
{
if(x!=y&&x!=z&&y!=z)
{
printf(
13
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
}
}
++sum;
}
printf(
====================
==========================================
【程序
2
】
题目:企业发放的奖金根据利润提成。利润
< br>(I)
低于或等于
10
万元时,
奖金可提
10%
;利润
高于
10
万元,低于
20
万元
时,低于
10
万元的部分按
10%
p>
提成,高于
10
万元的部分,可可提
成
7.5%
;
20<
/p>
万到
40
万之间时,高于
20
万元的部分,可提成
5%
;
40
万到
60
万之间时高于
40
万元的部分,可提成
3%
;
60
万到
100
万之间时,高于
60
万元的
部分,可提成
1.5%
,高于
100<
/p>
万元时,超过
100
万元的部分按
1%
提成,从键盘输入当月利润
I
,求应发放奖金总数?
1.
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
2.
程序源代码:
main()
{
long
int i;
int
bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf(
14
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
bonus1=10
0000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else
if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf(
}
15
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
< br>=============================================== ===============
【程序
3
】
题目:一个整数,它加上
100
p>
后是一个完全平方数,再加上
168
又是一
个完全平方数,请问
该数是多少?
1
.
程序分析:
在
10
< br>万以内判断,
先将该数加上
100
后再开方,
再将该数加上
268
后再
开方,
如果开方后
的结果满足如下条件,即是结果。请看具体分析:
2.
程序源代码:
#include
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100);
/*x
为加上
100
后开方后的结
果
*/
y=sqrt(i+268);
/*y
为再加上
168
后开方后的结果
*/
if(x*x==i+100&&y*y==i+268)/*
如果一个数的平方根的平方等于该数,这说明此数
是完全平方数
*/
printf(
}
16
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
}
=========================
=====================================
【程序
4
】
题目:输入某年某月某日,判断这一天是这一年的第几天?
<
/p>
1.
程序分析:以
3
月
5
日为例,应该先把前两个月的加起来,然后再加上
p>
5
天即本年的第
几天,特殊
情况,
闰年且输入月份大于
3
时需考虑多加一天。
2.
程序源代码:
main()
{
int
day,month,year,sum,leap;
printf(
scanf(
switch(month)/*
先计
算某月以前月份的总天数
*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
17
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
case
5:sum=120;break;
case
6:sum=151;break;
case
7:sum=181;break;
case
8:sum=212;break;
case
9:sum=243;break;
case
10:sum=273;break;
case
11:sum=304;break;
case
12:sum=334;break;
default:printf(
}
sum=sum+day;
/*
再加上某天的天数
*/
if(year%400==0||(year%4==0&
&year%100!=0))/*
判断是不是闰年
*/
leap=1;
else
leap=0;
if(leap
==1&&month>2)/*
如果是闰年且月份大于
2,<
/p>
总天数应该加一天
*/
sum++;
printf(
18
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
============================================ ==================
【程序
5
】
题目:输入三个整数
x,y,z
p>
,请把这三个数由小到大输出。
1.
p>
程序分析:我们想办法把最小的数放到
x
上
,先将
x
与
y
进行比较,如果
x>y
则将
x
与
y
的值进行交换,
然后再用
x
与
z
进行比较,如果
x>z
则将
x
与
z
的值进行交换,这样能使
x
最小。
2.
程序源代码:
main()
{
int
x,y,z,t;
scanf(
if (x>y)
{t=x;x=y;y=t;} /*
交换
x,y
的值
*/
if(x>z)
{t=z;z=x;x=t;}/*
交换
x,z
的值
*/
if(y>z)
{t=y;y=z;z=t;}/*
交换
z,y
的值
*/
printf(
19
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
}
=========================
=====================================
【程序
6
】
题目:用
*
号输出字母
C
的图案。
1.
程序分析:可先用
'*'
号在纸上写出字母
C
,再分行输出。
2.
程序源代码:
#include
main()
{
printf(
printf(
printf(
printf(
pri
ntf(
}
=====================
=========================================
20
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
【程序
7
】
题目:输出特殊图案,请在
c
环境中运行,看一看,
VeryBeautiful!
1.
程序分析:字符共有
256
个。不同字符,图形不一样。
2.
程序源代码:
#include
main()
{
char a=176,b=219;
printf(
printf(
printf(
p>
printf(
printf(
=====
==================================================
=======
【程序
8
】
题目:输出
9*9
< br>口诀。
1.
程序分析:分行与
列考虑,共
9
行
9
列,
i
控制行,
j
控制列。
2.
程序源代码:
21
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
#include
main()
{
int i,j,result;
printf(
for
(i=1;i<10;i++)
{ for(j=1;j<10;j++)
{
result=i*j;
p>
printf(
表示左对齐,占
3
位
*/
}
printf(
每一行后换行
*/
}
}
=======================================
=======================
【程序
9
】
题目:要求输出国际象棋棋盘。
<
/p>
1.
程序分析:用
i
控制行,
j
来控制列,根据
i+j
的和的变化来控制输出黑方格,还是白方
格。
< br>
22
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
2.
程序源代码:
#include
main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((i+j)%2==0)
printf(
else
printf(
printf(
}
}
===========
==================================================
=
23
435
436
437
【程序
10
】
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.
程序分析:用
i
控制
行,
j
来控制列,
j
< br>根据
i
的变化来控制输出黑方格的个数。
438
2.
程序源代码:
439
#include
440
main()
441
{
442
int i,j;
443
printf(
输出两个笑脸
*/
444
for(i=1;i<11;i++)
445
{
446
for(j=1;j<=i;j++)
447
printf(
448
printf(
449
}
450
}
451
452
453
24
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
【程序
11
】
题目:古典问题:有一对兔子,从出生后第
< br>3
个月起每个月都生一对兔子,小兔子长到第三
个月后每
个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.
程序分析:
兔子的规律为数列
1,1,2,3,5,8,13,21....
2.
程序源代码:
main()
{
long
f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{ printf(
if(i%2==0)
printf(
控制输出,每行四个
*/
f1=f1+f2;
/*
前两个月加起来赋值给第三个月
*/
f2=f1+f2;
/*
前两个月加起来赋值给第三个月
*/
}
}
=================================================
=============
25
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
【程序
12
】
题目:判断
101-200
之间有多少个素数,并输出所有素数。
1.<
/p>
程序分析:判断素数的方法:用一个数分别去除
2
到
sqrt(
这个数
)
,如果能被整除,
则表明此数不是素数,反之是素数。
2.
程序源代码:
#include
main()
{
int
m,i,k,h=0,leap=1;
printf(
for(m=101;m<=200;m++)
{ k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;}
if(leap)
{printf(
if(h%10==0)
printf(
26
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
}
leap=1;
}
printf(
}
=======
==================================================
=====
【程序
13
】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一
个三位数,其各位数字立方和
等于该数本身。例如:
153
p>
是一个“水仙花数”,因为
153=1
的三
次方+
5
的三次方+
3
的三
次方。
1.
程序分析:利用
for
循环控制
< br>100-999
个数,每个数分解出个位,十位,百位。
2.
程序源代码:
main()
{
int
i,j,k,n;
printf(
for(n=100;n<1000;n++)
{
i=n/100;/*
分解出百位
*/
27
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
j=n/10%10;/*
分解出十
位
*/
k=n%10;/*
分解出个位
*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf(
}
}
printf(
}
=======
==================================================
=====
【程序
14
】
题目:将一个正整数分解质因数。例如:输入
90,
打印出
90=2*3*3*5
< br>。
程序分析:对
n
进行分解质因数,应先找到一个最小的质数
k
,然后按下述步骤完成:
(1)
如果这个质数恰等于
n
,则说明分解质
因数的过程已经结束,打印出即可。
(2)
如果
n<>k
,但
n
能被
k
整除,则应打印出
k
的值,并用
n
除以
k
的商
,
作为新的正整数
p>
你
n,
重复执行第一步。
(3)
如果
n
不能被
k
整除,则用
k+1
作为
k
的值
,
重复执行第一步。
28
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
2.
程序源代码:
/* zheng int is divided yinshu*/
main()
{
int
n,i;
printf(
scanf(
printf(
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{ printf(
n=n/i;
}
else
break;
29
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
}
}
printf(
=====================
=========================================
【程序
15
】
题目:
利用条件运算符的嵌套来完成
此题:
学习成绩
>=90
分的同学用<
/p>
A
表示,
60-89
分之间
的用
B
表示,
60
分以下的用
C
表示。<
/p>
1.
程序分析:
(a>b)?a:b
这是条件运算符的基本例子。
2.
程序源代码:
main()
{
int score;
char
grade;
printf(
scanf(
grade=scor
e>=90?'A':(score>=60?'B':'C');
printf(
}
=======
==================================================
=====
30
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
【程序
16
】
题目:输入两个正整数
m
和
n
,求其最大公约数和最小公倍数。
1.
程序分析:利用辗除法。
2.
程序源代码:
main()
{
int a,b,num1,num2,temp;
printf(
scanf(
if(num1
{ temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*
利用辗除法,直到
b
为
0
为止
*/
{
temp=a%b;
a=b;
31
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
b=temp;
}
printf(
printf(
}
=======================================
=======================
【程序
17
】
题目:输入一行字符,分别统计出其中英文字母、空格、数字
和其它字符的个数。
1.
程序分析:
利用
while
语句
,
条件为输入的字符不为
'n'.
2.
程序源代码:
#include
main()
{char c;
int
letters=0,space=0,digit=0,others=0;
printf(
while((c=getchar())!='n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
32
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
letters++;
else if(c==' ')
space++;
else
if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf(
space,digit,others);
}
=========================
=====================================
【程序
18
】
题目:
求
s
=a+aa+aaa+aaaa+aa...a
的值,
其中
p>
a
是一个数字。
例如
2+22+222+2222+22222(
此
时共有
5
个数相加
)
,几个
数相加有键盘控制。
1.
程序分析:
关键是计算出每一项的值。
2.
程序源代码:
main()
{
33
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
int
a,n,count=1;
long int
sn=0,tn=0;
printf(
scanf(
printf(
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
}
printf(
}
=======
==================================================
=====
【程序
19
】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完
数”。例如
6=1
+
2
+
3.
编程
找出
1000
以内的所有完数。
1.
< br>程序分析:请参照程序
<--
上页程序
< br>14.
2.
程序源代码:
34
642
main()
643
{
644
static int k[10];
645
int i,j,n,s;
646
for(j=2;j<1000;j++)
647
{
648
n=-1;
649
s=j;
650
for(i=1;i
{
651
if((j%i)==0)
652
{
n++;
653
s=s-i;
654
k[n]=i;
655
}
656
}
657
if(s==0)
658
{
659
printf(
35
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
for(i=0;i
printf(
printf(
}
}
}
===========
==================================================
=
【程序
20
】
题目:一球从
100
米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第
10
p>
次落地时,共经过多少米?第
10
次反弹多
高?
1.
程序分析:见下面注释
2.
程序源代码:
main()
{
float
sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
s
n=sn+2*hn;/*
第
n
次落地
时共经过的米数
*/
hn=hn/2; /*
第
n
次反跳高度
*/
36
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
}
printf(
printf(
}
【程序
21
】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了
一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,
又多吃了一个。
以后每天早上都吃了前一天剩下的一半
零一
个。到第
10
天早上想再吃时,见只剩下一个桃子了。求第一天
共摘了多少。
1.
程序分析:采取逆
向思维的方法,从后往前推断。
2.
程序源代码:
main()
{
int
day,x1,x2;
day=9;
x2=1;
while(day>0)
{x
1=(x2+1)*2;/*
第一天的桃子数是第
2
天桃子数加
1
后的
2
p>
倍
*/
x2=x1;
37
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
day--;
}
printf(
}
===========================================
===================
【程序
22
】
题目:两个乒乓球队进行比赛,各出三人。甲队为
a,b,c
三人,乙队为
x,y,z
三人。已抽签
决定比赛名单。有人向队员打听比赛的名单。
< br>a
说他不和
x
比,
c
说他不和
x,z
比,请编
程序
找出三队赛手的名单。
1.
p>
程序分析:判断素数的方法:用一个数分别去除
2
< br>到
sqrt(
这个数
)
,如果能被整除,
则表明此数不是素数,反之是素数。
2.
程序源代码:
main()
{
char i
,j,k;/*i
是
a
的对手,
j
是
b
的对手,
p>
k
是
c
的对手
p>
*/
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
if(i!=j)
38
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
for(k='x';k<='z';k++)
{
if(i!=k&&j!=k)
{
if(i!='x'&&k!='x'&&k!='z')
printf(
}
}
}
}
=========================
=====================================
【程序
23
】
题目:打印出如下图案(菱形)
**
**************************
1.
程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重
for
循
环,第一层控制行,第二层控制列。
2.
程序源代码:
main()
{
int
i,j,k;
for(i=0;i<=3;i++)
39
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
{
for(j=0;j<=2-i;j++)
printf(
for(k=0;k<=2*i;k++)
printf(
printf(
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf(
for(k=0;k<=4-2*i;k++)
printf(
printf(
}
}
=========================
=====================================
40
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
【程序
24
】
题目:有一分数序列:
2/1
,
3/2
,
5/3<
/p>
,
8/5
,
13
/8
,
21/13...
求出这个数列
的前
20
项之和。
< br>1.
程序分析:请抓住分子与分母的变化规律。
2.
程序源代码:
main()
{
int
n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;/*
这部分是程序的关键,请读者猜猜
t
的作用
*/
}
printf(
}
=======
==================================================
=====
41
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
【程序
25
】
题目:求
1+2!+3!+...+
20!
的和
1.
程序分析:此程序只是把累加变成了累乘。
2.
程序源代码:
main()
{
float
n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf(
}
=======
==================================================
=====
【程序
26
】
题目:利用递归方法求
5!
。
1.
程序分析:递
归公式:
fn=fn_1*4!
42
787
2.
程序源代码:
788
#include
789
main()
790
{
791
int i;
792
int fact();
793
for(i=0;i<5;i++)
794
printf(
795
}
796
int
fact(j)
797
int j;
798
{
799
int sum;
800
if(j==0)
801
sum=1;
802
else
803
sum=j*fact(j-1);
804
return sum;
43
805
806
807
808
}
==========
==================================================
==
【程序
27
】
题目:利用递归函数调用方式,将所输入的
< br>5
个字符,以相反顺序打印出来。
809
1.
程序分析:
810
2.
程序源代码:
811
#include
812
main()
813
{
814
int i=5;
815
void palin(int n);
816
printf(
817
palin(i);
818
printf(
819
}
820
void palin(n)
821
int n;
822
{
44
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
char
next;
if(n<=1)
{
next=getchar();
printf(
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
===========
==================================================
=
45
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
【程序
28
】
题目:有
5
个人坐在一起,问第五个人多少岁?他说比第
4
个人大
2
岁。问第
4
个人岁数
,
他说比第
3
个人大
< br>2
岁。问第三个人,又说比第
2
人大两岁。问第
2
个人,说比第一个人大两
岁。最后问第一个人,他说是
10
岁。请问第五个人多大?
1.
程序分析:利用递归的方法,递
归分为回推和递推两个阶段。要想知道第五个人岁数,
需知道
第四人的岁数,依次类推,推到第
一人(
10
岁)
,再往回推。
2.
程序源代码:
age(n)
int n;
{
int c;
if(n==1) c=10;
else c=age(n-1)+2;
return?;
}
main()
{ printf(
}
46
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
========================
======================================
【程序
29
】
题目:给一个不多于
5
位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
1. <
/p>
程序分析:学会分解出每一位数,如下解释:
(
< br>这里是一种简单的算法,师专数
002
班赵鑫
提供
)
2.
程序源代码:
main( )
{
long
a,b,c,d,e,x;
scanf(
a=x/1000
0;/*
分解出万位
*/
b=x%
10000/1000;/*
分解出千位
*/
c=x%1000/100;/*
分解出百位
*/
d=x%100/10;/*
分解出十位
*/
e=x%10;/*
分解出个位
*/
if (a!=0) printf(
else if
(b!=0) printf(
else if (c!=0) printf(
else if (d!=0) printf(
47
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
else if (e!=0) printf(
}
==========================================
====================
【程序
30
】
题目:一个
5
位数,判断它是不是回文数。即
12321
是回文数,个位与
万位相同,十位与千
位相同。
1.<
/p>
程序分析:同
29
例
2.
程序源代码:
main( )
{
long
ge,shi,qian,wan,x;
scanf(
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if (ge==wan&&shi==qian)/*
个位等
于万位并且十位等于千位
*/
printf(
else
48
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
printf(
}
【程序
31
】
题目:
请输入星期几的第一个字母来
判断一下是星期几,
如果第一个字母一样,
则继续判断
第二个字母。
1.
程
序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或
if
语句判断
第二个字母。
2.
程序源代码:
#include
void
main()
{
char letter;
printf(
while ((letter=getch(
))!='Y')/*
当所按字母为
Y
时才结束
*/
{ switch (letter)
{case 'S':printf(
if((letter=getch())=='a')
printf(
49
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
else if
((letter=getch())=='u')
printf(
else printf(
break;
case
'F':printf(
case
'M':printf(
case 'T':printf(
if((letter=getch())=='u')
printf(
else if ((letter=getch())=='h')
printf(
else
printf(
break;
case 'W':printf(
default:
printf(
}
}
}
50
-
-
-
-
-
-
-
-
-
上一篇:iphone越狱后三种常用格式软件、游戏安装方法
下一篇:展会常用英语口语