求助:谁能解释一下下面GETCHAR函数-高分悬赏

来源:百度知道 编辑:UC知道 时间:2024/05/17 21:43:54
看不懂.....谁能解释一下下面的流程....功能我知道....但是不知道怎么实现的..........

#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
begin:
char c;
c=getchar();
while (c!='\n')
{
#if 0
if (c>='a'&&c<='z') c=c-32;
#else
if (c>='A'&&c<='Z') c=c+32;
#endif
cout<<c;
c=getchar();
}
cout<<endl;
goto begin;
}
我想知道c=getchar();这个语句是否要等到用户输入回车才能结束并转到下一个语句.....

如果是....那么下一个循环是怎样进行的....

还有....比如我输入"china回车"....c这个标识符接收到的是一个字符还是一串字符???

如果是一串字符....那么下面的处理是怎样进行的....能详细讲一下么?

举例的话....就用"china回车"来举例......

getchar()这个函数的确是回车后才能转到下一个语句
下一个循环就是c=getchar(); 这句啊
通过判断C来进行循环
c一次只能接受一个字符
你输入china 这样c会接受c
hina会进入键盘缓冲区 然后c会逐一接受下面的字母

中间部分的确头一次见到。

c=getchar(); 先接收一个字符输入.
while (c!='\n') 判断是不是换行回车键.不是就循环.
循环体功能你说知道说不说了.然后到cout<<endl;
goto begin. goto begin 就是跳转到begin: char c; goto 是C 语言中的无条件跳转语句,可以不用任何条件跳到标识符那里.
不过用多了程序可读性降低.

你那里不明白 是 条件编译这里嘛 #if 0

1.-----------------
#if xx
//Code 1
#else
//Code 2
#endif
这个结构是首先对xx进行判断,如果是true就编译Code1,否则编译Code2.这个结构在调试程序中会被经常使用.
给出的程序在"#if"后的语句为真(1)时执行"if (c>='a'&&c<='z') c=c-32;",即将大写字母转换成小写字母;若为0(假,如本例)即将大写字母转换成小写字母.
2.-----------------
大写字母和小写字母的ASCII码之间差为32,即'a'-32='A'.
3.-----------------
程序的流程是先从键盘取得输入,判断大小写,进行相应的处理后输出给用户.
4.-----------------
goto语句会转移到指定的标号,如本例中的begin.
补充:-------------------------------------------------------------
c=get