知识点总结:
1.while语句:当表达式不为0 时,会循环执行其中的语句
2.后置递增运算符和后置递减运算符:题型3和6均有作书中详细解释
以a- -为例:
1.可说明为:使a的值减小1(该表达式的值是减小前的值)
2.即对表达式a--进行判定时,它还是递减之前的值。当no的值是11的时候,表达式no--的结果还是11,而不是10
3.字符常量和putchar函数
1)字符常量:像' * ',' \n '这样,被用单引号' '括起来的字符称为字符常量。字符常量是int类型。
2)字符常量表示单一的字符 * ,用单引号' '表示
字符串常量表示单纯由字符 * 构成的一连串连续排列的字符,用双引号" " 表示
3)像\n或\a这样的转义字符是作为一个字符来使用的
4)通过使用putchar函数,可以显示单一的字符
4.do语句和while语句
5.前置递增运算符和前置递减运算符
以i=0开始
++i 经过了两个步骤:1.i的值递增1
2.显示i的值
即++i 为“在显示i的值之前递增”,最初显示的i的值,是0递增后得到的1
对使用后置递增/递减运算符的表达式进行判断后得到的是递增/递减 前的值
对使用前置递增/递减运算符的表达式进行判断后得到的是递增/递减 后的值
6.do语句和while语句的区分
分类题型
1.输入1个整数值,显示出从它开始递减到0的每一个整数
代码清单4-5
利用后置递减运算符求值运行
int main()
{
int no;
printf("请输入1个正整数"), scanf("%d", &no);
while (no >= 0)
{
printf("%d ", no);//printf("%d",no--)
no--;
}
printf("\n");
return 0;
}
练习4-3:输入值为负数时,不执行换行操作(未解决问题)
2.用递减运算符简化程序代码
从输入的整数开始倒数到0
代码4-6:
int main()
{
int no;
printf("请输入1个整数:");
scanf("%d", &no);
while (no >= 0) {
//方法1
//printf("%d\n", no);
//no--
//方法2
printf("%d\n", no--);
//后置递减运算表达式 P89注意
;
}
printf("程序执行完毕");
return 0;
}
练习4-4(未解决问题)
3.数据递增
递增显示从0到输入的正整数为止的各个整数
int main()
{
int nb,na;
printf("请输入1个正整数:"), scanf("%d", &nb);
na = 0;
while (na <= nb) {
printf("%d ", na++);//i的值在显示之后递增 p90底部文字注解
printf("\n");
}
练习4-5(未解决问题)
4.升序输出小于输入值的所有正偶数
练习4-6
寻求多种解法,包括只使用while函数的情况下
int main()
{
int i, nb;
printf("请输入1个正整数:"), scanf("%d", &nb);
i = 2;
while (i <= nb) {
//方法1:使用if语句辅助实现
if (i % 2 == 0)
printf("%d ", i);
i = i + 1;
//方法2
printf("%d ", i );
i = i + 2;
//printf("%d ", i + 2);
}
return 0;
5.显示出小于输入的整数的所有2的乘方(未解决)
练习4-7
6.限定次数的循环操作
输入1个整数后,并排连续显示出该整数个*
int main()
{
int no;
printf("请输入1个正整数:"), scanf("%d", &no);
while (no-- > 0)
{
putchar('*');
//putchar(' '); 同等道理
printf(" ");
}
return 0;
}
练习4-8(未解决)
7.输入规定个数整数并显示出它们的合计值和平均值
代码4-9
int main()
{
int i = 0;//i为前置递增中间过渡数值
int sum = 0;//sum为所有整数的和
int num, tmp;//num为输入整数个数,tmp为输入的每一个整数值
printf("要输入多少个整数");
scanf("%d", &num);
while (i < num)
{
printf("No.%d : ", ++i); //no后的序号数值不会超过输入的整数个数
scanf("%d", &tmp); //输入整数
sum += tmp;//加且赋值运算符,左加右的的结果赋值给左操作数
}
printf("合计值 :%d \n", sum);
printf("平均数 : %.2f", sum / (double)num);
return 0;
}
8.交替显示两个符号,总数等于输入的整数值(怎样做到当输入0以下整数时,什么也不显示)
练习4-9
怎样用do语句实现?
int main()
{
int no;
int i=1;
printf("请输入1个正整数");
scanf("%d", &no);
while (i <= no)
{
if (i % 2 == 0)//注意这里别把i写成no!
putchar('-');
else
putchar('+');
i++; //p89
}
return 0;
}
9.输出某个符号,总数等于输入的整数值(怎样做到当输入0以下整数时,什么也不显示)
练习4-10
int main()
{
int a, c;
int b = 0;
printf("正整数:"), scanf("%d", &a);
do
{
b++;
putchar('*'); //while (a > b++){puts("*"); 第二种方法
} while (b < a);
return 0;
}
以a=3为例推算
1)3 > 0
b=1
2)3 >1
b=2
3)3 >2
b=3
10.逆向显示整数值
代码4-10
在整数/整数的运算中,小数点以下会被忽略,则第一次a/10 的结果是196,会直接赋值给a。
int main()
{
int a;
do
{
printf("请输入1个正整数:"), scanf("%d", &a);
if (a <= 0)
printf("\a您输入的不是正整数");
} while (a <= 0);
printf("该整数逆向显示的结果是:");
while (a > 0)
{
printf("%d", a % 10); 显示最后一位数
a /= 10; 右移一位数
除且赋值运算符:将左操作数除以右操作数的结果赋值给左操作数
}
puts("。");
return 0;
}
11. 对代码4-10作小修改,在显示结果的同时显示输入的整数值
练习4-11
int main()
{
int a;
do
{
printf("请输入1个正整数:"), scanf("%d", &a);
if (a <= 0)
printf("\a您输入的不是正整数");
} while (a <= 0);
printf("%d逆向显示的结果是:",a); //在此步骤调整即可
while (a > 0)
{
printf("%d", a % 10);
a /= 10;
}
puts("。");
return 0;
}
12.读取1个正整数,显示其位数
练习4-12
int main()
{
int a;
int i=0;
do
{
printf("请输入1个正整数:"), scanf("%d", &a);
if (a <= 0)
printf("\a您输入的不是正整数");
} while (a <= 0);
printf("%d的位数是:", a);
while (a > 0)
{
//printf("%d", a % 10);
a /= 10;
i++;
}
printf("%d", i);
puts("。");
return 0;
}
以输入21为例,第一次运行结束a=2 ,i=1
第二次a=0 ,i=2直接输出 则21的位数是2
以输入1963为例,第一次运行结束 a=196,i=1
第二次 a=19 ,i=2
第三次 a=1 ,i =3
第四次 a = 0 ,i = 4 运行结束,输出i=4
则1963的位数是4 。