C语言练习2(巩固提升)

这篇具有很好参考价值的文章主要介绍了C语言练习2(巩固提升)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言
“志之所趋,无远弗届,穷山距海,不能限也。”对想做爱做的事要敢试敢为,努力从无到有、从小到大,把理想变为现实。要敢于做先锋,而不做过客、当看客,让创新成为青春远航的动力,让创业成为青春搏击的能量,让青春年华在为国家、为人民的奉献中焕发出绚丽光彩。

选择题

1、如下程序的功能是( )

#include <stdio.h>
int main()
{
	char ch[80] = "123abcdEFG*&";
	int j;
	puts(ch);
	for (j = 0; ch[j] != '\0'; j++)
		if (ch[j] >= 'A' && ch[j] <= 'Z')
			ch[j] = ch[j] + 'e' - 'E';
	puts(ch);
	return 0;
}

A: 测字符数组ch的长度
B: 将数字字符串ch转换成
C: 将字符数组ch中的小写
D: 将字符数组ch中的大写字母转换成小写
💯答案解析:

😸正确答案:D
一个字母对应的大写和小写之间的ASCII码值相差32,而且小写的大于大写的。所以题中’e’和’E’之间的ASCII码值相差
32(ch[j]+‘e’-'E’相当于ch[j]+32)。一个字母从大写转化为小写就是在它自身上+32,小写转大写则是-32
C语言练习2(巩固提升),C语言刷题专栏,c语言,算法,开发语言

2、对于代码段,下面描述正确的是( )

t = 0;
while (printf("*"))
{
	t++;
	if (t < 3)
		break;
}

A: 其中循环控制表达式与0等价 B: 其中循环控制表达式与’0’等价
C: 其中循环控制表达式是不合法的 D: 以上说法都不对
💯答案解析:

😸正确答案:B
因print(“*”)函数调用的返回值是字符串中字符的个数,即为1。所以while后面的条件恒为真,所以循环控制表达式与'0’是等价的(字符’0’不是0)。正确答案是B

3、以下程序运行时,若输入 1abcedf2df<回车> 输出结果是( )

#include <stdio.h>
int main()
{
	char ch;
	while ((ch = getchar()) != '\n')
	{
		if (ch % 2 != 0 && (ch >= 'a' && ch <= 'z'))
			ch = ch - 'a' + 'A';
		putchar(ch);
	}
	printf("\n");
	return 0;
}

A: 1abcedf2df B: 1ABCEDF2DF C: 1AbCEdf2df D: 1aBceDF2DF
💯答案解析:

😸正确答案:C
程序首先考虑ch的ASCII码值是不是奇数,再看是不是小写字母,同时满足时被改为大写字母
C语言练习2(巩固提升),C语言刷题专栏,c语言,算法,开发语言

4、下列条件语句中,功能与其他语句不同的是( )
A: if(a) printf(“%d\n”,x); else printf(“%d\n”,y);
B: if(a == 0) printf(“%d\n”,y); else printf(“%d\n”,x);
C: if (a != 0) printf(“%d\n”,x); else printf(“%d\n”,y);
D: if(a == 0) printf(“%d\n”,x); else printf(“%d\n”,y);
💯答案解析:

😸
正确答案:D
D选项与众不同,其他都是a==0时输出y,a!=0时输出x

5、我们知道C语言的 break 语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环,下列跳出多层
循环的做法正确的是【多选】( )
A: 将程序写成函数用return结束函数,便可跳出循环
B: 修改外层循环条件例如

for (int i = 0; i < MAX1; i++)
{
	for (int j = 0; j < MAX2; j++)
	{
		if (condition)
		{
			i = MAX1;
			break;
		}
	}
}

C: 在外层循环设置判断条件例如

for( ; symbol != 1 && condition2 ; )
{
for( ; symbol != 1 && condition3 ; )
{
if( condition1 )
symbol = 1 ;
}
}

D: 在外层循环后面加入break例如

for( ; condition2 ; )
{
for( ; condition3 ; )
{
if( condition1 )
symbol = 1 ;
} 
if(
symbol == 1 )
break ;
}

💯答案解析:

😸正确答案:ABCD
此题旨在整理跳出多层循环的方法,每个选项都是正确的,代码为伪代码,condition代表逻辑表达式

6、以下叙述中正确的是( )
A: 只能在循环体内和switch语句体内使用break语句
B: 当break出现在循环体中的switch语句体内时,其作用是跳出该switch语句体,并中止循环体的执行
C: continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环
D: 在while语句和do-while语句中无法使用continue语句
💯答案解析:

😸正确答案:A
break语句通常用在循环语句和switch语句中。当break用于switch语句中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。B、C和D三个选项中均有错误。因此A选项正确

7、下列 for 循环的次数为( )

for(int i = 0 ; i || i++ < 5;);

A: 0 B: 5 C: 1 D: 无限
💯答案解析:

😸正确答案:D
逻辑或运算如果前表达式为真,后表达式不计算,第一次循环时i为0,执行i++,第二次循环时i为1,是个真值,不再执行i++,也就死循环了

8、以下描述中正确的是( )
A: 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B: do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C: 在do-while循环体中,不一定要有能使while后面表达式的值变为零(“假”)的操作
D: do-while循环中,根据情况可以省略while
💯答案解析:

😸正确答案:C
do-while循环中的循环体通常都是复合语句代码块,A错误,while(表达式)后面要写分号,B错误,while不能省,D错误

9、设函数 fun 和实参数组的说明是如下形式,则对函数的调用语句中,正确的是( )

void fun(char ch,float x[]);
float a[10];

A: fun(“asd” , a[]); B: fun(‘x’ , A); C: fun(‘68’ , 2.8); D: fun(32 , a);
💯答案解析:

😸正确答案:D
A选项数组传参只需要写数组名就行,a[ ]时错误的,B选项第二个参数写成了大写,错了。C选项第二个参数是浮点数,但是fun函数的第二参数是数组不匹配,fun函数参数x需要传一个数组或者float *指针,只有D选项的形式是正确的。

10、在c语言中,一个函数不写返回值类型,默认的返回类型是( )
A: int B: char C: void D: 都不是
💯答案解析:

😸正确答案:A
一个函数不写返回值类型,默认的返回类型是int,但不提倡这么做

11、以下对C语言函数的有关描述中,正确的有【多选】( )
A: 在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体
B: 函数的实参和形参可以是相同的名字
C: 在main()中定义的变量都可以在其它被调函数中直接使用
D: 在C程序中,函数调用不能出现在表达式语句中
💯答案解析:

😸正确答案:AB
主函数中定义的局部变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平行关系,C错误;当函数有返回值时,可以出现在表达式中,D错误

12、在C语言中,以下正确的说法是( )
A: 实参和与其对应的形参各占用独立的存储单元
B: 实参和与其对应的形参共占用一个存储单元
C: 只有当实参和与其对应的形参同名时才共占用存储单元
D: 形参是虚拟的,不占用存储单元
💯答案解析:

😸正确答案:A
在调用函数的时候,真实传递给函数的是实参,函数定义部分函数名后的参数是形参。形参和实参的名字是可以相同的,在函数调用的时候,形参是实参的一份临时拷贝,分别占用不同的内存空间,所以A正确,B错误,及时形参和实参的名字相同,也是占用不同的内存空间,所以B错误;函数如果不被调用时,函数的形参是形式上存在的,但是函数在被调用的时候,形参是要分配内存空间的,所以D错误。

13、在上下文及头文件均正常的情况下,下列代码的输出是( )(注: print 已经声明过)

int main()
{
	char str[] = "Geneius";
	print(str);
	return 0;
}
print(char* s)
{
	if (*s)
	{
		print(++s);
		printf("%c", *s);
	}
}

A: suiene B: neius C: run-time error D: suieneG
💯答案解析:

😸正确答案:A
代码实现了递归倒序打印字符串的功能,但是++s使得s的值发生了变化,回不到’G’的位置上,故而没有打印’G’
C语言练习2(巩固提升),C语言刷题专栏,c语言,算法,开发语言

14、对于函数 void f(int x); ,下面调用正确的是( )
A: int y=f(9); B: f(9); C: f(f(9)); D: x=f();
💯答案解析:

😸正确答案:B
函数f是没有返回值的,不能给int类型变量赋值,故A错误,同时需要一个整型参数,C中f(9)不能作为f的参数,也是错的,D选项没有传参,也不能接收返回值也是错误的。

15、给定 fun 函数如下,那么 fun(10) 的输出结果是( )

in
t fun(int x)
{
return (x==1) ? 1 : (x + fun(x-1));
}

A: 0 B: 10 C: 55 D: 3628800
💯答案解析:

😸正确答案:C
代码是一个递归函数,计算x+(x-1)+(x-2)+…+2+1即等差数列的和
C语言练习2(巩固提升),C语言刷题专栏,c语言,算法,开发语言

16、如下程序的运行结果是( )

char c[5]={'a', 'b', '\0', 'c', '\0'};
printf("%s", c);

A: ‘a’ ‘b’ B: ab\0c\0 C: ab c D: ab

💯答案解析:

😸正确答案:D
字符串的结束标志是’\0’,而’\0’的ASCII值是0,而c[2]被初始化为0,就相当于是’\0’,故字符串打印的内容只有"ab"

17、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )
A: a[2][0] B: a[2][3] C: a[0][3] D: a[1>2][1]
💯答案解析:

😸正确答案:D
本题主要考虑数组越界访问的情况,二维数组的行和列都是从0开始的,对于a数组来说,行下标最大是1,列下标最大是2,D选项中1>2表达式的值是0,是正确的,其他选项行和列都可能存在越界,A是行越界,B是行和列都越界,C是列越界。

18、在下面的字符数组定义中,哪一个有语法错误( )
A: char a[20]=“abcdefg”; B: char a[]=“x+y=5.”; C: char a[15]; D: char a[10]=‘5’;
💯答案解析:

😸正确答案:D
D中的'5’是一个字符常量,不能给字符型数组a初始化

19、下列定义数组的语句中正确的是【多选】( )
A:

#define size 10
char str1[size], str2[size+2]; 

B: char str[]; C: int num[‘10’]; D: int n=5; int a[n][n+2];
💯答案解析:

😸正确答案:AC
A选项:宏替换,没问题;B选项:非法定义,一维数组必须定义数组元素个数;C选项:字符’0’,转换成十进制为48,所以该选项最终为int num[48];D选项:错误,数组定义下角标不能为变量,注:C99标准中支持了使用变量,这里不做特殊考虑。

20、已知 i,j 都是整型变量,下列表达式中,与下标引用 X[i][j] 不等效的是【多选】( )
A: *(X[i]+j) B: *(X+i)[j] C: *(X+i+j) D: ((X+i)+j)
💯答案解析:

😸正确答案:BC
本题考查的是二维数组的元素访问,A选项是 正确的,X[i]就是第i行的数组名,数组名表示首元素的地址,X[i]表示第i行的第一个元素的地址,+j后就是第i行下标为j的元素的地址,整体解引用就是X[i][j],A正确。B选项因为[]的优先级高于*,所以代码相当于**((x+i)+j),X+i+j后就越界了,并不代表X[i][j],所以错误。C选项也明显不对,X是二维数组的数组名,数组名相当于第一行的地址,X+i+j,跳过了i+j行,就越界了,C错误。D选项是标准的指针形式访问二位数组的一个元素。

💘后期会推出更多C语言练习题,希望大家与我共同进步,早日成为大佬!文章来源地址https://www.toymoban.com/news/detail-700574.html

到了这里,关于C语言练习2(巩固提升)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言练习5(巩固提升)

    1,下面代码的结果是:( ) A.3 B.4 C.随机值 D.5 💯答案解析: 😸正确答案:C strlen是用来获取字符串的有效长度的,结尾标记’\\0’不包含在内。 strlen获取的规则非常简单:从前往后依次检测,直到遇到’\\0’是就终止检测。 而上题中 arr是一个字符数组,不是一个有效的字符

    2024年02月11日
    浏览(31)
  • C语言-每日刷题练习

      小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用  *  表示正面,用  o  表示反面(是小写字母,不是零),比如可能情形是  **oo***oooo ,如果同时翻转左边的两个硬币,则变为  oooo***oooo 。现在小明的问题是:如果已知了初始状态和要达到的目

    2024年02月05日
    浏览(27)
  • 【C语言】数组和指针刷题练习

    指针和数组我们已经学习的差不多了,今天就为大家分享一些指针和数组的常见练习题,还包含许多经典面试题哦! 一、求数组长度和大小 普通一维数组 字符数组 字符串数组 指向字符串的字符指针 二维数组 总节: 数组名的意义: sizeof(数组名),这里的数组名表示整个数

    2024年02月07日
    浏览(30)
  • 数据结构算法leetcode刷题练习(1)

    给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标

    2023年04月24日
    浏览(40)
  • C语言:截断+整型提升+算数转换练习

     详情关于整型提升、算数转换与截断见文章: 《C语言:整型提升》  《C语言:算数转换》 一、代码一 int main() {     char a = -1;     signed char b = -1;     unsigned char c = -1;     printf(\\\"%d %d %d\\\", a, b, c);     return 0; }  求输出结果 解析如下代码: 二、代码二 int main() {     char a

    2024年02月10日
    浏览(31)
  • 【C语言】【典例详解】【刷题】猜名次&&猜凶手【循环练习】

    目录 猜名次问题 典例题目 题目分析: 代码实现: 运行结果: 猜凶手问题  典例题目 题目分析 代码实现: 运行结果: 猜名次: 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果: A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二;

    2024年02月07日
    浏览(26)
  • js刷题巩固之路

    1. 两数之和 给定一个整数数组  nums  和一个整数目标值  target ,请你在该数组中找出  和为目标值  target   的那  两个  整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案

    2024年02月07日
    浏览(31)
  • C语言数据在内存中存储---整型提升练习

    前言:学习了C语言中的整型提升,总是感觉听的时候很明白,但当自己做题的时候,又总是遗漏了哪一步。自己的感悟:整型提升步骤以及原理都一样,就是把步骤记清楚一步一步的来就行。因此通过下面的一道题来每日复习。 前景回顾: 整型提升:一个表达式中的操作数

    2024年02月10日
    浏览(47)
  • 鸿蒙开发:深入了解Arkts语言中的Want对象及其运用【鸿蒙专栏-23】

    Arkts语言中的 Want 是一种用于对象间信息传递的载体,主要用于应用组件之间的信息传递。本文将深入探讨 Want 的定义、用途、类型以及参数说明

    2024年02月05日
    浏览(38)
  • 【刷题专栏—突破思维】LeetCode 142. 环形链表 II

    前言 :本篇博客将讲解三个OJ题,前两个作为铺垫,最后完成环形链表的节点的寻找 题目链接:LeetCode—相交链表 题目描述: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包