美文网首页
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之 字符串与数组

    题目:统计字符: 在 30 个字符组成的一行输入中包括了大写字母、小写字母、数字和空格(值包含空格,不包含\t一类...

  • 07 重忆C之 数组

    数组索引 这样声明个数组,名为radius,含3个int型元素。我们可通过radius[0],radius[1],...

  • 再学C语言之指针要点

    C之字符数组 C之指针引用字符串 C语言之数组指针 数组指针:首先它是一个指针,它指向数组指针数组:首先它是一个数...

  • 数组和字符串

    title: c++之管理数组和字符串tags: 语言工具-c++categories: c++date: 201...

  • 09 重忆C之 字符串

    在之前的学习中,我们曾经使用过printf函数对字符串进行输出。那么,如果我们希望输入一个字符串到变量,我们可以怎...

  • ES6数组去重、字符串去重

    数组去重: 字符串去重:

  • JS基础09-17

    数组面向对象创建 直接创建 数组嵌套 数组字符拼接 数组去重 字符串字符串翻转/字符串翻转---线分割数组,翻转,...

  • 流程控制与数组(数组)

    数组 定义数组 数组的显示初始化 输出字符串和字符串函数 ANSI C提供了如下常用的标准函数来处理C字符串

  • C语言- 字符、字符数组

    字符数组和字符串 C语言中没有字符串这种数据类型,C语言中通过char型数组来替代字符串的功能。C语言中的字符串一...

  • 我和C君的故事(一)

    和C君分别已有四年之久,虽久未联络,然思念之心益重,每每思及与C君诸多趣事,皆有忆之成文之心。近日有暇,作文以记之...

网友评论

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

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