C语言入门指南

Sunshine__sunny的快乐码奴生活

C语言入门指南


学习目标

  1. 后期服务
  2. JNI (C语言)
  3. C
  4. JAVA
  5. 编程思想
  6. 编程能力

C语言和C++的区别

  1. C面向过程
    上课:
小王走进教室拿出电脑开始听课
  1. C++面向对象(移植 复用)
    找对象:
教师姓名 身高 年龄 授课东哥
学生姓名 身高 年龄 选修课小王
课程变化 名称Android开发
地址编号 座位数5405
工具型号笔记本电脑

程序从 写出来——> 有结果的过程

开发工具IDE:
  1. DevC++
  2. Android Studio
  3. 创建项目 写代码
  4. 运行
  5. 结果
集成开发环境所要做的事
  • 写代码——文本编辑器
#include<stdio.h>
int main()
{
printf("Hello world!");
return 0;
}
  • 预编译——编译器(制定规则)
    • 展开
  • 编译——高级语言转化为 汇编代码
    gcc -E test.c -o test.i -o test.s
    • 检查语法错误
    • 转化为汇编代码
  • 汇编——把汇编代码转化为二进制数据(0111011000101)
    gcc -C test.s -o test.o
    • 转化为目标文件
  • 链接——把所有的目标文件链接为可执行的程序
    gcc -o test.o test

具体学习内容


include

宏:导入头文件(声明一些方法)

#include<stdio.h>
#include<stdbool.h>
  • 如果系统已经提供某些功能的实现
    只需要使用include将这些功能所在的头文件导入即可
    <系统提供的类库>
stdio.hstdlib.hmath.hstring.h
  • “自己定义的头文件”
    #include “calulate.h”(自己写的)
    • 编译器会首先从系统的类库中去查找{#include<stdio.h>}
      若没有,再到自系统中去找,没有则报错
main(){}
  • 函数=代码块=完成特定功能
    (函数)[代码块]
int main()
{
	return 0;
}
  • 所有程序的入口点都是main函数
几个参数备注
int返回值记录当前程序的运行状态
0正常结束资源自有分配
非0异常结束没收
main(int argc,char*argv[])此为标准模板即规定参数,main是系统给的
int argc参数个数argument count
char *argv[]每个参数组成的字符串数组
int main(int argc,char*argv[])
{
	printf("%d",argc);
	printf("%s",argv[0]);
	return 0;
}

记得
先 F11——编译
再F10——运行

变量

记录数据 ,保存数据

基本数据类型     (只能存一个值)描述打印方式16位32位64位
int整型数据     eg.1 2 33 520%d244
long长整型%ld448
float单精度浮点数      eg. 1.5 23.0%f444
double双精度浮点数     eg.1.5 23.0%f888
char字符     eg. ‘l’ ‘o’%c111
string字符串     eg.“sunny”
short短整型222
bool真true/假false
  • 各个数据类型占用的 内容空间不同
    可用 printf("%d\n",sizeof(int)) 查出 所占空间大小
#include<stdio.h>
#include<stdbool.h>
int main(int argc,char*argv[])
{
	printf("%d\n",argc);
	printf("%s\n",argv[0]);
	printf("Hello World!\n");
	printf("%d\n",sizeof(int));
	printf("%d\n",sizeof(long));
	printf("%d\n",sizeof(float));
	printf("%d\n",sizeof(double));
	printf("%d\n",sizeof(short));
	printf("%d\n",sizeof(char));
	printf("%d\n",sizeof(bool));
	
	return 0;
}
变量的简单应用
    int count=0;
    count=3;
    printf("%02d\n",count);
    long size=230;
    printf("%ld\n",size);
  • %02d 不足两位的用0补齐
  • %.2f 小数点后保留两位小数
    float score=3.1415926;
	printf("%.2f\n",score);
  • 若用%d字符则对应的ASCII码值
    char choose='c';
	printf("%c\n",choose);
    printf("%d\n",choose);
  • 一个中文占两个字符
    char choose=‘中’;
    printf("%c\n",choose);
  • 非0即真,0即假
    bool status=true;
    printf("%d\n",status);
    bool status=false;
    printf("%d\n",status);
输入输出
  • printf 向终端输出字符串
    终端 console口
printf("Hello World!\n")
  • scanf 接收终端输入 (字符串)
    \n 换行
    \t 一个缩进
  • 缓冲区:输入输出流 IO流 cout cin
scanf 格式化输入

缓冲区: “123 456’\n’”
终端: 123 456’\n’

    int a;   //a=123
	char b;  //b=''
	int a;   //a=456

不要在scanf里加内容
用户输入时也要输入相同的内容
(如 -%d- 则要输入 -123- )

    int pwd=0;
	scanf("jack%d",&pwd);
	printf("pwd=%d\n",pwd);

scanf("%d%d",&num1,&num2);也可以
不过要输入多次(两次)较为麻烦
下图为一次性输入格式

    int num1,num2;
    scanf("%d %d",&num1,&num2);
    printf("%d %d\n",num1,num2); 
if 语句

当某种条件成立才执行
if (条件 true非0/false0)
{
成立要做的事
}

运算符
运算符
+
-
*
/除 /取整数部分7/3=2…1得2
%取余数部分7/3=2…1得1
float r=3/2;
print("%f\n",r);

x%5=0,1,2,3,4

续表
&&两个同时成立
//只要一个成立
++自增i++和++i不同
自减
==判断等于
=赋值
!=不等于
+= / -= /*= /   /=
问号表达式
char c;
if(3>1){
	c='y';
} else{
	c='n';
}

也可以这样

c=3>1?'y':'n';
逗号表达式

result=表达式1,表达式2,表达式3
输出的是 最后一个 表达式3

int temp=20;
if(temp--,temp--,temp--)
{
	printf("temp=%d\n",temp);
}
int temp=20;
	int t2= (temp--,temp--,temp--);
	if(t2)
	{
		printf("temp=%d\n",temp);
		printf("t2=%d\n",t2);
	}
switch语句
对比switchif-else
功能相同相同
可读性
  • switch的模板
switch(已经确定值的变量  int/char)
{
	case 10 'c';
	    break;
	case 10 'c';
	    break;
	default;
	    break;
	
}
  • 尝试使用
   int a=0;
	printf("请输入一个数字1-3:"); 
	scanf("%d",&a);
	switch(a)
	{
		case 1;
		printf("你输入的是1\n");
		break;
		case 2;
		printf("你输入的是2\n");
		break;
		default;
		printf("你输入的是3\n");
		break;
	}

break 跳出当前循环语句
continue 结束当前循环 继续下一次循环

重要iffor循环while数组指针结构体动态分配内存
For 循环

for (循环控制变量;运行的条件;控制变量的变化)
注意:中间的部分必须要,其他部分可以省略,分号不能省

  • 应用一:输出1-10之间的整数
for(int i=1;i<=10;i++)
	{
		printf("i=%d\n",i);
	}

循环控制变量的定义和初始化只一次

变量的作用域局部全局静态
备注{ int a { int a; printf(a); } }在函数代码块的最外面

循环控制变量什么时候变化/执行?
i++
i–
i+=2
答:当这一次循环结束时变化/执行

  • 应用二:不断输出1-10之间的整数
for(int i=1;i<=10;)
	{
		printf("i=%d\n",i);
		if(i==10)
		{
			i = 0;
		} 
		i += 1;
	}
for(int i = 1;i <= 10;i++)
	{
		printf("i=%d\n",i);
		if(i==10)
		{
			i = 0;
		} 
	}
for(int i = 1; i <= 10;	i++)
	{
		printf("i = %d\n", i);
		if(i=10)
		{
			i = 0;
		} 
	}

以上三种均为同种结果

  • 应用三:到 5 时跳出
for(int i = 1; i <= 10;	i++)
	{
		if(i==5)
		{
		continue; 
		} 
		printf("i = %d\n", i);
	}
Getchar
具体使用方法
  • 当上一次有数据输入的情况下必须将上一次缓冲区里的内容清空 *
    • 法一 :
      [ getchar ();从终端接收一个字符 ]
      scanf("%d");
      123\n;
      \n
      getchar ();//拿走/n
      getchar ();
    • 法二:
      fflush(stdin);//刷新输入流
  • 可通过如下代码进行深入了解
int main()
{
	char a;
	printf("请输入a:"); 
	scanf("%c", &a);
	char b;
	printf("请输入b:");
	getchar();
	scanf("%c", &b);
	char c; 
	printf("请输入c:");
	scanf("%c", &c);
	printf("a=%c b=%c c=%c\n",a,b,c);
	return 0;
}
数组

存储多个同种类的数据

  • 数组的定义:
int array[] = {1,2,3,4};
int array[4];
int array[4] = {1,2};
  • 必须明确知道数组元素的个数
    因为系统为数组分配内存的时候必须明确大小
    int array[];
  • 数组的内存
  • 数组的访问:
array[0]=2;
array[1]=233;
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int array[4];
    srand(time(NULL)); 
	for(int i = 0; i <4; i++)
	{
		int temp = rand() % 10;
		array[i]=temp;
		//printf("%d",i); 
	}
	for(int i = 0; i <4; i++)
	{
		printf("%d ",array[i]);   //放到上面的for循环也可 
	}
    return 0;
}

还可以通过 Demo Three 来深入理解link.
未完待续。。。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值