C++初级习题及解答

1.输入自己的个人信息(学号,姓名,专业,性别等)并输出控制台

源代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str;
	cout<<"请输入个人信息:";
	getline(cin,str);
	cout<<str<<endl;
	return 0;
}

运行结果:
在这里插入图片描述

2.设计一个程序,实现判断是否是闰年

源代码:

#include<iostream>
using namespace std;
int main()
{
    int year;
    bool isleapyear;
    cout<<"Enter the year:";
    cin>>year;
    isleapyear=((year%100!=0&&year%4==0)||(year%400==0));
    if(isleapyear){
    	cout<<year<<' '<<"is a leap year"<<endl;
	}else{
		cout<<year<<' '<<"is not a leap year"<<endl;
	}
	return 0;
 } 

运行结果:
在这里插入图片描述

3.输入一个正整数,反转这个数字,例如输入123,输出321.

源代码:

#include<iostream>
using namespace std;
int main()
{
	int x,a,f=0;
	cin>>x;
	while(x>0)
	{
		a=x%10;
		f=f*10+a;
		x/=10;
	}cout<<f;
	return 0;
}

运行结果:
在这里插入图片描述

4.输入两个整数,求两个给定正整数的最大公约数和最小公倍数

源代码:

#include<iostream>
using namespace std;
int main()
{
	int a,b,i,max,min;
	cin>>a>>b;
	if(a>b)
	{
		max=a;
		min=b;
	}
	else if(a<b)
	{
		max=b;
		min=a;
	}
	else
	{
		max=min=a;
	}
	for(i=min;i>0;i--)
	{
		if(max%i==0&&min%i==0)
		{
			cout<<i<<ends;
			break;
		}
	}
	for(i=max;;i++)
	{
		if(i%max==0&&i%min==0)
		{
			cout<<i;
			break;
		}
	}
	return 0;
}

运行结果:
在这里插入图片描述

5.输出前1000的素数

源代码:

#include<iostream>
#include<math.h> 
using namespace std;
int main()
{
	int x,i;
	int isprime=1;
	for(x=2;x<1000;x++)
	{
		if(x%2==0&&x!=2)continue;
		for(i=2;i<=sqrt(x);i++)
		{
			if(x%i==0)
			{
				isprime=0;
				break;
			}isprime=1;
		}if(isprime==1)
		{
			cout<<x<<ends;
		}
	}
	return 0;
 } 

运行结果:
在这里插入图片描述

6.给出 n,输出杨辉三角的前 n行

源代码:

#include<iostream>
using namespace std;
int main()
{
    int n,a[100][100];
    cin>>n;
    a[1][1]=1;
    a[2][1]=1;
    a[2][2]=1;
    for(int i=3;i<=n;i++)
    {
        for(int j=1;j<=i;j++)
        {
            if(j==1||j==i)a[i][j]=1;
            else 
            {
                a[i][j]=a[i-1][j-1]+a[i-1][j];
            }
        }
    }
    int cou;
    for(int i=1;i<=n;i++)
    {
        cou=n-i;
        while(cou>0)
        {
            printf(" ");
            cou--;
        }
        for(int j=1;j<=i;j++)
        {
            if(j==i)cout<<a[i][j];
            else cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
	return 0;
}

运行结果:
在这里插入图片描述

7.统计单词数,输入一个要查询的单词,以及一段英文短文,求出现的单词的个数,不区分大小写

源代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	void strlower(string &p);
	string key;
	string des;
	int cou=0,i=0,j=0;
	getline(cin,key);
	getline(cin,des);
	strlower(key);
	strlower(des);
	while(des[i]!='\0')
	{
		if(des[i]==' ')
		{
			i++;
			continue;
		}
		if(des[i]==key[j])
		{
			while(des[i]==key[j])
			{
				if(des[i+1]==' '&&key[j+1]=='\0'||
				   des[i+1]=='\0'&&key[j+1]=='\0'||
				   des[i+1]==','&&key[j+1]=='\0'||
				   des[i+1]=='.'&&key[j+1]=='\0'||
				   des[i+1]=='?'&&key[j+1]=='\0'||
				   des[i+1]=='!'&&key[j+1]=='\0')
				{
					cou++;
					break;
				}
				else
				{
					i++;
					j++;
				}
			}
			j=0;
		}
		if(des[i++]!='\0')i++;
	}
	cout<<cou<<endl;
	
	return 0;
}
void strlower(string &p)
{
	for(int i=0;p[i]!='\0';i++)
	{
		if(p[i]>='A'&&p[i]<='Z')
		p[i]+=32;
	}
}

运行结果:
在这里插入图片描述

8.输入一个正整数,判断是否是回文质数(回文数+质数)

源代码:

 #include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int n,a,t;
	int num=0,isPrime=1;
	cin>>n;
	if(n%2==0&&n!=2||n==1||n<0)
	{
		cout<<n<<"不是回文质数"<<endl; 
	}
	else
	{
		t=n;
		while(t>0)
		{
			a=t%10;
			num=num*10+a;
			t/=10;
		}
		if(num==n)
		{
			for(int i=2;i<=sqrt(n);i++)
			{
				if(n%i==0)
				{
					cout<<n<<"不是回文质数"<<endl; 
					isPrime=0;
					break;
				}
			}
		if(isPrime)
		{
			cout<<n<<"是回文质数"<<endl; 
		}
		}
		else
		{
			cout<<n<<"不是回文质数"<<endl;
		}
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

9.了解栈概念,自己编写一个类实现栈的基本功能(入栈,出栈,求栈的大小等其他基本功能)

源代码:

#include<iostream>
#include<stack>
using namespace std;
int main()
{
	stack <char>stk;
	for(char i='a';i<='z';i++)
	{
		stk.push(i);
	}
	cout<<"栈的大小:"<<stk.size()<<endl;
	while(!stk.empty())
	{
		cout<<stk.top()<<endl;
		stk.pop();
	}
	cout<<"栈的大小:"<<stk.size()<<endl;
	return 0;
}

运行结果:
在这里插入图片描述

10.分别使用指针和引用编写两数交换,并根据自己实现的两数交换实现冒泡排序算法

指针:
源代码:

#include<iostream>
using namespace std;
int main()
{
	void exchange(int *a,int *b);
	int a[100],n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<n;i++)
	{
		for(int j=1;j<n-i;j++)
		{
			if(a[j-1]>a[j])
			exchange(&a[j-1],&a[j]);
		}
	}
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<' ';
	}
	cout<<endl;
	return 0;
 } 
 void exchange(int *a,int *b)
 {
	int temp;
	temp=*a;
 	*a=*b;
 	*b=temp;
 }

运行结果:
在这里插入图片描述
引用:
源代码:

#include<iostream>
using namespace std;
int main()
{
	void exchange(int &a,int &b);
	int a[100],n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<n;i++)
	{
		for(int j=1;j<n-i;j++)
		{
			if(a[j-1]>a[j])
			exchange(a[j-1],a[j]);
		}
	}
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<' ';
	}
	cout<<endl;
	return 0;
 } 
 void exchange(int &a,int &b)
 {
 	int temp;
	temp=a;
 	a=b;
 	b=temp;
 }

运行结果:
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些C++编程练习题及其答案: 1. 编写一个程序,要求用户输入两个整数,然后输出它们的和、差、积和商。 ```c++ #include<iostream> using namespace std; int main() { int num1, num2; cout << "Please enter two integers: "; cin >> num1 >> num2; cout << num1 << " + " << num2 << " = " << num1 + num2 << endl; cout << num1 << " - " << num2 << " = " << num1 - num2 << endl; cout << num1 << " * " << num2 << " = " << num1 * num2 << endl; cout << num1 << " / " << num2 << " = " << num1 / num2 << endl; return 0; } ``` 2. 编写一个程序,要求用户输入以兆位每秒(Mb/s)为单位的下载速度和文件大小,然后计算并输出下载该文件所需的时间。 ```c++ #include<iostream> using namespace std; int main() { double downloadSpeed, fileSize; cout << "Please enter the download speed (in Mb/s): "; cin >> downloadSpeed; cout << "Please enter the file size (in MB): "; cin >> fileSize; double downloadTime = fileSize * 8 / downloadSpeed; cout << "The download time is " << downloadTime << " seconds." << endl; return 0; } ``` 3. 编写一个程序,要求用户输入一个整数,然后输出从1到该整数的所有整数的和。 ```c++ #include<iostream> using namespace std; int main() { int num, sum = 0; cout << "Please enter an integer: "; cin >> num; for(int i=1; i<=num; i++) { sum += i; } cout << "The sum of the integers from 1 to " << num << " is " << sum << endl; return 0; } ``` 4. 编写一个程序,要求用户输入一个整数n,然后输出n的阶乘。 ```c++ #include<iostream> using namespace std; int main() { int num, factorial = 1; cout << "Please enter an integer: "; cin >> num; for(int i=1; i<=num; i++) { factorial *= i; } cout << num << "! = " << factorial << endl; return 0; } ``` 5. 编写一个程序,要求用户输入一个整数n,然后输出从1到n的所有奇数的和和所有偶数的和。 ```c++ #include<iostream> using namespace std; int main() { int num, oddSum = 0, evenSum = 0; cout << "Please enter an integer: "; cin >> num; for(int i=1; i<=num; i++) { if(i % 2 == 0) { evenSum += i; } else { oddSum += i; } } cout << "The sum of odd integers from 1 to " << num << " is " << oddSum << endl; cout << "The sum of even integers from 1 to " << num << " is " << evenSum << endl; return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值