c语言_day2

目录

条件运算符(三目运算符)

运算符优先级(重要)

标点符号

分隔符

变量

变量分类:全局变量、局部变量的区别?

常量

指数常量

字符型常量

字符串常量

整型常量

浮点型常量

标识常量

输入输出

输出:printf

输入scanf

scanf(“%s”,a);和gets(a)的区别

按字符输入输出

易错题目:

按格式输入输出

垃圾字符回收

易错题目:

分支结构

实现大小写转换


条件运算符(三目运算符)

表达式1?表达式2:表达式3;

运算法则:先判断表达式1是否成立,如果成立执行表达式2,否则执行表达式3;

int  a=3,b=5;

int  c=a>b?a++:++b;

//运行结果:c=6

运算符优先级(重要)

口诀:单算移关与,异或逻条赋

单目运算符 ++ --???! ???~
算术运算符 * / + -
移位运算符 << >>
关系运算符 < <= > >= == !=
位与运算符 &
异或运算符 ^ |
逻辑运算符 && ||
条件运算符 ? :
赋值运算符 = -= += *= /= %=

详细:

c语言笔试真题练习:

1.

答案:A

2.

标点符号

  , ; () {} []

分隔符

  空格 tab 换行

变量

概念:程序运行过程中会发生变化的量

格式:存储类型 数据类型 变量名

auto int

存储类型:决定变量存放的位置

数据类型:决定变量占用的空间大小

名称

字节大小

取值范围

int

整型

4

-2^31~2^31-1

char

字符型

1

-2^7~2^7-1

short

短整型

2

long

长整型

32位系统:4    64位系统:8

float

单精度浮点型

4

有效数据位数6~7位

double

双精度浮点型

8

15~16

char  1字节=8位 0-255 256个值 01111111=127

变量分类:全局变量、局部变量的区别?

局部变量

全局变量

定义位置

函数内部

函数外部

初始值(不赋值)

值:随机值

值:0

作用域

整个函数中都可以

整个程序中都可以

存储位置

栈区

全局存储区

生命周期

同整个函数共存亡

同整个程序共存亡

注意:同一个.c文件中,同一个局部变量可以和全局变量同名。取值为就近原则。

例如:

程序运行时占用的系统空间示意图:

c语言笔试真题练习:

1.

2.

3.

常量

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

指数常量

   3*10^2------->3e2

   2*10^5------->2e5

  注意:e后面只能是整数,不能是小数。

字符型常量

  用单引号包裹

  char  a='w';

  'w'--->字符w

字符串常量

  双引号包裹,有'\0'结束标志

  "hello"---->'h' 'e' 'l' 'l' 'o'

   对于字符串,'\0'是结束标志,标志不需要程序员手动补充,系统会自动补充,但是要考虑'\0'的存放空间。

  char  a[6]="hello";

  '\n'===换行

  \转义字符   n和\n不一样  

  '\x41' '\101' === 'A'

整型常量

  int   a=3;  存储到变量中

  十进制、八进制、十六进制

浮点型常量

  float   double     一般用float多一点,占4字节,double占8字节

标识常量

  格式:#define   宏名   表达式或常量或代码段

  特点:只是单纯的替换,不进行运算

#include<stdio.h>
#define N 2
#define M N+3
#define NUM N+M/2+1
// 2+2+3/2+1
int main(int argc, char const *argv[])
{
    printf("%d\n",NUM);
    return 0;
}

宏定义:起标识作用

宏名:遵循标识符的命名规则,一般大写,为了和普通变量区分开

练习:结合宏定义用三目运算符实现求两个数的最大值

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

宏函数*(了解一下)

#include<stdio.h>

#define MAX(a,b) a>b?a:b

int main(int argc, char const *argv[])

{

    printf("%d\n",MAX(6,2));

    return 0;

}

c语言笔试真题练习:

输入输出

  函数三要素:功能、参数、返回值

printf() 与 scanf() 函数:

printf()返回值:输出成功的字符数量

scanf()返回值:输入成功的字符数量

输出:printf

#include <stdio.h>

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

功能:输出内容

参数:

1:字符串 如果包含格式则有后续参数

2:要和第一个参数中的格式对应

。。。。。。。

返回值:输出的字符的个数

输入scanf

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

  功能:可以输入一些内容(从终端输入)

  参数:

  1:字符串(只写格式)

  2:用来保存数据的变量的地址

  。。。。。。。

  返回值:正确输入的个数

scanf(%s,a);和gets(a)的区别

  gets()和scanf()都可以用来输入字符串,但是它们的处理方式略有不同。gets()函数会读取一行字符串,直到遇到换行符为,并将换行符替换为\0作为字符串的结尾。

  而scanf()函数使用%s格式符读取字符串时,会在遇到空格、制表符或换行符停止读取,并将这些字符留在输入缓冲区中,因此scanf()函数无法读取包含空格的字符串。

此外,每个字符串都以\0结尾,这是C语言中字符串的约定。

int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("a=%d b=%d c=%d\n",a,b,c);
int a,b,c;
int ret=scanf("%d%d%d",&a,&b,&c);
printf("ret=%d\n",ret);

按字符输入输出

输入:

int getchar(void);

功能:从终端输入一个字符

参数:无

返回值:从终端输入的字符的ASCII值

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

输出:

int putchar(int c);

功能:向终端输出一个字符

参数:要输出的字符的ASCII值

返回值:要输出的字 符的ASCII值

int a=getchar();
putchar(a);
大小写转换:
int a=getchar();
putchar(a+32);	

练习:

#define  sqrt(x) x*x  //=2+3*2+3

sqrt(2+3)=11  

答案:A

答案:D

答案:A  B  

易错题目:

答案:A  C

注意:有符号和无符号进行计算  转成无符号

按格式输入输出

输出:

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

功能:按照指定的格式向终端输出

参数:多参

返回值:输出字符个数

格式:

%d int

%c char

%f float

%lf double

%s 字符串

%#o   %o 八进制

%#x  “%x” 十六进制

%p 地址

%e          指数

int a=2;
printf("hello world %d\n",a);

c语言笔试练习:

输入:

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

功能:按格式向终端输入

参数:多参

返回值:正确输入数据的个数

当第一个数输入的格式不正确,会直接返回0

char a,b;
scanf("%c %c",&a,&b);
printf("hello world %c %c\n",a,b);

垃圾字符回收

  1. 通过空格回收

可以回收一个或多个空格、tab、换行

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

     2.%*c(了解)

    只能回收任意一个字符   *是抑制符

    3.getchar  (用于循环语句中)

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

4.scanf("%[^\n]",a);    //读取除换行符之外的所有字符

易错题目:

以下输出结果是:

    int a;

    a=(int) ((double)(3/2)+0.5+(int)1.99*2);

    printf("a=%d\n",a);

答案:3

练习:

答案:2+1*2+1/2+1*2+1

分支结构

if_else     switch_case

基本结构

if(表达式1)
{
	代码段1;
}else
{
	代码段2;
}

执行顺序:先判断表达式1是否成立,如果成立则执行代码段1,不成立则执行代码段2

if中的表达式也可写成数值   0为假,非0值为真

分层结构:

if(表达式1)
{
	代码段1;
}else if(表达式2)
{
	代码段2;
}else
{
	代码段3;
}

c语言练习

  输出三个数中最大的一个数

方法一:
if(a>b&&a>c)
max=a;
if(b>a&&b>c)
max=b;
if((c>a&&c>b)
max=c;
方法二:
max=a;
if(b>max)
max=b;
if(c>max)
max=c;
printf(“%d”,max);
方法三:
if(b<a)
{
 	a=a^b;
b=a^b;
a=a^b;
}
if(c<b)
{
c=c^b;
b=c^b;
c=c^b;
}
方法四:
if(a>b)
{
if(a>c)
max=a;
else 
max=c;
}
else
{
if(c>b)
max=c;
else
max=b;
}

练习:

成绩等级划分:

100-90 A

89-80 B

79-70 C

<70

int s=99;
    if(s>=90&&s<=100)
    {
        printf("A\n");
    }else if(s>=80&&s<=89)
    {
        printf("B\n");
    }else if(s>=70&&s<=79)
    {
        printf("C\n");
    }else
    {
        printf("bukao\n");
    }

嵌套结构:

if(表达式1)
{
	if(表达式2)
	{
		代码段;
}
}

int s=999;
if(s<=100&&s>=0)
{
    if(s>=90&&s<=100)
    {
        printf("A\n");
    }else if(s>=80&&s<=89)
    {
        printf("B\n");
    }else if(s>=70&&s<=79)
    {
        printf("C\n");
    }else
    {
        printf("bukao\n");
    }
}

注意:

    if后边可以没有else,但是else前边必须有if

    if和else代码段只有一句时,{}可以省略

练习:

答案:C

实现大小写转换

输入大写字母,输出小写字母

输入小写字母,输出大写字

输入其他,输出error

char a;
    a=getchar();
    if(a>='a'&&a<='z')
        putchar(a-32);
    else if(a>='A'&&a<='z')
        putchar(a+32);
    else
        printf("error\n");

switch

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

执行顺序:判断switch后边的表达式的结果,和case后的常量进行匹配,如果匹配成功,就执行相对应的代码块,如果没有能匹配成功的就执行default后边的语句块,直到遇到break结束。

注意:

表达式的计算结果不能是小数,case后边的常量不能是浮点型或字符串

每个对应的case后需要加break,不加继续执行下一个case对应的语句块,直到遇到break

练习:

成绩等级划分:switch

100-90 A

89-80 B

79-70 C

<70 bukao

练习:从终端输入一个日期scanf ("% d -% d -% d "; year , mon , day ),判断这是这一年的第几天。

提示:判断闰年还是平年,闰年且闰年二月份以上比平年多一天 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值