北理C语言作业及答案3(7)

2019-03-16 14:36

struct student stu[100];

int N,i;

scanf(\

for(i=0;i

GetName(stu[i].name);

if(i

GetScore(&stu[i].score);

else

GetScoreLast(&stu[i].score); }

sort(stu,N);

print(stu,N); }

H21:数码管(选作)

成绩: 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位二进制数就是:0101 0000。如果用十六进方式表示出来就是 50。

同理,要显示出“3”,应该点亮:0、1、2、4、6;对应的二进表示为:0101 0111,用十六进制表示就是 57。

请编写一个程序,用 5 个数码管显示一个 16 位 (bit) 的正整数。

说明:如果需要显示的数据不足5位,则在数据前面补0。例如120要显示为00120。

输入

程序的输入是一系列 16 位(bit)的正整数(10进制形式),数与数之间允许用空白符隔开,当数字为 0 时程序结束。

输出

针对每个正整数,输出 5 个字节的十六进制数,它们可以表示 5 个数码管的状态。其中右侧第 1 个数表示输入数字的个位,第 2 个数表示十位,以此类推。

时间限制内存限制额外进程 1秒 64M 0 测试输入 期待的输出以文本方式显示 以文本方式显示 测试用例 1 1. 10103? 2. 30301? 3. 0? 1. 50 7D 50 7D 57? 2. 57 7D 57 7D 50? H21:数码管(选作)

成绩: 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位二进制数就是:0101 0000。如果用十六进方式表示出来就是 50。

同理,要显示出“3”,应该点亮:0、1、2、4、6;对应的二进表示为:0101 0111,用十六进制表示就是 57。

请编写一个程序,用 5 个数码管显示一个 16 位 (bit) 的正整数。

说明:如果需要显示的数据不足5位,则在数据前面补0。例如120要显示为00120。

输入

程序的输入是一系列 16 位(bit)的正整数(10进制形式),数与数之间允许用空白符隔开,当数字为 0 时程序结束。

输出

针对每个正整数,输出 5 个字节的十六进制数,它们可以表示 5 个数码管的状态。其中右侧第 1 个数表示输入数字的个位,第 2 个数表示十位,以此类推。

时间限制内存限制额外进程 1秒 64M 0 测试输入 期待的输出以文本方式显示 以文本方式显示 测试用例 1 1. 10103? 2. 30301? 1. 50 7D 50 7D 57? 3. 0? 2. 57 7D 57 7D 50? ins_list( PNODE h, int num ) {

PNODE zhu;

zhu=(NODE*)malloc(sizeof(NODE)); zhu->data=num; zhu->next=h->next; h->next=zhu; }

52 链表处理*

成绩: 10 / 折扣: 0.8

编写一个函数,给定的带有头结点的单向链表 head,给定某结点的数据域值 m,将该结点移到链首。 结构的定义:

typedef struct node {

int num;

struct node *next; } SNODE;

函数的原型:SNODE *movenode(SNODE *head, int m);

其中:参数 head 是单向链表的头指针;参数 m 是某结点的num成员的值。

例如输入结点数 n=7,则将结点数值域值 m=5 的结点移动到链首。函数运行前后链表的情况如下图所示。

预设代码

前置代码

view plaincopy to clipboardprint?

1. 2. 3. 4. 5. /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include #include

6. typedef struct sdata 7. { int num;

8. struct sdata *next; 9. } SNODE; 10.

11. void movenode( SNODE *, int ); 12.

13. void setlink( SNODE * head, int n ) 14. {

15. SNODE *p; 16.

17. while ( n > 0 )

18. { p = ( SNODE * ) malloc( sizeof( SNODE ) ); 19. p->num = n;

20. p->next = head->next; 21. head->next = p; 22. n --; 23. } 24. } 25.

26. void outlink( SNODE * head ) 27. {

28. while( head->next != NULL ) 29. {

30. head = head->next;

31. printf( \, head->num ); 32. }

33. return; 34. } 35.

36. int main( ) 37. { int n, m;

38. SNODE * head = NULL; 39.

40. scanf(\, &n, &m );

41. head = ( SNODE * ) malloc( sizeof( SNODE ) ); 42. head->num = -1; 43. head->next = NULL; 44. setlink( head, n ); 45.

46. movenode( head, m ); /* This is waiting for you. */ 47.

48. outlink( head ); 49. printf(\);


北理C语言作业及答案3(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(试行)火车采样机的操作规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: