C语言编程题.docx
- 文档编号:10696234
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:17
- 大小:18.17KB
C语言编程题.docx
《C语言编程题.docx》由会员分享,可在线阅读,更多相关《C语言编程题.docx(17页珍藏版)》请在冰豆网上搜索。
C语言编程题
1.短信计费
用手机发短信,一般一条短信资费为0.1元,但限定每条短信的内容在70个字以内(包括70个字)。
如果你所发送的一条短信超过了70个字,则大多数手机会按照每70个字一条短信的限制把它分割成多条短信发送。
假设已经知道你当月所发送的每条短信的字数,试统计一下你当月短信的总资费。
#include
#include
#include
#include
#include
#include
#include
#definelllonglong
usingnamespacestd;
intn;
intmain()
{
cin>>n;
doubleans=0;
for(inti=1;i<=n;i++)
{
intx;
cin>>x;
ans=ans+((x-1)/70+1)*0.1;
}
printf("%.1lf\n",ans);
return0;
}
2.集体照
医学部口腔3班n位同学约定拍集体照,n大于1且不超过100。
摄影师要求同学按照身高站成两排,保证第二排的人身高都要大于等于第一排的人,且第二排的人数和第一排的人数相等或者比第一排多一个人。
输入n位同学的身高,请问第二排中身高最矮的人的身高是多少?
#include
#include
#include
#include
#include
#include
#include
#definelllonglong
usingnamespacestd;
intn;
inta[105];
intmain()
{
while(scanf("%d",&n))
{
if(n==0)return0;
for(inti=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
cout< } return0; } 3.1020跳格问题 有一种游戏,在纸上画有很多小方格,第一个方格为起点(S),最后一个方格为终点。 有一个棋子,初始位置在起点上,棋子每次可移动一次,棋子在起点时,可向前移动一个格子到第二个方格内;棋子在其他方格内时,可根据方格内的数字Ni进行移动。 如果Ni大于零,就向前移动Ni个格子;如果Ni小于零,就向后移动-Ni个格子;如果Ni等于零,则此次原地不动一次,在下一步移动时可向前移动一步到下一个格子。 显然,如果仅按此方案,会出现棋子永远移动不到终点的情形。 为防止这种情况发生,我们规定,当棋子再次来到它曾经到过的方格时,它需要原地不动一次,在下一步移动时可向前移动一步到下一个格子。 按此方案,棋子总能够走到终点(F)。 如果给定一个方格图,试求棋子要走多少步才能从起点走到终点。 (注: 当然还可能会出现向前移动Ni个格子就跑过终点了,则把棋子放到终点上。 如果Ni太小,使得棋子向后移动跑过了起点,则把棋子放到起点上。 )(如图所示,其中S代表起点,F代表终点)(只有离开后再次来到一个方格时,才算来到它曾经到过的方格,包括起点S) #include #include #include #include #include #include #include #definelllonglong usingnamespacestd; intn,ans; inta[105]; boolvis[105]; voiddfs(intx) { if(x<1) x=1; if(x>n+2) x=n+2; if(vis[x]) { if(a[x])ans+=2; elseans+=1; dfs(x+1); } else { vis[x]=1; if(x==n+2)return; ans++; dfs(x+a[x]); } } intmain() { scanf("%d",&n); a[1]=1; for(inti=2;i<=n+1;i++) cin>>a[i]; dfs (1); cout< return0; } 4.配对碱基链 脱氧核糖核酸(DNA)由两条互补的碱基链以双螺旋的方式结合而成。 而构成DNA的碱基共有4种,分别为腺瞟呤(A)、鸟嘌呤(G)、胸腺嘧啶(T)和胞嘧啶(C)。 我们知道,在两条互补碱基链的对应位置上,腺瞟呤总是和胸腺嘧啶配对,鸟嘌呤总是和胞嘧啶配对。 你的任务就是根据一条单链上的碱基序列,给出对应的互补链上的碱基序列。 #include #include #include #include #include #include #include #definelllonglong usingnamespacestd; intn; stringx; intmain() { scanf("%d",&n); for(inti=1;i<=n;i++) { cin>>x; for(intj=0;j { if(x[j]=='T') x[j]='A'; elseif(x[j]=='A') x[j]='T'; elseif(x[j]=='C') x[j]='G'; else x[j]='C'; } cout< } return0; } 5.打鱼还是晒网 中国有句俗语叫“三天打鱼两天晒网”。 某人从1990年1月1日起开始“三天打鱼两 天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。 注意要区分闰年和不是闰年的两种情况 #include #include #include #include #include #include #include #definelllonglong usingnamespacestd; inty,m,d; intmm[12]={31,28,31,30,31,30,31,31,30,31,30,31}; inttot; intmain() { cin>>y>>m>>d; for(inti=1990;i if((i%4==0&&i%100! =0)||i%400==0) tot+=366; elsetot+=365; for(inti=1;i if(((y%4==0&&y%100! =0)||y%400==0)&&i==2) tot+=29; else tot+=mm[i-1]; tot+=(d-1); if(tot%5<=2) puts("fishing"); else puts("sleeping"); return0; } 6.优先队列 给定一个初始数字集合,对其做如下两种操作: 1.添加一个新的数字 2.将集合中当前最小的数字取出(输出并删除),如果最小的数字有多个,只取出其中一个。 #include #include #include #include #include #include #include #include #definelllonglong usingnamespacestd; intn,m; structdata{ inta[200005]; intcnt; boolempty(){ returncnt==0; } voidpush(intx){ a[++cnt]=x; intp=cnt; while(p>1&&a[p] { swap(a[p],a[p/2]); p=p/2; } } inttop(){ returna[1]; } voiddown(intx){ intt=x<<1; if(t>cnt)return; if(t+1<=cnt&&a[t+1] t++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程