考研论坛

 
查看: 12845|回复: 41
打印 上一主题 下一主题

【计算机复试】最新06-10上机真题及答案

[复制链接]

3

主题

85

帖子

461

积分

一般战友

Rank: 2

精华
2
威望
145
K币
316 元
注册时间
2009-9-16
跳转到指定楼层
楼主
 楼主| 发表于 2010-4-10 00:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

2010上机题
1. 输入两个字符串st,打印出ts中的出现的位置,并输出出现的次数
如输入:s=qwqwertqweqqqqt=qw
输出:1 3 5

3

2. 观察一个数的序列规律,123456891012151618……
现在输入一个数8(即上述序列中的第8个数),输出:9
试编程实现。
注:上述序列皆是1235,的倍数
3.求二进制逆序
   输入10,对应二进制数为1010,其逆序为0101,对应十进制输出为55即为10的逆序数)。
4.
求满足条件n*n-m*m-n*m=1,且使m*m+n*n值最大的mn,其中mn的值都要小于kk由用户输入。
5.已知一个数组如a10={1234567890},输入p,则右移p位,如输入3后,输出a10={8901234567},要求时间复杂度和空间复杂度尽量小。
6.已知一个斜三角:
22 32 14 77 45
    12 34 37 23
         44 23 15
              34 54
                  88
从最左上角元素开始往右或往右下走,请问顺着哪条路所经过的值的总和最大,
如可以有路线:2232342354 2212443488等等
请求出满足值总和最大的那条线路。


2010上机原题答案
毕竟回忆的,个别地方会有一点点的出入
第六题没来得及做,第一题有点问题,大家自己调一下。
第一题
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<string.h>
void main()
{
char s[70],t[100];


int i=0,j,count=0,len;


cout<<"
输入两字符串:"<<endl;

cin>>s;


cout<<"
输入第2个字符串:"<<endl;

cin>>t;


len=strlen(t);

  

while(s!='\0')


{



for(j=0;j<=len;j++)



{if(s[i+j]==t[j])



j++;


else break;



}


if(j==len+1)


{count++;


cout<<i+1;


}





i++;


}


cout<<endl<<count<<endl;

}
第二题
#include<iostream.h>
#include<iomanip.h>
#include<math.h>

int fun(int n)


{
while(n%2==0)


n=n/2;


while(n%3==0)



n=n/3;



while(n%5==0)



n=n/5;



if(n==1)return 1;



else return 0;


}


void main()
{
int j=0,n,a[1500];


long i;


for(i=1;i<1000000;i++)


{ if(fun(i))


a[j++]=i;


}


cout<<"
输入n(n<=1500)"<<endl;

cin>>n;


cout<<a[n-1]<<endl;

}
第三题
#include<iostream.h>
#include<iomanip.h>
#include<math.h>

void main()
{
int i=0,m,j=0,n=0,a[100];


cout<<"
输入一个十进制数:"<<endl;

cin>>m;


while(m!=0)


{


a=m%2;



m=m/2;



i++;


}


while(j<i)


{


n=n*2+a[j];



j++;


}


cout<<"
其二进制逆序数:"<<endl<<n<<endl;
}
第四题
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{
int m,n,k,maxm,maxn,max=0;


cout<<"
输入k:"<<endl;


cin>>k;



for(m=0;m<=k;m++)



for(n=0;n<=k;n++)



if(n*n-m*n-m*m==1&&max<m*m+n*n)



{ max=m*m+n*n;



maxm=m;



maxn=n;



}


cout<<maxm<<"
"<<maxn<<endl;

}
第五题
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{
int p,i,j,r[10]={1,2,3,4,5,6,7,8,9,10},s[10];


cin>>p;


for(i=0;i<=p-1;i++)



s=r;


for(j=p;j<=10;j++)



r[j-p]=r[j];


for(j=0;j<p;j++)



r[10-p+j]=s[j];

   


cout<<"
左移后的结果:"<<endl;

for(i=0;i<10;i++)



cout<<r<<setw(5);


cout<<endl;

}





[ 本帖最后由 tsinjz 于 2010-4-10 00:40 编辑 ]

    评分

    参与人数 1威望 +30 收起 理由
    南理工大 + 30

    查看全部评分

    回复

    使用道具 举报

    3

    主题

    85

    帖子

    461

    积分

    一般战友

    Rank: 2

    精华
    2
    威望
    145
    K币
    316 元
    注册时间
    2009-9-16
    沙发
     楼主| 发表于 2010-4-10 00:17 | 只看该作者
    2007
    A.1 递归方程编程。



    F
    x=file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.gif

    编写函数,并利用该函数输出f20),f21),f23)的值。
    A.2 找出这样的数
    本身是三位的完全平方数n(100<=n<1000),而且有有两位上的数字相同,如484
    A.3输入年份和月份,计算该年初到该年这个月底的总天数(注意闰年)。
    A.3'输入年月日,计算该月日是该年的第几天。
    A.4用牛顿迭代法
    求某正数n的平方根
    A.5求亲密数
      a,b(均为正整数):a的所有因子(含1不含a本身)之和为b,若b的所有因子(含1不含
    b本身)之和为a,则a,b为亲密数,求满足a<b的亲密数,键盘输入范围m,n(10<m<n<10000)
    A.6//给定数组,求连续三元素之和,输出和最大的第一个元素的下标
    A.7//键盘输入正整数序列-1结尾,以此按升序建立双向循环链表,并降序输出


    2006
    B.1.输入一个整数如2,输入项数如4,计算下式的值:2+22+222+2222
    (如输入的是32则需要计算的是3+33

    B.2计算e的值(给定e的表达式要求精度<10-6次方)

    B.3.一篮鸡蛋数目除21,除32,除43,除54问有多少个(59
    B.4将一个整数转换为16进制输出,(不得使用系统函数)
    B.5打印100-999间的回文数(正读反读相同,如101 111 121 131 ……
    B.6打印九九表:(注意格式)
    1*1=1
    1*2=2  2*2=4
    1*3=3  2*3=6  3*3=9
    B.7
    一个数的个位是8(如128),将8移到首位(变成812)后将是原来的4
    倍,编程求这个数(128205)(最小值)

    B.
    8.A,B,C,D,E,F,G分别代表1000500100501051,给定一个字符串如ABC,求出它的值(ABC=1000+500+100

    第三部分 课本

    C.1
    输入一个英文句子(以句号结束),要求句中单词分行打印出,其中句中单词分隔符可能是空格,制表格(反斜杠T),回车(反斜杠n)。
    C.2二分法查找方程X^9-4X^5-5X^3-270000=0在(010)区间的近似根(保留小数点后五位数)
    C.3100以内的素数,并且每行显示八个。
    C.4最大公约数之辗转相除法
    C.5最大公约数之辗转相减法
    C.6最大公约数之最简单算法
    C.7最小公倍数之最常规算法
    C.8 牛顿迭代法求方程fx=3X^3-4X^2-5X+13=0X=0附近 的近似值。

       迭代公式为:Xn+1=Xn-f(Xn)/f'(Xn) ,n=0,1,2,3...
    C.9 哥德巴赫猜想任意大于2的偶数均可表示为两个素数的和。
        6=3+38=3+5......
    C.10 梯形法计算积分:S=file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image004.gif
         分析: S=file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image006.gif
    C.11 汉字处理,利用指针变量和字符数组,编一程序将输入的一行字符串中所有的汉字删除。(///删除汉字只需删除编码值小于0的字符)
    C.12 通过函数调用,求正整数mn的最大公约数和最小公倍数。
    C.13 m是一个3位的正整数,将满足mfile:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image008.gif均为回文数的正整数输出.
    C.14递归实现十进制转换为任何进制(2-16进制)
    C.15写一个函数input,用来输入5个学生的数据.
    C.16用公式pi/4=1-1/3+1/5-1/7+1/9……精度小于10的负六次方。

    2009

    D.1.输入一个数n,例如当n=5时输出:

    25 16 9 4 1

    16 9 4 1 25

    9 4 1 25 16
    4 1 25 16 9

    1 25 16 9 4

    D.2计算三位的偶数中有多少至少有两个位数的数字相同。
    D.3
    第二字符串插入到第一字符串的最大ASCII码值的字符的后面。

    D.4.输入一个数n,例如n=5,输出


                1

             1 2 1
          1 2 3 2 1
       1 2 3 4 3 2 1
    1 2 3 4 5 4 3 2 1

    2008

    E.1.       从键盘输入一个带有数字的字符串,将其中数字所在的位置输出,并把字符串小写字符变大写再输出。例:输入ab2cd3ef4按回车输出3  6  9  AB2CD3EF4
    E.2输出大于6的偶数分解为两质数之和,要求输入一个大于6的偶数,分解并输出两个素数,程序一直运行,直至输入-1结束。
    (可以输出此数的一组或全部分解情况:具体见注释。)
    E.3找出符合下列条件的三位数:能被11整除,且三个位数上没有相同的数,如121不可以。
    E.4输入n,输出钻石型。
    E.5迭代法求解数n平方根。
    E.6打印出杨辉三角形n-1行(注意n的意义,n在程序内可直接修改)
    E.7汉诺塔,包括具体步骤。
    E.8将整数化为一样的字符串如483化为“483”。
    E.9折半查找法查找,若找到输出是已知数组的第几个数,若无返回不存在。
    E.10输出菱形,如定义n=3 输出:

    ***

      ***

        ***
    E.11输入3*3矩阵的初始值,输出有无鞍点,若有输出鞍点值,及其相应的坐标。若无输出“不存在鞍点”。

    [ 本帖最后由 tsinjz 于 2010-4-10 00:45 编辑 ]
    回复

    使用道具 举报

    3

    主题

    85

    帖子

    461

    积分

    一般战友

    Rank: 2

    精华
    2
    威望
    145
    K币
    316 元
    注册时间
    2009-9-16
    板凳
     楼主| 发表于 2010-4-10 00:20 | 只看该作者
    A.1
    #include<iostream.h>
    #include<iomanip.h>
    float fun(float x,int n){
    if(0==n){
    return 1;
    }else if(1==n){
    return x;
    }else{
    return ((2*n-1)*x-fun(x,n-1)-(n-1)*fun(x,n-2)/n);
    }
    }
    void main(){
    int n;
    float p,x;
    cout<<fun(2,0)<<endl;
    cout<<fun(2,1)<<endl;
    cout<<fun(2,3)<<endl;
    }//main
    A.2
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    int fun1(int n){
    int temp;
    temp=(int)sqrt(n);
    if(n==temp*temp){
    return 1;
    }else{
    return 0;
    }
    }
    int fun2(int n){
    int a[3],i;
    for(i=0;i<3;i++){
    a=n%10;
    n/=10;
    }
    if(a[0]== a[1] || a[1]== a[2] || a[0]== a[2])return (1);
    else return 0;
    }
    void main(){
    int n;
    for(n=100;n<1000;n++){
    if(fun1(n) && fun2(n)){
    cout<<"n="<<n<<endl;
    }
    }
    }//main
    A.3
    #include<iostream.h>

    struct{


    int year;



    int month;



    int day;



    }date;

    void main()
    {
    int days;
    cout<<"input year,month,day:\n";
    cin>>date.year>>date.month>>date.day;
    switch(date.month)
    {
    case 1: days=date.day; break;
    case 2: days=date.day+31; break;
    case 3: days=date.day+31+28;break;
    case 4: days=date.day+31+28+31;break;
    case 5: days=date.day+31+28+30+31;break;
    case 6: days=date.day+31+28+31+30+30;break;
    case 7: days=date.day+31+28+31+30+30+31;break;
    case 8: days=date.day+31+28+31+30+30+31+31;break;
    case 9: days=date.day+31+28+31+30+30+31+31+30;break;
    case 10: days=date.day+31+28+31+30+30+31+31+30+31;break;
    case 11: days=date.day+31+28+31+30+30+31+31+30+31+30;break;
    case 12: days=date.day+31+28+31+30+30+31+31+30+31+30+31;break;
    }//switch(month)
    if(((date.year%4==0&&date.year%100!=0)||date.year%400==0)&&date.month>=3)

    days+=1;

    cout<<date.month<<"/"<<date.day<<"is the "<<days<<"th day in "<<date.year<<"."<<endl;
    }//main
    A.3’
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    int leapyear(int year){
    if(year%4==0&&year%100!=0|| year%400==0){
    return 1;
    }else return 0;
    }
    void main(){
    int year,month;
    int num=0,feb=0;
    cout<<"请输入年份n和月份m"<<endl;
    cin>>year>>month;
    if(leapyear(year)) feb=29;
    else feb=28;
    switch(month){
    case 1: num=num+31; break;
    case 2: num=num+31+feb; break;
    case 3: num=num+31+feb+31;break;
    case 4: num=num+31+feb+31+30;break;
    case 5: num=num+31+feb+31+30+31;break;
    case 6: num=num+31+feb+31+30+31+30;break;
    case 7: num=num+31+feb+31+30+31+30+31;break;
    case 8: num=num+31+feb+31+30+31+30+31+31;break;
    case 9: num=num+31+feb+31+30+31+30+31+31+30;break;
    case 10: num=num+31+feb+31+30+31+30+31+31+30+31;break;
    case 11: num=num+31+feb+31+30+31+30+31+31+30+31+30;break;
    case 12: num=num+31+feb+31+30+31+30+31+31+30+31+30+31;break;
    }//switch(month)
    cout<<"天数="<<num<<endl;
    }//main
    A.4
    //迭代公式:x2=(x1+n/x1)/2,当x2-x1绝对值小于0.00001停止迭代
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    float fun(float n)
    {float x1=1,x2=1;
    do{x1=x2;
    x2=(x1+n/x1)/2.0f;}
    while(fabs(x2-x1)>0.00001);
    return x2;}
    void main()
    {cout<<fun(3)<<endl;
    cout<<fun(9)<<endl;}//main
    A.5
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    int fun(int n)
    {int i,sum=0;
    for(i=1;i<n;i++)
    {if(n%i==0) sum+=i;}
    return sum;}
    void main()
    {int m,n,a,b;
    cout<<"请输入范围mn 10<m<n<10000)"<<endl;
    cin>>m>>n;
    for(a=m;a<=n;a++){b=fun(a);
    if(a==fun(b) && a<b&&b<n)

    cout<<"
    亲密数:a="<<a<<" b="<<b<<endl;}}//main

    A.6
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    void main()
    {int a[10]={12,34,3,89,76,24,10,67,33,17};
    int i,max=0,sum2=0,index=0;
    max=a[0]+a[1]+a[2];
    for(i=1;i<10;i++)
    {sum2=a+a[(i+1)%10]+a[(i+2)%10];
    if(sum2>max)
    {index=i;
    max=sum2;}}
    cout<<"最大一组开始下标="<<index<<endl;}//main
    A.7
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>

    struct Node{


    int data;


    Node * per;


    Node * next;


    };

    void main()
    {

    int a[1000],num=-1,i,j,temp;


    Node * head , * cur,*fir;


    cout<<"
    输入正整数序列,空格分隔,-1结尾"<<endl;


    do{


    num++;


    cin>>a[num];


    }while(-1!=a[num]);


    for(i=0;i<num-1;i++)


    for(j=i+1;j<num;j++)


    if(a>a[j]){temp=a; a=a[j]; a[j]=temp;}


    head=cur= fir=new Node;


    cur->per =NULL;


    cur->next =NULL;


    cur->data=a[0];


    for(i=1;i<num;i++)


    {



    cur=new Node;



    cur->data=a;



    fir->next=cur;



    cur->per=fir;



    cur->next=NULL;




    fir=cur;


    }


    head->per=fir;


    fir->next=head;


    for(; fir!=head; )


    {



    cout<<fir->data<<setw(5);



    fir=fir->per;


    }


    cout<<head->data<<endl;


    }//main
    B.1
    #include<iostream.h>
    #include<math.h>
    void main()
    { int m,n,i,imax=0,sum=0;

    cout<<"
    输入整数m和项数n"<<endl;


    cin>>m>>n;


    for(i=1;i<=n;i++)


    { imax=imax*10+m;


    sum+=imax;


    }


    cout<<"
    结果为sum="<<sum;

    }
    B.1’
    #include<iostream>
    #include<math.h>
    using namespace std;
    void main()
    {double a,n;
    double temp=0;

    int sum=0;


    int x;


    cin>>a>>n;


    for(double i=0;i<n;i++)



    temp+=a*pow(10,i);


    cout<<temp<<endl;//temp
    得到最大的那位数,如输入a=2n=4temp=2222


    x=temp/10;


    sum=temp;


    for(int j=1;j<=n;j++)


    {sum=sum+x;


    x=x/10;}


    cout<<sum;}

    B.2
    #include<iostream.h>
    void main()
    { int i=1;

    double e=1.0,d=1.0;


    while(d>=0.000001)


    { i++;


    d=d/i;



    e+=d;


    }


    cout<<"the value of e is:
    "<<e<<endl;

    }
    B.3
    #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;}

    B.4
    #include<iostream.h>
    void tran(int num)
    {

    int a[100];


    int i=0;


    for(i=0;i<100;i++)


    {


    a=num%16;


    num/=16;


    if(num==0) break;


    }


    for(;i>=0;i--)


    {


    switch(a)


    {


    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;
    break;


    }


    }

    }
    void main()
    {

    int num;


    cin>>num;


    tran(num);

    }
    B.4’
    #include<iostream.h>
    void main()
    { int a[100],num,i=0;

    cin>>num;


    while(num!=0)


    { a=num%16;


    num=num/16;



    i++;


    }


    i--;



    for(;i>=0;i--)


    {


    switch(a)


    {


    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;
    break;
    }


    }


    }

    }
    B.5
    #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';


    }

    }
    B.6
    #include<iostream>
    using namespace std;
    void main()
    {

    int j=1;


    for(int i=1;i<=9;i++)


    {


    for(;j<=i;j++)


    {


    cout<<j<<'*'<<i<<'='<<i*j<<'\t';

    }

    j=1;


    cout<<endl;

    }
    }
    B.7
    #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;

    }
    B.8
    #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=ch;


    i++;

    }

    i=0;


    while(a!='.')


    {


    switch(a)


    {


    case 'A':


    {


    b=1000;


    i++;


    break;


    }


    case 'B':


    {


    b=500;


    i++;


    break;


    }


    case 'C':


    {


    b=100;


    i++;


    break;


    }


    case 'D':


    {


    b=50;


    i++;


    break;


    }


    case 'E':


    {


    b=10;


    i++;


    break; }


    case 'F':


    {


    b=5;


    i++;


    break;


    }


    case 'G':


    {


    b=1;


    i++;


    break;


    }


    default:


    {


    cout<<"
    包含一个非法字符"<<a<<"将以0计算"<<endl;


    b=0;


    i++;


    break;}

    }

    }


    i--;


    for(;i>=0;i--)


    sum+=b;


    cout<<sum<<endl;

    }
    回复

    使用道具 举报

    3

    主题

    85

    帖子

    461

    积分

    一般战友

    Rank: 2

    精华
    2
    威望
    145
    K币
    316 元
    注册时间
    2009-9-16
    地板
     楼主| 发表于 2010-4-10 00:22 | 只看该作者
    D.1
    #include<iostream.h>
    #include<iomanip.h>
    void main()
    { int a[1000],i,j,n;

    cout<<"input n:"<<endl;


    cin>>n;


    for(i=0;i<n;i++)



    a=(n-i)*(n-i);


    for(i=0;i<n;i++)


    { for(j=0;j<n;j++)



    cout<<a[(i+j)%n]<<setw(5);


    cout<<endl;


    }

    }
    D.2
    #include<iostream.h>
    #include<iomanip.h>
    int hanoi(int n)
    {
    if(n==0)return 0;


    if(n==1)return 1;


    else return (2*hanoi(n-1)+1);

    }
    void main()
    {
    int n,m,year,day,hour,minute,second;


    cout<<"input disk number:"<<endl;


    cin>>n;


    m=hanoi(n);


    year=m/3153600;


    day=(m%3153600)/86400;


    hour=(m%3153600%86400)/3600;


    minute=(m%3153600%86400%3600)/60;


    second=m%3153600%86400%3600%60;


    cout<<"If one step needs one second,then it needs :"<<endl<<endl<<"
    "<<year<<" year,"<<day<<" day,"<<hour<<" hour,"<<minute<<" minute,"<<second<<" second."<<endl;

    }
    D.3
    #include<iostream.h>
    #include<string.h>
    #include<math.h>
    void main()
    {
    int i=0,imax=0,la=0,lb=0;


    char s[100],t[100],max;


    cout<<"
    输入两字符串,第二字符串插入第一字符串的最大ASCII值的字符后面:"<<endl;


    cin>>s>>t;


    max=s[0];


    while(s[la]!='\0')


    { if(max<s[la])



    {
    max=s[la];


    imax=la;


    }


    la++;}



    la=strlen(s);


    lb=strlen(t);


    for(i=la;i>imax;i--)s[i+lb]=s;


    for(i=0;i<lb;i++)s[i+imax+1]=t;


    s[la+lb+1]='\0';


    cout<<"
    插入后的字符串:"<<endl<<s<<endl;

    }
    D.4
    #include<iostream.h>
    #include<iomanip.h>

    void main()


    { int i,j,n;


    cout<<"input the value of n:"<<endl;


    cin>>n;


    for(i=1;i<=n;i++)


    {
    for(j=1;j<=n-i;j++)



    cout<<" "<< " ";


    for(j=1;j<i;j++)


    cout<<j<<" ";



    for(j=i;j>=1;j--)



    cout<<j<<" ";




    cout<<endl;


    }

    }
    D.5
    #include<iostream.h>
    void main()
    {
    int i,count=0;


    for(i=100;i<1000;i+=2)


    if((i%10==i/100)||(i%10==(i/10)%10)||(i/100==i/10%10))



    {
    cout<<i<<'\t';



    count++;



    }


    cout<<endl<<"
    共有:"<<count<<"个!"<<endl;

    }
    E.1
    #include<iostream.h>
    void main()
    {
    char s[100];


    int i=0,count=0;


    cout<<"
    输入字符串:"<<endl;


    cin>>s;


    while(s!='\0')


    {



    count++;


    if(s>='0'&&s<='9') cout<<count<<'\t';



    else



    if(s>='a'&&s<='z')s=s-'a'+'A';



    i++;


    }


    i=0;


    while(s!='\0')


    {


    cout<<s;


    i++;


    }

    }
    E.2
    #include<iostream.h>

    fun(int m)


    { int i;


    for(i=2;i<m/2;i++)



    if(m%i==0)break;



    if(i<m/2)return 0;



    else return 1;


    }


    void main()
    { int a[100],i=0,j;

    cout<<"
    输入要分解的偶数,以-1结束\n";


    cin>>a;


    while(a!=-1)


    {
    for(j=2;j<a/2;j++)


    if(fun(j)&&fun(a-j))



    {cout<<a<<"="<<j<<"+"<<a-j<<endl;}//
    如果对任意输入的偶数,若要只输出符合条件的一组,在if语句中加break;即可


    i++;



    cin>>a;


    }

    }
    E.3
    #include<iostream.h>
    void main()
    {
    int i;


    for(i=100;i<=999;i++)


    if(i%11==0)



    if(i%10!=i/100&&i/10%10!=i/100&&i/10%10!=i%10)



    cout<<i<<'\t';


    cout<<endl;

    }
    E.4
    #include<iostream.h>
    #include<iomanip.h>
    void main()
    {
    int i,j,n;


    cout<<"
    输入钻石形的上半行数n\n";


    cin>>n;


    for(i=1;i<=n;i++)


    {
    cout<<setw(n-i+2)<<"*"<<setw(2*i-2);


    if(i!=1)cout<<"*";


    cout<<endl;


    }


    for(i=n-1;i>=1;i--)


    {cout<<setw(n-i+2)<<"*"<<setw(2*i-2);


    if(i!=1)cout<<"*";


    cout<<endl;


    }

    }
    E.5
    #include<iostream.h>
    #include<math.h>
    #define n 10 //待开方的数
    void main()
    { float x=1.0,y;

    y=0.5*(x+n/x);


    while(fabs(y-x)>0.001)


    { x=y;


    y=0.5*(x+n/x);


    }


    cout<<"
    近似解为:"<<x<<endl;

    }
    E.6
    #include<iostream.h>
    #include<iomanip.h>
    #define n 11

    //
    数组为1111列,00列不用。

    int main()
    {
    int i,j,a[n][n];


    for(i=1;i<n;i++)


    {
    a[1]=1;


    a=1;


    }


    for(i=3;i<n;i++)



    for(j=2;j<=i-1;j++)



    a[j]=a[i-1][j-1]+a[i-1][j];


    for(i=1;i<n;i++)


    { for(j=1;j<=i;j++) cout<<setw(6)<<a[j];
    //
    修改此处的setw()可以使显示的内容更多


    cout<<endl;


    }


    cout<<endl;


    return 0;

    }
    E.7
    #include<iostream.h>

    void move(char x,char y)


    {
    cout<<x<<"-->"<<y<<endl;


    }


    void hanoi(int n,char one,char two,char three)


    {
    if(n==1) move(one,three);


    else



    { hanoi(n-1,one,three,two);



    move(one,three);




    hanoi(n-1,two,one,three);



    }


    }


    void main()//main()


    {
    int m;


    cout<<"input the number of disks:"<<endl;



    cin>>m;



    cout<<"the step to moving "<<m<<" disks:"<<endl;



    hanoi(m,'a','b','c');


    }

    E.8
    #include<iostream.h>

    void convert(int n)


    {
    char c;


    if(n/10!=0)


    convert(n/10);


    c=n%10+'0';


    cout<<" "<<c;


    }


    void main()
    { int number;

    cout<<"input an integer:"<<endl;


    cin>>number;


    cout<<"output:"<<endl;


    if(number<0)


    { cout<<"_";


    number=-number;


    }


    convert(number);


    cout<<endl;

    }
    E.9
    #include<iostream.h>
    void main()
    { int a[15]={99,87,82,79,77,76,76,60,49,48,44,33,27,22,11};
    int num,i=0,j=14,mid=7;
    cin>>num;
    while(i<j)
    {if(num==a[mid])break;
    else if(num<a[mid])i=mid+1;
    else j=mid-1;
    mid=(i+j)/2;
    }
    if(num==a[mid])cout<<mid+1<<endl;else cout<<"NO MATCH!"<<endl;
    }
    E.10
    #include<iostream.h>
    #include<iomanip.h>
    #define n 7
    void main()
    { int i,j;

    for(i=0;i<n;i++)



    {
    cout<<setw(i+1);



    for(j=0;j<n;j++)



    cout<<"*";


    cout<<endl;


    }


    }
    E.11
    #include <iostream.h>

    int main()


    { int i,j,k,jm,t,a[3][3];


    cout<<"
    输入3*3的矩阵:"<<endl;


    for(i=0;i<3;i++)


    for(j=0;j<3;j++)



    cin>>a[j];


    for(i=0;i<3;i++)


    { t=a[0];jm=0;


    for(j=0;j<3;j++)if(t<a[j]){t=a[j];jm=j;}



    for(k=0;k<3;k++)if(t>a[k][jm])break;



    if(k==3){cout<<"
    鞍点值是: "<<t<<endl<<"下标是:"<<"i="<<i<<",j="<<jm<<endl;return 1;}


    }


    cout<<"
    不存在鞍点!"<<endl;return 0;


    }

    评分

    参与人数 1威望 +30 收起 理由
    南理工大 + 30

    查看全部评分

    回复

    使用道具 举报

    3

    主题

    85

    帖子

    461

    积分

    一般战友

    Rank: 2

    精华
    2
    威望
    145
    K币
    316 元
    注册时间
    2009-9-16
    5
     楼主| 发表于 2010-4-10 00:32 | 只看该作者

    除了10年的第一和第六题外,其他均已运行通过,希望对大家有些帮助。

    [ 本帖最后由 tsinjz 于 2010-4-10 00:49 编辑 ]
    回复

    使用道具 举报

    3

    主题

    85

    帖子

    461

    积分

    一般战友

    Rank: 2

    精华
    2
    威望
    145
    K币
    316 元
    注册时间
    2009-9-16
    6
     楼主| 发表于 2010-4-10 00:35 | 只看该作者
    中间有个别题目是用公式编辑器编的,没能显示出来,不过这几道题很简单,题目通过程序代码可以很容易看出来,这里就不重复操作了。

    [ 本帖最后由 tsinjz 于 2010-4-10 00:51 编辑 ]
    回复

    使用道具 举报

    0

    主题

    5

    帖子

    10

    积分

    新手上路

    Rank: 1

    精华
    0
    威望
    0
    K币
    10 元
    注册时间
    2010-4-10
    7
    发表于 2010-4-10 02:41 | 只看该作者
    哇,多谢,呵呵,非常感谢楼主这下上机不用再找了。。。。
    回复

    使用道具 举报

    0

    主题

    5

    帖子

    10

    积分

    新手上路

    Rank: 1

    精华
    0
    威望
    0
    K币
    10 元
    注册时间
    2010-4-10
    8
    发表于 2010-4-10 02:44 | 只看该作者
    强烈建议版主置顶,好帖!!对我们11届太实用了。。。。。
    回复

    使用道具 举报

    0

    主题

    34

    帖子

    105

    积分

    一般战友

    Rank: 2

    精华
    0
    威望
    27
    K币
    78 元
    注册时间
    2009-7-30
    9
    发表于 2010-4-10 09:46 | 只看该作者
    弱弱的问下,上机是给出部分的程序让你填补其中一段还是整个都要自己写出来?感觉这些题目有些难啊
    回复

    使用道具 举报

    4

    主题

    18

    帖子

    51

    积分

    新手上路

    Rank: 1

    精华
    0
    威望
    0
    K币
    51 元
    注册时间
    2009-3-21
    10
    发表于 2010-4-10 10:14 | 只看该作者
    楼主  记得挺全啊
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    本版积分规则   

    关闭

    您还剩5次免费下载资料的机会哦~

    扫描二维码下载资料

    使用手机端考研帮,进入扫一扫
    在“我”中打开扫一扫,
    扫描二维码下载资料

    关于我们|商务合作|小黑屋|手机版|联系我们|服务条款|隐私保护|帮学堂| 网站地图|院校地图|漏洞提交|考研帮

    GMT+8, 2025-12-5 14:47 , Processed in 0.099380 second(s), Total 11, Slave 10(Usage:7.5M, Links:[2]1,1_1) queries , Redis On.

    Powered by Discuz!

    © 2001-2017 考研 Inc.

    快速回复 返回顶部 返回列表
    × 关闭