常用的内置函数:ctype.h (字符类型)
isupper:返回是否为大写字母(upper case:大写字母)
islower:返回是否为小写字母(lower case:小写字母)
isalpha:返回是否为字母(A-Z|a-z) (alphabet:字母表)
isdigit:返回是否为数字(digit:0-9中任何的数字)
toupper:返回大写字母
tolower:返回小写字母
内置函数
图示:
源代码:#include
#include
void main() {
printf("下面是[ctype.h]里的内置函数,0表示假,1表示大写字母,2表示小写字母,4表示数字\n这些其实我们自己都可以做出来的\n\n");
printf("isupper是否为大字字母:%d\n", isupper('A')); //返回1
printf("islower是否为小字字母:%d\n", islower('a')); //返回2
printf("isalpha是否为字母:%d\n",isalpha('A'));
printf("isdigit是否为数字:%d\n",isdigit('1'));
printf("topeper对应的大写字母:%c\n", toupper('a'));
printf("tolower对应的小写字母:%c\n",tolower('A'));
return 0;
}
32-127的ASCII码
图示:
源代码:#include
void main() {
for (int t = 32; t
printf("字符:%c->ASCII码:%d\n", t,t);
}
return 0;
}
数字转中文大写(超难)
图示:
源代码:#include
#include
#include
#include
int main() {
#pragma region 变量
//大写
char a2大写[10][4] = {
"零",
"壹",
"贰",
"叁",
"肆",
"伍",
"陆",
"柒",
"捌",
"玖"
};
char a金额[11] = "\0"; //这里一定要使用字符,不能使用int类型
int 金额字符长度 = 0;
_Bool b为数字 = 0;
long long 最高位倍数 = 0;
long long 金额 = 0;
int 字符转ASCII = 0;
int ASCII转整数 = 0;
//位数,这里可以使用数组保存,2020年6月5日23:25:23,明天再做吧!有点困了
int 个位 = 0;
int 十位 = 0;
int 百位 = 0;
int 千位 = 0;
int 万位 = 0;
int 十万位 = 0;
int 百万位 = 0;
int 千万位 = 0;
int 亿位 = 0;
int 十亿位 = 0;
int 当前位数 = 0;
#pragma endregion
while (1 == 1) {
#pragma region 录入金额
while (1 == 1) {
//输入金额
金额 = 0;
system("cls");
printf("-帮助- 0:退出 只能输入整数,[小数转中文大写]暂时不去做,难度是现在的4倍,\n\n");
printf("请输入金额:");
scanf_s("%s", &a金额, 11);
rewind(stdin);//清空输入缓冲区
/* 输出每一个字符
for (int t = 0; t
printf("字符为:%c\t数字为:%d\n", a金额[t], a金额[t]);
}
system("pause");
//*/
//检测字符长度
金额字符长度 = 0;
for (int t = 0; t
if (a金额[t] != '\0') {
//有字符
金额字符长度++;
continue;
}
else {
break;
}
}
/*
printf("%s\n", a金额);
//*/
//不能输入空
if (金额字符长度 == 0) {
system("cls");
printf("输入的内容不能为空,请您重新输入.");
Sleep(2000);
continue;
}
/*
printf("%d\n", 金额字符长度);
system("pause");
//*/
//把输入的字符转换成数字,如果是非数字就重新输入
for (int t = 0; t
/*
printf("%d\n", isdigit(a金额[t]));
//*/
if (isdigit(a金额[t]) != 0) {
//数字
b为数字 = 1;
continue;
}
else {
//非数字
b为数字 = 0;
system("cls");
printf("您的输入含有非整数类型!,请您重新输入!\n");
Sleep(2000);
break;
}
}
if (b为数字 == 1) {
//录入信息正确
break;
}
else {
//录入信息错误
continue;
}
}
///* 过滤后的结果
printf("字符串过滤后的结果:%s\t长度为:%d\n", a金额, 金额字符长度);
//*/
#pragma endregion
#pragma region 把字符串转成数字
//计算最高位倍数
switch (金额字符长度) {
case 1: //个位
最高位倍数 = 1;
break;
case 2: //十位
最高位倍数 = 10;
break;
case 3: //百位
最高位倍数 = 100;
break;
case 4: //千位
最高位倍数 = 1000;
break;
case 5: //万位
最高位倍数 = 10000;
break;
case 6: //十万位
最高位倍数 = 100000;
break;
case 7: //百万位
最高位倍数 = 1000000;
break;
case 8: //千万位
最高位倍数 = 10000000;
break;
case 9: //亿位
最高位倍数 = 100000000;
break;
case 10: //十亿位
最高位倍数 = 1000000000;
break;
default:
break;
}
//把字符数组转换成整数
for (int t = 0; t
//把字符转成整数,如 '1'=1
字符转ASCII = a金额[t];
//printf("字符转ASCII:%d\n", 字符转ASCII);
switch (字符转ASCII) {
case 48:
ASCII转整数 = 0;
break;
case 49:
ASCII转整数 = 1;
break;
case 50:
ASCII转整数 = 2;
break;
case 51:
ASCII转整数 = 3;
break;
case 52:
ASCII转整数 = 4;
break;
case 53:
ASCII转整数 = 5;
break;
case 54:
ASCII转整数 = 6;
break;
case 55:
ASCII转整数 = 7;
break;
case 56:
ASCII转整数 = 8;
break;
case 57:
ASCII转整数 = 9;
break;
default:
break;
}
//printf("ASCII转整数:%d\n",ASCII转整数);
//保留位数关键信息
当前位数 = 金额字符长度 - t;
switch (当前位数) {
case 1:
个位 = ASCII转整数;
break;
case 2:
十位 = ASCII转整数;
break;
case 3:
百位 = ASCII转整数;
break;
case 4:
千位 = ASCII转整数;
break;
case 5:
万位 = ASCII转整数;
break;
case 6:
十万位 = ASCII转整数;
break;
case 7:
百万位 = ASCII转整数;
break;
case 8:
千万位 = ASCII转整数;
break;
case 9:
亿位 = ASCII转整数;
break;
case 10:
十亿位 = ASCII转整数;
break;
default:
break;
}
/* 显示位数
printf("个位为:%d\n",个位);
printf("十位为:%d\n", 十位);
printf("百位为:%d\n", 百位);
printf("千位为:%d\n", 千位);
printf("万位为:%d\n", 万位);
printf("十万位为:%d\n", 十万位);
printf("百万位为:%d\n", 百万位);
printf("千万位为:%d\n", 千万位);
printf("亿位为:%d\n", 亿位);
printf("十亿位为:%d\n", 十亿位);
//*/
//计算累加
金额 = ASCII转整数 * 最高位倍数 + 金额;
最高位倍数 /= 10;
if (最高位倍数 <= 0) {
//已经是小数了,这里只需要整数(原因是小数转中文大写,的难度是这个的2倍)
最高位倍数 = 0;
}
//printf("当前金额为:%d\n", 金额);
}
//确认转换后的整数长度
if (十亿位 != 0) {
金额字符长度 = 10;
}
else if(亿位!=0){
金额字符长度 = 9;
}
else if (千万位 != 0) {
金额字符长度 = 8;
}
else if (百万位 != 0) {
金额字符长度 = 7;
}
else if (十万位 != 0) {
金额字符长度 = 6;
}
else if (万位 != 0) {
金额字符长度 = 5;
}
else if (千位 != 0) {
金额字符长度 = 4;
}
else if (百位 != 0) {
金额字符长度 = 3;
}
else if (十位 != 0) {
金额字符长度 = 2;
}
else if (个位 != 0) {
金额字符长度 = 1;
}
#pragma endregion
if (金额 == 0) {
system("cls");
printf("正在退出系统!请稍候\n");
Sleep(3000);
exit(0);
}
else if (金额 > 4200000000) {
system("cls");
printf("由于游戏难度设定,您输入的数字不能大于42亿,过5秒后,请您重新输入!\n");
Sleep(5000);
continue;
}
else {
break;
}
}
#pragma region 把数字转成中文大写
printf("\n%lld转换成大写后:(位数为:%d)\n\n", 金额,金额字符长度);
//亿位
if (十亿位 != 0) {
if (十亿位 == 1) { //一般不能读成壹拾元整
printf("拾");
}
else {
printf("%s拾", a2大写[十亿位]);
}
}
if (亿位 != 0) {
printf("%s", a2大写[亿位]);
}
if (亿位 != 0 || 十亿位 != 0) {
printf("亿");
}
//万位
if (千万位 != 0) {
printf("%s仟", a2大写[千万位]);
}
if (百万位 != 0) {
if (千万位 == 0) { //前面的数为0补零
if (金额字符长度 > 7) {
printf("%s", a2大写[0]);
}
}
printf("%s佰", a2大写[百万位]);
}
if (十万位 != 0) {
if (百万位 == 0) { //前面的数为0补零
if (金额字符长度 > 6) {
printf("%s", a2大写[0]);
}
}
if (十万位 == 1) { //一般不能读成壹拾元整
printf("拾");
}
else {
printf("%s拾", a2大写[十万位]);
}
}
if (万位 != 0) {
if (十万位 == 0) { //前面的数为0补零
if (金额字符长度 > 5) {
printf("%s", a2大写[0]);
}
}
printf("%s", a2大写[万位]);
}
if (万位 != 0 || 十万位 != 0 || 百万位 != 0 || 千万位 != 0) {
printf("万");
}
//个位
if (千位 != 0) {
if (万位 == 0) { //前面的数为0补零
if (金额字符长度 > 4) {
printf("%s", a2大写[0]);
}
}
printf("%s仟", a2大写[千位]);
}
if (百位 != 0) {
if (千位 == 0) { //前面的数为0补零
if (金额字符长度 > 3) {
printf("%s", a2大写[0]);
}
}
printf("%s佰", a2大写[百位]);
}
if (十位 != 0) {
if (百位 == 0) { //前面的数为0补零
if (金额字符长度 > 2) {
printf("%s", a2大写[0]);
}
}
if (十位 == 1) { //一般不能读成壹拾元整
printf("拾");
}
else {
printf("%s拾", a2大写[十位]);
}
}
if (个位 != 0) {
if (十位 == 0) { //前面的数为0补零
if (金额字符长度 > 1) {
printf("%s", a2大写[0]);
}
}
printf("%s", a2大写[个位]);
}
printf("元人民币整\n\n");
printf("转换完成后,就要退出系统了,");
system("pause");
#pragma endregion
return 0;
}
需要掌握的要点:
1.这里使用了long long是8字节整数类型
2.这里为什么要补0
3.这里为什么要写"拾"
【你乐科技版权】站内所发布的一切原创内容,转载请说明是由《你乐科技》发布,内容仅限用于学习和研究,不得用于商业或非法用途,否则,一切后果请用户自负。本站信息部分来自网络,版权争议与本站无关。您必须在下载后的24小时内,彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
邮箱地址:nilekeji@163.com
最后于 11月前
被酷乐Happy编辑
,原因: