C語言例題3

1.設x、y、z和k都是int型變量,則執行表達式:x=(y=4,z=16,k=32)后,x的值為(32);

? ? ? ? x=(y=4,z=16,k=32),x的值為32

理解逗號運算符在c語言中的工作方式:逗號運算符從左到右執行其操作數,并返回最右邊的操作數作為結果

2.?2、對于一個正常運行和正常退出的C程序,程序從main函數第一條可執行語句開始執行,在main函數結束

3.設x和y均為int型變量,則以下語句:x+=y;y=x-y;x-=y;的功能是:交換x和y中的值

x+=y? ? ? ? 相當于把x與y的和重新賦值給x

y=x-y? ? ? ?相當于把x-y的值為x賦值給y

x-=y? ? ? ? ?相當于把x-y的值為y賦值給x

所以x與y的值交換!

?4.假定有以下變量定義:? int k=7,x=12;則能使值為3的表達式是:(x%=k)-(k%=5)

1.%=是取模和賦值運算符:先進行取模運算,然后將結果賦值給左邊的變量

2.- 是減法運算符

?5.以下程序的輸出結果是:12 13

????????????????main( )
    { int a=12,b=12;
     printf(“%d %d\n”,a--,++b);
    }

a--這是一個后綴遞減操作,首先返回a的當前值,然后a的值再減少1

++b這是一個前綴遞增操作,首先增加b的值,然后返回增加后的值

?6.設有聲明語句“int a=1,b=0;”,則執行以下語句后輸出為:**0****2**

?????? switch(a)

?????? {

????????? case? 1:

???????????? switch(b)

?????????????? {case? 0: printf(“**0**”); break;

??????????????? case? 1: printf(“**1**”);break;

??????????????? }

????????? case?? 2: printf(“**2**”);break;

???????? }

首先:我們來看這個嵌套的switch-case結構

外層switch語句判斷條件是a

1.當a的值為1時,進入第一個case:1的代碼塊

? ? ? ? 在這個代碼塊中,有一個內層的switch語句,其判斷條件是b;

? ? ? ? 因此b的值為0,所以執行case 0:的代碼塊,輸出**0**;

此時,由于case 0 :后面有break語句,所以跳出內層的switch語句。

但是,由于外層switch語句的case 1:后面沒有break語句,程序會繼續執行下一個case,也就是case 2:的代碼塊,輸出**2**;

因此,結果為**0****2**

7.以下程序輸出結果是? 6

main( )
    { int m=5;
     if(m++>5)printf(“%d\n”,m); 

else printf(“%d\n”,m--);}

if(m++>5):這是一個后自增加操作。首先,比較m此時為5是否大于5,然后m自增加1.因此,判斷條件為假。

因為條件為佳,所以執行else語句:printf("%d\n",m--); 這是一個后自減操作。首先打印m的值再自減1;

所以輸出結果為:6

在C++和許多其他編程語言中,i++++i都是對變量i進行自增操作,但它們的使用方式和效果略有不同。

  1. i++: 這是后置自增操作。它首先返回i的當前值,然后將i的值加1。例如,如果i是5,那么執行j = i++后,j的值將是5,而i的值將變為6。
  2. ++i: 這是前置自增操作。它首先將i的值加1,然后返回新的值。例如,如果i是5,那么執行j = ++i后,j的值將是6,而i的值也將是6。

這兩種操作在大多數情況下可以互換使用,但它們在某些特定場景下可能會有細微的差別。例如,當與復雜的表達式或函數一起使用時,前置和后置自增操作的順序可能會影響結果。因此,選擇使用前置自增還是后置自增應根據具體的需求和上下文來決定。

8.當執行以下程序段時:循環體將執行一次

????????x=-1;
    do { x=x*x;}

while(!x);

循環體執行的次數是由循環條件絕對的:

? ? ? ? 在這個程序中,循環條件是!x,只要這個條件為真,循環就會繼續執行。但是在第一次循環迭代中,x的值從-1變為1(x=x*x);然后!x的值為0(假),所以循環終止了,因此,循環體只執行了一次!

9.?在函數調用過程中,如果函數funA中又調用了函數 funA,則:稱為函數的直接遞歸調用

直接調用是指一個函數的函數體中含有調用自身的語句。這種情況下,函數funA在其定義中直接調用了自身!

間接調用是指一個函數在函數體里面有調用了其它函數,而其它函數反過來調用了該函數的情況。在這種情況下,函數funAbing沒有在其定義中調用了其它函數,而是直接調用了自身。

直接調用:調用了自身語句

間接調用:調用了其他函數

遞歸函數:

? ? ? ? 是指一個函數的函數體中直接或間接調用了該函數自身的函數。在上述情況中,由于funA在其定義中直接調用了自身,所以它是一個遞歸函數。

10、以下程序運行后,輸出結果是:8,17

func(int a,int b)
    { static int m=0,i=2;
    i+=m+1;
    m=i+a+b

return(m);
   }
   main()
   { int k=4,m=1,p;
    p=func(k,m);printf(“%d,”,p);
    p=func(k,m);printf(“%d\n”,p);
   }

分析:

? ? ? ? 第一個func函數體里面?初始化m為0,i為2;

????????????????i+=m+1相當于i=i+m+1;? ? ? ? i值為3;

????????????????m=i+a+b相當于m=3+a+b;????????

? ? ? ? main函數

????????????????把k=4,m=1,值傳給func函數

? ? ? ? 第一個p為:

? ? ? ? ? ? ? ? i=i+m+1=2+0+1;??

? ? ? ? ? ? ? ? m=i+a+b=3+4+1=8

? ? ? ? 第二個p為:

? ? ? ? ? ? ? ?i=i+m+1=3+8+1=12

? ? ? ? ? ? ? ?m=i+a+b=12+4+1=17

? ? ? ?

`static` 是C、C++、Java、C#等許多編程語言中的一個關鍵字,它具有多種用途。以下是`static`的一些主要含義和用途:

1. **靜態變量**:當一個變量前有`static`關鍵字時,這意味著這個變量的生命周期是整個程序的執行期間,而不是它所在的代碼塊。此外,靜態變量只會被初始化一次,且其值在程序的整個生命周期中保持不變。


static int x = 0; ?// 只在程序開始時初始化一次

2. **靜態方法**:當一個方法前有`static`關鍵字時,這意味著這個方法不需要類的實例就可以調用。靜態方法只能訪問靜態變量或其他靜態方法。



static void myStaticMethod() {
?
}

3. **靜態類**:在C#中,整個類都可以被聲明為`static`。這樣的類不能被實例化,并且只能包含靜態成員。



public static class MyStaticClass {

}
4. **靜態成員的訪問**:靜態成員可以通過類名直接訪問,而不需要創建類的實例。



MyClass.myStaticMethod(); ?// 訪問靜態方法

5. **局部變量**:在C和C++中,`static`關鍵字也可以用于局部變量,這意味著這個變量的生命周期是整個程序執行期間,而不是它所在的代碼塊。這與全局變量類似,但它的作用范圍被限制在其聲明所在的代碼塊內。
6. **其他用途**:在C++中,`static`還可以用于聲明靜態指針、靜態數組等。在Java中,它可以用于聲明靜態塊等。

理解并正確使用`static`關鍵字對于編寫高效的、可維護的代碼是非常重要的。但也要注意,過度使用或不恰當使用`static`可能會導致代碼難以理解和維護。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536746.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536746.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536746.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Visual Basic的故事

Visual Basic(VB)是一種由Microsoft開發的面向對象的事件驅動編程語言。VB的故事始于上世紀90年代初,它在Windows平臺上的成功對于圖形用戶界面(GUI)應用程序的開發產生了深遠的影響。以下是關于VB發展過程和相關開發者…

VR全景展示的功能有哪些?適合用于哪些領域?

現如今,VR全景展示技術已經逐漸融入了我們的日常生活中,可能大部分人都還沒有意識到VR全景是如何應用的,但其實VR全景針對多個行業的垂直領域都有一定的落地使用。在互聯網高速發展的今天,多媒體所包含的種類也越來越多&#xff0…

【美團大數據面試】大數據面試題附答案

目錄 1.hdfs讀寫流程解析 2.hdfs副本機制,三副本原因,副本存放策略 3.hdfs容錯機制原理 4.MapReduce執行流程詳解 5.spark和mr的區別 6.TopN求法,大數據量無法完全寫入內存解決方案,MapReduce實現方法 7.spark部署、調度原…

SpringAOP復習

SpringAOP AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程。他是一種可以在不修改原來核心代碼的情況俠給程序動態統一進行增強的一種技術 SpringAOP:批量對Spring容器中的bean方法做增強,并且這種增強不會與原來方…

Odoo16 實用功能之在Form視圖的各個部位加入按鈕

目錄 1、 如何在form視圖中的頭部加上按鈕 2、如何在form視圖中的身體加上按鈕 3、如何在notebook標簽中加入按鈕 1、 如何在form視圖中的頭部加上按鈕 以CRM中的渠道form視圖為例子介紹&#xff08;實現紅框中的效果&#xff09; 直接在<header>標簽里加入按鈕即可 …

樹莓派4B搭建開源NAS系統openmediavault

目錄 搭建過程使用鏡像準備硬件準備軟件賬號信息制作系統盤首次啟動配置獲取樹莓派IP地址 ssh登錄到樹莓派上登錄到openmediavualt連接到wifi 搭建過程 搭建過程參考鏈接兩篇文章,已經搭建完畢.期間遇到一些坑,為了方便大家,我把搭建好的鏡像和使用到的工具放在百度網盤共享了…

谷歌Gemini中文疑似套殼百度文心一言

關注盧松松&#xff0c;會經常給你分享一些我的經驗和觀點。 哈哈哈&#xff0c;沒想到谷歌 Gemini 中文語言竟然來自百度的文心一言。 最近知名博主闌夕發微博稱&#xff1a;在 Poe 平臺上對 Gemini-Pro 進行了一個測試。問它 " 你是誰 "&#xff0c;Gemini-Pro 上…

HashSet 和HashMap的區別、優缺點、使用場景

HashSet和HashMap是Java集合框架中的兩個常用類&#xff0c;它們都用于存儲和管理數據&#xff0c;但在使用方式、功能和性能上有很大的區別。 HashSet和HashMap的區別 區別一&#xff1a;用途不同 HashSet&#xff1a;HashSet是一個基于哈希表的集合&#xff0c;用于存儲不…

常用兩種Linux命令生成器

在Linux中&#xff0c;可以使用多種命令來生成隨機密碼。以下是其中兩種常用的命令&#xff1a; 1.pwgen&#xff1a;這個命令可以生成隨機、無意義的但容易發音的密碼。生成的密碼可以只包含小寫字母、大小寫混合或數字。大寫字母和數字會以一種便于記憶的方式放置&#xff0…

Java_Stream流

一、JDK8新特性&#xff08;Stream流&#xff09; 接下來學習一個全新的知識&#xff0c;叫做Stream流&#xff08;也叫Stream API&#xff09;。它是從JDK8以后才有的一個新特性&#xff0c;是專業用于對集合或者數組進行便捷操作的。有多方便呢&#xff1f;我們用一個案例體…

【OAuth2】授權框架的四種授權方式詳解

&#x1f389;&#x1f389;歡迎來到我的CSDN主頁&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一個在CSDN分享筆記的博主。&#x1f4da;&#x1f4da; &#x1f31f;推薦給大家我的專欄《OAuth 2》。&#x1f3af;&#x1f3af; &#x1…

go從0到1項目實戰體系二十二:gin構建一個http server

1. 構建一個http server: // api.test.com/topic/main.go: type Topic struct {Id int // 如果寫成小寫的,不能訪問,因為是私有的.Title string } func main() {data : make(map[string]interface{})data["name"] "david"data["age"…

TwIST算法MALTLAB主程序詳解

TwIST算法MALTLAB主程序詳解 關于TwIST算法的具體原理可以參考&#xff1a; 鏈接: https://ieeexplore.ieee.org/abstract/document/4358846 鏈接: https://blog.csdn.net/jbb0523/article/details/52193209 該算法的MATLAB源代碼&#xff1a; 鏈接: http://www.lx.it.pt/~bi…

tcp和udp協議分別是什么意思有什么區別?

TCP&#xff08;傳輸控制協議&#xff09;和UDP&#xff08;用戶數據報協議&#xff09;是兩種網絡傳輸協議&#xff0c;它們在網絡通信中有一些關鍵的區別。 連接性&#xff1a; TCP&#xff1a; 提供面向連接的服務。在通信之前&#xff0c;需要建立連接&#xff0c;數據傳輸…

Node.js(二)-模塊化

1. 模塊化的基本概念 1.1 什么是模塊化 模塊化是指解決一個復雜問題時&#xff0c;自頂向下逐層將系統拆分成若干模塊的過程。對于整個系統來說&#xff0c;模塊是可組合、分解和更換的單元。 1.2 編程領域中的模塊化 編程領域中的模塊化&#xff0c;就是遵守固定的規則&…

48V轉12V 300mA降壓芯片,60V耐壓、0.6A穩壓芯片帶ECO模式-AH590L

AH590L是一種48V轉12V 300mA降壓芯片&#xff0c;具有60V耐壓、0.6A穩壓電流的特點&#xff0c;并且還帶有ECO模式&#xff0c;是一種理想的開關電源解決方案。 AH590L是PWM模式 DC/DC降壓轉換器。TEL&#xff1a;l86*4884*3702*寬輸入電壓范圍4至60V適用于工業領域的廣泛應用…

有意思、好用的免費API分享

Facebook Games Services - Facebook Games Services 為游戲開發者提供了各種服務, 包括(但不限于) 成就 API, 分數 API, 應用通知, 請求, 游戲養成和 Facebook SDK for Unity.Google Play Games Services - Google Developers Games 網站提供了各種 API, SDK 和服務, 包括(但不…

AI安全綜述

1、引言 AI安全這個話題&#xff0c;通常會引伸出來圖像識別領域的對抗樣本攻擊。下面這張把“熊貓”變“猴子”的攻擊樣例應該都不陌生&#xff0c;包括很多照片/視頻過人臉的演示也很多。 對抗樣本的研究領域已經具備了一定的成熟性&#xff0c;有一系列的理論來論述對抗樣本…

解決jquery-1.11.0.js安全漏洞

摘要&#xff1a;這個文件被掃出安全漏洞有XSS攻擊等 &#xff0c;其中一個比較著名的漏洞是在JQuery 1.6.2版本中發現的。該漏洞被稱為”attrFn"漏洞&#xff0c;它允許攻擊者通過特殊構造的代碼執行任意的JavaScript代碼。 一、統一解決方式&#xff1a; jQuery官網 官…

javafx實現復雜統計圖繪畫

JavaFX 是一個用于創建富互聯網應用程序 (Rich Internet Applications) 的軟件平臺,可以用于創建各種圖形和圖表。下面是一個示例代碼,演示如何使用 JavaFX 繪制復雜的統計圖。 import javafx.application.Application; import javafx.collections.FXCollections; import ja…