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小时内删除。
发表评论