/*时间:2011年9月16日15:57:23目的:学习链表的创建和使用,读懂程序*/# include <stdio.h># include <malloc.h># include <stdlib.h>//定义了一个链表节点的数据类型struct Node{ int data; //数据域 struct Node * pNext; //指针域};//函数声明struct Node * create_list(void);void traverse_list(struct Node *);int main(void){ struc...
补码的精华在于一幅图片
二进制转十进制:首位是0表示正整数,按常规方法转首位是1表示负整数,对所有位取反,加1,再按常规方法转,得到的是其绝对值
# include <stdio.h># include <string.h> //使用strcpy函数,需要使用string.h头文件struct Student{ int age; char sex; char name[100]; //定义字符串类型};int main(void){ struct Student st; st.age = 18; st.sex = 'F'; strcpy(st.name,"张三"); //用字符串赋值,需要用到字符串拷贝函数strcpy,strcpy是string+...
/*时间:2011年9月9日15:02:27目的:以学生成绩管理为例学习结构体使用的基本知识要求:了解定义结构体的三种方法,掌握推荐使用的第一种 掌握结构体初始化和赋值的方法 熟练掌握取出结构体成员的两种方法 1. 变量名.成员名 2. 指针变量名->成员名 (这种更常用) 认真体会为什么两者等价*/# include <stdio.h>//定义结构体的第一种方法,推荐使用struct student //定义一个结构体,实际上是定义了一个叫struct student的复合数据类型{int age; ...
/*时间:2011年9月8日16:21:28目的:学习构造构造数组的方法,了解动态数组使用上与静态数组一样简单,并体会动态数组的优点备注:优点包括 1.动态数组的长度可由程序员输入,不必事先指定 2.动态数组的内存可由程序员手动分配和释放 3.动态数组的长度可由程序员手动增长或缩短 4.动态数组方便进行跨函数使用(这个以后在学)*/# include <stdio.h># include <malloc.h> int main (void){ int a[5]; //这是构造静态一维数组,如果int型占4个字节,所以系统自动分配了固...
/*时间:2011年9月7日14:26:51备注:动态内存分配,需要使用malloc函数,malloc是memory(内存)+allocate(分配)的缩写*/# include <stdio.h># include <malloc.h> //必须有,否则报错error C2065: 'malloc' : undeclared identifierint main (void){ int i= 5; //静态分配,分配了4个字节 int * p = (int*) malloc (4); ...
/*时间:2011年9月6日11:54:38目的:学习掌握指针与一维数组的关系和用法*/# include <stdio.h>//函数用来输出任何一个一维数组的内容void output (int * PArr,int len) //确定一个数组需要两个形参,1是数组的首个元素的地址,2是数组的长度 //必须要有长度,因为数组不像字符串有结束的标志 { int i; for (i=0; i<len; ++i) { // printf("%d ...
/*时间:2011年9月5日11:38:08目的:通过经典的指针程序,互换两个数字,掌握函数中指针的用法*/# include <stdio.h>void huhuan1 (int, int); //对函数前置声明,一般声明的时候不写形参void huhuan2 (int*,int*);void huhuan3 (int*,int*);int main (void){ int a = 3; int b = 5; huhuan1 (a,b); //程序执行到这里后调用函数,为形参a\b分配内存空间,当...
常见错误1
# include <stdio.h>int main (void){ int * p; int i = 3; *p = i; //这样写是错的,前面定义了两个变量,p和i。这条语句把i赋值给了以p变量里内容为地址的另一个变量 //p变量里的内容没定义,是个垃圾值,那么以这个垃圾值为地址的变量是什么并不确定 //这时候的赋值,指不定会把那里给篡改了,尽管编译时可能不报错或者不警告,但执行起来可能会出问题 printf("%d\n",*p); return 0;}
...
发现指针太绕人了,老师说要慢慢的学,小心翼翼的学,呵呵,别怕繁琐,还是从最简单的一个程序一个程序来吧
#include<stdio.h>int main (void){ int * p; //p是变量的名字,int * 表示p变量中存放的是 int型变量 的地址 //int* p 不表示定义了一个 叫*p的 int型的 变量 //正确的理解是,p是变量名 p变量的数据类型是int *型。所谓int *型,实际就是存放 int型变量 的地址的类型 int i = 3; int ...
/*时间:2011年8月23日10:58:04目的:掌握数组的用法*/# include <stdio.h>int main(void){ //数组的定义 int i; int a[5]; //定义一个数组,[]中的5表示数组中元素的个数,这5个元素分别是a[0],a[1],a[2],a[3],a[4] printf("%d\n",a[5]); //想输出一个数组的所有元素,这样写是错误的,只有在定义时[]中的5才表示元素个数,除此以外只表示下标 for(i=0; i<5; ++i) //输出一个数组中的所有元素...
/*时间:2011年8月22日10:04:21功能:简单的电梯程序,输入楼层号,显示对应楼层的欢迎词目的:练习switch,以及switch中break的用法*/# include <stdio.h># include <math.h>int main(void){ int i; char j; char ch; do { printf("输入想去的楼层号\n"); //理解switch最典型的程序就是电梯程序 scanf("%d",&i); ...
/*时间:2011年8月19日11:54:55功能:输入一元二次方程的3个系数,判断解的个数,并求出解目的:改善之前学过的一元二次方程代码,掌握do...while的用法*/# include <stdio.h># include <math.h>int main(void){ double a,b,c; double delta; double x1,x2; char ch; do //do...while主要用于人机交互 { ...
/*时间:2011年8月17日16:44:54功能:键盘输入一个自然数n,输出斐波拉契数列第n项的值目的:练习while循环的用法注释:斐波拉契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…… 通项公式为F(0) = 0,F(1)=1,F(n)=F(n-1)+F(n-2) (n≥2),*/# include <stdio.h>int main(void){ int f0 = 0; int f1 = 1; int f2; int n; int m; printf("请任意输入一个自然数,按回车结束\n"); scanf(...
/*时间:2011年8月17日15:45:14功能:判断输入的数是否是回文数目的:掌握while循环的用法,体会while和for的区别注释:回文数是指一种正着读、倒着读都一样的数,如12321*/# include <stdio.h>int main(void){ int val; //用来保存输入的数 int m; int sum = 0; printf("请任意输入一个自然数,按回车结束\n"); scanf("%d",&val); m = val; ...
/*时间:2011年8月16日13:22:48功能:1.求1到100的奇数之和 2.求1到100的偶数只和 3.求1到100的奇数的个数 4.求1到100的奇数的平均值目的:完成课后习题,练习for循环用法*/# include <stdio.h>int main(void){ int i; int odd = 0; //odd表示奇数的和 int even = 0; //even表示偶数的和 int number = 0; //number表示奇数的个数 float average...
/*时间:2011年8月16日10:41:05功能:计算1+1/3+1/6+...1/n,(n<=100)的结果目的:掌握for与if嵌套的用法,并了解强制类型转化的方法*/# include<stdio.h>int main(void){ int i; float sum = 1; //这里sum=1是因为当i=1时,i%3==0为假,注意与之前例子中sum=0的区别 for (i=1; i<=100; ++i) //...
1.if中错误使用空语句
/*时间:2011年8月11日15:41:26目的:注意在使用if时常见的一种错误:空语句*/# include <stdio.h>int main(void){ if (2 > 3); //这里多了一个分号;实际上这一个分号被认为是一条空语句 printf("AAAA\n"); //如果没有哪个分号,这条语句应该因为表达式为假而不执行 printf("BBBB\n"); //那么不出错的时候最后会输出BBBB/*这里带有空语句的代码可写成下面的形式,更好理解if (2 > 3); ...
/*时间:2011年8月10日11:53:03功能:对通过键盘任意输入的3个整数由大到小排序目的:利用已学的printf、scanf、if完成简单功能,掌握两个数字互换位置的方法*/# include <stdio.h>int main(void){int a, b, c; int t;printf("请任意输入三个整数,以空格间隔,按回车结束\n");scanf("%d %d %d",&a,&b,&c); //按规则通过键盘输入三个整数,比如2 5 0if (a < b) //当a<b时互换顺序,这样把较大的放在前面{ t...
/*时间:2011年8月9日16:27:16目的:测试if的用法及注意事项*/# include <stdio.h>int main(void){/*if的用法格式:if (表达式) 语句功能:如果表达式为真执行语句;如果表达式为假,语句不执行*/ if (3 > 2) //如果括号里的表达式为真,执行下边的语句 printf("AAAA\n"); //这里3>2为真,所以执行printf,最后输出AAAA if (3 < 2) printf("BBBB\n"); //这里3<2为假,所以pr...