1,c语言基础知识
1,入门
main函数:程序唯一入口,执行起点和终点
函数:是构成c语言程序的基本单位
函数体:{}包含的执行代码块
prinf函数想执行必须包含#include<stdio.h>
2,标识符和关键词
关键词就是c语言本身已经定义好的词,本身有特殊含义例:include int main return
标识符规则:1,只能由字母数字和下划线构成 2,数字不可以作为标识符的开头 3,关键词不可以作为标识符
3,进制
c语言中 只能使用八进制、十进制、和十六进制,没有二进制
八进制前缀为0,例如017
十进制没有前缀 例如10
十六进制前缀为0x,例如0x1F
4,变量
变量是指程序运行过程中,可以改变并且有可能会改变的,变量必须先声明,后使用
区分:int x=y=10;错误!c语言中不允许连续初始化
正确示例:int x,y;x=y=10;
5,数据类型
前提是在32位系统中讨论

无符号类型:unsigned:经过它修饰的数据类型,都不能是负数
字符类型:字符类型的值是由单引号包括的,'a',每个单引号只能有一个字符
char c='a'
字符本质上是一个数字,数字和字符一一对应的关系我们叫做ASCII码

例:大写字母A加32变成小写字母a
转义字符:八进制,十六进制

单引号内不是只能放一个字符吗?
单引号内\+内容其实表示的是一个字符
注意字符本身就是数字
单引号表示的是字符,双引号表示的是字符串


printf输出格式:
printf("格式字符串",参数1,参数2,。。。)
例:printf("这个整型数值是:%d',123);


纠正:转化为16进制结果为f

A正确 B错误浮点型为%f C'A'相当于数字65,为整型,%f打不出来 D:1234为整型,但是%s是字符串型,也打不出来

scanf和printf使用都要加头文件#include<stdio.h>
格式字符串中的格式必须要和控制台中输入的数据格式一摸一样
例如:scanf("%d,%d",&a,&b);
输入格式:10,20
#include<stdio.h>
int main(){
char a,b;
printf("请输入一小写字母!\n");
scanf("%c",&a);
b=a-32;
printf("%c %c",a,b);
return 0;
}

如果指定输入长度那就在指定范围内赋值

不会限制输入长度,只会限制读取长度
字符1和整数1是两个不同的东西,字符1的%c字符型就是1,但是如果要打印为整数形式,数字则为ASCII码48
基本运算:
1,除法两边如果都是整型 ,那么输出结果也是整型
2,除号两边如果有一个小数 的话,那么就可以保留小数
3,求余数要求百分号两边都是整数


从右往左一步一步计算

++/--浮点数类型也是可以使用的

例:int z=(2,3,4);表达式的值就为4
z=2,3,4;z的值为2



逻辑运算符

注意:c语言中非0即为真例如:!6的值为0


理清楚关系再写表达式
短路原则:


c语言分为顺序结构,分支结构和循环结构
分支结构

顺序执行,有一个符合条件就跳出
如果if /else后面只跟着一行代码花括号是可以省略的,都是多行必须要用花括号





循环结构

正确答案为C
注意:赋值表达式 k = 0 的值,就是赋值完成后变量 k 的值。



每次是先执行循环体,然后再判断条件
在do-while循环体中,一定要有能使while 后表达式值变为零("假")的操作

例题训练:

cs
#include<stdio.h>
int main(){
int sum,num=0;
prinf("请输入一系列数字(以0结束)\n");
do{
printf("请输入一个数字\n");
scanf("%d",&num);
sum+=num;
}
while(num!=0);
printf("总计:%d",sum);
return 0;
}


数组

数组元素的数量必须是一个正整数常量
例:int x=5,int a[x];写法错误,变量不可以作为元素数量
判断:char p[];错误,只有后面有花括号的初始化的情况下才可以省略数组数量


二维数组 的规则:只有第一个[]大小可以省略,其他的[]大小都不能省略
二维数组的第一个下标是[0][0]


cs
#include<stdio.h>
int main(){
int arr[10];
int min,tmp=0;
for(int i=0;i<10;i++){
scanf("%d",&arr[i]);
}
for(int i=0;i<10;i++){
if(arr[i]<min)
min=i;
}
tmp=arr[0];
arr[0]=arr[min];
arr[min]=tmp;
for(int i=0;i<10;i++){
printf("%d",&arr[i]);
}
return 0;
}
函数

一般来说函数定义是不能在主函数之前的,但是也可以通过函数声明来解决。
比如在int main()前面声明一下int add(int x,int y);就可以正常运行了
函数声明时也不需要写出完整的参数名,只需要这样**double fun(int,int);**就行
这个声明也可以写在main函数里面,只要在函数调用之前就行
例题:编写一段程序用于判断输入的数字是否为素数
cs
int IsPrimeNumber(int num){
if(num<=1)
return 0;
else{
for(int i=2;i<num;i++){
if(num%i==0)
return 0;}
}
return 1;
}
int main(){
int a;
printf("请输入一个数字:");
scanf("%d",&a);
if(IsPrimeNumber(a)){
printf("这是一个素数:%d",a);}
else{
printf("这不是一个素数:%d",a);}
return 0;
}

如何计算一个数组的数量大小:
int size=sizeof(nums)/sizeof(nums[0]);

