py 3 年 前
コミット
337b7ccffa

+ 2 - 0
.gitignore

@@ -0,0 +1,2 @@
+.idea
+cmake-build-debug

+ 14 - 0
144 字符串中A的数量.c

@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+int main() {
+    char s[100] = {0};
+    scanf("%s", s);
+    int i = 0;
+    while (s[i++]);
+    int n = 0;
+    for (int j = 0; j < i; ++j) {
+        if (s[j] == 'A') n++;
+    }
+    printf("%d\n", n);
+    return 0;
+}

+ 22 - 0
145. 最长的名字.c

@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <string.h>
+
+int main() {
+    int n;
+    scanf("%d", &n);
+    int k;
+    int max_k = 0;
+    char result[100] = {0};
+    for (int i = 0; i < n; ++i) {
+        k = 0;
+        char s[100] = {0};
+        scanf("%s", s);
+        while (s[++k]);
+        if (k > max_k) {
+            max_k = k;
+            strcpy(result, s);
+        }
+    }
+    printf("%s\n", result);
+    return 0;
+}

+ 26 - 0
146 字符串.c

@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <ctype.h>
+
+int main() {
+    char s[50] = {0};
+    scanf("%s", s);
+    int i = 0;
+    while (s[i]) {
+        if (isalpha(s[i])){
+            switch (s[i]){
+                case 'z':
+                    s[i] = 'a';
+                    break;
+                case 'Z':
+                    s[i] = 'A';
+                    break;
+                default:
+                    s[i]++;
+            }
+        }
+        i++;
+
+    }
+    printf("%s\n", s);
+    return 0;
+}

+ 21 - 0
148 字符反转.c

@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <string.h>
+
+void swap(char *a, char *b) {
+    char tmp;
+    tmp = *b;
+    *b = *a;
+    *a = tmp;
+}
+
+
+int main() {
+    char s[50] = {0};
+    scanf("%s", s);
+    unsigned long i = strlen(s);
+    for (int j = 0; j < i / 2; ++j) {
+        swap(&s[j], &s[i - j - 1]);
+    }
+    printf("%s\n", s);
+    return 0;
+}

+ 56 - 0
150 矩阵旋转.c

@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+/* 样例输入
+3 4
+-1 3 6 3
+7 7 9 1
+10 3 4 6
+
+ 输出旋转后的矩阵
+ */
+
+//创建行列式
+int **arrInit(int m, int n);
+
+// 释放行列式
+void arrClose(int m, int n, int **pInt);
+
+
+// 旋转90º * 3 矩阵
+int main() {
+    int m, n;
+    scanf("%d %d", &m, &n);
+    int **l = arrInit(m, n);
+
+    for (int i = 0; i < n; ++i) {
+        for (int j = m - 1; j >= 0; --j) {
+            printf("%d", l[j][i]);
+            if (j) printf(" ");
+        }
+        printf("\n");
+    }
+
+    arrClose(m, n, l);
+
+    return 0;
+}
+
+void arrClose(int m, int n, int **pInt) {
+    for (int i = 0; i < m; ++i) {
+        free(pInt[i]);
+    }
+    free(pInt);
+}
+
+int **arrInit(int m, int n) {
+    int **l;
+    l = (int **) malloc(m * sizeof(int *));
+    for (int i = 0; i < m; i++) {
+        l[i] = (int *) malloc(n * sizeof(int));
+        for (int j = 0; j < n; ++j) {
+            scanf("%d", &l[i][j]);
+        }
+    }
+    return l;
+}

+ 59 - 0
168 规范化名字.c

@@ -0,0 +1,59 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+// A-Z 65 90
+// a-z 97 122
+void upper(char *c) {
+    if (*c >= 97 && *c <= 122) {
+        *c -= 32;
+    }
+}
+
+void lower(char *c) {
+    if (*c >= 65 && *c <= 90) {
+        *c += 32;
+    }
+}
+
+// 交换字符串
+void swap_str(char *a, char *b) {
+    char tmp[255] = {0};
+    strcpy(tmp, a);
+    strcpy(a, b);
+    strcpy(b, tmp);
+}
+
+//排序
+void ordered(int n, char **l) {
+    for (int i = 0; i < n; ++i) {
+        for (int j = i + 1; j < n; ++j) {
+            if (strcmp(l[i], l[j]) > 0)swap_str(l[i], l[j]);
+        }
+    }
+}
+
+int main() {
+    int n, k;
+    scanf("%d", &n);
+    char **s;
+    s = (char **) malloc(n * sizeof(char *));
+    for (int i = 0; i < n; ++i) {
+        s[i] = (char *) malloc(255 * sizeof(char));
+        scanf("%s", s[i]);
+        k = 0;
+        upper(&s[i][0]);
+        while (s[i][k])lower(&s[i][++k]);
+
+    }
+
+    ordered(n, s);
+
+    for (int i = 0; i < n; ++i) {
+        printf("%s\n", s[i]);
+    }
+    for (int i = 0; i < n; ++i) {
+        free(s[i]);
+    }
+    free(s);
+}

+ 45 - 0
204. 方阵对角线.c

@@ -0,0 +1,45 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+/* 样例输入
+3
+140 160 140
+183 172 170
+180 181 174
+
+ 输出行列式对角线
+ */
+
+void arrClose(int n, int **pInt);
+
+//创建行列式
+int **arrInit(int n) {
+    int **l;
+    l = (int **) malloc(n * sizeof(int *));
+    for (int i = 0; i < n; i++) {
+        l[i] = (int *) malloc(n * sizeof(int));
+        for (int j = 0; j < n; ++j) {
+            scanf("%d", &l[i][j]);
+        }
+    }
+    return l;
+}
+
+// 输出行列式对角线
+int main() {
+    int n = 0;
+    scanf("%d", &n);
+    int **l = arrInit(n);
+    for (int i = 0; i < n; ++i) {
+        printf("%d\n", l[i][i]);
+    }
+    arrClose(n, l);
+
+    return 0;
+}
+
+void arrClose(int n, int **pInt) {
+    for (int i = 0; i < n; ++i) {
+        free(pInt[i]);
+    }
+}

+ 55 - 0
205 队列行平均数.c

@@ -0,0 +1,55 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+/* 样例输入
+3 3
+140 160 140
+183 172 170
+180 181 174
+
+ 输出行平均值
+ */
+
+//创建行列式
+int **arrInit(int m, int n);
+
+// 释放行列式
+void arrClose(int m, int n, int **pInt);
+
+
+int main() {
+    int m, n;
+    scanf("%d %d", &m, &n);
+    int **l = arrInit(m, n);
+
+    for (int i = 0; i < m; ++i) {
+        long avg = 0;
+        for (int j = 0; j < n; ++j) {
+            avg += l[i][j];
+        }
+        printf("%.6lf\n", (double) avg / n);
+    }
+
+    arrClose(m, n, l);
+
+    return 0;
+}
+
+void arrClose(int m, int n, int **pInt) {
+    for (int i = 0; i < m; ++i) {
+        free(pInt[i]);
+    }
+    free(pInt);
+}
+
+int **arrInit(int m, int n) {
+    int **l;
+    l = (int **) malloc(m * sizeof(int *));
+    for (int i = 0; i < m; i++) {
+        l[i] = (int *) malloc(n * sizeof(int));
+        for (int j = 0; j < n; ++j) {
+            scanf("%d", &l[i][j]);
+        }
+    }
+    return l;
+}

+ 85 - 0
446 回形方阵.c

@@ -0,0 +1,85 @@
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+/* 样例输入
+3 3
+140 160 140
+183 172 170
+180 181 174
+
+ 输出行平均值
+ */
+
+//创建行列式
+int **arrInit(int m, int n);
+
+// 释放行列式
+void arrClose(int m, int n, int **pInt);
+
+
+int max(int a, int b);
+
+
+int min(int a, int b);
+
+int main() {
+    int m, n;
+    scanf("%d", &n);
+    m = n;
+    int **l = arrInit(m, n);
+    arrClose(m, n, l);
+    return 0;
+}
+
+void arrClose(int m, int n, int **pInt) {
+    for (int i = 0; i < m; ++i) {
+        free(pInt[i]);
+    }
+    free(pInt);
+}
+
+int **arrInit(int m, int n) {
+    int **l;
+    if (m % 2) {
+        int k = m / 2;
+        l = (int **) malloc(m * sizeof(int *));
+        for (int i = 0; i < m; i++) {
+            l[i] = (int *) malloc(n * sizeof(int));
+            for (int j = 0; j < n; ++j) {
+                l[i][j] = 1 + k - max(abs(k - i), abs(k - j));
+                printf("%d", l[i][j]);
+                if (j != n - 1)printf(" ");
+            }
+            printf("\n");
+        }
+    } else {
+        int k = m / 2;
+        l = (int **) malloc(m * sizeof(int *));
+        for (int i = 0; i < m; i++) {
+            l[i] = (int *) malloc(n * sizeof(int));
+            for (int j = 0; j < n; ++j) {
+                if (j + i >= k * 2)
+                    l[i][j] = k - max(abs(k - i), abs(k - j));
+                else
+                    l[i][j] = 1 + k - max(abs(k - i), abs(k - j));
+                printf("%d", l[i][j]);
+                if (j != n - 1)printf(" ");
+            }
+            printf("\n");
+        }
+    }
+
+    return l;
+}
+
+int min(int a, int b) {
+    return a < b ? a : b;
+}
+
+
+int max(int a, int b) {
+    return a > b ? a : b;
+}

+ 20 - 0
448 抽奖.c

@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+int main() {
+    // n个中奖号码
+    int n;
+    scanf("%d", &n);
+    int s[100] = {0};
+    for (int i = 0; i < n; ++i) {
+        scanf("%d", &s[i]);
+    }
+    int x;
+    scanf("%d", &x);
+
+    int flag = 0;
+    for (int j = 0; j < n; ++j) {
+        if (s[j] == x) flag = j + 1;
+    }
+    flag ? printf("%d\n", flag) : printf("0\n");
+    return 0;
+}

+ 6 - 0
CMakeLists.txt

@@ -0,0 +1,6 @@
+cmake_minimum_required(VERSION 3.21)
+project(demo1 C)
+
+set(CMAKE_C_STANDARD 99)
+
+add_executable(demo1 main.c)


+ 23 - 0
main.c

@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <string.h>
+
+int main() {
+    char a[10000] = {0};
+    scanf("%s", a);
+    int n = 0;
+    scanf("%d", &n);
+    char b[10000] = {0};
+    char c[10000] = {0};
+    scanf("%s", b);
+    int l1, l2;
+//    第一行
+    l1 = (int) strlen(a);
+    if (l1 > 100)printf("100\n");
+    else printf("%d", l1);
+//    第二行
+
+
+
+
+    return 0;
+}

+ 18 - 0
test/循环执行函数.c

@@ -0,0 +1,18 @@
+#include <stdio.h>
+
+void func0() {
+    puts("this is the function func0().");
+}
+
+void func1() {
+    puts("this is the function func1().");
+}
+
+
+int main() {
+    void (*funcTable[2])(void) = {func0, func1};
+    for (int i = 0; i < 2; ++i) {
+        funcTable[i]();
+    }
+    return 0;
+}