第8週中級練習
本週作業應使用指針和函數實現,也可動態申請空間。
依照學術誠信條款,我保證此作業是本人獨立完成的。
溫馨提示:
1.本次作業屬於Online Judge題目,提交後由系統即時判分。
2.學生可以在作業截止時間之前不限次數提交答案,系統將取其中的最高分作爲最終成績。
1IP地址轉換1(10分)
題目內容:
編寫程序,將十進制IP地址轉換爲二進制IP地址。
例如輸入:202.117.0.20,輸出:11001010011101010000000000010100
輸入格式:
字符串形式的十進制點分IP地址。
輸出格式:
字符串表示的32位二進制IP地址
輸入樣例:
202.117.0.20
輸出樣例:
11001010011101010000000000010100
時間限制:500ms內存限制:32000kb
C++
#include<iostream>
using namespace std;
void intput(int *a) {
for (int i = 0;i < 4;++i) {
cin >> a[i];
cin.get();// != '.') || ((i == 3 && a[i] < 1) || a[i] < 0 || a[i]>255))
// return 1;
}
// return 0;
}
void coutip32(int *a) {
for (int i = 0;i < 4;++i)
for (int j = 7;j >= 0;--j)
cout << (a[i] >> j & 1);
}
int main(){
int a[4];
intput(a);
coutip32(a);
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 256kb
2
用例2通過 3ms 360kb
2
用例3通過 3ms 360kb
2
用例4通過 2ms 256kb
2
用例5通過 2ms 360kb
2
提交答案本次得分/總分:10.00/10.00分
2IP地址轉換2(10分)
題目內容:
編寫程序,將32位二進制IP地址轉換爲十進制點分IP地址。
例如輸入:11001010011101010000000000010100,輸出202.117.0.20
輸入格式:
字符串表示的32位二進制IP地址
輸出格式:
字符串形式的十進制點分IP地址。
輸入樣例:
11001010011101010000000000010100
輸出樣例:
202.117.0.20
時間限制:500ms內存限制:32000kb
C++
#include<iostream>
#include<cmath>
using namespace std;
void coutip32(char *a) {
int n=0,k=0;
for (int i = 0;i <4;++i) {
for (int j = 7;j >=0;--j,++k) {
if(a[k]=='1') n+=pow(2,j);
}
cout<<n;
if(i<3) cout <<".";
n=0;
}
}
int main(){
char a[33]={"11001010011101010000000000010100"};
cin>>a;
coutip32(a);
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 3ms 360kb
2
用例2通過 2ms 372kb
2
用例3通過 2ms 376kb
2
用例4通過 3ms 360kb
2
用例5通過 3ms 360kb
2
提交答案本次得分/總分:10.00/10.00分
3找數據(10分)
題目內容:
編寫程序,找出一個字符串中的所有數據然後加9輸出(實數或整數)。
例如,China Daily | Updated: 2020-04-10 08:5.9,
輸出:
2029
5
-1
17
14.9
單個正號或負號不算數據,但+0,-0都是數據。字符串總長度不超過200.
輸入格式:
一個帶空格的字符串。
輸出格式:
若干行數據。
輸入樣例:
China Daily | Updated: 2020-04-10 08:5.9
輸出樣例:
2029
5
-1
17
14.9
時間限制:500ms內存限制:32000kb
C++
#include<iostream>
#include<cmath>
using namespace std;
int main() {
char a[110] = { "China Daily | Updated: 2020-04-10 08:5.9," };
cin.getline(a, 100);
int bl = 0, fh = 1, i = 0, j = 1;
double suz = 0;
for (;;) {
if (a[i] == '-' ) {
fh = -1;++i;
}
while (a[i] >= '0'&&a[i] <= '9') {
bl = 1;
suz = 10 * suz + a[i] - '0';
i++;
}
if (a[i] == '.') {
int t = 1;
i++;bl = 1;
while (a[i] >= '0'&&a[i] <= '9') {
suz += (a[i] - '0') / pow(10, t++);
i++;
}
}
if (bl)cout<<suz*fh+9<< endl;
fh = 1;bl = 0;suz = 0;
if (a[i] == '.' || a[i] == '-')continue;
if (a[i++] == '\0')break;
}
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 25ms 372kb
2
用例2通過 3ms 368kb
2
用例3通過 18ms 368kb
2
用例4通過 3ms 368kb
2
用例5通過 19ms 368kb
2
提交答案本次得分/總分:10.00/10.00分
4指針實現矩陣相加(10分)
題目內容:
編寫函數,使用指針傳遞和指針運算,實現兩個矩陣的和。
編寫主程序,輸入兩個矩陣,調用函數求和,在主函數中輸出計算結果。每個矩陣的元素總個數不超過100,但行數、列數不定。矩陣元素爲整數。
輸入格式:
先輸入兩個整數,表示矩陣的行數和列數,然後分別依次按行輸入兩個矩陣的元素。
輸出格式:
兩個矩陣的和,按行、列顯示,用一個空格隔開,每行末尾無空格。
輸入樣例:
2 4
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
輸出樣例:
2 4 6 8
10 12 14 16
時間限制:500ms內存限制:32000kb
C++
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int *a=new int[n*m],*b=new int[n*m],*ap=a,*bp=b;
for(;ap<a+m*n;ap++) cin>>*ap;
int i=1;
for(;bp<b+m*n;bp++,a++,i++){
cin>>*bp;
cout<<*bp+*a;
if(i%m)cout<<" ";
else cout<<endl;
}
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 3ms 356kb
2
用例2通過 3ms 360kb
2
用例3通過 3ms 364kb
2
用例4通過 3ms 360kb
2
用例5通過 3ms 364kb
2
提交答案本次得分/總分:10.00/10.00分
5指針實現矩陣相乘(10分)
題目內容:
編寫函數,使用指針傳遞和指針運算,實現兩個矩陣的乘積。
編寫主程序,輸入兩個矩陣,調用函數計算它們的乘積,在主函數中輸出計算結果。每個矩陣的元素總個數不超過100,但行數、列數不定。矩陣元素爲整數。
輸入格式:
先輸入兩個整數,表示矩陣的行數和列數,然後按行輸入第一個矩陣的元素。
再輸入兩個整數,表示第二個矩陣的行數和列數,然後按行輸入第二個矩陣的元素。
輸入保證第一個矩陣的列數和第二個矩陣的行數相等。
輸出格式:
兩個矩陣的乘積,按行、列顯示,每行末尾無空格。
輸入樣例:
2 3
1 1 0
2 1 1
3 2
1 2
2 1
1 0
輸出樣例:
3 3
5 5
時間限制:500ms內存限制:32000kb
C++
#include <iostream>
using namespace std;
int main(){
int m,n,p,q;
cin >> m >> n;
int *a=new int[m*n],*ap=a;
for(;ap<a+m*n; ++ap)
cin >> *ap;
cin >> p >> q;
int *b=new int[p*q],*bp=b;
for(;bp<b+p*q; ++bp)
cin >> *bp;
int *c=new int(m*q);
for(int i = 0; i < m; ++i) {
for(int j = 0; j < q; ++j) {
*(c+j+i*q) = 0;
for(int k = 0; k < n; ++k)
*(c+j+i*q) += *(a+i*n+k) *(*(b+j+q*k));
}
}
for(int i = 0;i<m;++i){
for(int j = 0; j < q; ++j) {
cout << *(c+j+i*q);
if(j<q-1)cout<< " ";
}
cout << endl;
}
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 256kb
2
用例2通過 2ms 372kb
2
用例3通過 3ms 256kb
2
用例4通過 2ms 256kb
2
用例5通過 2ms 480kb
2
提交答案本次得分/總分:10.00/10.00分