ctypeh里的函数c语言,C语言笔记52-内置函数ctype.h(数字转中文大写)[老九学堂]

常用的内置函数:ctype.h    (字符类型)

3_TBERWP8MBU8MN95.png

isupper:返回是否为大写字母(upper case:大写字母)

islower:返回是否为小写字母(lower case:小写字母)

isalpha:返回是否为字母(A-Z|a-z)  (alphabet:字母表)

isdigit:返回是否为数字(digit:0-9中任何的数字)

toupper:返回大写字母

tolower:返回小写字母

内置函数

图示:

3_T4SJV9DE5P656PJ.png

源代码:#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码

图示:

3_FWXVCWCRX6CMPYP.gif

源代码:#include 

void main() {

for (int t = 32; t 

printf("字符:%c->ASCII码:%d\n", t,t);

}

return 0;

}

数字转中文大写(超难)

图示:

3_PAE9GJX6E5A2FMW.gif

源代码:#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字节整数类型

3_5TX9BG4FHEJE328.png

2.这里为什么要补0

3_XRGTZDG6GR5PK4E.png

3.这里为什么要写"拾"

3_BFRNV9CFCW4NDKR.png

【你乐科技版权】站内所发布的一切原创内容,转载请说明是由《你乐科技》发布,内容仅限用于学习和研究,不得用于商业或非法用途,否则,一切后果请用户自负。本站信息部分来自网络,版权争议与本站无关。您必须在下载后的24小时内,彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

邮箱地址:nilekeji@163.com

最后于 11月前

被酷乐Happy编辑

,原因:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值