解析这段代码#include<stdio.h> #include<string.h> int main() { int i,j; char str[5][80],s1[80]; for(i=0;i<5;i++) scanf("%s",str[i]); for(i=0;i<4;i++) for(j=0;j<4-i;j++) { if(strcmp(str[j],str[j+1])>0) { strcpy(s1,str[j]); strcpy(str[j],str[j+1]); strcpy(str[j+1],s1); } } printf("After sorted:\n"); for(i=0;i<5;i++) puts(str[i]); return 0; }
时间: 2024-01-24 21:02:51 浏览: 170
统计从键盘所输入字符的中英文字母的个数.zip
5星 · 资源好评率100%
这段代码实现了一个字符串数组的冒泡排序。下面对代码进行解析:
1. 头文件包含
```c
#include<stdio.h>
#include<string.h>
```
这里包含了stdio.h和string.h两个头文件,分别用于输入输出和字符串操作。
2. 主函数
```c
int main() {
int i,j;
char str[5][80],s1[80];
// ...
}
```
定义了一个主函数,其中包含了三个变量:i、j和两个字符串数组,分别是str和s1。
3. 输入字符串
```c
for(i=0;i<5;i++)
scanf("%s",str[i]);
```
使用for循环和scanf函数,依次输入5个字符串,分别存入字符串数组str中。
4. 冒泡排序
```c
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
{
if(strcmp(str[j],str[j+1])>0)
{
strcpy(s1,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],s1);
}
}
```
使用嵌套for循环和字符串比较函数strcmp,对字符串数组str进行冒泡排序。将相邻的两个字符串进行比较,如果前者大于后者,则交换两个字符串的位置。
5. 输出排序结果
```c
printf("After sorted:\n");
for(i=0;i<5;i++)
puts(str[i]);
return 0;
```
使用printf函数输出排序结果的提示信息,并使用for循环和puts函数依次输出排序后的字符串数组str中的字符串。
最后,主函数返回0,表示程序正常结束。
阅读全文