二级C语言程序设计题Word格式文档下载.docx
- 文档编号:4440833
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:21
- 大小:44.52KB
二级C语言程序设计题Word格式文档下载.docx
《二级C语言程序设计题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《二级C语言程序设计题Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。
删除字符串中所有的*号。
编写函数时,不得使用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'
;
规定输入的字符串中只包含字母和*号。
将字符串中的前导*号全部删除,中间和尾部的*号不删除。
例如,字符串中的内容为:
"*******A*BC*DEF*G****"
删除后字符串中的内容应当是:
"
A*BC*DEF*G****"
。
编写函数时,不得使用C语言提供的字符串函数。
void fun( char*a)
char*p=a;
while(*p=='
) p++;
/*指针p指向字符串第一个字母*/
for(;
*p!
p++,a++)
*a=*p;
/*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/
*a='
/*在字符串最后加上字符串结束标识*/
假定输入的字符串中只包含字母和*号。
请编写函数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='
/*在字符串最后加上字符串结束标识*/
请编写函数fun,其功能是:
只删除字符前导和尾部的*号,串中字母间的*号都不删除。
形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中尾部*号的个数。
****A*BC*DEF*G*******",删除后,字符串中的内容应当是:
A*BC*DEF*G"。
void fun(char*a, intn,inth,inte)
int i,j=0;
for(i=h;
i<n-e;
i++)/*第一个字母和最后一个字母之间的字符全不删除*/
a[j++]=a[i];
a[j]='
/*在字符串最后加上结束标识*/
请编写函数fun,其功能是:
除了字符串前导的*号之外,将串中其它*号全部删除。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
voidfun(char*a)
{
int i=0;
char *p=a;
while(*p&
&*p=='
)
{
a[i]=*p;
ﻩi++;
p++;
}
while(*p)
{
if(*p!
ﻩ{a[i]=*p;
i++;
p++;
a[i]='
请编写函数fun,其功能是:
将字符串尾部的*号全部删除,前面和中间的*号不动。
****A*BC*DEF*G*******"
,删除后,字符串中的内容应当是:
****A*BC*DEF*G"
在编写函数时,不得使用C语言提供的字符串函数。
void fun(char*a )
while(*a!
\0'
a++;
a--;
/*指针a指向字符串的尾部*/
while(*a=='*'
a--;
/*指针a指向最后一个字母*/
*(a+1)='
/*在字符串最后加上结束标志符*/
请编写函数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]='
编写函数fun,其功能是:
实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirstString--SecondString
voidfun(charp1[],char p2[])
inti,j;
for(i=0;
p1[i]!
i++) ;
for(j=0;
p2[j]!
='\0';
j++)
p1[i++]=p2[j];
p1[i]='
某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:
求出该学生的平均分,并放入记录的ave成员中。
例如,学生的成绩是:
85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。
void fun(STREC*a)
inti;
a->
ave=0.0;
for(i=0;
i<N;
a->
ave=a->
ave+a->
s[i];
/*求各门成绩的总和*/
a->
ave/=N;
/*求平均分*/
N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。
请编写函数fun,其功能是:
求出平均分,并由函数值返回。
例如,若学生的成绩是:
8576 69 8591726487,则平均分应当是:
78.625。
double fun(STREC*h )
doubleave=0.0;
STREC*p=h->
next;
while(p!
=NULL)
{ ave=ave+p->s;
p=p->
next;
returnave/N;
编写函数fun,其功能是:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。
例如,若输入17,则应输出:
468 91012141516。
voidfun(intm,int*k,intxx[] )
inti,j,n=0;
ﻩfor(i=4;
m;
i++) /*找出大于1小于整数m的非素数*/
ﻩ{ for(j=2;
j<i;
j++)
ﻩ if(i%j==0)break;
if(j<i)xx[n++]=i;
}
*k=n;
/*返回非素数的个数*/
编写函数fun,其功能是:
求ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符为1,则输出3。
intfun(char*ss,charc)
int i=0;
for(;
*ss!
\0';
ss++)
if(*ss==c)
i++;
/*求出ss所指字符串中指定字符的个数*/
returni;
编写函数fun,其功能是:
计算n门课程的平均分,结果作为函数值返回。
例如:
若有5门课程的成绩是:
90.5,72,80,61.5,55,则函数的值为:
71.80。
floatfun (float*a,intn)
inti;
floatav=0.0;
for(i=0;
i<n;
i++) /*求分数的总和*/
av=av+a[i];
return(av/n);
/*返回平均值*/
学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
把分数最高的学生数据放在b所指的数组中。
注意:
分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
intfun(STREC*a,STREC*b)
int i,j=0,max=a[0].s;
/*找出最大值*/
for(i=0;
i<N;
if(max<
a[i].s) max=a[i].s;
for(i=0;
N;
i++)
if(max==a[i].s)
b[j++]=a[i];
/*找出成绩与max相等的学生的记录,存入结构体b中*/
returnj;
/*返回最高成绩的学生人数*/
编写函数void fun(char *tt,intpp[]),统计在tt所指的字符串中'
a'
到'
z'
26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
333 22 1100 000000 000 000000 0 0
voidfun(char*tt,intpp[])
int i;
for(i=0;
26;
i++)
pp[i]=0;
/*初始化pp数组各元素为0*/
for(;
*tt!
='\0';
tt++)
if(*tt>
a'
*tt<
z')
pp[*tt-'
]++;
比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符长度相同,则返回第一个字符串。
例如,输入beijing<
CR>
shanghai<
(<
CR>为回车键),函数将返回shanghai。
char*fun(char*s, char*t)
inti,j;
for(i=0;
s[i]!
='
i++);
/*求字符串的长度*/
for(j=0;
t[j]!
j++);
if(i<=j) /*比较两个字符串的长度*/
returnt;
/*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/
else
returns;
学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
STRECfun(STREC*a, char*b)
{inti;
STRECstr={"
\0"
-1};
/*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/
i<N;
if(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/
str=a[i];
returnstr;
/*返回学生记录*/
函数fun的功能是:
将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;
字符串中剩余字符所形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为"
ABCDEFG123456"
,其中字符A的ASCII码值为奇数,因此应当删除;
字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;
字符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是"
246"。
voidfun(char*s,chart[])
inti,j=0;
s[i]!
\0';
if(i%2==0&
s[i]%2==0)/*将s所指字符串中下标和ASCII码值都为偶数的字符放入数组t中*/
t[j++]=s[i];
t[j]='
/*在字符串最后加上结束标识*/
编写函数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。
double fun()
doublex0,x1;
x1=0.0;
do
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>
=1e-6);
return x1;
学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:
把分数最低的学生数据放入b所指的数组中,注意:
分数最低的学生可能不止一个,函数返回分数最低的学生人数。
int fun(STREC *a,STREC *b)
inti,j=0,min=a[0].s;
if(min>
a[i].s)
min=a[i].s;
/*找出最小值*/
for(i=0;
if(min==a[i].s)
b[j++]=a[i];
/*找出成绩与min相等的学生的记录,存入结构体b中*/
returnj;
编写函数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;
s=s+log(i);
/*计算s=ln
(1)+ln
(2)+ln(3)+…+ln(m)*/
return sqrt(s);
/*对s求平方根并返回*/
函数fun的功能是:
将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为"
ABCDEFGHIJK"
时,在t所指数组中的内容应是:
BDFHJ"
void fun(char *s,chart[])
inti,j=0,k=strlen(s);
/*k为字符串的长度*/
for(i=1;
k;
i=i+2) /*将s所指字符串中下标为奇数的字符存入t所指字符串中*/
t[j++]=s[i];
t[j]='
将a、b中的两个两位正整数合并成一个新的整数放在c中。
合并的方式是:
将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。
例如,当a=45,b=12,调用该函数后c=2415。
voidfun(inta,int b,long*c)
*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;
学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
按分数降序排列学生的记录,高分在前,低分在后。
voidfun(STREC a[] )
inti,j;
STREC t;
for(i=1;
i++) /*用冒泡法进行排序,进行N-1次比较*/
for(j=0;
j<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;
}/*按分数的高低排列学生的记录,高分在前*/
学生的记录由学号和成绩组成。
N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
double fun( STREC*a,STREC*b,int*n)
inti;
double av=0.0;
*n=0;
for(i=0;
i++)
av=av+a[i].s;
av=av/N;
/*求平均值*/
N;
i++)
if(av<
=a[i].s)
{b[*n]=a[i];
*n=*n+1;
}/*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/
returnav;
/*返回平均分*/
编写函数fun,其功能是:
将1到m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
711 14 21222833 35 424449
voidfun(int m,int*a,int*n)
inti,j=0;
for(i=1;
i<=m;
if(i%7==0||i%11==0)/*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/
a[j++]=i;
*n=j;
/*返回这些数的个数*/
N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。
找出学生的最高分,并由函数值返回。
doublefun( STREC*h)
double max=h->
s;
while(h!
=NULL) /*通过循环找到最高分数*/
{if(max<
h->
s)max=h->
s;
h=h->
next;
}
return max;
找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。
数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
voidfun(int a[],intn,int *max,int*d)
inti;
*max=a[0];
*d=0;
for(i=0;
n;
i++) /*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/
if(*max<a[i])
{*max=a[i];
*d=i;
将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;
n;
if(i%2!
=0&
&s[i]%2!
=0)
{t[j]=s[i];
/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/
j++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)