题目描述
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添加结束符。
}