知识
循环(C)
接上篇
3.无明显循环次数——数值计算迭代
斐波那契数列(Fibonacci)
以输出前20项为例:
int i,f0,f1,fn;
f0=f1=1;
printf("%5d%5d",f0,f1);
i=1;
while(i<19){
fn=f0+f1;
printf("%5d%5d",fn);
f0=f1;
f1=fn;
}++i;
4.死循环
break 语句用于强制结束循环。
可以利用死循环进行累加,通过break跳出结束。也可以架一个无穷无尽的死循环,通过break进行功能选择。
eg:判断素数
int t,i,x;
scanf("%d",&x);
for(i=2;i<x;i++){
if(x%i==0) break;
}
if(i==x){
printf("NO")
}
else printf("YES")
函数(C)
fflush(stdin);<stdlib.h>
清除键盘缓冲
链表(单向)
链表是一种最常见你的采用动态存储分配方式的数据结构。链表中,每个元素称为一个“结点”,每个结点包含存储需要使用的信息和指向另一个结点的指针。
1.建立和输出链表
链表的每个结点都要包含数据域和指针域,即包含不同类型的数据,所以结点的数据类型必须选用结构体类型。C语言允许递归定义。
eg:建立和输出有若干个学生记录的带头结点的单向链表。
#include<stdio.h>
#include<stdlid.h>
#define N sizeof(struct st)
struct st
{
long num;
char name[11];
float score;
struct st *next;
} ;
struct st *creat(void)
{
struct st *p1,*p2,*head;
head=p2=(struct st *)malloc(N);
p1=(struct st *)malloc(N);
scanf("%ld %s %f",&p1->num,p1->name,&p1->score);
while(p1->num!=0)
{
p2->next=p1;
p2=p1;
p1=(struct st *)malloc(N);
scanf("%ld%s%f",&p1->num,p1->name,&p1->score);
}
p2->next=NULL;
free(p1);
return head;
}
void main()
{
struct st *head;
head=creat();
print(head);
}
刷题感悟(C)
1.利用三目条件运算符快速给变量赋较大(小)值
#include<stdio.h>
int main(void)
{
int x=3,y=5;
int t;
t=x>y?y:x;
printf("%d",t);
return 0;
}
2.零碎小点
符号优先级“==”高于“&&”
break语句在多重循环中,只能退出最靠近
的那一层循环语句
指针类型是四个字节长度。(可以理解为指
针类型存储的是空间的地址,地址在计算机
中是以二进制存储的,是整数,整数是四个
字节,所以指针类型是四个字节)
3.C语言的执行过程
(1)file.c是源文件,通过编辑得到;
(2) file.obj是目标文件,即计算机能够处
理的由二进制指令组成的文件,通过对源
文件进行编译得到;
(3) file.exe是可执行文件,通过将目标文
件与其他目标文件或库函数连接得到。
4.函数有关
需要有返回值;
对指针一定要初始化指向(例如指向“空”----int *p->NULL;),写在函数里的指针很容易变成“野指针”;
使用malloc()函数可以随用随分配空间,是在内存中开辟的新空间,不是随机指向。
总结
继续加油!!
敲代码好快乐,我爱敲代码
恳请各位斧正错误,提出不足
谢谢各位看官!!