一、基本知识。
1、函数定义形式 类型 函数名
{
语句序列
}
2、函数返回值类型,函数体中由return语句返回的值的类型,没有返回值其类型为void。
3、形式参数表 逗号分隔的参数说明表列,缺省形式参数时不能省略圆括号。
一般形式为:类型 参数1,类型 参数2,...,类型 参数n。
4、实际参数表与形式参数必须在个数,类型,位置一一对应。
5、形参的数据类型必须一一说明函数调用,调用形式,函数名(实参)。
6、类型名 & 引用名 = 某变量名;
7、指针变量:其内容为地址(存储位置) 的变量,简称指针。它所指向的地址上存放的变量称作目标变量。
8、函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。
9、*x指针变量
*x说明/引用变量
10、s*=*(p+i)把右边值给左边变量,左边变量扩大倍数重新赋值。
11、在正常语句中,指针变量前加“*”是指取指针变量中的目标变量(目标变量取地址给指针变量),在说明变量时,前面加“*”代表定义指针变量前面加“&”代表引用变量。
12、递归定义:使问题向边界条件转化的规则。递归定义必须能使问题越来越简单。
递归终止条件:也就是所描述问题的最简单情况,它本身不再使用递归的定义。
13、给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。
(2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
(3) 按此规则进行处理,直到不能再添加自然数为止。
二、例题详解。
{ int a[10], i;
int *p;
for (i=0; i<10; i++)
cin>>a[i];//输入数组元素
for (p=a; //指针变量赋值 p<a+10; p++//指向下一个元素)
cout<<*p<<‘\t’;//输出指针指向的数据
}
{ int a[10], i;
int *p=a;
for (i=0; i<10; i++)
cin>>a[i];
for (i=0; i<10; i++)
cout<<*p++<<‘\t’;
} *p p=p+1
当n=12时,共有8种不同的分解式:
对于给定的正整数n,编程计算n共有多少种不同的分解式。
输入
数据有多行,给出正整数n
(1≤n≤2000000000)。
输出
每个数据输出1行,是正整数n的不同的分解式数量。
12=12
12=4*3
12=3*2*2
12=2*6
12=2*3*2
12=2*2*3
void solve(int n)
{
if (n==1) total++; //获得一个分解
else for (int i=2; i<=n; i++)
if (n%i==0) solve(n/i);
}
int n;
while( cin>>n)
{
total = 0;
solve(n);
cout<<total<<endl;
}
对c++这门学科,对我来说是一门非常困难的一门课,我会花最大经历去学习。
经过,只几天的学习,我知道简单的函数思路,也知道了大体的做题思路,上学期我有太多东西不会,导致这学期我跟的很慢,但我不会放弃,我会坚持把它学好!
我会先把基础搞明白,在开始刷题,慢慢追上大家的脚步!