前情提要:C语言小白,自己摸索着做的,堪堪答案正确,必有不足之处,烦请谅解。
做题链接:PAT (Basic Level) Practice (中文)
- 1002 写出这个数
#include <stdio.h>
//数字转汉字
void hanzi(int k)
{
switch(k)
{
case 0:
printf("ling");
break;
case 1:
printf("yi");
break;
case 2:
printf("er");
break;
case 3:
printf("san");
break;
case 4:
printf("si");
break;
case 5:
printf("wu");
break;
case 6:
printf("liu");
break;
case 7:
printf("qi");
break;
case 8:
printf("ba");
break;
case 9:
printf("jiu");
break;
default:
break;
}
}
int main()
{
//输入数字
char a[100];
scanf("%s",a);
//各位数相加
int i = 0,j=0;
for(;a[i]!='\0';i++)
{
j+=(a[i]-'0');//我也不知道为什么这一步要-'0',求教
}
//取和的各位数字,转汉字
int x=0,y=0,z=0;
if(j>99)
{
x=j/100;
z=j%10;
y=j/10-x*10;
hanzi(x);
printf(" ");
hanzi(y);
printf(" ");
hanzi(z);
}
else if(j>9)
{
y=j/10;
z=j-y*10;
hanzi(y);
printf(" ");
hanzi(z);
}
else
{
hanzi(j);
}
return 0;
} - 1004 成绩排名
#include <stdio.h>
struct student
{
char name[15];
char num[15];
int mark;
};
int main()
{
//输入学生信息
int n,i;
struct student stu[1000],stuMax,stuMin;//测试点2反复修改总是不通过,后来发现是学生的人数没有上限,这里偷懒写了stu[1000]也给通过了
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%d",stu[i].name,stu[i].num,&stu[i].mark);
}
//逐个比较,寻找最值
stuMax=stu[0];
stuMin=stu[0];
for(i=0;i<n;i++)
{
if(stuMax.mark<stu[i].mark)
{
stuMax=stu[i];
}
if(stuMin.mark>stu[i].mark)
{
stuMin=stu[i];
}
}
//输出
printf("%s %s\n",stuMax.name,stuMax.num);
printf("%s %s\n",stuMin.name,stuMin.num);
return 0;
}
|