18.7.28

作业1:题目: 请编写一个C函数,该函数将一个字符串逆序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void string_reverse(char *ptr,char *str)
{
/*
	int i,len_ptr;
	len_ptr=strlen(ptr);
	for(i=0;i<len_ptr;i++)
	{
		str[i] = ptr[len_ptr - i];
	}
*/
   int i,len_ptr;
   len_ptr=strlen(ptr);
   ptr += len_ptr -1;//将指针更改指向至字符串最后一个字符。
   for(i=0 ; i< len_ptr;i++)
    {
	   *str = *ptr;
		str++;
		ptr--;
    }

}
int main()
{
	char *ptr = "helloworld!";//ptr指向helloworld!字符串helloworld!是常量,不能够被修改
	char *str = (char*)malloc(sizeof(char)* 64);
	string_reverse(ptr,str);
	printf("%s\n",str);
	return 0;
}

作业2

 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出

/*************************************************************************
    > File Name: training4-2.c
    > Author: ma6174
    > Mail: [email protected] 
    > Created Time: 2018年07月28日 星期六 17时02分34秒
 ************************************************************************/

#include<stdio.h>
#include<stdlib.h>

void  func1(int p)
{
	int i,k = 1,res =0 ,tmp;
	tmp = p;
	while(tmp)
	{
		i = tmp % 2;
		res = res + k * i;
		k = k*10;
		tmp = tmp / 2;
	}
	printf("%d\n",res);
}

void func2(int p)
{
	int tmp;
	tmp = p;
	char octal[64];
	sprintf(octal,"%o",p);
	printf("%s",octal);
}

void func3(int p)
{
	int tmp;
	tmp = p;
	char *hex = (char*)malloc(sizeof(char)*64);
	sprintf(hex,"%x",p);
	printf("%s",hex);
}

int main()
{
	int s;
	printf("请输入一个整数\n");
	scanf("%d",&s);
	printf("请选择这个整数转化成的进制:\n1.二进制 2.八进制 3.十六进制\n");
	int i;
	scanf("%d",&i);
	switch(i)
	{
		case 1: func1(s);break;
		case 2: func2(s);break;
		case 3:	func3(s);break;
		default: printf("error!");break;
	}
	return 0;
}

作业3

输入一个字符串,计算字符串中子串出现的次数

/*************************************************************************
    > File Name: training4-3.c
    > Author: ma6174
    > Mail: [email protected] 
    > Created Time: 2018年07月28日 星期六 18时48分06秒
 ************************************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int cmp(char *x,char *y)
{
	int i,lenx,leny,count = 0;
	lenx = strlen(x);
	leny = strlen(y);
	if(lenx < leny)
	{
		printf("error!\n");
		exit(1);
	}
	for(i=0; i<=lenx -leny ; i++)
	{
		if(strncmp(x+i,y,leny) == 0)//地址向后一个字符长度为段字符元素个数和短字符串比较
		{
			count++;
		}
	}
return count;
}

int main()
{
	int a,lenx,leny,count;
	char *str,*ptr;
	str = (char*)malloc(sizeof(char)*64);
	ptr = (char*)malloc(sizeof(char)*32);
	printf("请输入一个字符串:\n");
	scanf("%[^\n]",str);//正则表达式 接受字符直到回车。
	printf("请再输入一个字符串: \n");
	scanf("%s",ptr);
	count = cmp(str,ptr);
	printf("子字符串的个数是:%d",count);
	return 0;
}

我还需要复习巩固 所学的知识。。。

猜你喜欢

转载自blog.csdn.net/qq_41481342/article/details/81264158
今日推荐