计算机二级 c++程序题 题库_第1页
计算机二级 c++程序题 题库_第2页
计算机二级 c++程序题 题库_第3页
计算机二级 c++程序题 题库_第4页
计算机二级 c++程序题 题库_第5页
已阅读5页,还剩274页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第一套

给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的

结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函

数返回0值。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include<stdio.h>

#inciude<stdlib.h>

#defineN8

typedefstructlist

{intdata;

structlist*next;

}SLIST;

SLIST*creatlist(char*);

voidoutlist(SLIST*);

intfun(SLIST*h,charch)

{SLIST*p;intn=0;

p=h->next;

/**********R)und**********/

while(p!=0)

{n++;

/**********d**********/

if(p->data=ch)returnn;

elsep=p->next;

)

return0;

)

main()

{SLIST*head;intk;charch;

chara[N]={'mVp;'g';a';w";x';r';dr};

head=creatlist(a);

outlist(head);

printf(uEnteraletter:n);

scanf("%c",&ch);

/**********d*****¥****/

k=fun(head,ch);

if(k==0)printf(H\nNotfound!\nn);

elseprintf('Thesequencenumberis:%d\nn,k);

SLIST*creatlist(char*a)

{SLIST*h,*p,*q;inti;

h=p=(SLIST*)malloc(sizeof(SLIST));

for(i=0;i<N;i++)

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

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

}

p->next=O;

returnh;

)

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf(H\nThelistisNULL!\nn);

else

{printf(,,\nHeadn);

do

{printf(',->%c',,p->data);p=p->next;}

while(p!=NULL);

printf("->End\nn);

给定程序modi.c中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均

值以上(含平均值)的实际个数。

例如,n=8时输入:193.199、195.673、195.757,196.051>196.092,196.596、196.579、

196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<conio.h>

#include<stdio.h>

#include<windows.h>

intfun(floatx[],intn)

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

{intj,c=0;floatxa=0.0;

for(j=0;j<n;j++)

xa+=x|j]/n;

printf(nave=%f\n",xa);

for(j=0;j<n;j++)

/************nd************/

if(x[j]=>xa)

C++;

returnc;

main()

{floatx[100]={193.199f,195.673f,195.757f,196.051f,196.092f,196.596f,196.579f,196.763f};

system(*'cls");

printf(M%d\n",fun(x,8));

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前

导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p

已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应

当是:****ABCDEFG********。在编写函数时,不得使用C语言提供的字符串函数。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写

的若干语句。

#include<stdio.h>

#include<conio.h>

voidfun(char*a,char*h,char*p)

{charb[81],*x;

inti=0,j=0;

x=a;

while(x<h){b[j]=*x;x+4-;j++;)

while(h<=p)

if(*h!='*'){b[j]=*h;j++;h++;}

elseh++;

P++;

while(*p){b[j]=*p;j++;p++;}

b[j]=\O1;j=O;

while(b[j])

{a[i]=b|j];i++;j++;}

a[i]=\0';

voidNONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,

输出数据,关闭文件。*/

chars[81],*t,*f;

inti;

FILE

rf=fopen(,'b37.in',,,,rn);

wf=fopen(”a37.out“,“w");

for(i=0;i<4;i++)

{fscanf(rf,M%sn,s);

t=f=s;

while(*t)t++;

t-;

while(*t==,5ie,)t—;

while(*f==*')f++;

fun(s,f,t);

fprintf(wf,n%s\nn,s);

)

fclose(rf);

fclose(wf);

)

main()

{chars[81],*t,*f;

printf("Enterastring:\nM);gets(s);

t=f=s;

while(*t)t++;

t-;

while(*t=='*')t—;

whilef++;

fun(s,f,t);

printf(nThestringafterdeleted:\nn);puts(s);

NONO();

第二套

给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在

形参n所指的存储单元中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

voidoutlist(SLIST*);

voidfun(SLIST*h,int*n)

{SLIST*p;

]******不***nd**********/

(*n)=0;

p=h->next;

while(p)

{(*n)++;

p=p->next;

)

)

main()

{SLIST*head;

inta[N]={12,87,45,32,91,16,20,48},num;

head=creatlist(a);outlist(head);

/**********fiound**********/

fun(head,&num);

printf(',\nnumber=%d\n,,,num);

)

SLIST*creatlist(inta[])

{SLIST*h,*p,*q;inti;

h=p=(SLIST*)malloc(sizeof(SLIST));

for(i=0;i<N;i++)

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

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

)

p->next=0;

returnh;

)

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf(HThelistisNULL!\nH);

else

{printfCAnHead");

do

{printf(',->%d,,,p->data);p=p->next;}

while(p!=NULL);

printf(',->End\nn);

)

)

给定程序modi.c中,fun函数的功能是:将n个无序整数从小到大排序。请改正程序中

的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#include<windows.h>

fun(intn,int*a)

{inti,j,p,t;

for(j=O;j<n-l;j++)

{P=j;

/************l^jund**亭*********/

for(i=j+l;i<n;i++)

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

I************found************/

p=i;

if(p!=j)

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

)

putarr(intn,int*z)

{inti;

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

{printf(”%4d”,*z);

if(!(i%10))printfCAn'1);

}printf("\nn);

main()

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

system("cls”);

printf(u\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);

fun(n,aa);

printf(M\nAftersorting%dnumbers:\nM,n);putarr(n,aa);

)

请编写一个函数fun,它的功能是:根据以下公式求人的值(要求满足精度0.0005,即

某项小于0.0005时停止迭代):

程序运行后,如果输入精度0.0005,则程序输出为3.140578。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写

的若干语句。

#include<stdio.h>

#include<math.h>

doublefun(doubleeps)

intn=0;

doubledown=l,up=l;

doubleone,pi=0;

one=(double)up/(double)down;

while(one>=eps){

pi+=one;

n++;

up=up*n;

down=down*(2*n+l);

one=(double)up/(double)down;

)

returnpi*2;

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

inti;

doublex;

fp=fopen("bc04.in","r");

if(fp==NULL){

printf("数据文件bc04.in不存在!);

return;

)

wf=fopen(nbc04.out'\nwu);

for(i=0;i<10;i++){

fscanf(fp,"%lf'\&x);

fprintf(wf,u%lf\n",fun(x));

)

fclose(fp);

fclose(wf);

)

main()

{doublex;

printf("Inputeps:'1);

scanf("%lf',&x);printf(Aneps=%lf,PI=%lf\nn,x,fun(x));

NONO();

第三套

给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作

为函数值返回。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include<stdio.h>

#include<stdlib.h>

#defineN8

typedefstructlist

{intdata;

structlist*next;

}SLIST;

SLIST*creatlist(int*);

voidoutlist(SLIST*);

intfun(SLIST*h)

{SLIST*p;ints=0;

p=h->next;

while(p)

/***********)u**********/

s+=p->data;

/**********R)und**********/

p=p->next;

returns;

)

main()

{SLIST*head;

inta[N]={12,87,45,32,91,16,20,48);

head=creatlist(a);outlist(head);

/******************/

printf(',\nsum=%d\n",fun(head));

)

SLIST*creatlist(inta[])

{SLIST*h,*p,*q;inti;

h=p=(SLIST*)malloc(sizeof(SLIST));

for(i=0;i<N;i++)

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

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

p->next=O;

returnh;

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf(nThelistisNULL!\nn);

else

{printfCAnHead");

do

{printf(',->%d,\p->data);p=p->next;}

while(p!=NULL);

printf("->End\n");

)

)

给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的

偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,

若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求

平均值。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<stdio.h>

#defineSIZE20

fiin(double*s,double*w)

{intk.i;doublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;}

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

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

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

if((i+l)%5==0)

{w[k]=sum/5;sum=0;k++;}

)

returnk;

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a,b);

printf('Theoriginaldata:\nM);

for(i=0;i<SIZE;i++)

{if(i%5==0)printf("\n");

printf(H%4.0fu,a[i|);

)

printfCAnVnTheresult:\nn);

for(i=0;i<k;i++)printf("%6.2f",b[i]);

printf('\n\nn);

请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的

求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字

符串。

例如,Abeijing<CR>shanghai<CR>(vCR>为回车键)

函数将返回shanghaio

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写

的若干语句。

#include<stdio.h>

char*fun(char*s,char*t)

(

intfirst=0,second=0;

char*p,*q;

P=s;

q=t;

while(*p++!=、0')

first++;

while(*q++!=、()')

second++;

if(first=second)

returns;

elseif(first>second)

returns;

else

returnt;

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

inti;

chara[20],b[20];

fp二fopen("bc03.in",T');

if(fp==NULL){

printf("数据文件bc03.in不存在!”);

return;

)

wf=fopen("bc03.out",nwH);

for(i=0;i<10;i++){

fscanf(fp,n%s%s”,a,b);

fprintf(wf,n%s\nH,fun(a»b));

)

fclose(fp);

fclose(wf);

)

main()

{chara[20],b[10];

printf("Input1thstring:");

gets(a);

printf("Input2thstring:");

gets(b);

printf(n%s\nn,fun(a,b));

NONOQ;

)

第4套

人员的记录由编号和出生年、月、H组成,N名人员的数据已在主函数中存入结构体数

组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,

由主函数输出,若指定编号不存在,返回数据中的编号为空串。

#include<stdio.h>

#include<string.h>

#defineN8

typedefstruct

{charnum[10];

intyear,month,day;

}STU;

STUfun(STU*std,char*num)

{inti;STUa={””,9999,99,99};

for(i=0;i<N;i++)

/**********^if)und**********/

if(strcmp(std[i].num,num)==O)

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

return(stdfi]);

returna;

)

main()

{STUstd[N]={{H111111);1984,2,15},{,'222222n,1983,9,21},{,333333",1984,9,1),

{“444444”[983,7,15},{“555555”,1984,9,28},{“666666”,1983,11,15},

{“777777”,1983,6,22},{“888888”,1984,8,19}};

STUp;charn[10]="666666M;

p=fun(std,n);

if(p.num[0]==0)

printf("\nNotfound!\n");

else

{printf(n\nSucceed!\n");

printf(n%s%d-%d-%d\n",p.num,p.year,p.month,p.day);

)

)

给定程序modi.c中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为

函数值返回。

例如,当s所指字符串中的内容为:"abcdabfab",t所指字符串的内容为:"ab",则函

数返回整数3。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<conio.h>

#include<stdio.h>

#include<string.h>

#include<windows.h>

intfun(char*s,char*t)

(

intn;char*p,*r;

n=0;

while(*s)

{p=s;r=t;

while(*r)

/************nd***示********/

if(*r==*p){r++;p++;}

elsebreak;

/************found***¥********/

if(*r=,\O,)

n++;

s++;

returnn;

)

main()

(

chars[100|,t|100|;intm;

system(Mclsn);

printf(n\nPleaseenterstringS:");scanf("%s”,s);

printf(M\nPleaseentersubstringt:n);scanf(n%s",t);

m=fun(s,t);

printf(n\nTheresultis:m=%d\n",m);

)

规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面

连续的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不

做,字符串中间和尾部的*号不删除。

例如,字符串中的内容为:*******A*BC*DEF*G****,若n的值为4,删除后,字符

串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:

*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供

的字符串函数。

注意:部分源程序存在文件prog.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写

的若干语句。

#include<stdio.h>

#include<conio.h>

voidfun(char*a,intn)

{charb|81J;

inti=O,j=O,s=O,k;

while(a[i]=,5!c,){s++;i++;}

if(s>n)

{for(k=0;k<n;k++)

{b[jl;j++;}

while(a[i])

{b|j]=a[i];j++;i++;}

b|j]=W;i=0;j=0;

while(b|j])

{a[i]=b[j];i++;j++;}

a[i]=W;

voidNONO()

{/*请在此函数内打开文件、输入测试数据,调用fun函数,

输出数据,关闭文件。*/

chars[81];

inti,n;

FILE*rf,*wf;

rf=fopen(nb40.in'V,rM);

wf=fopen(Ha40.out",nwM);

for(i=0;i<4;i++)

{fscanf(rf,"%sM,s);

nn

fscanf(rf,%d5&n);

fun(s,n);

fprintf(wf,n%s\nn,s);

)

fclose(rf);

fclose(wf);

)

main()

{chars[81];intn;

printf("Enterastring:\nM);gets(s);

printf("Entern:n);scanf("%d",&n);

fun(s,n);

printf(HThestringafterdeleted:\nn);puts(s);

NONO();

第5套

人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数

组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组

中,由主函数输出,同时由函数值返回满足指定条件的人数。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结

果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include<stdio.h>

#defineN8

typedefstruct

{intnum;

intyear,month,day;

}STU;

intfun(STU*std,STU*k,intyear)

{inti,n=O;

for(i=0;i<N;i++)

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

if(std[i].year==year)

k[n++]=std[i];

return(n);

)

main()

{STUstd[N]={{1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15},

{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19});

STUk[NJ;inti,n,year;

printf(nEnterayear:");scanf("%d”,&year);

n=fun(std,k,year);

if(n==0)

printf(n\nNopersonwasbornin%d\n'\year);

else

printf(n\nThesepersonswerebomin%d\nn,year);

fdr(i=O;i<n;i++)

printf(u%d%d-%d-%d\n",k[i].num,k[i].year,k[i].month,k[i].day);

给定程序modi.c中,函数fun的功能是:将十进制正整数m转换成k(2WkW9)进制数,

并按位输出。

例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<conio.h>

#include<stdio.h>

#include<windows.h>

voidfiin(intm,intk)

(

intaa|20],i;

for(i=0;m;i4-+)

{

/************found*>

aa[i]=m%k;

m/=k;

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

for(i=i-l;i>=0;i—)

printf(M%dn,aa[i]);

main()

intb,n;

systemC'cls");

printfCAnPleaseenteranumberandabase:\nn);

scanf(u%d%dH,&n,&b);

fun(n,b);

printf(,f\nn);

请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。

例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。

#include<stdio.h>

floatfun(float*a,intn)

inti;

floataverage;

doublesum=0;

for(i=0;i<n;i++)

sum+=a[i];

average=(float)sum/n;

returnaverage;

)

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

inti,j;

floataver,score[5];

fp=fopen(,,bc01.in,',V);

if(fp==NULL){

printf("数据文件bcOl.in不存在!”);

return;

wf=fopen(,,bc01.out,,,,'wu);

for(i=0;i<10;i++){

for(j=0;j<5;j++)fscanf(fp,"%f,”,&score[jD;

aver=fun(score,5);

fprintf(wf,n%5.2f\nn,aver);

)

fclose(fp);

fclose(wf);

)

main()

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

aver=fun(score,5);

printf(AnAveragescoreis:%5.2f\nu,aver);

NONO();

第6套

给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3

门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。

#include<stdio.h>

typedefstruct

{intnum;

charname[9];

floatscore[3];

}STU;

voidshow(STUtt)

{inti;

printf(,,%d%s:",tt.num,);

for(i=0;i<3;i++)

printf(M%5.1f',tt.score[i]);

printf("\n");

/**********tound**********/

voidmodify(STU*ss,floata)

{inti;

for(i=0;iv3;i++)

/**********^^und*****示****/

ss->score|i]*=a;

)

main()

{STUstd={l,MZhanghuaH,76.5,78.0,82.0};

floata;

printf(,r\nTheoriginalnumberandnameandscores:\n");

show(std);

printf(,f\nlnputanumber:");scanf("%r,&a);

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

modify(&std,a);

printf("\nAresultofmodifying:\n");

show(std);

给定程序modi.c中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中

的所有字符按ASCII码升序排序后输出。

例如:若输入:edcba,则应输出:abcdeo

#include<conio.h>

#include<stdio.h>

#include〈windows.h>

#defineM20

voidfun(chart[])

charc;

intij;

/************found****次*******/

for(i=strlen(t)-1;i;i—)

for(j=0;j<i;j++)

[卷**********nd************/

if(tU]>tU+U)

(

c=t[j];

tUHU+1];

t[j+l|=C;

main()

(

chars[81];

system(”cls");

printf(AnPleaseenteracharacterstring:'1);

gets(s);

printf(An\nBeforesortingAn\"%s\"u,s);

fun(s);

printf(,r\nAftersortingdecendinglyAn\',%s\',,,,s);

某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数

中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自

己定义正确的形参。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,875他的平均分应当是:78.875。

#include<stdio.h>

#defineN8

typedefstruct

{charnum[10];

doubles[N];

doubleave;

JSTREC;

voidfun(STREC*p)

{inti;

doubleaven=0;

for(i=0;i<N;i++)

{aver=aver+(*p).s[i];}

(*p).ave=aver/N;

)

voidNONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,

输出数据,关闭文件。*/

STRECs={nGA005n,85.5,76,69.5,85,91,72,64.5,87.5};

inti;

FILE*wf;

wf=fopen("a43.out'\"w'1);

fun(&s);

fprintf(wf,'The%s'sstudentdata:\n",s.num);

for(i=0;i<N;i++)

fprintf(wf,H%4.1f\nM,s.s[i]);

fprintf(wf,nave=%7.3f\n",s.ave);

fclose(wf);

)

main()

{STRECs={"GA005”,85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf(nThe%s'sstudentdata:\nM,s.num);

for(i=0;i<N;i++)

printf(n%4.If\nn,s.s[i]);

printf(',\nave=%7.3f\n,\s.ave);

NONO();

第7套

给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成

员进行升序排列。

#include<stdio.h>

typedefstruct

{intnum;

charname[10];

}PERSON;

[**********^)und**********/

voidfun(PERSONstd[3])

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

PERSONtemp;

if(std[O].num>std[l].num)

{temp=std[0];std[O]=std[l];std[1l=temp;}

if(std[0].num>std[2].num)

{temp=std|OJ;std|0]=std[2];std[2]=temp;}

if(std|1].num>std[2].num)

{temp=std[l];std[l]=std[2];std[2]=temp;}

)

main()

{PERSONstd[]={5;,Zhanghu,',2;,WangLi';6;,LinMinn};

inti;

/**********^Qund**********/

fun(std);

printfCAnTheresultis:\n");

for(i=0;i<3;i++)

printf(n%d»%s\nn,std[i].num,std[i].name);

给定程序modi.c中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定

不允许增加语句和表达式。例如变量a中的值为3,b中的值原为8,程序运行后a中的值

为8,b中的值为3。

#include<conio.h>

#include<stdio.h>

#include<windows.h>

intfun(int*x,inty)

intt;

returnt;

)

main()

(

inta=3,b=8;

system(,*clsM);

printf(n%d%d\nn,a,b);

b=fun(&a,b);

printf(n%d%d\n'\a,b);

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请

编写函数fun,它的功能是:把高于等于平均分的学生数据放在h所指的数组中,高于等于

平均分的学生人数通过形参传回,平均分通过函数值返回。

#include<stdio.h>

#defineN12

typedefstruct

{charnum[10];

doubles;

}STREC;

doublefun(STREC*a,STREC*b,im*n)

{inti,j;

doubleaver=0;

*n=0;

for(i=0;i<N;i++)

aver=aver+a[i].s;

aver=aver/N;

for(i=0;i<N;i++)

if(a[i].s>=aver)

{b[*n].s=a[i].s;

for(j=0;j<10;j++)

b[*n].num[j]=a[i].num[j];

*n=*n+l;

return(aver);

)

main()

{STREC

s[N]={{',GA05,',85},{,,GA03,1,76},{"GA02,\69},{,,GA04,1,85},{"GA0r,,91},{,'GA07",72},{,,GA

08H,64},{,,GA06,1,87},{,,GA09,1,60},{nGAlln,79),{,,GA12n,73},{',GA10,1,90});

STREChLN];FILE*out;

inti,n;doubleave;

ave=fun(s,h,&n);

printf('The%dstudentdatawhichishigherthan%7.3f:\nn,n,ave);

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

printf("%s%4.1f\n'\h[i].num,h[i].s);

printfCAn");

out=fopen("outl2.dat"Jw");

fprintf(out,n%d\n%7.3f\n",n,ave);

for(i=O;i<n;i++)

fprintf(out/'%s%4.lf\nn,h[i].num,h[i].s);

fclose(out);

第8套

给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为

函数值返回,并在main函数中输出。

#include<stdio.h>

typedefstruct

{charname[10];

intage;

}STD;

STDfun(STDstd[],intn)

{STDmax;inti;

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

max=*std;

for(i=l;i<n;i++)

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

if(max.age<std[i].age)max=std[i];

returnmax;

)

main()

{STDstd[5]={,,aaa,,,17,',bbb',,16;,ccc,,,18,',ddd,',17,,'eee,',15};

STDmax;

max=fun(std,5);

printf('\nTheresult:\nu);

/******************/

printf(u\nName:%s,Age:%d\nn,,max.age);

)

给定程序modi.c中,函数fun的功能是:计算正整数num的各位上的数字之积,例如,

若输入:252,则输出应该是:20o若输入:202,则输出应该是:0。

#include<stdio.h>

#include<conio.h>

#include〈windows.h>

longfun(longnum)

/享***¥******nd************/

longk=l;

do

{k*=num%10;

/不***不*******found************/

num/=10;

}while(num);

return(k);

main()

{longn;

system(,'clsn);

printf('Pleaseenteranumber:");scanf("%ld”,&n);

printf('\n%ld\n",fun(n));

)

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请

编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

voidfun(STRECa[J)

{inti,j,p,t,k;

charh;

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

{P=i;

for(j=i+l;j<N;j++)/*按分数从高到低进行排序*/

if(a[p].s<a[j].s)p=j;

if(p!=i)

{t=a[p].s;a[p].s=a[i].s;a[i].s=t;

for(k=0;k<10;k++)

{h=a[p].num[k];

a[p].num[k]=a[i].num[k];

a[i].num[k]=h;

)

)

main()

{STREC

s[N]={{,,GA05,1,85},{uGA03n,76},{MGA02M,69},{MGA04H,84},{MGA0r,,91},{,'GA07,',72},{nGA

08,;64},{"GA06'\87},{nGA015,\89},{"GA013',,92},{"GA012,\66},{nGA014,',93},{nGA0H",90

},{"GA017”,63},{“GAO18”,61},{”GAO16",73}};

inti;FILE*out;

fun(s);

printf('Thedataaftersorted:、。');

for(i=0;i<N;i++)

{if((i)%4==0)printf(H\nn);

printf(M%s%4d",s[i].num,s[i].s);

)

printf('^\n,^);

out=fopen("outl6.dat,,,',wu);

for(i=0;i<N;i++)

{if((i)%4==0&&i)fprintf(out,n\n");

fprintf(out,"%s%4dn,s[i].num,s[i].s);

)

fprintf(out,M\nn);

fclose(out);

)

第9套

给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由

短到长进行排序。ss所指字符串数组中共有M个字符串,且串长<N。

#include<stdio.h>

#include<string.h>

#defineM5

#defineN20

voidfun(char(*ss)[N])

{inti,j,k,n[M];chart[N];

for(i=0;i<M;i++)n[i]=strlen(ss[i]);

for(i=0;i++)

{k=i;

/**********fiound**********/

for(j=i+l;j<M;j++)

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

if(n[k]>n[j])k=j;

if(k!=i)

{strcpy(t,ss[i]);

strcpy(ss[i],ss[k]);

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

strcpy(ss[k],t);

n[k]=n[i];

)

)

}

main()

{charss[M][N]={''shanghai,,,"guangzhou",",beijing","tianjing,,,',cchongqingn};

inti;

printf("\nTheoriginalstringsare:\n");

for(i=0;i<M;i++)printf(n%s\nM,ss[i]);

printfCAn");

fun(ss);

printf('\nTheresult:\nH);

for(i=0;i<M;i++)printf("%s\n",ss[i]);

)

给定程序modi.c中,函数fun的功能是:将字符串中的内容按逆序输出,但不改变字符串

中的内容。

例如,若字符串为abed,则应输出:deba。

#include<stdio.h>

/***孝,**不****nd***,**¥*****/

fun(char*a)

{if(*a)

{fun(a+l);

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

printf("%c"*a);

main()

{chars[10]=uabcdn;

printf("处理前字符串二%s\n处理后字符串=",s);

fun(s);printf(',\nn);

函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的

方式是:将a数的十位和个位数依次放在c数的百位和个位匕b数的十位和个位数依次放

在c数的十位和千位上。

例如,当a=45,b=12。调用该函数后,c=2415o

#include<conio.h>

#include<stdio.h>

#include<windows.h>

voidfun(inta,intb,long*c)

(

inta_up,a_low,b_up,b_low;

a_up=a/10;

a_low=a%10;

b_up=b/10;

b_Jow二b%10;

*c=b_low*1000+a_up*100+b_up*10+a_low;

)

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("inl.datu,V);

wf=fopen("bc04.datnw");

for(i=0;i<10;i++){

fscanf(rf,"%d,%d”,&a,&b);

fun(a,b,&c);

fprintf(wf,,,a=%d,b=%d,c=%ld\nn,a,b,c);

fclose(rf);

fclose(wf);

main()

{inta,b;longc;

system(,,clsu);

printf("Inputa,b:");

scanf("%d%dM,&a,&b);

fun(a,b,&c);

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

NONO();

第10套

给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余

字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串

长vN。

#include<stdio.h>

#include<string.h>

#defineM5

#defineN20

voidfun(char(*ss)[N])

{inti,j,k=0,n,m,len;

for(i=0;i<M;i++)

{len=strlen(ss[i]);

if(i==0)n=len;

if(len>n){

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

n=len;k=i;

}

for(i=0;i<M;i++)

if(i!=k)

{m=n;

len=strlen(ss[i]);

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

for(j=len;j>=0;j-)

ss[i][m-]=ss[i][j];

for(j=0;j<n-len;j++)

/**********found*****¥****/

SS「皿士*

main()

{charsslM][N]={"shanghai",nguangzhou,V'beijing,\,,tianjingM,"cchongqing"};

inti;

printf("\nTheoriginalstringsare:\nn);

for(i=0;i<M;i++)printf(n%s\n",ss[i]);

printfCn");

fun(ss);

printf(,f\nTheresultAn");

for(i=0;i<M;i++)printf(n%s\nH,ss[i]);

)

给定程序modi.c中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x・y)+(z+y)/(z・y)的值。其

中x和y的值不等,z和y的值不等。

例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50。

#inckide<stdio.h>

#include<math.h>

#defineFU(m,n)(m/n)

floatfun(floata,floatb,floatc)

{floatvalue;

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

value=FU((a+b),(a

温馨提示

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

评论

0/150

提交评论