输入大写字母,输出大小写字母及其对应的ASCII码;输入语句,将大写字母变成小写字母;将句子中每个单词的第一个字母转换为大写字母;输入一串字符,分别算出英文字母、空格、数字、其他字符的个数(C)

以下题目是对于ASCII码的一些练手题

在c语言中

  1. 使用%c输出的是字符本身
  2. 使用%d输出的是字符对应的ASCII
  3. 在ASCII中,小写英文字符 = 大写英文字符+32
  4. 还有注意区分单引号''和双引号""的区别
    单引号:字符,是可以进行加减的
    双引号:字符串

抛砖引玉,先看一下这两个小题目:

  • 将China加密
    单引号:字符
    字符进行加减时,内部进行了数学运算(先转化为ASCII码,进行加减后,根据输出格式%c再转化为字符)
#include<stdio.h>
int main()
{
	char C,h,i,n,a;
	printf("%c%c%c%c%c",'C'+4,'h'+4,'i'+4,'n'+4,'a'+4);
	return 0; 
}
  • 按顺序打印26个大写英文字母
    配合使用输出格式%c和单引号''
#include<stdio.h>
int main()
{
	char i; 
	for(i = 'A'; i <= 'Z'; i++){
		printf("%c ", i);
	}
	return 0;
 } 

输入大写字母,输出大小写字母及其对应的ASCII码(C)


  1. 使用%c输出的是字符本身
  2. 使用%d输出的是字符对应的ASCII
  3. 在ASCII中,小写英文字符 = 大写英文字符 + 32

使用scanf()输入

#include<stdio.h>
int main()
{    
	char a, b;
	printf("输入一个大写字母");
	scanf("%c", &a);
	printf("%c  %d\n", a, a);
	b = a + 32;
	printf("%c  %d\n", b, b);
	return 0;
}

使用getchar()输入

#include<stdio.h>
int main(){
	printf("请输入一个大写字母");
	char a = getchar();
	printf("%d %d %c %c", a, a+32, a, a+32);
	return 0;
}

再对上面这个题目进行扩展:

输入语句,将大写字母变成小写字母


这个题目,要求输入的是语句,用好getchar()函数即可

#include<stdio.h>
int main()
{
	do{
		int i = 0;
		char a[80];
		printf("\n输入一串字符串");
		while((a[i] = getchar()) != '\n'){
			i++}
		a[i] = '\0';//这只是人为加的结束标志
		
		for(i = 0; a[i] != '\0'; i++){
			if(a[i] >= 'A' && a[i] <= 'Z') a[i] += 32;
			putchar(a[i]);
		}
	}while(1);//弄一个无限循环,是为了不停的玩
	return 0;
 } 

输入一个句子,将句子中每个单词的第一个字母转换为大写字母


这个题目,我用指针玩的

#include<stdio.h>
void main()
{
	char change(char*);
	char ch,a[80];
	int i=0;
	printf("please input a string(以.结束)");
	while((ch = getchar()) != '.') a[i++] = ch;
	a[i] = '\0';//结束标志
	change(a);
	puts(a);
	return 0;
 } 
 
char change(char*p){
 	if(*p >= 'a' && *p <= 'z')*p -= 32;
 	while(*p != '\0'){
 		if((*p == ' ') && (*(p+1) >= 'a') && (*(p+1) <= 'z')){
 			*(p+1) -= 32;
 		} 
 		p++;
	 }	
}

提高:

输入一串字符,分别算出英文字母、空格、数字、其他字符的个数


#include<stdio.h>
int main()
{
	int i = 0;
	//英文字母、空格、数字、其他字符 
	int letter = 0, space = 0, digit = 0, others = 0;
	char a[80];
	
	printf("please input some characters:");
	while((a[i] = getchar()) != '\n') i++;
	a[i] = '\0';
	
	for(i = 0; a[i] != '\0'; i++){
		if((a[i] >= 'a' && a[i] <= 'z') || (a[i] >= 'A' && a[i] <= 'Z')) letter++;
		else if(a[i] == ' ') space++;
		else if(a[i] >= '0' && a[i] <= '9') digit++;
		else others++;
	}
	printf("letter=%d\nspace=%d\ndigit=%d\nothers=%d\n",letter,space,digit,others);
	return 0;
}
发布了150 篇原创文章 · 获赞 267 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/Zhangguohao666/article/details/88901338
今日推荐