gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:33:09 25 4
gpt4 key购买 nike

我无法让第二个冒泡排序打印出字符串,它只会输出 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com