c語言刷題易錯篇
大家好小編只是一個c語言基礎新手,希望能與大家一起學習 共同進步 給小編個關注 以后大家一起學習也是很愉快的事情呢,不足之處希望能指出 ,好讓小編有進步
下面直接進入正題
首先我給大家介紹幾個易錯的基礎題:
第一個取余的盲區
: 直接看代碼吧 咱們猜猜結果是多少
#include<stdio.h>
int main()
{
int i = 8;
int j = -3;
printf("%d", i%j*j);
system("pause");
return 0;
}
以上代碼大家來猜猜結果是多少;小編當初可是得出了 一個驚天地泣鬼神的操作哦 大膽的寫上了 一個大大的 -3 一個紅叉叉直接打臉

以上代碼便是編譯結果了 經過小編的重復修改資料,最終得出 一個正數對一個負數取余就相當于對這個負數的絕對值取余,所以才有的-6結果 大家會了嗎?
第二個printf的盲區
:也是很基礎的題.但是錯誤的也很多下面直接看代碼
#include<stdio.h>
int main()
{
printf("%d", printf("%d", printf("%d", 123) ) );
system("pause");
return 0;
}
我們知道printf函式格式控制符就是對后面變數的一個解釋,但也沒有想過printf的回傳值是什么呢?不知道也沒關系由小編告訴你們吧,printf的回傳值是輸出元素的字符個數,所以最內層的printf輸出123回傳為2 最外層也就是1咯, 所以最終結果是12331 下面看看編譯器的結果吧

小編說對了哦 !!!!給個關注吧.以后會持續分享的
第三個 const的用法//此處只用于一級指標哦 二級指標小編const沒試過呢

以上的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 之間有則是修飾* 畢竟*代表指標 指標就是指向地址嘛,故地址無法改變
經過以上的描述大家應該知道答案了吧,歡迎在評論區留言哦,經過這個題 小編要告訴大家 刷題的時候不要一味的去看答案,要有自己獨特的理解,對答案要有質疑.
第四個

牛客網地址–小樂樂與字串
下面小編直接公示小撰寫的代碼咯,如有更好的建議希望在評論區或私聊告訴小編哦!
#include<stdio.h>
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
歡迎各位來騷擾小編
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/247212.html
標籤:其他
下一篇:【保姆級教程】Spring Boot單元測驗(Controller層的Header處有Token驗證的詳細示例代碼),文末介紹Postman 的基本使用
