全国
专业选择 政策信息 时间日期 条件要求 方法流程

收起

自考本科 > 网站地图 > 备考资料 > 模拟试题 > 工学类 > C语言程序设计

2022年自学考试《C语言程序设计》练习题及答案10

发布时间: 2022-07-12

2022年自学考试《C语言程序设计》练习题及答案10

【3.46】输入N个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序进行排列。要求:当两个整数相等时,整数的排列顺序由输入的先后次序决定。例如:输入的第3个整数为5,第7个整数也为5,则将先输入的整数5排在后输入的整数5的前面。程序如下:

#include'stdio.h'

#define N 10

struct

{int no;

int num;

}array[N];

main()

{int i,j,num;

for(i=0;i

{printf('enter No.%d:',i);

scanf('%d',&num);

for(①;j>=0&&array[j].num②num;③)

array[j+1]=array[j];

array[④].num=num;

array[⑤].no=i;

}

for(i=0;i

printf('%d=%d,%dn',i,array.num,array.no);

}

【3.47】以下程序的功能是:读入一行字符(如:a、...y、z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。

#include

main()

{struct node

{char info;

struct node*link;

}*top,*p;

char c;

top=NULL;

while((c=getchar())①)

{p=(struct node*)malloc(sizeof(struct node));

p->info=c;

p->link=top;

top=p;

}

while(top)

{②;

top=top->link;

putchar(p->info);

free(p);

}

}

【3.48】下面函数将指针p2所指向的线性链表,串接到p1所指向的链表的末端。假定p1所指向的链表非空。

#define NULL 0

struct link

{float a;

struct link*next;

};

concatenate(p1,p2)

struct list*p1,*p2;

{if(p1->next==NULL)

p1->next=p2;

else

concatenate(①,p2);

}

【3.49】下面程序的功能是从键盘输入一个字符串,然后反序输出输入的字符串。

#include

struct node

{char data;

struct node*link;

}*head;

main()

{char ch;

struct node*p;

head=NULL;

while((ch=getchar())!='n')

{p=(struct node*)malloc(sizeof(struct node));

p->data=ch;

p->link=①;

head=②;

}

③;

while(p!=NULL)

{printf('%c',p->data);

p=p->link;

}

}

【3.50】下面程序的功能是从键盘上顺序输入整数,直到输入的整数小于0时才停止输入。然后反序输出这些整数。

#include

struct data

{int x;

struct data*link;

}*p;

input()

{int num;

struct data*q;

printf('Enter data:');

scanf('%d',&num);

if(num<0)

①;

q=②;

q->x=num;

q->link=p;

p=q;

③;

}

main()

{printf('Enter data until data<0:n');

p=NULL;

input();

printf('Output:');

while(④)

{printf('%dn',p->x);

⑤;

}

}

【程序填空题参考答案】

【3.46】答案:①j=i-1②>③j--④j+1⑤j+1

注释:程序的基本思想是:对于输入的第i个整数num,从数组array中已有的元素中倒序开始查找。若数组array中的第j个元素的值大于num,则将数组中的元素j向后移动一个位置;否则,就应将num插入到当前位置作为元素j。因此,程序的基本设计思想就是插入排序。

程序中内层的for循环完成查找插入位置的工作,因此答案①、②和③有密切的关系,要统一考虑。同样,程序中的答案④和⑤也有密切的关系,要统一考虑。

【3.47】答案:①!='n'②p=top

【3.48】答案:①p1->next

【3.49】答案:①head②p③p=head

注释:程序在从键盘接受字符的同时就在建立起链表,所建立的链表本身就已经是反序排列的,因此在反序输出字符串的时候实际只需沿着链表的第一个结点开始,顺序操作即可。

【3.50】答案:①return②(struct data*)malloc(sizeof(struct data))

③input()④p!=NULL⑤p=p->next

热门推荐:

自考有疑问、不知道如何选择主考院校及专业、不清楚自考当地政策,点击立即了解》》

推荐阅读:

2022年10月各省成人自学考试报名时间及入口汇总

2022年10月全国各省自学考试报考条件汇总

2022年10月全国各省成人自学考试报名官网汇总

你可能感兴趣的试题
1
意向表
2
学习中心老师电话沟通
3
查看评估报告
1、年龄阶段

2、当前学历

3、提升学历目标

4、意向学习方式

报考所在地
*
*
*