C语言实验报告 字符串排序
printf("%s\n",input); printf("%s\n",output); } 但是,虽然这个程序可以运行,却得不到我想要的结果。于是,经过查找我发现了 问题所在为 n 的数值,所以我将之改成(最终成功的程序):、 #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];
printf("input:%s\n",input); printf("output:%s\n",output); } 5. 调试程序 a3vues4sdf2kjk9df0v input:a3vues4sdf2kjk9df0v output:a0vues2sdf3kjk4df9v 6. 实验结果及分析 经过多次验算结果正确,程序正确无误,圆满完成。 五、程序代码 #include<stdio.h> #include<string.h> #include<ctype.h> void my_sort(char input[],char output[]) { int i,n,m,k,j;
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. 编写程序代码与具体实验过程:
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];
三、 实验内容 实验题目:有一字符串,请对字符串中的数字字符按照升序排列,其他非数字字符存储位置 保持不变,将结果保存至 output 数组中。(注:字母可能包含大写、小写字母、数字以及控 制字符) 要求:有主函数输入待排序的字符窜,并由函数 my_sort(char input[],char output[]), 实现排序,再由主函数输出排序结果。 例如: input:a3vues4sdf2kjk9df0v output:a0vues2sdf3kjk4df9v
刚开始我用 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++; 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;
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) {output[i]=a[m]; m++; } } }
void main() {
char input[50]; char output[50]; scanf("%s",input); my_sort(input,output);
printf("input:%s\n",input); printf("output:%s\n",output); } 六、总结建议 通过该实验我对 for、switch 和选择排序法的使用更加熟练,并且学会了使用字符函数。但 我对于一些基础知识掌握不够扎实,应多去复习一下基础知识。
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) {output[i]=a[m]; m++; } } }
void main() { char input[50]; char output[50]; scanf("%s",input); my_sort(input,output);
C 语言程序设计上机实验报告
指导教师:甘 玲 学 号:2011213297 姓 名:洪少鹏 班 级:1101104 时 间:2009-4-1
一、 实验目的
1. 在实验过程中发现自己的不足,加以补足。 2. 检测自己的能力,提高实验能力。
二、 实验要求
1.掌握用 C 语言解决实际问题的步骤; 2.掌握 C 语言的语法规则及算法的表示; 3.通过上机实验,加深对《解析 C 程序设计》课程中基本概念的理解; 4.提高对计算机程序的编写和应用能力; 5.考察自己对 C 语言的编程能力。
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:
for(i=0,n=0;i<50;i++) { if(isdigit(input[i])!=0) {a[n]=input[i]; n++; } } 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) {
char x,a[50]; for(i=0,n=0;i<50;i++) { if(isdigit(input[i])!=0) {a[n]=input[i]; n++; } }
for(m=0;m<=n-2;m++) {
k=m; for(j=m+1;j<=n-1;j++)
if(a[j]<a[k]) k=j;
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;
四、 实验步骤 1.问题的提出与分析; 2.建立计算模型; 3.算法的确定与表示; 4.编写程序代码; 5.调试程序; 6.整理结果(实验结果及分析)。
具体实验步骤:
1. 问题的提出与分析: 如何在有其他字符的干扰下对数字字符进行排序呢? 很简单-将数字字符从字符串里提出,放置到令一个数组中,然后用选择排序法进行 排序,之后再用将之按顺序放回原来的字符串里。
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) {output[i]=a[m]; m++;t[50]; char output[50]; scanf("%s",input); my_sort(input,output);