C语言编程题及答案Word格式文档下载.docx

上传人:b****6 文档编号:8327287 上传时间:2023-05-11 格式:DOCX 页数:98 大小:89.96KB
下载 相关 举报
C语言编程题及答案Word格式文档下载.docx_第1页
第1页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第2页
第2页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第3页
第3页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第4页
第4页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第5页
第5页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第6页
第6页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第7页
第7页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第8页
第8页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第9页
第9页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第10页
第10页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第11页
第11页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第12页
第12页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第13页
第13页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第14页
第14页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第15页
第15页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第16页
第16页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第17页
第17页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第18页
第18页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第19页
第19页 / 共98页
C语言编程题及答案Word格式文档下载.docx_第20页
第20页 / 共98页
亲,该文档总共98页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言编程题及答案Word格式文档下载.docx

《C语言编程题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言编程题及答案Word格式文档下载.docx(98页珍藏版)》请在冰点文库上搜索。

C语言编程题及答案Word格式文档下载.docx

编写函数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=cos(x0);

while(fabs(x0-x1)>

=1e-6);

returnx1;

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

将字符串中的前导*号全部移到字符串的尾部。

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

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

inti=0,n=0;

char*p;

p=a;

while(*p==′*′)/*判断*p是否是*号,并统计*号的个数*/

while(*p)/*将前导*号后的字符传递给a*/

while(n!

=0)

a[i]=′*′;

n--;

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

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

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

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

21编写函数fun,其功能是计算:

s作为函数值返回。

在C语言中可调用log(n)函数求ln(n)。

log函数的引用说明为:

doublelog(doublex)。

例如,若m的值为20,则fun函数值为6.506583。

doublefun(intm)

doubles=0.0;

=m;

 s=s+log(i);

  /*计算s=ln

(1)+ln

(2)+ln(3)+…+ln(m)*/

returnsqrt(s);

 /*对s求平方根并返回*/

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

只删除字符前导和尾部的*号,串中字母间的*号都不删除。

形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中尾部*号的个数。

A*BC*DEF*G。

voidfun(char*a,intn,inth,inte)

for(i=h;

n-e;

i++)  /*第一个字母和最后一个字母之间的字符全不删除*/

/*在字符串最后加上结束标识*/

23函数fun的功能是:

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

例如,当s所指字符串中的内容为"

ABCDEFGHIJK"

时,在t所指数组中的内容应是:

"

BDFHJ"

voidfun(char*s,chart[])

inti,j=0,k=strlen(s);

  /*k为字符串的长度*/

k;

i=i+2)  /*将s所指字符串中下标为奇数的字符存入t所指字符串中*/

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

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

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

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

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

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

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

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

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

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

voidfun(char*a,char*p)

char*t=a;

t<

=p;

t++)

if(*t!

   *(a++)=*t;

  /*将p以前所有不是*号的字符保留下来*/

*t!

*(a++)=*t;

  /*将p以后的所有*号保留下来*/

*a=′\0′;

  /*在字符串最后加上字符串结束标识*/

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

按分数降序排列学生的记录,高分在前,低分在后。

voidfun(STRECa[])

STRECt;

i++)  /*用冒泡法进行排序,进行N-1次比较*/

 for(j=0;

N-1;

j++)  /*在每一次比较中要进行N-1次两两比较*/

if(a[j].s<

a[j+1].s)

{t=a[j];

a[j]=a[j+1];

a[j+1]=t;

/*按分数的高低排列学生的记录,高分在前*/

27学生的记录由学号和成绩组成。

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

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

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

*n=0;

av=av+a[i].s;

av=av/N;

  /*求平均值*/

i++)

if(av<

=a[i].s)

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

*n=*n+1;

/*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/

returnav;

  /*返回平均分*/

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

将1到m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。

例如,若传给m的值为50,则程序输出:

7 11 14 21 22 28 33 35 42 44 49

voidfun(intm,int*a,int*n)

if(i%7==0||i%11==0)  /*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/

   a[j++]=i;

  /*返回这些数的个数*/

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

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

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

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

voidfun(char*a)

while(*p==′*′)

 p++;

 /*指针p指向字符串第一个字母*/

*p!

p++,a++)

*a=*p;

  /*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/

/*在字符串最后加上字符串结束标识*/

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

找出学生的最高分,并由函数值返回。

doublemax=h->

while(h!

=NULL)  /*通过循环找到最高分数*/

{ if(max<

h->

s)max=h->

 h=h->

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

找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。

数组元素中的值已在主函数中赋予。

主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

voidfun(inta[],intn,int*max,int*d)

*max=a[0];

*d=0;

i++)  /*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/

 if(*max<

a[i])

 {*max=a[i];

*d=i;

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

将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若s所指字符串的内容为:

ABCDEFG12345"

,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;

而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。

最后t所指数组中的内容应为:

135"

{

inti,j=0,n;

n=strlen(s);

if(i%2!

=0&

s[i]%2!

 t[j]=s[i];

  /*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/

 j++;

t[j]=′\0′;

  /*最后加上结束标识符*/

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

实现B=A+A'

,即将矩阵A加上A的转置,存放在矩阵B中。

计算结果在main函数中输出。

例如,输入下面的矩阵:

其转置矩阵为:

    

2  6 10

6 10 14

10 14 18

voidfun(inta[3][3],intb[3][3])

3;

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

/*把矩阵a加上a的转置,存放在矩阵b中*/

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

统计各年龄段的人数。

N个年龄通过调用随机函数获得,并放入主函数的age数组中。

要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,依此类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。

结果在主函数中输出。

voidfun(int*a,int*b)

 b[j]=0;

  /*数组b初始化为0]+)

 if(a[i]>

=100)

b[10]++;

  /*如果年龄大于等于100,b[10]自增1]+;

  /*如果年龄小于100,则将其分别统计到b[a[i]/10]中*/

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

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

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

intfun(STREC*a,STREC*b)

inti,j=0,n=0,min;

min=a[0].

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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