c语言刷题篇易错

c语言刷题易错篇

大家好小编只是一个c语言基础新手。希望能与大家一起学习 共同进步 给小编个关注 以后大家一起学习也是很愉快的事情呢。不足之处希望能指出 。好让小编有进步
下面直接进入正题

首先我给大家介绍几个易错的基础题:

第一个取余的盲区

: 直接看代码吧 咱们猜猜结果是多少

#include 
int main()
{
     
	int i = 8;
	int j = -3;
	printf("%d", i%j*j);
	system("pause");
	return 0;
}

以上代码大家来猜猜结果是多少;小编当初可是得出了 一个惊天地泣鬼神的操作哦 大胆的写上了 一个大大的 -3 一个红叉叉直接打脸

c语言刷题篇易错_第1张图片
以上代码便是编译结果了 经过小编的重复修改数据,最终得出 一个正数对一个负数取余就相当于对这个负数的绝对值取余。所以才有的-6结果 大家会了吗?

第二个printf的盲区

:也是很基础的题.但是错误的也很多下面直接看代码

#include
int main()
{
     
	printf("%d", printf("%d", printf("%d", 123) ) );
	system("pause");
	return 0;
}

我们知道printf函数格式控制符就是对后面变量的一个解释,但也没有想过printf的返回值是什么呢?不知道也没关系由小编告诉你们吧。printf的返回值是输出元素的字符个数,所以最内层的printf输出123返回为2 最外层也就是1咯, 所以最终结果是12331 下面看看编译器的结果吧
c语言刷题篇易错_第2张图片
小编说对了哦 !!!!给个关注吧.以后会持续分享的

第三个 const的用法//此处只用于一级指针哦 二级指针小编const没试过呢

c语言刷题篇易错_第3张图片
以上的A是参考答案。参考永远只是参考,也会有出错的时候
首先我给大家介绍介绍 const的用法大家就知道如何去想这个题了

//一级指针和const结合的方式:
const int *p;        //修饰int即*p 所指向的内容无法改变
int const *p;        //修饰int即*p 所指向的内容无法改变
int *const p;        //修饰int* 即*p  不能改变指向
const int *const p;  //修饰int和int*  指向和所指向的内容都不能改变

巧记方法 :const若是与int之间若是没有 * 则为修饰P 则是指向的内容无法改变。 若是与int 之间有则是修饰* 毕竟*代表指针 指针就是指向地址嘛,故地址无法改变
经过以上的描述大家应该知道答案了吧。欢迎在评论区留言哦。经过这个题 小编要告诉大家 刷题的时候不要一味的去看答案,要有自己独特的理解。对答案要有质疑.

第四个

c语言刷题篇易错_第4张图片
牛客网地址–小乐乐与字符串

下面小编直接公示小编写的代码咯。如有更好的建议希望在评论区或私聊告诉小编哦!

#include
int main()
{
      
    //使用longlong是因为要避免数据过大而导致的错误
    long long int c = 0;//表示C的个数
    long long int ch = 0;//表示CH的个数
    long long int chn = 0;//表示CHN的个数
    char arr[8000]={
     0};//用来承载输入的数据
    scanf("%s",arr);
    char* p = arr; //用p指向arr的首地址;
    while(*p)
    {
     
        if('C' == *p)
            {
     
               c++;
            }
        else if('H' == *p)
            {
     
              ch+=c;
            }
        else if('N' == *p)
            {
     
               chn+=ch;
            }
        p++;
    }
        printf("%lld",chn);
        return 0;
    
}

今天的分享就到这里了。小编要去干饭了 !!!
小编qq:2206730228
欢迎各位来骚扰小编

你可能感兴趣的:(c语言新手,c语言)