10.4作业

分支、循环练习

  1. 选择题
    1.1、以下程序的输出结果是__A______。
    main()
    {
    int k1=1,k2=2,k3=3,x=15
    if(!k1) x--;
    else if(k2)
    if(k3) x=4;
    else x=3;
    printf("x=%d\n",x);
    }
    A x=4 B x=15 C x=14 D x=3
    1.2、有以下程序,while循环执行___A ____次。
    int main()
    {
    int k=2;
    while(k=1)
    printf("%d",k);
    k--;
    printf("\n");
    }
      A) 无限次 B) 2 C) 1 D) 0
    1.3、有以下程序 int main(){ int a=1,b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) { a+=5; continue;} a-=3; } printf("%d\n",b);}程序运行后的输出结果是 A)3 B)4 C)5 D)6 A
    1.4、有以下程序
    #include
    int main()
    {
    int s=0,n;
    for (n=0;n<3;n++) 0 1 2
    {
    switch(s)
    { case 0:
    case 1:s+=1;
    case 2:s+=2;break;
    case 3:s+3;
    case 4:s+=4;
    }
    printf(("%d\n",s);
    }
    }
    程序运行后的结果是 C
    A)1,2,4 B) 3,10,10 C) 3,6,10 D) 3, 7, 7
    1.5、有以下程序
    #include
    int main()
    {int a=1,b=0;
    if(-a) b++;
    else if(a=0)b+=2; else b+=3;
    printf("%d\n",b);
    )
    程序运行后的输出结果是( B )。
    A)0 B)1 C)2 D)3
    1.6有以下程序
    #include
    int main()
    {
    int a=7;
    while(a--);
    printf("%d\n",a);
    }
    程序运行后的输出结果是( A )。
    A)-1 B)0 C)1 D)7
    1.7、
  2. 填空题
    2.1、以下程序运行结果是( 2 )。
    #include
    int main()
    {
    int x=2,y=-1,z=2;
    if(x
    if(y<0) z=0;
    else z+=1;
    printf("%d\n",z);
    }
    2.2以下程序的执行结果是( 20 )。
    #include
    int main()
    {
    int a,b,c,d,x;
    a=c=0;
    b=1;
    d=19;
    if(a) d=d-10;
    if(!c)
    x=15;
    else
    x=25;
    d++ ;
    printf("d=%d\n",d);
    }
    2.3以下程序的执行结果是( first )。
    #include
    int main()
    {
    int x=1,y=0;
    switch(x)
    {
    case 1:
    switch(y)
    {
    case 0:printf("first\n");break;
    case 1:printf("second\n");break;
    }
    case 2:printf("third\n");
    }
    }
  3. 以下程序在输入5,2之后的执行结果是( s =2,t=3 )。
    #include
    int main()
    {
    int s,t,a,b;
    scanf("%d,%d",&a,&b);
    s=1;
    t=1;
    if(a>0) s=s+1;
    if(a>b) t=s+t;
    else if(a==b)
    t=5;
    else
    t=2*s;
    printf("s=%d,t=%d\n",s,t);
    }
  4. 以下程序的执行结果是( #& )。
    #include
    int main()
    {
    int a=2,b=7,c=5;
    switch(a>0)
    {
    case 1:
    switch(b<0)
    {
    case 1:printf("@");break;
    case 2:printf("!");break;
    }
    case 0:
    switch(c==5)
    {
    case 0:printf("*");break;
    case 1:printf("#");break;
    case 2:printf("$");break;
    }
    default:printf("&");
    }
    printf("\n");
    }
  5. 以下程序运行结果是( 555 )。
    #include
    int main()
    {
    int x,y=1;
    if(y!=0) x=5;
    printf("\t%d\n" ,x);
    if(y==0) x=4;
    else x=5;
    printf("\t%d\n" ,x);
    x=1;
    if(y<0)
    if(y>0) x=4;
    else x=5;
    printf("\t%d\n" ,x);
    }
    2.7 以下程序的运行结果是(4 -2 4 0 4 -2 )
    #include
    int main()
    {
    int x , y=-2, z=0;
    if ((z=y)<0) x=4;
    else if (y==0)
    x=5;
    else
    x=6;
    printf("\t%d\t%d\n" ,x, z);
    if(z=(y==0))
    x=5;
    x=4;
    printf("\t%d\t%d\n" ,x,z);
    if(x=z=y) x=4;
    printf("\t%d\t%d\n" ,x,z);
    }
  6. 编程题、
  7. 编写程序实现:服装店经营套服,也单件出售,若买的不少于50套,每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条45元。输入所买上衣c和裤子t的件数,计算应付款m。
cpp 复制代码
#include <myhead.h>                                                                       

int main(int argc, const char *argv[])
{
    int c,t,n;
    printf("请输入买上衣和裤子的件数\n");
    scanf("%d %d",&c,&t);
    if(c>=50&&t>=50)
    {
        if(c>t)
        {
            printf("应付款m=%d元\n",(c-t)*60+t*80);
        }
        if(c<t)
        {
            printf("应付款m=%d元\n",(t-c)*45+c*80);
        }
    }
    else if(c<50||t<50)
    {

        if(c>t)
        {
            printf("应付款m=%d元\n",(c-t)*60+t*90);
        }
        if(c<t)
        {
            printf("应付款m=%d元\n",(t-c)*45+c*90);
        }

    }
    else{
        if(c>0)
        {
            printf("应付款m=%d元\n",c*60);
        }
        if(t>0)
        {
            printf("应付款m=%d元\n",t*45);
        }
    }
    return 0;
}
                                                                                          
  1. 思考题
    4.1 下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么? int n; if (n == 10) // 第一种判断方式 if (10 == n) // 第二种判断方式、
    第一种写法中规中矩,方便阅读;
    第二种写法他容易及时发现错误,当写成10=n时编译器会报错误,而n=10时就不会包错误。
    4.2 思考一下,计算1+2+3+......+100的和,最优化的算法是? 编程实现
    用数学公式S=n*(n+1)/2;
    没有循环的迭代
cpp 复制代码
#include <stdio.h> 
int main()
 { int n = 100;
 int sum = n * (n + 1) / 2;
 printf("1+2+3+...+%d = %d\n", n, sum); 
return 0;
 }

4.3 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
1.使用while(1);
2.使用for(;;)
3.使用goto(关键字要在goto上面);

相关推荐
我搞slam3 小时前
赎金信--leetcode
算法·leetcode
xxxmmc3 小时前
Leetcode 100 The Same Tree
算法·leetcode·职场和发展
Asmalin3 小时前
【代码随想录day 32】 力扣 509.斐波那契数列
算法·leetcode·职场和发展
胖咕噜的稞达鸭3 小时前
算法入门:专题攻克主题一---双指针(1)移动零 复写零
c语言·开发语言·c++·算法
海琴烟Sunshine3 小时前
leetcode 35.搜索插入的位置 python
python·算法·leetcode
程序员-King.3 小时前
day85——区域和的检索(LeetCode-303)
算法·前缀和
剪一朵云爱着3 小时前
力扣2200. 找出数组中的所有 K 近邻下标
算法·leetcode
胖咕噜的稞达鸭4 小时前
算法入门:专题攻克主题一---双指针(2)快乐数 呈最多水的容器
开发语言·数据结构·c++·算法
自信的小螺丝钉5 小时前
Leetcode 347. 前 K 个高频元素 堆 / 优先队列
算法·leetcode·优先队列·