以下题目是对于ASCII码的一些练手题
在c语言中
- 使用
%c
输出的是字符本身- 使用
%d
输出的是字符对应的ASCII- 在ASCII中,小写英文字符 = 大写英文字符+32
- 还有注意区分单引号
''
和双引号""
的区别
单引号:字符,是可以进行加减的
双引号:字符串
文章目录
抛砖引玉,先看一下这两个小题目:
- 将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)
- 使用
%c
输出的是字符本身 - 使用
%d
输出的是字符对应的ASCII - 在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;
}