养成好习惯,点个赞 再走;有问题,欢迎私信、评论,我看到都会回复的

以下题目是对于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; 
}

输出:

Glmre
  • 按顺序打印26个大写英文字母
    配合使用输出格式%c和单引号''
#include<stdio.h>
int main()
{
	char i; 
	for(i = 'A'; i <= 'Z'; i++){
		printf("%c ", i);
	}
	return 0;
 } 

输出:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 

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

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

使用scanf()输入

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

输入:Z
输出:

Z  90
z  122

使用getchar()输入

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

	return 0;
}

输入:A
输出:

A  65
a  97

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

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

  • 这个题目,要求输入的是语句,用好getchar()函数即可
#include<stdio.h>
int main()
{
	int i = 0;
	char a[80];
	
	//输入一串字符串,回车时输入停止
	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]);
	}
	return 0;
 } 

输入:THIS is a Good Day
输出:

this is a good day

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

  • 这个题目,我用指针玩的
#include<stdio.h>
void main()
{
	char change(char*);
	char ch, a[80];
	int i = 0;
	
	//输入一个字符串(以.结束)
	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++;
	 }	
}

输入:this is a good day.
输出:

This Is A Good Day

提高:

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

#include<stdio.h>
int main()
{
	int i = 0;
	//英文字母、空格、数字、其他字符 
	int letter = 0, space = 0, digit = 0, others = 0;
	char a[80];
	
	//输入一串字符(以.结束)
	while((a[i] = getchar()) != '.') 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;
}

输入:zhang guo hao 666 ~~~.
输出:

letter = 11
space = 4
digit = 3
others = 3

C语言入门题目文章导航:

  1. 素数(C)
  2. 水仙花数(C)
  3. 斐波那契数列(C)
  4. 完数(C)
  5. 阶乘(C)
  6. 直角杨辉三角形(C)
  7. 本篇文章
  8. 输入一个字符,找出他的前驱字符和后继字符(C)
  9. 最大数、最小数(C)
  10. 百钱买百鸡(C语言,枚举法)
  11. 辗转相除法求最大公约数,利用最大公约数求最小公倍数(C)
  12. 输入一个年份和一个月份,输出该年此月天数;知道日期,计算该日是本年的第几天(C)
  13. 输入一个不多于4位的正整数,求它的位数,并按逆序输出各位数字(C)
  14. 利用二维数组求方阵的主次对角线之和(C)
  15. 在一个二维数组中找出最小数及其所在的行和列(C)
  16. 找出一个二维数组中的鞍点(C)
  17. 删除指定字符串的指定字符(C)
  18. 字符串(C)
  19. 条件判断语句1(C)
  20. 条件判断语句2(C)
  21. 圆、三角形、正方形、长方体、计算1到100的和、和差积商、平均值
  22. 输入三个整数,要求程序把数据按从小到大的顺序放入x y z中,然后输出(C)
  23. 18个数围成一圈,求相邻三数之和最大数(C)
  24. 梯形法求定积分(C)
  25. 学生与课程的综合问题(C)
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐