8月24日
今天没有上新课,而是自己做了一个用最简单的C语言的ATM机,因为没有学到循环,而又不能用GOTO,所以都是一通到底的,自己的好多想法想加在上面都没办法写出来,这才感觉到书到用时方恨少,毕竟才开始学习C语言,而且是最基础的,所以能做成这样觉得还是挺有成就感的,自己做的ATM机的模型,第一次做这么贴近生活,实实在在的东西,感觉有点激动,对自己以后的道路也充满了希望和期盼。
在写代码的时候,出现了很多错误,在不断的改错,不断的纠正中把代码写了出来,并且能够成功运行,这一次次的失败,一次次的克服,充满了成就感,我想很多程序员喜欢写代码其实是喜欢这种不短的改正错误,不短的战胜困难的成功喜悦的感觉吧。
8月25、26日
今天学习了循环结构,一共有三种循环结构:
for循环:(最得最多的循环,先验循环)
for (表达式1; 表达式2; 表达式3)
{循环体语句}
表达式1只执行一次,初始化循环的控制变量
表达式2是判断这个循环是不是进行的条件
表达式3就是自增长
如:for (sum = 100; sum <1000; sum++)
{
a = sum / 100 ;
b = sum /10 %10;
c = sum % 10;
if (sum == a * a * a+ b * b * b+ c * c * c)
{
printf ("%d = %d*%d*%d+%d*%d*%d+%d*%d*%d\n",sum,a,a,a,b,b,b,c,c,c);
}
}
while循环:(先验循环,一般用于达到某个条件不循环,不知道要循环多久的)
while(表达式)
{循环语句}
表达式就是满足的条件
do...while循环:(后验循环)
do
{循环语句}
while(判断表达式);
至少执行一次循环,而for , while 至少执行0次
break是跳出本层循环
continue是跳出本次循环,不一样
在循环里面里面再循环,二重循环,这个总共要循环这两个循环的乘积
for(表达式1;表达式2;表达式3)
{
for(表达式1;表达式2;表达式3)
}
当然可以把内循环换成 while循环或者do....while循环,也可以换成选择语句来进行选择
说实话,这循环真的有点难,很多问题都不能及时的想到,有时候就根本就不知道该怎么入手,这两个每天做作业都要做得很晚才能睡觉,而且还不一定能作对,感觉很受打击,上课老师讲的时候都能够听懂,但是就是自己做的时候不能够及时的想到,哎,一下子都难起来了,遇到了学习一来第一次挫折,虽然这样,但是我相信我可以过去的,只要我认真的学,认真的听,那么我肯定能够走出这个循环的,我对自己有信心,加油!!
8月27、28日
星期天啊!一个痛苦的礼拜天,面对这三道题的星星,感觉如从下手啊,最典型的大星星,差点让我的人生失去意义,在for循环里循环了几个小时才打出了第一个星星,弄得满头都是小星星,这个没有很好的逻辑思维能力真的很痛苦啊,但是打出来了后头一看,很简单,很有规律啊,可是面对第二题第三题的时候,总是错错错,都不知道计算机是第几次进入死循环了。星星啊,确实让我痛苦了很久,因为都在打星星,除了逻辑思维能力有点增强,我没感觉哪里有甚么收获,可能那些星星就是最大的收获吧!
8月29日
今天学习了数组,数组就是很多同一类型的变量的集合,分为一维数组,二维数组,多维数组
数据类型 数组名 【整型常量表达式】
数组内的所有的元素都是同一数据类型
数组名【下标】————下标全部是从0开始的
在使用数组的时候都是先要给他们初始化的
如:
a【18】={0};
a【12】【31】= {0};
二维数组的【】【】就是整个元素的行和列 几行几列 共有【】*【】个元素
给一维数组 二维数组初始值:
如:
a【4】= {1,2,3,4};
a【3】【3】 = { {1,2,3}{1,2,3}{1,2,3} };
8月30日
字符串:
字符串都是char类型的变量
他的用法和数组差不多,只是把数据类型变成char类型的
在整个字符串中最重要的就是‘/0’,这是每个字符串的最后一个字符,这个字符也表示着这个字符串的结束
在输入字符串的时候 %s 后面没有地址符 &
我觉得在学习字符数组的时候只要把数据类型和‘/0’弄清楚,那么他和数组没有多大的区别,只是把里面的元素换成了字符而已,在输入打印的时候注意地址符的时候,那么字符数组这一节我感觉就没多大问题了,只有掌握了数组也就掌握了字符数组。
补充:
#include <stdio.h>
#include <string.h>int main()
{
char str0[50],str1[50];
int i = 0;
printf("请输入第一个字符串:");
scanf("%s",str0);
printf("请输入第二个字符串:");
scanf("%s",str1);
//strlen()函数--得到字符串的长度
/*
for(i = 0; i < strlen(str0); i++)
{
printf("%c\n",str0[i]);
}
*/
//strcmp()函数--比较两个字符串的大小
/*
if(strcmp(str0,str1) == -1)
{
printf("前一个比后一个小");
}
else if(strcmp(str0,str1) == 0)
{
printf("两个字符串相等");
}
else
{
printf("前一个字符串比后一个大!");
}
*/
//strcpy()函数--将第二个字符串拷贝给第一个
/*
strcpy(str0,str1);
printf("%s\n",str0);
*/
//strcat()函数--将第二个字符串连接到第一个字符串的后面
strcat(str0,str1);
printf("%s\n",str0);
}
strlen()函数--得到字符串的长度
strcat()函数--将第二个字符串连接到第一个字符串的后面
strcmp()函数--比较两个字符串的大小
strcpy()函数--将第二个字符串拷贝给第一个
8月31日
c语言的数据类型:
基本数据类型 指针类 结构类 共用类 枚举类
结构体类型:就是几个基本数据类型的集合 ,最大的有点就是牵一发而动全身 主要的就是struct的使用方法
如:
#define STUDENT struct student
struct student
{
char name[20];
char gender;
int age;
};
int main()
{
STUDENT stu[5];
int i = 0;
for(i = 0; i < 5; i++)
{
printf("请输入你的名字:");
scanf("%s",stu[i].name);
getchar();
printf("请输入你的性别(M|F):");
scanf("%c",&stu[i].gender);
printf("请输入你的年龄:");
scanf("%d",&stu[i].age);
}
printf("%d",sizeof(STUDEN));
}
struct student 相当于是定义了一个数据类型,里面包含了char类型, int类型
使用的时候在输入保存数据的时候要用‘、’来指明是在struct中的哪一个类型,这个‘、’绝对不能少
sizeof是打印占有多少个字节 长度
c编译器的空间分配是4个字节4个字节的分, 不满四个字节,在接相加超过4个字节的数据时要重新另起一行,那剩下的不用但是要占有,所以说在算的时候要加上占有的
共用类:
就是在这个共用类型里可以使用它有的任何一个数据类型,不再是单一的了,但是在答应的时候最后一个要覆盖前面的,显示不出来
如;
include <string.h>
union myunion
{
int a;
char b;
char name[20];
};int main()
{
union myunion m;
printf("%d\n",sizeof(m));
m.b = 'A';
m.a = 10;
strcpy(m.name,"Hello");
printf("%s\n",m.name);
}
最后printf出来的10!