您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页二级C语言模拟题2018年(67)_真题-无答案

二级C语言模拟题2018年(67)_真题-无答案

来源:华佗小知识


二级C语言模拟题2018年(67) (总分100,考试时间90分钟)

一、程序填空题

1. 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 不得增行或删行,也不得更改程序的结构! 给定源程序:

#include<stdio.h> #include<stdlib.h> #define N 8

typedef struet list {int data;

struct list*next; }SLIST;

void fun(SLIST*h) {SLIST*p,*q; p=h->next; if(p!=NULL) {q=p->next; while(q!=NULL)

{if(p->data==q->data) {p->next=q->next;

/**********found**********/ free(______);

/**********found**********/ q=p->______; } else {p=q;

/**********found**********/ q=q->______; } } } }

SLIST*creatlist(int*a) {SLIST*h,*p,*q;int i;

h=p=(SLIST*)malloc(sizeof(SLIST)); for(i=0;i<N;i++)

{q=(SLIST*)malloc(sizeof(SLIST)); q->data=a[i];p->next=q;p=q; }

p->next=0; return h; }

void outlist(SLIST*h) {SLIST*p; p=h->next;

if(p==NULL)printf(\"\\nThe list is NULL!\\n\"); else

{printf(\"\\nHead\");

do{printf(\"->%d\>data);p=p- >next;)while(p!=NULL); printf(\"->End\\n\"); } }

main()

{SLIST*head; int a[N]={1,2,2,3,4,4,4,5}; head=creatlist(a);

printf(\"\\nThe list before deleting:\\n\"); outlist(head); fun(head);

printf(\"\\nThe list after deleting:\\n\"); outlist(head); }

二、程序改错题

1. 给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行和删行,也不得更改程序的结构! 给定源程序:

#include<stdio.h> #define N 20

void fun(int a[],int n] {int i,j,t,p;

for(j=0;j<n-1;j++){

/************found************/

p=j

for(i=j+1;i<n;i++) if(a[i]<a[p])

/************found************/ p=j;

t=a[p];a[p]=a[j];a[j]=t; } }

main() {

int a[N]={9,6,8,3,-1},i,m=5; printf(\"排序前的数据:\");

for(i=0;i<m;i++)printf(\"%d”,a[i]); printf(\"\\n\"); fun(a,m);

printf(\"排序后的数据:\");

for(i=0;i<m;i++)printf(\"%d\ printf(\"\\n\"); }

三、程序设计题

1. 请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

给定源程序:

#include<stdio.h> #define M 100

void fun(int m,int*a,int*n) { }

main()

{int aa[M],n,k; fun(50,aa,&n); for(k=0;k<n;k++)

if((k+1)%20==0)printf(\"\\n\"); else printf(\"%4d\ printf(\"\\n\"); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务