华为的机试题
字符串反转
输入 wo ai ni zhong guo
输出 ow ia in gnohz oug
我的代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> int fanzhuan(char *a); int main() { //输入一串带有空格的字符 char val[1000] = { 0 }; gets(val); //输入字符串的总长度 int len_val = strlen(val); //新的数组,用来存放转置后的单词 char new_val[100][100] = { 0 }; //数组中空格的数量 计算出单词的个数 没有空格时单词为1个 int space_world = 1; //k是老字符串的下标,i是新字符串的行,j是新字符串的列 int k = 0; //读取每一个单词并写入新的字符串数组 for (int i = 0; i < len_val; i++) { if (val[k]<'A' || val[k]>'z') { break; } for (int j = 0;j<1000; j++) { if (val[k] == ' ') { k++; space_world++; break; } new_val[i][j] = val[k]; k++; } } for (int i = 0; i < space_world; i++) { fanzhuan(new_val[i]); //判断下是否是最后一个单词,如果不是,输出空格并且继续下一个单词;如果是,则不再输出空格同时跳出循环 if (new_val[i + 1][0]>='a'&&new_val[i + 1][0]<='z' || new_val[i + 1][0]>='A'&&new_val[i + 1][0]<='Z') { printf(" "); } else { break; } } return 0; } //把所有字符反转过来 int fanzhuan(char a[]) { int len = strlen(a); for (int i = len-1; i >= 0; i--) { printf("%c", a[i]); } }