C语言编程题及答案 2.docx

上传人:b****4 文档编号:3136320 上传时间:2022-11-17 格式:DOCX 页数:98 大小:89.50KB
下载 相关 举报
C语言编程题及答案 2.docx_第1页
第1页 / 共98页
C语言编程题及答案 2.docx_第2页
第2页 / 共98页
C语言编程题及答案 2.docx_第3页
第3页 / 共98页
C语言编程题及答案 2.docx_第4页
第4页 / 共98页
C语言编程题及答案 2.docx_第5页
第5页 / 共98页
点击查看更多>>
下载资源
资源描述

C语言编程题及答案 2.docx

《C语言编程题及答案 2.docx》由会员分享,可在线阅读,更多相关《C语言编程题及答案 2.docx(98页珍藏版)》请在冰豆网上搜索。

C语言编程题及答案 2.docx

C语言编程题及答案2

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

找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。

intfun(inta[][M])

{

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

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

for(j=0;j

   if(max

    max=a[i][j];

returnmax;

}

2编写函数fun,其功能是:

根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。

程序运行后,若输入精度0.0005,则程序应输出为3.14…。

doublefun(doubleeps)

{

doubles=1.0,s1=1.0;

intn=1;

while(s1>=eps)  /*当某项大于精度要求时,继续求下一项*/

{ s1=s1]s=s+s1;  /*求和*/

n++;

}

return2] 

3编写函数fun,其功能是:

求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。

voidfun(int*a,int*n)

{

inti,j=0;

for(i=1;i<=1000;i++)/*求1到1000之内能被7或11整除但不能同时被7和11整除的所有整数,并放入数组a中*/

if((i%7==0||i%11==0)&&i%77!

=0)

a[j++]=i;

*n=j;  /*传回满足条件的数的个数*/

}

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

编写函数fun,其功能是:

删除字符串中所有的*号。

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

例如,字符串中的内容为:

****A*BC*DEF*G*******,删除后字符串中的内容应当是:

ABCDEFG。

voidfun(char*a)

{

inti,j=0;

for(i=0;a[i]!

=′\0′;i++)

 if(a[i]!

=′*′)

a[j++]=a[i];  /*若不是要删除的字符′*′则留下*/

a[j]=′\0′;  /*最后加上字符串结束符′\0′*/

}

5编写函数fun,其功能是:

实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。

例如,分别输入下面两个字符串:

FirstString--

SecondString

程序输出:

FirstString--SecondString

voidfun(charp1[],charp2[])

{

inti,j;

for(i=0;p1[i]!

=′\0′;i++);/*求出的i为p1字符串的总长度,包括结束标记符*/

for(j=0;p2[j]!

=′\0′;j++)

p1[i++]=p2[j];  /*将p2字符串连在p1字符串后面*/

p1[i]=′\0′;  /*在字符串最后加上结束标记符*/

}

6某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:

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

例如,学生的成绩是:

85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。

voidfun(STREC*a)

{

inti;

a->ave=0.0;

for(i=0;i

a->ave=a->ave+a->s[i];

/*求各门成绩的总和*/

a->ave=a->ave/N;  /*求平均分*/

}

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

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

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

例如,若学生的成绩是:

85 76 69 85 91 72 64 87,则平均分应当是:

78.625。

doublefun(STREC*h)

{

doubleav=0.0;

STREC*p=h->next;  /*p直接指向"头结点"的下一个结点,即第一个成绩*/

while(p!

=NULL)

{ av=av+p->s;  /*求总分数*/

p=p->next;

}

returnav/N;  /*返回平均值*/

}

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

将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。

例如,若输入17,则应输出:

4 6 8 9 10 12 14 15 16。

voidfun(intm,int*k,intxx[])

{

inti,j,n=0;

for(i=4;i

{ for(j=2;j

   if(i%j==0)break;

if(j

}

*k=n;  /*返回非素数的个数*/

}

9编写函数fun,其功能是:

求ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符为1,则输出3。

intfun(char*ss,charc)

{

inti=0;

for(;*ss!

=′\0′;ss++)

if(*ss==c)

i++;  /*求出ss所指字符串中指定字符的个数*/

returni;

}

10编写函数fun,其功能是:

计算n门课程的平均分,结果作为函数值返回。

例如:

若有5门课程的成绩是:

90.5,72,80,61.5,55,则函数的值为:

71.80。

floatfun(float*a,intn)

{

floatav=0.0;

inti;

for(i=0;i

av=av+a[i];

return(av/n);/*返回平均值*/

}

11学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:

把分数最高的学生数据放在b所指的数组中。

注意:

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

intfun(STREC*a,STREC*b)

{

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

for(i=0;i

if(max

/*找出最大值*/

for(i=0;i

if(max==a[i].s)b[j++]=a[i];  /*找出成绩与max相等的学生的记录,存入结构体b中*/

returnj; /*返回最高成绩的学生人数*/

}

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

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

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

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

例如,字符串中的内容为:

****A*BC*DEF*G*******,删除后,字符串中的内容应当是:

****ABCDEFG。

voidfun(char*a)

{

inti=0;

char*p=a;

while(*p&&*p==′*′)

{

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

}

while(*p)

{

if(*p!

=′*′)

    {

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

}

p++;

}

a[i]=′\0′;

}

13编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。

例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:

33322110000000000000000000

voidfun(char*tt,intpp[])

{

inti;

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

 pp[i]=0;  /*初始化pp数组各元素为0]=′\0′;tt++)

if(*tt>=′a′&&*tt<=′z′)

   pp[*tt-′a′]++;

}

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

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

将字符串尾部的*号全部删除,前面和中间的*号不动。

例如,字符串中的内容为:

****A*BC*DEF*G*******,删除后,字符串中的内容应当是:

****A*BC*DEF*G。

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

voidfun(char*a);

{

while(*a!

=′\0′)

a++;

a--; /*指针a指向字符串的尾部*/

while(*a==′*′)

a--; /*指针a指向最后一个字母*/

*(a+1)=′\0′;/*在字符串最后加上结束标志符*/

}

15编写函数fun,其功能是:

比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。

若两个字符长度相同,则返回第一个字符串。

例如,输入beijingshanghai为回车键),函数将返回shanghai。

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

{

inti,j;

for(i=0;s[i]!

=′\0′;i++);/*求字符串的长度*/

for(j=0;t[j]!

=′\0′;j++);

if(i>=j) /*比较两个字符串的长度*/

returns;  /*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/

else

returnt;

}

16学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:

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

若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。

(用于字符串比较的函数是strcmp)。

STRECfun(STREC*a,char*b)

{

inti;

STRECstr={"\0",-1};  /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1]+)

 if(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/

str=a[i];

returnstr;  /*返回学生记录*/

}

17编写函数fun,其功能是:

将两个两位数的正整数a、b合并成一个整数放在c中。

合并的方式是:

将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。

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

voidfun(inta,intb,long*c)

{

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

}

18编写函数fun,其功能是:

利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。

xn+1=cos(xn)

迭代步骤如下:

(1)取x1初值为0.0;

(2)x0=x1,将x1的值赋给x0;

(3)x1=cos(x0),求出一个新的x1;

(4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚

(2);

(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出结果Root=0.739086。

floatfun()

{

floatx1=0.0,x0;

do

{

x0=x1;

x1=c

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

当前位置:首页 > 农林牧渔 > 林学

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

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