【C语言期末】题目+笔记

文章目录

    • 题目
      • 1.下面哪个不是C语言的基本数据类型?( B )
      • 2.C语言的标识符应以字母或( A )开头。
      • 3.如果需要在C程序里调用标准函数库中的printf函数,则应该在程序的开头包含哪个头文件?( A )
      • 4.C语言源程序的扩展名是( B )。
      • 5.若变量已正确定义并赋值,表达式( A )不符合C语言语法。
      • 6.以下选项中不属于C语言的类型的是( D )。
      • 7.以下选项中合法的用户标识符是( B )。
      • 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是( A )。
      • 9.+=、*=运算符
    • 笔记(拍完视频再发)

题目

1.下面哪个不是C语言的基本数据类型?( B )

A.整型; B.逻辑型; C.浮点型; D.字符型;

解析:A:整型简单理解就是整数,int a=1,a就是一个值为1的整型变量B:逻辑型,在C语言里没有专门的逻辑型。布尔表达式的结果为0相当于是false,非0则真。C:float b=2.5; b就是一个值为2.5的浮点型变量,简单理解就是有小数。D.字符型,char ch='a'; 

2.C语言的标识符应以字母或( A )开头。

A.下划线;B.波浪线;C.字符*;D.字符#;

解析:标识符定义规则有三点1.不能数字开头2.不能是保留字。比如int、float这种3.可以是下划线和字母开头。做题的话还有一点不能加特殊符号,比如.号
扩展:1.自己实际写用的最多的还是驼峰起名法ABlogOfCMakesYouCanPassExam每个词的开头大写2.手撕源码遇到保留字,在前边加个my_比如my_LinkededList

3.如果需要在C程序里调用标准函数库中的printf函数,则应该在程序的开头包含哪个头文件?( A )

A.stdio.h; B.math.h; C.stdlib.h; D.不用包含任何头文件;

4.C语言源程序的扩展名是( B )。

A…cpp; B..c; C…obj; D…exe;

5.若变量已正确定义并赋值,表达式( A )不符合C语言语法。

A.3%2.0 B.a*b/c C.2/b D.a/b/c

解析:模运算:就是求余数。5除以3余2,所以5%3=2C语言里边,两个整型相除,不保留小数,5/3=1你真得觉得对浮点型进行模运算合理吗?
扩展:5/2.0=2.5;当一个整型和另一个浮点型运算的时候,会有整型提升,整型提升成浮点型。相当于5变成5.0了两个浮点型的相除。。。5/2.0反正能算出来是2.5

6.以下选项中不属于C语言的类型的是( D )。

A.signed short int B.unsigned long int C.unsigned int D.long short

解析:int表示的范围是有限的long:不够用了,可以用long,它的范围更大,再不够用,还有long long ,再不够用还可以用数组存,不用担心你的钱多到银行的系统存不了。short:感觉用int太浪费空间,可以考虑用short,节约空间unsigned:int不是4个字节吗?32个比特位,里边其实固定有一位是用来表示符号的。unsigned可以把符号位当成数来用。。。能表示的正数的范围会扩大,不能表示负数

7.以下选项中合法的用户标识符是( B )。

A.long B._2Test C.3Dmax D.A.dat

	解析:见2题

8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是( A )。

A.字符A B.字符a C.字符e D.非法的常量

	解析:详解见视频。这题把8进制的101转成10进制就行

101 = 1 ∗ 8 2 + 0 ∗ 8 1 + 1 ∗ 8 0 = 64 + 1 = 65 101=1*8^2+0*8^1+1*8^0=64+1=65 101=182+081+180=64+1=65

9.+=、*=运算符

int main(){int k=2,i=2,m;​     m=(k+=i*=k);printf("%d,%d\n",m,i);return 0;
}

执行后的输出结果是( C )。

A.8,6 B.8,3 C.6,4 D.7,4

原式展开
i*=ki=i*k
k+=ik=k+i
	要点:1.不熟练就先展开2.留意视频里讲的等效替代,看代码的动态变化——进阶必备。i*=k算完之后,就相当于是k+=几?要看成这样

10.以下选项中,与k=n++完全等价的表达式是(A )。

A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1

11.阅读下面的程序

#include<stdio.h>void main(){int i,j;i=010;j=9;printf("%d,%d",i-j,i+j);}

则程序的运行结果是( D )。

A.1,19 B.-1,19 C.1,17 D.-1,17

	解析:0开头表示8进制的数0x开头16进制0b开头二进制这题,你先把010转成8进制,不会?。。。1、2、3、4、5、6、7、108进制逢8进1,不8题乃种解法,一个一个数也能数出来

12.若有以下定义和语句:

  int a=010, b=0x10, c=10;printf("%d,%d,%d\n",a,b,c);

则输出结果是( B )。

A.10,10,10 B.8,16,10 C.8,10,10 D.8,8,10

13.执行下列程序段后的输出结果是( A )。

  int x=1,y=1,z=1;x+=y+=z;printf("%d\n",x<y?y:x);

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

	解析:?号左边是一个布尔表达式,真假决定去冒号左边的值还是右边还是第9题乃样,?:运算完之后,就相当于x<y?y:x 变成 x了,而x又等于3,所以就打印3喽

14.以下关于运算符优先顺序的描述中正确的是( C )。

A.关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符

B.逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符

C.赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符

D.算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符

	赋值运算符:形如=、+=逻辑运算符:&&(并且)、||(或者)关系运算符:大于号、小于号算术运算符:加减乘除

15.若int K=3;,且有下面的程序片段:

if(K<=0) printf("####");else printf("&&&&");

上面程序片段的输出结果是( B )。

A.#### B.&&&& C.####&&&& D.有语法错误,无输出结果

解析:二选一,选哪个看真假

16.设char CH;,其值为A,且有下面的表达式:

CH=(CH>='A' && CH<='Z')?(CH+32):CH
法1:一点一点看,CH为A,肯定和A相等,所以&&左边为真,CH当然也小于Z了,所以右边也为真
法2:看语义,如果CH是一个大写字母,布尔表达式的结果就为真

则表达式的值是( B )。

A.A B.a C.Z D.z

17.有如下程序

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

该程序的输出结果是( C )。

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

	解析:1.if后边如果只有一句可以不写大括号。2.else和结构上(不是距离上)紧挨着的if配对,当if条件为假的时候,就会执行else里的语句只能说:动(手)的都懂

18.若有以下定义:

float x;int a,b;

则正确的switch 语句是( C )。

A.switch(x){case 1.0:printf("*\n");  case 2.0:printf("**\n");}B.switch(x){case 1,2:printf("*\n");case 3:printf("**\n");}C.switch(a+b)  {case 1:printf("\n"); case 1+2:printf("**\n");}D.switch(a+b);{case 1:printf("*\n");case 2:printf("**\n");}
	解析:case的条件别写小数

19.以下程序的运行结果是( A )。

int main(){int n;for(n=1;n<=10;n++){if(n%3==0) continue;printf("%d",n);}return 0;
}

A.12457810 B.369 C.12 D.1234567890

	建议:看视频,有讲for循环的基础概念语义:打印1到10之间,不能整除3的数

20.若有以下说明:

char s1[ ]={"tree"},s2[]={"flower"}; 

则以下对数组元素或数组的输出语句中,正确的是( C )。

A.printf(“%s%s”,s1[5],s2[7]);

B.printf(“%c%c”,s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

	简单理解:想打印字符串,用%s或者puts函数。补充:字符串经常用string表示

21.如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是( B )。

A.s1=getchar(); s2=getchar();

B.scanf("%s%s",s1,s2);

C.scanf(“%c%c”,s1,s2);

D.gets(s1,s2);

	简单理解:想调键盘,接受一个字符串,用%s(gets我当时就用的少,都用的scanf和printf这俩,后来也不用C语言了,有必要了再研究吧)

22.在定义int a[5][4]; 之后,对a数组元素的引用正确的是( C )。

A.a[2][4] B.a[1,3] C.a[4][3] D.a[5][0]

	解析:访问数组元素,下标别越界哥,基操

23.在C语言中,设有数组定义:char array[ ]=“China”; 则数组array所占的空间为( C )。

A.4个字节 B.5个字节 C.6个字节 D.7个字节

	解析:字符串结尾是斜杠0,你不写有人帮你写。China看上去是5个,还有隐藏的斜杠0,一共6个

24.定义如下变量和数组:

int i;int x[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};

则下面语句的输出结果是( C )。

for(i=0;i<4;i++) printf("%3d",x[i][3-i]);

A.1, 5 ,9 ,13 B.1, 6, 11, 16 C.4 ,7 ,10, 13 D.4,8 ,12 ,16

25.以下程序的输出结果是( A )。

#include<stdio.h>void main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++) printf("%d,",x\[i][i]);printf("\n"); 
}

A.1,5,9, B.1,4,7, C.3,5,7, D.3,6,9,

	可以看视频。也可以参考前边的题。

26.下面程序段的运行结果是( A )。

char *s="abcde";s+=2;printf("%s",s);
	建议看视频,有讲指针的基础知识

A.cde B.字符’c’ C.字符’c’的地址 D.无确定的输出结果

27.若有以下程序:

int main(){int m[][3]={1,4,7,2,5,8,3,6,9};int i,j,k=2;for (i=0;i<3;i++){printf("%d",m[k][i]); }return 0;
} 

程序运行后输出结果是( C )。

A.4 5 6 B.2 5 8 C.3 6 9 D.7 8 9

28.定义为void类型的函数,其含义是( A )。

A.调用函数后,被调用的函数没有返回值

B.调用函数后,被调用的函数不返回

C.调用函数后,被调用的函数的返回值为任意的类型

D.以上3种说法都是错误的

29.对于C程序的函数,( A )的叙述是正确的。

A.函数定义不能嵌套,但函数调用可以嵌套

B.函数定义可以嵌套,但函数调用不能嵌套

C.函数定义与调用均不能嵌套

D.函数定义与调用均可以嵌套

30.以下程序的运行结果是( C )。

void f(int a,int b){int t;t=a;a=b;b=t;
}int main(){int x=1,y=3,z=2;if(x>y) f(x,y);else if(y>z)f(y,z);elsef(x,z);printf(%d,%d,%d\n”,x,y,z);return 0;
}

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

31.若已定义“int a[9],*p=a;”并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是( A )。

A.a++ B.a+1 C.p+1 D.++p

32.有如下程序段:

int *p,a=10,b=1;p=&a; a=*p+b;

执行该程序段后,a的值为( B )。

A.12 B.11 C.10 D.编译出错

33.设有如下定义:

struct Date{ int year; int month;int day;};struct Teacher{ char name[20];char sex;struct Date birthday;}person;

对结构体变量person的出生年份进行赋值时,下面的赋值语句正确的是( C )。

A.year=1975; B.birthday.year=1975; C.person.birthday.year=1975; D.person.year=1975;

34.若有下面的定义:

struct Test{int s1;float s2;char s3;union uu{char u1[10];int u2[2];}ua;
}stu;

则sizeof(struct Test)的值是( A )。

A.19 B.17 C.14 D.27

35.以下各选项要说明一种新的类型名,其中正确的是( A )。

A.typedef int i1; B.typedef int=i2; C.typedef i1 int i3; D.typedef i4;

36.假设有如下定义:

struct {int a;float b;}data,*p;

若有p=&data,则对data中的a域的正确引用是( )。

A.(*p).data.a B.p->data.a C.(*p).a D.p.data.a

37.假设有如下定义:

struct City{char *name;long total;}city[]={"Guangzhou",800,"Meizhou",600,"Shanghai",500,"Hangzhou",400};

能正确输出字符串Meizhou的语句是( D )。

A. printf(“%c”,city[1].name)

B. B.printf(“%s”,city[1].name[1]);

C. C.printf(“%s”,city.name[1]);

D. D.printf("%s",city[1].name);

38.设有以下语句:

char x=3,y=6,z; z=x^y<<2;

则z的二进制值是( A )。

A.00011011 B.00010100 C.00011100 D.00011000

39.设有定义语句“char c1=49,c2=49;”,则以下表达式中值为0的是( B )。

A.c1&&c2 B.c1^c2 C.c1&c2 D.c1|c2

40.在位运算中,操作数每左移一位,其结果相当于( A )。

A.操作数乘以2 B.操作数除以2 C.操作数除以4 D.操作数乘以4

41.以下程序的输出结果是( D  )。#include<string.h>void main( ){char *p1, *p2, str[50]="ABCDEFG";p1="abcd"; p2="efgh";strcpy(str+1, p2+1); strcpy(str+3, p1+3);printf("%s", str);}

A.AfghdEFG  B.Abfhd   C.Afghd    D.Afgd

解析:执行strcpy(str+1, p2+1);后,str所对应的字符串变为“Afgh”,再执行strcpy(str+3, p1+3);后,str所对应的字符串变为“Afgd”,所以正确答案是D。

42.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是( B )。

void main( ){int a[10]={6, 7, 2, 9, 1, 10, 5, 8, 4, 3}, *p=a, i;for(i=0; i<10; i++, p++)if(________) \*a=\*p;printf("%d", *a);}

A.p>a     B.*p>a[0]     C.*p>*a[0]     D.*p[0]> *a[0]

43.下列程序执行后的输出结果是( B )。

void main( ){int a\[3][3], *p, i;p=&a\[0][0];for(i=0; i<9; i++) p[i]=i+1;printf("%d\n", a\[1][2]);}

A.3   B.6   C.9   D.随机数

44.以下程序的输出结果是( C )。

#include <stdio.h>void fun(int *s){static int j=0;dos[j]+=s[j+1];while (++j<2);}void main( ){int k, a[10]={1, 2, 3, 4, 5};for(k=1; k<3; k++) fun (a);for(k=0; k<5; k++) printf ("%d", a[k]);}

A.34756     B.23445     C.35745     D.12345

45.以下程序的运行结果是( B )。

#define MIN (x, y) (x) < (y) ? (x) : (y)void main ( ){int i = 10, j = 15, k;k = 10 * MIN (i, j);printf("%d\n", k); }

A.10 B.15 C.100 D.150

解析:语句k = 10 * MIN (i, j);在预编译时将进行宏替换为:k = 10 * (i) < (j) ? (i) : (j);因i = 10,j = 15,所以语句等价于k = 10 * 10 < 15 ? 10 : 15;,10*10比15大,因此k的值将是15。故正确答案是B。

46.在宏定义:#define PI 3.141592中,用宏名PI代替一个( D )。

A.常量B.单精度数C.双精度数D.字符串

解析:在宏定义中,标示符(或宏名)PI,它被定义代表后面的单词串。所以正确答案是D。

47.设有以下说明语句,则下面的叙述不正确的是( C )。

struct stu{int a;float b;} stutype;

A.struct是结构体类型的关键字

B.struct stu是用户定义的结构体类型

C.stutype 是用户定义的结构体类型名

D.a和b都是结构体成员名

解析:stutype是类型为struct stu的结构体变量,不是结构体类型名。故选择答案是C。

笔记(拍完视频再发)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】顺序表的定义和运算

目录 1.初始化 2.插入 3.删除 4.查找 5.修改 6.长度 7.遍历 8.完整代码 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &…

web前端开发html/css练习

目标图&#xff1a; 素材&#xff1a; 代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"…

使用RSA工具进行对信息加解密

我们在开发中需要对用户敏感数据进行加解密&#xff0c;比如密码 这边科普一下RSA算法 RSA是非对称加密算法&#xff0c;与对称加密算法不同;在对称加密中&#xff0c;相同的密钥用于加密和解密数据,因此密钥的安全性至关重要;而在RSA非对称加密中&#xff0c;有两个密钥&…

【USRP】5G / 6G OAI 系统 5g / 6G OAI system

面向5G/6G科研应用 USRP专门用于5G/6G产品的原型开发与验证。该系统可以在实验室搭建一个真实的5G 网络&#xff0c;基于开源的代码&#xff0c;专为科研用户设计。 软件无线电架构&#xff0c;构建真实5G移动通信系统 X410 采用了目前流行的异构式系统&#xff0c;融合了FP…

SQLite基本使用

目录 1. 概述2. 引入SQLite3. 连接数据库创建游标4. 创建数据库文件5. 新增单条数据6. 批量新增数据7. 查询单条数据8.查询全部数据9. 查询指定条数的数据10. 修改数据11. 删除数据12. 事务回滚13. 关闭数据库关闭游标1. 概述 SQLite是一个进程内的库,实现了自给自足的、无服务…

【嵌入式开发 Linux 常用命令系列 4.2 -- .repo 各个目录介绍】

文章目录 概述.repo 目录结构manifests/default.xmlManifest 文件的作用default.xml 文件内容示例linkfile 介绍 .repo/projects 子目录配置和管理configHEADhooksinfo/excludeobjectsrr-cache 工作区中的对应目录 概述 repo 是一个由 Google 开发的版本控制工具&#xff0c;它…

使用 OMSA 和 OME 工具管理多个服务器

文章目录 Dell Remote Access Controller (iDRAC)OpenManage Server Administrator&#xff08;OMSA&#xff09;OpenManage EnterpriseSupportAssist Enterprise推荐阅读 在DELL服务器的管理工具中&#xff0c;有多个管理工具&#xff0c;今天我们将分享这几个工具的关联性以及…

2023-12-08 工作心得

1 别名不能作为 同一个sql里的where里条件约束 因为别名是在查询结果生成后才得到的&#xff0c;而 WHERE 子句是在查询结果生成前进行的筛选操作&#xff0c;所以别名不能直接用于 WHERE 子句中的条件筛选。 2 jpa sql里如果是删除或修改&#xff0c;加注解 modifying transa…

STM32的几个深入功能

STM32的几个深入功能 目录 1、时钟源2、锁相环3、备份SRAM4、low power mode5、DMA Flash RAM6、复位类型7、CMSIS8、STM32F4学习方法9、中断10、8080 并行接口11、FSMC12、ADC13、IIC14、SPI15、48516、CAN17、MPU6050六轴传感器18、NRF24L01 2.4G无线模块19、FLASH20、外部SR…

【Git系列】branch和tag

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

将单体应用程序迁移到微服务

多年来&#xff0c;我处理过多个单体应用&#xff0c;并将其中一些迁移到了微服务架构。我打算写下我所学到的东西以及我从经验中用到的策略&#xff0c;以实现成功的迁移。在这篇文章中&#xff0c;我将以AWS为例&#xff0c;但基本原则保持不变&#xff0c;可用于任何类型的基…

云原生系列1

1、虚拟机集群环境准备 VirtualBox类似vmware的虚拟化软件&#xff0c;去官网https://www.virtualbox.org/下载最新版本免费的&#xff0c;VirtualBox中鼠标右ctrl加home跳出鼠标到wins中。 VirtualBox安装步骤 https://blog.csdn.net/rfc2544/article/details/131338906 cent…

微信小程序:button微信开放能力打开客服会话分享到聊天框

文档 https://developers.weixin.qq.com/miniprogram/dev/component/button.html 打开客服会话 按钮关键属性 open-type"contact"功能按钮 <button class"mo-open-type"open-type"contact"> </button>分享 <button class&q…

Hive HWI 配置

前言 1、下载安装好hive后&#xff0c;发现hive有hwi界面功能&#xff0c;研究下是否可以运行&#xff0c;于是使用hive –service hwi命令启动hwi界面报错。 启动hwi功能 2、访问192.168.126.110:9999/hwi&#xff0c;发现访问错误 一、HWI介绍 HWI&#xff08;Hive Web Int…

【前端】CSS基础(学习笔记)

一、简介 1、HTML局限性 HTML只关注内容的语义&#xff0c;但是丑&#xff01; 2、CSS概要 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称&#xff0c;有时我们也会称之为 CSS 样式表或级联样式表。 CSS 是也是一种标记语言 CSS 主要用于设置 HTML 页面中的文本内…

blender 粒子系统 roughness 属性

粒子系统中的Roughness是一种用来控制粒子的随机性和不规则性的属性&#xff0c;它可以影响粒子的发射方向、速度、大小、旋转等。Roughness有以下几个子属性&#xff1a; - **Uniform**&#xff1a;这个属性用来控制粒子的发射方向的随机性&#xff0c;即粒子在法线方向上的偏…

托盘四向穿梭车自动化密集库供应|单机智能向系统智能跨越的HEGERLS托盘四向车系统

随着物流产业的迅猛发展&#xff0c;托盘四向穿梭式自动化密集仓储系统可认为是在穿梭车货架系统基础上提出的一种新仓储概念。托盘四向穿梭式立体库因其在流通仓储体系中所具有的高效密集存储功能优势、运作成本优势与系统化智能化管理优势&#xff0c;已发展为仓储物流的主流…

喜讯:加速度商城系统全系列产品品牌全新升级为Shopfa

2月1日讯&#xff1a;经过1年多的品牌文化塑造&#xff0c;深圳市加速度软件开发有限公司经过研究决定&#xff0c;将旗下的多商户商城系列、小程序商城系列、B2B商城系列、供应商集采系列、电子元器件商城系列、跨境独立站商城系列、MRO工业品商城系列、外卖商城系列、智慧零售…

重写 AppiumService 类,添加默认启动参数,并实时显示启动日志

一、前置说明 在Appium的1.6.0版本中引入了AppiumService类&#xff0c;可以很方便的通过该类来管理Appium服务器的启动和停止。经过测试&#xff0c;使用该类的实例执行关闭server时&#xff0c;并没有释放端口号&#xff0c;会导致第二次启动时失败。另外&#xff0c;使用该…

6.2 U-boot 顶层 Makefile

一、U-boot工程目录分析 如果要分析uboot源码&#xff0c;首先要将uboot源码进行编译&#xff0c;编译需要在Ubuntu进行&#xff0c;把uboot文件放在一个目录下。 编译完成后的文件是这样&#xff1a; 我们需要看的文件夹如下。 1. arch 文件夹 从上图可以看出有很多架构&…