分析代码while(putchar(getchar())!='?');
时间: 2023-05-26 20:06:26 浏览: 96
代码分析如下:
1. `getchar()` 是一个函数,用于从标准输入设备(一般为键盘)获取一个字符。
2. `putchar()` 是一个函数,用于将一个字符输出到标准输出设备(一般为控制台屏幕)。
3. `while` 是一个循环语句,当括号内的条件为真时,执行循环体内的语句,直到条件不再满足为止。
4. `!='?'` 是一个比较符号,表示不等于问号字符。
综上所述,代码的意思是:从标准输入设备读取字符,将该字符输出到标准输出设备,如果该字符不是问号字符,则继续读取下一个字符并输出,直到读取到问号字符为止。主要作用是将输入设备的内容输出到终端屏幕上,并在遇到问号字符时停止。
相关问题
#include<stdio.h> #define SPACE '' int mian() { char ch; ch=getchar(); while(ch!='\n') { if(ch == SPACE) putchar(ch); else putchar(ch+1); ch=getchar(); } putchar(ch); return 0; }指出其中错误并改正
代码中存在几个错误:
1. "mian"应该是"main",是主函数的名称。
2. 在#define SPACE ''中,单引号内应该填写一个空格:" "。
3. 在最后一个putchar(ch)之前,应该先将其转换为大写字母,再输出,否则会将回车符输出为一个奇怪的符号。
下面是修改后的代码:
```
#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;
}
```
输入一个字符串,统计其中最长的单词并输出。 #include <stdio.h> int findLongest( char str[] ); int main() { char sArr[100] = { 0 }; int loc, i; gets(sArr); loc = findLongest(sArr) ; for (i = loc; sArr[i] != ' ' && sArr[i] != '\0'; i++) putchar(sArr[i]); return 0; } int findLongest( char str[] ) { int i = 0, Loc = 0, len = 0, lLoc = 0; while (str[i] != '\0') { while (str[i] == ' ') i++; lLoc = i; while (str[i] != ' ' && str[i] != '\0') ; if (i -lLoc > len) { ; Loc = lLoc; } } ; } ###输入样例 This is a C Program ###输出样例 Program
输出样例应该是 "Program" 而不是 "Program ",最后的空格不应该输出。另外,findLongest函数中缺少返回值,需要将最长单词的起始位置Loc返回给主函数。下面是修改后的代码:
```
#include <stdio.h>
int findLongest(char str[]);
int main()
{
char sArr[100] = {0};
int loc, i;
gets(sArr);
loc = findLongest(sArr);
for (i = loc; sArr[i] != ' ' && sArr[i] != '\0'; i++)
putchar(sArr[i]);
return 0;
}
int findLongest(char str[])
{
int i = 0, Loc = 0, len = 0, lLoc = 0;
while (str[i] != '\0')
{
while (str[i] == ' ')
i++;
lLoc = i;
while (str[i] != ' ' && str[i] != '\0')
i++;
if (i - lLoc > len)
{
len = i - lLoc;
Loc = lLoc;
}
}
return Loc;
}
```