使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,规定输入的字符串中只包含字母和"*"。编写函数fun(),其功能是删除字符串中所有的"*"。编写函数时,不得使用c语言提供的字符串函

admin2023-02-27  27

问题 使用VC++2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,规定输入的字符串中只包含字母和"*"。编写函数fun(),其功能是删除字符串中所有的"*"。编写函数时,不得使用c语言提供的字符串函数。
    例如,字符串中的内容为"****A*BC*DEF*G*******",删除后,字符串中的内容应当是"ABCDEFG"。
    注意:部分源程序给出如下。
    请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。
    试题程序:
1 #include<conio.h>
2 #include<stdio.h>
3 void fun(char * a)
4 {
5
6 }
7 void main()
8 {
9   char s[81];
10  printf("Enter a string:\n");
11    gets(s);
12    fun(s);
13    printf("The string after deleted:\n");
14    puts(s);
15 }

选项

答案 1 void tun(char*a) 2 { 3 int i,j=0; 4 for(i=0;a[i]!=’\0’;i++) 5 if(a[i]!='*’) 6 a[j++]=a[i];/*若不是要删除的字符'*'则保留*/ 7 a[j]='\0';/*最后加上字符串结束标志*/ 8 }

解析 本题考查:删除字符串中所有"*",需用循环语句遍历字符串,用判断语句判断字符是否为"*",由此可以决定该程序应使用循环判断结构。
    用循环操作从字符串开始向后逐个进行比较,若不是要删除的字符(用if(a!='*’)来控制)则保留。变量i和j用来表示原字符串的下标和删除"*"后新字符串的下标。注意,下标变量j要从0开始,最后还要加上字符串结束标志"\0"。
转载请注明原文地址:https://kaotiyun.com/show/DJ0D777K
0

最新回复(0)