c - 冒泡排序——输出整数的字符串

标签 c string algorithm sorting bubble-sort

我无法让第二个冒泡排序打印出字符串,它只会输出 0 和 1。

请原谅我缺乏编程技能和丑陋的代码,但即使我使用 strcmp 尝试了其他线程中推荐的解决方案,但我真的无法让它工作* 在 char 声明之前

该算法的目标是首先按一个顺序输出几个整数,然后将其反转。角色也是如此,这就是我陷入困境的地方。

字符冒泡排序:

  // Print (unsorted) CHAR in-values
  printf ("\n\nin:  ");
  for (cc = 0; cc <= 10; cc++) {
      printf ("%d", datastring[cc]);
  }

  // Sort CHAR out-values
  printf ("\n out: ");

  lengthcc = sizeof(datastring) / sizeof(char);

  for (cc = 0; cc < lengthcc; ++cc) {

    for (dd = 1; dd < lengthcc; ++dd) {

            if (datastring[dd] < datastring[dd - 1]) {

                tmpcc = datastring[dd];
                datastring[dd] = datastring[dd - 1];
                datastring[dd - 1] = tmpcc;

            }

    }

  }

  // Print (sorted) CHAR out-values
  for (cc = 0; cc < lengthcc; ++cc) {

    printf ("%d", datastring[cc]);

  }

代码开头——声明和整数排序

int main (int argc, char ** argv)
{
  int ii, jj, cc, length, lengthcc, dd;

  int data[] = { 7, 4, 3 };
  char datastring[10] = { "o", "i", "u", "f", "O", "I", "w", "U", "W", "B", "F" };
  int tmp;
  char tmpcc;

  // Print first arguments
  printf ("%s %s %s \n \n", argv[0], argv[1], argv[2]);

  // Print (unsorted) INT in-values
  printf ("in:  ");
  for (ii = 0; ii <= 2; ii++) {
      printf ("%d", data[ii]);
  }

  // Sort INT out-values
  printf ("\n out: ");

  length = sizeof(data) / sizeof(int);

  for (ii = 0; ii < length; ++ii) {

    for (jj = 1; jj < length; ++jj) {

            if (data[jj] < data[jj - 1]) {

                tmp = data[jj];
                data[jj] = data[jj - 1];
                data[jj - 1] = tmp;

            }

    }

  }

  // Print (sorted) INT out-values
  for (ii = 0; ii < length; ++ii) {

    printf ("%d", data[ii]);

  }

对于困惑的代码和糟糕的演示深表歉意。

最佳答案

这是代码:

#include <stdio.h>

int main (int argc, char **argv)
{
   char datastring[12] = { 'o', 'i', 'u', 'f', 'O', 'I', 'w', 'U', 'W', 'B', 'F' , '\0'} ;
   int c, d, buffer, lengthc ;

   // Print (unsorted) CHAR in-values
   printf ("\n\nin:  ") ;

   for (c = 0; c < 12; c++)
   {
      printf ("%c", datastring[c]) ;
   }

   // Sort CHAR out-values
   printf ("\n out: ") ;

   lengthc = sizeof(datastring) / sizeof(char) ;

   for (c = 0; c < lengthc; ++c)
   {
      for (d = 1; d < lengthc; ++d)
      {
         if (datastring[d] < datastring[d - 1])
         {
             buffer = datastring[d] ;
             datastring[d] = datastring[d - 1] ;
             datastring[d - 1] = buffer ;
         }
      }
   }

   // Print (sorted) CHAR out-values
   for (c = 0; c < lengthc; ++c)
   {
      printf ("%c", datastring[c]) ;
   }

   return 0 ;
}

你必须写“%c”才能显示字符。 “%d”用于显示整数,“%f”用于显示 double 或 float 等。 因为字母是按 ascii 表排列的,所以它不能很好地处理大写字母。 如果要初始化字符串中的单个字符,则必须使用 single qoute。绳子的长度也太短了。 并且请更改您的代码风格。为什么使用“dd”而不是“d”等变量?

关于c - 冒泡排序——输出整数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46256082/

相关文章:

java - 可扩展的随机和完整迭代?

algorithm - 从视频中重建绘图序列

javascript - 在数组上均匀分布 bool 值(Javascript)

c - 如何验证 ARGV 中的 key ?

c++ - 消除 HTML 的最佳 C/C++ 库?

c++ - 代码中 strncpy 到 strcpy 的等效性

java:检查带有特殊字符的字符串,少数除外

string - J2ME 中的文本换行

c - 请帮我解决 malloc 问题

C: 字符用户在命令提示符下输入