c1的值从键盘输入,也就是你要转换的大写字母,在ASCII码表中,A-Z的ASCII码值是65-90,a-z的ASCII码值是97-122,而且在ASCII码表中,这些字母的ASCII码值也是按顺序排列的,所以你输入c1的值加上32以后正好是它对应的小写字母的ASCII码值,printf("%c,%d\n",c1,c1);中“c%”输出的是c1的字符型值,也就是你从键盘输入的大写的c1,“d%”输出的是它对应的ASCII值,c2同上。
你写的这个函数存在问题。参数a以及函数返回值的类型不对。参数b是无用的也不需要。另外函数在使用前没有声明。
#include
char su(char);
int main(void)
{
char a;
scanf("%c",&a);
printf("%c",su(a));
}
char su(char a)
{
if(a>='A'&&a<='Z') return a+32;
else if(a>='a'&&a<='z') return a-32;
else return '!'; //输入的不是字母时返回错误
}
#include
char su(char a); //函数原型声明
int main(void)
{
char a,b; //改成char型
a=getchar();
b=su(a);
printf("%c\n",b);
return 0;
}
char su(char a)
{
char b;
if(a>='a' && a<='z')
b=a-32;
else if(a>='A' && a<='Z')
b=a+32;
return b;
}
示例运行结果:
a
A
B
b
#include
int su(int a,int b);//<========
int main(void)
{
int a,b;
scanf("%c",&a);
b=su(a,b);
printf("%c",b);
}
int su(int a,int b)
{
if (a>91) b=a-32;
else b=a+32;
return(b);
}
scanf("%d",&a);
printf("%c",a);
由于scanf输入%c是不行的,可以考虑getchar函数。