美文网首页
08 重忆C之 字符串与数组

08 重忆C之 字符串与数组

作者: 夏威夷的芒果 | 来源:发表于2017-08-27 22:03 被阅读15次

    题目:统计字符:

    在 30 个字符组成的一行输入中包括了大写字母、小写字母、数字和空格(值包含空格,不包含\t一类的字符)。我们通过循环将这 30 个字符读入了循环,并将读入的 30 个字符传入了无需返回值的四个函数。
    练习对字符的操作和使用
    练习使用 if,结合查询的 ASCII 码学会判断字符类型
    练习自定义函数的实现,强化对自定义函数调用的理解
    从给出的代码中学习数组做函数参数的传参方式
    样例输入

    1728SHr29 kselEs 28Jr8S919dKrz
    

    样例输出

    6
    10
    12
    2
    

    代码:

    #include <stdio.h>
    void upper_case_count(char arr[31]) {
        // 请在下面实现统计并输出大写字母个数的功能
        int i = 0;
        int j = 0;
        for (i = 0; i<= 30; i++){
            if ((arr[i]>='A')&&(arr[i]<='Z')){
                j++;
            }
        } 
        if (i==31){
            printf("%d\n",j);
        }
    }
    void lower_case_count(char arr[31]) {
        // 请在下面实现统计并输出小写字母个数的功能
        int i = 0;
        int j = 0;
        for (i = 0; i<= 30; i++){
            if ((arr[i]>='a')&&(arr[i]<='z')){
                j++;
            }
        } 
        if (i==31){
            printf("%d\n",j);
        }
    }
    void digit_count(char arr[31]) {
        // 请在下面实现统计并输出数字个数的功能
            int i = 0;
        int j = 0;
        for (i = 0; i<= 30; i++){
            if ((arr[i]>='0')&&(arr[i]<='9')){
                j++;
            }
        } 
        if (i==31){
            printf("%d\n",j);
        }
    }
    void space_count(char arr[31]) {
        // 请在下面实现统计并输出空格个数的功能
        int i = 0;
        int j = 0;
        for (i = 0; i<= 30; i++){
            if (arr[i]==32){
                j++;
            }
        } 
        if (i==31){
            printf("%d\n",j);
        }
    }
    
    int main() {
        char string[31];
        int i;
        for (i = 0;i < 31; i++){
            scanf("%c",&string[i]);
        }
        
        upper_case_count(string);
        lower_case_count(string);
        digit_count(string);
        space_count(string);
        return 0;
        
    }
    
    

    注意这里:
    if (arr[i]==32){如果写成if (arr[i]==' '){也可以的,要写成双引号可是不行的哦。

    辗转相除法实现求最大公约数和最小公倍数

    练习函数定义
    练习函数嵌套调用
    练习函数递归调用
    样例输入1

    12 33
    

    样例输出1

    3
    132
    

    样例输入2

    131 7
    

    样例输出2

    1
    917
    

    代码

    #include <stdio.h>
    int gcd(int n, int m);
    int lcm(int n, int m);
    int main() {
        int n, m;
        scanf("%d%d", &n, &m);  
        printf("%d\n", gcd(n, m));
        printf("%d\n", lcm(n, m));
        return 0;
    }
    int gcd(int n, int m) {
        int t;
        if (m <= n) {
        // 请在这里继续完成 gcd 函数
            t = n - m;
            n = m;
            m = t ;
            if (t == 0){
                return n;
            }else{
                return gcd(m, n);
            }
        } else{
            t = m - n;     
            m = n;
            n = t;
            if (t == 0){
                return m;
            }else{
                return gcd(m, n);
            }
        }
    }
    int lcm(int n, int m) {
    // 请在这里继续完成 lcm 函数
        return (n*m)/gcd(n,m);
    }
    

    迭代的关键就在于每次函数如果需要进一步进行迭代,那么其返回值要再次调用函数。

    题目

    给定一个 m行、n 列的矩阵 A和一个 n行、m列的矩阵B。你需要用矩阵 A与矩阵 B相乘,并且将 m行 m 列的乘积结果输出。

    输入格式
    测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入 2 个整数,分别对应题目描述中的m 和 n(1≤m,n≤10),两个整数之间用一个空格分隔。接下来 m行,每行包含 n个整数,每两个整数之间用一个空格分隔。对应 m行 n列的矩阵 A。
    再接下来n 行,每行包含 m个整数,每两个整数之间用一个空格分隔。对应 n行 m列的矩阵 B。
    注:矩阵中的整数均大于等于 -100,小于等于 100

    样例输入1

    2 2
    2 3
    3 1
    3 2
    4 3
    

    样例输出1

    18 13
    13 9
    

    样例输入2

    2 3
    1 2 3
    3 4 6
    1 2
    3 4
    5 6
    

    样例输出2

    22 28
    45 58
    

    样例输入3

    3 2
    1 2
    3 4
    5 6
    1 2 3
    3 4 6
    

    样例输出3

    7 10 15
    15 22 33
    23 34 51
    

    代码如下:

    #include <stdio.h>
    
    int main() {
        int matrix_a[10][10];
        int matrix_b[10][10];
        int matrix_c[10][10];
        int m;
        int n;
        int i,j,k;
        scanf("%d%d",&m,&n);
        for (i = 0 ; i < m ; i++){
            for ( j = 0 ; j < n ; j++){
                scanf("%d",&matrix_a[i][j]);
            }
        }
        for (i = 0 ; i < n ; i++){
            for ( j = 0 ; j < m ; j++){
                scanf("%d",&matrix_b[i][j]);
            }
        }
        for (i = 0 ; i < m ; i++){
            for ( j = 0 ; j < m ; j++){
                matrix_c[i][j] = 0;
                for (k = 0 ; k < n ; k++){
                        matrix_c[i][j] = matrix_a[i][k]*matrix_b[k][j]+matrix_c[i][j];
                }
                if (j==(m-1)){
                    printf("%d\n",matrix_c[i][j]);
                }else{
                printf("%d ",matrix_c[i][j]);
                }        
            }
        }
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:08 重忆C之 字符串与数组

          本文链接:https://www.haomeiwen.com/subject/uovidxtx.html