c++ 程式設計題總結
C++題目總結
型別一:求和
1、求和:S= 1+ 1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+50)
#include <iostream>
using namespace std;
int main()
{
float s=1;
int i,item=1;
for (i=2;i<=50;i++)
{
item+=i;
s+=1.0/item;
}
cout<<"S= 1+ 1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+50)= "<<s<<endl;
return 0;
}
2、用公式 e=1+1/1!+1/2!+1/3!+…,求e的近似值,直到最後一項的絕對值小於10-7為止。
#include <iostream>
using namespace std;
int main()
{
float e=1;
int i=1,item=1;
for (;item>1e-7;)
{
e+=1.0/item;
i++;
item*=i;
}
cout<<"e=1+1/1!+1/2!+1/3!+…= "<<e<<endl;
return 0;
}
3、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。
#include <iostream>
using namespace std;
int main()
{
int s=0, i,n,a,item=0;
cout<<"輸入數字a(1~9之間): ";
cin>>a;
cout<<"輸入加法項數 n(>=1): ";
cin>>n;
cout<<"s=a+aa+aaa+aaaa+aa...a= ";
for (i=1;i<=n;i++)
{
item=item*10+a;
s+=item;
if (i>1)
cout<<"+";
cout<<item;
}
cout<<" = "<<s<<endl;
return 0;
}
4、古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
#include <iostream>
using namespace std;
int main()
{
int fib[45]={1,1},i,n;
cout<<"輸入月份 n ( 3=<n<=45 ): ";
cin>>n;
for (i=2;i<n;i++)
{
fib[i]=fib[i-2]+fib[i-1];
}
for (i=0;i<n;i++)
{
cout<<"第 "<<i+1<<" 月,兔子總對數是:"<<fib[i]<<endl;
}
return 0;
}
型別二:圖形
1、輸出9*9乘法口訣。
#include <iostream>
using namespace std;
int main()
{
int i,j;
cout<<"九九乘法表"<<endl;
for (i=1;i<=9;i++)
{
for( j=1 ; j<=i ; j++ )
cout<<i<<"*"<<j<<"="<<i*j<<" ";
cout<<endl;
}
return 0;
}
2、輸出以下圖案。
*
***
*****
*******
#include <iostream>
using namespace std;
int main()
{
int i,j;
for (i=1;i<=4;i++)
{
for( j=1;j<=4-i;j++)
cout<<" ";
for( j=1;j<=2*i-1;j++ )
cout<<"*";
cout<<endl;
}
return 0;
}
型別三:陣列
1、求一維陣列中最大元素(共100個元素)的下標。
#include <iostream>
using namespace std;
int main()
{
int a[100]
int i,maxID=0;
cout<<"輸入陣列的資料:"<<endl;
for (i=0;i<100;i++)
cin>>a[i];
for (i=1;i<100;i++)
if (a[i]>a[maxID]) maxID=i;
cout<<"陣列中最大元素的資料是:"<<a[maxID]<< " ,其元素下標為:"<<maxID<<endl;
return 0;
}
2、一班有50名學生,現統計該班某科課程成績的最高分,最低分,平均分,不及格人數.
#include <iostream>
using namespace std;
int main()
{
float a[50];
int i,number=0;
float max,min,average=0;
cout<<"輸入學生成績:"<<endl;
for (i=0;i<50;i++)
cin>>a[i];
max=min=a[0];
for (i=1;i<50;i++)
{
average+=a[i];
if (a[i]> max) max=a[i];
if (a[i]< min) min =a[i];
if (a[i]< 60 ) number++;
}
average/=50;
cout<<"最高成績是:"<<max<<endl;
cout<<"最低成績是:"<<min<<endl;
cout<<"平均成績是:"<<average<<endl;
cout<<"不及格人數有:"<<number<<endl;
return 0;
}
3、有一個已經排好序的陣列。現輸入一個數,要求按原來的規律將它插入陣列中。
#include <iostream>
using namespace std;
int main()
{
int a[11]={1,3,5,7,8,12,55,56,59,80};
int x,i,j,sort=0; // sort 排序規律,預設為0(升序)
int z=0; // 插入位置
cout<<"輸出原陣列:";
for(i=0;i<10;i++)
cout<<a[i]<<",";
cout<<endl;
cout<<"輸入要插入的資料:";
cin>>x;
// 判斷排序規律, 0 升序,1 降序
for (i=0;i<9;i++)
if (a[i]>a[i+1])
{ sort=1; bereak; }
// 尋找插入資料位置(下標) z
for (i=0;i<10;i++)
{
if ( sort )
if (x>a[i])
{ z=i;
break;
}
else
if (x<a[i])
{ z=i;
break;
}
}
if ( i== 10) z=i;
// 移動z位置及其之後的資料(向後一位)
for(i=9;i>z;i--)
a[i+1]=a[i];
a[z]=x;
cout<<"輸出新陣列:";
for(i=0;i<=10;i++)
cout<<a[i]<<",";
cout<<endl;
return 0;
}
4、用氣泡排序方法,將10個成績按從大到下的順序排序。(本題略,參見教材)
5、從鍵盤輸入10個數,用插入法排序對它們按從小到大的次序排序。
#include <iostream>
using namespace std;
void InsertSort(int x, int n , int * p);
int main()
{
int a[11];
int x,i,j;
int z=0; // 插入位置
cout<<"輸入任意10個整數構建陣列:";
for(i=0;i<10;i++)
cin>>a[i];
cout<<endl;
for(i=1;i<10;i++)
InsertSort(a[i],i,a);
cout<<"輸出新陣列:";
for(i=0;i<=10;i++)
cout<<a[i]<<",";
cout<<endl;
return 0;
}
void InsertSort(int x , int n, int * p ) // x-資料,n-陣列當前長度,p-指標
{
int i , z=0 ; // 預設為陣列頭
// 尋找插入資料位置(下標) z
for (i=0;i<10;i++)
{
if (x<p[i])
{ z=i;
break;
}
}
if ( i==n ) z=i ;
// 移動z位置及其之後的資料(向後一位)
for(i=n-1;i>z;i--)
p[i+1]=p[i];
p[z]=x;
}
6、求二維陣列中最大元素的值及在陣列中的位置。
#include <iostream>
using namespace std;
int main()
{
int a[5][5];
int max,i,j,row,col;
cout<<"輸入任意25個整數構建陣列:";
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<endl;
row=0;
col=0;
max=a[row][col]; //假設最大數是第一個數
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if (a[i][j])>max )
{ row=i;
col=j;
max=a[i][j];
}
cout<<"陣列中最大資料是:"<<max<<",其位置是:"<< "("<<row<<","<<col<<")"<<endl;
return 0;
}
7、給定一個二維五五陣列,求主對角元素的和。
#include <iostream>
using namespace std;
int main()
{
int a[5][5];
int sum=0,i,j;
cout<<"輸入任意25個整數構建陣列:";
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<endl;
for(i=0;i<5;i++)
sum+=a[i][i]+a[4-i][i];
sum=sum-a[5/2][5/2];
cout<<"陣列對角線的和是:"<<sum<<endl;
return 0;
}
大體上必須清楚的:
1)程式結構是三種: 順序結構 , 迴圈結構(三個迴圈結構), 選擇結構(if 和 switch)
2)讀程式都要從main()入口, 然後從最上面順序往下讀(碰到迴圈做迴圈,碰到選擇做選擇)。
3)計算機的資料在電腦中儲存是以 二進位制的形式. 資料存放的位置就是 他的地址.
4)bit是位 是指為0 或者1。 byte 是指位元組, 一個位元組 = 八個位.
5)一定要記住 二進位制 如何劃成 十進位制。
概念常考到的:
1、編譯預處理不是C語言的一部分,不再執行時間。C語言編譯的程式稱為源程式,它以ASCII數值存放在文字檔案中。
2、每個C語言程式中main函式是有且只有一個。
3、在函式中不可以再定義函式。
4、演算法的是一定要有輸出的,他可以沒有輸入。
5、break可用於迴圈結構和switch語句。
6、逗號運算子的級別最低
第一章
1)合法的使用者識別符號考查:
合法的要求是由字母,數字,下劃線組成。有其它元素就錯了。
並且第一個必須為字母或則是下劃線。第一個為數字就錯了。
關鍵字不可以作為使用者識別符號號。main define scanf printf 都不是關鍵字。迷惑你的地方If是可以做為使用者識別符號。因為If中的第一個字母大寫了,所以不是關鍵字。
2)實型資料的合法形式:
2.333e-1 就是合法的,且資料是2.333×10-1。
考試口訣:e前e後必有數,e後必為整數。.
3)字元資料的合法形式::
'1' 是字元佔一個位元組,"1"是字串佔兩個位元組(含有一個結束符號)。
'0' 的ASCII數值表示為48,'a' 的ASCII數值是97,'A'的ASCII數值是65。
4) 整型一般是兩個位元組, 字元型是一個位元組,雙精度一般是4個位元組:
考試時候一般會說,在16位編譯系統,或者是32位系統。碰到這種情況,不要去管,一樣做題。掌握整型一般是兩個位元組, 字元型是一個位元組,雙精度一般是4個位元組就可以了。
5)轉義字元的考查:
在程式中 int a = 0x6d,是把一個十六進位制的數給變數a 注意這裡的0x必須存在。
在程式中 int a = 06d, 是一個八進位制的形式。
在轉義字元中,’\x6d’ 才是合法的,0不能寫,並且x是小寫。
‘\141’ 是合法的, 0是不能寫的。
‘\108’是非法的,因為不可以出現8。
6)算術運算子號的優先級別:
同級別的有的是從左到右,有的是從右到左。
7)強制型別轉換:
一定是 (int)a 不是 int(a),注意型別上一定有括號的。
注意(int)(a+b)和(int)a+b 的區別。前是把a+b轉型,後是把a轉型再加b。
8)表示式的考查:
是表示式就一定有數值。
賦值表示式:表示式數值是最左邊的數值,a=b=5;該表示式為5,常量不可以賦值。
自加、自減表示式:假設a=5,++a(是為6), a++(為5);
執行的機理:++a 是先把變數的數值加上1,然後把得到的數值放到變數a中,然後再用這
個++a表示式的數值為6,而a++是先用該表示式的數值為5,然後再把a的數值加上1為6,
再放到變數a中。 進行了++a和a++後在下面的程式中再用到a的話都是變數a中的6了。
考試口訣:++在前先加後用,++在後先用後加。
逗號表示式:優先級別最低 ;表示式的數值逗號最右邊的那個表示式的數值。
(2,3,4)的表示式的數值就是4。
9)位運算的考查:
會有一到二題考試題目。
總的處理方法:幾乎所有的位運算的題目都要按這個流程來處理(先把十進位制變成二進位制再變成十進位制)。
例1: char a = 6, b;
b = a<<2; 這種題目的計算是先要把a的十進位制6化成二進位制,再做位運算。
例2: 一定要記住,
例3: 在沒有捨去資料的時候,<<左移一位表示乘以2;>>右移一位表示除以2。
10)018的數值是非法的,八進位制是沒有8的,逢8進1。
11)%符號兩邊要求是整數。不是整數就錯了。
12) 三種取整丟小數的情況:
1、int a =1.6;
2、(int)a;
3、
第二章
1)printf函式的格式考查:
%d對應整型;%c對應字元;%f對應單精度等等。寬度的,左對齊等修飾。
%ld對應 long int;%lf 對應double。
2)scanf函式的格式考察:
注意該函式的第二個部分是&a 這樣的地址,不是a;
Scanf(“%d%d%*d%d”,&a,&b,&c); 跳過輸入的第三個資料。
3)putchar ,getchar 函式的考查:
char a = getchar() 是沒有引數的,從鍵盤得到你輸入的一個字元給變數a。
putchar(‘y’)把字元y輸出到螢幕中。
4)如何實現兩個變數x ,y中數值的互換(要求背下來)
不可以把 x=y ,y=x; 要用中間變數 t=x;x=y;y=t。
5)如何實現保留三位小數,第四位四捨五入的程式,(要求背下來)
這個有推廣的意義,注意 x = (int)x 這樣是把小數部分去掉。
第三章
特別要注意:c語言中是用非0表示邏輯真的,用0表示邏輯假的。
1)關係表示式:
表示式的數值只能為1(表示為真),或0(表示假)
當關系的表達是為真的時候得到1。如 9>8這個是真的,所以表示式的數值就是1;
2)邏輯表示式:
只能為1(表示為真),或0(表示假)
a) 共有&& || ! 三種邏輯運算子號。
b) !>&&>|| 優先的級別。
c) 注意短路現象。考試比較喜歡考到。
d) 要表示 x 是比0大,比10小的方法。0<x<10是不可以的(一定記住)。是先計算0<x 得到的結果為1或則0;再用0,或1與10比較得到的總是真(為1)。所以一定要用(0<x)&&(x<10)表示比0大比10小。
3)if 語句
else 是與最接近的if且沒有else的相組合的。
4)條件表示式:
表示式1 ?表示式2 :表示式3
注意是當非0時候是表示式2的數值,當為0是就是表示式2的數值。
考試口訣:真前假後。
5)switch語句:
a)一定要注意 有break 和沒有break的差別,書上(34頁)的兩個例子,沒有break時候,只要有一個case匹配了,剩下的都要執行,有break則是直接跳出了swiche語句。
b)switch只可以和break一起用,不可以和continue用。
第四章
1)三種迴圈結構:
a)for() ; while(); do- while()三種。
b)for迴圈當中必須是兩個分號,千萬不要忘記。
c)寫程式的時候一定要注意,迴圈一定要有結束的條件,否則成了死迴圈。
d) do-while()迴圈的最後一個while();的分號一定不能夠丟。(當心上機改錯)
2) break 和 continue的差別
記憶方法:
break:是打破的意思,(破了整個迴圈)所以看見break就退出真個一層迴圈。
continue:是繼續的意思,(繼續迴圈運算),但是要結束本次迴圈,就是迴圈體內剩下的語句不再執行,跳到迴圈開始,然後判斷迴圈條件,進行新一輪的迴圈。
3)巢狀迴圈
就是有迴圈裡面還有迴圈,這種比較複雜,要一層一層一步一步耐心的計算,一般記住兩層是處理二維陣列的。
4) while((c=getchar())!=’\n’) 和 while(c=getchar() !=’\n’)的差別
先看a = 3 != 2 和(a=3)!=2 的區別:
相關推薦
c++ 程式設計題總結
C++題目總結 型別一:求和 1、求和:S= 1+ 1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+50) #include <iostream> using nam
c/c++筆試中程式設計題總結
1.請實現字串右迴圈移位函式,比如:“abcdefghi”迴圈右移2位就是“hiabcdefg”. 函式原型:void RightLoopMove(char *pStr, unsigned short steps) 函式引數說明: pStr: Point to a ‘\0’
(轉)11條最全面的C/C++程式設計規範總結
一、檔案排版方面 1. 包含標頭檔案 • 先系統標頭檔案,後用戶標頭檔案。 • 系統標頭檔案,穩定的目錄結構,應採用包含子路徑方式。 • 自定義標頭檔案,不穩定目錄結構,應在dsp中指定包含路徑。 • 系統標頭檔案應用:#include <xxx.h> • 自定義同
C++程式設計題練習程式碼筆記
從文字檔案old.txt讀取字元,將其中的數字字元‘0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’ 分別用英文字母字元‘Z’、‘Y’、‘X’、‘W’、‘V’、‘U’、‘T’、‘S’、‘R’、‘Q’替換,其餘字元不變,結果寫入文字檔案new.txt,並分別將兩個
愛奇藝2018秋季校招C++ [程式設計題]奇異數
連結:https://www.nowcoder.com/questionTerminal/7442938f5012486499ddd61ce16f9086 來源:牛客網 如果一個數字滿足以下條件,我們就稱它為奇異數: 1、這個數字至少有兩位 2、這個數的最低兩位是相同的 比如: 1488是
愛奇藝2018秋招C++ [程式設計題]奶牛編號
連結:https://www.nowcoder.com/questionTerminal/b96da2bd7a574699b4ceaaa7819cf65b 來源:牛客網 牛牛養了n只奶牛, 牛牛想給每隻奶牛編號, 這樣就可以輕而易舉地分辨它們了。 每個奶牛對於數字都有自己的喜好, 第i只奶牛想要
愛奇藝2018秋招C++ [程式設計題]紅和綠
連結:https://www.nowcoder.com/questionTerminal/4ea618c551404efc8299c2eaac733329 來源:牛客網 牛牛有一些排成一行的正方形。每個正方形已經被染成紅色或者綠色。牛牛現在可以選擇任意一個正方形然後用這兩種顏色的任意一種進
一道考驗你設計能力的C++程式設計題
看到這道題,我們就開始設計這個影象類了,按照面向物件“依賴倒置”的設計原則,我們站在客戶的立場,來考慮我們這個類該提供哪些介面,很快我們設計瞭如下一個類: class CSimplePicture { public: CSimplePicture(char* init[], i
C/C++程式設計題之計算一個數字的立方根
計算一個數字的立方根方法:使用對數和指數組合的方法表示立方根。loga(b)表示 以a為底,b的對數,a(m)表示a的m次方。我們知道a(loga(b))等於b,並且nloga(b)等於log以a為底b的n次方。結合這兩個性質,我們可以得到任何一個數的任何一個次冪的值,自然
c/c++程式設計經驗總結及VS2013使用注意事項
1、fatal error LNK1112: 模組計算機型別“X86”與目標計算機型別“x64”衝突 可能的解決方案:專案名右鍵,點選清理。 2、windows下檢視exe和dll依賴及版本位數 解決方案:在vs安裝目錄下,我的路徑為為D:\vs2013\Common7\Tools\Shor
C++程式設計題最常用函式彙總
內容會持續更新,有錯誤的地方歡迎指正,謝謝! 1.型別轉化 string轉int的方式 採用標準庫cstdlib中atoi函式,<cstdlib>是C++裡面的一個常用函式庫, 等價於C中的<stdlib.h>,但不需引入,
二叉樹相關程式設計題總結
關於二叉樹的五道面試題的總結 求二叉樹的最遠兩個結點的距離; 由前序遍歷和中序遍歷重建二叉樹; 判斷一棵樹是否是完全二叉樹; 求二叉樹兩個節點的最近公共祖先; 將二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
C程式設計題2
1.寫一個用矩陣法求定積分的通用函式,求#include<stdio.h> #include<math.h> float integral(float a,float b,int n){ int i; float x,h,s; h=(b-1)/n; x
c/c++程式設計題 之 猴子選大王(陣列、連結串列兩種方法)
一群猴子要選新猴王。新猴王的選擇方法是:讓N只候選猴子圍成一圈,從某位置起順序編號為1-N號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下一隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的一隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?
C/C++程式設計題之求兩個數的最大公約數和最小公倍數
求兩個數的最大公約數和最小公倍數 方法:最大公約數使用輾轉相除法求,最小公倍數等於兩個數的乘積/最大公約數 輾轉相除法的原理:用輾轉相除法求幾個數的最大公約數,先求出其中任意兩個數的最大公約數,再
阿里秋招C/C++程式設計題
題目: 伺服器都有上下游依賴關係,輸入第一行表示伺服器的數量,和依賴關係的個數。如下表示有5臺伺服器,4個依賴關係。 接下來的5行是每臺伺服器的啟動延遲(單位ms),最後四行是伺服器之間的依賴關係(5臺伺服器用數字0-4表示)。 不考慮存在環。 輸出要求
C/C++程式設計題之IP地址轉整數
/* 功能:將輸入的string型別的IP資訊轉換為string型別 * 輸入:string型別的IP資訊 * 輸出:DWORD結果,正常返回解析結果值,異常時,dwIP為0 * 返回:返回解析
C#程式設計精華總結
C#學習總結C#簡介:1、C#是一種最新的、面向物件的程式語言2、C#使得程式設計師可以在Microsoft開發的最新的.NET平臺上快速地編寫Windows應用程式3、而且Microsoft .NET提供了一系列的工具和服務應用在應用程式的開發中4、C#語言是是建立在Mic
C程式設計題:求高次方數的尾數
例:編寫程式求出13的13次方的最後三位數。 首先分析題意,我們可以定義兩個變數用於儲存次方底數和指數,再用一個for迴圈對底數進行指數次的自乘,最後擷取最後三位數即可。然而這種方式卻行不通,因為計算
c++程式設計題 求數列的和
最近心好累,行為識別模型明明訓練的好好的,收斂也正常,Avg loss也很小,就是測試效果不好(接近沒效果)!深度學習之路真是道阻且長啊,求求了~~ 偌大的世界,能給我安慰的只有漂亮姐姐了,哈哈哈哈。(還有c++,我愛你。) 題目描述 數列的第一項為n,以後各項為前