【函数 数组 指针】求整数因数

文章讲述了如何用C语言编写函数计算整数因数,以及两个字符串操作函数,包括字符串逆序和子串提取。
摘要由CSDN通过智能技术生成

题目描述

n求一个正整数(1~32767)的所有因数(能整除该数且小于其本身的数),数与数之间用空格隔开,例如输入12,输出:1 2 3 4 6

要求:设计一个函数 int  yinshu(int n,int *a)  //result将返回所有因数结果,因此,实际参数必须是数组;      void  output(int *a,int n);  //输出因数结果的函数

输入

一个整数

输出

所有因数

样例输入

12

样例输出

1 2 3 4 6

求整数因数即就是取余为0的数

//求N的因数
//k是因数的个数
//a[k]存储n的所有因数
int k=0;
for(int i=1;i<=n/2;i++)
{
  if(n%i==0)
  {
    a[k++]=i;
}

注意:取余I当然不能从0开始

#include<stdio.h>
int yinshu(int n,int *a);
void output(int *a,int n);
int main()
{
	int s,r[100],c;
	scanf("%d",&s);
    c=yinshu(s,r);
    output(r,c);
}
int yinshu(int n,int *a)
{
	int k=0,i;
	for(i=1;i<=n/2;i++)
	{
		if(n%i==0)
		{
			a[k]=i;
			k++;
		}
		
	}
	return k;
}
void output(int *a,int n)
{
	for(int i=0;i<n;i++)
	printf("%d ",a[i]);
}

【字符指针】【1】字符串逆序输出

题目描述

输入一个英文语句,然后逆序输出

输入

输入一行字符串

输出

逆向输出字符串

样例输入

Don't worry about me

样例输出

em tuoba yrrow t'noD

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100],*p;
	int len,i;
	gets(a);//shuchu 输入字符串
	len=strlen(a);
	for(p=a+len-1;p>=a;p--)
	{
		putchar(*p);
	}
}

问题 K: 【字符指针】【1】字符串子串提取

题目描述

设计字符串提取函数void substring(char *str1,char *str2,int index,int length);

该函数的功能是,从字符串str1中,从序号index开始(第1个字符的序号为0),提取length个字符,复制给字符串str2。如果从index起可提取的字符串不足length个,则全部提取。

输入

 2行
第1行是1个字符串
第2行是2个整数,第1个整数是起始序号,第2个整数是提取的字符个数。

输出

 提取的字符串

样例输入

hello,world 2 5

样例输出

llo,w

#include <stdio.h>
void substring(char *str1,char *str2,int index,int length);
main()
{   int idx,len;
    char a[200], b[200]; 
    gets(a); 
    scanf("%d%d",&idx,&len);
    substring(a,b,idx,len);
    printf("%s",b);
}
void substring(char *str1,char *str2,int index,int length)
{ char *p;
  for(p=str1+index;p<=ste+index+length-1;p++)
   { 
    //提示:在这里,除了把str1中的相应字符复制给str2外,还需要防止str1中的字符用完
    //即当str1中的字符用完时,不再复制字符,提前break掉for循环。如何检验str1中的字
    //符是否用完呢?
    if(*p==0)
    break;
    *str2=*p;
    str2++;
   }
    str[length-index]='\0;      //给str2添加结束符。
}

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值