南理工复试上机题解

来源:互联网 发布:java 日期格式校验 编辑:程序博客网 时间:2024/04/30 00:59
 
南理工复试上机题解

8题:
1.
输入一个整数如2,输入项数如4,计算下式的值:2+22+222+2222
(如输入的是32则需要计算的是3+33
#include<iostream>
#include<math.h>
using namespace std;
void main()
{
    double a,n;
    double temp=0;
    int sum=0;
    cin>>a>>n;
    for(double i=0;i<n;i++)
    {
        temp+=a*pow(10,i);
    }
    cout<<temp<<endl;//temp
得到最大的那位数,如输入a2n4temp2222
    int x;
    x=temp/10;sum=temp;
    for(int j=1;j<=n;j++)
    {
        sum=sum+x;
        x=x/10;
    }
    cout<<sum;

}
×2.
计算e的值e(给定e的表达式,精确度10^-6
3.
一篮鸡蛋数目除21,除32,除43,除54问有多少个(59
#include<iostream>
using namespace std;
void main()
{
    int i=0;
    while(!((i%2==1)&&(i%3==2)&&(i%4==3)&&(i%5==4)))
    {
        i++;
    }
    cout<<i;
}
4
将一个整数转换为16进制输出,(不得使用系统函数)
#include<iostream>
using namespace std;
void tran(int num)
{
    int a[8];
    int i=0;
    for(i=0;i<8;i++)
    {
        a[i]=num%16;
        num/=16;
        if(num==0) break;
    }
    for(;i>=0;i--)
    {
        switch(a[i])
        {
            case 10:
                {
                    cout<<'A';
                    break;
                }
            case 11:
                {
                    cout<<'B';
                    break;
                }
            case 12:
                {
                    cout<<'C';
                    break;
                }
            case 13:
                {
                    cout<<'D';
                    break;
                }
            case 14:
                {
                    cout<<'E';
                    break;
                }
            case 15:
                {
                    cout<<'F';
                    break;
                }
            default:
                {
                    cout<<a[i];
                    break;
                }
        }
    }
}
void main()
{
    int num;
    cin>>num;
    tran(num);
}

5
打印100-999间的回文数(正读反读相同,如101 111 121 131 ……
#include<iostream>
using namespace std;
void main()
{
    int i=100;
    int f,l;
    for(;i<=999;i++)
    {
        f=i/100;
        l=i%10;
        if(f==l) cout<<i<<'/t';
    }
}
6
打印九九表:
 1*1=1
 1*2=2  2*2=4
 1*3=3  2*3=6  3*3=9
 ……………………………………………………………………
……………………………………………………………………
#include<iostream>
using namespace std;
void main()
{
    int j=1;
    for(int i=1;i<=9;i++)
    {
        for(;j<=i;j++)
        {
            cout<<i<<'*'<<j<<'='<<i*j<<'/t';
        }
        j=1;
        cout<<endl;
    }
}
7
一个数的个位是8(如128),将8移到首位(变成812)后将是原来的4倍,编程求这个数(128205)(最小值)
#include<iostream>
#include<math.h>
using namespace std;
int pow1(int x)/*
定义intpow乘方函数*/
{
    int r=1;
    if(x==0)
        return(r);
    else
    {
        while(x>0)
        {
            r=r*10;
            x--;
        }
        return(r);
    }
}
void main()
{
    int i,sum=0,j,n=0,temp,f,l;
    n=temp=128;
    while(sum!=temp*4)
    {
            temp=n;
            i=0;
            f=n%10;
             j=n;
             while(j>10)//
计算数字的位数
            {
                j=j/10;
                i++;
            }
            l=n/10;
            sum=f*pow1(i)+l;
                n++;
}
    cout<<temp<<' '<<sum<<endl;
}



8.A,B,C,D,E,F,G
分别代表1000500100501051,给定一个字符串如ABC,求出它的值(ABC=1000+500+100
#include<iostream>
using namespace std;
void main()
{
    char a[20];
    int b[20];
    int i=0,sum=0;
    char ch='A';
    while(ch!='.')
    {
        cin>>ch;
        a[i]=ch;
        i++;
    }
    i=0;
    while(a[i]!='.')
    {
        switch(a[i])
        {
            case 'A':
                {
                    b[i]=1000;
                    i++;
                    break;
                }
            case 'B':
                {
                    b[i]=500;
                    i++;
                    break;
                }
            case 'C':
                {
                    b[i]=100;
                    i++;
                    break;
                }
            case 'D':
                {
                    b[i]=50;
                    i++;
                    break;
                }
            case 'E':
                {
                    b[i]=10;
                    i++;
                    break;
                }
            case 'F':
                {
                    b[i]=5;
                    i++;
                    break;
                }
            case 'G':
                {
                    b[i]=1;
                    i++;
                    break;
                }
            default:
                {
                    cout<<"
包含一个非法字符"<<a[i]<<"将以0计算"<<endl;
                    b[i]=0;
                    i++;
                    break;
                }
        }
    }
    i--;
    for(;i>=0;i--)
            sum+=b[i];
    cout<<sum<<endl;
            
}
以上的代码都是在VS2005下编写的。

 
原创粉丝点击