顺序表小写转大写

#include <iostream>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
 
typedef int Status; 
typedef char ElemType; 

typedef struct
{
    ElemType  *elem; 
    int length;   
}SqList; 

Status InitList(SqList &L) 
{  
    L.elem = new ElemType[MAXSIZE];
    if(!L.elem)   
        exit(OVERFLOW); 
    L.length = 0; 
    return OK;
}

Status CreatList(SqList &L, int n)
{  
    int i;
    for(i = 0; i < n; i++)
           cin >> L.elem[i];
    L.length = n;
    return OK;
}

Status DispList(SqList L)
{ 
    int i;
     for(i = 0; i < L.length; i++)
      cout << L.elem[i];
    return OK;
}

//小写转大写 
int LowerList(SqList &La)
{
	for (int i = 0; i < La.length; i++)
	{
		if (La.elem[i] <= 129 && La.elem[i] >= 97)
	    {
	       La.elem[i] -= 32;
	    }
	}
	return 0;
}

int main()
{
    SqList La;
    int n;        
    InitList(La);
    cin >> n;
    CreatList(La, n);
    LowerList(La);
    DispList(La);    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于中文数字的表达比较复杂,这里采用了阿拉伯数字汉字的方法。 具体实现思路如下: 1. 定义一个数组存储数字对应的汉字; 2. 将输入的金额字符串换为数字; 3. 将金额按照元、角、分的顺序拆分成整数部分和小数部分; 4. 对整数部分进行换,每四位一组,分别换成亿、万、仟、佰、拾、个的汉字; 5. 对小数部分进行换,分别换成角和分的汉字; 6. 将换后的结果输出。 以下是完整的代码实现: ```c #include <stdio.h> #include <string.h> // 数字对应的汉字 char *chinese[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; // 金额换函数 void convert(char *result, char *num) { int len = strlen(num); int integer = 0, decimal = 0; char *p = strchr(num, '.'); // 查找小数点位置 if (p != NULL) { *p = '\0'; // 将小数点替换成字符串结束符 decimal = atoi(p + 1); // 将小数部分换成整数 } integer = atoi(num); // 将整数部分换成整数 // 整数部分换 if (integer == 0) { strcat(result, chinese[0]); // 如果金额为0,直接输出“零” } else { int yi = integer / 100000000; // 亿 int wan = (integer % 100000000) / 10000; // 万 int qian = (integer % 10000) / 1000; // 千 int bai = (integer % 1000) / 100; // 百 int shi = (integer % 100) / 10; // 十 int ge = integer % 10; // 个 if (yi != 0) { convert(result, num + (len - strlen(itoa(yi, num, 10)))); // 递归处理亿位以前的部分 strcat(result, "亿"); } if (wan != 0) { convert(result, num + (len - strlen(itoa(wan, num, 10)))); // 递归处理万位以前的部分 strcat(result, "万"); } if (qian != 0) { strcat(result, chinese[qian]); strcat(result, "仟"); } if (bai != 0) { strcat(result, chinese[bai]); strcat(result, "佰"); } if (shi != 0) { if (shi != 1 || ge == 0) { // 如果十位为1,个位为0时,不输出“壹” strcat(result, chinese[shi]); } strcat(result, "拾"); } if (ge != 0) { if (shi == 0 && bai != 0) { // 如果十位为0,百位不为0时,需要输出“零” strcat(result, chinese[0]); } strcat(result, chinese[ge]); } } // 小数部分换 if (decimal != 0) { int jiao = decimal / 10; // 角 int fen = decimal % 10; // 分 if (jiao != 0) { strcat(result, chinese[jiao]); strcat(result, "角"); } if (fen != 0) { strcat(result, chinese[fen]); strcat(result, "分"); } } } int main() { char num[10]; printf("请输入金额(小于1亿):"); scanf("%s", num); char result[100] = ""; convert(result, num); printf("大写金额为:%s\n", result); return 0; } ``` 下面是一些样例输出: ``` 请输入金额(小于1亿):123456.78 大写金额为:壹拾贰万叁仟肆佰伍拾陆元柒角捌分 请输入金额(小于1亿):10000000 大写金额为:壹仟万元整 请输入金额(小于1亿):100000000 大写金额为:一亿元整 请输入金额(小于1亿):0.00 大写金额为:零元整 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值