C语言作业5文档格式.docx
《C语言作业5文档格式.docx》由会员分享,可在线阅读,更多相关《C语言作业5文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
intmain(){
chara[10000];
intx[10]={0};
scanf("
%s"
a);
intn=strlen(a);
for(inti=0;
i<
n;
i++){x[a[i]-'
0'
]++;
}
for(inti=9;
i>
=0;
i--)
for(intj=0;
j<
x[i];
j++){printf("
%d"
i);
printf("
\n"
);
29北理工的恶龙
背景:
最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,于是,校长下令召集全校所有勇士杀死这只恶龙。
要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。
而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。
校长想花最少的学分数杀死恶龙,于是找到你寻求帮助。
第一行龙头数n,勇士人数m(1<
=n,m<
=100)接下来n行,每行包含一个整数,表示龙头的直径接下来m行,每行包含一个整数,表示勇士的身高l
如果勇士们能完成任务,输出校长需要花的最小费用;
否则输出“bitisdoomed!
”
1.2
3↵
2.5↵
3.4↵
4.7↵
5.8↵
6.4↵
1.11↵
测试用例2
1↵
3.5↵
4.10↵
1.bit
is
doomed!
↵
intmain()
{
intdragon,hero;
%d%d"
&
dragon,&
hero);
intdragonhead[100]={0};
intherohight[100]={0};
//input
dragon;
i++)
scanf("
dragonhead[i]);
hero;
herohight[i]);
//makethedateinorder
inttemp;
{
dragon-1;
j++)
{
if(dragonhead[j]>
dragonhead[j+1])
{
temp=dragonhead[j];
dragonhead[j]=dragonhead[j+1];
dragonhead[j+1]=temp;
}
}
}
for(inti=0;
hero-1;
if(herohight[j]>
herohight[j+1])
temp=herohight[j];
herohight[j]=herohight[j+1];
herohight[j+1]=temp;
//arrangeherotokillthedragon
intstart=0;
for(intj=start;
if(herohight[j]>
=dragonhead[i])
{
dragonhead[i]=0;
start++;
break;
}
else
herohight[j]=0;
if(start>
hero)
for(inti=start;
herohight[i]=0;
//caculatethegrade
intsd=0;
intsh=0;
sd=sd+dragonhead[i];
sh=sh+herohight[i];
if(sd==0)
printf("
%d\n"
sh);
else
bitisdoomed!
31合并字符串
输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
两个已经排好顺序(升序)的两个字符串
一个合并在一起的有序(升序)的字符串
要求:
设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了。
1.abcdef↵
2.bcefghi↵
1.abbccdeeffghi↵
1.123456↵
2.789↵
1.9↵
测试用例3
1.789↵
2.12345↵
1.↵
测试用例4
2.123456↵
1.1↵
测试用例5
2.↵
1.123456↵
测试用例6
1.↵
chara[50],b[50];
gets(a);
gets(b);
char*p1;
p1=&
a[0];
char*p2;
p2=&
b[0];
for(;
1;
)
if(*p1=='
\0'
p2);
break;
if(*p2=='
p1);
if(*p1>
*p2)
%c"
*p2);
p2++;
*p1);
p1++;
32串的减法
输入字符串s和t(串长不超过80个字符),将在字符串s中出现,但未在字符串t中出现的字符组成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符,输出u。
例如:
当s="
112345"
,t="
2467"
时,u="
1135"
。
第一行为串s
第二行为串t
串u
1.112345↵
2.2467↵
1.1135↵
chara[80];
charb[80];
intl=strlen(a);
b[i]!
='
;
l;
if(a[j]==b[i])
a[j]='
for(intk=0;
k<
k++)
if(a[k]!
a[k]);
H9:
五年级小学生的题目(选做)
5/折扣:
那两个小朋友在不断进步,他们已经学会了负数和多位数,于是他们又开始进行游戏了。
小明给出一堆整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。
用逗号分隔的整数序列,及其运算符和等号
最大数op最小数=结果
说明:
本题目应该可以不使用数组就可以完成,关键是如何处理负数和减法。
1.1,10,100,+,=↵
1.100
+
1
=
101↵
1.-100,-1,1,100,+,=↵
(-100)
0↵
1.-20,-10,0,10,20,*,=↵
1.20
*
(-20)
-400↵
intintpow(inta,intb)//a^b
intresult=1;
b;
result=result*a;
returnresult;
structdate
intmax;
intmin;
charop;
intr;
};
structdatefunction(charp[],intn)
structdateresult;
n=n-4;
intmax=-10000;
int