问题 A: 字符串逆序输出
题目描述
输入一个字符串,以换行符号作为结束(字符串长度不超过50)将输入内容倒序输出。
注意:字符串中可能有空格。
样例输入
flow up
样例输出
pu wolf
提示
#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: 【字符串】回文
题目描述
输入
输出
样例输入
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,含大小写字母,但不含空格等多余符号。
测试数组有多组,处理到输入结束。
输出
样例输入
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: 【二维数组】计算三阶行列式的值
题目描述
三阶行列式的值,可以理解为平行六面体的体积。计算三阶行列式可以使用如下公式
输入
输出
样例输入
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");
}
}
冲[f=qiang]