c语言编程高手进,帮忙改错
#include"stdio.h"#include"conio.h"voidfun(char*s,char*t){inti,j,k,n=0;chartemp;for(i=...
#include "stdio.h"
#include "conio.h"
void fun (char *s, char *t)
{ int i,j,k,n=0; char temp;
for(i=0;s[i]!='\0';++i)
if(i%2==0)
for(k=0;k<i+1;++k)
{t[n]=s[i]; n++;}
else t[n]=s[i];
t[n]='\0';
printf("%s\n",t);
下列程序中函数fun的功能是:
首先将s数组中的字符串按以下规则复制到t数组:对于下标值为偶数位置上的字符复制n次(n=下标值+1),对于下标值为奇数位置上的字符只复制一次;其次将t数组中的字符串按字符编码从小到大的顺序排序。
【测试数据与运行结果】
当s中的字符串为“abcdefg”时,运行结果应为“abcccdeeeeefggggggg”
当s中的字符串为“136254”时,运行结果应为“123455555666”
给下面程序改错
(改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。)
#include "stdio.h"
#include "conio.h"
void fun (char *s, char *t)
{ int i,j,k,n=0; char temp;
for(i=0;s[i]!='\0';++i)
if(i%2==0)
for(k=0;k<i+1;++k)
{t[n]=s[i]; n++;}
else t[n]=s[i];
t[n]='\0';
printf("%s\n",t);
for(i=0;i<n;i++)
{
k=i;
for (j=0;j<n+1;j++)
if(t[j]<t[k])k=j;
if(k!=i)
{ temp=t[i]; t[i]=t[k]; t[k]=temp; }
}
}
main()
{ char s[20], t[100];
printf("\nPlease enter string s:"); gets(s);
fun(s,t);
printf("The result is: %s\n", t);
getch();
} 展开
#include "conio.h"
void fun (char *s, char *t)
{ int i,j,k,n=0; char temp;
for(i=0;s[i]!='\0';++i)
if(i%2==0)
for(k=0;k<i+1;++k)
{t[n]=s[i]; n++;}
else t[n]=s[i];
t[n]='\0';
printf("%s\n",t);
下列程序中函数fun的功能是:
首先将s数组中的字符串按以下规则复制到t数组:对于下标值为偶数位置上的字符复制n次(n=下标值+1),对于下标值为奇数位置上的字符只复制一次;其次将t数组中的字符串按字符编码从小到大的顺序排序。
【测试数据与运行结果】
当s中的字符串为“abcdefg”时,运行结果应为“abcccdeeeeefggggggg”
当s中的字符串为“136254”时,运行结果应为“123455555666”
给下面程序改错
(改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。)
#include "stdio.h"
#include "conio.h"
void fun (char *s, char *t)
{ int i,j,k,n=0; char temp;
for(i=0;s[i]!='\0';++i)
if(i%2==0)
for(k=0;k<i+1;++k)
{t[n]=s[i]; n++;}
else t[n]=s[i];
t[n]='\0';
printf("%s\n",t);
for(i=0;i<n;i++)
{
k=i;
for (j=0;j<n+1;j++)
if(t[j]<t[k])k=j;
if(k!=i)
{ temp=t[i]; t[i]=t[k]; t[k]=temp; }
}
}
main()
{ char s[20], t[100];
printf("\nPlease enter string s:"); gets(s);
fun(s,t);
printf("The result is: %s\n", t);
getch();
} 展开
2个回答
展开全部
#include "conio.h"
void fun (char *s, char *t)
{
int i,j,k,n=0;
char temp;
for(i=0;s[i]!='\0';++i)
{
if(i%2==0)
{
for(k=0;k<i+1;++k)
{
t[n]=s[i]; n++;
}
t[n]='\0'; //在每一次对偶位操作后因为在循环中n已经++过了,所以直接末尾赋0
}
else
{
t[n]=s[i];
t[++n]='\0'; //对奇数位操作时因为没有++,所以++后赋0
}
}
printf("%s\n",t);
for(i=0;i<n;i++)
{
k=i;
for (j=i+1;j<n;j++)//在这里j要从i的下一个开始,因为已经交换了之后
//那么再次比较时,j之前的应该放的都是每一次比较后的最小的数
{ //如果j还是从0开始,那么k一直是0,而下边的交换的步骤就相当于
if(t[j]<t[k]) //数组中从下标1开始都开始与下标0的交换一次而结束,这样是错的。
k=j;
}
if(k!=i)
{
temp=t[i]; t[i]=t[k]; t[k]=temp;
}
}
}//函数实现的是从下标为0的开始算奇偶,即输入4321,结果为122234
int main()
{
char s[20], t[100];
printf("\nPlease enter string s:");
gets(s);
fun(s,t);
printf("The result is: %s\n", t);
getch();
}
void fun (char *s, char *t)
{
int i,j,k,n=0;
char temp;
for(i=0;s[i]!='\0';++i)
{
if(i%2==0)
{
for(k=0;k<i+1;++k)
{
t[n]=s[i]; n++;
}
t[n]='\0'; //在每一次对偶位操作后因为在循环中n已经++过了,所以直接末尾赋0
}
else
{
t[n]=s[i];
t[++n]='\0'; //对奇数位操作时因为没有++,所以++后赋0
}
}
printf("%s\n",t);
for(i=0;i<n;i++)
{
k=i;
for (j=i+1;j<n;j++)//在这里j要从i的下一个开始,因为已经交换了之后
//那么再次比较时,j之前的应该放的都是每一次比较后的最小的数
{ //如果j还是从0开始,那么k一直是0,而下边的交换的步骤就相当于
if(t[j]<t[k]) //数组中从下标1开始都开始与下标0的交换一次而结束,这样是错的。
k=j;
}
if(k!=i)
{
temp=t[i]; t[i]=t[k]; t[k]=temp;
}
}
}//函数实现的是从下标为0的开始算奇偶,即输入4321,结果为122234
int main()
{
char s[20], t[100];
printf("\nPlease enter string s:");
gets(s);
fun(s,t);
printf("The result is: %s\n", t);
getch();
}
展开全部
/*
Please enter string s:abcdefg
The result is: abcccdeeeeefggggggg
*/
#include <stdio.h>
#include <conio.h>
void fun (char *s, char *t) {
int i,j,k,n = 0;
char temp;
for(i = 0; s[i] != '\0'; ++i) {
if(i % 2 == 0) {
for(k = 0; k < i + 1; ++k)
t[n++] = s[i];
}
else t[n++] = s[i];
}
t[n] = '\0';
for(i = 0;i < n - 1;i++) {
k = i;
for(j = i + 1;j < n;j++)
if(t[j] < t[k]) k = j;
if(k != i) {
temp = t[i];
t[i] = t[k];
t[k] = temp;
}
}
}
int main() {
char s[20], t[100];
printf("Please enter string s:");
gets(s);
fun(s,t);
printf("The result is: %s\n", t);
getch();
return 0;
}
更多追问追答
追问
if(k != i) {
temp = t[i];
t[i] = t[k];
t[k] = temp;
这里为什么要k!=i
追答
只有k != i时才需要交换,因为在语句k = i;中,假定t[i]是最小的。如果不加这个条件,就是说执行无条件交换也可以,当i == k时,仍然执行t[k] ←→t[i],这是无效操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询