今天写了一组代码,写的过程很有收获
题:编写一个程序,要求用户输入英文名和姓,并根据用户的输入先显示姓,其后跟一个逗号,然后显示名的首字母,最后加一个点,用户输入中可能包含空格(名之前,名和姓之间,姓氏之后)例:
Enter a first and last name: Lloyd Fosdick
Fosdick, L.
这个代码写完,就会对getchar函数的理解和对char类型的理解会更加深入
int main()
{
char ch, a=0,b=0;
while ((ch=getchar()) != '\n')
{
if (ch >= 'A'&& ch<'a')
{
a = ch;
break;
}
}
while ((ch = getchar()) != '\n')
{
if (ch < 'a'&&ch>32) {
b = ch;
break;
}
}
printf("%c", b);
while ((ch = getchar()) != '\n')
{
if (ch >= 'a')
{
printf("%c", ch);
}
}
printf(", %c.", a);
return 0;
}
有一点我认为比较有意思的:
因为char类型变量的大小只能放进去一个字符,当我们连续输入abcd...,保存到变量中的字符只有首字符a。这就很有意思了,当ch=getchar()作为独立语句时,我们输入的字符组只有首字符被录入ch变量中,意思就是接下来的程序运行,只有首字符会参加。当我们把ch=getchar()插入循环语句中时,我们每输入一个字母马上就会参与程序的运行,这样,我们输入的每一个字符都会参与程序的运行中去,空格也会,很有意思
2021.12.1
这题我又思考了下,并对while循环有了新的理解,优化了程序,如下
int main()
{
char ch=0,ch1=0;
printf("Enter a first and last name: ");
while ((ch = getchar()) < 65)
;
ch1 = ch;
while ((ch = getchar()) >= 97)
;
while ((ch = getchar()) == 32)
;
printf("%c", ch);
while ((ch = getchar()) > 32)
{
printf("%c", ch);
}
printf(", %c", ch1);
return 0;
}