填空题 请补充函数proc(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdlib.h>
#include<conio.h>
int m;
void proc(char*str)
{
int i=0, j=0;
char*p=str;
while(*(p+i))
{
if(*(p+i)>="A"&&*(p+i)<="Z")
{
1;
}
2;
}
str[j]="/0";
3;
}
void main()
{
char str[80];
system("CLS");
printf("/nEnter a string: ");
gets(str);
printf("/n/nThe string is: %s/n", str);
proc(str);
printf("/n/nThe string of changing is: %s/n", str);
printf("/n/nThe length of changed string is: %d/n", m);
}
【正确答案】
【答案解析】str[j++]=*(p+i) i++ m=j[解析] 根据题目要求将字符串中的每一个大写字母放在原来的字符串中,因此,第一处填“str[j++]=*(p+i)”;变量i存放字符串中每一个字符对于字符串头指针的偏移量,每做一次循环要向后移动一个字符,因此,第二处填“i++”;变量j为新的字符串下标的最大值,也就是字符串的长度,题目要求字符串的长度由全局变量进行保存,因此,第三处填“m=j”。