大一上学期c语言PTA错题总结(自用)(02)

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

​
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

else与之前与其最近的且不带else的if配对,虽然这个题中没有加括号,但要清楚程序的执行顺序。上面的代码和下面等价:

#include <stdio.h>


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;
}

2.当字符型变量ch 取何值(或何范围)时输出“YES”(A)

char ch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
if(ch!='I'&&ch!='K')printf("NO");
else printf("YES");

A.I和K

B.除I和K以外的大写字母

C.除大写字母外的其他字符

D.大写字母

和上一个题大同小异,同样需要正确的刨析if语句中每一层的关系。 


3.设变量已正确定义,以下(BCD)是合法的switch语句。

A.

switch(choice){
      case 1: price = 3.0; break;
      case 2: price = 2.5; break;
      case 3: price = 4.0; break;
      case 4: price = 3.5; break;
      case 1: price = 3.0; break;
      default: price = 0.0; break;
}

B.

switch(choice){
      case 1: price = 3.0; break;
      case 2+2: price = 3.5; break;
}

C.

switch(9){
      case 3: price = 4.0; break;
      case 2: price = 2.5; break;
}

D.

switch(choice* choice+1){
      default: price = 0.0; break;
      case 2: price = 2.5; break;
}

当时的主要困惑是C的9是否正确,9也算一个表达式。 

另外,做关于switch的题时一定要关注break的使用。 


4.对下列代码的描述正确的是:C

#include "stdio.h"
int main(){
    long num=1;
    while(num++ > 0) for(long i=num; i >=0; i--)printf("i :=\n \t %ld \n" , i);
    return 0;
}

A.

程序有编译错误,不能执行

B.

循环条件永为真,循环无限次,程序根本停不下来,打印输出无限行

C.

循环有限次,程序正常结束,打印输出有限行

D.

程序运行过程必定会出错(崩溃),结果打印输出有限行

 变量越界而反问题,在错题(1)中有具体介绍。

但同时发现,有些题会给出几个选项问到下列哪一个不是死循环,这时有时候便不会考虑这个问题,而是将这一问题笼统的归结为死循环,还是要具体问题具体分析,选出最优解。


 5. 以下说法正确的是:(D)

A.一个C语言源文件(.c文件)必须包含main函数

B.一个C语言源文件(.c文件)可以包含两个以上main函数

C.C语言头文件(.h文件)和源文件(.c文件)都可以进行编译

D.在一个可以正确执行的C语言程序中,一个C语言函数的声明(原型)可以出现任意多次

一个函数的声明确实可以出现很多次,而一个c的项目可以包含很多.c文件,其中有且只能有一个有main函数 。


6. 关于递归函数以下叙述错误的是(B )。

A.

递归函数是自己调用自己。

B.

递归函数的运行速度很快。

C.

递归函数占用较多的存储空间。

D.

递归函数的运行速度一般比较慢。 

递归函数运行速度一般比较慢,记住就好。 


7.If all variables have been defined and declared in the following program, all the variables which can be used in function fun() are _A_.(如果在下面的程序中定义并声明了所有变量,那么fun()函数中可以使用的所有变量都是_A_。

void fun(int x)
{
    static int y;
    ……
    return;
}
int z;
void main( )
{
    int a,b;
    fun(a);
    ……
}

A.x,y

B.x,y,z

C.a,b,y,z

D.a,b,x,y,z

  

z虽然是全局变量,但定义在函数fun之后,调用不到,而a、b是主函数里的,也调用不到 


8. 静态变量的作用域是整个文件。(×)

看具体定义位置。

9.当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区。(×)

以上两题都是关于变量的存储方式问题,个人总结有以下需要注意的点:

《1. 全局变量全部存放在静态存储区;

《2.形参、函数中定义的没有用static声明的变量全部分配到动态存储区;


10.The following piece of code prints out_B_.

for (a=1,i=-1; -1<=i<1; i++) {
    a++;
    printf("%2d", a);
}
printf("%2d", i);

 A.2 3 1

B.-1

C.1 2 0

D.3

在这个题的循环判断条件中的连续判断里面,从左到右先判断-1<=i,显然成立,返回1,之后再判断1<1,不成立,故不进入for循环,直接输出i。


  • 11
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这是使用switch语句来定义变量price的代码。switch选择器的参数是choice,根据不同的choice值,会执行不同的case语句。如果choice为1,则price变量的值为3.0,如果choice为2,则price变量的值为2.5,如果choice为3,则price变量的值为4.0,如果choice为4,则price变量的值为3.5,如果choice不是1, 2, 3, 4中的任一个,那么price变量的值为0.0。 ### 回答2: 上述的 switch 语句是不合法的。因为 switch 语句的花括号中应该在每一个 case 中包含一个常量表达式,以便与 switch 声明中定义的变量进行比较。所以,正确的 switch 语句应该为: switch(choice){ case 1: price = 3.0; break; case 2: price = 2.5; break; case 3: price = 4.0; break; case 4: price = 3.5; break; default: price = 0.0; break; } 在这个修改后的 switch 语句中,case 后面跟的是常量表达式,如果 choice 的值与任何一个 case 后面的值相同,那么与该 case 向关联的语句将会被执行。如果 choice 的值与所有的 case 语句都不匹配,那么与 default 向关联的语句将会被执行。 此外,每一个 case 后面都包含了一个 break 语句。这个语句告诉编译器在执行完当前 case 之后跳出 switch 语句。如果没有 break 语句,控制流将会继续执行下一个 case 或者 default 语句,直到遇到 break 为止。这可能导致不必要的执行,在编码过程中应尽量避免这种情况。 ### 回答3: 在这段代码中,switch语句的变量choice,根据不同的choice值,程序会执行相应的代码块。这些代码块中的case语句的语法不正确,应该改为如下形式: switch(choice){ case 1: price = 3.0; break; case 2: price = 2.5; break; case 3: price = 4.0; break; case 4: price = 3.5; break; default: price = 0.0; break; } 在这个正确的switch语句中,case后面跟的是具体的值,而不是表达式。当变量choice的值与case后面的值匹配,对应的代码块会被执行,如果都匹配不上,就会执行default后面的代码块。 这个switch语句的作用看起来是根据用户的选择来计算不同的价格。如果用户输入1,那么price就设为3.0,如果输入2,就设为2.5,以此类推。如果用户输入了一个无效的值,比如0或者负数,price就会被设为0.0。 在实际编写代码,我们应该注意switch语句中的变量应该是整字符,不能是浮点或者布尔。另外,在不同的情况下,可能需要执行不同的操作,这我们应该把具体的操作写在case语句中,而不是在代码块中。如果多个case需要执行相同的操作,可以使用fallthrough关键字让程序跳过break语句,继续执行下一个case。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值