基本格式
#include <stdio.h>
int main()
{
printf("HELLO WORLD\n");
return 0;
}
基本运算符
#include <stdio.h>
int main()
{
int a=11,b=2,c,d,e,f;
c=a+b;
d=a-b;
e=a%b;
f=a/b;
printf("c=%d\n",c);
printf("d=%d\n",d);
printf("e=%d\n",e);
printf("f=%d\n",f);
printf("c=%d,d=%d,e=%d,f=%d",c,d,e,f);
return 0;
}
定义宏与数据获取(数据输入)
#include <stdio.h>
#define PAI 3.1415926
int main()
{
double r;
printf("请输入半径:");
scanf("%lf",&r);
printf("圆的周长是:%lf\n",2*PAI*r);
printf("圆的面积是:%lf\n",PAI*r*r);
return 0;
}
获取代码scanf
printf("请输入:");
scanf("%d",&a);
重点:获取数据格式%d/lf, &&&&&&&&&&&&
定义宏常量格式#define
位于 预处理命令区#开头
#define 名称 数值
const常量
定义常量且能定义数据类型,位于只读存储区。
#include <stdio.h>
int main()
{
const double PAI = 3.1415926;
double r;
printf("请输入半径:");
scanf("%lf",&r);
printf("圆的周长是:%lf\n",2*PAI*r);
printf("圆的面积是:%lf\n",PAI*r*r);
return 0;
}
数据类型转换
#include <stdio.h>
int main(void)
{
int m = 5;
printf("m/2=%d\n",m/2);
printf("(float)m/2=%d\n",(float)m/2);
printf("(float)(m/2)=%d\n",(float)(m/2));
return 0;
}
个体与整体
标准数学函数
#include <stdio.h>
#include <math.h>
int main(void)
{
float a,b,c,g,area;
printf("input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
g=(a+b+c)/2;
area=(float)sqrt(g*(g-a)*(g-b)*(g-c));
printf("area=%f\n",area);
return 0;
}
库函数:#include <math.h>
转义字符
'\n' //换行
'\r' //回车
'\t' //水平制表
'\0' //空字符,用于结束标志
'\v' //垂直制表
'\b' //退格
'\f' //走纸换页
字符的输入与输出
#include <stdio.h>
int main()
{
char ch;
printf("Press a key and then press Enter:");
ch = getchar();
ch = ch+32;
putchar(ch);
putchar('\n');
return 0;
}
if-else语句
#include <stdio.h>
int main(void)
{
int a,b,max;
printf("input a:");
scanf("%d",&a);
printf("input b:");
scanf("%d",&b);
if(a>b) max=a;
else max=b;
printf("max=%d\n",max);
return 0 ;
}
条件运算符
#include <stdio.h>
int main(void)
{
int a,b,max;
printf("input a:");
scanf("%d",&a);
printf("input b:");
scanf("%d",&b);
max = a>b?a:b;
printf("max=%d\n",max);
return 0 ;
}
表达式一(选择)?选择一:选择二
switch语句
限制int,char
#include <stdio.h>
int main(void)
{
int a,b;
char c;
printf("input a,b,c:");
scanf("%d,%c,%d",&a,&c,&b);
switch(c)
{
case'+':
printf("%d+%d=%d\n",a,b,a+b);
break;
case'-':
printf("%d-%d=%d\n",a,b,a-b);
break;
case'*':
printf("%d*%d=%d\n",a,b,a*b);
break;
case'/':
if(0==b)
printf("mistake\n");
else
printf("%d/%d=%d\n",a,b,a/b);
break;
default:
printf("mistake\n");
}
return 0 ;
}
逻辑判断符
判断是否为闰年
#include <stdio.h>
int main(void)
{
int a;
printf("input:");
scanf("%d",&a);
if((a%4==0)&&(a%100!=0)||(a%400==0))
{
printf("输入年份是闰年\n");
}
else
{
printf("输入年份不是闰年\n") ;
}
return 0 ;
}
循环控制结构
for循环
#include <stdio.h>
int main()
{
int i,n,sum;
printf("input n:");
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
{
sum=sum+i;
}
printf("sum=%d",sum);
return 0;
}
while循环
#include <stdio.h>
int main()
{
int i,n,sum;
printf("input n:");
scanf("%d",&n);
sum=0;
i=1;
while(i<=n)
{
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
do-while循环
#include <stdio.h>
int main()
{
int i,n,sum;
printf("input n:");
scanf("%d",&n);
sum=0;
i=1;
do{
sum=sum+i;
i++;
}
while(i<=n);
printf("sum=%d\n",sum);
return 0;
}
嵌套循环
#include <stdio.h>
int main()
{
int i,j,n;
long p,sum=0;
printf("input:n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p=1;
for(j=1;j<=i;j++)
{
p=p*j;
}
sum=sum+p;
}
printf("累加值为:%ld\n",sum);
return 0;
}
条件控制循环
rand函数:随机数,取值范围:rand()%a+b,范围为[ b,a-1] 。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int magic;
int guess;
int count=0;
magic=rand()%100+1;
do{
printf("input:");
scanf("%d\n",&guess);
count++;
if(magic>guess)
printf("wrong!,it's too small\n");
else if(magic<guess)
printf("wrong!,it's too big\n");
else
printf("Right!\n");
}
while(guess != magic);
printf("count=%d\n",count);
return 0;
}
函数调用
#include<stdio.h>
long Fact(int n)
{
int i;
long result=1;
for(i=2;i<=n;i++)
{
result=result*i;
}
return result;
}
int main(void)
{
int m;
long ret;
printf("input m:");
scanf("%d",&m);
ret = Fact(m);
printf("%d!=%ld\n",m,ret);
return 0;
}
在int主函数之前将需要被调用的函数构建好,同时注意被调用函数的返回值,为主函数中的变量。
检验函数入口参数的合法性:
注意实参与形参的数量必须对等,同时在判断语句中,如果函数入口参数的合法性检验是违法的那么就向主函数中传递 -1 ,在主函数中同样需要参数为 -1 的判断语句进行合法检验( -1 为假 )
一维数组
将输入的数填写进数组内并计算其平均数
#include<stdio.h>
int main(void)
{
int a[5];
int totala=0;
int i;
printf("shuru5geshuzizuoweichengji\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
totala=totala+a[i];
}
printf("average is %f\n",totala/5.0);
return 0;
}
二维数组
指针
概念
指针变量:*pa 指向变量储存地址。
定义指针变量 int *pa
(变量名,储存地址,变量值)储存地址: &a
pa=&a 指针变量pa初始化指向 a
即pa的值为&a。
#include<stdio.h>
int main(void)
{
int a=0,b=1;
char c='A';
int *pa,*pb;
char *pc;
pa=&a;//初始化使其指向a
pb=&b;
pc=&c;
printf("a=%d,&a=%d,pa=%d,&pa=%d\n",a,&a,pa,&pa);
return 0;
}
其中指针变量pa指向a,即 pa 的值为变量 a的地址,(指针变量也是一种变量);
而&pa则是指针变量的地址。
间接寻址运算符
指针变量pa指向a,则pa的值为a的地址,*pa为a的值。
#include<stdio.h>
int main(void)
{
int a=1,b=2,c=3;
int*pa=&a,*pb=&b,*pc=&c;//在定义指针变量pa的同时对其进行初始化指向a
//*pa=9;对pa所指向的变量值进行修改
printf("a=%d, &a=%d,pa=%d,*pa=%d\n",a,&a,pa,*pa);
return 0;
}