今天無聊來練習 C++ console 小黑窗
使用IDE Dev C++ 5.11
以下代碼為 C++ 開新專案 Console 內建的Hello World 範本程式碼
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Hello world!\n";
}
以上代碼 會顯示Hello world!
但是網路上的 cout 範例 前面都不用加 std:
若不要std:: 必須改為
#include <iostream>
using namespace std; //<<加入這行
int main(int argc, char** argv) {
...
}
Hello World另一種寫法
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
cout << "Hello world!" << endl;
}
其中 endl 也是是std 成員 代表游標移到下一行 等於取代原本字串中的 /n
字串 輸入 輸出
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
char charry1[20];
cin >> charry1;
cout << charry1;
}
數字型態
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int number = 0;
cin >> number; //測試結果 輸入非數字 會自動變0
cout << number+1 << endl; //C++ 數字不用轉換字串即可印出
return 0;
}
if 練習
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int number = 0;
cin >> number;
if (number % 2 == 0) //除2等於0
{
cout << "偶數" ;
}
else
{
cout << "奇數" ;
}
return 0;
}
for 迴圈練習
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int i;
for (i = 0; i < 10; i++){
cout << i << endl;
}
return 0;
}
練習題目
https://tw.answers.yahoo.com/question/index?qid=20160927211623AAN7rQG&submit=y
C++,輸入整數n,印出1~n之間能被13整除之整數?
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int number = 0;
cin >> number;
int i;
for (i = 1; i <= number; i++){
if (i % 13 == 0) //除2等於0
{
cout << i << endl;
}
}
return 0;
}
單行註解 使用 //...
多行註解 /* ... */
暫停 system("pause");
知識+ 偶爾冒出這種題目還蠻好玩的 不會太難 可以學習 也能殺時間

你好,我是一個剛接觸c++的學生,我想請問要如何輸入一個整數 以及輸入要查詢的位元編號(由低至高為0~n) 來輸出所輸入整數所想要查詢位元的值??
這題目我看不太懂,甚麼是位元編號?可以舉例說明嗎? 假設你的位元編號的意思是 要查詢第幾個數字的位置 可以將整數轉為字串 再查詢字串的第N個字元 請參考以下原始碼 #include "stdio.h" #include <iostream> using namespace std; void int2str(int , char *); int main() { int n = 0; //整數 int n2 = 0; //位元 cin >> n; //輸入一整數 cin >> n2; //輸入位元編號 char s[64]; //宣告字串 int2str(n, s); //轉為字串 cout << s[n2] << endl; //輸出所輸入整數所想要查詢位元的值 } void int2str(int i, char *s) { //整數轉字串函數 sprintf(s,"%d",i); } 第一次輸入987654 第二次輸入3 輸出6
謝謝您的回覆,同時很抱歉沒有說清楚。 例如:25的二進位為11001,若輸入為整數25與0輸出為1;若輸入為25與1輸出為0; 若輸入為2與 2輸出為0;輸入為25與3輸出為1...依此類推。
#include <iostream> using namespace std; int main() { int n = 0; //整數 int n2 = 0; //位元 cin >> n; //輸入一整數 cin >> n2; //位元編號 int i=0; //迴圈用i while(n>0) { if (i == n2) { cout << n%2; break; } n=n/2; i++; } return 0; } 輸入25 輸出為 11001 << 輸出二進位值 43210 << 輸入位元編號
想請問可以請您解釋您所打這個迴圈的意思嗎? int i=0; //迴圈用i while(n>0) { if (i == n2) { cout << n%2; break; } n=n/2; i++; } return 0; }
由於題目是十進位轉二進位 十進位轉二進位的規則是 設 N(十進位) 要轉為二進位 取N除2的餘數 放到輸出 再把N改為 N除2 的商 一直反覆做到N除2的商為0 例如 十進位的7 要變成二進位的話 7除2的餘數為1 << 轉到輸出第一位數 7除2的商為3 //迴圈下一圈跑3 3除2的餘數為1 << 轉到輸出第二位數 3除2的商為1 //迴圈下一圈跑1 1除2的餘數為1 << 轉道輸出第三位數 1除2的商為0 //迴圈停止 所以7 轉為二進制輸出為 111 這段程式碼就是依照上面的邏輯做的 因為我是抄網路上的C++ 轉二進制 所以沒加註解 我把註解加上去 你在參考一下 while(n>0) //反覆做到N除2的商為0 { if (i == n2) //因為題目要的是 "第幾位元" 所以跑到第幾次(i) 等於 輸入的位元(n2) 就是解答 { cout << n%2; //n 除 2 的餘數 就是二進位的第N位元 break; //取到解答 迴圈中止 } n=n/2; //N每次除2 i++; //i 每次加1 = 跑第幾次迴圈 也可以說 跑到二進位第幾個位元 }
那我想問除了迴圈、陣列以外 還有其他方法嗎?
上面的解答沒有用到陣列喔 用陣列也可以做! 另外 轉二進制基本上都會用到迴圈 當然也有遞回的方式可以做 但比較複雜(我C++也是新手) 你也可以寫死 固定重複做幾次 不用迴圈做
我朋友是直接 cout<<"輸入數值:"; cin>>number; cout<<"第幾個位元:"; cin>>want; t=number>>want&1; cout<>want&1;
cout<2017-10-23 19:07 
抓狂小白 2017-10-23 19:58
首先 要感謝你這份解答 讓我又學到不少東西 我也是第一次知道C++有這種運算子 參考網址 http://billor.chsh.chc.edu.tw/IT/C/coperator.htm >> 這個是位元右旋運算子 & 位元運算子,類似於 and 運算 這個以下再跟你詳細解釋 cin cout 就是輸入輸出 應該不用解釋了 比較有問題的是這行 t=number>>want&1; 用中文的說法解釋是 把number 往右邊移want格 然後 and 1 假設 number = 25 want = 3 25 右移 3格 翻為二進位 就是 11001 往右移 3格 就變成 11 (圖示) 11001 OOXXX <<X的地方 因為右移 就不見了 O的地方留下來 然後and 1 11 and 1 = 1 所以答案是1 and 是邏輯運算 可以參考 https://zh.wikipedia.org/wiki/%E9%82%8F%E8%BC%AF%E9%96%98 為什麼要and 1呢 因為 11001 //number 43210 //want ↑ 你只要這個數字 而 and 1 可以只取到第一位數 (圖示) xxxx? 00001 <<二進位中的1 只會取到 ? 的位置 最後再幫你整理一次圖示 t=number>>want&1; 11001 //number 00011 //number>>want 00011 00001 //&1 ===== 00001 //答案
我朋友是直接 cout<<"輸入數值:"; cin>>number; cout<<"第幾個位元:"; cin>>want; t=number>>want&1; cout<>want&1;
cout<2017-10-23 19:08