以下程序执行时输入Hello world!<回车>,则程序的结果是 。 #include "stdio.h" main() {char ch1[20],ch2[20]; scanf("%s",ch1);gets(ch2); printf("ch1=%s\nch2=%s\n",ch1,ch2); }
时间: 2024-03-04 09:51:05 浏览: 70
以下程序执行时输入Hello world!<回车>,则程序的结果是:
ch1=Hello
ch2= world!
原因是,在输入Hello world!时,scanf("%s",ch1)只读取了Hello这个字符串,并在其后加上了一个空字符'\0'作为字符串的结尾,然后gets(ch2)读取了Hello后的空格和world!这个字符串,并将其存储到ch2中。最后,printf函数按照格式化字符串输出ch1和ch2的值,输出结果是ch1=Hello,ch2= world!,其中ch2的首字母前有一个空格。
相关问题
#include <stdio.h>#define SPACE ' 'int main() { char ch; ch = getchar(); while (ch != '\n') { if (ch == SPACE) putchar(ch); else putchar(ch + 1); ch = getchar(); } putchar(toupper(ch)); // 将ch转换为大写字母再输出 return 0;}指出其运行过程和结果
这段代码的功能是读入一行字符,将每个非空格字符都替换为其后一个字符,然后输出整行字符,最后将回车符转换为大写字母并输出。
例如,如果输入字符串为 "Hello World",则输出为 "Ifmmp Xpsme"(每个字符都向后移动了一位),并且回车符被转换为大写字母 'N' 输出。
注意,这段代码存在一个小问题:如果输入的最后一个字符是空格,则会在输出最后一个字符后多输出一个空格。
【问题描述】 编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch,通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。 【输入形式】 输入一个字符串str,以及一个字符ch 【输出形式】 若ch在str中存在,输出位置,位置之间以空格分隔 若ch在str中不存在,输出NULL 输出后面无换行符 【样例输入1】 Shanghaijiaotongdaxue h 【样例输出1】 1 5 【样例输入2】 Helloworld @ 【样例输出2】 NULL
下面是一个可能的解法,使用指针逐个遍历字符串,并记录出现位置。如果最终没有出现,就输出 NULL。
```c
#include <stdio.h>
int main() {
char str[31], ch;
printf("请输入一个字符串(长度不超过30):");
scanf("%s", str);
printf("请输入一个字符:");
scanf(" %c", &ch); // 注意要在前面加一个空格,消耗掉输入缓冲区中的回车符
char *p = str; // 定义一个指针,初始指向字符串的首地址
int pos = 0; // 记录出现位置的数组下标
int found = 0; // 标记是否找到了
while (*p != '\0') { // 当指针指向的字符不是字符串的结尾符时
if (*p == ch) { // 如果找到了
printf("%d ", pos); // 输出位置
found = 1; // 标记为已找到
}
p++; // 指针后移
pos++; // 数组下标后移
}
if (!found) { // 如果没有找到
printf("NULL");
}
return 0;
}
```
阅读全文