请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母)按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函数返回这个字符串的长度。例如;输入“cixbr2.3”,如果为bcirx,字符串长度为5。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
include <stdio.h>
define N 20
int fun (char *str)
{
int i=0,j=0,k=-0,m=0;
char t;
char *p=str;
while(*p)
{
if((*p>='A'&&*p<='Z')||(*p>='a'
&&*p<='z'))
【 】
p++;
}
*(str+i)='\0';
【 】;
while(*(p+j))
{
k=j;
【 】;
while (*(p+k))
{
if(*(p+k)<*(str+m)
{
t=*(str+m);
*(str+m)=*(p+k);
*(p+k)=t;
}
k++;
}
j++;
}
return i; }
main()
{
char str[81];
iht n;
clrscr();
printf("Input the original string ");
gets(str);
printf("*** The Original string ***In");
puts(str);
printf("*** The nwe string ***\n");
n=fun(str);
puts(str);
printf("***The length of new string is:
%d***\n",n);
}
第1题:
规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。
第2题:
程序test.C的功能是:把S字符串中的所有字母改写成该字母的下一个字母,字母2改写成字母a,字母z改写成字母 A,其他字符不做改变。 请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT把结果输出到文件0ut.dat中。例如:S字符串中原有的内容为:Mn.123xyz,则调用该函数后,结果为:N0.123Ayz。 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main和输出数据函数read writeDAT的内容。
第3题:
函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。
例如,原文:Adb.Bcdza
abck.LLhj
结果:Aec.Bdeab
bcdl.LLik
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
第4题:
规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.
第5题:
下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。
请修改函数fun()中的错误,得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
(1)错误:while(*str!=ˊ@ˊ)
正确:while(*str)或while(*str!=ˊ\0ˊ)或while(*str!=0)
(2)错误:(*str++);
正确:str++
【解析】首先判断字母是否为小写字母,如果是小写字母则进行转换。
第一个标识下“while(*str!=ˊ@ˊ)”语句原意是str不指向字符串尾就进入下面的循环,所以对于指针判断不为结束符的语句应该是循环为真,所以应为“while(*str)”或“while(*str!=ˊ\Oˊ)”或“while(*str!=0)”。
第二个标识下“(*str)++;”是对字符内容加1,而原题是对字符位置加1,所以将其改为“str++;”。