记录-数据结构第一章上机练习题

本文记录了数据结构课程第一章的上机练习,包括判断回文数的方法、计算数字各位之和的算法以及求解素数的实现。通过这三道题,深入理解基础数据结构的应用。
摘要由CSDN通过智能技术生成

一共三道题,题目要求代码上方已经注释

/*
P26 上机实验题1

  1.1设计一个程序,输出所有小于等于n(n为一个大于2的正整数)的素数。
  要求:①每行输出10个素数   ②尽可能采用较优算法
  
	1.2编写一个程序,计算任意一输入的正整数的各位数字之和,并分析算法时间复杂度。
	
	  1.3编写一个程序,判断一个字符串是否为“回文”,并分析算法时间复杂度。
*/


//1.1
#include <iostream>
#include <iomanip>
using namespace std;
bool isprim[10001];

void cal_prim(void)
{
	int i,j;
	isprim[0]=1;
	isprim[1]=1;
	isprim[2]=0;
	
	i=2;
	while(i<=10001)
	{
		if(!isprim[i])
			for(j=i+i;j<=10001;j+=i)		
				isprim[j]=1;
			++i;
	}
}

int main()
{
	int n,i,j;
	
	cal_prim();
	
	j=0;
	while(cin>>n)
	{
		cout<<"The Prim from 1 to "<<n<<" is:"<<endl;
		for(i=1;i<=n;++i)
		{		
			if(isprim[i]==0)
			{
				++j;
				cout<<setiosflags(ios::fixed)<<setw(5)<<i<<" ";
				if(j%10==0 && j!=0)	cout<<endl;
			}
		}
		cout<<endl;
	}
	return 0;
}



//1.2	复杂度O(log10(n))
#include <iostream>
using namespace std;
int main()
{
	int num,sum,temp;
	
	while(cin>>num)
	{
		sum=0;
		temp=num;
		while(temp>0)
		{
			sum+=temp%10;
			temp/=10;
		}
		cout<<num<<"的各位数字之和为:"<<sum<<endl;
	}
	
		  return 0;
}


//1.3,复杂度 O(n)
#include <iostream>
#include <string>
using namespace std;

bool judge(string str,int len)
{
	int i,j;
	i=0;
	j=len-1;
	
	if(len%2==0)
	{
		for(;i<=len/2-1;++i,--j)
			if(str[i]!=str[j])
				return 0;
			return 1;
	}
	else
	{
		int medium=len/2;
		for(;i<=medium;++i,--j)
			if(str[i]!=str[j])
				return 0;
			return 1;
	}
}

int main()
{
	string str;
	int len;
	
	while(cin>>str)
	{

		len=str.length();
		
		if(judge(str,len))	cout<<str<<"是回文串!"<<endl;
		else	cout<<str<<"不是回文串!"<<endl;
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值