样例能过,带答案不对,特殊情况也试了,大家帮忙看看有什么能补充的?谢谢!
代码
```c
#include <stdio.h>
// 输出大写金额
void CurPrint(double amount);
int main()
{
double amount;
scanf("%lg", &amount);
CurPrint(amount);
putchar('\n');
return 0;
}
/* 你提交的代码将被嵌在这里 */
// 输出大写金额
void CurPrint(double amount){
int j= amount,a[20],k=amount;
double xia= amount-j;
int n=0;//记录位数;
j=xia*1000;//把小数点后三位化为整数
if(j%10>=5){//根据最后一位数进行四舍五入
j/=10;
j++;
if(j>=100)k++;
}else{
j/=10;
}
if(k==0&&xia==0)printf("零元");//整数部分和小数部分全为零
while(k!=0){
a[n++]=k%10;
k/=10;
}
n--;
for(n;n>=0;n--){//输出整数部分
switch(a[n]){
case 0:printf("零");break;
case 1:printf("壹");break;
case 2:printf("贰"); break;
case 3:printf("叁");break;
case 4:printf("肆");break;
case 5:printf("伍");break;
case 6:printf("陆");break;
case 7:printf("柒");break;
case 8:printf("捌");break;
case 9:printf("玖");break;
}
switch(n+1){
case 1:printf("元");break;
case 2:printf("拾");break;
case 3:printf("佰");break;
case 4:printf("仟");break;
case 5:printf("万");break;
case 6:printf("拾");break;
case 7:printf("佰");break;
case 8:printf("仟");break;
case 9:printf("亿");break;
case 10:printf("拾");break;
case 11:printf("佰");break;
case 12:printf("仟");break;
}
}
//输出小数部分
if(xia*1000<10&&amount!=0){//整数部分为零但小数部分不为零
printf("零分");
}else if(amount!=0){
if(j<10){
printf("零角");
switch(j){
case 0:printf("零");break;
case 1:printf("壹");break;
case 2:printf("贰"); break;
case 3:printf("叁");break;
case 4:printf("肆");break;
case 5:printf("伍");break;
case 6:printf("陆");break;
case 7:printf("柒");break;
case 8:printf("捌");break;
case 9:printf("玖");break;
}
printf("分");
}else if(j<100){
switch(j/10){
case 0:printf("零");break;
case 1:printf("壹");break;
case 2:printf("贰"); break;
case 3:printf("叁");break;
case 4:printf("肆");break;
case 5:printf("伍");break;
case 6:printf("陆");break;
case 7:printf("柒");break;
case 8:printf("捌");break;
case 9:printf("玖");break;
}
printf("角");
switch(j%10){
//case 0:printf("零");break;
case 1:printf("壹分");break;
case 2:printf("贰分"); break;
case 3:printf("叁分");break;
case 4:printf("肆分");break;
case 5:printf("伍分");break;
case 6:printf("陆分");break;
case 7:printf("柒分");break;
case 8:printf("捌分");break;
case 9:printf("玖分");break;
}
}
}
}
```
void sort( list r[], int n )
{
int i, j, mini, maxi;
for (i=1; i<n-i+1; i++) {
mini = maxi = i;
for( j=i+1; j<=n-i+1; ++j ){
if(r[j]->key < r[mini]->key) mini = j;
else if(r[j]->key > r[maxi]->key) maxi = j;
}
if(mini != i) swap(&r[mini], &r[i]);
if( maxi != n-i+1 ){
if(maxi == i) swap(&r[mini], &r[n-i+1]);
else swap(&r[maxi], &r[n-i+1]);
}
}
}
这题有输出样例吗,发出来看看。
2023.6.25修改如下,供参考:
#include <stdio.h>
// 输出大写金额
void CurPrint(double amount);
int main()
{
double amount;
scanf("%lg", &amount);
CurPrint(amount);
putchar('\n');
return 0;
}
/* 你提交的代码将被嵌在这里 */
// 输出大写金额
void CurPrint(double amount)
{
amount += 0.005;
int j = (int)amount, a[20] = { 0 }, k = (int)amount;
double xia = amount - j;
int n = 0;//记录位数
while (j != 0) {
a[n++] = j % 10;
j /= 10;
}
for (n--; n >= 0; n--) {//输出整数部分
switch (a[n]) {
case 0:printf("零"); break;
case 1:printf("壹"); break;
case 2:printf("贰"); break;
case 3:printf("叁"); break;
case 4:printf("肆"); break;
case 5:printf("伍"); break;
case 6:printf("陆"); break;
case 7:printf("柒"); break;
case 8:printf("捌"); break;
case 9:printf("玖"); break;
}
switch (n + 1) {
case 1:printf("元"); break;
case 2:printf("拾"); break;
case 3:printf("佰"); break;
case 4:printf("仟"); break;
case 5:printf("万"); break;
case 6:printf("拾"); break;
case 7:printf("佰"); break;
case 8:printf("仟"); break;
case 9:printf("亿"); break;
case 10:printf("拾"); break;
case 11:printf("佰"); break;
case 12:printf("仟"); break;
}
}
//输出小数部分
j = (int)(xia * 100);
if (j < 10) {
if (k)
printf("零角");
switch (j) {
case 0:printf("零"); break;
case 1:printf("壹"); break;
case 2:printf("贰"); break;
case 3:printf("叁"); break;
case 4:printf("肆"); break;
case 5:printf("伍"); break;
case 6:printf("陆"); break;
case 7:printf("柒"); break;
case 8:printf("捌"); break;
case 9:printf("玖"); break;
}
printf("分");
}
else if (j < 100) {
switch (j / 10) {
case 0:printf("零"); break;
case 1:printf("壹"); break;
case 2:printf("贰"); break;
case 3:printf("叁"); break;
case 4:printf("肆"); break;
case 5:printf("伍"); break;
case 6:printf("陆"); break;
case 7:printf("柒"); break;
case 8:printf("捌"); break;
case 9:printf("玖"); break;
}
printf("角");
switch (j % 10) {
case 0:printf("零分"); break;
case 1:printf("壹分"); break;
case 2:printf("贰分"); break;
case 3:printf("叁分"); break;
case 4:printf("肆分"); break;
case 5:printf("伍分"); break;
case 6:printf("陆分"); break;
case 7:printf("柒分"); break;
case 8:printf("捌分"); break;
case 9:printf("玖分"); break;
}
}
}
已解决,谢谢解答