爱晒太阳的沉淀鱼的学习笔记 2019-09-23 16:55 采纳率: 0%
浏览 944
已结题

帮我把下面的代码改一下,改成一直重复运行,直到用户输入N或者n,程序退出。(C/C++)

#include
//#define BUF_SIZE 128
//void Swap_element(int *a, int *b);

#include

//#include

#include

void Insert_sort(int *num,int n)

{
int Comparisons_num = 0;
// int t1 = 0;
// int t2 = 0;

int i = 0;

int j = 0;

int tmp = 0;

for(i = 1;i<n;i++)

{

  tmp = num[i];//从待插入组取出第一个元素。 

  j = i-1; //i-1即为有序组最后一个元素(与待插入元素相邻)的下标 

  while(j>=0&&tmp<num[j]) //temp 为后   num[j] 为前 
   //注意判断条件为两个,j>=0对其进行边界限制。第二个为插入判断条件 

  {

// 后 前
num[j+1] = num[j];//若不是合适位置,有序组元素向后移动

    j--; 
Comparisons_num++;

  }

// t1++;//5 1 5 3 4 6 = 1 + 2 + 2 + 1
// Comparisons_num++;
num[j+1] = tmp;//找到合适位置,将元素插入。

}

printf("比较次数:%d\n\n", Comparisons_num);
}

// }
//int value(char ch){
// int no;
// printf("请输入一个整数值:");
// scanf("%d" ,&no);
// printf("您输入的是%d.\n", no);
// return 0;
//}
void input(int arr[5]){//给一维数组输入数据

printf("请输入5个数:\n\n");
for (int i = 0; i < 5; i++)

// scanf("%d", &arr[i]);
// scanf("%d", &arr[i]);
// scanf("%d", &arr[i]);
// scanf("%d", &arr[i]);
scanf("%d", &arr[i]);

// Insert_sort(b,5); //调用insertsort函数给数组b排序

// output(b);//调用output函数输出数组b中的值

}

void output(int arr[5]) // 输出一维数组输入数据
{
for(int i = 0;i < 5;i++) {
printf("%d ", arr[i]);
}

}

void query(char ch[1]){
printf("Continue or Exit? Press n to end.\n\n");

scanf("%c", &ch[0]);
}
int main()

{
char f[1];
// char cd = 'n';
int b[5];

while(true){

// int num[8]={9,3,4,2,6,7,5,1};
input(b);//调用input函数给数组b赋值

       printf("\n\n");

Insert_sort(b,5); //调用insertsort函数给数组b排序

output(b);
printf("\n\n");
query(f);
if(strcmp(f, "n") == 0)
break;

}
return 0;
}

  //调用output函数输出数组b中的值 

//这个函数必须知道元素的个数,所以将元素个数传入。

//可以在函数内部用sizeof求出元素个shu

// for(int i=0;i<5;i++)
//
// {
// printf("%d ",b[i]);
// }
// }while(strcmp(b, "n") != 0);
//
// return 0;
//
// }
//void Print_Comparisons_num(int Comparisons_num)
//{
//

//// printf("移动次数:%d\n", Mobile_num);
// printf("比较次数:%d\n\n", Comparisons_num);
// // 初始化
//

//}
//void Swap_element(int *a, int *b)
//{
// int tmp = *a;
//
// *a = *b;
// *b = tmp;
//

//// Mobile_num += 3; //  一次关键字交换计为3次移动
//}

                                  //    交换元素

//void Insert_sort(int *arr, int len)
//{
// int Comparisons_num = 0;// temp < arr[j], 因此arr[j] 向后移动
// int i, j;
// int tmp; // 待排序的元素
//
// for (i = 0; i < len; i++)
// {
// tmp = arr[i];
// for (j = i - 1; j >= 0 && tmp < arr[j]; j--)
// {
//// Swap_element(arr+j, arr+j+1); 
//// int Comparisons_num = 0;   // tmp < arr[j],因此arr[j]向后移动
//// Comparisons_num++;
////

// Swap_element(arr+j, arr+j+1);
//

// Comparisons_num++;
//

// }
// arr[j + 1] = tmp;
// }
// printf("比较次数:%d\n\n", Comparisons_num);
//}
//比较方式不同: 5 4 3 2 1 A: 10次(比较&&交换) B:14次(比较||交换)

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-09-23 17:16
    关注

    if(strcmp(f, "n") == 0)
    ->
    if(f[0] == 'n')

    因为你是比较单个字符,没有结束符,不要用strcmp

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug