1 / 34
文档名称:

四川省计算机二级C语言历年考题之程序填空.pdf

格式:pdf   大小:2,555KB   页数:34页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

四川省计算机二级C语言历年考题之程序填空.pdf

上传人:青山代下 2024/5/20 文件大小:2.50 MB

下载得到文件列表

四川省计算机二级C语言历年考题之程序填空.pdf

相关文档

文档介绍

文档介绍:该【四川省计算机二级C语言历年考题之程序填空 】是由【青山代下】上传分享,文档一共【34】页,该文档可以免费在线阅读,需要了解更多关于【四川省计算机二级C语言历年考题之程序填空 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..三、程序填空(每空2分,共30分)。#include<>#include<>intFun(char*str){intnum,digital,len;①num=0;len=strlen(str);while(*str!=NULL){digital=*str-'0';for(inti=0;②i<len-1;i++)digital*=10;len--;③str++;num+=digital;}returnnum;}voidmain(){charn[80];intnumber;gets(n);number=Fun(n);}~999之间的数m,它满足m,m2,m3均为回文数(所谓回文数是指其各位数字左右对称的整数)。#include<>voidmain(){intsymm(longn);longm;for(m=11;m<1000;m++)if(①symm(m)&&symm(m*m)&&symm(m*m*m))}intsymm(longn){longi,m;i=n;m=0;while(②i!=0){③m=m*10+i%10;i=i/10;}:..return(m==n);},如下图:主程序中调用add函数能求出链表中所有结点数据域的和sum并返回。structlink{intdata;structlink*next;}intadd(structlink*heak){structlink*p;ints=0;p=①head;while(p){s+=②p->data;p=③p->next;}return(s);}voidmain(){structlink*head;??/*表示省掉的程序段,创建链表*/sum=add(head);},将统计结果存放在数组count中,(字母'A'的个数存入count[0]中,字母'B'的个数存入count[1]??依此类推),输出统计结果,一行输出5个。请填空。#include<>#include<>voidmain(){FILE*fp;staticintcount[26]={0};inti;charch;if(①)exit(0);}while(!feof(fp)){②ch=fgetc(fp);if(ch>='A'&&ch<='Z')count[③ch-'A']++;}:..for(i=0;i<26;i++){}fclose(fp);},当flag=0时,将b连在a后;当flag=1时,将a连在b后;否则返回空指针。请填空。#include<>#include<>char*stradd(char*s,char*t,intf){char*p;if(f==0){p=s;s+=strlen(s);①while(*s++=*t++);}elseif(f==1){p=t;while(*t++);t--;while(*s)*t++=*s++;②;}③elsep=NULL;returnp;}voidmain(){chara[100],b[100],*str;intn;gets(a);gets(b);str=stradd(a,b,n);}三、程序填空(每空2分,共30分)。主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。函数Sum计算数组元素之和。请完成下列程序。#include<>:..intTotalSum(int[],int);voidmain(){inta[5]={2,3,6,8,10};intTotal;Total=①TotalSum(a,5);②Total<<endl;}intTotalSum(intarray[],intlen){intsum=0;for(inti=0;i<len;i++)③sum+=array[i];returnsum;},将其转换为十进制数输出。doublepower(doublex,intn);voidmain(void){inti;intvalue=0;charch;for(i=7;i>=0;i--){cin>>ch;if(①ch=='1')value+=②power(2,i);}}doublepower(doublex,intn){doubleval=;while(n--)③val=val*x;return(val);}“回文”(顺读和倒读都一样的字符串叫回文,如level),请填空。voidmain(){chars[81],*p1,*p2;intn;gets(s);n=strlen(s);:..p1=s;p2=①s+n-1;while(②){if(*p1!=*p2)break;else{p1++;③p2--;}}if(p1<p2)}(即对所有的i,j,都有num[i][j]=num[j][i]),请填空。#include<>voidmain(){intnum[4][4];inti,j,flag=0;for(i=0;i<4;i++)for(j=0;j<4;j++)①&num[i][j]);for(i=0;i<4;i++)for(j=0;j<4;j++)if(②num[i][j]!=num[j][i]){flag=1;break;}if(③flag==1)else},将该字符串与一文本文件进行比较,打印出也之相同的行的行号和内容。p()用于文件的比较,文件名用命令行参数提供。请填空。FILE*fp;p(char*string){intline=0;charstr[100];①while(!feof(fp)){fgets(str,100,fp);line++;②if(strcmp(str,string)==0)}:..}voidmain(intargc,char**argv){charstring[100];if(argc!=2)exit(0);}if(fp=③)==NULL)exit(0);}gets(string);comp(string);fclose(fp);}。#include<>#include<>#defineLENsizeof(structstudent)structstudent{intdata;①structstudent*next;};intnum=1;structstudent*creat(){structstudent*head,*p1,*p2;head=p1=p2=(structstudent*)malloc(LEN);while(num<4){p1=(structstudent*)malloc(LEN);②p2->next=p1;p2=p1;num++;}p2->next=NULL;return(head);}main(){structstudent*head,*p;head=creat();p=head;:..if(head!=NULL)do{③p=p->next;}while(p!=NULL);},并将该字符前的原字符往后顺序移动,如:cbyab变成ycbab。#include<>#include<>main(){charstr[80],*p=str,*q,max;gets(p);max=*(p++);while(*p!=0){if(max<*p){max=*p;①q=p;}p++;}p=q;while(②p>str){*p=*(p-1);p--;}③*p=max;puts(p);},并将低于平均成绩的分数存放到below数组中。#include<>intfun(intscore[],intm,intbelow[]){inti,k=0,aver=0;for(i=0;i<m;i++)①aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){②below[k]=score[i];k++;}return(k);}main(){inti,n,below[9];:..intscore[9]={10,20,30,40,50,60,70,80,90};n=③fun(score,9,below);for(i=0;i<n;i++)}。#include<>main(){inta[3][3]={1,3,6,7,9,11,14,15,17};intsum1=0,sum2=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(①i==j)sum1+=a[i][j];for(i=0;i<3;i++)for(②j=2;③j>=0;j--)if(i+j==2)sum2+=a[i][j];}(编号,姓名,年龄)从键盘输入,存放到一个新建的二进制文件employee中去。#include<>main(){FILE*fp;structemployee{longcode;charname[20];intage;}em;intk;if((fp=fopen①))==NULL){printf(“errorn”);exit(0);}for(k=0;k<3;k++){fwrite(②&em,sizeof(structemployee),③1,fp);}fclose(fp);return(1);:..。#include<>voidsort(int*p,intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n,j++)if(①p[i]>p[j]){t=p[i];p[i]=p[j];p[j]=t;}}main(){inta[10],i;FILE*fp;for(i=0;i<10;i++)②;fclose(fp);for(i=0;i<10;i++)③sort(a,10);for(i=0;i<10;i++)},输入任意一个整数,在各数位之间插入空格后输出。#include<>main(){longintn;voidfunc(long);①func(n);}voidfunc(②longm){if(m>=0)③func(m/10);}:有10个数按升序放在一个数组中,输入一个数,要求用折半查找该数是数组中的第几个元素,如果该数不在数组中,打印出“NO”。折半查找法:设数组长度为n,则将输入的数m与a[n/2]比较,若m<a[n/2],则将a[0]到a[n/2]继续折半进行查找;若m=a[n/2],则表示找到该数的位置;若m>a[n/2],则将a[n/2]到a[n]的数继续折半进行查找。#include<>main():..intnum,bott,top,mid;bott=0;top=9;while(bott<=top){mid=(bott+top)/2;if(num==a[mid])elseif(num<a[mid])②top=mid-1;elsebott=mid+1;}if(③bott>top},将str1和str2对应字符中ASCII码值较大者存入字符数组str3的对应位置,若str1和str2长度不一致,则将较长字符串中剩余字符直接连接到str3的末尾。例如:str1存放字符串,str2存放字符串,则str3中的字符串为。#include<>#include<>main(){inti;char*p1,*p2;p1=str1;p2=str2;gets(str1);gets(str2);for(i=0;①;i++){if(*(p1+i)>*(p2+i))str3[i]=*(p1+i);elsestr3[i]=*(p2+i);}if(②strlen(str1)>strlen(str2))strcat(str3,p1+i);else③strcat(str3,p2+i);}。#include<>voidmain(){inti,s,k,count=0;for(i=100;i<=1000;i++){s=0;k=i;:..while(k>0){s=s+k%10;k=②k/10;}if(s!=5)③continue;elsecount++;}}。#include<>voidmain(){intc[64],d,i=0,base=16;longn;do{c[i]=①n%base;i++;n=n/base;}while(n!=0);for(i--;i>=0;--i){d=②c[i];③b[d]);}},其左右对称,求比它大的对称数中最小的那个。#include<>voidmain(){longinti=43634,j;intcount,ch[10];do{i++;j=i;count=0;while(j){ch[count]=j%10;:..j=j/10;count++;}if(②ch[0]==ch[4]&&ch[1]==ch[3])break;}while(1);③i);}。#include<>#defineM100voidfun(intm,int*p,int*t){inti,num=0;for(i=1;i<=m;i++)if(①i%3==0&&i%7!=0)②p[num++]=i;*t=num;}voidmain(){inta[M],n,k;③fun(M,a,&n);for(k=0;k<n;k++)if((k+1)%5==0)else},然后输出。#include<>voidmain(){chars[81],t[20],*p1,*p2;inti;①s,t);p1=s;for(i=0;*(p+i);i++)for(p2=t;*p2;p2++)while(②*(p1+i)==*p2)strcpy(③p1+i,p1+i+1);:..},数据之间以逗号分割。下面程序将文件中的所有分数取出,计算出平均分,显示在屏幕上,还要把这个平均分数按原文件的数据格式记录在原文件中。“,,,”,“,,,,”。#include<>voidmain(){intn=0;floatx=,y;FILE*fp;fp=①;do{fscanf(②);if(feof(fp))break;x+=y;n++;}while(1);x=x/n;③;fclose(fp);}:将给定的整数按指定的位置插入已有的10个整数序列并输出,插入操作在被调函数insert中完成。(指定的位置应大于等于0且小于等于10)#include<>voidinsert(①int*p或intp[],inti,intx){intj;for(j=9;j>=i;j--)②p[j+1]=p[j];p[i]=x;}voidmain(){inti,a[11]={1,2,3,4,56,7,8,9,10},wz,x;③insert(a,wz,x);for(i=0;i<=10;i++)}:..(y>=1),请填空。doublefun(doublex,inty){①inti;doublez;for(i=1,z=1;②i<=y;i++)z=z*x;③returnz;}:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。main(){floatx,max,min;max=x;min=x;while(①x>=0){if(x>max)max=x;if(②x<min)min=x;③&x);}Max=%f}。插入排序的思路是:先对数组的头两个元素进行排序,然后把第三个元素插入已排好序的前两个元素,再插入第四个,依次完成全部元素的插入排序。请填空。#include<>voidmain(){inta[10];inti,j,t;for(i=0;i<10;i++)for(i=1;i<10;i++){t=a[i];j=①i-1;while(j>=0&&t>a[j]){②a[j+1]=a[j];j--;}③a[j+1]=t;}for(i=0;i<10;i++)}:..。#include<>structrec{intnum;floattotal;};reout(①FILE*f){structrecr;while(!feof(f)){fread(&r,②sizeof(stractrec),1,f);③,);}}voidmain(){FILE*f;reout(f);fclose(f);}=1+x+x2/2!+x3/3!++xn/n!doublesum(intx,intn){inti;doublea,b,s;a=;b=;s=;for(i=1;i<n;i++){①;②b=b*i;s=s+a/b;}returns;}voidmain(){intx,n;doubles;③s=sum(x,n);},即a[0],a[9]互换,a[1],a[8]互换,以此类推。请填空。#include<>voidmain():..{voidinvert(int*s,intnum);inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10;for(i=0;i<10;i++)invert(a,n-1);for(i=0;i<10;i++)}voidinvert(int*s,intnum){int*t,k;t=s+num;while(①s<t){k=*s;*s=*t;*t=k;②s++;③t--;}}:,(不区分大小写)的个数,并将结果显示在屏幕上。#include<>voidmain(){FILE*fp;charfilename[15];charc;charch='A';intn[26]={0},i;fp=fopen(①filenamewhile(!feof(fp)){c=fgetc(fp);if(c>='a'&&c<='z')n[②c-?a?]++;if(c>='A'&&c<='Z')n[c-'A']++;}fclose(fp);for(i=0;i<26;i++)③ch+i,ch+32+i,n[i]);}}:..输出格式如下:A(a)=12B(b)=6C(c)=20D(d)=7E(e)=26F(f)=9G(g)=7H(h)=7I(i)=18J(j)=,分别存放在main函数的变量max和min中,请填空。#include<>voidfun(int*a,intn,int*max,int*min){inti;*max=*min=0;for(i=1;i<n;i++)if(*(a+i)>*(a+*max))①*max=i;elseif(*(a+i)<*(a+min))②*min=i;return;}voidmain(){inta[10]={3,15,2,26,9,28,7,1,4,12};intmax,min;③fun(a,10,&max,&min);}程序输出为:max=5,min=。即字符串c为:abcdefghijklmnpq#include<>#include<>voidmain()charc[80],*p;inti=0,j=0,k=0;{if(a[i]<b[j])①c[k]=a[i++];else②c[k]=b[j++];k++;}if(③*(b+j)!=???)p=b+j;elsep=a+i;strcat(c,p);puts(c);}:..:统计C语言源程序(file3-)文件中的“{”和“}”是否配对,即“{”和“}”的数目是否相等。如果配对,则输出“OK!”否则输出“ERROR!”。#include<>#include<>voidmain(){FILE*fp;①charch;intch1=0,ch2=0;②“r”))==NULL){exit(0);}while(!feof(fp)){③ch=fgetc(fp);if(ch1=='{')ch1++;if(ch2=='}')ch2++;}fclose(fp);if(ch1==ch2)else}:将一个数插入到一个有序数组(从小到大)中,使插入以后的数组仍然有序。采用的算法是:确定要插入数的位置,然后将比这个数大的数后移一个位置,在空出的位置上将该数插入。#include<>voidmain(){inta[11]={1,3,6,7,9,12,14,18,19,20},x;inti,p;for(i=0,p=10;i<10;i++)if(x<a[i]){①p=i;break;}:..for(i=9;②i>=p;i--)a[i+1]=a[i];③a[p]=x;for(i=0;i<11;i++)}()中最长单词的长度。#include<>intcount(char*p){intword=0,max=0;while(*p!='.'){while((*p<='z')&&(*p>='a')||(*p<='Z')&&(*p>='A')){①word++;p++;}if(②max<word)max=word;③word=0;p++;}returnmax;}voidmain(){charstr[80];gets(str);},函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。主函数中输出和值。#include<>#defineM2#defineN4voidSumColumMin(inta[M][N],int*sum){inti,j,k,s=0;for(i=0;i<N;i++){k=0;:..for(j=0;j<M;j++)if(a[k][i]>a[j][i])k=j;s+=①a[k][i];}②*sum=s;}voidmain(){intx[M][N]={3,2,5,1,4,1,8,3},s;SumColumMin(③x,&s);},然后按每行5个数的格式输出。#include<>voidmain(){inti,j,k,t,a[10]={1,4,3,5,7,9,2,0,6,8};for(j=0;j<9;j++){k=j;for(i=j+1;i<10;i++){if(*(a+i)>①a[k])k=i;}t=a[j];*(a+j)=②a[k];*(a+k)=t;}for(i=0;i<10;i++)③“%4”,*(a+i));},请填空。#include<>#include<>voidfun(charstr[]){①charm;inti,j;for(i=0,j=strlen(str);②i<=j;i++,j--){m=str[i];:..str[i]=③str[j-1];str[j-1]=m;}}。#include<>voidmain(intargc,char*argv[]){FILE*fp1,*fp2;charch;if(argc!=3)elseif((fp1=fopen(①argv[1]{return;}return;}elsewhile((②ch=fgetc(fp2))!=EOF)③fputc(ch,fp1);fclose(fp1);fclose(fp2);}:用筛选法求2~100之间的所有素数。方法是:首先将2~100的数放入一个数组中,然后从2开始,将数组中所有2的倍数的数置为0;接着从数组中找到下一个非0数,并将数组中所有该的倍数的数置为0;依此类推,直到所找到的下一个数大于100为止,最后将数组中不为0的数输出即为2~100之间的素数,一行输出10个。#include<>voidmain(){inta[100];inti,j,count=0;for(i=0;i<99;i++)a[i]=①i+2;for(i=0;i<=50;i++)for(j=i+1;j<99;j++)if(②a[j]!=0&&a[i]!=0&&a[j]%a[i]==0)a[j]=0;for(i=0;i<99;i++)if(a[i]!=0){:..count++;if(③count%10==0)}}:将一个数字字符串转换为一个整数。例如,有字符串“-1234567”程序将它转换为整数-1234567。#include<>#include<>longfs(char*p){inti=0,sign=1;longnum=0;if(p[i]=='-')sign=①-sign;if(p[i]=='+'||p[i]=='-')i=1;elsei=0;{②num*=10;num+=p[i]-48;i++;}num=sign*num;return(num);}voi