一 将字符串中数字字符替换成$字符
将字符串中每一个数字字符都替换成一个$字符。
输入格式:
在一行中输入长度小于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'为结束标志。