C语言改错

 

改错
第1题
给定程序MODI1.C中函数 fun 的功能是:把在字符串s中出现的每个字符,紧随其后重复出现一次,形成一个新串放在t中,t中字符按原字符串中字符顺序排列。

例如:当s中的字符串为:"ABAABBCCDDEE"。

 则t中的字符串应为:"AABBCCDDEE"。

请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
Modi1.c
#include
#include
#include
/************found************/

void fun (char s,char t) /参考答案:void fun (char *s,char *t)/

{ int i, sl;
 sl = strlen(s);
 for (i=0; i { t[2*i] = s[i];
 t[2*i+1] = s[i];
 }

/************found************/

 t[2*sl] = ’0’; /参考答案:t[2*sl] = ’/0’;/

}
main()

{ char s[100], t[100];

 clrscr();

 printf("/nPlease enter string s:"); scanf("%s", s);

 fun(s, t);

 printf("The result is: %s/n", t);

}
 
第2题
给定程序MODI1.C中函数 fun 的功能是:把在字符串s中出现的每个字符, 紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中逆排列。
例如:当s中的字符串为:"ABCDE"时,
 则t中的字符串应为:"EEDDCCBBAA"。
请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
Modi1.c
#include
#include
#include
void fun (char *s, char *t)
{ int i, sl;
 sl = strlen(s);
/************found************/
 for (i=1; i { t[2*i] = s[sl-i-1];
 t[2*i +1] = s[sl-i-1];
 }
/************found************/
 t[2*sl] = ’0/’; /参考答案:t[2*sl] = ’/0’;/
}

main()
{ char s[100], t[100];
 clrscr();
 printf("/nPlease enter string s:"); scanf("%s", s);
 fun(s, t);
 printf("The result is: %s/n", t);
}
第3题
给定程序MODI1.C中函数 fun 的功能是:将在字符串s中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符的顺序排列。(注意0为偶数)
例如:当s中的字符串为:"ABCDE"时,
 则t中的字符串应为:"AACCEE"。
请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
Modi1.c
#include
#include
#include
void fun (char *s, char *t)
{ int i, j, sl;
 sl = strlen(s);
/************found************/
 for (i=0, j=0; i { t[2*j] = s[i];
 t[2*j +1] = s[i];
 j++;
 }
/************found************/
 t[2*sl] = ’/0’; /参考答案:t[2*j]=’/0’;/
}

main()
{ char s[100], t[100];
 clrscr();
 printf("/nPlease enter string s:"); scanf("%s", s);
 fun(s, t);
 printf("The result is: %s/n", t);
}
 
第4题
给定程序MODI1.C中函数 fun 的功能是:将在字符串s中下标为奇数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符的顺序排列。(注意0为偶数)
例如:当s中的字符串为:"ABCDEF"时,
 则t中的字符串应为:"BBDDFF"。
请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
Modi1.c
#include
#include
#include

void fun (char *s, char *t)
{ int i, j, sl;
 sl = strlen(s);
/************found************/
 for (i=0, j=0; i { t[2*j] = s[i];
 t[2*j +1] = s[i];
/************found************/
 j--; /参考答案:j++/
 }
 t[2*j] = ’/0’;
}

main()
{ char s[100], t[100];
 clrscr();
 printf("/nPlease enter string s:"); scanf("%s", s);
 fun(s, t);
 printf("The result is: %s/n", t);
}
 
 第5题

给定程序MODI1.C中函数 fun 的功能是:将在字符串s中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符出现的逆序排列。(注意0为偶数)
例如:当s中的字符串为:"ABCDEF"时,
   则t中的字符串应为:"EECCAA"。
请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


Modi1.c
#include
#include
#include

void fun (char *s, char *t)
{ int i, j, sl;
 sl = strlen(s);
 if(sl%2)sl--; else sl-=2;
/************found************/
 for (i=sl, j=0; i>=0; i--) /参考答案:for (i=sl, j=0; i>=0; i-=2)/
 { t[2*j] = s[i];
 t[2*j +1] = s[i];
 j++;
 }
/************found************/
 t[2*sl] = ’/0’; /参考答案:t[2*j] = ’/0’;/
}

main()
{ char s[100], t[100];
 clrscr();
 printf("/nPlease enter string s:"); scanf("%s", s);
 fun(s, t);
 printf("The result is: %s/n", t);
}
 
第6题
给定程序MODI1.C中函数 fun 的功能是:将在字符串s中下标为奇数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符出现的逆序排列。(注意0为偶数)
例如:当s中的字符串为:"ABCDEFG"时,
 则t中的字符串应为:"FFDDBB"。
请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
Modi1.c
#include
#include
#include

void fun (char *s, char *t)
{ int i, j, sl;
 sl = strlen(s);
/************found************/
 if(sl%2) Sl-=2; else Sl--; /参考答案:if(sl%2) sl-=2; else sl--;/
 for (i=sl, j=0; i>=0; i-=2)
 { t[2*j] = s[i];
 t[2*j +1] = s[i];
 j++;
 }
/************found************/
 t[2*sl] = ’0’; /参考答案:t[2*j] = ’/0’;/
}

main()
{ char s[100], t[100];
 clrscr();
 printf("/nPlease enter string s:"); scanf("%s", s);
 fun(s, t);
 printf("The result is: %s/n", t);
}
 第7题
给定程序MODI1.C中函数 fun 的功能是:把在字符串s中出现的每个字符,紧随其后重复出现一次,形成一个新串放在t中,且在t中把原相邻字符的位置进行了交换。
例如:当s中的字符串为:"ABCDE"时,
 则t中的字符串应为:"BBAADDCCEE"。
请改正函数fun中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
Modi1.c
#include
#include
#include

void fun (char *s, char *t)
{
/************found************/
 int i, j; /参考答案:int i,j,sl;/
 sl = strlen(s);
 for (i=0, j=0; i { if (i+1 < sl)
 { t[2*j] = s[i+1]; t[2*j +1] = s[i+1];
 j++;
 }
 t[2*j] = s[i]; t[2*j +1] = s[i];
/************found************/
 j--; /参考答案:j++;/
 }
 t[2*sl] = ’/0’;
}

main()
{ char s[100], t[100];
 clrscr();
 printf("/nPlease enter string s:"); scanf("%s", s);
 fun(s, t);
 printf("The result is: %s/n", t);
}
 
第8题
给定程序MODI1.C中函数 fun 的功能是:将在字符串s中出现、而未在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。
例如:当s = "AABCDE",t = "BDFG"字符。
u中的字符串为"AACE"。
 
 
文章出处:http://www.diybl.com/course/comshiti/rank2/c2/cmn/2007520/34560.html
### 查找和修改C语言代码中的错误 在开发过程中,查找和修复C语言代码中的错误是一项重要的技能。以下是几种常见的方法和技术来帮助识别和解决这些问题。 #### 使用静态分析工具 静态分析工具能够在不运行程序的情况下检测潜在的缺陷。例如,`cppcheck` 是一种流行的开源工具,可以发现内存泄漏、未初始化变量等问题[^1]。通过命令行调用 `cppcheck yourfile.c` 即可执行基本检查。 #### 启用编译器警告选项 现代C语言编译器提供了丰富的警告功能,可以帮助开发者尽早发现问题。对于GCC编译器而言,建议至少启用 `-Wall -Wextra` 参数以获取更详细的反馈信息。如果希望进一步增强安全性,则还可以考虑加入 `-pedantic-errors` 来严格遵循标准规范。 ```bash gcc -Wall -Wextra -pedantic-errors yourfile.c -o yourprogram ``` #### 动态调试技术 当静态手段无法定位问题时,动态调试就显得尤为重要了。GDB(GNU Debugger)是一个强大的交互式环境,允许用户逐步跟踪程序执行过程,并查看当前状态下的寄存器值或者内存布局情况[^2]。下面展示了一个简单的例子: 假设存在如下可疑片段: ```c int main() { int *ptr; ptr = NULL; *ptr = 10; // 这里可能会崩溃 } ``` 为了找出具体原因,在终端输入以下指令启动gdb会话: ```bash $ gdb ./yourprogram (gdb) run Program received signal SIGSEGV, Segmentation fault. ... ``` 此时可以根据提示回溯堆栈轨迹从而确认根源所在。 #### 手动复查逻辑流程 除了依赖自动化机制外,定期审查自己的设计思路同样不可或缺。特别要注意边界条件处理不当所引发的各种异常状况;另外也要警惕那些看似无害但实际上隐藏着巨大风险的操作——比如字符串拷贝操作可能溢出缓冲区大小限制等等。 ### 结论 综上所述,针对C语言项目中存在的各类瑕疵采取综合措施往往能够取得较好效果:一方面充分利用现有资源如特定插件或框架辅助完成初步筛查工作;另一方面也不应忽视传统方式的价值所在即细致入微的人工校验环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值