wljy二级c语言程序设计.docx

上传人:b****4 文档编号:12254970 上传时间:2023-04-17 格式:DOCX 页数:64 大小:82.72KB
下载 相关 举报
wljy二级c语言程序设计.docx_第1页
第1页 / 共64页
wljy二级c语言程序设计.docx_第2页
第2页 / 共64页
wljy二级c语言程序设计.docx_第3页
第3页 / 共64页
wljy二级c语言程序设计.docx_第4页
第4页 / 共64页
wljy二级c语言程序设计.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

wljy二级c语言程序设计.docx

《wljy二级c语言程序设计.docx》由会员分享,可在线阅读,更多相关《wljy二级c语言程序设计.docx(64页珍藏版)》请在冰豆网上搜索。

wljy二级c语言程序设计.docx

wljy二级c语言程序设计

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

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

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

FirstString--

SecondString

程序输出:

FirstString--SecondString

voidfun(charp1[],charp2[])

{

inti,j;

for(i=0;p1[i]!

='\0';i++);

for(j=0;p2[j]!

='\0';j++)

p1[i++]=p2[j];

p1[i]='\0';

}

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

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

例如,学生的成绩是:

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

voidfun(STREC*a)

{

doubleave=0.0;

inti;

for(i=0;i

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

a->ave/=N;

}

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

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

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

例如,若学生的成绩是:

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

78.625。

doublefun(STREC*h)

{

doubleave=0.0;

STREC*p=h->next;

while(p!

=NULL)

{ave=ave+p->s;

p=p->next;

}

returnave/N;

}

4.编写函数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;/*返回非素数的个数*/

}

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

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

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

intfun(char*ss,charc)

{

inti=0;

for(;*ss!

='\0';ss++)

if(*ss==c)

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

returni;

}

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

请编写函数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';

}

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

请编写函数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';/*在字符串最后加上结束标志符*/

}

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

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

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

intfun(STREC*a,STREC*b)

{

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

for(i=0;i

if(min>a[i].s)

min=a[i].s;/*找出最小值*/

for(i=0;i

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

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

returnj;

}

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

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

合并的方式是:

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

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

voidfun(inta,intb,long*c)

{

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

}

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

编写函数fun,其功能是:

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

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

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

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

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

voidfun(char*a)

{

char*p=a;

while(*p=='*')p++;/*指针p指向字符串第一个字母*/

for(;*p!

='\0';p++,a++)

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

*a='\0';/*在字符串最后加上字符串结束标识*/

}

11.函数fun的功能是:

将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。

例如,若s所指字符串中的内容为"ABCDEFG123456",其中字符A的ASCII码值为奇数,因此应当删除;字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。

最后t所指的数组中的内容应是"246"。

voidfun(char*s,chart[])

{

inti,j=0;

for(i=0;s[i]!

='\0';i++)

if(i%2==0&&s[i]%2==0)/*将s所指字符串中下标和ASCII码值都为偶数的字符放入数组t中*/

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

t[j]='\0';/*在字符串最后加上结束标识*/

}

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

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

迭代步骤如下:

(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。

doublefun()

{

doublex0,x1;

x1=0.0;

do

{

x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>=1e-6);

returnx1;

}

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

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

voidfun(STRECa[])

{

inti,j;

STRECt;

for(i=1;i

for(j=0;j

if(a[j].s

{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分数的高低排列学生的记录,高分在前*/

}

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

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

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

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

{

inti;

doubleav=0.0;

*n=0;

for(i=0;i

av=av+a[i].s;

av=av/N;/*求平均值*/

for(i=0;i

if(av<=a[i].s)

{b[*n]=a[i];*n=*n+1;}/*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/

returnav;/*返回平均分*/

}

15.请编写函数fun,函数的功能是查找x在s所指数组中下标的位置,并作为函数值返回,若x不存在,则返回-1。

intfun(int*s,intx)

{inti;

for(i=0;i

if(x==s[i])returni;

return-1;

}

16.请编写函数fun,其功能是将形参s所指字符串放入形参a所指的字符数组中,使a中存放同样的字符串。

说明:

不得使用系统提供的字符串函数。

voidfun(char*a,char*s)

{while(*s!

='\0')

{*a=*s;

a++;

s++;

}

*a='\0';

}

 

17.请编函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。

可调用strlen函数求字符串的长度。

例如:

在键盘输入字符串2345210,函数返回长整型数2345210。

longfun(char*s)

{

inti,sum=0,len;

len=strlen(s);

for(i=0;i

{

sum=sum*10+*s-48;

s++;

}

returnsum;

}

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

将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。

函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。

例如,若输入9.98.57.68.59.39.58.97.88.68.4十个得分,则输出结果为:

8.687500。

doublefun(doublea[],intn)

{

doublesum=0,max,min;inti;

max=min=a[0];

for(i=0;i

{

sum=sum+a[i];

if(max

if(min>a[i])min=a[i];

}

sum=sum-max-min;

return(sum/(n-2));

}

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

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

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

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

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

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

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

voidfun(char*a)

{

inti=0,n=0;

char*p;

p=a;

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

{

n++;p++;

}

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

{

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

}

while(n!

=0)

{

a[i]='*';i++;n--;

}

a[i]='\0';

}

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

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

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

intfun(STREC*a,STREC*b)

{

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

for(i=0;i

if(min>a[i].s)

min=a[i].s;/*找出最小值*/

for(i=0;i

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

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

returnj;

}

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

s作为函数值返回。

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

log函数的引用说明为:

doublelog(doublex)。

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

doublefun(intm)

{

inti;

doubles=0.0;

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

s=s+log(i);/*计算s=ln

(1)+ln

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

returnsqrt(s);/*对s求平方根并返回*/

}

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

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

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

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

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

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

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

"A*BC*DEF*G"。

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

{

inti,j=0;

for(i=h;i

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

a[j]='\0';/*在字符串最后加上结束标识*/

}

23.函数fun的功能是:

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

例如,当s所指字符串中的内容为"ABCDEFGHIJK"时,在t所指数组中的内容应是:

"BDFHJ"。

voidfun(char*s,chart[])

{

inti,j=0,k=strlen(s);/*k为字符串的长度*/

for(i=1;i

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

t[j]='\0';}

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

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

合并的方式是:

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

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

voidfun(inta,intb,long*c)

{

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

}

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

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

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

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

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

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

voidfun(char*a,char*p)

{

char*t=a;

for(;t<=p;t++)

if(*t!

='*')

*(a++)=*t;

for(;*t!

='\0';t++)

*(a++)=*t;

*a='\0';

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

}

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

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

voidfun(STRECa[])

{

inti,j;

STRECt;

for(i=1;i

for(j=0;j

if(a[j].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)

{

inti;

doubleav=0.0;

*n=0;

for(i=0;i

av=av+a[i].s;

av=av/N;/*求平均值*/

for(i=0;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)

{

inti,j=0;

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

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

a[j++]=i;

*n=j;/*返回这些数的个数*/

}

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

编写函数fun,其功能是:

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

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

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

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

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

voidfun(char*a)

{

char*p=a;

while(*p=='*')p++;/*指针p指向字符串第一个字母*/

for(;*p!

='\0';p++,a++)

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

*a='\0';/*在字符串最后加上字符串结束标识*/

}

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

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

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

doublefun(STREC*h)

{

doublemax=h->s;

while(h!

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

{if(maxs)max=h->s;

h=h->next;

}

returnmax;

}

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

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

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

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

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

{

inti;

*max=a[0];

*d=0;

for(i=0;i

if(*max

{*max=a[i];*d=i;}

}

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

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

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

"ABCDEFG12345",其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。

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

"135"。

voidfun(char*s,chart[])

{

inti,j=0,n;

n=strlen(s);

for(i=0;i

if(i%2!

=0&&s[i]%2!

=0)

{t[j]=s[i];/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/

j++;

}

t[j]='\0';/*最后加上结束标识符*/

}

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

实现B=A+A',即将矩阵A加上A的转置,存放在矩阵B中。

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

例如,输入下面的矩阵:

其转置矩阵为:

    

程序输出:

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

{

inti,j;

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

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

b[i][j]=a[i][j]+a[j][i];/*把矩阵a加上a的转置,存放在矩阵b中*/

}

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

将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

一维数组中数据的个数存放在形参n所指的存储单元中。

例如,若二维数组中的数据为

33333333

44444444

55555555

则一维数组中的内容应是:

334455334455334455334455

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

{

inti,j;

for(j=0;j

for(i=0;i

{

b[*n]=

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

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

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

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