C程序设计基础及实验 习题03 复习

单选题

2-1 有一函数
 

33.png


,以下程序段中错误的是()。

A.

if(x > 0) y = 1;
else if(x == 0) y = 0;
else y = -1;

B.

y = 0;
if(x > 0) y = 1;
else if(x < 0) y = -1;

C.

y = 0;
if(x >= 0);
if(x > 0) y = 1;
else y = -1;

D.

if(x >= 0)
if(x > 0) y = 1;
else y = 0;
else y = -1;

选择C,大于0为1,小于等于0为-1

2-2 对于变量定义:int a, b = 0;下列叙述中正确的是( ) 。

A.a的初始值是0b的初始值不确定。

B.a的初始值不确定,b的初始值是0

C.ab的初始值都是0

D.ab的初始值都不确定。

选择B

2-3 

下列程序段的输出结果是 ()。

int main(void)
{     
      int x = 1, a = 0, b = 0;
      
      switch(x)        
      {
            case 0:   b++;
            case 1:   a++;
            case 2:   a++; b++;    
      }
      printf("a=%d,b=%d\n",a,b);        

      return 0;
}

A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2

选择A,执行case=1后继续执行case=2,所以a=2,b=1

2-4 

能正确表示逻辑关系"a≥10 或 a≤0"的C语言表达式是()。

A.a>=10 or a<=0 B.a>=0 | a<=0 C.a>=10 && a<=0 D.a>=10 || a<=0

选择D

2-5 下列叙述中正确的是()。

A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

选择D,可用可不用

2-6 

在嵌套使用if语句时,C语言规定else总是()。

A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

选C,书本原话

2-7 

下列程序段的输出结果是()。

int main(void)
{   
      int  a = 2, b = -1, c = 2;
      
      if(a < b)
            if(b < 0)  
                  c = 0;
      else  c++;
      printf("%d\n",c);    
      
      return 0;
}

A.0 B.1 C.2 D.3 

选择C,else和if(b<0)配对,所以c的值没有发生变化

2-8 

在执行以下程序时,为使输出结果为:t=4,则给a和b输入的值应满足的条件是()。

int main(void)
{    
      int  a,b,s,t;

      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("t=%d\n",t);    
    
      return 0;
}

A.a>b B.a<b<0 C.0<a<b D.0>a>b

选择C,else if和else都和if(a>b)配对

多选题

3-1 设变量已正确定义,以下()是合法的C语句。

A.

if ( n <= 10 );

B.

switch ( k ) {
    case 1: printf("one"); break;
    case 2: printf("two"); break;
    case 1: printf("one"); break;
    default: printf("zero"); break;
}

C.

switch ( k%2 ) {
    default: printf("zero"); break;
    case 1: printf("one");
    case 1+1: printf("two");
}

D.

n = 10;
switch ( k ) {
    case n%3: printf("one");
    case n%4: printf("two");
    default: printf("zero");
}

选择AC,case后的值不能重复, n=10;应为int n=10;

3-2 

判断ch是数字字符的C语言表达式是( ) 。

A.

'0' <= ch <= '9'

B.

ch >= '0' && ch <= '9'

C.

ch >= '1' && ch <= '10'

D.

! (ch < '0' || ch > '9')

选择BD,C语言和Python不一样,不能放在一起比较

3-3  

设变量已正确定义,以下程序段( ) 的功能是交换变量xy的值。

A.

temp = x; x = y; y =temp;

B.

 x = y; y = x;

C.

y = x; x = y;

D.

x = x + y; y = x - y; x = x – y;

选择AD,

填空题

4-1 

写出以下程序段的运行结果。请注意,直接填数字,前后不要加空格等任何其他字符。

    int  a;
    scanf("%d", &a);
    if(a > 50)  printf("%d", a);
    if(a > 40)  printf("%d", a);
    if(a > 30)  printf("%d", a);    

输入32,输出32

输入46,输出4646

输入58,输出585858

4-2 

以下程序段的运行结果是 onetwo 。

int k = 16;
switch ( k%3 ) {
    case 0: printf("zero"); 
    case 1: printf("one"); 
    case 2: printf("two");
}

4-3 以下程序段的运行结果是 9 。

char c = ’b’; 
int k = 4;
switch(c){
    case 'a': k = k + 1; break;
    case 'b': k = k + 2;
    case 'c': k = k + 3;    
}
printf("%d",k);    

4-4 写出执行以下程序段后变量x的值。

int x, y;
scanf("%d", &x);
if (x > 0){ 
    y = 1;
}else if (x = 0){
    y = 0;
}else{
   y = -1;
}    

输入10x的值是 10

若输入-10x的值是 0

4-5 

写出以下程序段的运行结果。

if(op == '+'){
    printf("%d", value1 + value2);
}
if(op == '-'){ 
    printf("%d", value1 - value2);
}else{
    printf("Error");
}

输入8-5,则输出 3

输入3+4,则输出 7Error

程序填空题

5-1 写出满足条件的关系表达式或逻辑表达式[4]

写出满足条件10 < x < 100或者x < 0的C表达式。

(x>10 && x<100) || (x<0)

5-2 输出偶数

输入一个正整数n,再输入n个整数,输出其中的偶数。要求相邻数字中间用一个空格分开,行末不得有多余空格。

# include <stdio.h>

int main()

{

        char ch;

        int first, k, n, x;

        scanf("%d", &n);

        first=1;

        for(k = 1; k <= n; k++){

                scanf("%d", &x);

                if(x%2==0){

                        if ( first == 1 ){

                                printf("%d", x);

                                first=0;

                        }else{

                                printf(" %d",x);

                        }

                }

        }

        return 0;

}

5-3 找出3个数中最大的数

输入3个整数,输出其中最大的数。

#include <stdio.h>

int main()

{

         int a, b, c, max;

        scanf("%d %d %d", &a, &b, &c);

         max = 0;

        if ( a > b ) {

                if ( a > c ) {

                        max=a;

                } else {

                        max=c;

                }

         } else {

                 if(b>c) {

                         max = b;

                 } else {

                        max=c;

                }

         } 

        printf("%d\n", max);

        return 0;

}

5-4 写出是否构成一个三角形的逻辑表达式

在一个三角形中,任意两边之和大于第三边。如果变量abc代表三角形的三条边,以下是表示abc能构成一个三角形的C表达式。

(a+b>c) && (a+c>b) && (b+c>a)

5-5 输出每个月的天数

输入年,输出该年每个月的天数。其中1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月平年有28天,闰年有29天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。

#include <stdio.h>

int main() {

         int day, month, year;

        scanf("%d", &year);

        for(month = 1; month <= 12; month++){

                switch(month){

                        case 2:

                                if((year%4==0)&&(year%100!=0) || (year%400==0)) {

                                        day = 29;

                                }else{

                                        day=28;

                                }

                                break;

                        case 1:case 3:case 5:case 7:case 8:case 10:case 12:

                                day = 31;

                                break;

                        default:

                                day = 30;

                                break;

                }

                printf("%d ", day) ;

        }

        return 0;

}

5-6 显示扑克牌

在玩牌程序中,每一组牌用数字1〜13代表。输入数字,显示相应的牌。其中2〜10直接显示数字,而数字1、11、12、13则分别用Ace、Jack、Queen、King来表示。

#include <stdio.h>

int main()

{

        int n;

        scanf("%d", &n);

        if(n >= 1 && n <= 13){

                switch(n){

                        case 1:printf("Ace\n"); break; 

                        case 11: printf("Jack\n"); break;

                        case 12:printf("Queen\n"); break; 

                        case 13: printf("King\n"); break;

                        default:printf("%d\n",n); break; 

                }

        }else{

                printf("Error\n");

        }

        return 0;

}

这道题错了实在是没意思,Ace后忘记加\n了

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北欧海盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值