C语言程序设计上机实验报告
指导教师:甘  玲
学    号:2011213297
姓    名:洪少鹏
班    级:1101104
时    间:2009-4-1

一、实验目的
1.在实验过程中发现自己的不足,加以补足。
2.检测自己的能力,提高实验能力。
二、实验要求
1.掌握用C语言解决实际问题的步骤;
2.掌握C语言的语法规则及算法的表示;
3.通过上机实验,加深对《解析C程序设计》课程中基本概念的理解;
4.提高对计算机程序的编写和应用能力;
5.考察自己对C语言的编程能力。
三、实验内容
实验题目:有一字符串,请对字符串中的数字字符按照升序排列,其他非数字字符存储位置保持不变,将结果保存至output数组中。(注:字母可能包含大写、小写字母、数字以及控制字符)
要求:有主函数输入待排序的字符窜,并由函数my_sort(char input[],char output[]),实现排序,再由主函数输出排序结果。
例如:
input:a3vues4sdf2kjk9df0v
output:a0vues2sdf3kjk4df9v
四、实验步骤
1.问题的提出与分析;
2.建立计算模型;
3.算法的确定与表示;
4.编写程序代码;
5.调试程序;
6.整理结果(实验结果及分析
具体实验步骤:
1.问题的提出与分析:
如何在有其他字符的干扰下对数字字符进行排序呢?
很简单-将数字字符从字符串里提出,放置到令一个数组中,然后用选择排序法进行排序,之后再用将之按顺序放回原来的字符串里。
2.建立计算模型:
使用选择排序法
3.算法
for(m=0;m<=n-2;m++)
{
    k=m;
    for(j=m+1;j<=n-1;j++)
        if(a[j]<a[k])
            k=j;
        if(m!=k)
        {
            x=a[m];
        a[m]=a[k];
        a[k]=x;
        }
}
4.编写程序代码与具体实验过程:
刚开始我用for循环语句和switch语句来提出数字字符:
for(i=0,n=0;i<50;i++)
        {
        switch(input[i])
        {
        case '0':
            a[n]=input[i];
            n++;
            break;
            case '1':
            a[n]=input[i];
            n++;
字符串长度排序c语言            break;
            case '2':
            a[n]=input[i];
            n++;
            break;
            case '3':
            a[n]=input[i];
            n++;
            break;
            case '4':
            a[n]=input[i];
            n++;
            break;
            case '5':
            a[n]=input[i];
            n++;
            break;
            case '6':
            a[n]=input[i];
            n++;
            break;
            case '7':
            a[n]=input[i];
            n++;
            break;
            case '8':
            a[n]=input[i];
            n++;
            break;
            case '9':
            a[n]=input[i];
            n++;
            break;
            default:
                break;
        }
后来发现这实在是太麻烦了,就使用了字符函数isdigit代替switch语句,使程序代码缩短(能运行但无法得出想要结果的错误程序):
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void my_sort(char input[],char output[])
{
    int i,n,m,k,j;
    char x,a[50];
        for(i=0,m=0;i<50;i++)
        {
        if(isdigit(input[i])!=0)
        {a[m]=input[i];
        m++;
        }
        }
n=strlen(a);
for(m=0;m<=n-2;m++)
{
    k=m;
    for(j=m+1;j<=n-1;j++)
        if(a[j]<a[k])
            k=j;
        if(m!=k)
        {
            x=a[m];
        a[m]=a[k];
        a[k]=x;
        }
}
    for(i=0,m=0;i<50;i++)
    {    output[i]=input[i];
                if(isdigit(output[i])!=0)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。