學習筆記《計算機程序設計C++》第4週中級練習

第4週中級練習

依照學術誠信條款,我保證此作業是本人獨立完成的。

溫馨提示:

1.本次作業屬於Online Judge題目,提交後由系統即時判分。

2.學生可以在作業截止時間之前不限次數提交答案,系統將取其中的最高分作爲最終成績。

1矩陣原地轉置(10分)
題目內容:

編寫程序,將N(N<=10)階方陣(整型)原地轉置(只能使用一個二維數組),例如:

轉置前的方陣A

5 6 7 9

2 8 5 4

3 7 16 15

1 4 8 11

轉置後的方陣A

5 2 3 1

6 8 7 4

7 5 16 8

9 4 15 11

注意:轉置要使矩陣本身作轉置運算,而不僅是在屏幕顯示轉置效果。

輸入格式:

N+1行,第1行:數字N(10>=n>0);第2-(N+1)行:N階方陣的元素

輸出格式:

N行,轉置後的矩陣。每行數據間用一個空格隔開,末尾無空格。

輸入樣例:

4

5 6 7 9

2 8 5 4

3 7 16 15

1 4 8 11

輸出樣例:

5 2 3 1

6 8 7 4

7 5 16 8

9 4 15 11

時間限制:500ms內存限制:32000kb
C++

#include
using namespace std;
int a[100][100];
int main(){
int n;
cin>>n;
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
cin>>a[i][j];
for(int i=0;i<n;++i)
for(int j=i;j<n;++j){
int tmp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=tmp;
}
for(int i=0;i<n;++i){
for(int j=0;j<n-1;++j)
cout<<a[i][j]<<" ";
cout<<a[i][n-1]<<endl;
}
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 256kb
2
用例2通過 2ms 380kb
2
用例3通過 14ms 256kb
2
用例4通過 2ms 372kb
2
用例5通過 2ms 256kb
2
提交答案本次得分/總分:10.00/10.00分
2判斷對稱矩陣(10分)
題目內容:

判斷一個N階整型矩陣是否爲對稱矩陣。要求矩陣用一維數組存儲。

輸入格式:

N+1行,第1行:數字N(10>n>0);第2-(N+1)行:N階方陣的元素

輸出格式:

“Yes”或“No”

輸入樣例:

4

5 6 7 9

2 8 5 4

3 7 16 15

1 4 8 11

輸出樣例:

No

時間限制:500ms內存限制:32000kb
C++

#include
using namespace std;
int a[100][100];
bool isdcjj(int n){
for(int i=0;i<n;++i)
for(int j=i;j<n;++j){
if(a[i][j]!=a[j][i])
return 0;
}
return 1;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
cin>>a[i][j];
if(isdcjj(n))cout<<“Yes”;
else cout<<“No”;
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 232kb
2
用例2通過 2ms 364kb
2
用例3通過 7ms 256kb
2
用例4通過 2ms 236kb
2
用例5通過 3ms 236kb
2
提交答案本次得分/總分:10.00/10.00分
3去掉字符串末尾的空格(10分)
題目內容:

編寫程序,去掉字符串末尾的空格符。要求字符串用字符數組存放,不使用庫函數。結果要顯示原字符串和刪除末尾空格後的字符串。字符串長度不超過100.

輸入格式:

一個字符串

輸出格式:

兩行:第一行,原字符串;第二行,刪除末尾空格後的字符串。注意,將原字符串和刪除空格後的字符串均放到‘|’’|’中。

輸入樣例:

strd sdf

輸出樣例:

|strd sdf |

|strd sdf|

時間限制:500ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
char a[100];
int main(){
	cin.getline(a,100);
	cout<<"|"<<a<<"|"<<endl;
	int i=0;
	while(a[i++]){
		if(a[i]==' '&&a[i+1]=='\0'){
			a[i--]='\0';
			--i;
		}
	}
	cout<<"|"<<a<<"|"<<endl;

	return 0;
} 

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 240kb
2
用例2通過 2ms 368kb
2
用例3通過 2ms 364kb
2
用例4通過 2ms 256kb
2
用例5通過 2ms 256kb
2
提交答案本次得分/總分:10.00/10.00分
4去掉字符串開頭的空格符(10分)
題目內容:

編寫程序,去掉字符串開頭的空格符。要求字符串用字符數組存放,不使用庫函數。字符串長度不超過100.

輸入格式:一個字符串

輸出格式:兩行:第一行,原字符串;第二行,刪除開頭空格後的字符串。注意,將原字符串和刪除空格後的字符串均放到‘|’’|’中。參照樣例。

輸入樣例:

strd sdf

輸出樣例:

| strd sdf|

|strd sdf|

時間限制:500ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
char a[100];
int main(){
	cin.getline(a,100);
	cout<<"|"<<a<<"|"<<endl;
	cout<<"|";
	int i=0;
	if(a[0]==' '){
		while(a[i++]==' ');
		i--;
	}
	while(a[i])
		cout<<a[i++];
    cout<<"|"<<endl;

	return 0;
} 

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 356kb
2
用例2通過 2ms 372kb
2
用例3通過 2ms 256kb
2
用例4通過 2ms 260kb
2
用例5通過 3ms 256kb
2
提交答案本次得分/總分:10.00/10.00分
5去掉字符串中間的所有空格(10分)
題目內容:

編寫程序,去掉字符串中間的所有空格(保持兩頭的空格)。要求字符串用字符數組存放,不使用庫函數。字符串長度不超過100.

輸入格式:一個字符串

輸出格式:兩行:第一行,原字符串;第二行,刪除中間空格後的字符串。注意,將原字符串和刪除空格後的字符串均放到‘|’’|’中。參照樣例。

輸入樣例:

strd sdf

輸出樣例:

|strd sdf|

|strdsdf|

時間限制:500ms內存限制:32000kb
C++

#include<iostream>
using namespace std;
char a[100];
int main(){
	cin.getline(a,100);
	cout<<"|"<<a<<"|"<<endl;
	cout<<"|";
	int i=0;
	while(a[i]==' ')cout<<a[i++];
	while(a[i]){
		if(a[i]!=' ')
			cout<<a[i];
		++i;
	}
	--i;
	while(a[i]==' ')cout<<a[i--];
    cout<<"|"<<endl;

	return 0;
} 

用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 360kb
2
用例2通過 2ms 376kb
2
用例3通過 3ms 256kb
2
用例4通過 2ms 256kb
2
用例5通過 2ms 256kb
2
提交答案本次得分/總分:10.00/10.00分
6查找子串(10分)
題目內容:

編寫程序,在字符串中查找子字符串,找到則返回第一個字符所在的位置(從1開始),找不到則顯示“沒有該子串”。要求字符串用字符數組存放,不使用庫函數。字符串長度不超過100.

輸入格式:

兩行:第一行爲待查找的字符串;第二行爲要查找的子字符串。

輸出格式:

第一個字符所在的位置(從1開始),若找不到則顯示“沒有該子串”。

輸入樣例1:

This is a book!

is

輸出樣例1:

3

輸入樣例2:

This is a book!

isa

輸出樣例2:

沒有該子串

時間限制:500ms內存限制:32000kb
C++

#include
using namespace std;
char a[200]={0};
char a0[200]={0};
int main(){
cin.getline(a,110);
cin.getline(a0,110);
int i=0,j=0;
while(a[i]){
while(a0[j])
if(a[i]==a0[j]&&a[i]!=’\0’){
++i;++j;
}
else{
i-=j;
j=0;
break;
}
if(j){
cout<<i-j+1;
break;
}
++i;
}
if(!j)cout<<“沒有該子串”;
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 11ms 368kb
2
用例2通過 3ms 372kb
2
用例3通過 2ms 364kb
2
用例4通過 3ms 256kb
2
用例5通過 2ms 256kb
2
提交答案本次得分/總分:10.00/10.00分
7排序(10分)
題目內容:

輸入n個整數,對它們進行排序,從大到小輸出。0<n<=100。注意,不應使用別人寫的庫函數。

輸入格式:

兩行,第1行爲元素個數n;第2行爲n個整數,用空格隔開。

輸出格式:

n個排好序的整數,從大到小用一個空格隔開,末尾無空格。

輸入樣例:

5

1 2 5 4 3

輸出樣例:

5 4 3 2 1

時間限制:500ms內存限制:32000kb
C++

#include
using namespace std;
int a[103];
int main()
{
int n;
cin>>n>>a[0];
for(int i=1;i<n;++i){
cin>>a[i];
for(int j=0;j<=i;++j){
if(a[i]>a[j]){
int tem=a[i];
a[i]=a[j];
a[j]=tem;
}
}
}
for(int i=0;i<n-1;++i)
cout<<a[i]<<" ";
cout<<a[n-1]<<endl;
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 256kb
2
用例2通過 2ms 376kb
2
用例3通過 2ms 256kb
2
用例4通過 2ms 256kb
2
用例5通過 2ms 368kb
2
提交答案本次得分/總分:10.00/10.00分
8二分查找(10分)
題目內容:

從小到大輸入若干整數(不超過300),以-99999爲結束符,然後再輸入一個整數x,z在前面的整數中用二分查找法查找x,若找到,顯示數的下標(即從0開始的序號);若找不到,顯示-1。注意,不應使用別人寫的庫函數。

輸入格式:

若干整數。

輸出格式:

一個下標

輸入樣例:

1 2 3 4 5 -99999

2

輸出樣例:

1

時間限制:200ms內存限制:32000kb
C++

#include
using namespace std;
int a[333];
int main(){
int i=0,s;
cin>>a[0];
while(a[i]!=-99999){
cin>>a[++i];
}
cin>>s;
int l=0,r=i-1,mid;
for(;l<=r;){
mid=l+(r-l)/2;
if(s==a[mid]){
cout<<mid;
break;
}
else if(s>a[mid])
l=mid+1;
else r=mid-1;
}

if(l>r)cout<<-1;
return 0;

}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 256kb
1
用例2通過 2ms 368kb
1
用例3通過 2ms 376kb
1
用例4通過 2ms 368kb
1
用例5通過 2ms 372kb
1
用例6通過 23ms 368kb
1
用例7通過 24ms 368kb
2
用例8通過 3ms 368kb
2
提交答案本次得分/總分:10.00/10.00分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章