这个用数组怎么编程?存在空格,还存在换行,怎么用scanf来输入呀?
5条回答 默认 最新
- 语言-逆行者 2023-05-10 15:52关注
【法一】
- #include <stdio.h>
- #include <string.h>
- // 加密单个单词的函数
- void encryptWord(char* word) {
- int i, len = strlen(word);
- char c;
- for (i = 0; i < len; i++) {
- c = word[i];
- // 如果当前字母在A到Z的范围内
- if (c >= 'A' && c <= 'Z') {
- if (c >= 'A' && c <= 'M') { // 如果当前字母是第一组字母中的字母
- c = 'N' + (c - 'A'); // 替换为对应的第二组字母中的字母
- } else if (c >= 'N' && c <= 'Z') { // 如果当前字母是第二组字母中的字母
- c = 'A' + (c - 'N'); // 替换为对应的第一组字母中的字母
- }
- }
- // 将替换后的字母存储回原来的单词数组中
- word[i] = c;
- }
- }
- int main() {
- char word[101]; // 定义一个能够存储100个字符加上一个结束符'\0'的数组
- while (scanf("%s", word) != EOF) { // 循环读入每个单词,直到结束符EOF
- encryptWord(word); // 调用函数加密该单词
- printf("%s\n", word); // 输出加密后的结果
- }
- return 0;
- }
【法二】
- #include <stdio.h>
- #include <string.h>
- void encryptWord(char* word) {
- int i;
- int length = strlen(word);
- for (i = 0; i < length; i++) {
- if (word[i] >= 'A' && word[i] <= 'Z') {
- if (word[i] >= 'A' && word[i] <= 'M') {
- word[i] = 'N' + (word[i] - 'A');
- } else if (word[i] >= 'N' && word[i] <= 'Z') {
- word[i] = 'A' + (word[i] - 'N');
- }
- }
- }
- }
- int main() {
- char input[100];
- scanf("%[^\n]", input);
- char* word = strtok(input, " ");
- while (word != NULL) {
- encryptWord(word);
- printf("%s\n", word);
- word = strtok(NULL, " ");
- }
- return 0;
- }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 3无用 1- #include <stdio.h>
- #include <string.h>
- // 加密单个单词的函数
- void encryptWord(char* word) {
- int i, len = strlen(word);
- char c;
- for (i = 0; i < len; i++) {
- c = word[i];
- // 如果当前字母在A到Z的范围内
- if (c >= 'A' && c <= 'Z') {
- if (c >= 'A' && c <= 'M') { // 如果当前字母是第一组字母中的字母
- c = 'N' + (c - 'A'); // 替换为对应的第二组字母中的字母
- } else if (c >= 'N' && c <= 'Z') { // 如果当前字母是第二组字母中的字母
- c = 'A' + (c - 'N'); // 替换为对应的第一组字母中的字母
- }
- }
- // 将替换后的字母存储回原来的单词数组中
- word[i] = c;
- }
- }
- int main() {
- char sentence[201]; // 定义一个能够存储200个字符加上一个结束符'\0'的数组
- char sentence1[201];
- char sentence2[201];
- fgets(sentence, sizeof(sentence), stdin); // 读入第一行数据,fgets可以读入含空格的一整行
- sentence[strcspn(sentence, "\n")] = '\0'; // 将最后一个换行符换成结束符'\0'
- strcpy(sentence1, sentence); // 记录该行数据
- encryptWord(sentence); // 调用函数加密该行数据
- strcpy(sentence2, sentence); // 记录加密后的该行数据
- fgets(sentence, sizeof(sentence), stdin); // 读入第二行数据
- sentence[strcspn(sentence, "\n")] = '\0'; // 将最后一个换行符换成结束符'\0'
- encryptWord(sentence); // 调用函数加密该行数据
- // sentence2加密后的第一行数据
- // sentence加密后的第二行数据
- char* token;
- token = strtok(sentence2, " "); // 使用空格作为分隔符,获取第一个单词
- while (token != NULL) { // 如果仍然有单词,就继续输出
- printf("%s\n", token);
- token = strtok(NULL, " "); // 继续获取下一个单词
- }
- token = strtok(sentence, " "); // 使用空格作为分隔符,获取第一个单词
- while (token != NULL) { // 如果仍然有单词,就继续输出
- printf("%s\n", token);
- token = strtok(NULL, " "); // 继续获取下一个单词
- }
- return 0;
- }
赞回复展开全部6条评论