当前位置: 首页 > article >正文

E36.C语言模拟试卷1第一大题选题解析与提示(未完)

点我去下载C语言模拟试卷1的文件

备注:ZIP文件中的参考答案仅仅提供最终结果

目录

第3题

第5题

第7题

第9题

第14题

第16题

第19题

第20题

第22题

第24题

第26题

第27题

第28题


第3题

3.若有说明语句:char  c = ‘\64’ ; 则变量C包含:      

A)1个字符 B)2个字符   

C)3个字符 D)说明不合法,C值不确定

解析:

\64不是解析为3个字符(\,6,4),在8.【C语言】转义字符文说过

其中有一个表格,下面节选了\ddd的内容

注意看细节:1到3位

所以有\d,\dd,\ddd这3种情况

八进制64=4*8^0+6*8^1=十进制52=十六进制34

VS验证:

#include <stdio.h>
int main()
{
	char  c = '\64';
	return 0;
}

x86+debug,调试模式运行至return 0;

内存窗口输入&c

c在内存中存储的值为34

所以选A

第5题

5.语言中,运算对象必须是整型数的运算符是      

A)% B)\ C)% 和 \ D)**

解析:

%只能用于整数,/可以用于小数,如9/2.0==4.5

所以选A

第7题

7.以下选项中,能用作用户标识符的是___

A)void   B)8_8   C)_0_   D)unsigned

解析:

有关标识符的规则

1.标识符的时候是不能和关键字重复(A,D错)

2.标识符可包含A~Z,a~z,0~9,下划线,但第一个字符必须为字母或下划线(B错)

所以选C

第9题

9.表达式:(int)((double)9/2)-(9)%2的值是___

A)0    B)3    C)4     D)5

解析:

复习有关优先级的知识点 15.25【C语言】操作符的属性 点我跳转

本题要用到: 优先级: /和% 大于 -

因此先进行(int)((double)9/2)和(9)%2的运算

9/2==4,先强制类型转换为double,再强制类型转换为int,结果为4   (9)%2==1

4-1=3,所以选B

第14题

14.以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是

A)if((a>b)&&(b>c)) k=1;else k=0;

B)if((a>b)||(b>c) k=1;else k=0;

C)if(a<=b) k=0;else if(b<=c) k=1;

D)if(a>b) k=1;else if(b>c) k=1; else k=0;

解析:

回顾三目操作符,15.【C语言】初识操作符 下 点我跳转

本题属于三目操作符的嵌套类型

可以将题目的语句转换为if语句

可写为

if (a > b)
{
	执行(b > c ? 1 : 0) 
}
else
{
	k = 0;
}

 

exp2的if语句

if (b > c)
{
	k = 1;
}
else
{
	k = 0;
}

合并为


if (a > b)
{
	if (b > c)
	{
		k = 1;
	}
	else
	{
		k = 0;
	}
}
else
{
	k = 0;
}

显然选A

第16题

16.有以下程序

#include <stdio.h>
int main()
{
    int n = 2, k = 0;
    while (k++ && n++ > 2);
    printf("%d %d\n", k, n);
    return 0;
}

程序运行后的输出结果是___

   A)0 2    B)1 3    C)5 7     D)1 2

解析:

后置++的特性:先使用,后++

有关++和--的特性见15.【C语言】初识操作符 下

while(k++&&n++>2);这里有陷阱

由于是从左向右运算,0>2为假,k++正常执行,后方的n++不在执行

所以k==1,n==2

所以选D

第19题

19.有以下程序

#include <stdio.h>
void fun(int p)
{
    int d = 2;
    p = d++; printf("%d", p);
}

int main()
{
    int a = 1;
    fun(a);
    printf("%d\n", a);
    return 0;
}

程序运行后的输出结果是___

    A)32   B)12   C)21   D)22

提示:

这里注意fun函数的调用方式为传调用(要与传调用做区分),不会改变a的值

有关传调用和传调用见29.【C语言】函数系列中 自定义函数
所以选A

第20题

20.以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能,造成错误的原因是___

#define MIN -2147483647
int findmax(int x[], int n)
{
    int i, max;
    for (i = 0; i < n; i++)
    {
        max = MIN;
        if (max < x[i])
            max = x[i];
    }
    return max;
}

A)定义语句int i,max;中max未赋初值    

B)赋值语句max=MIN;中,不应给max赋MIN值

C)语句if(max<x[i]) max=x[i];中判断条件设置错    

D)赋值语句max=MIN;放错了位置

提示:

可以自行设定一个数组来分析,如x[4] = {1,2,5,3};

解析:当i == 2时,max的值为x[]的最大值,当i == 3时,max的值先为MIN,之后max值为3,错过了最大值

所以选B

第22题

22.程序段如下

int k = 0;
while (k++ <= 2);
printf("last=%d\n", k);

则执行结果是last=           

A)2              B)3           C)4            D)无结果

解析:

注意细节:while(k++<=2);的尾部有个分号,循环语句为空

不要误解k++<=2的执行策略!本题很容易误选B

1.0<2,执行循环,之后k++

2.1<2,执行循环,之后k++

3.2=2,执行循环,之后k++

4.3>2,跳出循环,但之后k仍然++

所以选C

第24题

24.若二维数组a有m列,则a[i][j]元素前的数组元素个数为:     

A)j*m+i  B)i*m+j   C)i*m+j-5  D)i*m+j+1

解析:

如果行和列都从1开始计数,画图可知

所以选B

第26题

26.设有两字符串“Beijing”、“China”分别存放在字符数组str1[20],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为:     

A)strcpy(str1,str2);

B)strcpy(str1, “China”);

C)strcat(str1,“China”)

D)strcat(“Beijing”,str2);

提示:

一般像字符函数和字符串函数的参数是这样设定的

function (dest,src)

如果之前学过汇编,就可以顺利理解这样写的原因:

如在查汇编指令集的时候,经常会出现这样的指令形式

mov dest,src
add dest,src
adc dest,src
or dest,src
xor dest,src

dest被称为目的操作数 ,src被称为源操作数

可以在这里类比strcat,strcpy函数-->称他们的参数为"源参数","目标参数"

复习strcat函数的用法点我跳转

复习strcpy函数的用法点我跳转

所以选C

第27题

27.以下程序的运行结果是:     

#include <stdio.h>
int main()
{
    int a = 2, i;
    for (i = 0; i < 3; i++)
        printf("%4d", f(a));
    return 0;
}

f(int a)
{
    int b = 0, c = 3;
    b++;
    c++;
    return(a + b + c);
}
 

A)7   10   13             B)7    7    7

C)7    9   11              D)7    8    9

注意:

这里的正确选项其实有问题,之前在31.【C语言】详解printf文中讲过

 %4d代表输出的最小宽度是4,且4>0,属于右对齐

VS运行后:

仔细看的话:

每个7前面都空了4格

第28题

28.在C语言程序中,若未在函数定义时说明函数类型,则函数默认的类型为:     

A)void    B)double   C)int   D)char

在VS中,如果自定义函数没有写返回类型,在生成解决方案的窗口会看到这样一句话

warning C4013: 某某函数未定义;假设外部返回 int


http://www.kler.cn/news/328831.html

相关文章:

  • 通过ts declare包装一个js库
  • 408知识点自检
  • 安全开发指南
  • 彻底连接pip工具
  • 前端框架对比和选择指南
  • 1panel申请https/ssl证书自动续期
  • WPF入门教学二十三 自定义控件开发
  • 若依从redis中获取用户列表
  • 408算法题leetcode--第21天
  • Java每日面试题(JVM)(day15)
  • sentinel微服务部署
  • vue3+PPTXjs 在线ppt预览
  • 基于单片机多功能称重系统设计
  • C++ | Leetcode C++题解之第451题根据字符出现频率排序
  • YOLO11改进|注意力机制篇|引入MLCA轻量级注意力机制
  • Azure Kinect 人体跟踪关节
  • RUP:用例驱动、以架构为中心的迭代增量开发模式
  • 松山湖全球首秀:传祺华为概念车发布
  • 【场景题】秒杀系统设计以及解决方案
  • 如何理解线性回归中的w和b
  • Tableau数据可视化入门
  • Windows暂停更新
  • 【PostgreSQL】入门篇——SELECT、INSERT、UPDATE 和 DELETE 语句,SQL 中最常用的四种操作用法
  • uni-app - - - - -vue3使用i18n配置国际化语言
  • GB28181信令交互流程及Android端设备对接探讨
  • 利用低代码快速搭建电商小程序之商品列表页
  • IPv4与TCP数据包结构解析
  • 使用iTextPDF库设置文字为英文样式
  • CentOS 替换 yum源 经验分享
  • Scala 字符串