江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx

上传人:b****5 文档编号:21712662 上传时间:2023-01-31 格式:DOCX 页数:27 大小:33.07KB
下载 相关 举报
江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx_第1页
第1页 / 共27页
江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx_第2页
第2页 / 共27页
江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx_第3页
第3页 / 共27页
江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx_第4页
第4页 / 共27页
江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx

《江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx》由会员分享,可在线阅读,更多相关《江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx(27页珍藏版)》请在冰豆网上搜索。

江苏省计算机等级考试二级C语言考点分析XWord文档格式.docx

printf(“\nx=%d”,x);

程序运行时输出的第一行是_________,第二行是________,最后一行是________。

答案:

1,14,1x=10

(3)2001年春填空第4题

以下程序输出结果是________

{printf(“%d”,fun(5));

fun(intn)

{if(n==1)return1;

returnn-fun(n-1);

3

(4)2001年春填空第12题

以下程序实现将a数组中后8个元素从大到小排序的功能

voidsort(int*x,intn)

{inta[12]={5,3,7,4,2,9,8,32,54,21,6,43},k;

sort(______,8);

for(k=0;

k<

12;

k++)printf(“%d”,a[k]);

{intj,t;

if(n==1)return;

for(j=1;

j<

n;

j++)

if(_______)

{t=x[0];

x[0]=x[j];

x[j]=t;

sort(x+1,________);

本题结合了冒泡排序法,第一个空填:

a+4;

第二个空填:

x[0]<

x[j];

第三个空填:

n-1

(5)2001年春填空第8题

以下程序运行时第一行输出________,第二行输出________。

voidrev(int*p,intn)

{intt;

if(n>

1)

{t=p[0];

[0]=p[n-1];

p[n-1]=t;

rev(p+1,n-2);

{intj,a[5]={1,2,3,4,5};

rev(a+1,4);

for(j=0;

5;

j++)printf(“%d”,a[j]);

printf(“\n”;

rev(a,3);

输出结果:

1543245132

(6)2002年秋填空题第11题(P7-11)

{inta[3][3],i,j;

numlist(&

a[0][0],9);

for(i=0;

i<

3;

i++)

{for(j=0;

j++)printf(“%d,”,a[i][j]);

printf(“\n”);

numlist(int*p,intn)

{inti;

i++)p[i]=num(i);

num(intn);

{if(n==0)return1;

returnnum(n-1)*2+1;

程序运行时输出的第一行是:

1,3,7

(7)2003年春填空题第11题(P17-11)

longfunc(longx)

{if(x<

100)returnx%10;

elsereturnfunc(x/100)*10+x%10;

{printf(“Theresultis:

%ld\n”,func(132645));

程序运行结果是Theresultis:

365

(8)2003年秋填空题第11题(P26-11)

voidfun(int*p1,int*p2);

{inti,a[6]={1,2,3,4,5,6};

fun(a,a+5);

i++)printf(“%2d”,a[i]);

voidfun(int*p1,int*p2)

if(p1<

p2)

{t=*p1;

p1=*p2;

*p2=t;

fun(p1+=2,p2-=2);

}

程序运行结果是624351

(9)2004年春(P37-11)

voidf(inta[],intn,intx,int*c);

{inta[10]={1,3,5,2,3,5,3,7,4,1},t=0;

f(a,10,5,&

t);

printf(“%d”,t);

voidf(inta[],intn,intx,int*c)

{if(n==0)return;

if(a[0]>

=x)(*c)++;

f(a+1,n-1,x,c);

程序运行结果是3

(10)2004年秋(P52-14)

本例结合了二分法求方程的根。

见“方程求根”

(11)P68-14

本例结合了牛顿迭代法求方程的根。

三、二维数组

(1)2004年秋填空第12题(P51-12)

以下程序运行时输出结果的第一行是________,第二行是______,第三行是________。

#defineN3

{inti,j,k=1,a[N][N]={0};

i<

N/2+1;

{for(j=0;

=i;

j++)a[j][i-j]=k++;

for(;

2*N;

{for(j=i+1-N;

=N-1;

N;

j++)printf(“%4d”,a[i][j]);

124357689

(2)2005年春填空第12题(P66-12)

以下程序运行时输出结果的第二行为______,第四行为______,第六行_______。

voidchange(ints[3][3],intd)

{inti,j,k;

if(d==0)

{for(i=0;

for(j=i+1;

j<

j++){k=s[i][j];

s[i][j]=s[j][i];

s[j][i]=k;

3-i;

s[i][j]=s[2-j][2-i];

s[2-j][2-i]=k;

{ints[3][3]={1,2,3,4,5,6,7,8,9},i,j,k,n;

change(s,0);

{for(j=0;

j++)printf(“%4d”,s[i][j]);

change(s,1);

for(i=0;

258987321

四、链表应用

(1)2003年秋填空第17题(P30-17)

设有一个线性单链表的结点定义如下:

structnode

{intd;

structnode*next;

};

函数intcopy_dellist(structnode*head,intx)的功能是:

将head指向的单链表中存储的所有整数从小到大依次复制到x指向的整形数组中并撤消该链表;

函数返回复制到x数组中的整数个数。

算法:

找出链表中数值最小的结点,将其值存储到x数组中,再将该结点从链表中删除,重复以上操作直到链表为空为止。

intcopy_dellist(structnode*head,intx)

{structnoe*pk,*pj,*pm,*pn;

intdata,k=0;

while(head!

=0)

{pk=head;

data=pk->

d;

pn=pk;

while(________!

{pj=pk->

next;

if(_______<

data){data-pj->

pm=pk;

pn=pj;

pk=pj;

x[k++]=pn->

if(_________)pm->

next=pn->

elsehead=pn->

free(pn);

_____________;

答案:

pk->

nextpj->

dpn!

=headreturnk

(2)2004年春填空第17题(P41-17)

设某链表上每个结点的数据结构为:

typedefstructnode

}NODE;

函数NODE*invert(NODE*head)的功能是:

将head指向的单链表逆置,即原链表最后一个结点变为第一个结点,原来倒数第二个结点变成第二个结点,以此类推。

在逆置过程中不建立新的链表。

NODE*invert(NODE*head)

{NODE*p,*q,*r;

if(head==0||__________)returnhead;

p=head;

q=p->

while(q!

{r=__________;

q->

next=p;

p=q;

q=r;

__________=0;

head=__________;

returnhead;

head->

next==0q->

nexthead->

nextp

(3)2004年秋填空第13题P51-13

以下程序运行时输出结果的第一行是________,第二行是________,第三行是_________。

stdlib.h>

NODE*insert(NODE*head,intx,intkey)

{NODE*s,*p,*q;

s=(NODE*)malloc(sizeof(NODE));

s->

d=key;

next=NULL;

if(head==NULL){head=s;

if(head->

d==x){s->

next=head;

head=s;

{q=head;

p=q->

while((p->

d!

=x)&

&

(p->

next!

=NULL)){q=p;

p=p->

if(p->

next=s;

else{s->

p->

voidprint(NODE*head);

{if(head==NULL)return;

while(head->

=NULL)

{printf(“%d,”,head->

d);

head=head->

printf(“%d\n”,head->

{NODE*head=NULL;

head=insert(head,0,3);

print(head);

head=insert(head,3,1);

head=insert(head,4,5);

31,31,3,5

(4)2005年春填空题第13题(P66-13)

以下程序运行时输出结果的第一行为________,第二行为_________,第三行为__________。

structnode*create(void)

{structnode*head=NULL,*p,*q=NULL;

inti;

for(i=2;

=9;

{p=(structnode*)malloc(sizeof(structnode));

d=i;

if(head==NULL)head=p;

elseq->

q=p;

voidprint(structnode*head);

structnode*delst(structnode*head,int*n)

{intcount=0;

structnode*p,*q,*r;

p=r=head;

while(p!

{q=p->

{if((q->

d)%(p->

d)==0)

{r->

next=q->

free(q);

count++;

q=r->

else{r=q;

q=q->

p=p->

*n=count;

voidmain()

{inty;

structnode*head;

head=creat();

head=delst(head,&

y);

printf(“%d”,y);

2,3,4,5,6,7,8,92,3,5,74

五、字符串处理

(1)2003年春填空第10题(P16-10)

以下程序运行时输出第一行是_______,第二行是________。

string.h>

intconvert(chars1[],chars2[])

{inti=0,j,s;

chartab[8][4]={“000”,”001”,”010”,”011”,”100”,”101”,”110”,”111”};

for(i=0,j=0;

s1[i]!

=’\0’;

i++,j=j+3)

strcpy(&

s2[j],tab[s1[i]-‘0’]);

for(i=0,s=0;

strlen(s2);

i++)s=s*2+s2[i]-‘0’;

returns;

{charss1[]=”15”,ss2[80];

inty;

y=convert(ss1,ss2);

printf(“%d\n%s”,y,ss2);

分析:

本程序将八进制数字组成的字符串ss1转换成二进制字符串和十进制数。

13001101

(2)2003年春填空第12题(P17-12)

函数loop(s,m,n,str)的功能是:

对字符串str中,从下标为s的字符开始的所有间隔为m的字符进行循环左移,即:

str[s]←s[s+m],str[s+m]←s[s+3m],str[s+2m]←s[s+3m],…,str[s+(k-1)m]←s[s+km],str[s+km]←s[s](k为整数,下标s+km不越界),共做n次。

例如,调用loop(1,2,1,str)前后str中数据的变化情况如下:

str中初始数据:

ABCDEFGHIJK

移位后str数据:

ADCFEHGJIBK

voidloop(ints,intm,intn,char*str);

{charbuf[81];

strcpy(buf,”ABCDEFGHIJK”);

puts(buf);

loop(1,2,2,buf);

voidloop(ints,intm,intn,char*str)

{charc;

intk,i,len;

len=strlen(str);

{k=________;

c=str[k];

while(k+m<

________)

{str[k]=str[k+m];

k=________;

__________=c;

slenk+mstr[k]

(3)2004年秋填空第16题(P40-16)

以下程序中函数strmerge的功能是:

合并a和b两个有序的字母字符串(字典序)而产生一个新的字符串,在合并的过程中删除重复出现的字符,合并后的字符串仍然保持原序并保存到c指向的数组中,函数返回在合并过程中删除的字符个数。

main函数中输出合并后的字符串“copy”以及在合并过程中删除的字符个数3。

intstrmerge(char*a,char*b,char*c)

{inti=0,j=0,k=0;

chart;

while(a[i]!

=’\0’&

__________)

{if(a[i]==b[j]){t=a[i];

i++;

__________;

elseif(a[i]<

a[j])t=a[i++];

elset=b[j++];

if(t!

=c[k-1])________=t;

while(a[i])

if(a[i]!

=c[k-1]c[k++]=a[i++];

elsei++;

while(b[j])

if(b[j]!

=c[k-1]c[k++]=b[j++];

elsej++;

c[k]=’\0’;

return_________;

{staticchars1[10]=”ccp”,s2[10]=”oppy”,s3[20];

intn;

n=strmerge(s1,s2,s3);

puts(s3);

printf(“%d”,n);

a[j]!

=’\0’j++c[k++]i+j-k

(4)2004年秋填空第6题(P49-6)

以下程序运行时输出结果是________。

{char*s,*s1=”Here”;

s=s1;

while(*s1)s1++;

printf(“%d\n”,s1-s);

本程序是求指针s1所指向的字符串的长度。

4

(5)2004年秋填空第11题(P50-11)

以下程序运行时输出结果的第一行是_______,第二行是______。

voidprocess(char*s1,char*s2,char*s3,intd)

{inti=0,j=0,len1=strlen(s1),len2=strlen

(2),len3=0;

while(i<

len1&

len2)

{if(d==1&

s1[i]<

s2[j]||d==2&

s1[i]>

s2[j])

s3[len3++]=s2[i++];

s3[len3++]=s2[j++];

{chars1[]=”bl”,s2[]=”el”,s3[]=”lb”,s4[]=”le”,s[20];

process(s1,s2,s,1);

puts(s);

process(s3,s4,s,2);

函数process()完成的功能:

(1)当d==1时,从s1、s2两字符串中依次取最小的字符放入s3中,直到有一个字符串结束,最后将未结束的字符串中剩余的字符加到s3的后面;

(2)当d==2时,从s1、s2两字符串中依次取最大的字符放入s3中,直到有一个字符串结束,最后将未结束的字符串中剩余的字符加到s3的后面。

belllleb

(6)2005年秋填空第11题(P65-11)

以下程序运行时输出结果的第一行为_______,第二行为______。

intprocess(char*s1,char*s2,char*s3)

{inti=0,j=0,len1=strlen(s1),len2=strlen(s2),len3=0;

len1;

len2;

if(s1[i]==s2[i])break;

if(j>

=len2)s3[len3++]=s1[i];

s3[len3]=’\0’;

returnlen1-len

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1