我是C编程的新手,并尝试编写一个程序来按字母顺序对用户输入的字母串进行排序。到目前为止,我有以下代码。任何人都可以帮助我让它运行正常吗?代码编译并运行,但似乎没有正确存储运行计数。
就调试它而言,我注意到使用字母作为计数器可能是一个问题,但已经在其他地方看到了这一点,并且他们的https://stackoverflow.com/a/29644387/2214832编译并运行良好。提前谢谢。
func testStringUInt8Extension() {
var cs : [UInt8] = []
for char : UInt8 in 0..<255 {
cs.append(char)
}
print("0..255 string looks like \(String(cs)))")
}
答案 0 :(得分:1)
您的代码中存在多个错误:
在for
循环中出现两次的以下行不正确:
letter_count[letter] = letter_count[l] + 1 ;
变量l
永远不会被初始化。
正确的是,例如:
letter_count[letter]++;
以下也是错误的:
printf("Letter %c has a count of %d\n",str[i], letter_count[i]) ;
信件的计数在letter_count[letter]
而非letter_count[i]
。
循环终止条件中有off-by-one error:
for(j = 0 ; j <= letter_count[i] ; j++)
应该更改为j < letter_count[i]
,否则你会将每个字母计数超过一次。