zl程序教程

您现在的位置是:首页 >  后端

当前栏目

简洁的C/C++ 练习3 控制语句

C++控制 语句 练习 简洁
2023-09-27 14:29:24 时间

目录

7-1 计算指数

7-2 n个非负整数的统计

7-3 打印指定大小的表格

7-4 打印指定大小的棋盘格 

7-5 日期格式化

7-6 逆序的三位数

7-7 打印输入正整数的各位数字

7-8 估算数学常数e的值


7-1 计算指数

​​​​​​​

#include<iostream>
using namespace std;

int main()
{
    int n,sum;
    cin>>n;
    sum=1;
    for(int i=1;i<=n;i++) 
        sum*= 2;
    cout<<"2^"<<n<<" = "<<sum<<endl;
    return 0;
}

7-2 n个非负整数的统计

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int n=0;
    int temp;
    vector<int> nums;
    while(cin>>temp)
    {   
        nums.push_back(temp);
        n+=1;
        if(getchar()==-1)
        break;
    }
    int iSum=nums[0] , average , iProduct=nums[0] , iSmallest=nums[0] , iLargest=nums[0];
    for(int i=1;i<n;i++)
    {
        if(nums[i]!=-1)
        {
            if(nums[i]>iLargest)
                iLargest = nums[i];
            else if(nums[i]<iSmallest)
                iSmallest = nums[i];
            iSum += nums[i];
            iProduct *= nums[i];
        }
    }
    average = iSum / (n-1) ;
    cout << "Sum is " << iSum << endl;
    cout << "Average is " << average <<endl;
    cout << "Product is " << iProduct <<endl;
    cout << "Smallest is " << iSmallest <<endl;
    cout << "Largest is " << iLargest <<endl;
    return 0;
}

正确用法:

while(cin>>temp)

错误用法:

while(1)
    {   
        cin>>temp;

7-3 打印指定大小的表格

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int n;
    cin>>n;
    cout<<"integer "<<"square "<<"cube"<<endl;
    for (int i=0;i<n;i++)
    {
        cout<<left<<setw(8)<<i<<setw(7)<<i*i<<setw(4)<<i*i*i<<endl;
    }
    return 0;
}
stew() //默认右对齐

错误:

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    cout<<"integer"<<"\t"<<"square"<<"\t"<<"cube"<<endl;
    for (int i=0;i<n;i++)
    {
        cout<<i<<"\t"<<i*i<<"\t"<<i*i*i<<endl;
    }
    return 0;
}

   

7-4 打印指定大小的棋盘格 

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    for (int i=0;i<n;i++)
    {
        if(i%2!=0)
            for (int j=0;j<n;j++)
                cout<<" *";
        if(i%2==0)
            for (int j=0;j<n;j++)
                cout<<"* ";
        cout<<"\n";
    }
    return 0;
}

7-5 日期格式化

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    int day=0,month=0,year=0;
    char sign='-';
    cin>>month>>sign>>day>>sign>>year;
    cout<<year<<sign;
    cout<<setfill('0')<<setw(2)<<month;
    cout<<sign;
    cout<<setfill('0')<<setw(2)<<day<<endl;
    return 0;
}

方法二:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a;
    getline(cin,a);
    cout<<a.substr(6,9)<<"-"<<a.substr(0,5);
    return 0;
}

方法三:

#include<stdio.h>
int main(void)
{
    int year,month,day;
    scanf("%d-%d-%d",&month,&day,&year);
    printf("%4d-%02d-%02d\n",year,month,day);
    return 0;
}

7-6 逆序的三位数


方法一:

#include <iostream>  
using namespace std;  

int main()
{
    char a,b,c;
    cin>>a>>b>>c;
    if (c!='0')
        cout<<c<<b<<a;
    else
        if (b!='0')
            cout<<b<<a;
        else
            cout<<a;
    return 0;  
}

方法二:

#include <iostream>  
using namespace std;  
int main()
{
    int x, a, b, c,y;
    cin >> x;
    a = x/100;       //百位
    b = x%100/10;    //十位
    c = x%10;        //个位
    y = (c)*100+(b)*10+a;
    cout<<y;  
    return 0;  
}

 方法三:

#incluce<stdio.h>
int main()
{
    int x,a,b,c,y;
    scanf("%d",&x);
    a = x/100;
    c = x%10;
    b = (x%100)/10;
    y = (c)*100+(b)*10+a;
    printf("%d",y); 
    return 0;
 } 

7-7 打印输入正整数的各位数字

#include <iostream>
using namespace std;

int main()
{
	int N;
    int a=1,b;
    cin>>N;
    b = N;
    
    //判断位数
    while(b>10)
    {
        a*=10;
        b/=10; 
    }
    
    //数字输出
    while(a!=1)
    {
        cout<<N/a<<"   ";
        N%=a;
        a/=10;
    }
    cout<<N/a;

    return 0;
}

7-8 估算数学常数e的值

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    int n;
    double e=1.0,m=1.0;
    cin>>n;
    for(int i=1;i<=n+3;i++)
    {
        m = m*i;
        e+=(1/m);
    }
    cout<<fixed<<setprecision(n)<<e<<endl;
    return 0;
}