
#include
#define MAX 16
void pos(int n,int m)
{
int x,y;
x = n/4; //用来判断万、亿。。
y = n%4;
if(m !=0)
{
switch(y)
{
case 2:
printf("拾");
break;
case 3:
printf("佰");
break;
case 0:
printf("仟");
break;
}
}
switch(x)
{
case 1:
if (y==1)
{
printf("万");
}
break;
case 2:
if (y==1)
{
printf("亿");
}
break;
}
}
int make(int Flag)
{
if(Flag != 0)
{
printf("零");
Flag = 0;
}
return Flag;
}
void chinese(int m,int p) //m表示数字,p表示在第几位
{
static int flag = 0;
switch(m)
{
case 0:
flag++;
break;
case 1:
flag = make(flag);
printf("壹");
break;
case 2:
flag = make(flag);
printf("贰");
break;
case 3:
flag = make(flag);
printf("叁");
break;
case 4:
flag = make(flag);
printf("肆");
break;
case 5:
flag = make(flag);
printf("伍");
break;
case 6:
flag = make(flag);
printf("陆");
break;
case 7:
flag = make(flag);
printf("柒");
break;
case 8:
flag = make(flag);
printf("捌");
break;
case 9:
flag = make(flag);
printf("玖");
break;
}
if(flag ==1 ||m!=0)
pos(p,m);
}
int main()
{
while(1)
{
char str[MAX];
char ch;
int m,count=0,num=1,len=0;
if ((ch = getchar()) == '.')
while((ch = getchar()) >='0' && ch <='9')
{
str[count] = ch;
count++;
}
m = count;
while(len
chinese(str[len]-48,m);
m--;
len++;
}
return 0;
}
}
应该是小写字母转大写字母。
#include
char* toUpper(char *src)
{
int i = -1;
while (src[++i])
if (src[i] >= 'a' && src[i] <= 'z') // 如果是小写字符册橡耐,减去32就是大小写了
如行 src[i] -= 32;
return src;
}
int main()
{
州春 char p[] = "acsduavh4516;';gbasff";
printf("relust = %s ", toUpper(p));
return 0;
}
如果是输入一个数,比如150000,输出“拾伍万”。方法很简单,首先用除法(除以10000)判断输盯兄入的数值范围,划分两个区间0-9999和10000-99990000,然后除法和取余两种运算并用,获取每一位的数值,然后printf()大写汉字即可。记得腔则银若大于1万时,伍宴需要添加一个万字。
代码不对啊,用数组好。
这个问题很简单啊 你怎么搞这么复杂
好像不要这么复杂吧