填空题
1. 请补充函数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')
{
______;
}
______;
}
str[j]='\0';
______;
}
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);
}
【正确答案】
1、str[j++]=*(p+i)
i++
m=j
【答案解析】 根据题目要求,将字符串中的每一个大写字母放在原来的字符串中,因此,空一处填“str[j++]=*(p+i)”;变量i存放字符串中每一个字符对于字符串头指针的偏移量,每作一次循环要向后移动一个字符,因此,空二处填“i++”;变量j为新的字符串下标的最大值,也就是字符串的长度,题目要求字符串的长度由全局变量进行保存,因此,空三处填“m=j”。