1 #define _CRT_SECURE_NO_WARNINGS 1
2 #include <stdio.h>
3 #include <stdlib.h>
4 int main()
5 {
6 int array[100];
7 //向array数组中填充1~100所有数据
8 for (int i = 0; i < 100; i++)
9 {
10 array[i] = i + 1;
11 }
12 //1不是素数,将1划掉-->使用0进行填充
13 array[0] = 0;
14 for (int i = 1; i < 100; ++i)
15 {
16 if (0 == array[i]) continue;
17 //现在需要使用array[i]去模其之后所有数据
18 for (int j = i + 1; j < 100; ++j)
19 {
20 if (0!=array[j]&&array[j] % array[i]==0)
21 {
22 array[j] = 0;
23 }
24 }
25 }
26 //输出所有素数
27 for (int i = 0; i < 100; ++i)
28 {
29 if (0 != array[i])
30 {
31 printf("%d ", array[i]);
32 }
33 }
34 printf("\n");
35 system("pause");
36 return 0;
37 }
38
39
40 int main()
41 {
42 int i, j;
43 int array[10] = { 2, 8, 3, 9, 5, 7, 1, 4, 0, 6 };
44 int maxPos=0,temp;
45 int size_arr = sizeof(array) / sizeof(array[0]);
46 for (i = 0; i < size_arr; ++i)
47 {
48 printf("%d ", array[i]);
49 }
50 printf("\n");
51 //设置循环的趟数
52 for (i = 0; i < size_arr; ++i)
53 {
54 //具体选择的方式
55 //用选择法来排序
56 maxPos = 0;
57 for (j = 1; j < size_arr-i; ++j)
58 {
59 if (array[j]>array[maxPos])
60 {
61 maxPos = j;
62 }
63 }
64 //判断,已经找到元素最大值,就不需要交换了
65 if (maxPos != size_arr - i - 1)
66 {
67 //将最大值的空间与当前值的空间交换
68 temp = array[maxPos];
69 array[maxPos] = array[size_arr - i - 1];
70 array[size_arr - i - 1] = temp;
71 }
72 }
73 for (i = 0; i < size_arr; ++i)
74 {
75 printf("%d ", array[i]);
76 }
77 printf("\n");
78 system("pause");
79 return 0;
80 }
81
82
83 int main()
84 {
85 int array[3][3];
86 int i, j;
87 int array_left = 0, array_right = 0;
88 //接受矩阵中的数据
89 for (i = 0; i < 3; ++i)
90 {
91 for (j = 0; j < 3; ++j)
92 {
93 scanf("%d", &array[i][j]);
94 }
95 }
96 //求左上角到右下角对角线元素之和
97 //行下标与列下标是相等的
98 for (i = 0; i < 3; ++i)
99 {
100 array_left += array[i][i];
101 }
102 //右上角到左下标对角线元素之和
103 for (i = 0, j = 2; i < 3; i++)
104 {
105 array_right += array[i][j];
106 }
107 printf("求左上角到右下角对角线元素之和 %d\n", array_left);
108 printf("右上角到左下标对角线元素之和 %d\n", array_right);
109 system("pause");
110 return 0;
111 }
112
113
114 int main()
115 {
116 int key = 0;
117 int end = 8;
118 int array[10] = { 0, 1, 2, 3, 4, 6, 7, 8, 9 };
119 printf("请输入要插入的元素:>");
120 scanf("%d", &key);
121 printf("原数组中的元素:0, 1, 2, 3, 4, 6, 7, 8, 9\n");
122 //找待插入元素在数组中的位置--从后往前进行查找
123 //注意:如果待插入元素比较数组中任何一个元素小
124 //因此end应该保证大于等于0,防止越界情况
125 while (key < array[end] && end >= 0)
126 {
127 array[end + 1] = array[end];
128 end--;
129 }
130 //插入元素
131 array[end + 1] = key;
132 for (int i = 0; i < 10; ++i)
133 {
134 printf("%d ", array[i]);
135 }
136 printf("\n");
137 system("pause");
138 return 0;
139 }
140
141
142 int main()
143 {
144 int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
145 printf("逆序之前数组元素序列为:");
146 for (int i = 0; i < sizeof(array)/sizeof(array[0]); ++i)
147 {
148 printf("%d ", array[i]);
149 }
150 //从左侧找一个数据,从右侧找一个数据
151 int begin=0, end=sizeof(array)/sizeof(array[0])-1;
152 //定义临时变量进行交换
153 int temp = 0;
154 while (begin < end)
155 {
156 temp = array[begin];
157 array[begin] = array[end];
158 array[end] = temp;
159 begin++;
160 end--;
161 }
162 printf("\n");
163 //打印输出
164 printf("逆序之后数组元素序列为:");
165 for (int i = 0; i < sizeof(array)/sizeof(array[0]); ++i)
166 {
167 printf("%d ", array[i]);
168 }
169 printf("\n");
170 system("pause");
171 return 0;
172 }
173
174
175 int main()
176 {
177 int i, j;
178 //保存杨辉三角形中的数据
179 int array[10][10];
180 for (i = 0; i < 10; ++i)
181 {
182 //每一行进行赋值
183 for (j = 0; j <= i; ++j)
184 {
185 if (j == 0 || i == j)
186 {
187 array[i][j] = 1;
188 }
189 else{
190 //其他位置
191 array[i][j] = array[i - 1][j] + array[i - 1][j - 1];
192 }
193 }
194 }
195 //一行一行的进行打印
196 for (i = 0; i < 10; ++i)
197 {
198 for (j = 0; j <= i; ++j)
199 {
200 printf("%6d ", array[i][j]);
201 }
202 printf("\n");
203 }
204 system("pause");
205 return 0;
206 }
207
208
209 //奇魔方阵
210 int main()
211 {
212 int array[100][100] = { 0 };
213 int N;
214 int row = 0, col = 0;
215 int prevRow = 0, prevCol = 0;
216 int i,j;
217 while (1)
218 {
219 printf("请输入奇魔方阵的阶数,阶数是3-100之内的奇数:");
220 scanf("%d", &N);
221 if (0 != N % 2 && (N >= 3 && N < 100))
222 {
223 break;
224 }
225 }
226 //放置1:第0行中间的位置
227 col = N / 2;
228 array[row][col] = 1;
229 //对于剩余的N^2-1个元素,按照以下规则来存放
230 for (i = 2; i <= N*N; ++i)
231 {
232 //下一个元素存放在当前元素上一行下一列
233 row--;
234 col++;
235 if (row < 0)
236 {
237 row = N - 1;
238 }
239 if (col >= N)
240 {
241 col = 0;
242 }
243 if (0 != array[row][col])
244 {
245 //row,col该位置已经有元素--前一个元素当前列的下一行
246 row = prevRow + 1;
247 col = prevCol;
248 }
249 array[row][col] = i;
250 prevRow = row;
251 prevCol = col;
252 }
253 //将魔方阵输出
254 for (i = 0; i < N; ++i)
255 {
256 for (j = 0; j < N; ++j)
257 {
258 printf("%4d", array[i][j]);
259 }
260 printf("\n");
261 }
262 system("pause");
263 return 0;
264 }
265
266
267 #define M 3
268 #define N 4
269 int main()
270 {
271 int array[M][N];
272 int i, j;
273 int max, pos=0,flag=0;
274 printf("请输入%d行%d列二维数组:\n",M,N);
275 for (i = 0; i < M; ++i)
276 {
277 for (j = 0; j < N; ++j)
278 {
279 scanf("%d", &array[i][j]);
280 }
281 }
282 //找鞍点
283 for (i = 0; i < M; ++i)
284 {
285 //找该行最大的元素
286 max = array[i][0];
287 for (j = 0; j < N; ++j)
288 {
289 if (array[i][j]>max)
290 {
291 max = array[i][i];
292 pos = j;
293 }
294 }
295 //确认该元素是否为该列上最大的元素
296 //列号不变,行号增加
297 for (j = 0; j < M; ++j)
298 {
299 if (array[j][pos] < max)
300 {
301 //不是鞍点,就直接跳出循环
302 break;
303 }
304 }
305 //如果在pos列没有发现比max小的元素,说明max是pos是列上最小的元素
306 if (j == M)
307 {
308 //鞍点找到了
309 printf("鞍点为:%d行,%d列%d", i, pos, array[i][pos]);
310 flag = 1;
311 break;
312 }
313 }
314 if (flag != 1)
315 {
316 printf("没有鞍点\n");
317 }
318 system("pause");
319 return 0;
320 }
321
322
323 int main()
324 {
325 int left=0, right=0, mid;
326 int key;
327 int array[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
328 //区间采用左闭右开
329 left = 0;
330 right = sizeof(array) / sizeof(array[0]);
331 printf("请输入待查找的数据:>");
332 scanf("%d", &key);
333 while (left < right)
334 {
335 //找中间位置
336 //该求中间位置的方式可能为溢出
337 //mid = (left + right) / 2;
338 mid = left + ((right - left) >> 1);
339 //与中间位置数据进行比较
340 //相等-->找到了
341 //大于-->中间位置数据
342 //小于-->中间位置数据
343 if (key == array[mid])
344 {
345 printf("找到该元素,其在数组中的下标为:%d\n", mid);
346 break;
347 }
348 else if (key < array[mid])
349 {
350 left = mid + 1;
351 }
352 else {
353 right = mid;
354 }
355 }
356 if (left == right)
357 {
358 printf("抱歉,没有这个数\n");
359 }
360 system("pause");
361 return 0;
362 }
363
364 int main()
365 {
366 int left = 0, right = 0, mid;
367 int key;
368 int array[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
369 //区间采用左闭右闭
370 left = 0;
371 right = sizeof(array) / sizeof(array[0])-1;
372 printf("请输入待查找的数据:>");
373 scanf("%d", &key);
374 while (left <= right)
375 {
376 //找中间位置
377 //该求中间位置的方式可能为溢出
378 //mid = (left + right) / 2;
379 mid = left + ((right - left) >> 1);
380 //与中间位置数据进行比较
381 //相等-->找到了
382 //大于-->中间位置数据
383 //小于-->中间位置数据
384 if (key == array[mid])
385 {
386 printf("找到该元素,其在数组中的下标为:%d\n", mid);
387 break;
388 }
389 else if (key < array[mid])
390 {
391 left = mid + 1;
392 }
393 else {
394 right = mid-1;
395 }
396 }
397 if (left > right)
398 {
399 printf("抱歉,没有这个数\n");
400 }
401 system("pause");
402 return 0;
403 }
404
405
406 int main()
407 {
408 //先输入三行文本
409 //不能使用scanf接收三行文本
410 //scanf 遇到空格、回车就不往后输入了
411 char sz[3][80] = { 0 };
412 int i ,j;
413 int upper = 0, lower = 0, digit = 0, space = 0, other = 0;
414 for (i = 0; i < 3; ++i)
415 {
416 gets(sz[i]);
417 }
418 //统计
419 for (i = 0; i < 3; ++i)
420 {
421 //只需要在该行中统计到\0的位置
422 for (j = 0; sz[i][j] != '\0'; ++j)
423 {
424 //A-Z
425 if (sz[i][j] >= 'A'&&sz[i][j] <= 'Z')
426 {
427 upper++;
428 }
429 //a-z
430 else if (sz[i][j] >= 'a'&&sz[i][j] <= 'z')
431 {
432 lower++;
433 }
434 //0-9
435 else if (sz[i][j] >= '0'&&sz[i][j] <= '9')
436 {
437 digit++;
438 }
439 //' '
440 else if (sz[i][j] == ' ')
441 {
442 space++;
443 }
444 //其他字符
445 else {
446 other++;
447 }
448 }
449 }
450 printf("大写字母有:%d\n", upper);
451 printf("小写字母有:%d\n", lower);
452 printf("数字字符有:%d\n", digit);
453 printf("空格字符有:%d\n", space);
454 printf("其他字符有:%d\n", other);
455 system("pause");
456 return 0;
457 }
458
459
460 int main()
461 {
462 int i ,j;
463 for (i = 0; i < 5; ++i)
464 {
465 //前面的空格
466 for (j = 0; j < 2 * i; ++j)
467 {
468 printf(" ");
469 printf("* * * * *");
470 }
471 //后面的星号
472
473 printf("\n");
474 }
475
476 system("pause");
477 return 0;
478 }
479
480
481 int main()
482 {
483 //获取暗文
484 //假设暗文长度为100个字符
485 char sz[100];
486 gets(sz);
487 //解码--'A'+(26-(ch-'A')-1)
488 //只对字母进行解码
489 for (int i = 0; sz[i]!='\0'; ++i)
490 {
491 //'A'-'Z'
492 if (sz[i] >= 'A'&&sz[i] <= 'Z')
493 {
494 sz[i] = 'A' + (26 - (sz[i] - 'A') - 1);
495 }
496 if (sz[i] >= 'z'&&sz[i] <= 'z')
497 {
498 sz[i] = 'a' + (26 - (sz[i] - 'a') - 1);
499 }
500 }
501 printf("解码为:%s\n", sz);
502 system("pause");
503 return 0;
504 }
505
506
507 int main()
508 {
509 char dst[100] = { 0 };
510 char src[50] = { 0 };
511 int i = 0,j=0;
512 printf("请输入目标字符串:>");
513 gets(dst);
514 printf("请输入源字符串:>");
515 gets(src);
516 //找到s1的末尾
517 while (dst[i]!='\0')
518 {
519 i++;
520 }
521 //将src中的每个字符逐个拷贝到dst中
522 while (src[j] != '\0')
523 {
524 dst[i] = src[j];
525 i++;
526 j++;
527 }
528 //注意:需要拷贝'\0'
529 dst[i] = '\0';
530 printf("%s\n", dst);
531 system("pause");
532 return 0;
533 }
534
535
536 int main()
537 {
538 char s1[100] = { 0 };
539 char s2[100] = { 0 };
540 int ret = 0, i = 0;
541 printf("请输入s1:>");
542 gets(s1);
543 printf("请输入s2:>");
544 gets(s2);
545 //字符串比较规则:只需要将两个字符串逐个进行比较,减法
546 //while ((ret = (s1[i] - s2[i]) != 0) && s1[i] && s2[i])
547 do
548 {
549 ret = s1[i] - s2[i];
550 if (0 != ret)
551 {
552 break;
553 }
554 i++;
555 } while (s1[0] != '\0'&&s2[0] != '\0');
556 printf("%d\n", ret);
557 system("pause");
558 return 0;
559 }
560
561
562
563 int main()
564 {
565 char s1[100] = { 0 };
566 char s2[100] = { 0 };
567 int i = 0;
568 printf("请输入要拷贝的字符串:>");
569 gets(s2);
570 //拷贝方式:将s2中的每个字符逐个拷贝到s1
571 //while (s1[i] = s2[i++])
572 //先将s2中的元素拷贝到s1[i]
573 //s1[i]中的字符作为判断条件
574 //i++考虑到后面的字符
575 while (s2[i] != '\0')
576 {
577 s1[i] = s2[i];
578 i++;
579 }
580 //把\0赋给s1
581 s1[i] = '\0';
582 printf("拷贝后的字符串s1为:%s\n", s1);
583 system("pause");
584 return 0;
585 }
586
587
588 int main()
589 {
590 char a = 'H';
591 a = (a >= 'A'&&a <= 'Z') ? (a - 'A' + 'a') : a;
592 printf("%c\n", a);
593
594 system("pause");
595 return 0;
596 }
597
598 int f(int x)
599 {
600 return x = x + 1;
601 }
602 int main()
603 {
604 int a, b = 0;
605 for (a = 0; a < 3; a++)
606 {
607 b = b + f(a);
608 putchar('A' + b);
609 }
610 system("pause");
611 return 0;
612 }
613
614 int main()
615 {
616 int a[] = { 10, 20, 30, 40 }, *p = a, i;
617 for (i = 0; i <= 3; i++)
618 {
619 a[i] = *p;
620 p++;
621 }
622 printf("%d\n", a[2]);
623 system("pause");
624 return 0;
625 }
626
627 #define N 3
628 void fun(int a[][N], int b[])
629 {
630 int i, j;
631 for (i = 0; i < N; i++)
632 {
633 b[i] = a[i][0];
634 for (j = 1; j < N; j++)
635 {
636 if (b[i] < a[i][j]) b[i] = a[i][j];
637 }
638 }
639 }
640 int main()
641 {
642 int x[N][N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, y[N], i;
643 fun(x, y);
644 for (i = 0; i < N; i++)
645 {
646 printf("%d,", y[i]);
647 }
648 printf("\n");
649 system("pause");
650 return 0;
651 }
652
653 int main()
654 {
655 char a[10] = "abc", b[10] = "012", c[10] = "xyz";
656 strcpy(a + 1, b + 2);
657 puts(strcat(a, c + 1));
658 system("pause");
659 return 0;
660 }
661
662 int main()
663 {
664 char *s = "12134";
665 int k = 0, a = 0;
666 while (s[k + 1] != '\0')
667 {
668 k++;
669 if (k % 2 == 0)
670 {
671 a = a + (s[k] - '0' + 1); continue;
672
673 }
674 a = a + (s[k] - '0');
675 }
676 printf("k=%d a=%d\n", k, a);
677 system("pause");
678 return 0;
679 }
680
681 int main()
682 {
683 char a[5][10] = { "one", "two", "three", "four", "five" };
684 int i, j;
685 char t;
686 for (i = 0; i < 4; i++)
687 {
688 for (j = i + 1; j < 5; j++)
689 {
690 if (a[i][0]>a[j][0])
691 {
692 t = a[i][0];
693 a[i][0] = a[i][0];
694 a[i][0] = t;
695 }
696 puts(a[1]);
697 }
698 }
699
700 system("pause");
701 return 0;
702 }
703
704 int a = 1, b = 2;
705 void fun1(int a, int b)
706 {
707 printf("%d %d", a, b);
708 }
709 void fun2()
710 {
711 a = 3, b = 4;
712 }
713 int main()
714 {
715 fun1(5, 6);
716 fun2();
717 printf("%d %d\n", a, b);
718 system("pause");
719 return 0;
720 }
721
722 void func(int n)
723 {
724 static int num = 1;
725 num = num + n;
726 printf("%d ", num);
727 }
728 int main()
729 {
730 func(3);
731 func(4);
732 printf("\n");
733 system("pause");
734 return 0;
735 }
736
737 void fun(int *p1, int *p2, int *s)
738 {
739 s = (int *)malloc(sizeof(int));
740 *s = *p1 + *p2;
741 free(s);
742 }
743 int main()
744 {
745 int a = 1, b = 40, *q = &a;
746 fun(&a, &b, q);
747 printf("%d\n", *q);
748 system("pause");
749 return 0;
750 }
751
752 int main()
753 {
754 FILE *fp;
755 int i, s[6] = { 1, 2, 3, 4, 5, 6 };
756 fp = fopen("d2.dat", "w+");
757 for (i = 0; i < 6; i++)
758 {
759 fprintf(fp, "%d\n", s[i]);
760 }
761 rewind(fp);
762 for (i = 0; i < 6; i++)
763 {
764 fscanf(fp, "%d", &s[5 - i]);
765 }
766 fclose(fp);
767 for (i = 0; i < 6; i++)
768 {
769 printf("%d,", s[i]);
770 }
771 system("pause");
772 return 0;
773 }