作业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;
}
我还需要复习巩固 所学的知识。。。