c语言每日一练(8)

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

前言:
每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。

 五道选择题:

1、请阅读以下程序,其运行结果是( )
 

#include<stdio.h>
int main()
{
char c='A';
if('0'<=c<='9') printf("YES");//1
else printf("NO");
return 0;
} 

A、YES       B、NO       C、YESNO      D、语句错误

解析:易错题,很多人看到代码1的时候就会下意识的认为,它的判定条件是变量c大于等于字符0且小于等于字符9才打印YES,实际上要实现这样的功能代码得是'0'<=c&&c<='9'

代码1的执行是先进行'0'<=c这个运算,再把运算所得到的值与'9'进行比较,c存放的是字符变量'A',ASCII码值为65,'0'的ASCII码值为48。所以'0'<=c得到的值是1,再与'9'进行比较,显然1<='9',最终表达式为真,执行YES的打印。故选A

c语言每日一练(8),每日一练,c语言,算法,开发语言

2 、下列程序的输出结果是什么( )

#include<stdio.h>
int main()
{
int n = 1001;
int ans = 0;
for(int i = 1; i <= n; ++i)
{
ans ^= i % 3;//1
}
printf("%d",ans);
return 0;
}

A、-2         B、0        C 、1        D、2

解析:^(异或)运算符的计算规则是将两个数相同的位变为0,不同的位变为1,那么两个相同的数^等于0,^运算符还满足交换律,因此在进行^的时候可以任意地交换数字之间的位置。

观察代码发现,目标是打印出ans的值,ans在最开始的时侯被赋值为0,然后进入for循环,走向代码1,不停地^i%3的值。i%3可以看出,会在0,1,2三个数中循环,而循环的开始i是为1,所以循环是1,2,0,那么ans就在不停地^1,2,0。观察可知循环的次数为1001,1001/3=333余2。而第332次1,2,0的时候是偶数,意味着第332次时,1,2,0都是一对一对的,那么全部都会被^为0,故最后的结果为(0^1^2)^1^2,等于0,所以选B

c语言每日一练(8),每日一练,c语言,算法,开发语言

3、下面有关空指针和未初始化指针,说法错误的是( )
A、对0x0这个地址取值是非法的
B、空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方
C、空指针与任何对象或函数的指针值都不相等                                                                                D、malloc在其内存分配失败时返回的是一个未初始化的指针

解析:不能对空指针进行解引用操作,A正确。空指针是没有指先任何空间的指针,未初始化的指针是野指针,是不安全的可能指向任何地方,B正确。空指针没指向任何空间,没有值,故C正确。malloc创建失败的话会返回空指针,故D错误。选D

4、有以下函数,该函数的功能是( )

int fun(char *s)
{
char *t = s;
while(*t++);//1
return(t-s);//2
}

A、比较两个字符的大小         B、计算s所指字符串占用内存字节的个数
C、计算s所指字符串的长度   D、将s所指字符串复制到字符串t中

解析:易错题,遇到这种题最好的方法就是传一个东西进去试一下,我们传字符串"abc"进去,可以看出,函数fun先使用字符指针t存放s的指针,所以此时t可以等效为"abc"的首地址,走到代码1,是一个循环,循环会令t不停地走直到走到'\0',因为'\0'的ASCII码值为0。而字符串"abc"走三次才会走到'\0'。但是要注意,*t++,也就是会走到'\0'之后的一个位置。最后走到代码2,首地址和后面的一个地址一减,就会得到字符串"abc"的长度再+1=4。综上所述,答案选B,计算的是字符串占用内存字节的个数,包含'\0'

c语言每日一练(8),每日一练,c语言,算法,开发语言

 5、若有float a[3]={1.5,2.5,3.5},*pa=a;*(pa++)*=3; 则 *pa 的值是()

A、1.5      B、2.5      C、3.5      D、4.5

解析:从左往右一步步看,首先定义了一个浮点型数组a,存放了1.5,2.5,3.5。接着,使用浮点型指针将浮点型数组a的首地址赋给pa,那么pa现在存放的值为1.5,最后*(pa++)*=3,先使用后++,根据优先级,解引用得到1.5*=3,那么数组a首地址所指向的值被修改为4.5。然后pa++,来到2.5所在的地址,*pa解引用,故最后得到的值为2.5,选B

c语言每日一练(8),每日一练,c语言,算法,开发语言
  

编程题1: 

 统计每个月兔子的总数_牛客题霸_牛客网c语言每日一练(8),每日一练,c语言,算法,开发语言统计每个月兔子的总数_牛客题霸_牛客网

思路:通过一些计算你可以发现,第n个月的兔子总数就是第n个斐波那契数,接下来就很简单了。

#include <stdio.h>
int main()
{
    int a=1;int b=1;
    int month=0;
    scanf("%d",&month);
    if(month<3)
    //当要计算的斐波那契数<3直接打印1
    {
        printf("%d",a);
        return 0;
    }
    while(month-2)
    {
        int tmp=a;
        a=b;
        b=tmp+b;
        month--;
    }
    printf("%d",b);
}

 编程题2:

最大公约数__牛客网 (nowcoder.com)

思路:使用辗转相除法解决问题,具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 

#include <stdio.h>
int main() {
	long long int a = 0; long long int b = 0;
    //使用long long,防止数据过大
	scanf("%lld %lld", &a, &b);
	while (b)
	{
		long long int tmp = b;
        //储存中间变量
		b = a % b;
		a = tmp;
	}
	printf("%lld", a);
	return 0;
}

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

到了这里,关于c语言每日一练(8)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索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

领红包