c语言每日一练(4)

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

五道选择题

1、有以下代码,程序的输出结果是( )

#include <stdio.h>
int main()
{
	int a = 0, b = 0;
	for (a = 1, b = 1; a <= 100; a++)
	{
		if (b >= 20) break;//1
		if (b % 3 == 1)//2
		{
			b = b + 3;
			continue;
		}
		b = b-5;//3
	}
	printf("%d\n", a);
	return 0;
}

A.10       B.9       C.8       D.7

解析: 先看代码构成,代码的主要部分是一个循环,最终目标是打印出a的大小。

直接看循环,for循环先将a和b都初始化成了1,循环进行的条件是a<=100,循环每次结束后,a+1

接着看循环的内部,1代码代表的意思是,当b>=20时会执行break语句,跳出循环。

2代码表达的意思是当b%3==1,也就是当b=3*n+1的时候会执行b+3,然后执行continue语句。

continue语句的作用是直接中止这次循环,然后执行a++,再判断循环是否能够继续,如果能则继续循环。

3代码表达的意思是b-5

观察完代码的构成,我们可以看出,b=1。而从语句2进入的条件可以看出,当b为3*n+1的话就一定会执行语句2,当b的值大于20时就会直接跳出循环,打印目标。                               而每执行一次语句2,b都会+3,所以,b会一直走语句2 当b>20时就会跳出循环,而a的值也就是b加3的次数再a原来的值即可(b只要加了3就会执行continue间接使a+1)                      可以看出,当b=3*7+1的时候会跳出循环,这时b已经加过7次3了,7+1就是8,所以最后会打印出8,所以答案选C 

c语言每日一练(4),每日一练,c语言,算法,c++ 

 2、下面代码的结果使()

#include <stdio.h>
int main()
{
    int arr[] = {1,2,(3,4),5};
    printf("%d\n", sizeof(arr));
    return 0;
}

A.4      B.16     C.20     D.5

解析:这是一道基础题,就考验你的基础扎不扎实。arr这个数组看似有5个元素,实际上只有4个元素,为什么?因为arr数组中有一个逗号表达式,而逗号表达式的运算规则是从左往右依次计算,整个表达式的值为最后一个表达式的值。4个整型元素所占的字节数为4*4=16,因此答案为B    

c语言每日一练(4),每日一练,c语言,算法,c++ 

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

解析:A选项,在循环体里使用break可以跳出循环,在switch语句中使用break可以跳出switch,除了这两种用法,break确实不能被用在其他地方。故A对。

B选项,break只会跳出一层循环,同样的,在switch语句中它也只会跳出一层switch,站在break的角度来看,switch和循环语句是等价的,谁来我都只跳过一层,B的描述则是跳出了两层,故B错。

C选项跟continue语句的作用完全不符,continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环,故C错。D选项大错特错,continue语句设计出来就是给循环用的。综上所述,答案选A

4、设函数 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)

解析:这类题目,看着好做,实际上也很好做(滑稽)。目标就是要和被调用的函数的参数类型保持一致便可以实现函数的成功调用。

先看函数,函数的返回类型是void型,参数一个为char(字符)型,一个为float[ ](浮点型数组) ,因此,第一个变量传字符型变量,第二个变量传一个浮点型数组或者传一个float*的指针。先观察第一个变量,A传了一个字符串显然错误,A排除。BC均传了一个字符,正确。

而D传了一个数字,好像错了,但它是对的,为什么?因为字符型的变量的本质其实是它们的ASCII码值,因此字符型其实是可以被看作是整型家族的成员的,传递32给fun函数,相当于传递了ASCII码值为32的字符,故D对。

再看第二个变量,A已经被排除,不用看。B,B传了一个字符,不符合我们分析的结果,错,C传了一个浮点数,错。D传了数组名,而数组名在通常情况下被看作数组首元素的地址,也就是传递了一个float*的指针。符号条件。综上所述,答案选D

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

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

编程题1:

寻找奇数_牛客题霸_牛客网 

c语言每日一练(4),每日一练,c语言,算法,c++

 这道题要是对^(异或)操作符了解的小伙伴是非常简单的。^操作符的作用可以将两个数相同的位变为0,不同的位变为1,那么两个相同的数^就会出现0,而^又是满足交换律的   所以我们不需要在意^的顺序,偶数次出现的数一旦被^就会像对对碰一样变为0。奇数次出现一旦被^就只会剩下它本身,因此,遍历一遍数组,然后在遍历的过程中^最后出来的结果就是奇数次出现的数。

#include <stdio.h>
int main() {
int a=0;
scanf("%d",&a);
int i=0;int order=0;
//order=0是因为,异或操作符^0才会保持不变,^1可能会使最后一位丢失
for(i=0;i<a;i++)
{
    int b=0;
    scanf("%d",&b);
    order^=b;//边输入,边异或
}
printf("%d",order);
}

编程题2:

截取字符串_牛客题霸_牛客网

c语言每日一练(4),每日一练,c语言,算法,c++

 目标是输出截取后的字符串,创建两个数组,一个数组用来存放输入的字符串,通过遍历的方式使另一个数组存放截取后的字符串,最后打印出对应数组即可。

#include <stdio.h>
#include<string.h>
int main() {
 char arr1[1000]={0};
 char arr2[1000]={0};
 gets(arr1);
//使用gets,避免字符串中有空格
//空格会使scanf的输入中止
 int len=strlen(arr1);
//计算输入的字符串长度
 int k=0;
 scanf("%d",&k);
  if(k>=len)
//当k>=len时就不用截取了,直接打印就可以
    {
        printf("%s",arr1);
        return 0;
    }
 for(int i=0;i<k;i++)
 {
   arr2[i]=arr1[i];
 //将前k个字符截取到对应数组中
 }
 printf("%s",arr2);
}

好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O文章来源地址https://www.toymoban.com/news/detail-636219.html

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

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

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

相关文章

  • c语言每日一练(11)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。 1.执行完下面一段程序后输出的值是() A、1     B、2     C、

    2024年02月11日
    浏览(24)
  • c语言每日一练(8)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。 1、请阅读以下程序,其运行结果是( )   A、YES       B、NO 

    2024年02月12日
    浏览(23)
  • c语言每日一练(6)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。 1、如下程序的功能是( ) A、 测字符数组ch的长度 B、 将数字字

    2024年02月13日
    浏览(26)
  • C语言每日一练(二)

    解法一:在原链表中删除Node.next=next的节点 注意:当头节点的val==val时,要改变头节点的位置 解法二:创建新的指向头尾的链表 注意:这里如果写head的话,当一个节点是要删除的节点,头节点还是那个删除的节点。 解法一:创建新链表,对新链表进行头插 解法二:定义三个

    2024年02月08日
    浏览(24)
  • C语言每日一练(1)

    题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析: 可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 程序源代码: 以上实例输出结果为: 题目: 企业发放的奖金根据利润提成。利

    2024年02月12日
    浏览(38)
  • c语言每日一练(1)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。 1、执行下面程序,正确的输出是( ) A.5,7     B.7,5    C.3,8   

    2024年02月14日
    浏览(27)
  • c语言每日一练(7)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。 1、下列定义数组的语句中正确的是【多选】( ) A、 B、char str

    2024年02月13日
    浏览(32)
  • c语言每日一练(10)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。 1、如果 x=2014 ,下面函数的返回值是( )  A、20   B、21    C、

    2024年02月11日
    浏览(26)
  • c语言每日一练(9)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。 1、以下 scanf 函数调用选项中, 错误的是( ) A、scanf(\\\"%s\\\",a[0].n

    2024年02月12日
    浏览(26)
  • c语言每日一练(13)

    前言: 每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,上学期间将看学业情况更新。 1、程序运行的结果为() A、1    B、2    C、2.9    D、3 解析:简单题,考察的是你对于整型变量

    2024年02月10日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包