if(max==a[i].s)b[j++]=a[i];
returnj;
【编程】规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
除了字符串前导的*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
【答案】
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′;
【编程】编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
【答案】
inti;
for(i=0;i<26;i++)
pp[i]=0;
if(*tt>=′a′&&*tt<=′z′)
pp[*tt-′a′]++;
【编程】规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
将字符串尾部的*号全部删除,前面和中间的*号不动。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****A*BC*DEF*G。
在编写函数时,不得使用C语言提供的字符串函数。
【答案】
while(*a!
=′\0′)
a++;
a--;
while(*a==′*′)
a--;
*(a+1)=′\0′;
【编程】编写函数fun,其功能是:
比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符长度相同,则返回第一个字符串。
例如,输入beijingshanghai(为回车键),函数将返回shanghai。
【答案】
inti,j;
for(i=0;s[i]!
=′\0′;i++);
for(j=0;t[j]!
=′\0′;j++);
if(i>=j)
returns;
else
returnt;
【编程】学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
【答案】
inti;
STRECstr={"\0",-1};
if(strcmp(a[i].num,b)==0)
str=a[i];
returnstr;
【编程】规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
将字符串中的前导*号全部移到字符串的尾部。
例如,字符串中的内容为:
*******A*BC*DEF*G****,移动后,字符串中的内容应当是:
A*BC*DEF*G***********。
在编写函数时,不得使用C语言提供的字符串函数。
【答案】
inti=0,n=0;
char*p;
p=a;
while(*p==′*′)
{
n++;p++;
}
while(*p)
{
a[i]=*p;i++;p++;
}
while(n!
=0)
{
a[i]=′*′;i++;n--;
}
a[i]=′\0′;
编程】规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
只删除字符前导和尾部的*号,串中字母间的*号都不删除。
形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中尾部*号的个数。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“A*BC*DEF*G”。
【答案】
inti,j=0;
for(i=h;ia[j++]=a[i];
a[j]=′\0′;
【编程】假定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
除了尾部的*号之外,将字符中的其它的*号全部删除。
形参p已指向字符串中最后的一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。
【答案】
char*t=a;
for(;t<=p;t++)
if(*t!
=′*′)
*(a++)=*t;
for(;*t!
=′\0′;t++)
*(a++)=*t;
*a=′\0′;
【编程】学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
按分数降序排列学生的记录,高分在前,低分在后。
【答案】
inti,j;
STRECt;
for(i=1;i for(j=0;j{t=a[j];a[j]=a[j+1];a[j+1]=t;}
【编程】N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。
请编写函数fun,其功能是:
找出学生的最高分,并由函数值返回。
【答案】
doublemax=h->s;
while(h!
=NULL)
{ if(maxs)max=h->s;
h=h->next;
}
returnmax;
【编程】请编写函数fun,该函数的功能是:
将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。
例如,若字符串数组中的M个字符串为
“AAAA”,“BBBBBBB”,“CC”
则合并后的字符串内容应该是AAAABBBBBBBCC
【答案】
inti,j,k=0;
for(i=0;ifor(j=0;a[i][j]!
=′\0′;j++)
b[k++]=a[i][j];
b[k]=′\0′;
【编程】请编写函数fun,函数的功能是:
移动一维数组中的内容,若数组中有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容:
1,2,3,4,5,6,7,8,9,10;p的值为3.移动后,一维数组中的内容应为:
5,6,7,8,9,10,1,2,3,4。
【答案】
intx,j,ch;
for(x=0;x<=p;x++)
{ch=w[0];
for(j=1;jw[j-1]=w[j];
}
w[n-1]=ch;
【编程】请编写函数fun,该函数的功能是:
删除一维数组中所有相同的数,使之只剩一个。
数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2223445666677899101010
删除后,数组中的内容应该是:
2345678910。
【答案】
inti,j=1;
for(i=1;iif(a[j-1]!
=a[i])
a[j++]=a[i];
returnj;
【编程】规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等n个,则不做处理,字符串中间和尾部的*号不删除。
例如,字符串中的内容为:
*******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:
****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为:
*******A*BC*DEF*G****。
n的值在主函数中输入。
【答案】
inti=0,k=0;
char*p,*t;
p=t=a;
while(*t==′*′)
{k++;t++;}
if(k>n)
{while(*p)
{a[i]=*(p+k-n);
i++;
p++;
}
a[i]=′\0′;
}
【编程】请编写函数fun,其功能是:
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
【答案】
longn=0;
intflag=1;
if(*p==′-′)
elseif(*p==′+′)
p++;
while(*p!
=′\0′)
{n=n*10+*p-′0′;
p++;
}
returnn*flag;
【编程】编写函数fun,其功能是:
求Fibonacci数列中大于t的最小的数,结果由函数返回。
Fibonacci数列F(n)的定义为:
F(0)=0,F
(1)=1
F(n)=F(n-1)+F(n-2)
例如,当t=1000时,函数值为1597。
【答案】
intf0=0,f1=1,f;
do{
f=f0+f1;
f0=f1;f1=f;
}
while(freturnf;
【编程】规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。
例如,字符串中的内容为:
****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应为:
****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:
****A*BC*DEF*G*******。
n的值在主函数中输入。
【答案】
inti=0,k=0;
char*p,*t;
p=t=a;
while(*t)
t++;
t--;
while(*t==′*′)
{k++;t--;}
if(k>n)
{while(*p&&p{a[i]=*p;
i++;p++;
}
a[i]=′\0′;
}
【编程】编写函数fun,w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后n-1位的数作为函数值返回。
例如,w值为5923,则函数返回923;若w值为923,则函数返回23。
【答案】
intn=1,j,s=1;
unsignedt;
t=w;
while(t>=10)
{
t=t/10;
n++;
}
for(j=1;js=s*10;
returnw%s;
【编程】编写函数fun,该函数的功能是:
从字符串中删除指定的字符。
同字母的大、小写按不同字符处理。
例如,若程序执行时输入字符串为:
turbocandborlandc++
从键盘上输入字符n,则输出为:
turbocadborladc++
如果输入的字符在字符串中不存在,则字符串照原样输出。
【答案】
inti=0;
char*p;
p=s;
while(*p)
{
if(*p!
=c)
{
s[i]=*p;
i++;
}
}
s[i]=′\0′;
编程】编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为asdasasdfgasdaszx67asdmklo,子字符串为as,则应当输出6。
【答案】
inti,j=0;
for(i=0;str[i+1]!
=′\0′;i++)
if(str[i]==substr[0]&&str[i+1]==substr[1])
j++;
returnj;
【编程】请编写函数fun,其功能是:
统计一行字符串中单词的个数,作为函数值返回。
字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行开始没有空格。
【答案】
inti,j=0;
for(i=0;s[i]!
='\0';i++)
if(s[i]!
=''&&(s[i+1]==''||s[i+1]=='\0'))j++;
returnj;
【编程】编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
【答案】
inti=0;
max=a[0];
for(i=0;iif(strlen(max)max=a[i];
returnmax;
【编程】请编写函数voidfun(intm,intk,intxx[]),该函数的功能是:
将大于整数m且紧靠m的k个素数存入所指定的数组中。
例如,若输入:
17,5,则应输出:
19,23,29,31,37。
【答案】
inti,j,n;
for(i=m+1,n=0;n{
for(j=2;j
if(i%j==0)break;
if(j>=i)
xx[n++]=i;
}
【编程】请编写函数fun,函数的功能是:
移动字符串中的内容,移动的规则是把第1~m个字符,平移到字符串的最后,把m+1到最后的字符移到字符串的前部。
例如,字符串中原有的内容为:
ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:
DEFGHIJKABC。
【答案】
inti,j;
chart;
for(i=1;i<=m;i++)
{
t=w[0];
for(j=1;w[j]!
='\0';j++)
w[j-1]=w[j];
w[j-1]=t;
}
【编程】请编写函数fun,函数的功能是:
统计各年龄段的人数。
N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。
结果在主函数中输出。
【答案】
inti,j;
for(j=0;jb[j]=0;
for(i=0;iif(a[i]>=100)
b[10]++;
else
b[a[i]/10]++;
}
doublernd()
{
statict=29,c=217,m=1024,r=0;
r=(r*t+c)%m;
return((double)r/m);
请编函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。
可调用strlen函数求字符串的长度。
例如:
在键盘输入字符串2345210,函数返回长整型数2345210。
【答案】
inti,sum=0,len;
len=strlen(s);
for(i=0;i{
sum=sum*10+*s-48;
s++;
}
returnsum;