C语言编程题及答案 2Word格式.docx
《C语言编程题及答案 2Word格式.docx》由会员分享,可在线阅读,更多相关《C语言编程题及答案 2Word格式.docx(98页珍藏版)》请在冰豆网上搜索。
=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;
=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)
a[i]!
=′\0′;
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;
p1[i]!
i++);
/*求出的i为p1字符串的总长度,包括结束标记符*/
p2[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;
N;
ave=a->
ave+a->
s[i];
/*求各门成绩的总和*/
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->
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;
m;
i++) /*找出大于1小于整数m的非素数*/
{ for(j=2;
i;
if(i%j==0)break;
if(j<
i)xx[n++]=i;
*k=n;
/*返回非素数的个数*/
9编写函数fun,其功能是:
求ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符为1,则输出3。
intfun(char*ss,charc)
inti=0;
for(;
*ss!
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;
n;
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;
if(max<
a[i].s)max=a[i].s;
/*找出最大值*/
if(max==a[i].s)b[j++]=a[i];
/*找出成绩与max相等的学生的记录,存入结构体b中*/
returnj;
/*返回最高成绩的学生人数*/
12规定输入的字符串中只包含字母和*号。
除了字符串前导的*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
char*p=a;
while(*p&
*p==′*′)
a[i]=*p;
p++;
while(*p)
if(*p!
=′*′)
{
a[i]=*p;
a[i]=′\0′;
13编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'
a'
到'
z'
26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
voidfun(char*tt,intpp[])
26;
pp[i]=0;
/*初始化pp数组各元素为0]=′\0′;
tt++)
if(*tt>
=′a′&
*tt<
=′z′)
pp[*tt-′a′]++;
14规定输入的字符串中只包含字母和*号。
将字符串尾部的*号全部删除,前面和中间的*号不动。
****A*BC*DEF*G。
voidfun(char*a);
while(*a!
=′\0′)
a++;
a--;
/*指针a指向字符串的尾部*/
while(*a==′*′)
/*指针a指向最后一个字母*/
*(a+1)=′\0′;
/*在字符串最后加上结束标志符*/
15编写函数fun,其功能是:
比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符长度相同,则返回第一个字符串。
例如,输入beijing<
CR>
shanghai<
(<
为回车键),函数将返回shanghai。
char*fun(char*s,char*t)
s[i]!
=′\0′;
/*求字符串的长度*/
t[j]!
j++);
if(i>
=j) /*比较两个字符串的长度*/
returns;
/*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/
else
returnt;
16学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
STRECfun(STREC*a,char*b)
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