二级题目2

发布时间:2023年12月29日

填空题(链表)

统计带头结点的单向链表中结点个数,并存放在形参n所指的存储单元中。

#include ???<stdio.h>

#include ???<stdlib.h>

#define ???N ???8

typedef ?struct list

{ ?int ?data;

???struct list ?*next;

} SLIST;

SLIST *creatlist(int ?*a);

void outlist(SLIST ?*);

void fun( SLIST ?*h, int ?*n)

{ ?SLIST ?*p;

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

???___1___=0;

???p=h->next;

???while(p)

???{ ?(*n)++;

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

??????p=p->___2___;

???}

}

void main()

{ ?SLIST ?*head;

???int ?a[N]={12,87,45,32,91,16,20,48}, num;

???head=creatlist(a); ???outlist(head);

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

???fun(___3___, &num);

???printf("\nnumber=%d\n",num);

}

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("The list is NULL!\n");

???else

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

??????do

??????{ ?printf("->%d",p->data); ?p=p->next; ?}

??????while(p!=NULL);

??????printf("->End\n");

???}

}

? ?改错题(1366改错题)

第1题 (18.0分) ???????题号:393 ???????难度:难 ???????第20章

/*-------------------------------------------------------

【程序改错】

---------------------------------------------------------

题目:void add(char a[],char b[],char c[])函数将由'0','1'

??????组成的字符串a,b按二进制数加法规则相加,和仍以'0','1'

??????组成的字符串形式保存到字符串c中。

例如:字符串a为"1100",字符串b为"111",调用add函数后字符串c

??????为"10011"。

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

---------------------------------------------------------

注意:不得增行或删行,也不得更改程序的结构。

--------------------------------------------------------*/

#include <stdio.h>

#include <string.h>

void reverse(char s[])

{

????int i,len;

????char t;

/*******************FOUND*******************/

????len=strlen(s)-1;

????for(i=0;i<len/2;i++)

????{

????????t=s[i];

????????s[i]=s[len-i-1];

????????s[len-i-1]=t;

????}

}

void add(char a[],char b[],char c[])

{

????int i,j,k,t,flag;

????i=strlen(a)-1;

????j=strlen(b)-1;

????k=flag=0;

????while(i>=0||j>=0)

????{

????????if(i<0)

????????????t=b[j]-48+flag;

????????else if(j<0)

????????????t=a[i]-48+flag;

????????else

????????????t=a[i]-48+b[j]-48+flag;

/*******************FOUND*******************/

????????c[k]=t/2;

????????k++;

????????if(t>1)

????????????flag=1;

????????i--;

????????j--;

????}

/*******************FOUND*******************/

????if(flag==0)

????????c[k++]='1';

????c[k]='\0';

????reverse(c);

}

int main()

{

????char a[50],b[50],c[51];

????printf("Input a(binary):\n");

????scanf("%s",a);

????printf("Input b(binary):\n");

????scanf("%s",b);

????add(a,b,c);

????printf("After adding ?a+b=%s\n",c);

????return 0;

}

(指针大礼包-改错题第3题)

第3题 (10.0分) ???????题号:53 ???????难度:中 ???????第8章

/*-------------------------------------------------------

【程序改错】

---------------------------------------------------------

题目:下列给定程序中函数fun的功能是:求出s所指字符串中最后一次出现的t所指

??????字符串的地址,并通过函数值返回,在主函数中输出从此地址开始的字符串;

??????若未找到,则函数值为NULL。

例如:当字符串中的内容为"abcdabfabcdx",t中内容为"ab"时,输出结果应是"abcdx"。

??????当字符串中的内容为"abcdabfabcdx",t中内容为"abd"时,则程序输出未找

??????到信息"not be found!"。

-------------------------------------------------------*/

#include ?<stdio.h>

#include ?<string.h>

char * fun (char ?*s, ?char *t )

{

????????char ??*p , *r, *a;

/***********FOUND***********/

????????a == Null;

????????while ( *s )

????????{ ??

????????????????p = s;

????????????????r = t;

????????????????while ( *r )

????????????????/***********FOUND***********/

????????????????????????if ( r == p )

????????????????????????{

????????????????????????????????r++; ?

????????????????????????????????p++;

????????????????????????}

????????????????????????else ?break;

????????????????if ( *r == '\0' )

????????????????????????a = s;

????????????????s++;

????????}

????????return ?a ;

}

main()

{

????????char ??s[100], t[100], *p;

????????printf("\nPlease enter string S :");

????????scanf("%s", s );

????????printf("\nPlease enter substring t :");

????????scanf("%s", t );

????????p = fun( s, t );

????????if ( p )

????????????????printf("\nThe result is : ?%s\n", p);

????????else ?????

????????????????printf("\nNot found !\n" );

}

编程题

第1题 (24.0分) ???????题号:152 ???????难度:中 ???????第7章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。

??????数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如:若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10删除后,数

??????组中的内容应该是: 2 3 4 5 6 7 8 9 10。

注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入

??????所编写的若干语句。

-------------------------------------------------------*/

#include <stdio.h>

#define N 80

int fun(int a[], int n)

{

/**********Program**********/

?????????????????????????????????????????????????????????????????????

/********** ?End ?**********/

}

void main()

{

????????

????????int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i, n=20;

????????printf("The original data :\n");

????????for(i=0; i<n; i++) ?

????????????????printf("%3d",a[i]);

????????n=fun(a,n);

????????printf("\n\nThe data after deleted :\n");

????????for(i=0; i<n; i++) ?

????????????????printf("%3d",a[i]); ?

????????printf("\n\n"); ???????

}

(指针大礼包-第7题)

第7题 (10.0分) ???????题号:137 ???????难度:中 ???????第8章

/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:请编写函数fun,其功能是:统计s所指字符串中的数字字符个数,并作为函数值

??????返回。

例如:s所指字符串中的内容是:2def35adh25 ?3kjsdf 7/kj8655x,函数fun返回值为:11

注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入

??????你编写的若干语句。

-------------------------------------------------------*/

#include ?<stdio.h>

int fun(char ?*s)

{ ???????

/**********Program**********/

/********** ?End ?**********/

}

void main()

{ ?

????????char *s="2def35adh25 ?3kjsdf 7/kj8655x";

????????printf("%s\n",s);

????????printf("%d\n",fun(s));

}

文章来源:https://blog.csdn.net/2301_78235522/article/details/135229350
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。