C语言笔试训练【第五天】_我们知道c语言break 语句能跳出离它最近的(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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中的大写字母转换成小写**
> 
> 
> 


  在C语言中,字符可以直接使用 ASCII 码值来与数字进行运算,if 里面的条件是判断字符是否在A~E之间,如果符合的话,就让这个字符加'e'-'E'的差值,而这个差值就是小写字母与大写字母的差值,因此这段代码的功能是将大写字母转化为小写字母。所以这道题选 D


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



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



> 
> **A: 其中循环控制表达式与0等价      B: 其中循环控制表达式与'0'等价  
>  C: 其中循环控制表达式是不合法的 D: 以上说法都不对**
> 
> 
> 


  这道题看似考察的是 while 的判断条件,实际上也考察了printf 函数的返回值(printf返回打印在屏幕上的字符的个数),因此这个printf函数返回1,1为真,进入循环。所以A B C说法都是不对的。这道题选 **D**


## 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**


  这道题依然考察的是关于ASCII 码的知识,a的ASCII码是97,为奇数,不符合(-'a'+'A'变大写)的条件,一次类推,B符合,C不符合......所以这道题选 **D**


## 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);**
> 
> 
> 


  在条件判断的时候A和C一样,B和D一样,其中A和C都是在a!=0的条件下输出 x ,B则是在a==0的条件下输出 y,在a!=0的时候输出x,与A、C相同,而D确是在a==0的条件下输出x,显然与A B C不同,所以这道题选 **D**


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


  此题旨在整理跳出多层循环的方法,每个选项都是正确的,代码为伪代码,condition代表逻辑表达式,所以这道题选 **A B C D**


## 6、数字在升序数组中出现的次数


[**数字在升序数组中出现的次数**](https://bbs.csdn.net/topics/618668825)


  给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数。


  要求:空间复杂度:O(1),时间复杂度:O(logn)


题目来自 牛客网



int Find_Edges(int*nums,int len,double k)
{

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值