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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章