🔊🔊🔊
🇨🇳大家好,我是_奇奇,暂时为一名C语言博主。河牧院大一在读。
🔔欢迎大家和我一起交流学习
❤️编程的前途是光明的,道路是曲折的。笑到最后才是赢家🍺
目录
1.牛客网[编程题]替换空格
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题目分析
由于1个空格占1个字符,但是替换为“%20”话是3个字符。所以需要给字符串增加位置。由于“we are happy”中有2个空格,所以理所当然要增加4个位置,即字符串长度增加4.
算法步骤
1.先确定这个字符串有几个空格。然后根据空格确定新字符串的长度。
2.依次将空格后的字符串往后移动。
3.然后依次补上“%20”这三个字符。
代码
class Solution { public: void replaceSpace(char *str,int length) { int spacecnt = 0; char* cur = str; while (*cur) { if (*cur == ' ') { spacecnt++; } cur++; } int newlen = length + spacecnt * 2; int end1 = length - 1; int end2 = newlen - 1; while (end1 != end2) { if (str[end1] != ' ') { str[end2--] = str[end1--]; } else { str[end2--] = '0'; str[end2--] = '2'; str[end2--] = '%'; end1--; } } } };
2.矩阵相乘
题目描述
矩阵乘法规定:矩阵乘法中第一个矩阵的列要等于第二个矩阵的行。
将一个m∗n的的A矩阵,和一个n∗p的B矩阵相乘,将得到一个m∗p的矩阵C
以23和32的矩阵为例。
题目分析
将第一个矩阵的每一行依次乘以第二个矩阵的每一列然后相加起来就是第三个矩阵了。
代码实现
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int arr1[2][3] = { 0 }; int arr2[3][2] = { 0 }; int arrsum[2][2] = { 0 }; int i = 0; int j = 0; int k = 0; int m = 0; int n = 0; for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { scanf("%d", &arr1[i][j]); } } for (i = 0; i < 3; i++) { for (j = 0; j < 2; j++) { scanf("%d", &arr2[i][j]); } } int a = 0; for (a = 0; a < 2; a++) { int b = 0, c = 0, d = 0; for (b = 0; b < 2; b++) { for (j = 0; j < 3; j++) { arrsum[a][b] = arrsum[a][b] + arr1[a][j] * arr2[j][b]; } printf("%d ", arrsum[a][b]); } printf("\n"); } return 0; }