1.不同 数据类型的的范围。如int char
6.整型变量(int):短整型(short int)(-3万~3万)(2字节),普通整型(int)(-21亿~+21亿)(4字节),长整型(这里跟普通整型没区别)。可再细分有符号和没符号的整型。 7.浮点类型变量(double) <表示的数值是模糊数>
用来存实数
具体类型:float(4字节 )单精度(7位有效数,6位小数)
double(8字节) 双精度(16有效数,15小数)
long double(12字节) 长双精度
A~Z :65~90 a~z:97~122 ‘0’~‘9’:48~57
课堂作业:接收用户输入的任意值,和需设置为0的位(二进制位第几位,),并将运算结果输出。
01110110 第5位 数的起点位是第0位
11011111 按位与 00100000
00000001 不能按位异(或)
01010110
作业1:求两个整数的最大公约数。(最高效的算法)// 8 , 4 最大公约数是4
作业2:判断一个整数是不是素数。
//只能被1和本身整除的数是素数
做项目的两大原则:
专业体现在细节。要注意出错细节的处理!
用户是个顽皮的小屁孩!代码要健壮,要能容错!
作业(小项目):实现一个查找指定子字符串find_str的函数,如果找到子字符串则将目标字符串中的子字符串替换成指定的另外一个字符串desc_str,例如:abcdefg中找def,找到后替换成DEF,最后整个字符串就变成了:abcDEFg.
如果没有找到指定的子字符串,则返回-1值,否则返回一个在字符串obj_str中的所找到的首字符对应的下标值
int strReplace(char obj_str[],char find_str[], char desc_str[])
//char str[50]=”abcdefg”;
//int pos=strReplace(str,”def”,”DEFFFFFA”);
//基本要求:实现等长替换
//进阶要求: 实现不等长的替换(内存操作函数)
//不需理会obj_str的空间是否够用的情况。
选做作业:使用可变参数技术,实现各个可变参数成员的值的累加效果,最后把等式显示出来,并打印累加的结果值
作业:实现汉诺塔的功能,将由小环到大环堆放的多个环(大环上边可放小环,小环下边不能放比它小的环)从一个位置搬到另一个位置的算法, 另外只提供一个缓冲位置(整体就三个位置空间)。 把搬运具体环(第几环)的过程打印出来(文字清单输出举例:将第几个环由哪一个位置搬到哪一个位置。将第几个环由哪一个位置搬到哪一个位置。 。。),第N环比第N-1环要大
int main(int argc,char* argv[])
__STDC__ 如果__STDC__已经定义,如果编译器是用GCC编译代码,这个宏会为1,如果是用G++或其它编译,它不为1。
作业:实现一个微型的mis(信息管理系统),保存QQ个人资料(姓名,QQ号,性别)。可以接受用户输入Q友个人资料,显示所有的Q友资料项(不定个数的Q友资料)。
用上自动动态结构数组或动态分配堆容间:
unsigned total=0;
struct student* pStu=NULL;
while(…){
…//接收用户输入Q友资料
Struct student tmp={…};//把用户的输入分别列入初始化项目
Struct student* tmpStu=pStu;
pStu=( struct student*)malloc(++total*sizeof(struct student));
memcpy(pStu,tmpStu,sizeof((total-1)*sizeof(struct student));
memcpy(pStu + total, &tmp,sizeof(tmp));
if(NULL!=tmpStu){free(tmpStu); tmpStu=NULL; }
//再问用户是否仍需输入
}
//现实意义:可以实现在未知元素个数情况下的数据存储。
作业:把上一次的作业(QQ相关)用结构来动态实现,在加上一个QQ会员简介成员(不定长度,但有最大上限)。要求尽可能的动态压缩结构(网络数据包的传输)的空间占用。
#include<stdio.h>
//工作中的结构:
typedef struct
{
//加上其它成员
long size;//统计个人简介动态堆空间长度
char* introduce;//个人简介 max:500K
}working_data; //进程内的结构定义
void temp=malloc(size); //动态分配不能超过结构的intruduce成员的上限
data*data=(data)temp;
memcpy(data->introduce.str,size);
客户端/服务器端本地结构(要把结构体写到硬盘):
typedef struct
{
//加上其它成员
long size;//统计个人简介动态堆空间长度
char introduce[500*1024];//个人简介 max:500K 要写进硬盘时不能用指针成员,需要等长的成员空间。为什么不能用指针成员?
}local_data; //进程内的结构定义