问答题
请编写函数proc(),其功能是:将str所指字符串中除了下标为奇数、同时ASCII值为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若str所指字符串中的内容为edB2A4Dsdg,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为偶数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标为奇数,因此不应当删除。依此类推,最后t所指的数组中的内容应是d24。
注意:部分源程序给m如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void proc(char*str,char t[])
{
}
void main()
{
char str[100], t[100];
system("CLS");
printf("/nPlease enter string S:");
scanf("%s", str);
proc(str, t);
printf("/nThe result is: %s/n", t);
}
【正确答案】
【答案解析】void proc(char*str, char t[])
{
int i, j=0;
for(i=0; str[i]!="/0"; i++)
if(i%2!=0&&str[i]%2==0)//下标为奇数、同时ASCII值为偶数的字符放到t数组中
t[j++]=str[i];
t[j]="/0"; //t表示的是字符串,因此应在其后加"/0"作为结束标志
}
[解析] 题目中要求将字符串str中下标为奇数,同时ASCII码值为偶数的字符放在数组t中,首先,需要检查字符串str中下标为奇数的字符的ASCII码值是否为偶数,将符合要求的字符放在数组t中。最后,为新的字符串数组添加结束符。