2011年3月份全国计算机等级考试上机题库_第1页
2011年3月份全国计算机等级考试上机题库_第2页
2011年3月份全国计算机等级考试上机题库_第3页
2011年3月份全国计算机等级考试上机题库_第4页
2011年3月份全国计算机等级考试上机题库_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二级C语言上机试题汇编for(i=0;i<sl;i++)

第01套:t[sl+i]=s[sl-i-l];

给定程序的功能是调用fun函数建立班级通讯录。通讯录中记I***********nd************/

录每位学生的编号、姓名和电话号码。班级的人数和学生的信t[2*sl]=\0,;

息从键盘读入,每个人的信息作为一个数据块写到名为}

myfile5.dat的二进制文件中。#include<stdio.h>mainQ

#include<stdlib.h>{chars[100],t[100];

#defineN5printf("\nPleaseenterstrings:n);scanf(n%s**,s);

typedefstructfun®t);

{intnum;printf("Theresultis:%s\nn,t);

charname[10];)

chartel[10];***************************************************

}STYPE;函数fun的功能是:将两个两位数的正整数a、b合并形成一个

voidcheck();整数放在c中。合并的方式是:将a数的十位和个位数依次放

/**********^^un^j**********/在c数的千位和十位上,b数的十位和个位数依次放在c数的

intfun(STYPE*std)百位和个位上。例如,当a=45,b=12时,调用该函数后,c=4152。

(#include<stdio.h>

/**********3und**********/voidfun(inta,intb,long*c)

FILE*fjp;inti;{

if((fp=fopen("myfile5.dat**wbK))==NUIX)*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);

return(0);}

printf("\nOutputdatatofile!\nn);mainQ

for(i=0;i<N;i++){inta,b;longc;

/**********3und**********/voidNONO0;

fkvrite(&std[i],sizeof(STYPE),1,fp);printf("Inputa,b:H);scanf(H%d,%dH,&a,&b);

fclose(fp);b,&c);

return(1);printf("Theresultis:%d\nH,c);

)NONOQ;

mainQ}

{STYPEs[l0]={{l,"aaaaaH,"111111”},{1Jbbbbb”,第02套:

”222222”},{l,"ccccc”,”333333”},{l,"ddddd”「444444”},{l,"eeeee”,给定程序的功能是:从键盘输入若干行文本(每行不超过80

”555555”}};个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的

intk;标志。然后将文件的内容读出显示在屏幕上。文件的读写分别

k=fun(s);由自定义函数ReadText和WriteText实现。#inelude<stdio.h>

if(k==l)#includc<string.h>

{printf(nSucceed!,r);check。;}#include<stdlib.h>

elsevoidWritcTcxt(FILE*);

printf(HFail!H);voidReadText(FIT,E*);

)mainQ

{FILE*fp;

给定程序MODI1.C中函数fun的功能是:先将在字符串s中的if((fp=fbpenCmyfile4.txtn,nwn))==NULL)

字符按正序存放到t串中,然后把s中的字符按逆序连接到t{printff1openfail!!\nH);exit(0);}

串的后面。例如:当s中的字符串为:"ABCDE"时,则t中的WritcTcxt(fp);

字符串应为:"ABCDEEDCBA"。fclose(fp);

#includc<stdio.h>if((fp=fbpen(Mmyfile4.txt,,,"r,,))==NULL)

#include<string.h>{printf(Hopenfail!!\nM);exit(0);}

voidfun(char*s,char*t)RcadTcxt(fp);

{inti,si;fclose(fp);

si二strlen(s);)

/************3und************//**********仿und**********/

fbr(i=O;i<=si;i++)voidWritcText(FlLE*Fw)

咽=s[i];{charstr[81];

printf(n\nEnterstringwith-1toend:\nn);{inta,b;longc;

gets(str);voidNONO0;

while(strcmp(str,,,-ln)!=O){printf("Inputa,b:n);

/**********8und**********/scanf(u%d,%d",&a,&b);

fputs(str,fu^);fputs(n\nn,fvi,);fun(a,b,&c);

gets(str);printf("Theresultis:%ld\n",c);

}NONOQ;

f/

voidReadText(PILE*fr)第03套:

{charstr[81];给定程序中,函数fun的功能是:将自然数1〜10以及它们的

printf(M\nRcadfileandoutputtoscreen:\n");平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显

fgets(str,81,fr);不在屏幕上C

while(!feof(fr)){#include<math.h>

/**********3und**********/#include<stdio.h>

printf(n%sH,str);intfun(char*fname)

fgets(str,81,fr);{FILE*fp;inti,n;floatx;

)if((fp=fbpen(fname,Hw"))==NULL)return0;

}for(i=l;i<=10^++)

/**********1nd**********i

给定程序MODI1.C中函数fun的功能是:从低位开始取出长整fprintf(fp,H%d%f\nHj,sqrt((double)i));

型变量s中奇数位上的数,依次构成一个新数放在t中。高位printf("\nSucceed!!\nu);

仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t/**********6und**********/

中的数为:7531。fclose(fp);

#include<stdio.h>printf("\nThedatainfile:\n");

j************^^un^^************1/**********^^und**********j

voidfun(longs,long*t)if((fp=fopen(fname,,,rH))==NULL)

{longsl=10;return0;

*t=s%10;fscanf(fjp,n%d%f\&n,&x);

while(s>0)while(!feof(fp))

{s=s/100;{printf(H%d%f\nH,n,x);fscanf(fp,"%d%F',&n,&x);}

*t=s%10*sl+*t;fclose(fp);

/************3und************/return1;

sl=sl*10;)

}mainQ

}{charfnamc[]=,,myfile3.txtM;

mainQfun(fname);

{longs,t;)

printf(H\nPleaseenters:");scanf("%ldH,&s);

fun(s,&t);给定程序MODI1.C中fun函数的功能是:将n个无序整数从小

printf(HTheresultis:%ld\n",t);到大排序。

)#includc<stdio.h>

***************************************************#inelude<stdlib.h>

函数fun的功能是:将两个两位数的正整数a、b合并形成一个fun(intn,int*a)

整数放在c中。合并的方式是:将a数的十位和个位数依次放{inti,j,p,t;

在c数的个位和百位上,b数的十位和个位数依次放在c数的for(j=0;j<n-l;j++)

千位和十位上。例如,当a=45,b=12时,调用该函数后,c=1524。{P=j;

#include<stdio.h>/************]nd************/

voidfun(inta,intb,long*c)for(i=j+l;i<n;i++)

{if(a[p]>a[i])

*c=(b/l0)*1000+(a%10)*100+(b%10)*10+(a/10);/************8und************/

)p=>;

mainQif(p!=j)

{t=a[j];a[j]=a[p];a[p]=t;}/**********nd**********I

)while(!feof(fs))

){putchar(ch);

putarr(intn,int*z)/**********6und**********/

{inti;fputc(ch,ft);

for(i=1;i<=n;i++,z++)ch=fgetc(fs);

{printf(H%4dM,*z);)

if(!(i%10))printfC\nn);fclose(fs);fclose(ft);

}printf(H\nM);printf("\n\n");

}return1;

mainQ)

{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=ll;mainQ

printf(H\n\nBcfbrcsorting%dnumbcrs:\n",n);putarr(n,aa);{charsfiname[20]=,,myfilel",tfname[20]="myfile2n;

fun(n,aa);FILE*myf;inti;charc;

printf(H\nAftcrsorting%dnumbcrs:\nn,n);putarr(n,aa);myf=fbpen(sfname,"w");

}printf("\nTheoriginaldata:\n,r);

fbr(i=l;i<30;i++){c='Af4-rand()%25;fprintf(myf,H%cH,c);

函数fun的功能是:将两个两位数的正整数a、b合并形成一个printf("%cn,c);}

整数放在c中。合并的方式是:将a数的十位和个位数依次放fclose(myf);printf("\n\n");

在c数的个位和百位上,b数的十位和个位数依次放在c数的十if(fun(sfname,tfhame))printf(HSucceed!");

位和千位上。例如,当a=45,b=12时,调用该函数后,c=2514。elseprintf(HFail!n);

#include<stdio.h>)

voidfun(inta,intb,long*c)

(给定程序MODI1.C中函数fun的功能是:将长整型数中每一位

*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;上为偶数的数依次取出,构成一个新数放在t中。高位仍在高

}位,低位仍在低位。例如,当s中的数为:87653142时,t中的

rnainQ数为:8642o

{inta,b;longc;#include<stdio.h>

voidNONO0;voidfun(longs,long*t)

printf(HInputa,b:n);{intd;

scanf(”%d,%d”,&a,&b);longsl=l;

fun(a,b,&c);*t=0;

printf(nTheresultis:%ld\n",c);while(s>0)

NONOQ;{d=s%10;

}/************]nd************/

第04套:if(d%2==0)

给定程序的功能是:调用函数fun将指定源文件中的内容复制{*t=d*sl+*t;

到指定的目标文件中,复制成功时函数返回值为1,失败时返si*=10;

回值为0。在复制的过程中,把复制的内容输出到终端屏幕。)

主函数中源文件名放在变量sfname中,目标文件名放在变量/************3und************/

tfhamc中。s/=10;

#include<stdio.h>}

#includc<stdlib.h>)

intfun(char*source,char*target)mainQ

{FILEcharch;{longs,t;

/**********3und**********/printf("\nPleaseenters:");scanf("%Id",&s);

if((fs=fbpen(source,MrM))==NULL)fun(s,&t);

return0;printf("Theresultis:%ld\n",t);

if((ft=fopcn(targct,nwn))==NULL))

return0;

printf(H\nThcdatainfile:\nH);函数fbn的功能是:将两个两位数的正整数a、b合并形成一个

ch=fgetc(fs);整数放在c中。合并的方式是:将a数的十位和个位数依次放

在C数的十位和千位上,b数的十位和个位数依次放在C数的p->next=0;

百位和个位上。例如,当a=45,b=12时,调用该函数后,returnh;

c=5142o}

#include<stdio.h>voidoutlist(SL!ST*h)

voidfun(inta,intb,long*c){SLIST*p;

(p=h->next;

*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);if(p二二NULL)printf(H\nThelistisNULL!\n");

}else

rnainQ{printf(H\nHead");

{inta,b;longc;do{printf(,,->%d,,,p->data);p=p->next;}while(p!=NULL);

voidNONO0;printf("->End\n,f);

printf(nlnputa,b:n);}

scanf(,,%d,%d,\&a,&b);}

fun(a,b,&c);mainQ

printf(nThcresultis:%ld\n",c);{SLIST*head;intx;

NONO0;inta[N]={ll,l2,15,18,19,22,25,29);

)head=creatlist(a);

第05套:printf("\nThelistbeforeinserting:\n”);outlist(head);

给定程序中已建立一个带有头结点的单向链表,链表中的各结printf("\nEnteranumber:");scanf("%d",&x);

点按结点数据域中的数据递增有序链接。函数fun的功能是:fun(head,x);

把形参x的值放入一个新结点并插入到链表中,插入后各结点printf(u\nThelistafterinserting:\nn);oudist(head);

数据域的值仍保持递增有序。)

#include<stdio.h>

#include<stdlib.h>给定程序MOD11.C中函数fun的功能是:计算正整数num的

#defineN8各位上的数字之积。例如,若输入:252,则输出应该是:20o

typedefstructlist若输入:202,则输出应该是:0。

{intdata;#include<stdio.h>

structlist*next;longfun(longnum)

}SUST;{

voidfun(SLIST*h,intx)/************3und************/

{SLIST*p,*q,*s;longk=l;

s=(SLIST*)malloc(sizeof(SLIST));do

/**********Ind**********1{k*二num%10;

s->data=x;/************&)und************/

q二h;num/=lO;

p=h->next;}while(num);

whilc(p!=NULL&&x>p->data){return(k);

/**********3und**********/}

q二p;mainQ

p=p->next;{longn;

)printf(u\nPlcascenteranumber:n);scanf("%ldn,&n);

s->next=p;printf(n\n%ld\nu,fun(n));

/**********^^un^J**********/)

q->next:=s;

)请编写一个函数fun,它的功能是:计算n门课程的平均分,

STJST*creatlist(int*a)计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,

{SLIST*h,*p,*q;inti;72,80,61.5,55则函数的值为:71.80。

h=p二(SLIST*)malloc(sizeof(SLIST));#indude<stdio.h>

fbr(i=O;i〈N;i++)floatfun(float*a,intn)

{q=(SLIST*)malloc(sizeof(SLIST));{

q->data=a[i];p->next=q;p=q;inti;

)floatave=0.0;

fbr(i=O;i<n;i++)ave=ave4-a[i];do{printf(n->%dn,p->data);p=p->next;}while(p!=NULL);

ave=ave/n;printf("->End\n");

returnave;}

)}

mainQmain。

{floatscore[30]={90.5,72,80,61.5,55},aver;{SLIST*head;

voidNONO0;inta[N]={ll,12,15,18,l9,22,25,29};

aver=fun(score,5);head=creatlist(a);

printf(H\nAveragescoreis:%5.2f\n",aver);printf("\nOutputfromhead:\n");outlist(head);

NONO0;printf("\nOutputfromtail:\n,r);

)while(head-〉next!=NULL){

第06套:fun(head);

给定程序中已建立一个带有头结点的单向链表,在main函数中printf("\n\n");

将多次调用fun函数,每调用一次fun函数,输出链表尾部结点printf("\nOutputfromheadagain:\nu);outlist(head);

中的数据,并释放该结点,使链表缩短。}

#include<stdio.h>)

#includc<stdlib.h>

#defineN8给定程序MOD11.C中函数fun的功能是:将字符串中的字符按

typedefstructlist逆序输出,但不改变字符串中的内容。例如,若字符串为abed,

{intdata;则应输出:dcba0

structlist*next;#include<stdio.h>

}SLIST;/************3und************/

voidfun(SLIST*p)voidfun(char*a)

{SLIST*t,*s;{if(*a)

t=p->next;s=p;{fun(a+l);

while(t->next!=NULL)/************3und************/

{s=t;printf("%c",*a);

/**********3und**********/}

t=t->next;}

)mainQ

/**********^^und**********1{chars[10]=,'abcdn;

printf(H%dM,t->data);printf("处理前字符串=%s\n处理后字符串=",s);

s->next=NULL;fun(s);printf("\n");

/**********8und**********/)

free(t);***************************************************

)请编写一个函数fun,它的功能是:比较两个字符串的长度,(不

SLIST*crcatlist(int*a)得调用C语言提供的求字符串长度的函数),函数返回较长的

{SLIST*h*p,*q;inti;字符串。若两个字符串长度相同,则返回第一个字符串。例如,

h=p=(SLIST*)maUoc(sizeof(SLIST));bcijing<CR>shanghai<CR>(<CR>为回车键),函数将返

fbr(i=O;i<N;i++)回shanghaio

{q=(SLIST*)malloc(sizcof(SLIST));#includc<stdio.h>

q->data=a[i];p->next=q;p=q;char*fun(char*s,char*t)

{

f

p->next=0;inti;

returnh;char*p=s,*q=t;

)intn=0,m=0;

voidoutlist(SLIST*h)while(*p)

{SLIST*p;{

p=h->ncxt;n++;

if(p二二NULL)printff\nThelistisNULL!\n“);p++;

else}

{printf(u\nHeadH);while(*q)

fbr(i=O;i<N;i++)

m++;q++;{q=(SLIST*)malioc(sizeof(SLIST));

)q->data=a|i];p->next=q;p=q;

if(n>=m)p=s;}

elsep=t;p->next=0;

returnp;returnh;

})

mainQvoidoutlist(SL!ST*h)

{chara[20],b[20];{SLIST*p;

voidNONO0;p=h->next;

printfflnput1thstring:");if(p二二NULL)printf(H\nThelistisNULL!\nn);

gets(a);else

printf(,fInput2thstring:");{printf(H\nHead");

gets(b);do{printf(n->%dn,p->data);p=p->next;}while(p!=NULL);

printf("%s\n”,fun(a,b));printf("->End\nM);

NONO0;}

)}

第07套:mainQ

给定程序中已建立一个带有头结点的单向链表,链表中的各结{SLIST*head;inta[N]={l,2,2,3,4,4,4,5};

点按数据域递增有序链接。函数fun的功能是:删除链表中数head=creatlist(a);

据域值相同的结点,使之只保留一个。printf("\nThelistbeforedeleting:\nH);outlist(head);

#include<stdio.h>fun(head);

#include<stdlib.h>printf("\nThelistafterdeleting:\nn);outlistfhead);

#defineN8)

typedefstructlist

{intdata;给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n

structlist*next;个元素按从小到大的顺序进行排序。

}SLIST;#include<stdio.h>

voidfun(SLIST*h)#defineN20

{SLIST*p,*q;voidfun(inta[],intn)

p=h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论