十(P214 1、3、6、7)

1、/*拆分实数的整数与小数部分要求自定义一个函数void splitfloat(float x, int *inpart,flot*fracpart).

其中x是被拆分的实数,*input和*facpart分别是将实数x拆分出来的整数部分与小数部分。

编写主函数,并在其中调用函数splitfloat().

试编写相应程序。*/

#include <stdio.h>

void splitfloat( float x, int *intpart, float *fracpart );

int main()
{
float x, fracpart;
int intpart;
printf("Enter a number x:");

scanf("%f", &x);
splitfloat(x, &intpart, &fracpart);
printf("intpart= %d\n", intpart);
printf("fracpart= %f\n", fracpart);

return 0;
}
void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart = (int)x;
*fracpart = x- (*intpart);
}

 

3、/*循环右移:有n个整数,是前面各数顺序向后移m个位置,移出的数再从开头移入。编写
一个函数实现以上功能,在主函数中输入n个整数并输出调整后的n个数。试编写相应程序。*/
#include"stdio.h"
#include"stdlib.h"
int main()
{
int n,m,i,j;
int*p;
printf("Enter 输入n个数,移动m位置:");
scanf("%d%d",&n,&m);
p=(int*)calloc(n,sizeof(int));
for(i=0;i<n;i++)
scanf("%d",p+i);
for(i=0;i<n;i++){
j=(m/n+1)*n-m+i;
if(j>=n)
j-=n;
printf("%d\t",*(p+j));
}
printf("\n");
return 0;

}

6、

/*删除字符:输入一个字符串,再输入一个字符串ch,将字符串所有的ch字符删除后输出该字符串。
要求定义和调用函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。试编写相应程序。*/
#include<stdio.h>
int main(void)
{
char c;
char str[80];
void delchar(char*str,char c);
printf("输入字符串:");
gets(str);
printf("删除字符:");
scanf("%c",&c);
getchar();

delchar(str,c);
printf("result:");
puts(str);
}
void delchar(char*str,char c)
{
int i,j;
i=j=0;
while(str[i]!='\0'){
if(str[i]!=c){
str[j]=str[i];
j++;
}
i++;
}
str[j]='\0';
}

7、

/*字符串排序:输入5个字符串,按由小到大的顺序输出。试编写相应程序。*/

#include<stdio.h>
#include<string.h>
int main(void)
{
int i,j;
char a[5][20], t[20];
printf ("请输入5个字符串:\n");
for (i = 0; i < 5; i++)

scanf("%s",a[i]);
//控制循环次数
for (i = 1; i < 5; i++)
{for(j=0;j<5-i;j++)
if(strcmp(a[j],a[j+1])>0)
{strcpy(t,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],t);
}

}

printf("输出:\n");
for (i = 0; i < 5; i++)
printf("%s\t",a[i]);
printf("\n");
return 0;
}

 

感想:只能将一个指针的值赋给另一个相同类型的指针。

          赋值前必须先定义。

          不能用数值作为指针变量的初值。

 

posted @ 2019-06-19 18:24  张嘉雯  阅读(200)  评论(0编辑  收藏  举报