刚来实验室的时候,我还是一个小白 。是一个刚开始对c语言迸发出兴趣的一个大学生。
来到实验室之前做的面试题,我都感觉到十分有趣而且新鲜好玩。那一天熬夜恶补c语言的各种知识(学的有点半拉磕叽的啊噗)还学了两种排序。
最后没想到的是我居然进来了!哇哈哈哈~贼开心
来到这里我发现这里全都是大佬。。c都学完了或者就差一点学完了,我真的感到亚历山大。。。
但也给了我动力。我知道和他们相比我和他们的差距有点大,但我会一直学习,成为一个优秀滴程序猿~毕竟我还是喜欢这个东西的。
来到实验室的这段时间里,我学了判断,循环,函数,数组等知识,也学习排序,还有队列和栈。当然在前面这些东西我也去各种网站找题一道一道的做了。今天是13号,离月底越来越近了。在这个月底之前我要学习完指针,结构体,文件,将c语言学习完,赶上进度,为即将到来的挑战尽可能的丰富自己。
在这期间我也做了很多有趣的问题,比如下面这个猜数游戏:这个程序是通过调用一个time函数来随机产生一个任意的数字,并通过while循环以及if判断语句,并用了count变量来存储输入次数。代码如下。
#include <stdio.h>
#include<stdlib.h>
#include <time.h>
int main()
{
srand(time(0));
int number=rand()%100+1;
int count=0;
int a=0;
printf("我已经想好了一个1-100之间的数");
do{
printf("请猜这个数:");
scanf("%d",&a);
count++;
if(a>number){
printf("你猜的数大了"); }
else if(a<number){
printf("你猜的数小了");}
} while(a!=number);
printf("用了%d次猜到了答案",count);
return 0;
}
除此之外我还学习了利用结构体和数组来解决队列的问题。这里定义了一个data数组作为队列的主体,用来存储内容。head为队首,tail为队尾。这个代码用来解决一串加密的数字。这串数字的解密规则如下:首先将第一个数删除,紧接着将第二个数放到这串数的末尾,在将第三个数删除并将第四个数放到这串数的末尾。。。。。直到剩下最后一个数,将最后一个数也删除。比如一串加密过的数字是:6 3 1 7 5 8 9 2 4。
代码如下。
#include <stdio.h>
struct queue
{
int data[100];//队列的主体,用来存储内容
int head;//队首
int tail;
} ;
int main()
{
struct queue q;
int i;
//初始化队列
q.head=1;
q.tail=1;
for(i=1;i<=9;i++)
{
//依次向队列插入9个数
scanf("%d",&q.data[q.tail]);
q.tail++;
}
while(q.head<q.tail)//队列不为空的时候执行循环
{
//打印队首并将队首出队
printf("%d ",q.data[q.head]);
q.head++;
//先将新队首的数添加到队尾
q.data[q.tail]=q.data[q.head];
q.tail++;
//再将队首出队
q.head++;
}
return 0;
}
输入:6 3 1 7 5 8 9 2 4
输出:6 1 5 9 4 7 2 8 3
代码在上面,我们来总结一下:队列是一种特殊的线性结构,他只允许在队列的首部(head)进行删除操作,这称为出队,而在队列的尾部进行插入操作,这称为入队。当队列中没有元素时(即head==tail),称为空队列 。这是一种先进先出(FIFO)的原则。
我还了解到队列将是我们今后学习广搜以及队列优化的Bellman-Ford最短路径算法的核心数据结构。
未完待续。。。