大一新生的pta错题归纳(期末模拟-三校联考)

三校联考错题(大一期末)

1.结构体成员的类型必须是基本数据类型。

false

除了基本数据类型,还可以是构造类型,如数组、结构体(struct)、共用体(union)、枚举类型(enum)

2.语句填空:下列 for循环语句将输出: 0 1 2 0 1 2 0 1 2

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

答案不定:i%3-1+!(i%3)*3 (i-1)%3

3.char word[3][10]={ "China", "Denmark", "Spain"}, 则printf(“%s”, & word [1][3]) 的值为 mark

传送要打印的是地址,然而打印字符串并不会在第一个就截止,而是接着打印下去

4.函数的构成

C 函数是由 FI 构成的。

A) 常量
B) 变量
C) 运算符
D) 表达式
E) 语句
F) 函数首部
G) 函数类型
H) 函数名
I) 函数体
J) 函数参数
K) 函数值


注:请按顺序填大写字母。

5.若int型变量为32位的,则下面这段代码,打印输出的是结果是 4,666 。

#include <stdio.h>
int main(){
    int a;
    a = 3;
    printf("%ld,", sizeof(a = 666));
    printf("%d", a);
    return 0;
}

false

注意:sizeof不能进行运算,包括赋值。

6.在对全部数组元素赋初值时,可以不指定数组长度。

true

描述形式:a[]={0,1,2,3}

这是被允许的。

7.链表是动态存储分配的数据结构。根据需要动态地开辟内存空间,可以比较自由方便地插入新元素(结点),支持随机访问,故使用链表可以节省内存,操作效率高。

false

由于每个节点都包含一个指针,故耗费内存比数组大。

8.使用switch语句做分支判断的时候,只能判断常量表达式。

true

9.if-else语句的一般形式如下,其中的语句1、语句2只能是一条语句或者是用{}括起来的复合语句。

if (表达式)

语句1;

else

语句2 ; 

true

10.以下对字符数组进行初始化,错误的是( )。

A.char c1[3]={'1','2','3'};

B.char c2[3]="123";

C.char c3[ ]={ '1','2','3','\0'};

D.char c4[ ]="123";

B

"123"是字符串,共包含四个字符,c[3]最多只容纳三个字符。

11.递归函数的二个要素是( )。

A.函数头、函数体

B.递归出口、边界条件

C.边界条件、递归方程

D.递归表达式、递归方程

C

回忆一下,反正我已经忘了。

12.假设变量 x 数据类型为 int,且初始值为2,则执行下面代码段后 while(x--); printf(“%d\n”,x); 程序的输出结果是:( )

A. 2

    1

    0

B. -1

C. 1

     0

D.死循环

B

细节,注意while语句后的分号

13.执行以下程序,写出运行结果:11

#include<stdio.h>
int  fun_x(const  char  *s)
{
  if(!*s) 
    return  0;
  else 
    return (1 + fun_x(s+1));
} 

int main()
{
  char str[]="helloworld!";
  printf("%d",fun_x(str));
  return 0;
}

fun_x 的功能是求字符串长度

14.写出下列程序段的运行结果

程序段1:
int x;
scanf("%d",&x);
if(x>=90)printf("A");
if(x>=80)printf("B");
if(x>=70)printf("C");
if(x>=60)printf("D");
if(x<60)printf("E");

如果输入88分,则程序结果为 BCD

程序段2:
int x;
scanf("%d",&x);
if(x>=90)printf("A");
if(x>=80&&x<90)printf("B");
if(x>=70&&x<80)printf("C");
if(x>=60&&x<70)printf("D");
else printf("E");

如果输入88分,则程序结果为 BE

程序段3:
int x;
scanf("%d",&x);
if(x>=90)printf("A");
else if(x>=80)printf("B");
else if(x>=70)printf("C");
else if(x>=60)printf("D");
else printf("E");

如果输入88分,则程序结果为 B

程序段4:
int x;
scanf("%d",&x);
if(90<x<=100)printf("A");
if(80<=x<90)printf("B");
if(70<=x<80)printf("C");
if(60<=x<70)printf("D");
if(0<x<60)printf("E");

如果输入88分,则程序结果为 ABCDE

细节自行体会

15.请写出下面程序段的执行结果: 678

int i=1;
while(i%=4)
{
i+=5;
printf("%d",i);
}

16.程序填空题注意事项:

(1.语句后是否有分号“ ;”

(2.是否漏写,或多写条件(尤其是for循环中的条件)

(3.打印的语句与自己想的是否一致

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qing影

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

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

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

打赏作者

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

抵扣说明:

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

余额充值