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
热门推荐:
自考有疑问、不知道如何选择主考院校及专业、不清楚自考当地政策,点击立即了解》》
推荐阅读: