数组和字符串3

问题 A: 字符串逆序输出

题目描述

输入一个字符串,以换行符号作为结束(字符串长度不超过50)将输入内容倒序输出。

注意:字符串中可能有空格。

样例输入 

flow up

样例输出

pu wolf

提示

用gets或者getchar输入字符串
#include <stdio.h>
#include <string.h>
int main()
{
    char c[100];
    gets(c);
    for (int i = strlen(c) - 1; i >= 0; i--)
    {
        printf("%c", c[i]);
    }
}

问题 B: 【字符串】回文

题目描述

输入一行字符串(长度不超过100),判断是否为回文。例如ABA是回文字符串,ABC不是回文字符串。

输入

键盘输入的一行字符串(没有空格)。不包含结尾的\n

输出

yes 或 no 表示是否为回文

样例输入

ABC

样例输出

no
#include <stdio.h>
#include <string.h>
//问题 B: 【字符串】回文
int main()
{
    int i, j;
    char c[200];
    gets(c);

    for (i = 0, j = strlen(c) - 1; i <= j; i++, j--)
    {
        if (c[i] == c[j])
        {
            // continue;
        }
        else
        {
            printf("no");
            return 0;
        }
    }
    printf("yes");
}

问题 C: 【字符串】态度决定一切

题目描述

人生中什么才是最重要的呢?有人说是勤奋,有人说是知识,还有人说是金钱或者运气。
如果英文的26个字母A到Z依序分别代表1到26分,那么:

KNOWLEDGE(知识)是11+14+15+23+12+5+4+7+5=96分,
HARDWORK(勤奋)是8+1+18+4+23+15+18+11=98分,
MONEY(金钱)是13+15+14+5+25=72分,
LUCK(运气)只有12+21+3+11=47分。

究竟是什么才能让人生得到满分呢?人生的每一个问题总能找到答案,只要改变你的态度。也许你还记得,在足球教练博拉·米卢蒂诺维奇的帽子上写的名言“Attitude is Everything”

是的,能让人生得到满分的是你对生活和工作的态度,也就是ATTITUDE:1+20+20+9+20+21+4+5=100分

输入

英文单词,长度不超过25,含大小写字母,但不含空格等多余符号。

测试数组有多组,处理到输入结束。

输出

输出单词对应的分数。每个分数占1行。

样例输入

Money
Leadership
ABC

样例输出

72
97
6
#include <stdio.h>
#include <string.h>

int main()
{
    int b = 0;
    char c[100];
    while (gets(c))
    {

        for (int i = 0; i < strlen(c); i++)
        {
            b += c[i];
            if (c[i] <= 90)
            {
                b -= 64;
            }
            else
            {
                b -= 96;
            }
        }
        printf("%d\n", b);
    }
}

问题 D: 【二维数组】计算三阶行列式的值

题目描述

三阶行列式的值,可以理解为平行六面体的体积。计算三阶行列式可以使用如下公式

输入

输入三阶行列式,共三行三列,每个元素整数值,取值介于[-100,100]

输出

三阶行列式的值

样例输入

1 2 3
0 4 5
0 0 6

样例输出

24
#include <stdio.h>
#include <string.h>

int main()
{
    int num[3][3];
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            scanf("%d", &num[i][j]);
        }
    }

    int s1, s2, s3, s4, s5, s6, S;
    s1 = num[0][0] * num[1][1] * num[2][2];
    s2 = num[0][1] * num[1][2] * num[2][0];
    s3 = num[0][2] * num[1][0] * num[2][1];
    s4 = num[0][0] * num[1][2] * num[2][1];
    s5 = num[0][1] * num[1][0] * num[2][2];
    s6 = num[0][2] * num[1][1] * num[2][0];
    S = s1 + s2 + s3 - s4 - s5 - s6;
    printf("%d", S);
}

问题 E: 统计字符串中数字字符个数

题目描述

输入一行字符串(可能包含空格),统计出其中数字字符的个数。

输入

一行字符串,总长度不超过255。

输出

输出字符串中数字字符的个数。

样例输入

At present, there are more than 20,000 full-time students at ZWU, with a staff of more than 1,000.

样例输出 

9
#include <stdio.h>
#include <string.h>

int main()
{
    int flag = 0;
    char c[99999];
    gets(c);

    for (int i = 0; i < strlen(c); i++)
    {
        if (c[i] >= 48 && c[i] <= 57)
        {
            flag += 1;
        }
    }
    printf("%d", flag);
}

问题 F: 字符串简单加密

题目描述

有一种简单的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其余非字母的字符不变,则可得到一个简单的加密字符串。

输入

输入一行字符串(可能包含空格),长度小于80个字符。

输出

输出加密后的字符串。

样例输入 

cbc123

样例输出 

dcd123
#include <stdio.h>
#include <string.h>

int main()
{
    char c[999];
    gets(c);
    for (int i = 0; i < strlen(c); i++)
    {
        if ((c[i] >= 65 && c[i] <= 90) || (c[i] >= 97 && c[i] <= 122))
        {
            if (c[i] == 90)
            {
                c[i] = 65;
            }
            else if (c[i] == 122)
            {
                c[i] = 97;
            }

            else

            {
                c[i] = c[i] + 1;
            }
        }
    }
    puts(c);
}

问题 G: 首字母缩略词

题目描述

首字母缩略词是一个单词,是从短语中的单词取第一个字母形成的。例如,RAM是“random access memory”的缩写。编写一个程序,允许用户键入一个短语,然后输出该短语的首字母缩略词。注意:首字母缩略词应该全部为大写,即使短语中的单词没有大写。

输入

输入一行长度为n的短语(n≤200),至少有1个单词,已知短语中所有单词都是由大写字母和小写字母构成,单词之间用一个空格分隔。

输出

输出该短语的首字母缩略词,要求首字母的大写。

样例输入

random access memory

样例输出

RAM
#include <stdio.h>
#include <string.h>

int main()
{
    int k = 1;
    char c[666], akm[666];
    gets(c);
    akm[0] = c[0];
    if (akm[0] >= 97 && akm[0] <= 122)
    {
        akm[0] = (c[0] - 32);
    }

    for (int i = 1; i < strlen(c); i++)
    {
        if (c[i] == 32)
        {
            akm[k] = c[i + 1];

            if (akm[k] >= 97 && akm[k] <= 122)
            {
                akm[k] = akm[k] - 32;
            }
            k += 1;
        }
    }

    puts(akm);
}

问题 H: 旋转矩阵

题目描述

输入一个3*3的数字矩阵,输出顺时针旋转90度后的数字矩阵。

输入

输入一个3*3的数字矩阵。

输出

输出顺时针旋转90度后的数字矩阵。

样例输入

1 2 3
4 5 6
7 8 9

样例输出

7 4 1
8 5 2
9 6 3
#include <stdio.h>
#include <string.h>

int main()
{
    int num[3][3];
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            scanf("%d", &num[i][j]);
        }
    }

    int a, b, c, d, e, f, g, h;
    a = num[0][0];
    b = num[0][1];
    c = num[0][2];
    d = num[1][0];
    e = num[1][2];
    f = num[2][0];
    g = num[2][1];
    h = num[2][2];

    num[0][2] = a;
    num[1][2] = b;
    num[2][2] = c;
    num[0][1] = d;
    num[2][1] = e;
    num[0][0] = f;
    num[1][0] = g;
    num[2][0] = h;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d ", num[i][j]);
        }
        printf("\n");
    }
}

问题 I: 【二维数组】矩阵转置

题目描述

输入一个矩阵,共M行N列(1≤M,N≤10),矩阵中的每个元素均为整数,将其转置后输出。 

输入

输入格式为:两个正整数M,N,之后共有M行N列的整数值。

输出

矩阵转置之后的结果,共N行M列的整数值,每个整数值之前有一个空格,每行结尾有一个\n

样例输入

2 3
1 2 3
4 5 6

样例输出

 1 4
 2 5
 3 6
#include <stdio.h>
#include <string.h>
int main()
{
    int M, N, num[100][100], k = 0;
    scanf("%d", &M);
    scanf("%d", &N);
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            scanf("%d", &num[i][j]);
        }
    }
    for (int j = 0; j < N; j++)
    {
        for (int h = 0; h < M; h++)
        {
            printf(" %d", num[h][j]);
        }
        printf("\n");
    }
}

问题 J: 交换2行

题目描述

给定一个n×n的矩阵,给定要交换的2行x和y,将第x行和第y行交换,输出交换后的结果。

输入

输入共n+2行,第1行为n(表示n×n的矩阵,1≤n≤10)。

第2行到第n+1行为矩阵的每一行元素,元素与元素之间以一个空格分开。

第n+2行包含两个整数x、y,以一个空格分开(1 ≤ x≤ y ≤ n)。

输出

输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开。

样例输入 

3
1 2 3
4 5 6
7 8 9
1 3

样例输出 

7 8 9
4 5 6
1 2 3
#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    int num[100][100];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &num[i][j]);
        }
    }

    int a, b;
    scanf("%d %d", &a, &b);
    a -= 1;
    b -= 1;
    int y[100], x[100];
    for (int i = 0; i < n; i++)
    {
        x[i] = num[a][i];
        y[i] = num[b][i];

        num[a][i] = y[i];
        num[b][i] = x[i];
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("%d ", num[i][j]);
        }
        printf("\n");
    }
}

 

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

评论

  1. 哈哈
    3 年前
    2021-4-22 19:02:07

    冲[f=qiang]

  2. 2 周前
    2024-5-04 11:53:07

    Your point of view caught my eye and was very interesting. Thanks. I have a question for you.

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇