C语言基础入门
- 输出
- 颜色
- 加法
- 变量
- 数据输出
- 读入
- 数据类型
- 注释
- 运算符
- if else语句
- while语句
- for语句
- 数组
- 字符
- 标识符
注:相关的代码和在安装包皆在资源里。
输出
printf("hello");
printf 等同于中文里的说。
()等同于我们的嘴巴。
“” 等同于我们中文里的双引号。
; 等同于中文里的句号。
注:代码里的标点为英文的
其次在这个输出语句之外还应有一个完整的框架:
//C001
#include <stdio.h>
#include <stdlib.h>
int main ()
{
printf("hello");
return 0;
}
例题
//C002
*
**
***
//C003
输出 早上好
注:\n 表示换行
system("pause");//可以使Dos窗口暂停不闪退
sleep(5000);//可以使窗口暂停5秒
颜色
黑底紫字
//COO4
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("color 5");
printf("hello");
return 0;
}
白底紫字
//C005
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("color f5");
printf("hello");
return 0;
}
在 color 后面有两个一位数字,第一位表示背景颜色,第二位表示文字颜色。如果只有一位则表示文字颜色。一位数字用十六进制表示。
system("color 12");
加法
//C006
int a,b,c;//定义三个变量
a=1;
b=2;//赋值符号 ```=```,并非数学中的等于
c=a+b;
printf("%d",c);// %d 代表要输出一个具体数值
例题
- 321-123 //C007
- 5+3+1= //C008
- 2782*2132 //C009
变量
int a;
int a,b,c;
int
是 integer(整数) 的缩写。
float a;//定义浮点数
a=1.5;
printf("%f",a);//输出整数用 %d ,输出小数用 %f
例题
- 1.2*1.5 //C010
- 5.2+3.1 //C011
- 1.2*(10*10) //C012
数据输出
如何输出整个等式 如:1+2=3
printf("%d+%d=%d",a,b,c);
printf 语句只会输出双引号里面的部分双引号之外的部分起补充说明的部分。
读入
scanf ("%d",&a);
scanf ("%d",&b);
scanf ("%d %d",&a,&b);
scanf 和 printf 语法类似, & 为取地址符。
例题
- 写一个加法计算器 \C013
数据类型
数据类型 | 数据 |
---|---|
int | 整数 |
float | 浮点数 |
double | 极大和极小的浮点数 |
char | 字符 |
double 的占位符是 %lf
float 的占位符是 %f
且 double 比 float 更加精确
char 定义字符
char c='x';//字符两边要加单引号
注释
// 只能注释到本行末尾
/* */ 可以跨行
运算符
符号 | 名称 |
---|---|
+ | 乘 |
- | 减 |
* | 乘 |
/ | 除 |
== | 等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
&& | 与 |
ll | 或 |
! | 非 |
大于小于还是等于
符号 | 名称 |
---|---|
= | 赋值 |
== | 等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!= | 不等于 |
注:只有大于等于小于等于没有等于小于等于大于
并且 或
判断一个数是7的倍数或者是末尾有7 //C016
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
scanf("%d",&a);
if (a%10==7||a%7==0)
printf("yes");
else
printf("no");
return 0;
}
&& 表示并且
|| 表示或者
if 和 else 的用法
//如果 a 大于 0 ,则显示 yes 应该怎么表示
if (a>0)
printf("yes");
else
printf("no");
if 表示如果, else 表示否则。
if (条件) 语句;
else 语句;
例题
- 判断一个数是否为正数 //C014
余数
余数的符号为 %
例题
- 判断一个数是否为偶数 //C015
while语句
while(条件)
{
语句
}
当条件为真,则不断执行语句
while(1>0)
{
printf("hi");
}
例题
- 不断输出0 1 //C017
如果我们只想让它成立10次呢!这个时候我们需要变量使其不断循环10次。
int a;
a=1;
while(a<=10>)
{
printf("hi");
a=a+1;
}
暂停语句
sleep(1000);//1000毫秒为1秒
清屏语句
system("cls");
for 语句
for(a=1;a<=10;a=a+1)
例题
- 1×······×10的乘积 //C018
break
可提前终止 for 、while 、do-while 循环
for(i=1;i<=10;i++)
{
if(i=6)
{
break;
}
}
continue
强迫程序提前进入下一轮循环
for(i=1;i<=100;i++)
{
if(i%2==1)
{
continue;
}
}
数组
int a[10];
数组可以一次定义多个变量, [ ] 中的数为定义变量的个数。如上这10个变量分别用a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 来表示。
例题
- 输出5个数然后逆向输出 //C019
二维数组
int a[3][4];
a[0][0] | a[0][1] | a[0][2] | a[0][3] |
---|---|---|---|
a[1][0] | |||
a[2][0] |
上面为一个3行4列的矩阵
例题
- 如何为这个二维数组赋值(提示:两个for循环嵌套) //C020
数组的初始化
申请一个大小为10的整数数组依次初始化为0~9
int a[10],i;
for(i=0;i<=9;i++)
a[i]=i;
int a[10]={0,1,2,3,4,5,6,7,8,9};
假如将数组里所有位置都初始化为0:
int a[10]={0};
但是如果全部初始化为别的就不可以这样了,编译器从a[0]开始按顺序赋值,没有具体值的将默认为0。
如果不进行初始化则默认值为随机值。
二位数组的初始化
int a[3][5]={{1,2,3},{4,5}},i,j;
for(i=0;i<=2;i++)
{
for(j=0;j<=4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
每一个大括号代表一行
读取字符
最原始的方法
char a;
scanf("/c",&a);
新方法
char a;
a=getchar() //读取一个字符后等待用户回车结束
a=getche() //读取一个字符不用回车
a=getch() //读取一个字符不用回车
字符的本质
//C021
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
for(i=0;i<=127;i++)
{
printf("%d %c\n",i,i);
}
system("pause");
return 0;
}
我们观察发现
字符的数字代表不同的含义:
十进制的48至57代表字符0至9
读取字符串
下述数组有10个小空间a[0]~a[9],虽然有10个小空间但是我们只能存储9个字符,最后一个小空间需要用来存储字符串的结束标记 ‘\0’ 。特别,这里的a之前没有取址符 & 。
读取字符串时我们就要用到之前所学的数组
char a[10];
scanf("%s",a);
或者
char a[10;]
gets(a);
两者的区别是前者遇到空格就会停止而后者会读取一整行
同样输出字符串时除 printf
以外还有
puts(a);//其输出时会在末尾自动切换下一行,相当于
printf("%s\n",a);
如何给一个字符数组赋初始值
char a[10]={"hello"};
字符数组
字符数组和二维数组类似
char a[5][11];
可以存储5个长度不超过10的字符串
字符数组初始化
char a[2][10]={"hello"
"world"};
输出时我们可以用到 for 循环和 puts()
for(i=0;i<=1;i++)
puts(a[i]);
标识符
保留字
char short int unsigned long float double struct union void enum signed const volatile typedef auto register static extern break case continue default do else for goto if return switch while sizeof _Bool _Complex _Imaginary inline restrict
预定义标识
指C语言中有特定含义的标识符,例如函数printf、scanf、sin、isalum等。
用户标识符
(1)必须是字母(A~Z及a~z)、数字(0~9)和下画线的组合。
(2)首字符不能是数字,但可以是字母或者下画线。
(3)不能与保留字相同。
(4)标识符对大小写敏感,即严格区分大小写。
保留字
char short int unsigned long float double struct union void enum signed const volatile typedef auto register static extern break case continue default do else for goto if return switch while sizeof _Bool _Complex _Imaginary inline restrict
预定义标识
指C语言中有特定含义的标识符,例如函数printf、scanf、sin、isalum等。
用户标识符
(1)必须是字母(A~Z及a~z)、数字(0~9)和下画线的组合。
(2)首字符不能是数字,但可以是字母或者下画线。
(3)不能与保留字相同。
(4)标识符对大小写敏感,即严格区分大小写。