《C语言程序设计(第3版)》教材配套习题 第三章

第三章 分支结构

    • if-else中的猫腻
          • 两个并列的if
          • if后的马上分号
          • 在if (表达式) 中用赋值语句
    • switch中的猫腻
          • switch (表达式)
          • case 常量表达式n:
          • 填空题易漏" break; "
          • 没有break时的执行顺序
    • 输出的空格/换行控制
          • 坑人的空格填空题...

if-else中的猫腻

两个并列的if
mynumber = 38;
scanf ("%d", &yournumber); 
if(yournumber == mynumber){
      
    printf("Right");
}
if(yournumber > mynumber ){
      //这里不是else if,即这里的判断不在上一个if不成立的前提下
    printf("Big");
}else{
      
    printf("Small");
}
if后的马上分号
double grade; 
scanf ("%lf", &grade); 
if(grade < 60); {
     	//注意这里的分号,即if已经结束
    printf("Fail"); 
}
printf("?");
在if (表达式) 中用赋值语句
int k, flag;
if (k = 0) {
      //k赋值为0后,用k来判断是否为true
  flag = 0;
} else {
     
  flag = 1;
}

但是不能在逻辑运算符后赋值

int k=1, flag;
if (k = 0 && k==1) {
      //先赋值编译是可以通过的
  flag = 0;
} else if(k = 0 && k==1){
      //后赋值编译无法通过
  flag = 1;
}

switch中的猫腻

switch (表达式)

可以是常量、变量、常量表达式、变量表达式
注意,常量不只有数值类型,变量也是

switch(9){
     }
switch(1+1){
     }
switch(choice){
     }
switch(choice* choice+1){
     }
case 常量表达式n:
  1. 不能含有变量,只能是常量或常量表达式
  2. 常量表达式的结果不能重复(编译错误)
填空题易漏" break; "
没有break时的执行顺序

[例] 从判断到的位置开始顺序执行,default的位置任意且(无break时)影响结果

switch(op){
     
       case '+': printf("%d", value1 + value2); 
       default: printf("Error"); 
       case '-': printf("%d", value1 - value2); 
}

当op为’+‘时,从case ‘+’:后面顺序输出;
当op为’/‘时,从default:后面顺序输出;
当op为’-'时,从case ‘-’:后面顺序输出。

输出的空格/换行控制

坑人的空格填空题…

[例1]
输入一个正整数n,再输入n个字符,将这些字符输出,输出时在字符之间加一个空格,最后一个字符的后面没有空格。

# include <stdio.h>

int main()
{
         
    char ch;
    int first = 1, k, n; 

    scanf("%d\n", &n);
    for(k = 1; k <= n; k++){
     
   		________________ //填空①
   		if ( first == _______ ) //填空②
		{
      
	    	putchar(ch); 
            ________________ //填空③
		}else{
      
     	    ________________ //填空④
     	    putchar(ch);
	 	}
    }

    return 0;
}

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

# include <stdio.h>
int main()
{
     
    char ch;
    int first, k, n, x; 

    scanf("%d", &n);
    ________________ //填空①
    
    for(k = 1; k <= n; k++){
     
        scanf("%d", &x); 
        if ________________ //填空②
        {
     
            if ( first == 1 ){
      
                printf("%d", x); 
                ________________ //填空③
            }else{
      
                ________________ //填空④
            }
        }
    }

    return 0;
}

你可能感兴趣的:(教材配套习题,c语言)