1.因式分解
#include
#include
using namespace std;
bool IsPrime(int n);
void Resolve(int n);
int main()
{
int n;
cout<0):";
cin>>n;
if(n==1)
cout<
else if(IsPrime(n))
cout<
else // >1 and not prime
Resolve(n);
cout<
return 0;
}
bool IsPrime(int n)
{
int k,i;
k=static_cast(sqrt((double)n));
if(n==1)
return false;
for(i=2;i<=k;i++)
{
if(n%i==0)
break;
}
if(i>k)
return true;
else
return false;
}
void Resolve(int n)
{
int i;
cout<
i=2;
while(1)
{
if(IsPrime(i)&&n%i==0)
{
cout<
n=n/i;
}
else
i++;
if(n==1)
break;
}
}
2.函数返回类型为指针需要注意的问题
#include
#include
typedef struct student
{
char sex;
char name[10];
}stu;
char *get();
int main()
{
printf("1. %s\n",get());
printf("2. %s\n",get());
return 0;
}
char *get()
{
stu doctor;
doctor.sex='M';
strcpy(doctor.name,"wang");
//方法1:分配堆(由程序员自己释放),返回局部变量的地址
char *s;
int len=strlen((char *)&doctor);
s=new char[len+1];
strcpy(s,(char *)&doctor);
return s;
//return (char *)&doctor;
}
char *get()
{
static stu doctor;//方法2:申明为static类型,返回局部变量的地址
doctor.sex='M';
strcpy(doctor.name,"wang");
return (char *)&doctor;
}

本文通过两个C++代码示例,分别讨论了因数分解的实现以及函数返回指针时应注意的问题。第一个例子展示了如何判断一个数是否为素数并进行因式分解,第二个例子则探讨了返回局部变量地址的两种方法:动态分配内存和使用静态变量,强调了内存管理和指针安全的重要性。
4765

被折叠的 条评论
为什么被折叠?



