习题12(指针2)
1、编写函数strlen:功能为求任意字符串的长度,形参要求用指针变量。
编程实现:求任意字符串长度。
#include <stdio.h>
char strlen(char *ch)
{
int i=0;
for(;*ch!='\0';ch++)
i++;
return i;
}
void main()
{
char ch[100];
printf("请输入字符串:");
gets(ch);
printf("字符长度为:%d",strlen(ch));
}
2、编写函数scount:功能为统计一个字符串在另一个字符串中出现的次数。
编程实现:求一个字符串在另一个字符串中出现的次数。
#include <stdio.h>
#include <string.h>
char scount(char *x,char *y)
{
int count=0,i,j;
for(i=0;i<strlen(x);i++)
{
for(j=0;j<strlen(y);j++)
if(x[i+j]!=y[j])
{
break;
}
if(j==strlen(y) && j!='\0')
{
count++;
}
}
return count;
}
void main()
{
char m[100],n[100];
int i;
printf("请输入字符串:");
gets(m);
printf("请输入要查找的字符:");
gets(n);
i=scount(m,n);
if(i==-1)
printf("没找到");
else
printf("%s在%s出现了%d次\n",n,m,i);
}
3、编写函数divi:功能为求出任意正整数的所有不是偶数的因子并把它们按从小到大的顺序存放在数组中,要求函数返回数组地址,且数组最后一个元素为0。
编程实现:输出任意正整数所有的不是偶数的因子。
#include<stdio.h>
void divi(int x, int *p, int *count)
{
int i,j = 0;
for(i=1;i<=x;i++)
{
if(x%i == 0&&i%2 != 0)
{
*(p + j) = i;
j++;
}
}
*count = j;
}
void main()
{
int i, p[100],count, x;
printf("请输入整数:");
scanf("%d", &x);
divi(x, p, &count);
for(i=0;i<count;i++)
{
printf("%d ",*(p+i));
}
}