c语言经典习题16

一 将字符串中数字字符替换成$字符

将字符串中每一个数字字符都替换成一个$字符。

输入格式:

在一行中输入长度小于20的含有数字字符的字符串。在字符串中不要出现换行符,空格,制表符。

输出格式:

直接输出变化后的字符串。

输入样例:

as123rf

输出样例:

as$$$rf
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
	char a[20];
	gets(a);   //读取字符串  
	int sz=strlen(a);
	int i=0;
	for(i=0;i<strlen(a);i++){
		if(isdigit(a[i])){    //判断a[i]是否是数字
			a[i]='$';
		}
	}
	puts(a);   //输出字符串
	return 0;
}

isdigit是字符处理函数,用来判断字符是否为数字字符,是则输出结果为非0,否则为0;类似的字符处理函数还有isalpha(判断是否为字母字符);islower(判断是否为小写字母);isupper(判断是否为大写字母);使用该字符处理函数要引用头文件“ctype.h”

二  统计字符情况(习题8) 

输入一行文字,不超过50个西文字符,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少。

输入格式:

输入在一行中给出字符串s。假设字符串的长度不超过50。

输出格式:

输出其中大写字母小写字母空格数字以及其他字符的数量。

输入样例:

在这里给出一组输入。例如:

Today is 2021/5/17

输出样例:

在这里给出相应的输出。例如:

1 6 2 7 2
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
	char arr[50];
	gets(arr);   //该处读取字符串必须使用gets,而非scanf
	int sz=strlen(arr);
	
	int i=0;
	int count1=0;
	int count2=0;
	int count3=0;
	int count4=0;
	int count5=0;
	for(i=0;i<sz;i++){
		if(isupper(arr[i])){
			count1++;
		}else if(islower(arr[i])){
			count2++;
		}else if(isspace(arr[i])){
			count3++;
		}else if(isdigit(arr[i])){
			count4++;
		}else if(isgraph(arr[i])){
			count5++;
		}
	} 
	
	printf("%d %d %d %d %d",count1,count2,count3,count4,count5);
	
	
	
	return 0;
}

在读取一段字符串(包括空格时)只能使用gets函数来读取,scanf的读取以空格为结束标志,而gets以'\n'为结束标志。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值