1.scanf函数的基本使用
#include <stdio.h>
int main()
{
// 定义一个变量,用来保存用户输入的整数
int number;
// scanf函数只接受变量的地址
// scanf函数是一个阻塞式的函数,等待用户输入
// 用户输入完毕后,就会将用户输入的值赋值给number变量
// 函数调用完毕
scanf("%d", &number);
printf("用户输入的值是%d\n", number);
return 0;
}
2.一个scanf小练习
/*
提示用户输入两个整数,计算并且输出两个整数的和
*/
#include <stdio.h>
int main()
{
// 1.定义2个变量,保存用户输入的整数
int num1, num2;
// 2.提示用户输入第1个整数
printf("请输入第1个整数:\n");
// 3.接收用户输入的第1个整数
scanf("%d", &num1);
// 4.提示用户输入第2个整数
printf("请输入第2个整数:\n");
// 5.接收用户输入的第2个整数
scanf("%d", &num2);
// 6.计算和,并且输出
int sum = num1 + num2;
printf("%d+%d=%d\n", num1, num2, sum);
//printf("num1=%d, num2=%d\n", num1, num2);
return 0;
}
3.scanf的一些其他用法和注意的地方
#include <stdio.h>
int main()
{
/* 1.输入字符
char myc;
scanf("%c", &myc);
printf("输入的字符是%c\n", myc);
*/
/* 2.一次性输入多个数值,并且以某些符号隔开
int num1, num2;
scanf("%d#%d", &num1, &num2);
printf("num1=%d, num2=%d\n", num1, num2);
*/
/*
3.如果scanf参数中以空格隔开,实际输入可以以空格、tab、回车作为分隔符
int num1, num2;
scanf("%d %d", &num1, &num2);
printf("num1=%d, num2=%d\n", num1, num2);
*/
/*
4.scanf中不能写\n
int a;
scanf("%d\n", &a); // 错误写法
printf("a的值是%d\n", a);
*/
return 0;
}
---算数运算符
1.算数运算符的基本使用
int a = 10 + 1 + 2 - 3 + 5;
int b = -10;
int c = 10 * b;
int d = 10 / 2;
2.取余运算(模运算): % 两边都是整数,%取余结果的正负性只跟%左边的数值有关,如:
int e = 10 % -3;
printf("%d\n", e); // 输出结果是1
3.数据类型的转换
1>自动类型转换(double->int)
int a = 10.8;
2> 强制类型转换(double->int)
int b = (int) 10.5;
printf("%d\n", a);
3>自动类型提升(int->double)
double c = 10.6 + 6;
double d = 1 / 3;
double e = (double)3/2;
printf("e的值是%f\n", e);
4.算数运算的一个小练习
/*
提示用户输入一个时间的秒数,比如500秒就输入500,然后输出对应的分钟和秒,比如500s就是8分钟20秒
*/
int main()
{
/*
// 将c的值固定在10以内
int a = 96546546;
int c = a % 10;
*/
// 1.提示用户输入时间
printf("请输入一个时间值(秒):\n");
// 2.接收用户输入的时间
int time;
scanf("%d", &time);
// 3.转换成对应的分钟和秒
int minute = time / 60; // 分钟
int second = time % 60; // 秒
printf("%d秒 = %d分钟%d秒\n", time, minute, second);
return 0;
}
---复合赋值运算符、自增自减和关键字sizeof
1.复合赋值运算符a += 5; // a = a + 5;
a *= 5; // a = a * 5;
a += 5 + 6 + 4; // a = a + (5 + 6 + 4);
2.自增自减
a++ 数值上就等于 a += 1 等于 a = a + 1
a++和++a的不同:a++在运算过程中先把a 的值进入运算再做自增;++a在运算过程中先自增再把a 的值进入运算。(自减运算和自增一样)
自增小练习:
/*下面代码打印结果是____12,7______(需要写上分析思路)*/
//1.包含stdio.h头文件
#include <stdio.h>
//2.主函数main,argc表示参数个数,argv存放参数 ,两个参数是给读入命令行参数的
int main(int argc, const char * argv[])
{
//3.定义整形变量 b
int b;
//4.定义整形变量a并赋予初值5
int a = 5;
//5.计算 (++a) + (a++)的值并赋予给 b
b = (++a) + (a++);
//6.输出 b 和 a 的值
printf("b=%d, a=%d\n", b, a);
//7.函数正常退出
return 0;
}
/*思路分析 : main函数后面的(int argc, const char * argv[])在此程序中可以不予理会
mian中定义了整形变量 b 和初值为 5 的 a ,在运行 b = (++a) + (a++) 时需要明白:
(++a)先做完加 1 运算 a 再参与到 (++a) + (a++)中, (a++)是先将a 参与到 (++a) + (a++)中再做加 1 运算 。 所以在运行 b = (++a) + (a++)时, a做加1运算变为了6 ,所以 (++a)
的值为6; (a++)的值为6,但a的值已经变为了7。 所以此时 b = 6 + 6 = 12,a的值为7输出b,a两值为 12 和 7.*/
3.关键字sizeof():返回数据的所占字节数
int main()
{
//int size = sizeof(10);
//int size = sizeof 10.9;
int a = 10;
//int size = sizeof(a);
//int size = sizeof a;
int size = sizeof(char);
// int size = sizeof char; // 错误的,字符型数据必须加括号
printf("size=%d\n", size);
return 0;
}
---关系运算符
先计算运算符优先级高的运算,优先级一样的情况下,运算从左往右进行。(运算符优先顺序不要求记,有免费的优先级运算表)
int a = 10,b = 11;
// 条件成立就返回1,真
// 条件不成立就返回0,假
int result = b >= a;
---逻辑运算符
//逻辑与 条件1 && 条件2
// int a = 10>3 && 7<6; // a = 0
//int a = 0 && 10; // a = 0
{
/*
int a = 10;
int b = 10;
//int c = (a>5) && (++b>=11); // c = 1
int c = (a<5) && (++b>=11); // c = 0
}
2.逻辑或:“条件1||条件2”:当两边只要有一个成立的时候就返回1,并且当第一个条件成立的时候第二个条件不读取。
// 逻辑或 条件1 || 条件2
//int a = 0 || 11; // a = 1
int a = 10;
int b = 10;
int c = (a<5) || (b++ - 10); // c = 0
3.逻辑非:!条件。如果条件成立就返回0,如果条件不成立就返回1
// 逻辑非 !条件
//int a = !(10>8); // a = 0
//int a = !-10; // a = 0
//int a = !10>8; // a = 0
//int a = !!10; // a = 1
---三目运算符
条件 ? 数值1 : 数值2,,,如果条件成立返回数值1如果不成立返回数值2.
/*求a、b、c三者的最大值*/
// 求出a、b的最大值
int abMax = (a > b) ? a : b;
// 求出最终的最大值
int d = (abMax > c) ? abMax : c;
---选择结构
1.if的第一种结构
if(条件)
{语句1;
语句2;
.......
}
如果满足条件执行大括号里面的代码段
2.if的第二种结构
if(条件)
{语句1;
语句2;
.......
}
else{语句;..... }
如果满足条件执行大括号里面的代码段,不满足条件执行 else里面的代码段
3.if的第三种结构
if(条件1)
{语句1;
语句2;
.......
}
else if(条件2)
{语句1;
语句2;
.......
}
else if(条件3)
{语句1;
语句2;
.......
}
else{语句;..... }
执行满足条件的大括号内的代码段
4.if的第四种结构
if(条件)
语句1;
语句2;
满足条件只执行语句1.
5.if语句的一些注意事项:比较大小时,常量值放左边,变量放右边:if (0 == a)
6.注意赋值运算符,不要写成两个=;注意不要在if语句后面加“;”。
7.下面代码是错误的:作用域不明确
if(10>6)
int a = 5;
8.如果要在if后面的语句中定义新的变量,必须用大括号{ },并且作用域只在其大括号的里面
9.if结构三种方法的练习(并比较其性能):
/*
输入一个整数score代表分数,根据分数输出等级(A-E)(用两种方式)
A:90~100
B:80~89
C:70~79
D:60~69
E:0~60
*/
#include <stdio.h>
int main()
{
// 1.提示输入
printf("请输入分数值:\n");
// 2.接收输入
int score;
scanf("%d", &score);
// 3.判断等级 (性能最高)
if (score>=90 && score<=100) { // [90, 100]
printf("A\n");
} else if (score>=80) { // [80, 89]
printf("B\n");
} else if (score>=70) { // [70, 79]
printf("C\n");
} else if (score>=60) { // [60, 69]
printf("D\n");
} else { // (-∞, 59]
printf("E\n");
}
/* 性能中等
if (score>=90 && score<=100) { // [90, 100]
printf("A\n");
} else if (score>=80 && score<=89) { // [80, 89]
printf("B\n");
} else if (score>=70 && score<=79) { // [70, 79]
printf("C\n");
} else if (score>=60 && score<=69) { // [60, 69]
printf("D\n");
} else { // (-∞, 59]
printf("E\n");
}*/
/* 性能最差
if (score>=90 && score<=100) { // [90, 100]
printf("A\n");
}
if (score>=80 && score<=89) { // [80, 89]
printf("B\n");
}
if (score>=70 && score<=79) { // [70, 79]
printf("C\n");
}
if (score>=60 && score<=69) { // [60, 69]
printf("D\n");
}
if (score<=59) { // (-∞, 59]
printf("E\n");
}*/
return 0;
}