十天速通C语言基础(day03)

写在前面

        前面两天介绍了C语言编程需要用到的工具,以及C语言基本常识,今天开始进入到C语言比较重要的部分,详情请看文章介绍。

目录

1、变量

概念

2、常量

 2.1整形常量

2.2字符常量

 2.3浮点型常量

 2.4表示常量

3.变量常量

3.1按字符输入输出

getchar

putchar

3.2按格式输入输出

printf

scanf

4.垃圾字符回收

4.1通过空格回收一个或多个空格

4.2%*c   *抑制符

4.3getchar回收

5.分支结构

基本格式:

多层分支:

嵌套结构:

switch

 6.循环结构

水仙花数  


1、变量

变量的介绍

概念

变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。

变量在程序运行过程中会发生变化

格式:

存储类型数据类型变量名
autointa
存储类型:决定变量存储的位置

数据类型:决定变量开辟空间大小

数据类型

字节大小

取值范围(了解)

char

字符型

1

-128~127

int

整型

4

short

短整型

2

long

长整型

32位:4;64位:8

float

单精度浮点型

4

有效位数:6-7位

double

双精度浮点型

8

15-16位

printf("%d\n",sizeof(char));
1字节=8位 0-255 256 0111 1111 -128~127

局部变量和全局变量的区别:

局部变量

全局变量

定义位置

函数体内部

函数体外部

初值

未初始化时,值为随机值

未初始化时,值为0

存储位置

栈区

全局区

生命周期

同当前函数体共存亡

同整个程序共存亡

作用域

函数内部

整个程序

32位:4G

64位:2^64 2^48

 

 

2、常量

程序运行过程中不会发生变化

 2.1整形常量

八进制 十进制 十六进制

2.2字符常量

字符型用' '包裹,表示一个字符

字符串用" "包裹

"hello"---->'h' 'e' 'l' 'l' 'o' '\0' \0字符串结束标志

 2.3浮点型常量

float        double

 2.4表示常量

宏定义格式:

#define 宏名 常量值或表达式或函数

宏名一般大写,为了和普通变量区分开

特点:只是单纯的替换,不进行运算(原样替换,换完后再计算)

#define N 2
#define M N+3
#define NUM N+M/2+1      //2+2+3/2+1
void main()
{
	int a = NUM;     
	printf("%d\n",a);  	// 6
}

 练习 

以下程序的输出结果是()

#include
#define M 5
#definr N M+M
main()
{
    int k;
    k = N * N * 5;
    printf("%d\n",k);
}

A.500        B.125        C.55        D.100

答案:C

结合三目运算求最大值:

#include<stdio.h>
#define NUM a>b?a:b
int main(int argc, char const *argv[])
{
    int a = 5;
    int b = 8;
    printf("%d\n",NUM);
}

宏函数(仅做了解):

#include<stdio.h>
#define NUM(a,b) a>b?a:b
int main(int argc, char const *argv[])
{
    printf("%d\n",NUM(5,8));
    printf("%d\n",NUM(77,99));
    return 0;
}

3.变量常量

3.1按字符输入输出

getchar

int getchar(void)

功能:终端输入字符

参数:无

返回值:字符的ASCII码值

char a;
int res = getchar();
printf("%d\n",res);

putchar

int putchar(int c);

功能:终端输出字符

参数:字符的ASCII码值

返回值:字符的ASCII码值

char a;
int res = getchar();
putchar(res);
putchar('\n');

3.2按格式输入输出

printf

int printf(const char *format, ...);

功能:按格式终端输出

参数:多个

返回值:输出字符个数

格式:

%d int

%c char

%f float

%lf double

%s 字符串

%p 指针

%o 八进制

%x 十六进制 %#x

%m.n m位宽 .n保留小数位数

int a1 = 2;
int a2 = 22;
int a3 = 222;
printf("%3d\n",a1);
printf("%3d\n",a2);
printf("%3d\n",a3);

scanf

int scanf(const char *format, ...);

功能:按格式终端输入

参数:多个

返回值:正确输入字符的个数 开始位置输入错误,返回0

int a,b;
scanf("%d %d",&a,&b);
printf("a:%d b:%d\n",a,b);

4.垃圾字符回收

4.1通过空格回收一个或多个空格

char a = 0,b = 0;
scanf("%c %c",&a,&b);
printf("a:%c b:%c\n",a,b);

4.2%*c   *抑制符

回收任意一个字符

char a = 0,b = 0;
scanf("%c%*c%c",&a,&b);
printf("a:%c b:%c\n",a,b);

4.3getchar回收

while(1)
{
    char a;
    scanf("%c",&a);
    printf("a:%c\n",a);
    getchar();
}

5.分支结构

基本格式:

if(表达式1)
{
	语句块1;
}else
{
	语句块2;
}
执行顺序:表达式一成立,则执行语句块一,否则执行语句块二
============================
int age=22;
if(age>18)
{
    printf("work\n");
}else
{
    printf("study\n");
}

多层分支:

if(表达式1)
{
	语句块1;
}
else  if(表达式2)
{
	语句块2;
}
else
{
	语句块3;
}
==============
int age=22;
    // 0-18  18-30 30-65 65-
    if(age>=0&&age<18)
    {
        printf("weichengnian\n");
    }else if(age<=30)
    {
        printf("qing\n");
    }else if(age<=65)
    {
        printf("zhong\n");
    }else
    {
        printf("lao\n");
    }

嵌套结构:

if(表达式1)
{
	if(biaodashi 2)
{
	语句块1;
}
}
==========================
if(age<0||age>200)
{
	printf("error\n");
}else
{
	
}
注意:

        1.if后边可以没有else ,else前边必须有if

        2.分支语句只有一行代码时,可以省略{}

switch

格式:

switch(变量名或表达式)
{
	case 常量1:
		语句块1;
		break;
	case 常量2:
		语句块2;
		break;
	default:
		语句块3:
		break;
}

例如:

int a=33;
    switch (a/10)
    {
    case 1:
        printf("11111\n");
        break;
    case 3:
        printf("333333\n");
        break;
    case 5:
        printf("55555\n");
        break;
    default:
        printf("error\n");
        break;
    }

注意:

        1.case常量一般是整型或字符

        2.case后边可以没有break,程序会从符合条件的分支开始继续向下执行,直到遇见break为止,或执行到分支结束

 6.循环结构

格式:

for(表达式1;表达式2;表达式3)
{
	语句块;
}
表达式1:循环变量赋初值
表达式2:终止条件
表达式3:增值或减值

执行顺序:先执行表达式1,再判断表达式2是否成立
			成立:执行语句块;再执行表达式3,判断判断表达式2是否成立。。。
			不成立:退出循环
int i;
    for(i=0;i<5;i++)
    {
        printf("%d\n",i);//0 1 2 3 4
    }
    printf("i=%d\n",i);//i=5

变形:

int i=1;
    for(;i<5;i++)
    {
        printf("%d\n",i);
    }
============================
int i=1;
    for(;i<5;)
    {
        printf("%d\n",i);
        i++;
    }
=============================
死循环: 
for(int i=1;i>0;i++)    for(;;);

for(int i=5;i>0;i-=2)
    {
        printf("%d\n",i);
    }

水仙花数  

        学习C语言大多绕不开水仙花数,水仙花数是指一个三位数,它的每个位上的数字的立方和等于它本身。例如:153 = 1^3 + 5^3 + 3^3。下面是一个C语言程序,用于找出100-999之间的所有水仙花数:

#include <stdio.h>

int main() {
    int i, a, b, c; // 定义三个整数变量a、b、c,分别表示百位、十位和个位数字

    printf("100-999之间的水仙花数有:
");
    for (i = 100; i <= 999; i++) {
        a = i / 100; // 计算百位数
        b = (i % 100) / 10; // 计算十位数
        c = i % 10; // 计算个位数

        if (i == a * a * a + b * b * b + c * c * c) { // 判断是否为水仙花数
            printf("%d
", i); // 输出水仙花数
        }
    }

    return 0;
}

代码解析:

  1. 引入头文件stdio.h,用于输入输出。
  2. 定义main函数,程序的入口。
  3. 定义三个整数变量abc,分别表示百位、十位和个位数字。
  4. 使用for循环遍历100到999之间的所有整数。
  5. 计算每个整数的百位、十位和个位数。
  6. 判断当前整数是否为水仙花数,即百位、十位和个位数字的立方和是否等于该整数本身。
  7. 如果满足条件,输出该整数。

就写到这,今天有点累,也不整理放一些修饰词增加大家的可读性了,有不懂的大家直接CSDN搜索(我是菜菜),哈哈哈哈晚安。 

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值