一·算法内容
例如
递归求阶乘和
#include <stdio.h>
double fact(int n);
double factsum(int n);
int main()
{
int n;
scanf("%d",&n);
printf("fact(%d) = %.0f\n",n,fact(n));
printf("sum = %.0f\n",factsum(n));
return 0;
}
double fact(int n)
{
int i,sum=1;
for(i=1;i<=n;i++)
sum*=i;
return sum;
}
double factsum(int n)
{
int i,j,sum1,sum2=0;
for(i=1;i<=n;i++)
{
sum1 = 1;
for(j=1;j<=i;j++)
sum1*=j;
sum2+=sum1;
}
return sum2;
}
递归求简单交错幂级数的部分和
#include <stdio.h>
double fn(double x, int n);
int main()
{
double x;
int n;
scanf("%lf %d",&x,&n);
printf("%.2f\n",fn(x,n));
return 0;
}
double fn(double x,int n)
{
double f;
if(n==1)
{
f=x;
}
else
{
f = pow(-1,n-1)*pow(x,n)+fn(x,n-1);
}
return f;
}
二·存储类别
1.自动变量
自动变量(Automatic Variable)指的是局部作用域变量,具体来说即是在控制流进入变量作用域时系统自动为其分配存储空间,并在离开作用域时释放空间的一类变量。
int 类型标识符 变量名;
2.寄存器变量
在程序运行时,根据需要到内存中相应的存储单元中调用,如果一个变量在程序中频繁使用,例如循环变量,那么,系统就必须多次访问内存中的该单元,影响程序的执行效率。因此,C\C++语言还定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量。
register 类型标识符 变量名;
3.静态变量
静态变量(Static Variable)在计算机编程领域指在程序执行前系统就为之静态分配(也即在运行时中不再改变分配情况)存储空间的一类变量。与之相对应的是在运行时只暂时存在的自动变量(即局部变量)与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。
static 类型标识符 变量名;
4.外部链接,内部链接
extern 类型标识符 变量名;
5.多文件互相连接
目前正在学习进度中,正在创建工程。
三·链表
目前已经基本掌握并了解了单向链表,正在补充知识了解ADT接口
#include <stido.h>
#include <string.h> //提供strcpy()
#include <stdlib.h> //提供malloc()
#define TSIZE 4
struct film
{
char title[TSIZE];
int rating; struct film *next; //指向链表中的下一个结构
};
char *s_get(char *st, int n); int main(void)
{
struct film *head = NULL;
struct film *prev, *current;
char input[TSIZE]; //收集并存储信息
puts("Enter first movie title:");
while(s_get(input,TSIZE)!=NULL && input[0]!="/0")
{
current = (struct film *)malloc(sizeof(struct film));
if(head==NULL) //第一个结构
head==current;
else //后续结构
prev->next = current;
current->next = NULL;
strcpy(current->title,input);
puts("Enter your rating <0-10>:");
scanf("%d",¤t->rating);
while(getchar()!='\n')
{
continue;
}
puts("Enter next movie title (empty line to stop):");
prev = current;
}
//显示电影列表
if(head == NULL)
printf("No data entered. ");
else
printf("Here is the movie list:\n");
current = head; while(current!=NULL)
{
printf("Movie: %s Rating: %d\n",current->title,current->rating);
current = current->next;
}
//完成任务,释放已分配的内存
current = head;
while(current!=NULL)
{
current = head;
head = current->next;
free(current);
}
printf("Bye!DanDan!\n");
return 0;
}