程序设计题答案.docx

上传人:b****1 文档编号:10706949 上传时间:2023-05-27 格式:DOCX 页数:18 大小:23.81KB
下载 相关 举报
程序设计题答案.docx_第1页
第1页 / 共18页
程序设计题答案.docx_第2页
第2页 / 共18页
程序设计题答案.docx_第3页
第3页 / 共18页
程序设计题答案.docx_第4页
第4页 / 共18页
程序设计题答案.docx_第5页
第5页 / 共18页
程序设计题答案.docx_第6页
第6页 / 共18页
程序设计题答案.docx_第7页
第7页 / 共18页
程序设计题答案.docx_第8页
第8页 / 共18页
程序设计题答案.docx_第9页
第9页 / 共18页
程序设计题答案.docx_第10页
第10页 / 共18页
程序设计题答案.docx_第11页
第11页 / 共18页
程序设计题答案.docx_第12页
第12页 / 共18页
程序设计题答案.docx_第13页
第13页 / 共18页
程序设计题答案.docx_第14页
第14页 / 共18页
程序设计题答案.docx_第15页
第15页 / 共18页
程序设计题答案.docx_第16页
第16页 / 共18页
程序设计题答案.docx_第17页
第17页 / 共18页
程序设计题答案.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

程序设计题答案.docx

《程序设计题答案.docx》由会员分享,可在线阅读,更多相关《程序设计题答案.docx(18页珍藏版)》请在冰点文库上搜索。

程序设计题答案.docx

程序设计题答案

1.请编写函数fun,其功能时:

计算并输出下列多项式的值:

sn=1+1/1!

+1/2!

+1/3!

+1/4!

+…+1/n!

doublefun(intn)

{doubles=1.0,t=1.0;

inti;

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

{t*=i;

s+=1/t;}

returns;}

2.请编写函数fun:

计算并输出下列多项式值:

sn=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)1/2n).

doublefun(intn)

{doubles=0,k=1.0;

inti;

for(i=1;i<=2*n;i++)

{s+=k/i;

k=-k;}

returns;}

3.

doublefun(intn)

{doubles=0,t=1.0;

inti;

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

{t*=i;

s+=1/t;}

returns;}

4.请编写函数fun:

s=1+(1+2(0.5))+(1+2(0.5)+3(0.5))+…+(1+2(0.5)+3(0.5)+…+n(0.5))

doublefun(intn)

{doubles=0,t=0;

inti;

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

{t+=sqrt(i);

s+=t;}

returns;}

5.请编写函数fun:

计算并输出当x<0.97时下列多项式的值,直到|sn-s(n-1)|<0.000001为止。

Sn=1+0.5x+0.5(0.5-1)/2!

x

(2)+…+0.5(0.5-1)(0.5-2)…..(0.5-n+1)/n!

x(n)

doublefun(doublex)

{doubles=0.0,s1=1.0,s0=0,p=1.0,t=1.0;

intn=1;

do

{s0=s1;

s+=s0;

t*=n;

p*=(0.5-n+1)*x;

s1=p/t;

n++;}while(fabs(s1-s0)>1e-6);

returns;}

6.请编写函数fun:

计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

doublefun(intn)

{inti;

doublesum=0.0;

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

if(i%5==0||i%9==0)sum+=1.0/i;

returnsum;=

7.请编写函数fun:

计算并输出给定整数n的所有因子(不包括1与自身)之和。

规定n的值不大于1000。

intfun(intn)

{ints=0,i;

for(i=2;i<=n-1;i++)

if(n%i==0)s+=i;

returns;}

8.请编写函数fun,其功能是:

计算并输出3到n之间所有素数的平方根之和。

doublefun(intn)

{intm,ki;

doubles=0.0;

for(m=3;m<=n;m++)

{k=sqrt(m);

for(i=2;i<=k;i++)

if(m%i==0)break;

if(i>=k+1)s+=sqrt(m);

9.编写函数intfun(intlim,intaa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。

intfun(intlim,intaa[MAX])

{inti,j,k=0;

for(i=2;i<=lim;i++)

{for(j=2;j

if(i%j==0)

break;

if(j==i)

aa[k++]=i;}

returnk;}

10.函数floatfun(doubleh):

使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数)。

floatfun(floath)

{longt;

t=(h*1000+5)/10;

return(float)t/100;}

11.请编写一个函数unsignedfun(unsignedw),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。

unsignedfun(unsignedw)

{unsignedt=1,u=w;

while(u>=10)

{u=u/10;

t*=10;}

returnw%t;}

 

12.程序定义了n×n的二维数组,并在主函数中自动赋值。

请编写函数fun,该函数的功能是:

使数组左下半三角元素中的值乘以n。

voidfun(inta[][N],intn)

{inti,j;

for(i=0;i

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

a[i][j]*=n;}

13.下列程序定义了n×n的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][n],intn),该函数的功能是:

将数组右上半三角元素中的值乘以m。

voidfun(inta[][n],intm)

{inti,j;

for(j=0;j

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

a[i][j]*=m;}

14.下列程序定义了n×n的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][n]),该函数的功能是:

使数组左下半三角元素中的值全部置成0。

intfun(inta[][N])

{inti,j;

for(i=0;i

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

a[i][j]=0;}

15.请编写函数fun,该函数的功能是:

将m行n列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的储存单元中。

voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

{inti,j;

for(i=0;i

for(j=0;j

b[(*n)++]=s[i][j];}

16.请编写函数fun:

将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

voidfun(chars[][N],char*b)

{inti,j,n=0;

for(i=0;i

{for(j=0;j

if(s[j][i])

b[n++]=s[j][i];}

b[n]='\0';}

17.下列程序定义了n×n的二维数组,并在主函数中赋值。

请编写函数fun:

求出数组周边元素的平均值并作为函数值返回给主函数中的s。

doublefun(intw[][N])

{intj;

doubles=0;

for(j=0;j

{s+=w[0][j];

s+=w[j][0];

s+=w[N-1][j];

s+=w[j][N-1];}

s=s-w[0][0]-w[N-1][N-1]-w[N-1][0]-w[0][N-1];

returns/(4*N-4);}

18.写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。

二维数组中的值在主函数中赋予。

intfun(inta[M][N])

{inti,j,s=0;

for(j=0;j<N;j++=

{s+=a[0][j];

s+=a[M-1][j];}

for(i=1;i<=M-2;i++=

{s+=a[i][0];

s+=a[i][N-1];}

returns;)

19.编写程序,实现矩阵(3行3列)的转置(即行列互换)。

voidfun(intarray[3][3])

{inti,j,temp;

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

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

{temp=array[i][j];

array[i][j]=array[j][i];

array[j][i]=temp;}

20.请编写一个函数voidfun(inttt[m][n],intpp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。

二维数组中的数已在主函数中赋予。

voidfun(inttt[M][N],intpp[N])

{inti,j,min;

for(j=0;j

{min=tt[0][j];

for(i=0;i

{if(tt[i][j]<min)

min=tt[i][j];}

pp[j]=min;

21.已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入a结构体数组中。

请编写函数fun,该函数的功能是:

找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。

voidfun(stua[],stu*s)

{inti;

*s=a[0];

for(i=1;i

if(a[i].s>(*s).s)

*s=a[i];}

22.已知学生的记录由学号和学习成绩构成,n名学生的数据已存入a结构体数组中。

编写函数fun,该函数的功能:

找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

voidfun(stua[],stu*s)

{inti;

*s=a[0];

for(i=0;i

if(a[i].s<(*s).s)

*s=a[i];}

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

请编写函数fun,它的功能是:

求出该学生的平均分放在记录的ave成员中。

请自己定义正确的形参。

voidfun(STREC*a)

{inti;

for(i=0;i

a->ave+=a->s[i]/N;}

24.学生的记录由学号和成绩组称个,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

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

{inti;

doubleave=0;

*n=0;

for(i=0;i

ave+=a[i].s/N;

for(i=0;i

if(ave>a[i].s)

b[(*n)++]=a[i];

returnave;}

25.n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

请编写函数fun,它的功能是:

求出平均分,由函数值返回。

doublefun(STREC*h)

{

STREC*p=h->next;

doubleave=0;

while(p)

{ave+=p->s;

p=p->next;}

returnave/N;}

26.学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:

把分数最高的学生数据放在b所指的数组中,注意:

分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

intfun(STREC*a,STREC*b)

{

inti,j=0,max=a[0].s;

for(i=1;i

if(max

max=a[i].s;

for(i=0;i

if(max==a[i].s)

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

returnj;}

27.学生的记录时由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:

函数返回指定学号的学生数据,指定的学号在主函数中输入。

若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数时strcmp)。

STRECfun(STREC*a,char*b)

{inti;

STRECt={'\0',-1};

for(i=0;i

if(strcmp(a[i].num,b)==0)

returna[i];

returnt;}

28.请编写函数fun,其功能是:

将s所指字符串中下标位偶数同时ascii值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。

voidfun(char*s,chart[])

{inti,j=0;

for(i=0;s[i];i++)

if(!

(i%2==0&&s[i]%2==1))

t[j++]=s[i];

t[j]=0;}

29.请编写函数fun,其功能是:

将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。

voidfun(char*s,chart[])

{

inti,j=0;

for(i=0;s[i];i++)

if(s[i]%2)

t[j++]=s[i];

t[j]=0;}

30.请编写一个函数,用来删除字符串中的所有空格。

voidfun(char*str)

{inti,j=0;

for(i=0;str[i];i++)

if(str[i]!

=’’)

str[j++]=str[i];

str[j]=0;}

31.规定输入字符串中只包含字母和*号。

请编写函数fun,它的功能是:

将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。

voidfun(char*a)

{char*p=a;

inti=0;

while(*p=='*')

p++;

while(*p)

{

a[i++]=*p;

p++;

}

a[i]=0;}

32.假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

删除字符串中所有*号。

在编写函数时,不得使用c语言提供的字符串函数。

voidfun(char*a)

{char*p=a;

inti=0;

while(*p)

{

if(*p!

='*')

a[i++]=*p;

p++;

}

a[i]=0;}

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

除了字符串前导和尾部的*号之外,将串中其他*号全部删除。

形参h已指向字符串第一个字符,形参p已指向字符串中最后一个字母。

在编写程序时,不得使用c语言提供的字符串函数。

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

{inti=0;

char*q=a;

while(q

a[i++]=*q++;

while(q

{

if(*q!

='*')

a[i++]=*q;

q++;

}

while(*q)

a[i++]=*q++;

a[i]=0;}

34.假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

使字符串的尾部*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做。

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

voidfun(char*a,intn)

{

intk;

char*p=a,*q;

while(*p)

p++;

q=p--;

while(*p=='*')

p--;

k=q-p;

if(k>n)

*(p+n+1)=0;

}

35.假定输入的字符串中只包含字母和*号。

请编写函数fun,它的功能是:

除了尾部的*号之外,将字母串中其他*号全部删除。

形参p已指向字符串中最后的一个字母。

不使用c的字符串函数。

voidfun(char*a,char*p)

{

char*h=a;

inti=0;

while(h<=p)

{

if(*h!

='*')

a[i++]=*h;

h++;

}

while(*p)

a[i++]=*p++;

a[i]=0;

}

36.请编写函数fun,函数的功能是:

移动字符串中的内容,移动的规则如下:

把第一到第m个字符,平移到字符串的最后,把第m+1到最后的字符移动到字符串的前部。

例如,字符串中原有的内容:

ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该为:

DEFGHIJKABC。

voidfun(char*w,intm)/*可调用fun1函数左移字符*/

{

inti;

for(i=1;i<=m;i++)

fun1(w);

}

37.请编写函数fun,该函数的功能是:

将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

voidfun(chara[M][N],char*b)

{

inti,j,k=0;

for(i=0;i

for(j=0;j

if(a[i][j])

b[k++]=a[i][j];

b[k]=0;

}

38.请编写函数fun,该函数的功能是:

移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

voidfun(int*w,intp,intn)

{

intb[N],i,j=0;

for(i=0;i

b[i]=w[i];

for(i=p+1;i

w[j++]=b[i];

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

w[j++]=b[i];

}

39.请编写函数fun:

计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。

doublefun(doublex[9])

{

doublesum=0.0;

inti;

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

sum+=sqrt((x[i]+x[i+1])/2.0);

returnsum;

}

40.请编写函数fun,该函数的功能是:

删去一维数组中所有相同的数,使之只剩一个。

数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

intfun(inta[],intn)

{

inti,j=0;

for(i=0;i

if(a[i]!

=a[i+1])

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

returnj;

}

41.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

intfun(char*str,char*substr)

{inti,n=0;

for(i=0;i

if((str[i]==substr[0])&&(str[i+1]==substr[1]))

n++;

returnn;}

42.编写函数fun:

从字符中删除指定的字符,同一字母的大、小写按不同字符处理。

voidfun(chars[],intc)

{inti=0;

char*p=s;

while(*p)

{if(*p!

=c)

s[i++]=*p;

p++;}

s[i]=‘\0’;}

43.请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。

voidfun(char*s,intnum)

{chart;

inti,j;

for(i=1;i<num-2;i++)

for(j=i+1;j<num-1;j++)

if(s[i]<s[j])

{t=s[i];s[i]=s[j];s[j]=t;}}

44.请编写一个函数fun(char*s),该函数的功能使把字符串中的内容逆置。

voidfun(char*s)

{charch;

inti=0,m=strlen(s)-1;

while(i

{ch=s[i];

s[i]=s[m];

s[m]=ch;

i++;m--;}}

45.请编写函数fun,该函数的功能是:

判断字符串是否为回文?

若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。

回文是指顺读和倒读都是一样的字符串。

intfun(char*str)

{inti,n=strlen(str),fg=1;

for(i=0;i

if(str[i]==str[n-1-i]);

else{fg=0;break;}

returnfg;}

46.请编写函数fun,计算并输出给定10个数的方差。

doublefun(doublex[10])

{inti,j;

doubles=0.0,s1=0.0;

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

s1+=x/10;

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

s+=(x[j]-s1)*(x[j]-s1);

s/=10;

returnpow(s,0.5);}

47.编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

char*fun(char(*a)[81],intnum)

{inti;

char*max=a[0];

for(i=1;i

if(strlen(max)<strlen(a[i]))max=a[i];

returnmax;}

48.请编写函数fun,该函数的功能是:

统一一含字符串中单词的个数,作为函数值返回。

一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。

intfun(char*s)

{inti,n=0;

for(i=0;i

{if(s=‘a’&s<=‘z’&s[i+1]==‘’‖s[i+1]==‘\0’)

n++;}

returnn;=

49.请编写函数fun,该函数的功能使:

统计各年龄段的人数。

N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁的人数放在d[2]中,其余以此类推,把100岁(含100以上年龄的人数都放在d[10]中。

结果在主函数中输出。

voidfun(int*a,i

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2