码迷,mamicode.com
首页 > 其他好文 > 详细

解题报告

时间:2019-12-16 22:09:47      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:题目   解题报告   就是   bre   定义   报告   解法   main   include   

技术图片

该题涉及了二级指针的应用,当然,因为本题所给出的数据边界清晰,方便我们定义二维数组,所以我采用了二维数组的解法。
#include <stdio.h>
#include <string.h>
main()
{
    char str[20][10], p[20], q[10];
    int i, j, k = 0;

1.在结束符‘#‘的处理上,通过先判断结束符,再将内容输入二维数组。

2.我们需要让计算机知道二维数组中有内容的行数,所以设计了变量k来计算行数。
    while (1)
    {
        scanf("%s", q);
        if (q[0] == ‘#‘)break;
        else strcpy(str[k], q);
        k++;
    }

3.题目要求按长度从小到大排序后输出,所以这里我采用冒泡排序(当然还可以用选择排序)。
    for (i = 0; i < k - 1; i++)
        for (j = 0; j < k - i - 1; j++)
         if (strlen(str[j]) > strlen(str[j + 1]))
            {
                strcpy(p, str[j]);
                strcpy(str[j], str[j + 1]);
                strcpy(str[j + 1], p);
            }
(选择排序):

for (i = 0; i < k - 2; i++) {
    min = i;
    for (j = i + 1; j < k - 1; j++) {
        if (strlen(str[i]) > strlen(str[j]))
        {
        min = j;
        }
    }
    strcpy(p, str[min]);
    strcpy(str[min], str[i]);
    strcpy(str[i], p);
}


4.最后就是按题目要求输出了。
    for (i = 0; i < k; i++)
printf("%s ", str[i]);
}
以下以下是完整代码:
#include <stdio.h>
#include <string.h>
main()
{
	char str[20][10], p[20], q[10];
	int i, j, k = 0;
	while (1)
	{
		scanf("%s", q);
		if (q[0] == ‘#‘)break;
		else strcpy(str[k], q);
		k++;
	}
	for (i = 0; i < k - 1; i++)
		for (j = 0; j < k - i - 1; j++)
		    if (strlen(str[j]) > strlen(str[j + 1]))
			{
				strcpy(p, str[j]);
				strcpy(str[j], str[j + 1]);
				strcpy(str[j + 1], p);
			}
	for (i = 0; i < k; i++) 
        printf("%s ", str[i]);
}

  

解题报告

标签:题目   解题报告   就是   bre   定义   报告   解法   main   include   

原文地址:https://www.cnblogs.com/chentao123167/p/12051441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!