代码日常(1)
1/2
将数据按照奇偶排
输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1,3,5,7,9,2,4,6,8,10。(提示:可定义2个数组,一个用来存放输入的整数,并对这个数组进行排序,然后将数据按先奇数后偶数的顺序分别复制到另一个数组中,再输出第二个数组,注意最后一个数据的格式与前面9个不同)。
程序运行结果如下:
Input 10 numbers:
3 12 7 65 8 4 17 25 36 50↙
Output: 3,7,17,25,65,4,8,12,36,50
输入格式: “%d”
输入数据提示信息:”Input 10 numbers:\n”
输出格式:
输出数据提示信息:”Output: “ (注:冒号“:”的后面有一个空格)
前9个数据的输出格式:”%d,”
最后一个数据的输出格式:”%d\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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>
void bubble(int* a, int n);
int main() { int a[10]; int b[10]; int i, k = 0;
printf("Input 10 numbers:\n"); for (i = 0; i < 10; i++) { scanf("%d", &a[i]); }
bubble(a, 10);
for (i = 0; i < 10; i++) { if (a[i] % 2 != 0) { b[k] = a[i]; k++; } } for (i = 0; i < 10; i++) { if (a[i] % 2 == 0) { b[k] = a[i]; k++; } }
printf("Output: "); for (i = 0; i < 9; i++) { printf("%d,", b[i]); } printf("%d\n", b[9]);
return 0; }
void bubble(int a[], int n) { int i, j, temp; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1 - i; j++) { if (a[j] > a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } }
|
==只用了两个数组,逻辑清晰(先排好序,再按顺序“捡”进新数组)。==
2/2
*将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍,问应当怎样分。
**输出格式要求:”No.%d: %d %d %d\n”
思路提示:对第一个3位数进行穷举,然后2,3分别得到另外两个数。再判断3个数的9个位是否有重复数据(建议把这9个数位分别求出后存入一维数组,再编写一个函数判断一维数组中是否有重复数据。重复数据的判断就是两两比较,只要有一个相等的,就return 0,循环结束后return 1))
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
| #include <stdio.h>
int judge(int, int, int);
int main() { int count = 1, num1, num2, num3; for (int i = 1; i <= 9; i++) { for (int j = 1;j <= 9;j++) { for (int k = 1;k <= 9;k++) { num1 = k + j * 10 + i * 100; num2 = num1 * 2; num3 = num1 * 3; if (num3 >= 1000) { return 0; } if (!judge(num1, num2, num3)) { printf("No.%d: %d %d %d\n", count, num1, num2, num3); count++; } else { continue; } } } } return 0; } int judge(int num1, int num2, int num3) { int a[9]; int digit = num1 + num2 * 1000 + num3 * 1000000; for (int i = 0;i < 9;i++) { a[i] = digit % 10; digit = digit / 10; } for (int i = 0;i < 9;i++) { for (int j = 0;j < 9;j++) { if ((i != j && a[i] == a[j]) || a[i] == 0 || a[j] == 0) { return 1; } } } 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
| #include <stdio.h> #include <stdbool.h>
int check(int n1, int n2, int n3);
int main() { int num1, num2, num3; int count = 1;
for (num1 = 123; num1 <= 329; num1++) { num2 = num1 * 2; num3 = num1 * 3;
if (num3 >= 1000) break;
if (check(num1, num2, num3)) { printf("No.%d: %d %d %d\n", count++, num1, num2, num3); } } return 0; }
int check(int n1, int n2, int n3) { int used[10] = {0}; int nums[3] = {n1, n2, n3}; for (int i = 0; i < 3; i++) { int temp = nums[i]; while (temp > 0) { int digit = temp % 10; if (digit == 0 || used[digit] == 1) { return 0; } used[digit] = 1; temp /= 10; } } return 1; }
|