第一范文网 - 专业文章范例文档资料分享平台

2009-2011年 - 江苏省计算机二级C语言历年真题及答案(笔试)

来源:用户分享 时间:2025/5/15 9:17:18 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

void main()

{ int i,m;char *p; for(i=0;i<2;i++) {scanf(“%d”,&m); p=fun(m); }

puts(p); }

10.以下程序运行时输出到屏幕的结果中第一行是__(11)__,第二行是___(12)___。 #include #define M 3 #define N 4

void fun(int a[M][N]) { int i,j,p;

for(i=0;i

for(j=1;j

if(a[i][p]>a[i][j])p=j; printf(“%d\\n”,a[i][p]); } }

void main()

{ int a[M][N]={{-1,5,7,4},{5,2,4,3},{8,2,3,0}}; fun(a); }

11.以下程序运行时输出到屏幕的结果中第一行是__(13)__,第二行是___(14)___。 #include

int f(int *x, int *y,int z) { *x=*y; *y=z; z=*x;

return z; }

void main()

{ int a=1,b=2,c=3,d; d=f(&a,&b,c);

printf(“--\\n--_\\11”,a,b,c,d); }

12.以下程序运行时输出到屏幕的结果中第一行的是__(15)__,第二行的是_(16)_。 #include “stdio.h” struct grade { int id;

char level[3]; int score[3]; }

char fun(struct grade *t)

41

{ int i,count=0,total=0; for(i=0;i<3;i++)

{ if(t->level[i]==’A’)count++; total=total+t->score[i]; }

total=total+count; if(count==3)total++;

return(total>380?’Y’:’N’); }

void main() { int i;

struct grade stu[3]={{106,”AAA”,130,132,115},

{107,”BAB”,113,125,104},{109,”AAB”,128,135,114}}; for(i=0;i<2;i++)

printf(“\\%d %c\\n”,stu[i].id,fun(&stu[i])); }

13.以下程序运行时输出到屏幕的结果中第一行是__(17)__,第二行是__(18)__。 #include int fun(int a[],int *p) { int i,n; n=*p;

p=&a[n-1];

for(i=n-2;i>=0;i--) if(a[i]>*p)p=&a[i]; return *p; }

void main()

{ int a[5]={18,2,16,3,6},x=5,y; y=fun(a,&x); printf(“%d\\n”,x); printf(“%d\\n”,y); }

●完善程序

14.以下程序的功能是验证下列公式是否成立。请完善程序使其达到要求的功能。

113=1+

(1?x)11*421*4*73x?x?x?…… 33*63*6*9 将X取某一值时公式等号左侧的函数值表示为f(x),等号右侧的级数值表示为g(x),若f(x)与g(x)的相对误

差小于10-6,即认为f(x)与g(x)相等。计算g(x)时,当最后一项的绝对值小于10-10时停止累加。 f(x)与g(x)的相对误差计算公式:E= #include #include void main()

{double x,f,g,term;

42

|f(x)?g(x)|

|f(x)|?|g(x)| int n;

printf(“\\n input x(-1

g=term=1;

while(fabs(term)>1e-10) {term=term*____(21)____; g=g+term; ____(22)____; }

if(fabs(f-g)/(fabs(f)+fabs(g))<1e-6)

printf(“\\ntrue x=%f,f=%f,g=%f”,x,f,g); else

printf(“\\nfalse x=%f,f=%f,g=%f”,x,f,g); }

15.以下程序的功能是:将输入的十进制整数转换为指定进制的字符串形式,itob函数的形参s指向的数组用于保存将形参n的值转换为base进制数后的字符串形式。请完善程序使其达到要求的功能。 #include void reverse(char s[]) { int i,j;

char temp;

for(j=0;s[j]!=’\\0’;j++);

for(i=0,j--;i

void itob(int n,char s[],int base) { int i=0,sign,t; if((sign=n)<0) n=-n; while(n>0)

{ t=____(24)____ if(t>=10)

s[i++]=t-10+’A’; else

s[i++]=____(25)____ n=n/base; }

if(sign<0) s[i++]=’-‘; ____(26)____; reverse(s); }

void main()

43

{ char str[100]; int n,base;

printf(“请输入被转换的十进制整数和进位制的基数:\\n”); scanf(“%d%d”,&n,&base); itob(n,str,base);

printf(“转换结果为:\\n”);

printf(“(10进制数)%d->%s(%d进制数)\\n”,n,str,base); }

16.存储一组整数的某单向链表结点定义为: typedef struct n { int x;

struct n *next;}NODE;

函数NODE *sort(NODE *head)采用插入法对head指向的单向链表中存储的数据按成员x的值从小到大排序。

算法提示:对链表中从第2个结点开始直到最后结点范围内的每个结点做以下操作:若第i个结点(i从2开始)的成员x值大于或等于第i-1个结点的成员x值,则保持第i个结点在链表中的位置不变;否则,先将第i个结点从链表中删除(使第i-1个结点的指针域指向第i+1个结点),再将已脱离链表的原第i个结点插入到链表的前i-1个结点中,并保持插入结点后链表的前i个结点按成员x值从小到大有序。请完善sort函数使其达到要求的功能。

NODE *sort(NODE *head)

{ ____(27)____*p1,*p2,*q1,*q2; p1=head; p2=p1->next; while(p2)

{ if(p1->x<=p2->x) { p1=p2;

____(28)____=p2->next; } else

{p1->next=____(29)____; /*从链表中删除p2指向的结点*/ /*以下程序段实现将p2指向的结点插入链表中*/ q1=head; q2=q1->next; if(p2->xx)

{p2->next=____(30)____; head=p2; } else

{q1=head;

q2=head->next; while(p2->x>q2->x) { q1=q2;

q2=q2->next; }

p2->next=q2; q1->next=p2; }

44

2009-2011年 - 江苏省计算机二级C语言历年真题及答案(笔试).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c72qn0491rn3j4le875oa_11.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top