C语言实验作业10

实验目的:1、掌握c语言中指针的使用方法。

     2、熟练使用函数的调用。

     3、掌握拆分实数、循环后移、删除字符、字符串排序的程序编写。

                                    拆分实数

(1)实验要求:要求自定义一个函数 void splitfloat(float x,int *intpart,float *fracpart),其中x是被拆分的实数,*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。编写主函数,并在其中调用splitfloat()。

(2)实验代码:

#include<stdio.h>
void splidfloat(float x,int *intpart,float *fracpart); /*定义函数*/
int main()
{
int m=0;
int *intpart=0; /*整数部分*/
intpart=&m;
float x,n=0; /*实数部分*/
float *fracpart=0; /*小数部分*/
fracpart=&n;
printf("输入实数x:");
scanf("%f",&x);
splidfloat(x,intpart,fracpart);
printf("整数部分:%d\n",m);
printf("小数部分:%f\n",n);
return 0;
}
/*将实数的整数部分与小数部分分离*/
void splidfloat(float x,int*intpart,float*fracpart)
{
*intpart=(int)x;
*fracpart=x-*intpart;
}

(3)实验结果:

 

                        

                                            循环后移

(1)实验要求:有n个整数,使前面各数顺序向后移m个位置,移出的数再从开头移入。编写一个函数实现以上功能,在主函数中输入n个整数并输出调整后的n个数。

 

 

(2)实验代码:

#include<stdio.h>
void move(int*a,int n,int m); /*定义函数*/
int main(void)
{
int m,n,i;
printf("输入整数的个数:");
scanf("%d",&n);
printf("后移的位数:");
scanf("%d",&m);
int a[100];
printf("输入的数组:"); /*输入数组*/
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("输出的数组为:");
move(a, n, m);
for(i=0;i<n;i++)
printf("%5d",a[i]); /*输出交换后的数组*/
printf("\n");
return 0;
}
/*循环后移*/
void move(int*a,int n,int m)
{
int i,j,temp;
for(i=0;i<=m;i++)
{
temp=a[0];
for(j=0;j<n-1;j++)
a[j]=a[j+1];
a[n-1]=temp;
}
}

(3)实验结果:

 

                                           字符删除

(1)实验要求:输入一个字符串,再输入一个字符ch,将字符串中所有的ch字符删除后输出该字符串。要求定义和调用函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。

(2)实验代码:

/*字符删除*/
#include<stdio.h>
#include<string.h>
void delchar(char*s,char c); /*定义函数*/
int main()
{
char c,s[100];
printf("输入字符串:");
gets(s);
printf("输入删除字符:");
c=getchar();
delchar(s,c);
printf("%s\n",s); /*输出变化后的字符串*/
return 0;
}
void delchar(char*s,char c)
{
int i,j,x;
i=j=0;
x=strlen(s); /*输入字符的个数*/
for(i=0;i<x;i++){ /*判断字符串中是否有要删除的字符*/
if(s[i]!=c){
s[j]=s[i]; /*把不用删除的字符移动到另一个数组中*/
j++;
}
}
s[j]='\0';
}

(3)实验结果:

 

                                             字符串排序

(1)实验要求:输入5个字符串,按由小到大的顺序输出。

(2)实验代码:

/*字符串排序*/
#include<stdio.h>
#include<string.h>
int main()
{
char s[5][100],t[100];
int i,j;
printf("输入5个字符串:\n"); /*输入字符串*/
for(i=0;i<5;i++)
gets(s[i]);
for(i=1;i<5;i++)
for(j=0;j<5-i;j++)
if(strcmp(s[j],s[j+1])==1) /*判断字符串的大小*/
{
strcpy(t,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],t);
}
printf("排序后\n"); /*输出排序后的字符串组*/
for(i=0;i<5;i++)
printf("%s\n",s[i]);
return 0;
}

(3)实验结果:

 

 

 

实验心得:在本次实验中,我对数指针和数组的应用更加熟悉了,同时还掌握了字符串的使用,在编程过程中虽然遇到很多的问题,但在同学当代帮助下都梳理解决了,更加加深了我对指针的印象。

posted @ 2019-06-17 21:56  杨昌益  阅读(595)  评论(0编辑  收藏  举报