C语言精华:数组排序与数据类型解析
需积分: 6 51 浏览量
更新于2024-09-12
收藏 81KB DOC 举报
"这篇文档是关于C语言编程的精华总结,特别关注了数组排序和数据类型方面的知识。"
在C语言编程中,数组排序是一个常见的任务,尤其在处理大量数据时。文中提到的一个关键点是,在对数组进行特定条件筛选后生成新数组,必须注意更新排序时的循环范围。通常,我们会在一个临时数组(如这里的`b[cnt]`)中存储筛选后的元素,并通过变量`cnt`来记录新数组的实际大小。在对新数组进行排序时,循环边界应设置为`i < cnt`而不是原始数组的最大值`MAX`,因为`cnt`才是新数组实际包含的元素数量。这段代码展示了如何进行这样的筛选和排序操作:
```c
for(i = 0; i < cnt; i++) {
for(j = i + 1; j < cnt; j++) {
if(b[i] < b[j]) {
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
```
此外,文档还提到了C语言中的数据类型。C语言提供了多种整数类型,包括`int`、`char`(有符号或无符号8位)、`short`、`long`,以及它们的组合,如`unsigned long`。对于浮点数,有`float`、`double`和`long double`。指针类型通过在变量名前加上`*`来定义,例如`int *p`表示指向整数的指针。
字符串处理方面,`char arr[10]`定义了一个能容纳10个字符的字符数组。比较字符串通常会用到`strcmp`函数,如`strcmp(xx[i][j], xx[i][k])`,它返回0表示两个字符串相等,正数表示第一个字符串大于第二个,负数则相反。然而,直接使用`if(strcmp(...)>0)`可能产生错误,因为`strcmp`的返回值需要与0比较,而非其他数值。
字符类型`'a'`的大小可以用`sizeof`运算符来获取,`sizeof('a')`将返回`char`类型的字节数,通常是1个字节。在示例中,`system("cls")`用于清屏,这可能导致`sizeof('a')`的结果无法观察到,因为屏幕被清空了。
最后,文件中提到了`gets`和`puts`函数,这两个函数分别用于从用户那里接收字符串输入和打印字符串。`gets(str)`会读取一行输入并存储在`str`数组中,而`puts(str)`则会打印出`str`的内容。用户被提示再次输入,这可能是为了演示如何处理用户的输入。
2021-12-02 上传
2021-10-12 上传
2023-05-10 上传
2009-04-25 上传
2021-02-17 上传
2020-01-05 上传
2021-09-21 上传