字符串
关键字和一些字符串函数
#include"windows.h"
#include"stdio.h"
int main()
{
char name[40];//替换为 char *name,有小小的区别。替换之后,内容不可改变。内存分配方式有区别。以后培训会讲到。
printf("_______________ is my name\r");// "\r" 代表光标回到行首
scanf("%s",name); // "%S"是字符串的控制符,name是 name[0]的首地址。
printf("my name is %s",name);
system("pause");
return 0;
}
字符串常见函数(strlen(),sizeof())
#include"windows.h"
#include"stdio.h"//strlen() 的头文件
int main()
{
char a[40]="xyz";
char b[40]="游戏开发";
printf("%d\t%d\n",strlen(a),strlen(b));//思考,如何判断汉字相等,换成sizeof(a)和sizeof(b)会怎样
system("pause");
return 0;
}
宏定义
#include"windows.h"
#include"stdio.h"
#define myname "wanghuizhang"
#define PI 3.1415926
#define getmax(a,b) (a)>(b)?(a):(b);//分号写不写看情况
#define plus(a,b) a+b
#define CH char
#define CHA (char *) //有优点。
#define PRINT(a,b){ \
printf("%d\n",a); \
printf("%d\n",b); \
}
int main()
{
int a=getmax(3,4)//末尾无需分号,因为宏定义中已经生硬的替换过了
printf("%d",a);
printf("my name is %s",myname);
system("pause");
return 0;
}
#undef PI
limits.h宏定义表格
稍作了解即可。
CHAR_BIT | char位数 |
CHAR_MAX | char最大 |
CHAR_MIN | char最小 |
SCHAR_MAX | 有符号char最大 |
SCHAR_MIN | 有符号char最小 |
UCHAR_MAX | 无符号char最大 |
SHRT_MAX | short最大 |
SHRT_MIN | short最小 |
USHRT_MAX | 无符号short最大 |
INT_MAX | int型最大 |
INT_MIN | int型最小 |
UINT_MAX | 无符号int最大 |
LONG_MAX | long int 最大 |
LONG_MIN | long int 最小 |
ULONG_MAX | 无符号long int 最大 |
LLONG_MAX | long long int 最大 |
LLONG_MIN | long long int 最小 |
ULLONG_MAX | 无符号long long int最大 |
FLT_MANT_DIG | float型尾数位数 |
FLT_DIG | float型最少有效数字位数 |
FLT_MIN_10_EXP | 带有全部有效数字float型的负指数的最小 |
FLT_MAX_10_EXP | float型的正指数的最大 |
FLT_MIN | 保留全部精度的float型正数的最小 |
FLT_MAX | float型正数的最大 |
FLT_EPSILON | float可以表示的,与1.00的最小差 |
printf 和 scanf 的 进一步研究和运用
常见的格式控制符
%s,字符串。
%c,单个字符。
%d,整数。%lld,长长整型。等等。(%llu无符号长长整型)
%e,%g,%f,打印浮点数。还有 %lf 等等。(%e为科学计数法打印,%f小数法打印,%g自动选择是否用科学计数法,e,f,g可以大写)
%%,打印一个百分号。
%o,八进制打印。%x十六进制打印。%p打印指针。
+,正数显示+号。(如%+10.3f)(如果+写成空格,则正好显示为空格)
-,左对齐。(如%-10.3f)
0,用0填充宽度。(如%010d,显示的是宽度为10的整数,左端无数的地方用零补齐)
#,显示进制的前置符号。(%#o,显示0开头的8进制数。%#0x,显示0x开头的16进制数)
scanf()中还有 例如 %*d的。(scanf("%d,%*d,%d",&a,&b,&c),意思是忽略 &b的输入。)
代码示例:
#include"windows.h"
#include"stdio.h"
int main()
{
char a[40]="xyz";
char b='v';
float c=3.33333;
double d=6666.66666666666666666666;
long int e=99999999;
printf("%s\n",a);
printf("%c\n",b);
printf("%f\n",c);
printf("%lf\n",d);
printf("%ld\n",e);
printf("%%\n");
system("pause");
return 0;
}
printf 和 scanf 的返回值 及对返回值的简单用法:(看代码后的注释)
#include"windows.h"
#include"stdio.h"
int main()
{
int a=printf("123\n");//a 的值为 4。因为有四个字符。
printf("%d",a);
system("pause");
return 0;
}
#include"windows.h"
#include"stdio.h"
int main()
{
int x,y,z;
int a=scanf("%d%d%d",&x,&y,&z);//a 的值为 3。因为输入3个数。
char m[20];
char n[20];
int b=scanf("%s%s",m,n);//b 的值为 2,因为输入2个。
printf("a=%d,b=%d",a,b);
system("pause");
return 0;
}
printf 和 scanf 的其他用法以后再研究。现阶段无法表述。
运算符和表达式
运算符有 + - * / = ++ -- , % << >> ?: == > < 等等 (用法太简单大家培训完也不会忘记,会长不写了)
代码示例:
#include"windows.h"
#include"stdio.h"
int main()
{
int sum=0;
int i=0;
while(i!=3)
{
i++;//i=i+1
sum+=3;//sum=sum+3;
}
//循环结束后,i 等于 3,sum 等于 9 循环3次。
int a=3,b=4;
int c=a>b?a:b;//(式子含义为,a大于b吗?大于就等于a,否则就等于b)
int k1=0,k2=0;
printf("k1=%d,k2=%d\n",k1++,++k2);//(++在前则先加后用,++在后则先用后加)
system("pause");
return 0;
}
#include"windows.h"
#include"stdio.h"
int main()
{
int i=0;
int sum=0;
while(i++!=100)
{
sum=sum+i;//sum+=i;
}
//循环结束后,i 等于 100,sum 等于 5050 循环101次。
printf("%d",sum);
system("pause");
return 0;
}
优先级的了解和类型转化
类型转化的简单例子:
#include"windows.h"
#include"stdio.h"
int main()
{
float a=3.9998877;
int b=(int)a; //把 a 转化成整形 再赋值给 b 。
printf("%d",b);
system("pause");
return 0;
}
了解一下强制类型转化。和优先级顺序。(最简单的就是先乘除后加减了)
math.h头文件的介绍
#include"windows.h"
#include"stdio.h"
#include"math.h"//数学函数头文件
int main()
{
int a1=-5;
int a2=abs(a1);// a2 等于 a1 的绝对值 abs(),对整数取绝对值。
double b=fabs(-1.533);//b 等于 -1.533 的绝对值 ,fabs(),对浮点数取绝对值
double c=sin(3.14159);//这就不用解释了
double d=cos(3.14159);//这也不用解释了
double e1=pow(2,0.5);//2 的 0.5 次方。
double e2=pow(10,8);//10 的 8 次方
double f=sqrt(25);// f 等于根号下25
int g=ceil(3.15);//ceil()向上取整,
system("pause");//函数还有很多,没必要记住多少。
return 0;
}
稍作了解,知道有这些函数就行,用到的时候就翻一翻C语言手册。这些函数都是别人写好的,其实我们自己也可以写。以后的培训中教大家写,自己能写出出色的头文件说明学的还可以了。数学要好好学啊,会长我写代码的时候因为数学不好,经常写着写着就去翻数学书了。数学不好也没关系,用到的时候从新学吧。
while(),和do{}while();语句入门(C语言_005继续深入研究循环语句)
whil(),先判断再执行。do{}while();先执行一次,再循环。
#include"windows.h"
#include"stdio.h"
int main()
{
int i=0;
int sum=0;
do
{
i++;
sum+=i;
}
while(i<100);
printf("%d\n",sum);
system("pause");
return 0;
}
知识扩展:
1.math.h 的函数:
https://msdn.microsoft.com/zh-cn/library/system.math.aspx
2.运算符的优先级: