表达式与流程控制(2)
来源:互联网 发布:什么叫it行业 编辑:程序博客网 时间:2024/06/05 15:51
财务人员给员工发工资时经常遇到这样一个问题,即根据每个人的工资额(以元作为单位)计算出各种面值的钞票的张数,且要求总张数最少。
例如,某职工工资为3436元,发放方案为:100元34张,20元1张,10元1张,5元1张,1元1张。
#include <stdio.h>int main(){ int m100; int m50; int m20; int m10; int m5; int money; scanf ("%d", &money); m100 = money / 100; money = money % 100; m50 = money / 50; money = money % 50; m20 = money / 20; money = money % 20; m10 = money / 10; money = money % 10; m5 = money / 5; money = money % 5; printf ("m100 = %d\nm50 = %d\nm20 = %d\nm10 = %d\nm5 = %d\nm1 = %d\n", m100, m50, m20, m10, m5, money); return 0;}
从键盘输入一个大写字母,要求改用小写字母输出。
while语句是支持“当型”循环控制结构的语句。#include <stdio.h>int main(){ char ch; scanf ("%c", &ch); if (ch >= 'A' && ch <= 'Z') { char change_ch = ch + 'a' - 'A'; printf ("change_ch = %c\n", change_ch); } else { printf ("Your input is error!\n"); } return 0;}
if 语句可以省略else部分,变为如下格式:
if (表达式)
{
语句
}
if (表达式)
{
语句
}
else
{
语句
}
一般格式为:
while (表达式)
{
语句;
}
do_while语句是支持“直到型”循环控制结构的语句。
一般格式为:
do
{
语句;
} while (表达式);
这话分号不能丢
for语句是一种使用比while语句更加灵活的循环控制语句。
一般格式为:
for (表达式1; 表达式2; 表达式3)
{
语句
}
先求解表达式1;
再解表达式2,若为真(非0)值,则
执行语句,然后求解表达式3,再
转到求解表达式2。若为假(0)值,
则结束for语句的执行。
一个循环语句内又包含另一个完整的循环语句,称为循环语句的嵌套。内嵌的循环语句一般称为内循环,包含内循环的循环语句称为外循环。内循环再嵌套内层循环,就够成了多重循环。
break语句的功能是:
在switch语句中使流程跳出switch结构。
在循环语句中使流程跳出当前循环。
continue语句的功能是在循环语句中使本次循环结束,即跳过循环体中下面尚未执行的语句,接着进行下次是否执行循环的判断。
循环语句注意点!
在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
示例:
长循环层在最内层,效率高
for (col = 0; col<5; col++)
{
for (row = 0; row<100; row++)
{
sum = sum + a[row][col];
}
}
长循环放在最外层,效率低
for (row = 0; row<100; row++)
{
for (col = 0; col<5; col++)
{
sum = sum + a[row][col];
}
}
建议for语句的循环控制变量的取值采用"半开半闭区间"写法。
半开半闭区间写法和闭区间写法虽然功能相同,但相比之下,半开半闭区间写法更加直观。二者对比如下:
半开半闭区间写法:
for (n = 0; n < 10; n++)
{
....
}
闭区间写法
for (n = 0; n <= 9; n++)
{
....
}
不能在for循环体内修改循环变量,防止循环失控
for (n = 0; n < 10; n++)
{
....
n = 8; // 不可,很可能违背了你的意愿
....
}
循环要尽可能短,要使代码清晰,一目了然。
如果所写的一个循环的代码超过以显示屏,那肯定会让读代码的人发狂的。解决办法有两个:
第一:重新设计这个循环,确认是否这些操作都必须放在这个循环里。
第二:将这些代码改写成一个子函数,循环中只调用这个子函数即可。
一般来说循环内的代码不要超过20行。
把循环嵌套控制在3层以内
国外有研究数据表明,当循环嵌套超过3层时,程序员对循环的理解能力会极大的降低。如果你的循环嵌套超过3层,那么就建议你重新设计循环或是将循环内的代码改写成一个子函数。
for语句的控制表达式不能包含任何浮点类型的对象
习题!!!
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手
#include <stdio.h>int main(){ char killer; int i; int sum; for (i = 0; i < 4; i++) { killer = 'A' + i;sum = (killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D');if (sum == 3){ printf ("killer is %c\n", killer); break;} } return 0;}
题目:通过编程实现,统计0~n有多少个9
提示:n通过参数传入
#include <stdio.h>
void fun(int n)
{
int i;
int temp;
int count = 0;
int b;
for(i = 1;i <= n;i++)
{
temp = i;
while(temp != 0)
{
b=temp % 10;
temp=temp / 10;
if(b == 9)
{
count++;
}
}
}
printf("The result is:%d\n",count);
}
int main()
{
int n;
printf("Enter a number!\n");
scanf("%d",&n);
fun(n);
return 0;
}
题目:通过编程实现,分别统计0~n有多少个0~9
提示:n通过参数传入
#include <stdio.h>
void fun(int n)
{
int i;
int temp;
int count = 0;
int b;
for(i = 1;i <= n;i++)
{
temp = i;
while(temp != 0)
{
b=temp % 10;
temp=temp / 10;
if(b == 9)
{
count++;
}
}
}
printf("The result is:%d\n",count);
}
int main()
{
int n;
printf("Enter a number!\n");
scanf("%d",&n);
fun(n);
return 0;
}
- 表达式与流程控制(2)
- 表达式与流程控制
- 新手上路系列2:表达式与流程控制
- c语言表达式与流程控制(1)
- 【JavaScript】(2)标识符与关键字\基本|引用数据类型 \变量 \运算符与表达式\流程控制语句
- (2) 流程控制与数组
- 《Thinking in Java》狗血的学习笔记-2表达式与控制流程
- “变量表达式”和“流程控制”.
- 操作符号,表达式,流程控制
- Java心得---表达式、流程控制
- 表达式和流程控制语句
- 运算符,表达式,流程控制
- Java表达式和流程控制
- 基本数据类型、表达式及程序流程控制(C++)
- 流程控制与方法
- 流程控制与数组
- 流程控制与数组
- 流程控制与数组
- 服务器配置的各种英文简称
- vue.js+nodejs的MVVM笔记
- caffe中Eltwise层
- yii, gridview隐藏查看view按钮以及自定义查看按钮链接
- Mybatis的sql封装
- 表达式与流程控制(2)
- sql经典语句
- 设计模式(1)-工厂方法模式
- 使用java代码在本地创建文件夹(多层目录),在本地磁盘创建文件目录
- JAVA设计模式之单例模式
- 洛谷 P1003 铺地毯
- poj 2653 Pick-up sticks (线段相交)
- 杜教筛 学习小结
- Mybatis查询语句返回对象和泛型集合