C语言作业7.docx
- 文档编号:18567405
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:18
- 大小:37.46KB
C语言作业7.docx
《C语言作业7.docx》由会员分享,可在线阅读,更多相关《C语言作业7.docx(18页珍藏版)》请在冰点文库上搜索。
C语言作业7
45求表示方法
成绩:
10/折扣:
0.8
设m、n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。
例如,f(5,3)=5,有5种表示方法:
3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。
请编写程序,计算f(m,n)的值。
输入:
mn
输出:
f(m,n)的值
测试输入
期待的输出
时间限制
内存限制
额外进程
测试用例1
以文本方式显示
1.5 3↵
以文本方式显示
1.5↵
1秒
64M
0
测试用例2
以文本方式显示
1.6 4↵
以文本方式显示
1.9↵
1秒
64M
0
#include
intfun(intm,intn)
{
if(m==1)return1;
if(n==1)return1;
if(m if(m==n)return1+fun(m,n-1); returnfun(m,n-1)+fun(m-n,n); } intmain() { intm,n,a; scanf("%d%d",&m,&n); a=fun(m,n); printf("%d\n",a); } H18: 数码管(选作) 成绩: 10/折扣: 0.8 背景 数码管是一种廉价的十进制数字显示装置,它的基本工作原理是: 一个数码管有7段,我们将它对应成八位二进制的8位。 这8位的编号从左向右分别是7、6、5、4、3、2、1、0。 数码管的一段对应二进制的一位,如果要点亮某一段,则需要将相应的二进制位置1,其余不亮的段要将对应的位置0。 下图表示了7个二进制在数码管上对应的位置: 2 +---+ 3| |4 |1| +---+ 5| |6 |0| +---+ 例如,我们要显示出数字“1”,则应该点亮数码管的第4和6段。 这样对应的8位二进制数就是: 01010000。 如果用十六进方式表示出来就是50。 同理,要显示出“3”,应该点亮: 0、1、2、4、6;对应的二进表示为: 01010111,用十六进制表示就是57。 请编写一个程序,用5个数码管显示一个16位(bit)的正整数。 说明: 如果需要显示的数据不足5位,则在数据前面补0。 例如120要显示为00120。 输入 程序的输入是一系列16位(bit)的正整数(10进制形式),数与数之间允许用空白符隔开,当数字为0时程序结束。 输出 针对每个正整数,输出5个字节的十六进制数,它们可以表示5个数码管的状态。 其中右侧第1个数表示输入数字的个位,第2个数表示十位,以此类推。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例1 以文本方式显示 1.10103↵ 2.30301↵ 3.0↵ 以文本方式显示 1.50 7D 50 7D 57↵ 2.57 7D 57 7D 50↵ 1秒 64M 0 #include #include intmain() { charw[100]; intnum[10]={125,80,55,87,90,79,111,84,127,95}; ints=4,l=0; intn[9]={0,0,0,0,0,0,0,0,0}; for(;1;) { s=4; gets(w); if(w[0]=='0') break; l=strlen(w); for(inti=0;i<=l;i++) { if(w[i]==''&&s==4) continue; elseif(w[i]==''||s==9) { for(intq=s-4;q { printf("%X",num[n[q-1]]); if(q! =s) printf(""); } printf("\n"); for(intx=0;x<9;x++) n[x]=0; s=4; } elseif(w[i]=='\0'&&s==4) continue; elseif(w[i]=='\0') { for(intq=s-4;q { printf("%X",num[n[q-1]]); if(q! =s) printf(""); } printf("\n"); for(intx=0;x<9;x++) n[x]=0; s=4; continue; } else {n[s]=w[i]-'0'; s++; }}}} 46学生成绩排序 成绩: 10/折扣: 0.8 大家参加了期末考试,成绩出来后老师要对n个学生进行成绩汇总和排序。 要求程序按成绩降序进行排序。 在排序过程中对于成绩相同的学生,要按照输入数据的顺序进行排列。 例如: 有5名学生的成绩: zhang1,90 zhang2,91 zhang3,99 zhang4,91 zhang5,98 则排序结果应该为: zhang3,99 zhang5,98 zhang2,91 zhang4,91 zhang1,90 请注意例题中“zhang2”和“zhang4”的排列顺序。 输入: 第一行为将要输入的学生数量n 从第二行起后面连续n行数据,每行为一名学生的姓名(长度不超过20个字符,不包括空格),考试成绩(int) 输出: 排序后的结果。 每行为一名学生的姓名和成绩。 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例1 以文本方式显示 1.5↵ 2.zhang1,90↵ 3.zhang2,91↵ 4.zhang3,99↵ 5.zhang4,91↵ 6.zhang5,98↵ 以文本方式显示 1.zhang3,99↵ 2.zhang5,98↵ 3.zhang2,91↵ 4.zhang4,91↵ 5.zhang1,90↵ 1秒 64M 0 测试用例2 以文本方式显示 1.5↵ 2.zhang31,90↵ 3.zhang51,90↵ 4.zhang2,90↵ 5.zhang42,90↵ 6.zhang1,90↵ 以文本方式显示 1.zhang31,90↵ 2.zhang51,90↵ 3.zhang2,90↵ 4.zhang42,90↵ 5.zhang1,90↵ 1秒 64M 0 测试用例3 以文本方式显示 1.1↵ 2.wang,100↵ 以文本方式显示 1.wang,100↵ 1秒 64M 0 #include #include intmain() { structdate { charname[20]; intgrade; intn; }; structdateform[100]; intn; chartemp; scanf("%d",&n); for(inti=0;i { temp=getchar(); for(intj=0;j<20;j++) { scanf("%c",&temp); if(temp==',') { form[i].name[19]='\0'; form[i].n=j; break; } else form[i].name[j]=temp; } scanf("%d",&form[i].grade); } structdateftemp; ftemp.name[19]='\0'; for(inti=0;i { for(intj=1;j { if(form[j-1].grade
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业