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