纠正程序#include <stdio.h> #include <string.h> void fun(char *s,int n,int *t) { int i,k=0; s[n]='a'; s[n+1]='\0'; while(s[k]!='a') k++; if(k==n){*t=0;} else { for(i=k;i<n;i++) s[i]=s[i+1]; s[i]='\0'; } } main() { char s[20]; int len,t; printf("Input a string:"); gets(s); len=strlen(s); fun(s,len,t); if(t==0) printf("Not exist!\n"); else printf("Result is:%s\n",s); }
时间: 2024-03-26 14:36:03 浏览: 73
华为笔试题
程序中 fun 函数缺少对参数 t 的赋值,应该在函数调用前为 t 赋初值,否则会导致无法正确判断是否删除了指定字符。
下面是修改后的程序代码:
```c
#include <stdio.h>
#include <string.h>
void fun(char *s, int n, int *t)
{
int i, k = 0;
s[n] = 'a';
s[n+1] = '\0';
while (s[k] != 'a') k++;
if (k == n) {
*t = 0;
} else {
for (i = k; i < n; i++)
s[i] = s[i+1];
s[i] = '\0';
*t = 1;
}
}
int main()
{
char s[20];
int len, t = 0;
printf("Input a string:");
gets(s);
len = strlen(s);
fun(s, len, &t);
if (t == 0) {
printf("Not exist!\n");
} else {
printf("Result is:%s\n", s);
}
return 0;
}
```
程序的执行流程是:
1. 首先定义一个函数 fun,用于删除字符串中的指定字符;
2. 然后在函数中定义变量 i 和 k,表示循环计数器和指向要删除的字符的指针;
3. 将字符串 s 的第 n 个位置赋值为字符 'a',以便在后面判断是否找到要删除的字符;
4. 使用 while 循环找到要删除的字符,并进行相应的处理;
5. 如果没有找到要删除的字符,则将参数 t 赋值为 0,表示删除失败;
6. 如果找到了要删除的字符,则将其删除,并将参数 t 赋值为 1,表示删除成功;
7. 在主函数中定义字符串 s 和整型变量 len 和 t,分别表示输入字符串、字符串长度和删除结果;
8. 使用 gets 函数获取用户输入的字符串,并使用 strlen 函数计算出字符串长度;
9. 调用 fun 函数,删除字符串中的指定字符并判断是否删除成功;
10. 根据删除结果使用 printf 函数输出 Not exist 或 Result is。
阅读全文