表达式与流程控制(2)

财务人员给员工发工资时经常遇到这样一个问题,即根据每个人的工资额(以元作为单位)计算出各种面值的钞票的张数,且要求总张数最少。
例如,某职工工资为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;
}
从键盘输入一个大写字母,要求改用小写字母输出。
#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语句是支持“当型”循环控制结构的语句。
一般格式为: 
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;  
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BPMN2中的流转条件表达式是用于控制流程顺序流的流转条件的一种机制。它用于决定在什么情况下一个顺序流可以被执行。以下是关于BPMN2流转条件表达式的一些相关解释。 首先,流转条件表达式是一个逻辑表达式,它基于某些条件来确定流程中的流转路径。这些条件可以基于流程中的数据和事件触发器。通过在流程元素之间定义流转条件表达式,可以实现流程的分支和合并。 其次,流转条件表达式可以使用多种方式来表示,包括简单的比较运算符(如等于、不等于、大于、小于等)、逻辑运算符(如与、或、非)、在某个范围内的数等等。可以根据具体的业务需和规则来定义和使用这些表达式。 最后,流转条件表达式可以在BPMN2的顺序流上定义,也可以在任务、网关和事件等其他流程元素上定义。在顺序流上定义的条件表达式决定了在满足条件时是否可以执行该顺序流。在其他流程元素上定义的条件表达式决定了在满足条件时是否可以进入或离开该元素。 总之,BPMN2流转条件表达式是一种用于控制流程顺序流流转的机制,它通过逻辑表达式来确定流程中的不同路径。这些表达式可以基于不同的比较和逻辑运算符,并可以在顺序流以及其他流程元素上定义和使用。这种机制可以帮助我们实现复杂的流程控制和条件分支。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值