全国计算机二级C语言上机练习题及答案(一)(2)

2019-04-22 15:48

if (p!=j)

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

putarr(int n,int *z) {int i;

for (i=1;i<=n;i++,z++) {printf(\

if (!(i)) printf(\ }printf(\}

main()

{ int aa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11; system(\

printf(\ fun(n,aa);

printf(\}

第1 处:for (i=j+1;i

第2 处:t=i; 改为 p=i;

(3) 程序设计

规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前后连续的*号之外,将串中其它*号全部删除。形参h已指向字符串中的第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G******,删除后,字符串中的内容应当是:****ABCDEFG*******。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序存在文件prog.c中。

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

#include #include

void fun(char *a,char *h,char *p) {char *x; int i=0,j=0; x=a;

while (x

if (*h!='*') {a[j]=*h; j++; h++;} else h++; p++;

while (*p) {a[j]=*p; j++; p++;} a[j]='\\0'; }

main()

{ char s[81],*t,*f;

printf(\ t=f=s;

while(*t) t++; t--;

while (*t=='*') t--; while (*f=='*') f++; fun(s,f,t);

printf(\ }

第三套

(1) 填空题

给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

#include #include #define N 8 typedef struct list { int data;

struct list *next; } SLIST;

SLIST *creatlist(int *); void outlist(SLIST *); int fun( SLIST *h)

{ SLIST *p; int s=0; p=h->next; while(p) {

/**********found**********/ s+=p->___1___;

/**********found**********/ p=p->___2___; }

return s; }

main()

{ SLIST *head;

int a[N]={12,87,45,32,91,16,20,48}; head=creatlist(a); outlist(head); /**********found**********/

printf(\fun(___3___)); }

SLIST *creatlist(int a[])

{ SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; 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(\ else

{ printf(\ \ do

{ printf(\ } while(p!=NULL); printf(\ } }

第1 处:s+=p->data; 第2 处:p=p->next;

第3 处:printf(\

(2) 改错题

给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正程序中的错误,使它能得出正确结果。

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

#include #define SIZE 20

fun(double *s,double *w)

{ int k,i; double sum; for (k=2,i=0;i

/************found************/ sun=0.0;

for(k=0,i=0;i

/************found************/ if (i+1%5==0)

{ w[k]=sum/5;sum=0;k++;} }

return k; }

main()

{ double a[SIZE],b[SIZE/5]; int i,k; k=fun(a,b);

printf(\ for (i=0;i

{ if(i%5==0) printf(\ printf(\ }

printf(\

for(i=0;i

第1 处:sun=0.0; 改为 sum=0.0;

第2 处:if (i+1%5==0) 改为 if ((i+1)%5==0)

(3) 程序设计

请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传送给m的值为50,则程序输出:

7 11 14 21 22 28 33 35 42 44 49 注意:部分源程序存在文件prog.c中。

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

/******本答案只作参考。******/ #include #include #include #define M 100

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

int i,count=0; for(i=1;i<=m;i++) {

if(i%7==0 || i==0) {

a[count++]=i; } }

*n=count; }

main( )

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

if((k+1) ==0) printf(\ else printf( \ printf(\}


全国计算机二级C语言上机练习题及答案(一)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于数学核心素养的小学数学教学改革对策

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: