简单说一下我来华清一个月的经历和感受。来华清一个月真的让我感觉压力山大,让我对C语言的理解有了天翻地覆的变化。什么抓兔子,杀猴子,找猴王,约瑟夫问题,各种指针,一级指针,二级指针,指针数组,数组指针,函数指针等等,我能明显的感觉到头发越来越少,黑眼圈越来越大。正所谓,人多的路上不长草,智慧的脑袋不长毛,哈哈聪明绝顶。
曾经我一直以为学习C语言就是枯燥的乏味的,但是力哥的出现改变了我的看法。力哥是我们班的老师。他真是个清纯可爱美丽的一个大男孩,让我知道了原来还可以这样学习c语言。一开始刚来班级的时候我真不以为他会讲的多么好,因为感觉好年轻,但没想到现实狠狠抽了我一个嘴巴子。他真是满满的活力,你学习的时候能感受到他的激情,他真的会不厌其烦的把你问的问题讲解明白。他最近新晋升为奶爸,学校得带我们,回家得带孩子,真的很佩服他的毅力,不愧是新时代下的三好青年。
言归正传,来华清的节奏真的很快,一天从早上到晚上基本除了吃饭和每节课下课的十分钟休息都在上课,强度真的很大,必须要能坐不住板凳,讲课内容会更加系统更加充实,之前在学校学的几周的课,在这里几天就会学完,所以真是每天都在战斗状态。到这里真能看到很多差距,来之前我自学了一点,但吃老本真就是也就够我吃几天的。给我落差感最大的是,我真能感觉到有天赋和没有天赋真的会差很多,老师讲过知识以后,真的有人一会就把练习题做出来了,而我可能很久才能做出来,学习培养逻辑能力,编程思维很重要。勤能补拙,我能清楚的感觉到我每一天是比我前一天要会的更多,虽然成长比别人慢一点,但也在成长,希望大家一起共奋进。
分享几个代码:
打印输出100-999之间的所有水仙花数 水仙花数必须是三位数 水仙花数需要满足下面条件 例如 153就是水仙花数 满足条件 153 == 1*1*1 + 5*5*5 + 3*3*3 i = 153; 求出 百位 十位 个位 int a,b,c; a = i / 100; b = i / 10 % 10; // i % 100 / 10 c = i % 10; ///方法一 #includeint main(int argc, const char *argv[]) { //用for循环变量i代表100-999之间的每一个数 int i; int a,b,c;//用来保存 百位 十位 个位 for(i = 100; i <= 999; i++) { a = i / 100; b = i / 10 % 10;// i % 100 / 10 c = i % 10; if(i == a*a*a + b*b*b + c*c*c) { printf("%dn",i); } } return 0; }
斐波那契数列
输出Fibonacci数列前20项, 先正序输出,然后逆序输出。
0 1 2 3 4 5 6 7 8
1 1 2 3 5 8 13 21 34 .....
int a[20] = {1,1};
a[2] = a[1] + a[0]
a[3] = a[2] + a[1]
a[4] = a[3] + a[2]
....
a[i] = a[i-1] + a[i-2];
#include
int main(int argc, const char *argv[])
{
//0 1 2 3 4 5 19
//1 1 2 3 5 8 .......
int a[20] = {1,1};
int i;
//1.形成斐波那契数列,注意此处下标从2开始,一定要注意数组越界的问题
for(i = 2; i < 20; i++)// 2 ---- 19
{
a[i] = a[i-1] + a[i-2];
}
//上面的循环执行之后,形成一个数列
//2.正序打印
for(i = 0; i < 20; i++)
{
printf("%d ",a[i]);
}
printf("n");
//3.倒序打印
for(i = 19; i >= 0; i--)
{
printf("%d ",a[i]);
}
printf("n");
return 0;
}
冒泡排序
原理:每次两个数进行比较,从数组的前两个元素开始,如果前面的数 > 后面的数,就交换
第一趟会求出一个最大值,并且放在最后面,
然后 依此类推,经过最多N-1趟,排好序
#include
int main(int argc, const char *argv[])
{
int a[6] = {12,3,445,22,33,1};
int i,j;
//冒泡排序
for(i = 0; i < 6-1; i++)//外循环,代表找了几轮最大值
{
for(j = 0; j < 6-1-i; j++)//内循环控制的是两两相比较的次数
{
if(a[j] > a[j+1])//内循环用j当做下标,两两相比较
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
//将排序好序的数组打印输出
for(i = 0; i < 6; i++)
{
printf("%d ",a[i]);
}
printf("n");
return 0;
}
字符串拷贝 void mystrcpy(char *dst, char *src); #include#include //dest 目的 //src 源 void myStrcpy(char* dest, char* src) { int i = 0; //a[i] == p[i] == *(p+i) == *(a+i) while(src[i] != ' ')//while(*(src+i) != ' ') { dest[i] = src[i]; // *(dest+i) = *(src+i) i++; } //注意:一定要拷贝' ' dest[i] = ' ';// *(dest+i) = ' ' } int main(int argc, const char *argv[]) { char a[] = "hello"; char b[100] = { 0 }; myStrcpy(b,a); puts(a); puts(b); return 0; }
写一函数my_strlen,求一个字符串的长度,然后写个main函数测 #include//求字符串的长度 int myStrlen(char* p) //实参初始化形参 char* p = a; { int len = 0; int i = 0; while(*(p+i) != ' ') { len++; i++; } return len; } int main(int argc, const char *argv[]) { char a[100]; //需要将字符数组的首地址传递给myStrlen函数 puts("请输入要求长度的字符串:"); gets(a); printf("len is %dn",myStrlen(a)); return 0; }



