杀鸡焉用牛刀 发表于 2022-11-7 06:07:32

计算机等级考试二级C语言上机题集(第51~55套)

第51套

1.程序填空题
给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<stdlib.h>
#define N5
typedef struct node
{
    intdata;
    struct node*next;
} NODE;
/**********found**********/
__1__ fun(NODE *h)
{
    NODE*p, *q, *r;
    p = h;
    if (p == NULL)
      return NULL;
    q = p->next;
    p->next = NULL;
    /**********found**********/
    while (__2__)
    {
       r = q->next;
       q->next = p;
       p = q;
    /**********found**********/
       q = __3__ ;
    }
    returnp;
}
NODE *creatlist(inta[])
{
    NODE*h,*p,*q;      
    inti;
    h=NULL;
    for(i=0; i<N; i++)
    {
      q=(NODE *)malloc(sizeof(NODE));
      q->data=a;
      q->next = NULL;
      if (h == NULL)h = p = q;
      else    {p->next = q;p = q;   }
    }
    returnh;
}
void outlist(NODE*h)
{
    NODE*p;
    p=h;
    if (p==NULL)printf("The list is NULL!\n");
    else
    {
      printf("\nHead");
      do
      {
            printf("->%d", p->data);
            p=p->next;
      } while(p!=NULL);
      printf("->End\n");
    }
}
int main()
{
    NODE*head;
    inta={2,4,6,8,10};
    head=creatlist(a);
    printf("\nThe original list:\n");
    outlist(head);
    head=fun(head);
    printf("\nThe list after inverting :\n");
    outlist(head);
    return 0;
}2.程序修改题
给定程序中,函数fun的功能是将字符串s中位于奇数位置的字符或ASCII码为偶数的字符放入字符串t中(规定第1个字符放在第0位中)。
例如,字符串中的数据为:AABBCCDDEEFF,则输出应为:ABBCDDEFF。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include #include #defineN80void fun(char *s, char t[]){      inti, j=0;    for(i=0; i
页: [1]
查看完整版本: 计算机等级考试二级C语言上机题集(第51~55套)