#include<stdio.h> #include<string.h> //#include<stdlib.h> void swap(char *x,char *y); char *insertChar(char ch,char *sent); int main() { char ch,sent[1000]; int i; printf("请输入给定字符ch:\n"); scanf("%c",&ch); printf("请输入给定字符串:\n"); for(i=0;i<=1000;i++) { scanf("%c",&sent[i]); } insertChar(ch,sent); } char *inserChar(char ch,char *sent) { int i; for(i=0;i<=1000;i++) { if(sent[i]==ch) { sent[i+1]='*'; for(i+2;i<=998;i++) { swap(&sent[i+2],&sent[i+3]); } } } for(i=0;sent[i]!='\0';i++) { printf("%c",sent[i]); } } void swap(char*x,char*y) { int temp; temp=*x; *x=*y; *y=temp; }
时间: 2024-01-17 12:06:17 浏览: 150
#include <stdio.h>
4星 · 用户满意度95%
这个程序存在多个错误,下面是我找到的所有错误及其修正:
1. insertChar 函数名拼写错误,应该为 insertChar;
2. 在 insertChar 函数中,for 循环的终止条件应该是 i < 1000 而不是 i <= 1000,否则会导致数组越界;
3. 在 insertChar 函数中,第二个 for 循环中的循环变量 i 没有赋初值,应该改为 i = j + 2;
4. 在 insertChar 函数中,第二个 for 循环中的循环变量终止条件应该是 i < 1000 而不是 i <= 998,否则也会导致数组越界;
5. 在 swap 函数中,应该传入字符指针而不是字符,因为 swap 函数需要修改字符的值;
6. 在 main 函数中,应该在读取 ch 后加上一个 getchar(),以消耗输入缓冲区中的换行符;
7. 在 main 函数中,for 循环中应该限制输入的长度为 999,因为字符串最后一个字符需要留给字符串结束标志 '\0'。
下面是修改后的程序:
```
#include <stdio.h>
#include <string.h>
void swap(char *x, char *y);
char *insertChar(char ch, char *sent);
int main()
{
char ch, sent[1000];
int i;
printf("请输入给定字符ch:\n");
scanf("%c", &ch);
getchar(); // 消耗输入缓冲区中的换行符
printf("请输入给定字符串:\n");
for (i = 0; i < 999; i++) // 限制输入的长度为 999
{
scanf("%c", &sent[i]);
}
insertChar(ch, sent);
}
char *insertChar(char ch, char *sent)
{
int i, j;
for (i = 0; i < 1000; i++) // 修改循环条件
{
if (sent[i] == ch)
{
sent[i + 1] = '*';
for (j = i + 2; j < 1000; j++) // 修改循环变量初值和终止条件
{
swap(&sent[j], &sent[j - 1]);
}
}
}
for (i = 0; sent[i] != '\0'; i++)
{
printf("%c", sent[i]);
}
}
void swap(char *x, char *y) // 修改参数类型为字符指针
{
char temp; // 修改变量类型为字符
temp = *x;
*x = *y;
*y = temp;
}
```
阅读全文