C語言:
借用C中的malloc/free
#include "stdlib.h"
int main()
{
int m, n;
int i, j;
int **p;
scanf("%d%d", &m, &n); //請輸入數組行和列
p = (int**)malloc(sizeof(int*)*m); //開闢行
for (i = 0; i < m; i++)
{
*(p + i) = (int*)malloc(sizeof(int)*n);//開闢列
}
//輸入數據
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf("%d", &p[i][j]);
//輸出數據
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%3d ", p[i][j]);
}
printf("\n");
}
//釋放開闢的二維空間
for (i = 0; i < m; i++)
free(*(p + i));
system("pause");
return 0;
}
C++:
借用C++中的new/delete
#include "stdlib.h"
#include <iostream>
using namespace std;
int main()
{
int m, n;
//cout << "請輸入行和列:";
cin >> m >> n;
//動態開闢空間
int **p = new int*[m]; //開闢行
for (int i = 0; i < m; i++)
p[i] = new int[n]; //開闢列
//cout << "請輸入數據:";
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
cin >> p[i][j];
//cout << "輸出數據:" << endl;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
cout << p[i][j];
cout << endl;
}
//釋放開闢的資源
for (int i = 0; i < m; i++)
delete[] p[i];
delete[] p;
system("pause");
return 0;
}
STL中的vector
#include "stdlib.h"
#include <iostream>
#include<vector>
#include <iomanip>
using namespace std;
int main()
{
int m, n;
//cout << "請輸入行和列:";
cin >> m >> n;
//注意下面這一行:vector <int後兩個 "> "之間要有空格!否則會被認爲是重載 "> > "。
vector<vector<int> > p(m, vector<int>(n));
//cout << "請輸入數據:";
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
cin >> p[i][j];
//cout << "輸出數據:" << endl;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
cout << setw(3) << p[i][j];
cout << endl;
}
system("pause");
return 0;
}
多行輸入,Ctrl+Z可退出
int main()
{
int n, m;
vector<double> test;
while (cin>>n>>m)//循環多行輸入,回車換行,Ctrl+Z可結束循環
{
test.push_back(qiuhe(n, m));
}
for (int i = 0; i < test.size(); ++i)
{
cout << fixed << setprecision(2) << test[i] << endl;
}
return 0;
}
Ctrl+Z在Windows下爲文件結束符EOF(End of File),Unix/Linux下爲組合鍵Ctrl+D
scanf函數的原型是返回輸入的個數:
int test2 = scanf("%d%d", &n, &m);//test2 =2
輸出小數,保留兩位精度
http://www.cplusplus.com/reference/iomanip/setprecision/
// setprecision example
#include <iostream> // std::cout, std::fixed
#include <iomanip> // std::setprecision
using namespace std;
int main () {
double f =3.14159;
cout << setprecision(5) << f << '\n'; //3.1416
cout << setprecision(9) << f << '\n'; //3.14159
cout << fixed;
cout << setprecision(5) << f << '\n'; //3.14159
cout << setprecision(9) << f << '\n'; //3.141590000
return 0;
}
printf("%.2f\n", test[i]);
//cout << fixed << setprecision(2) << test[i] << endl;
%f 對應 float
%lf 對應 double
%Lf 對應 long double
%e以科學計數法顯示
%g在%e和%f中擇短顯示
輸出動態長度的數字,空格間隔,回車完成輸入
#include <iostream>
#include <vector>
// #include <stdlib.h>
// #include <stdio.h>
using namespace std;
int main()
{
vector<int> numbers;
while (1)
{
int temp;
cin >> temp;
// scanf("%d", &temp);
numbers.push_back(temp);
char s = cin.get(); //s用來接收是否是回車
// s = getchar(); //s用來接收是否是回車
if (s == '\n')
{
break;
}
}
for (int i = 0; i < numbers.size(); i++)
{
cout << numbers[i] << " ";
}
system("pause");
return 0;
}