计协编程组C语言第一次培训(1.17)

目录

目录

初识C语言

一、字符类型

1、char字符类型

2、int字符类型

3、float单精度浮点型

4、double双精度浮点型

5、short短整型

6、long长整型

二、变量的初始化和赋值

1、赋值

2、初始化

2、变量的类型

练习:交换变量a,b

三、变量知识点补充

1、数据类型bool

2、常用的数据类型表示范围

3、浮点数的几个注意事项

4、强制类型转换

5、宏常量和const常量

练习2: 

四、运算表达式

五、判断

1、如果if

2、否则else

3、逻辑判断符优先级

练习3:




初识C语言

Hello world!

一、字符类型

1、char字符类型

a,b,c,@,#,$

2、int字符类型

1,2,3,4

3、float单精度浮点型

1.1,1.3

(1)浮点数的打印方式
ctrl + /:注释
1.直接打印(默认小数点后六位)

2.指定打印的位数   %.?f

 

4、double双精度浮点型

5、short短整型

表示值小的

6、long长整型

表示更大的值

 

m确定位宽,n显示输出小数

 

 

二、变量的初始化和赋值

1、赋值

在这里插入图片描述

不是每定义了一个变量都要给他赋初始值。
有些中间变量,只需要当成存储器就好了,不需要赋值。
C语言中,变量必须满足先定义,再使用。

int x,y;
scanf("%d",&x,&y);

注意“=”与“==”的差别!!!

如果写成if (x=0)那所有输出都是0

所以一定要注意!!== 才是真正的等于= 是从右向左

2、初始化
 

1、赋值的三种方式
(1)变量

int a=3,b=4,c;
 	c=b;

(2)表达式赋值

int a=6,b=7,c;
 	c=9+14;

(3)值

int a=6,b=7,c;
 	c=9;

2、变量的类型

(1)局部变量
局部变量和全局变量重名时,局部变量的优先级高于全局变量

(2)全局变量

全局变量能在函数中直接被改变

全局变量必须定义在我们需要用它的函数体之前

 

  

#include <stdio.h>
int a=10 //全局变量
int main(){
    int b,c=10;
    b=a+c;//b局部变量

练习:交换变量a,b

#include <stdio.h>
int main()
{
	int a,b,c;
	a=10;
	b=4;
	printf("交换前a的值%d,b的值%d\n",a,b);
	c=a;
	a=b;
	b=c; 
	printf("交换后a的值%d,b的值%d\n",a,b);
	return 0;
}

三、变量知识点补充

1、数据类型bool

C语言用0表示假,用非零(不一定是1)来表示真

2、常用的数据类型表示范围

int :10^9

long:10^9

long long:10^18

float:可以精确表示小数点后六位数字,但是六位过后就可能出现错误(举个例子)
double:可以精确到小数点后15位数字

 

 

 

 

3、浮点数的几个注意事项

1)比较两个浮点数

如果两个浮点数都是由常数直接赋值,这样比较不会出现错误(因为机器识别可能与人不同)

2)浮点数的精度问题

%f默认就是%.6f

3)浮点数的除法

两个数进行除运算
如果其中全是整数,除法相当于整除
只要其中有浮点数,结果就是准确的

#include <stdio.h>
int a=10;
int main(){
	int  a=5;
	float b=2;//换成2.0,结果就是2.500000
	float c=a/b;
	printf("%f",c);
}

4)自动类型转换

计算中,要求操作数必须有相同的大小和存储方式,

例如,由于各操作数大小不同,硬件不能将== char 型( 1 字节)数据与 int 型( 2 或 4 字节)==数据直接参与运算;

由于存储方式的不同(整型使用的是原,反,补,码进行存储,浮点型使用的是IEEE754标准进行存储),也不能将 int 型数据与 float 型数据直接参与运算。
(char和int),(整数:原反补)(小数:IEEE754标准),这些不能进行运算。

C语言,表达式中如果出现不同的类型进行运算,较低类型将向较高类型转换(较低类型就是所占字节数少的类型,反之。)

5)当操作数重没有double类型时

当 char、short 出现在表达式中参与运算时,一般将其自动转换为 int 类型。
(注意char要加‘ ’)

#include <stdio.h>
int a=10;
int main(){
	int a;
	short b=1;
	a='a'+b+10;
	printf("%d",a);
}

char 引入字符串

6)当操作数中含有浮点型数据(float 或 double)时

所有操作数都将转换为 double 型。(选择题)

7)如果赋值的时候,两侧的变量类型不一致

精度改变会将右边的类型转换为左边的类型,可能使右边的数据精度增加,也可能使精度降低

比如增大精度

double a;
a=5.0

 降低精度

int a;
a=1.123456

程序出错

右值超出了左值的类型范围,结果可能无意义

#include <stdio.h>
int a=10;
int main(){
	char  a='a';
	int b=1234567890;
	short c=b;
	printf("%d",c);
	
}

4、强制类型转换

格式

(目标类型)表达式

	float a;
	a=1.235;
	printf("%d",(int)a);

//(int)a

5、宏常量和const常量

1)宏常量

#include <stdio.h>
#define PI 3.14159  //后面千万不可以加分号
#define R 5.3  //用大写表示
int main(){
    printf("S=%f\n",PI*R*R);
    printf("L=%f\n",2*PI*R);
    return 0;
}

格式为:#define 标识符 字符串

标识符一般全大写,字符串不分数据类型

                                     一定注意不要加分号在后面,会引起语法错误

2)const常量

可以显示出引入常量的数据类型

const double pi=3.14159;
const double r=5.3;

练习2: 

#include <stdio.h>
int main()
{
	int a=11;
	float x=2.8,y=5.7;
	int b,c,e,f,g,h;
	b=(int)(x+y);
	c=a%3;
	printf("%d\n",c);
	e=c*b;
	printf("%d\n",e);
	f=e%2;
	printf("%d\n",f);
	g=f/4;
	printf("%d\n",g);
	h=x+g;
	printf("%d\n",h);
	return 0;
}

我输出的答案是2,不知道答案对不对。

四、运算表达式

自增自减运算符:

a++;(a=a-1)                            a--;(a=a+1)

二元运算符:

a+=1;(a=a+1)                       a*=2;(a=a*2)其他的符号类比

逻辑运算符(二元运算符)
&&(逻辑与)、||(逻辑或)

C语言中, 0为假, 1为真

 

 

//判断是否是闰年(能被四整除,不能被一百整除,能被400整除) 
#include <stdio.h>
int main()
{
    int y;
	int n=0;
	n=scanf("%d",&y);
	if(n==1){
		if(y<=0){
			printf("不是闰年!\n");
		}else if(y%4==0 && y%100!=0 || y%400 == 0){
				printf("%d 是闰年!\n",y);
		}else{
			printf("不是闰年!\n");
		}
	
	}else{
		printf("不是闰年!\n");
	}
	return 0; 
}

 

五、判断

(详见第二篇博客)

1、如果if

if(判断条件){

条件成立:执行语句

}

判断条件非零就是成立,为零则不成立

2、否则else

3、逻辑判断符优先级

1)从左向右进行判断

2)==和!=优先级比其他符号低

练习3:

输入三个数a,b,c,比较输出其中的最大值

#include <stdio.h>
int main()
{
		int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if(a>b){
		if(a<c){
			printf("%d",c);
		}else{
			printf("%d",a);
		}
	}else{
		if(b<c){
			printf("%d",c);
		}else{
			printf("%d",b);
		}
	}
return 0;
}

想不到更简单的办法了

思考题:数的倒置

输入一个数(12345678),输出这个数的倒置(87654321

#include <stdio.h>
int main()
{
	int n,i;
	scanf("%d",&n);
	int b=0;
	while(n>0){
		i=n%10;
		b=b*10+i;
		n=n/10;
	}
	printf("倒置后为:%d\n",b);
	return 0;
}

这道题还是要思考一下,怎么表示出来那个倒置的数吧,因为我也想到取余这个方法,但是就是一直卡在怎么才能让它完全表示出来,b=b*10+i就很巧妙

写程序就是要逻辑通,然后自己不停的试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值