demo_3_21

  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 }

 

posted @ 2022-03-21 22:03  小团熙  阅读(49)  评论(0)    收藏  举报