C++編程練習——2014/3/12

對應題目26-30

1.

#include <iostream.h>
#include <cmath>
int convert(char* strOct)
{
	int Dec=0;
	while(*strOct)
	{
		Dec=Dec*8+(*strOct)-'0';
		strOct++;
	}
	return Dec;


}
int main()
{
	cout<<convert("7")<<endl;
	cout<<convert("10")<<endl;
	cout<<convert("1234")<<endl;
	return 0;
}

進制轉換時候的循環沒有弄清,題目做的很悲劇

2.

#include<iostream.h>
#include<cmath>
#define NUM 50
int A[NUM][NUM]=
{
	{10,13,59,70,6},
	{2,40,89,92,9},
	{14,55,71,11,19},
	{79,68,83,97,101},
	{102,10001,23,45}
};
bool isPrime(int n)
{
	if(n==1)
		return false;
	if(n==2)
		return true;
	for(int i=2;i<n/2;i++)
	{
		if(n%i==0)
			return false;
	}
	return true;

}
int sum(int A[NUM][NUM],int n)
{
	int s=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{	
			if(!isPrime(A[i][j]))
				s+=A[i][j];
		}
	}
	return s;

}
int main()
{
	cout<<sum(A,5)<<endl;
	return 0;
}


這題基本就考了一個循環條件;比較基礎。

3.

這題很簡單

#include <iostream.h>
#define NUM 8
void func(int A[NUM],int n)
{
    int temp;
	for(int i=0;i<n/2;i++)
	{
		temp=A[i];
	    A[i]=A[n-i];
		A[n-i]=temp;
	}
}
int main()
{
	int A[NUM]={1,2,3,4,5,6,7,8};
	func(A,6);
	for(int i=0;i<sizeof(A)/sizeof(int);i++)
	{
		cout<<A[i]<<' ';
	}
	cout<<endl;//dd
	return 0;
}

下面兩個題個人感覺比較經典;因爲這是兩種很重要的排序方法,冒泡排序法和選擇排序法;

我冒泡做的還行,選擇就有點悲劇了;看了好久纔看懂;下面做一下簡單的介紹;

冒泡排序法,就是每次把相鄰的兩個數交換,較大的數交換到後面。即第一次交換從第一個開始逐個交換到最後一個;第二次只要到最後第二個就行了;這樣就可以把最大或者最小的數放到最後,n個數進行n-1次循環就好了;

比較排序法是,反覆從要排的數中找出最大或者最小的和第一個數進行交換;

一開始我沒弄明白這兩種方法,後來研究了很久,簡單的說吧,冒泡就是交換數組,而選擇是通過比較把符合要求的數的下標比較出來,然後再進行對換;

下面是這兩個很簡單的程序的實例;

4.

#include <iostream.h>
#define N 10
void sort(int A[N],int n)
{
	int temp,i,j;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(A[j]>A[j+1])
			{
				temp=A[j];
				A[j]=A[j+1];
				A[j+1]=temp;
				

				 
			}
		}
	}

}
int main()
{
	int A[N]={5,7,4,6,10,13,78,-4,9,20};
	sort(A,10);
	for(int i=0;i<sizeof(A)/sizeof(int);i++)
	{
		cout<<A[i]<<' ';
	}
	cout<<endl;
	return 0;
}

5.

#include <iostream.h>
#define N 10
void sort(int A[N],int n)
{
	int temp=0;
	for(int i=0;i<n-1;i++)
	{
		int k=i;
		for(int j=i+1;j<n;j++)
		{
			if(A[k]>A[j])
			    k=j;
		}
        if(k!=i)
		{	temp=A[i];
			A[i]=A[k];
			A[k]=temp;
		}
	
	}
}
int main()
{
	int A[N]={1,2,10,5,7,19,34,78,-3,8};
	sort(A,10);
	for(int i=0;i<sizeof(A)/sizeof(int);i++)
	{
		cout<<A[i]<<' ';
		
	}
	cout<<endl;
	return 0;
}


發佈了47 篇原創文章 · 獲贊 29 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章