第一篇:Java SE考試--編程題總結
線程和進程的區別:
(1)進程是運行中的程序,擁有自己獨立的內存空間和資源;
(2)一個進程可以有一個或多個線程組成,且至少有一個線程稱為主線程;(3)線程是最小的處理單位,多個線程共享一塊內存和資源;
(4)當一個線程改變了所屬進程的變量時,其它線程下次訪問該變量時得到這種改變。簡述什么是多線程。
線程的最主要功能是多任務處理,即多線程。多線程也就是在主線程中有多個線程在運行,多個線程的執行是并發的,在邏輯上“同時”,而不管是不是物理上的“同時”。
多線程和傳統上的單線程在程序設計上的區別在于: 由于各個線程的控制流彼此獨立,使得各個線程之間的代碼是亂序執行的,由此帶來的線程調度、同步等問題是需要重點留意的。
引入線程的優點: 充分利用CPU資源。2簡化編程模型。
3簡化異步事件處理。4使GUI更有效率。5節約成本 線程狀態:
Thread和Runnable區別:
(1)Thread是類,具有線程的所有方法,其對象就是一個線程對象。但繼承Thread,就不能再繼承其他的類(Java只支持單一繼承)。
(2)Runnable是接口,只提供run()方法。實現該接口的類還可以繼承其他類,但其對象不是線程對象,不能直接運行,必須通過Thread將其啟動。通過Runnable接口創建線程的步驟如下:
1、實例化實現Runnable接口的類;
2、建立一個Thread對象,并將第一步實例化后的對象作為參數傳入Thread類的構造方法;
3、通過Thread類的start()方法建立線程。線程優先級:
(1)線程的優先級代表該線程的重要程度。
(2)當有多個線程同時處于可執行狀態并等待獲得CPU時間時,線程調度系統根據各個線程的優先級來決定CPU分配時間。
(3)優先級高的線程有更大的機會獲得CPU時間。
(4)線程的默認優先級值:Thread.NORM_PRIORITY,值為5。每個新線程均繼承創建線程的優先級。setPriority()設置線程優先級。
值為MIN_PRIORITY(1)和MAX_PRIORITY(10)之間的值。getPriority()獲取線程的優先級值。線程通信:
(1)線程通信的方法:wait()、notify()和notifyAll()(2)調用notify()方法時可以隨機選擇一個在該對象調用wait()方法的線程,解除它的阻 塞。
(3)調用notifyAll()方法可以喚醒等待該對象的所有線程。但喚醒時無法控制喚醒哪個線程,喚醒過程完全由系統來控制。
(4)notify()方法和notifyAll()方法只能在同步方法或同步塊內部使用。產生死鎖的原因主要是:
所謂死鎖,是指兩個或多個線程都在等待對方釋放對象資源而進入的一種不可“調節”的狀態。
1、因為系統資源不足;
2、進程運行推進的順序不合適;
3、資源分配不當等。
如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進程運行推進順序與速度不同,也可能產生死鎖。wait()方法區別于sleep()方法的是:
(1)wait()方法調用時會釋放對象鎖,而sleep()方法不會(2)sleep()使當前線程進入停滯狀態(阻塞當前線程),讓出CPU的使用(3)sleep()是Thread類的Static(靜態)的方法;(4)wait()方法是Object類里的方法;wait()使用notify或者notifyAlll或者指定睡眠時間來喚醒當前等待池中的線程。
(5)wait()必須放在synchronized block中,否則會在運行時扔出”java.lang.IllegalMonitorStateException“異常。
通信協議指網絡中傳遞、管理信息的一些規范。TCP/IP協議,IPX/SPX協議,NetBEUI協議等。
TCP/IP協議
IP協議:網絡層協議,保證計算機之間發送和接收數據,能適應各種網絡硬件。無連接,不可靠的協議。
TCP協議:端對端的協議,端與端之間建立連接、發送、接收數據以及終止連接。利用重發技術和擁塞控制機制,向應用程序提供可靠通信連接。
區別與聯系:IP協議只保證計算機能發送和接受分組數據,而TCP協議則可提供一個可靠的、可流控的、全雙工的信息流傳輸服務。兩個協議統稱為TCP/IP協議。
A類地址:0-126,默認掩碼:255.0.0.0。B類地址:128-191,默認掩碼:255.255。C類地址:192-223,默認掩碼:255.255.255.0。D類地址:廣播地址,E類地址保留。
常用端口以及對應的服務 7:Echo服務端口
21:FTP服務端口
23:Telnet服務端口 25:SMTP服務端口 80:HTTP服務端口 網絡API:
(1)Java中有關網絡方面的功能都定義在java.net包中。(2)使用InetAddress類封裝IP地址和域名
(3)URL由四部分組成。協議名:指明獲取資源所使用的傳輸協議。主機名:指定獲取資源的域名。端口:指定服務的端口。文件路徑:指定訪問的文件名以及路徑。URLConnection類:
(1)通過URL的方法openStream()只能從網絡上讀取數據,如果如要輸出數據,就要用到URLConnection類。(2)URLConnection是個抽象類,代表與URL指定的數據源的動態連接。
(3)URLConnection類提供比URL類更強的服務器交互控制,允許用Post或者Put和其他HTTP請求方法將數據送回服務器。Socket的工作步驟:
1根據指定的地址和端口創建一個Socket對象。
2調用getInputStream()方法或getOutputStream()方法打開連接到Socket的輸入/輸出流。3客戶端與服務器根據一定的協議交互,直到關閉連接。4關閉客戶端的Socket。ServerSocket的工作步驟:
1根據指定端口創建一個新的ServerSocket對象。
2調用ServerSocket的accept()方法,在指定的端口監聽到來的連接。Accpet()一直處于阻塞狀態,知道有客戶端試圖建立連接。這時accpet()方法返回連接客戶端與服務器的Socket對象。
3調用getInputStream()方法或getOutputStream()方法打開連接到Socket的輸入/輸出流。
4服務器與客戶端根據一定的協議交互,直到關閉連接。
5關閉服務器端的Socket。6回到第2步,繼續監聽下一次的連接。多線程Socket通信實現:
服務器總是在指定的端口監聽是否有客戶端請求,一旦監聽到客戶請求,服務器就會啟動一個專門的服務線程來響應客戶請求,而服務器本身在啟動完線程之后馬上有進入監聽狀態,等待下一個客戶的到來。synchronized兩種使用方式:
1.修飾方法,使調用該方法的線程均能獲得該對象的鎖。2.放在代碼塊中,修飾對象,當前代碼獲得對象的鎖。。鎖定的是對象,而不是方法或代碼塊。
Swing的結構:
(1)Swing組件位于javax.swing包中,javax是一個Java擴展包。(2)在javax.swing包中,定義了兩種類型的組件:
頂層容器(不包含在其他容器中的容器,JFrame,JApplet,JDialog和Jwindow 4個)和輕量級組件。
Swing組件都是AWT的Container類的直接子類和間接子類。布局:
(1)用來管理組件在容器中的布局格式。
(2)FlowLayout, BorderLayout, GridLayout和CardLayout四種。位于java.awt包中。(3)FlowLayout流布局一般用來安排面板中的按鈕。它使得按鈕呈水平放置,直到同一條線上再也沒有適合的按鈕。線的對齊方式由align屬性確定。(4)BorderLayout邊界布局,JFrame的默認布局。
(5)GridLayout網格布局,類似于表格,按照行列排列所有組件,每個單元格大小一樣。添加組件使,按照從左至右,自上而下的順序加入。
(6)CardLayout卡片布局,將加入到容器的組件看作一疊卡片,只能看到最上面的組件 常用的事件類:
java.awt.event包中常用的事件類:
ActionEvent, AdjustmentEvent, ItemEvent, FocusEvent, KeyEvent, MouseEvent, WindowEvent。java.awt.event包中常用的監聽接口:
ActionListener,AdjustmentListener, ItemListener, FocusListener, KeyListener, MouseListener, WindowListener。適配器:
(1)擴展監聽接口時,有些事件處理方法是不需要的,但必須重寫。
(2)出于簡化代碼的目的,java.awt.event包中提供了一個抽象適配器類,分別實現每個具有多個事件處理方法的監聽接口。
(3)繼承適配器后,可以僅重寫需要的事件處理方法。事件處理的步驟:
1創建監聽類,監聽類中,事件處理方法中編寫事件處理代碼 2創建監聽對像。
3利用組件的addXXXListener()方法將監聽對象注冊到組件上 3者區別聯系:
監聽類:是一個擴展監聽接口的類,可以擴展一個或多個監聽接口。
事件處理方法:是監聽接口中已經定義好的相應的事件處理方法,要重寫。監聽對象:是監聽類的一個實例對象,具有監聽功能。
事件用于實現用戶界面的交互,是GUI編程的重要組成部分。Java最新的事件處理方法是基于委派事件模型的。
事件包含3個組件:事件對象、事件源和事件處理程序。
事件是一個描述事件源狀態改變的對象,不是通過new 創建的,而是由用戶操作觸發的。一個事件源可能會生成不同類型的事件。可以將一個事件發送到多個監聽器對象。
監聽類是實現監聽接口的類,監聽對象是監聽類的實例化對象 在組件中注冊監聽器的方法是:addXxxxListener()。適配器是實現相關監聽接口的類,目的是簡化程序代碼 創建菜單的步驟:
1創建一個JMenuBar菜單欄對象,將其設置到窗體中。
2創建若干個JMenu菜單對象,將其放置到JMenuBar對象中,或按要求放到其他JMenu對象中。
3創建若干個JMenuItem菜單項對中,將其放置到對應的JMenu對象中。JPopupMenu:彈出式菜單 位置不固定、無標題
(JDialog類)模式對話框:必須首先對該對話框進行響應(單擊“確定”或“取消”)后,才能對對話框以外的應用程序進行操時;
無模式對話框:可以不響應對話框,對其以外的程序進行操作。JTable類--表格模型 TableModel:
TableModel本身是個接口,若要實現此接口建立表格非常復雜,因此Java提供了兩個類實現了TableModel接口:(1)AbstractTableModel:抽象類,實現了大部分的TableModel方法。AbstractTableModel 類 對 TableModel 接口中大部分方法提供部分實現,它關注監聽器的管理,并生成TableModeEvents 事件,以及把他們發送到監聽器提供方便。
(2)DefaultTableModel:繼承AbstractTableModel,是默認的表格模型類。
(3)要創建一個TableModel,可以簡單擴展AbstractTableModel類并且至少實現下列三 個方法 public int getRowCount()、public int getColumnCount()、public Object getValueAt(int row,int column)使用JDBC訪問數據庫的基本步驟:
1加載JDBC驅動程序(Class.forName(“oracle.jdbc.driver.OracleDriver”);)。2建立數據庫連接(Class.forName(“oracle.jdbc.driver.OracleDriver”);Connection conn = DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”, “scott”, “tiger”);)。3創建Statement對象 4執行SQL語句。5 處理返回結果。6 關閉創建的對象 Statement中3個執行方法的不同:
(1)execute():用于執行返回多個結果集、多個更新計數或二者的混合。(2)executeUpdate():用于執行insert、update、delete語句及SQl DDL語句。插、更、刪效果是修改表中的行或列,返回值一個整數,即影響行數。對于建立、刪除返回值為0。(3)executeQuery():用于產生單個結果集的語句,例如select語句。事務的ACID特性:
數據庫中的操作通常是一個獨立單元,事務是構成單一邏輯單位的操作集合。已提交事務是指成功執行完畢的事務,未能成功完成的事務成為中止事務,對中止事務造成的變更需要進行撤銷處理,成為事務回滾。原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durabilily)。
保存點: 集元數據: 集元數據 Meta Data,是有關數據庫和表格結構的信息,如數據庫的表、表的列、表的索引、數據類型、對SQL的支持程度等信息。DatabaseMetaData接口
(1)主要用來得到數據庫的信息,如:數據庫中所有表格的列表、系統函數、關鍵字、數據庫產品名和數據庫支持的JDBC驅動名。
(2)通過Connection.getMetaData()方法創建。(3)主要提供了兩大類方法:
1.返回類型boolean的,用于檢查數據庫或驅動器是否支持某項功能。2.用于獲取數據庫或驅動器本身的某些特征值。
通過Statement實現靜態SQL查詢
使用PreparedStatement實現動態SQL查詢 使用CallableStatement實現存儲過程的調用
DatabaseMetaData接口用于得到關于數據庫的信息 ResultSetMetaData接口主要用來獲取結果集的結構 JDBC默認的事務提交模式是自動提交
通過setAutoCommit()方法控制自動提交模式,使用rollback()方法實現事務回滾 開發RMI--步驟: 定義遠程接口。2 實現遠程接口。3 編寫和實現遠程服務類。4 編寫客戶端程序 RMI機制原理:
2個獨立程序。服務器端、客戶端 服務器端:(1)創建多個遠程對象,(2)調用注冊服務程序使得名字與遠程對象關聯,使得這些遠程對象能夠被引用,(3)等待客戶端調用這些遠程對象的方法。客戶端:
(1)在服務器上的注冊服務程序中用遠程對象名稱查找一個或者多個遠程對象的引用,(2)調用遠程對象的方法。
JOptionPane類中四種對話框的靜態方法
1消息對話框(showmessagedialog)2輸入對話框(input)3確認對話框(Option)4選項對話框(Confirm)Locale常用定義:
Locale類是用來標識本地化消息的重要工具類。該類包含對主要地理區域的地域化特征的封裝。通過設定Locale為特定的國家或地區,提供符合當地文化習慣的字體、圖標和表達格式。
簡述java異常處理機制 :
java提供了兩種處理異常的機制:一是捕獲異常,二是聲明拋出異常.在java運行過程中系統得到一個異常對象時,它會沿著方法的調用棧逐層回溯,尋找處理這個異常的代碼,找到后,系統把當前異常對象教給這個方法處理,這就是捕獲異常.如果方法中不知道如何處理所出現的異常,則可在定義方法時,聲明拋出異常.使用JDBC查詢Scott用戶的emp表中的所有信息? String sql=“select * from emp”;PreparedStatement stmt =conn.prepareStatement(sql);ResultSet rs = stmt.executeQuery();int columnCount = rs.getMetaData().getColumnCount();//這地方補充了一下 while(rs.next()){ for(int i = 1;i <= columnCount;i++){ System.out.println(md.getColumnName(i)+ “--” + rs.getObject(i));} } JDBC API的三個組成部分: 1 JDBC驅動程序管理器 2 JDBC驅動程序測試包 3 JDBC-OCBC橋
加載JDBC驅動程序中加載驅動程序的一種簡單方法是使用Class.forName方法顯示加載: Class.forName(“DriverName”);對于JDBC/ODBC橋,加載JDBC-ODBC數據庫驅動程序的方法為: Class.forName(“sun.jdnc.odbc.JdbcOdbcDriver”);而對于Oracle數據庫,加載數據庫驅動程序的方法為: Class.forName(“oracle.jdbc.driver.OracleDriver”);對于Oracle驅動連接的是URL是:
Jdbc:oracle:thin:@serverName:port:instance 通過Oracle驅動獲得數據庫連接的實力語句:
Class.forName(“oracle.jdbc.driver.OracleDriver”);Connection conn = DriverManager.getConnection(“jdbc:oracle:thin:@localhost:1521:orcl”,”scott”,”tiger”);
多線程Socket通信中多個while循環是用來監聽的。
TableModel本身是一個借口,若是要直接實現此接口來建立表格是非常復雜的,因此java中還提供了AbstractTableModel和DefaultTableModel這兩個類分別實現TableModel接口。ListSelecyionModel接口中的常量:
static final int SINGLE_SELECTION 單一選擇模式 static final int SINGLE_INTERVAL_SELECTION 連續區間選擇模式 static final int MULTIPLE_INTERVAL_SELECTION 多重選擇模式
簡述實現一個自定義的對話框的步驟?
(1)繼承JDialog類,在構造方法中傳入參數(2)在對話框中添加用戶界面組件(3)添加事件處理(4)設置對話框大小
什么是檢查型異常,非檢查型異常
檢查型異常:指編譯器要求必須處置的異常,是程序運行時由于外界因素造成的一般性異常 非檢查型異常:指編譯器不要求強制處理的異常,該異常是因設計或實現方式不當導致的,可以避免這種異常的發生.簡述一下使用泛型有什么優點?
答:泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、接口和方法的創建中,分別稱為泛型類、泛型接口、泛型方法。Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,并且所有的強制轉換都是自動和隱式的,提高代碼的重用率。
2.簡要描述ArrayList,Vector,LinkedList的存儲性能和特性? 答:ArrayList支持可隨需要而調整的動態數組。其內部封裝了一個動態再分配的Object[]數組。每個ArrayList對象有一個capacity,表示存儲列表中元素的數組的容量。當元素添加到ArrayList時,它的capacity自動增加。在向一個ArrayList對象添加大量元素的程序中,可使用ensureCapacity()方法增加Capacity,此法可以減少或增加重分配的數量。Vector 由于使用了synchronized 方法(線程安全),通常性能上較ArrayList 差,而LinkedList 使用雙向鏈表實現存儲,按序號索引數據需要進 行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。3.簡述Collection和Collections的區別。
答:java.util.Collection 是一個集合接口集合接口集合接口集合接口。它提供了對集合對象進行基本操作的通用接口方法。Collection接口在Java 類庫中有很多具體的實現。Collection接口的意義是為各種具體的集合提供了最大化的統一操作方式。java.util.Collections 是一個包裝類。它包含有各種有關集合操作的靜態靜態靜態靜態多 態方法多態方法多態方法多態方法。此類不能實例化不能實例化不能實例化不能實例化,就像一個工具類個工具類個工具類個工具類,服務于Java的Collection框架。Java代碼。
4、List、Map和Set三個接口,存取元素時,各有什么特點? 答:List 以特定次序來持有元素,可有重復元素。Set 無法擁有重復元素,內部排序。Map 保存key-value值,value可多值。
5、描述HashMap和Hashtable的區別。答:Hashtable和HashMap類有三個重要的不同之處。第一個不同主要是歷史原因。Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現。最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是只有HashMap可以讓你將空值作為一個表的條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數量的條目可以是空的value。這就是說,如果在表中沒有發現搜索鍵,或者如果發現了搜索鍵,但它是一個空的值,那么get()將返回null。如果有必要,用containKey()方法來區別這兩種情況。
6、簡述序列化和反序列化概念?
對象的序列化就是把對象寫入到一個輸出流中,對象的反序列化是指從一個輸入流中讀取一個對象。
7、簡述適配器與監聽接口的區別?
區別:適配器只需要重寫需要的事件處理方法,而監聽接口需要實現全部的方法。
監聽接口中定義了抽象的事件處理方法,這些方法針對不同的操作進行不同的處理。在程序中,通常使用監聽類實現監聽接口中的事件處理方法。監聽接口定義在java.awt.event包中,該包中提供了不同事件的監聽接口,這些接口中定義了不同的抽象的事件處理方法。擴展監聽接口時,有些事件處理方法是不需要的,但必須重寫。
處于簡化代碼的目的,java.awt.event包中有提供了一套抽象適配器類,分別實現每個具有多個事件處理方法的監聽接口。這樣繼承適配器后,可以僅重寫需要的事件處理方法。
第二篇:javase總結
建議開發較大規模的java應用程序都考慮使用mvc模式
首先考慮系統架構,學習使用第三方成熟的jar包,并import到自己的項目中
1、開發時考慮包的規劃,model,view層
2、應用結對編程原理進行開發,隨時保證程序的可運行性。(針對接口的編程)
3、編譯調試代碼,注意異常問題的處理
4、注意javadoc文檔的編寫應該和代碼的編寫同步進行
5、Log4j日志的記錄,Junit單元測試工具的使用
6、代碼編寫完畢,將其使用jar打包成可執行的jar文件
7、使用Ant自動化編譯測試打包部署工具完成代碼的最終發布
第三篇:編程題總結
C作業匯總
1.short a,b=32767;/*short類型在內存中占2B*/ a=b+1;問:a的值是多少?并分析原因。
2.有一4位數整數,假設用abcd表示,請把這個4位數的每個數位用表達式表示出來。3.從鍵盤輸入圓的半徑r,計算并輸出圓的面積s(要求:半徑r定義為float型;圓周率?定義為符號常量;面積s保留2位小數)#define PI 3.14159 #include
4.輸入m>=3的正整數,判斷m是否素數。畫出算法流程圖及NS圖
5.有一函數:
x?1 ?x ?y??2x?1 1?x?10
?3x-11 x?10 ?寫一段程序,輸入x,輸出y值。
要求x,y聲明為float類型,y保留2位小數。#include
if(x<1)
y=x;else
if(x<10)
y=2*x-1;
else
y=3*x-11;
}
printf(“y=%.2fn”,y);
x3x5x7x9?????,6.課后習題4.17(P159)利用泰勒級數sinx?x?計算sinx的3!5!7!9!值。要求最后一項的絕對值小于10,并統計出此時累加了多少項。#include
/*記錄每個項數*/ int n=1,count=0;/*count記錄累加了多少項*/
printf(“請輸入x值(弧度):n”);scanf(“%f”,&x);
term=x/n;while(fabs(term)>1e-5)
/* while循環*/ {
sinx+=term;
count++;
n+=2;
term=-term*x*x/((n-1)*n);}
/* do
/*do while循環*/ {
sinx+=term;
count++;
n+=2;
term=-term*x*x/((n-1)*n);}while(fabs(term)>1e-5);
*/
printf(“sin(%.2f)=%.4fn”,x,sinx);printf(“一共累加了:%d項。n”,count);}
7.用牛頓迭代法求下面方程在1.5附近的根:
2x?4x?3x?6?0 32?5
牛頓迭代公式:
x1?x0?f(x0)f?(x0)
#include
/*y1記錄f(x0),y2記錄f(x0)的導數*/
do {
x0=x1;
y1=2*x0*x0*x0-4*x0*x0+3*x0-6;
y2=6*x0*x0-8*x0+3;
x1=x0-y1/y2;}while(fabs(x1-x0)>1e-5);
printf(“the root is:%.2fn”,x1);}
8.寫一函數,輸入一個16進制整數,輸出相應的10進制數。例:從鍵盤輸入2a,輸出結果是42。
要求:若輸入數據不合法,則輸出提示信息。如輸入了35g,輸出“您輸入的16進制數不合法!”。
#include
printf(“請輸入一個16進制數字:n”);
while((c=getchar())!='n'){
if(c>='0' && c<='9')
sum=sum*16+c-'0';
else
if(c>='a' && c<='f')
sum=sum*16+c-87;
else
if(c>='A' && c<='F')
sum=sum*16+c-55;
else
{
printf(“您輸入的16進制不合法.n”);
exit(0);
} }
printf(“相應的10進制數是:%dn”,sum);} 方法2:用字符串處理的方式 #include
printf(“請輸入一個16進制數字:n”);gets(str);
for(i=0;str[i];i++){
if(str[i]>='0' && str[i]<='9')
sum=sum*16+str[i]-'0';
else
if(str[i]>='a' && str[i]<='f')
sum=sum*16+str[i]-87;
else
if(str[i]>='A' && str[i]<='F')
sum=sum*16+str[i]-55;
else
{
printf(“您輸入的16進制不合法.n”);
exit(0);
} }
printf(“相應的10進制數是:%dn”,sum);} 方法3:用字符數組及指針處理的方式 #include
{ char str[20],*p=str;int sum=0;
printf(“請輸入一個16進制數字:n”);gets(p);
while(*p){
if(*p>='0' && *p<='9')
sum=sum*16+*p-'0';
else
if(*p>='a' && *p<='f')
sum=sum*16+*p-87;
else
if(*p>='A' && *p<='F')
sum=sum*16+*p-55;
else
{
printf(“您輸入的16進制不合法.n”);
exit(0);
}
p++;}
printf(“相應的10進制數是:%dn”,sum);} 9.編寫一個小函數,其功能是計算兩個整數的平均值,該函數要在主函數中調用。
#include
avg=average(x,y);
printf(“%d,%d的平均值是:%.2fn”,x,y,avg);}
float average(int x,int y)
{ return(x+y)/2.0;}
10.有N(N用宏定義為符號常量)個元素的一維整型數組,該數組中各元素值從鍵盤隨機輸入。然后,將這個整型數組中的值逆序存放。例如,原來5個元素的順序為8、1、4、6、5,逆序之后各元素的值是5、6、4、1、8 #define N 5 #include
printf(“輸入%d個整數,用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“數組原來的值是:n”);for(i=0;i printf(“%dt”,a[i]); for(i=0;i t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;} printf(“n逆序之后數組的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n”);} 11.有N(N用宏定義為符號常量)個元素的一維整型數組,該數組中各元素值從鍵盤隨機輸入。然后,對該數組元素進行由小到大排序(要求,該功能用函數實現),輸出數組中各元素值。最后,從鍵盤隨機輸入一個整數,并把該整數插入上述數組中(該功能用函數實現),使得插入該整數后的數組仍然有序,輸出數組中各元素的值。#define N 5 #include int i,x;void sort(int array[],int n);void insert(int array[],int n,int x); printf(“輸入%d個整數,用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); sort(a,N); /*調用sort對數組進行排序*/ printf(“n升序排序之后數組的值是:n”);for(i=0;i printf(“%d ”,a[i]); printf(“n輸入一個x值插入到數組中:n”);scanf(“%d”,&x); insert(a,N,x); printf(“n插入%d之后數組的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”);} void sort(int array[],int n)/*用選擇法對數組array升序排序*/ { int i,j,t,min; for(i=0;i min=i; for(j=i+1;j if(array[j] min=j; if(min!=i) { t=array[i]; array[i]=array[min]; array[min]=t; } } } void insert(int array[],int n,int x){ int i,pos; for(i=0;i pos=i; for(i=n-1;i>=pos;i--) array[i+1]=array[i]; array[pos]=x;} 12.有一整型數組,N(N用宏定義為符號常量)個元素,該數組中各元素值從鍵盤隨機輸入。從鍵盤隨機輸入一個整數x,刪除該數組中值與x相同的所有元素(該功能用函數實現),輸出數組中各元素的值。#define N 5 #include printf(“輸入%d個整數,用空格或回車分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“數組原來的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n請輸入要刪除的值x:n”);scanf(“%d”,&x); n=delet(a,N,x); /*n值是刪除與x相同的元素后,數組剩余元素的個數。*/ printf(“刪除%d之后數組的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”); } int delet(int a[],int n,int x){ int i,j; for(i=0,j=0;i if(a[i]!=x) a[j++]=a[i]; return j;} 13.從鍵盤隨機輸入一字符串,將所有ASCII值為偶數的字符輸出。例如:輸入abc123,輸出結果是b2(因為b的ASCII值是98,2的ASCII值是50,其他字符的ASCII值都是奇數) #include printf(“輸入字符串:n”);gets(str); printf(“ASCII碼是偶數的字符有:”);for(i=0;str[i];i++) if(str[i]%2==0)putchar(str[i]); printf(“n”);} 14.從鍵盤輸入兩個字符串s1,s2,把s2連接到s1的末尾。不能用strcat函數 #include printf(“輸入兩個字符串,輸入回車鍵結束:n”);gets(str1);gets(str2); mystrcat(str1,str2); printf(“連接在一起的字符串是:n”);puts(str1); } void mystrcat(char *p1,char *p2){ while(*p1)p1++;while(*p2) *p1++=*p2++;*p1='
主站蜘蛛池模板:
亚洲愉拍自拍欧美精品|
狠狠综合久久综合中文88|
亚洲精品国偷拍自产在线|
蜜臀av福利无码一二三|
人妻少妇精品无码专区二区|
色8久久人人97超碰香蕉987|
永久免费精品精品永久-夜色|
精品一二三区久久aaa片|
久久精品国产99久久久古代|
免费人妻精品一区二区三区|
久久日本片精品aaaaa国产|
国内精品久久人妻朋友|
人人妻人人爽人人做夜欢视频九色|
99无码熟妇丰满人妻啪啪|
久久久综合九色合综国产精品|
国产特黄级aaaaa片免|
亚洲va中文字幕无码一二三区|
午夜福利片国产精品|
波多野结衣在线播放|
顶级少妇做爰视频在线观看|
亚洲精品成人久久电影网|
亚洲乱妇熟女爽到高潮的片|
三上悠亚在线日韩精品|
欧美成免费a级毛片|
国产三区在线成人av|
国产又爽又刺激的视频|
国产亚洲精品一区在线播放|
日本极品少妇videossexhd|
美女裸奶100%无遮挡免费网站|
欧美黑人巨大videos精品|
久久久人人人婷婷色东京热|
成人精品一区二区三区电影|
久久99久久99精品免观看|
国产精品亚洲综合一区在线观看|
国产精品人妻久久久久|
亚洲欧美日韩在线一区|
色综合久久无码五十路人妻|
被灌满精子的少妇视频|
人妻丰满被色诱中文字幕|
人人人妻人人澡人人爽欧美一区|
野狼第一精品社区|