好文档 - 专业文书写作范文服务资料分享网站

全国计算机等级考试2级C语言上机题库 

天下 分享 时间: 加入收藏 我要投稿 点赞

{ 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(q);

/**********found**********/ q=p->next; } else

{ p=q;

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

26.2改错 用选择法对数组中的n个元素按从小到大的顺序进行排序。 #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;i < n; i++)

if(a[i] < a[p])

/************found************/ p = i;

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

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

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

*n=0 ;

for(i=7 ; i<=m; i++)

if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ;} 第二十七套:

27.1填空 计算下式前n项的和作为函数值返回。 例如,当形参n的值为110时,函数返回:9.612558。 double fun(int n)

{ int i; double s, t; /**********found**********/ s=0;

/**********found**********/ for(i=1; i<=n; i++) { t=2.0*i;

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

s=s+(2.0*i-1)*(2.0*i+1)/(t*t); } return s;}

27.2改错 统计substr所指zfc在str所指字符串中出现的次数。例如 若字符串为aaas lkaaas, 子字符串为as,则应输出2。 fun (char *str,char *substr)

{ int i,j,k,num=0;

/************found************/ for(i = 0; str[i]; i++)

for(j=i,k=0;substr[k]==str[j];k++,j++) /************found************/ if(substr[k+1]=='\\0') { num++; break; }

return num; } 27.3程序

编写函数fun 根据以下公式求pi的值(要求满足精度0.0005,即某项小于0.0005时停止迭代) 程序运行后,如果输入精度0.0005,则程序输出为3.14。 double fun ( double eps) { double s=1,t=1./3; int n=1;

while(t>=eps){ s+=t; n++; t=t*n/(2.0*n+1); } return (s*2.0); } 第二十八套:

28.1填空 统计形参s所指字符串中数字字符出现的次数,并放在形参t所指的变量中,最后在函数中输出。例如:形参s所指的字符串为:abcdef35adgh3kjsd7.结果输出:4。 void fun(char *s, int *t) { int i, n;

n=0;

/**********found**********/ for(i=0; s[i] !=NULL; i++) /**********found**********/ if(s[i]>='0'&&s[i]<= '9') n++; /**********found**********/

*t=n; }

28.2改错 通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。 例如,变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。 int fun(int *x,int y)

{ int t ;

/**************found**************/ t = *x ; *x = y ;

/**************found**************/ return(t) ;}

28.3程序 求出1-----1000之间能被7或11整除、但不能同时被7和11整除的所有整数并将其放在a所指的数组中,通过n返回这些数的个数。 void fun (int *a, int *n) { int i ; *n = 0 ;

for(i = 7 ; i < 1000 ; i++)

if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ;} 第二十九套:

29.1填空 函数fun功能是将行参b所指结构体中数据进行修改,把修改后的数据作为函数值返回主函数进行输出。例如b所指变量t中 学号、姓名、和三门的成绩是:10002、“ZhangQi”、93、85、87,修改后输出t中的数据应为:10004、“LiJie”、93、85、87。 #include #include struct student { long sno; char name[10];

float score[3];};

void fun( struct student *b) { int i;

/**********found**********/ b->sno = 10004;

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

strcpy(b->name, \main()

{ struct student t={10002,\ int i;

printf(\

printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\ printf(\

/**********found**********/ fun(&t);

printf(\

printf(\ Name: %s\\nScores: \ for (i=0; i<3; i++) printf(\

printf(\

29.2改错应用递归发求a的平方根。求平方根的迭代公式为: 例如,a为2时,平方根值为:1.414214。

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

double fun(double a, double x0) { double x1, y; x1=(x0+ a/x0)/2.0;

/**********found**********/ if( fabs(x1-x0)>0.00001 )

y=fun(a,x1); else y=x1;

return y; }

29.3程序 学生的记录由学好和成绩组成,N名学生的数据放在主函数中结构体数组s中,编写函数,把高于等于平均分的学生数据放在b所指的数组中,把高于或等于平均分的学生人数通过形参n传回,pjf通过函数值返回。 #define N 12 typedef struct { char num[10]; double s; } STREC;

double fun( STREC *a, STREC *b, int *n ) { double t=0 ; int i ; *n = 0 ;

for(i = 0 ; i < N ; i++) t = t + a[i].s ;

t = t / N ;

for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ; return t ;} 第三十套:

30.1填空 函数fun功能是将行参a所指结构体变量中数据赋给函数中的结构体变量b,并进行修改b中的学号和姓名,最后输出修改后的数据。 例如a所指变量中 学号、姓名、和三门的成绩是:10001、“ZhangSan”、93、80、88,修改后输出b中的数据应为:10002、“LiSi”、95、80、88。 struct student { long sno;

char name[10]; float score[3];};

void fun(struct student a) { struct student b; int i; /**********found**********/ b = a;

b.sno = 10002;

/**********found**********/ strcpy(b.name, \

printf(\

printf(\ Name: %s\\nScores: \/**********found**********/

for (i=0; i<3; i++) printf(\ b.score[i]);

printf(\

30.2改错 函数功能:从s所指字符串中删除所有小写字母c。 void fun( char *s ) { int i,j;

for(i=j=0; s[i]!='\\0'; i++) if(s[i]!='c')

/************found************/ s[j++]=s[i];

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

s[j]='\\0';}

30.3 程序 函数功能:将字符中的前导*号全部移到字符串的尾部。 例如,字符串中的内容为:*******A*BC*DEF*G****移动后,字符串中的内容应当是: A*BC*DEF*G***********。 void fun( char *a )

{ /* 以下代码仅供参考 */ char *p,*q;

int n=0; p=a;

while(*p=='*') /* 统计串头'*'个数n */ {n++; p++;}

q=a;

/* 向前复制字符串,请填写相应的语句完成其功能 */ while(*p) { *q=*p; p++;q++; }

for(;n>0;n--) /* 在串尾补n个'*' */ *q++='*';

*q='\\0'; } 第三十一套:

31.1 填空 对形参s所指字符串中下表为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。例如,行参s所指的字符串为:baawrakjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。 #include

void fun(char *s, char *p) { int i, j, n, x, t; n=0;

for(i=0; s[i]!='\\0'; i++) n++; for(i=1; i

/**********found**********/ t=i;

/**********found**********/ for(j=i+2 ; js[j]) t=j; if(t!=i)

全国计算机等级考试2级C语言上机题库 

{intdata;structlist*next;}SLIST;voidfun(SLIST*h){SLIST*p,*q;p=h->next;if(p!=NULL){q=p->next;while(q!=NULL){if(p->data==q->data)
推荐度:
点击下载文档文档为doc格式
8gmq84dbzq667gj1z1sv
领取福利

微信扫码领取福利

微信扫码分享