08 重忆C之 字符串与数组

题目:统计字符:

在 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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容