文章目录
python和c语言
(小菜鸟上个学期学的是py这个学期学c语言,做个入门,自己的理解)
py和c的区别
- py是以缩进,冒号来控制逻辑,而C语言是通过大括号控制的
eg:求n的阶乘
(python版本)
re = 1
n = int(input())
for i in range(1 , n + 1):
re *= i
print(re)
(c语言版本)
#include <stdio.h>//头文件
int main()//主函数
{
int re = 1 ,n;//声明变量
scanf("%d",&n);//读入变量n
for(int i = 1 ; i < n + 1 ; i ++) re *=i;//循环
printf("%d",re);//输出结果
return 0;//结束程序
}
-
速度
python的代码相对于c语言的代码要短,同时python的速度要比c语言慢
python为解释型
c为编译型 -
内存管理
python内有自动垃圾收集器进行内存管理
c语言中则需要自己管理 -
c语言中的内置函数没有python中多(小菜鸟的想法,是小菜鸟学艺不精)
-
想要使用新的变量的时候要先声明
6 . py中的单行注释为#
c语言中单行注释为//
多行为/* ……*/
- python中幂运算的符号为** 而c中要用函数pow,并且要引入头文件<math.h>
程序结构
基本结构
#include<stdio.h>//预处理器指令(头文件)
int main()//主函数
{
//这里写代码
return 0;
}
<stdio.h>头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出
一个程序中只有一个主函数 即int main()
return 0;中止主函数,返回0
数据类型(常用)
整形(即python中的int)
符号 | 名称 | 范围 |
---|---|---|
short | 短整型 (2字节) | -2^15 ~ 2^15 -1 |
int | 整型 (4字节) | -2^31 ~ 2^31 -1 |
long | 长整型 (4字节) | -2^31 ~ 2^31 -1 |
long long | 长长整形(8字节) | -2^63 ~ 2^63 -1 |
通常使用 int 和 long long(个人)
eg:
int a , b;
long long int c , d;
数组类似于python中的列表):
eg:
#include <stdio.h>
int main()
{
int a[10]={0,1,2,3,4};//初始化
for(int i = 0; i< 10 ; i ++) printf("%d\n",a[i]);
return 0;
}
注意:
数组要多开10个(个人)
初始化后剩余的位值为0
浮点型(python中的float)
符号 | 名称 |
---|---|
float | (4字节)单精度浮点数类型 |
double | (8字节双精度浮点数类型 |
long double | (8字节)长双精度浮点数类型 |
c程序在执行的时候要把十进制转化为二进制,小数时转化不尽(会导致结果不准)
通常使用double(个人)
eg:
float a ;
double b;
字符型(非python中的str)
和python中的区别
python中是字符串 即“abc” (一个或多个字符)
c中要分开存储即 ’a‘ ‘b’ ‘c’
char (1个字节) -128~127
如果要存字符串就要声明字符数组 即 char a[10];
eg:
char a;
char b[10];
注意:
'\0’是字符串的结束符号,不管在什么位置,读取到这个符号 就会终止读入。
同时如果想要读入”abc“ 一个三个长度的字符数组要开的比三个大(个人通常多开10个)即char a[13]
输入与输出
输入
scanf
函数(python中input())
类型 | 代码 |
---|---|
int | scanf("%d",&a); |
long | scanf("%ld",&a); |
long long int | scanf("%lld",&a); |
char | scanf("%c",&a); |
字符串(字符数组) | scanf("%s",a); |
float | scanf("%f",&a); |
double | scanf("%lf",&a); |
输出
printf
(python中print())
类型 | 代码 |
---|---|
int | printf("%d", a); |
long | printf("%ld", a); |
long long int | printf("%lld", a); |
char | printf("%c", a); |
float | printf("%f", a); |
double | printf("%lf", a); |
常用语句
判断(基础)
c
if()
else if(条件)
else if(条件)
else if(条件)
else
eg:
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a >=90) printf("优秀");
else if(90 >a && a>=80) printf("良好");
else if(80 > a && a>=60) printf("合格") ;
else printf("不及格");
return 0;
}
循环
for循环
for(int i = 0 ; i < 10 ; i++)
从0到9
while循环
int a = 0;
while(a<10) a++;//当a小于10时a加1
do……while……循环
(先做后判断)
eg:
int a= 0;
do a++ ; while(a<10);
运算符
符号 | 意义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
&& | 与(同py中and) |
|| | 或(同py中的or) |
注意:
整形除整形结果是整形 如果想要浮点型乘上1.0
#include <stdio.h>
int main()
{
int a = 3;
int b = 2;
printf("%f" ,a/(b*1.0));
return 0;
}
数组
部分赋值的时候,没有赋值的位置上的值为0
一维数组
(python中的列表)
eg:
int a[10]= {0 , 1 , 2 , 3 ,4 }//可以直接赋值
int a[] = {0 , 1 , 2 , 3 , 4 }//编译器自动分配空间
long long int a[10] = {0, 1 , 2 , 3}//不同类型的数组存储大小不同
double a[10] = {0.5 ,1.5, 2.5, 3.5}
char a[10] = {'a' , 'b', 'c' ,'d'}
注意:
第一个位置的下表为0
数组大小必须大于0的整数
字符数组里面的字符用的是单引号(python中字符串单引号和双引号都可以)
二维数组
(数组里面的元素是数组)
eg:
int arr[3][4] = {{1,2,3},{4,5,6},{7,8,9}};
第0列 | 第1列 | 第2列 |
---|---|---|
第0行 | 1 | 2 |
第1行 | 4 | 5 |
第2行 | 7 | 8 |
第3行 | 0 | 0 |
字符串的函数
- strcmp(str1, str2): 字符串比较函数,两个字符串从左到右依次相比,直到出现不相同的字符或遇到/0为止
- strcpy(str1, str2):字符串拷贝函数,讲str2的字符串拷贝到str1中,需要注意的是,如果目标数组str1不够大,而str2过长可能会出现溢出的情况
- strcat(str1, str2):字符串拼接函数,将str2的数组拼接到str1的后面,同时也要注意溢出的情况
- strlen(str):求str字符串的长度