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 }