几个C语言程序

青山蓝山 Lv7

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# include <stdio.h>
int main()
{
int a[10];
int i,j,t;
printf("10 numbers ");
for(i = 0;i < 10;i++){
scanf("%d",&a[i]);
}
printf("\n");
for(j = 0;j < 9;j++){
for(i = 0;i < 9-j;i++){
if(a[i]>a[i+1]){
t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
}
}
printf("the sorted numbers: ");
for(i = 0;i < 10;i++){
printf("%d",a[i]);
}
printf("\n");
}

选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>

void sort(int array[], int n)
{
int i, j, k, t;
for (i = 0; i < n - 1; i++) {
k = i;
for (j = i + 1; j < n; j++) {
if (array[j] < array[k]) {
k = j;
}
}
t = array[k];
array[k] = array[i];
array[i] = t;
}
}
int main()
{
int a[10], i;
printf("enter array:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
sort(a, 10);
printf("the sorted array:\n");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
}

字符倒序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>

void inverse(char s[])
{
int l = strlen(s);
for (int i = 0; i < l / 2; i++) {
char t = s[i];
s[i] = s[l - i - 1];
s[l - 1 - i] = t;
}
}

int main()
{
char s1[100];
printf("please input string:");
gets(s1);
inverse(s1);
printf("inverse srting:%s", s1);
printf("\n");
}

指针排两大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>

void swap(int *p1, int *p2)
{
int t;
t = *p1;
*p1 = *p2;
*p2 = t;
}
int main()
{
int a, b;
int *pointer_1,*pointer_2;
printf("a and b:");
scanf("%d %d", &a, &b);
pointer_1 = &a;
pointer_2 = &b;
if (a < b) {
swap(pointer_1, pointer_2);
}
printf("max=%d,min=%d", a, b);
printf("\n");
}

指针排三个数大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>

void swap(int *p1, int *p2)
{
int t;
t = *p1;
*p1 = *p2;
*p2 = t;
}

int main()
{
int a, b, c;
int *s1, *s2, *s3;
printf("输入3个数:");
scanf("%d %d %d", &a, &b, &c);
s1 = &a;
s2 = &b;
s3 = &c;
if (*s1 > *s2)
{
swap(s1, s2);
}
if (*s1 > *s3)
{
swap(s1, s3);
}
if (*s2 > *s3)
{
swap(s2, s3);
}
printf("小到大为: %d %d %d", a, b, c);
printf("\n");
}

四则计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>

int main()
{
int a, b;
double c;
char op;
printf("整数a和b和运算符:");
scanf("%d %d", &a, &b);
printf("输入运算符:");
scanf(" %c", &op);

switch (op)
{
case '+':
printf("a+b=%d\n", (a + b));
break;
case '-':
printf("a-b=%d\n", (a - b));
break;
case '*':
printf("a*b=%d\n", (a * b));
break;
case '/':
if (b == 0)
{
printf("除数不能为零!\n");
}
else
{
printf("a/b=%.2f\n",(double)a / (double)b);
}
break;
default:
printf("输入的运算符无效!\n");
break;
}
}

判断闰年

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int main()
{
int year;
printf("请输入年份:");
scanf("%d", &year);
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
printf("%d 是闰年\n", year);
else
printf("%d 不是闰年\n", year);
return 0;
}

判断第几天

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
int main()
{
int y, m, d, d2;
printf("输入年月日:");
scanf("%d %d %d", &y, &m, &d);
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
d2 = 1;
} else
d2 = 0;
switch (m) {
case 12: d = d + 30;
case 11: d = d + 31;
case 10: d = d + 30;
case 9: d = d + 31;
case 8: d = d + 31;
case 7: d = d + 30;
case 6: d = d + 31;
case 5: d = d + 30;
case 4: d = d + 31;
case 3: d = d + 28 + d2;
case 2: d = d + 31;
case 1: d = d;
}
printf("It is the %dth day.\n", d);
return 0;
}

选择填空

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
1. (单选题)以下说法中不正确的是( )。

A. 一个C源程序可由一个或多个函数组成
B. C语言程序总是从第一个定义的函数开始执行
C. C程序的基本组成单位是函数
D. 一个C源程序必须包含一个main函数

正确答案:B :C语言程序总是从第一个定义的函数开始执行;

2. (单选题)下列对 “算法” 的描述,最准确的是()

A. 算法必须有输入,且输入的个数不少于 1
B. 算法的每一步操作都必须是明确、无歧义的
C. 算法的执行时间可以是无限的,只要逻辑正确即可
D. 算法的输出可以有多个,也可以没有输出

正确答案:B :算法的每一步操作都必须是明确、无歧义的;

3. (单选题)C 语言结构化程序设计对应的流程图中,不包含以下哪种基本结构?()

A. 顺序结构
B. 跳转结构
C. 选择(分支)结构
D. 循环结构

正确答案:B :跳转结构;

4. (单选题)下列字符串是标识符的是( )

A. _HJ
B. 9_student
C. long
D. LINE 1

正确答案:A :_HJ;

5. (单选题)若有定义: `int a=7;float x=2.5;y=4.7`;
则表达式`x+a%3*(int)(x+y)%2/4` 的值是( )

A. 2.500000
B. 2.750000
C. 3.500000
D. 0.000000

正确答案:A :2.500000;

6. (单选题)下列运算符中优先级最低的是( )。

A. <
B. +
C. &&
D. !=

正确答案:C :&&;

7. (单选题)在C语言循环结构中,breakcontinue 语句的正确描述是:( )

A. break 用于跳过当前循环剩余代码并进入下一次循环,continue 用于立即终止整个循环。
B. 两者都可以在循环和 switch 语句中使用。
C. continue 只能在循环中使用,而 break 可以在循环和 switch 语句中使用。
D. 在嵌套循环中,breakcontinue 都默认作用于所有层循环。

正确答案:C :continue 只能在循环中使用,而 break 可以在循环和 switch 语句中使用。;

8. (单选题)程序段如下:则以下说法中正确的是:
int k=5;
do{
k--;
}while(k<=0);

A. 循环执行5
B. 循环是无限循环
C. 循环体语句一次也不执行
D. 循环体语句执行一次

正确答案:D :循环体语句执行一次;

9. (单选题)以下能正确定义数组并正确赋初值的语句是 ( )

A. int n=5,b[n][n];
B. int a[1][2]={{1},{3}};
C. int c[2][]={{1,2},{3,4}};
D. int a[3][2]={{1,2},{3,4}};

正确答案:D :int a[3][2]={{1,2},{3,4}};;

10. (单选题)以下对C语言函数的有关描述中,正确的是( )。

A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B. 函数既可以嵌套定义又可以递归调用
C. 函数必须有返回值,否则不能使用函数
D. 程序中有调用关系的所有函数必须放在同一个源程序文件中

正确答案:A :调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参;

11. (单选题)当调用函数时,实参是一个数组名,则向函数传送的是_____。

A. 数组的长度
B. 数组的首地址
C. 数组每一个元素的地址
D. 数组每个元素中的值

正确答案:B :数组的首地址;

12. (单选题)有如下程序段 `int *p,a=10,b=1;p=&a;a=*p+b`;
执行该程序段后,a的值为( )

A. 12
B. 11
C. 10
D. 编译出错

正确答案:B :11;

13. (单选题)以下关于C语言程序结构的说法,正确的是()。

A. 一个C源程序可以没有main函数
B. C程序的执行入口是第一个定义的函数
C. 函数是C程序的基本组成单位
D. 单个C源程序文件中只能定义一个函数

正确答案:C :函数是C程序的基本组成单位;

14. (单选题)下列关于算法特性的描述,错误的是()。

A. 算法的每一步操作必须有确切的含义,无歧义
B. 算法必须在有限步骤内结束(有穷性)
C. 算法可以没有输入,但必须有输出
D. 算法的执行步骤可以是模糊的,只要最终结果正确

正确答案:D :算法的执行步骤可以是模糊的,只要最终结果正确;

15. (单选题)下列标识符中,符合C语言命名规则的是()。

A. 3num
B. _price
C. float
D. name-1

正确答案:B :_price;

16. (单选题)若有定义:int a=9; float x=3.5, y=5.5;,则表达式 x + a%5 * (int)(x+y) % 3 / 2 的值是()。

A. 3.500000
B. 4.500000
C. 5.500000
D. 6.500000

正确答案:A :3.500000;

17. (单选题)下列运算符中优先级最高的是()。

A. =
B. *
C. ||
D. >

正确答案:B :*;

18. (单选题)关于C语言中breakcontinue语句,描述正确的是()。

A. break可用于循环和switch语句,continue仅用于循环
B. continue用于终止整个循环,break用于跳过本次循环剩余语句
C. 嵌套循环中,break会终止所有层循环
D. switch语句中可以使用continue语句

正确答案:A :break可用于循环和switch语句,continue仅用于循环;

19. (单选题)执行以下程序段后,k的值是()。
int k=3;​
do{​
k -= 2;​
}while(k>0);

A. 1
B. -1
C. 3
D. 0

正确答案:B :-1;

20. (单选题)已知ch是字符型变量,下面不正确的赋值语句是( )。

A. ch=‘a+b’;
B. ch=‘\0’;
C. ch=‘7’+‘9’;
D. ch=5+9;

正确答案:A :ch=‘a+b’;;

21. (单选题)以下关于C语言函数的描述,正确的是()。

A. 函数可以嵌套定义
B. 实参和形参的类型必须完全一致
C. 调用函数时,实参的值会传递给形参(值传递),形参修改不影响实参
D. 所有函数都必须有返回值

正确答案:C :调用函数时,实参的值会传递给形参(值传递),形参修改不影响实参;

22. (单选题)若定义int a[10],*p=&a[0]; 则p+5 表示的是( )。

A. 数组元素a[5]的值
B. 数组元素a[5]的地址
C. 数组元素a[6]的值
D. 数组元素a[6]的地址

正确答案:B :数组元素a[5]的地址;

23. (单选题)执行以下程序段后,b的值是()。
int *p, a=5, b=8;
p=&b;
b=*p + a;

A. 13
B. 8
C. 5
D. 编译错误

正确答案:A :13;

二. 填空题(共10题,31分)
24. (填空题)

执行下面程序段后,C的值为____

int a=20;

char c='b';

int C;

C=((a=5)||(c>'Z'));


正确答案: 1


25. (填空题)

2. 程序运行后,则输出结果为____。

#include<stdio.h>

void main()

{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i];i++;} printf("k=%dn",k);}


正确答案: k=24

26. (填空题)

以下程序运行后,输出结果是 ____ 。

fun(int x, int y,int z){

z=x*x+y*y;}

main0

{ int a=31;

fun(5,2,a);

printf("%d",a);}


正确答案: 31

27. (填空题)

以下程序运行后,输出结果是 ____

#include <stdio.h>

int main() {

int arr[5] = {5, 10, 15, 20, 25};

int *p = arr;

int *q = &arr[3];

int result = q - p + *p + *q;

printf("%d\n", result);

return 0;



正确答案: 28

28. (填空题)

执行以下C语言程序段后,变量res的值为______。

int num = 15;

char ch = 'F';

int res;

res = (num % 4 == 3) || ((ch - 'A') < 5);


正确答案: 1

29. (填空题)

程序运行后,输出结果为____。

#include <stdio.h>

int main() {

int arr[6]={22,24,25,27,28,30},i=0,sum=0;

while(i<6 && arr[i]%2==0){

sum += arr[i];

i++;

}

printf("sum=%d\n",sum);

return 0;

}

正确答案: sum=46

AI讲解
30. (填空题)

以下程序运行后,输出结果是____。

int fun(int m, int n) {

return m + n;

}

int main() {

int a = 10;

a = fun(7, 8);

printf("%d", a);

Return 0;

}


正确答案: 15

31. (填空题)

以下程序运行后,输出结果是____。

void fun(int m, int n, int *k)

{

*k = m + n;

}

int main() {

int a = 10;

fun(5, 8, &a);

printf("%d", a);

return 0;

}

正确答案: 13

32. (填空题)

一球从100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米以及第十次反弹多高?请完善以下程序。

int main()

{float Sn=100.0,hn=Sn/2;

int n;

for (n=2;n<=①;n++)

②;

hn=③ ;}

printf("第10次落地时共经过%f米\n",Sn);

printf("第10次反弹%f米\n",hn);

}

正确答案: (1) 10
(2) Sn=Sn+2*hn
(3) hn/2

33. (填空题)

1. 编写程序计算 1+3+5+…+99 的累加和(即 1100 之间所有奇数的和),请完善以下程序。

int main() {

int sum = 0;

int i;

for(① ; i<=99; ② ) {

③ ; }

printf("1到99所有奇数的和为:%d\n", sum);

return 0;

}

正确答案: (1) i=1
(2) i+=2
(3) sum=sum+i

  • 标题: 几个C语言程序
  • 作者: 青山蓝山
  • 创建于 : 2025-12-24 16:31:37
  • 更新于 : 2026-01-04 17:23:47
  • 链接: https://blog.qingshanls.icu/2025/12/24/somecpp project/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论