问答题
1. 请编写一个函数void proc(char a[], charb[], int n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串student,然后输入5,则调用该函数后的结果为studet。
注意:部分源程序如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序: #include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#define N 20
void proc(char a[],char b[],int n)
{
}
void main()
{
char str1[N],str2[N];
int n;
system("CLS");
printf("Enter the string: \n");
gets(str1);
printf("Enter the position of the string deleted:");
scanf("%d",&n);
proc(str1,str2,n);
printf("The new string is:%s\n" ,str2);
}
【正确答案】void proc(char a[],char b[],int n)
{
int i,k=0;
for(i=0;a[i]!='\0';i++)//要想删除,那就是
当其为n时,对其什么也不做,而把不是n的字符
放到p中
if(i!=n) //n中存放指定的下标
b[k++]=a[i];//删除后的字符串存放在b所
指的数组中
b[k]='\0';//用'\0'作为字符串的结束标志
}
【答案解析】 按照题目的要求,删除一个字符串中指定下标的字符。首先,将指定下标之前的字符放入字符数组b中;然后,将指定下标之后的字符也放入字符数组b中;最后,为新的字符数组b添加结束符。