第36节 用循环处理文字

一.回顾:字符处理

#include <stdio.h>
int main()
{
	char c;
	c = getchar();  //输入大写字母
	putchar(c + 32);//转换小写字母
	putchar('\n');  //换行操作
	return 0;       //main中可省略
}
ABC //B C 存入缓冲区
a   //只输出一个字符

二.输出什么?

#include <stdio.h>
int main()
{
	char c;
	while ((c = getchar())!='\n' )
	{
		putchar(c);
	}
}
运行结果:
Program
Program
#include <stdio.h>
int main()
{
	char c;
	while ((c = getchar())!='\n' )
	{
		putchar(c+4);
	}
}
运行结果:
Program
Tvskveq  //简单加密
#include <stdio.h>
int main()
{
	char c;
	while ((c = getchar())!='#' )
	{
		putchar(c+32);
	}
}
运行结果:
PROGRAM#CPP
program

三.统计输入字符个数

#include <stdio.h>
int main()
{
	char c;
	int count = 0;
	while ((c = getchar())!='\n' )
	{
		count++;
	}
	printf("共输入字符%d个\n", count);
}
运行结果:
little boy
共输入字符10

用for循环的处理办法

#include <stdio.h>
int main()
{
	char c;
	int i;
	for (i = 0; (c = getchar()) != '\n'; i++)
		putchar(c+4);
		printf("\n共输入字符%d个\n", i);
}
little boy
pmxxpi$fs}
共输入字符10

四.统计数字字符个数

#include <stdio.h>
int main()
{
char c;
int n=0;
while((c=getchar())!='\n')
{
	if(c>='0'&&c<='9') n++;
}
printf("输入的数字字符有%d个\n", n);
return 0;
}
运行结果:
abcde12345fg67
输入的数字字符有7

五.实践项目

【项目1:简单的加密 】
编写程序,将输入的字符进行加密且输出加密后字符,加密的数字可自己设定;

#include <stdio.h>
int main()
{
	char ch;
	int n;
	scanf_s("%d", &n);
	while ((ch = getchar()) != '\n')
	{
		putchar(ch - n);
	}
}

【项目2:转着圈加密】
为使电文保密,需将电文转成密码,收报人再译回原文。加密办法,每一个字母的密文是其后第4个字母,若超出了字母的范围,将A/a看作为Z/z的下一个字母,依次顺延。输入一行字符,输出其相应的密码.

#include <stdio.h>
int main()
{
    char c;
    while ((c = getchar()) != '\n')
    {
        if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')
        {
            c = c + 4;
            if (c > 'Z' && c <= 'Z' + 4 || c > 'z')
            //c > 'Z' && c <= 'Z' + 4,为了避免将小写字母转换;
            // c > 'z'&& c<='z'+4,其中c一定是c<='z'+4,故省略;
            {
                c = c - 26;
            }
        }
        putchar(c);
    }
    printf("\n");
}
运行结果:
AaBbZz
EeFfDd

【项目3:消除多余的空格】
从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。例如,输入:I am a teacher.,输出I am a teacher.

#include <stdio.h>
int main()
{
	char c, frontIsSpace = 0;
	while ((c=getchar())!='\n')
	{
		if (c != ' ')
		{
			putchar(c);
			frontIsSpace = 0;
		}
		else if (frontIsSpace == 0) //在c==' '的前提下
		{
			putchar(c);
			frontIsSpace = 1;
		}
	}
}

【项目4:血型统计】
黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的样本数目。
输入:血型序列(A/B/O/C,C代表AB型血,输入以X结束)
输出:各种血型的数量
输入样例:ABCAOCOAOOBX
输出样例:A:3 B:2 O:4 AB:2

#include <stdio.h>
int main()
{
	char c, countA = 0, countB = 0, countO = 0, countC = 0;
	while ((c = getchar()) != 'X')
	{
		if (c == 'A')
		{
			++countA;
		}
		else if (c == 'B')
		{
			++countB;
		}
		else if (c == 'O')
		{
			++countO;
		}
		else if (c == 'C')
		{
			++countC;
		}
	}
	printf("A:%d B:%d O:%d AB:%d\n", countA, countB, countO, countC);
}
#include <stdio.h>
int main()
{
	char c, countA = 0, countB = 0, countO = 0, countC = 0;
	while ((c = getchar()) != 'X')
	{
		switch (c)
		{
		case 'A': ++countA; break;
		case 'B': ++countB; break;
		case 'C': ++countC; break;
		case 'O': ++countO; break;
		}
	}
	printf("A:%d B:%d O:%d AB:%d\n", countA, countB, countO, countC);
}

【项目5:有多少符号】
输入一行文字,以回车结束,统计并输出其中数字、空格、字母出现的次数,以及输入的字符总数。

#include <stdio.h>
int main()
{
	char c, countA = 0, countB = 0, countC = 0, countD = 0;
	while ((c = getchar()) != '\n')
	{
		if (c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') ++countA;
		else if (c >= '0' && c <= '9') ++countB;
		else if (c == ' ') ++countC;
		++countD;
	}
	printf("字母:%d 数字:%d 空格:%d 总计:%d\n", countA, countB, countC, countD);
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值