第1题 (10.0分)  题号:664
题目:已知有结构体类型定义:
      struct node
      {  int data;
        struct node *nextPtr;
      };
          编写函数void  printList(struct node * head),对head指向
          的单向链表,出data成员值为正数的所有结点,输出这些结
          点在链表中的序号(第1个结点序号为1)和data成员值。
答案:
void  printList(struct node * head)
{
    struct node *p;
    int i=1;
    p=head;
    while(p!=NULL)
    {
        if(p->data > 0) cout<<"\n数据:"<<p->data<<" 序号:"<<i;
        i++;
        p=p->nextPtr;
    }
}
第2题 (10.0分)  题号:693
题目:编写一段程序,计算输入流input中第一个$之前的
      字符数目,存入count变量。
答案:while ((ch) && ch != '$')
        count++;
第3题 (10.0分)  题号:592
题目: 用“辗转相除方法”计算两个数 x,y 的最大公约
      数
答案:
n=x%y;
while(n!=0)
{x=y;y=n;n=x%y;}
第4题 (10.0分)  题号:708
题目:从文件中读入n个字符串,将其中以字母A开头的字符串复制
      到二维字符数组str1中。
答案:for(i=0;i<n;i++)
{
  if((strcmp(str[i],"A")>=0)&&(strcmp(str[i],"B")<0))
  { strcpy(str1[j],str[i]);
    j++;
  }
}
第5题 (10.0分)  题号:639
题目:从键盘输入一个正整数n,该正整数可以分解成两个正整数k1
      和k2之和(允许k1和k2相等)。请编写一个函数求使两个正
      整数的乘积最大的分解方案,并返回乘积max。
答案:
    int i,max;
    max = 1*(n-1);
    for(i=2;i<n;i++)
    if(i*(n-i)>max)
    {
        max = i*(n-i);
    }
第6题 (10.0分)  题号:686
题目:写一个函数统计字符串中,大写字母和小写字母
      的个数,并分别保存在全局变量Supper和Low中。
答案:    int i=0;
        while (input[i]!='\0')
        {
                if(input[i]<='Z' &&input[i] >='A')
                        Supper++;
                if (input[i]<='z' &&input[i] >='a')
                        Low++;
                i++;
        }
第7题 (10.0分)  题号:628
题目:求100以内(不含100)能被3整除且个位数为6的所有整数,
答案:
    int i,count=0;
    for(i=0;i<100;i++)
        if(i%3==0 && i%10==6)
        {
            a[count++]=i;
            cout<<i<<" ";
        }
第8题 (10.0分)  题号:647
题目:下面程序中的函数void ins(int a[], int len,int n);
将n插入到一个包含len个从小到大排好序的整数数组a中,插入
后保证数组的有序性。完成该函数的编写。例如:
        a)        调用ins(a, 0,3)后,数组a中为3
        b)        调用ins(a, 1,2)后,数组a中为2,3
        c)        调用ins(a, 2,6)后,数组a中为2,3,6
       
答案:    int i;
    for (i=len;i>0;i--)
    {
        if (i>0 && a[i-1]>n)
            a[i] = a[i-1];
        else
            break;
    }
    a[i] = n;
第9题 (10.0分)  题号:704
题目:编写函数,把一个数字字符组成的字符串转换为相应的整数(如"1234"转换为1234)。
答案:int a2i(char ds[])
{
    int v = 0;
    for(int i=0; ds[i] != '\0'; i++)
    {
        v = v*10 + ds[i]-'0';
    }
    return v;
}
第10题 (10.0分)  题号:728
题目:求400之内的一对亲密对数。
      所谓亲密对数A和B,即A不等于B,且A的所有因子(如,6的因子是1、2、3)
      之和等于B,B的所有因子之和等于A。
      求出的亲密对数存放在A和B中,且A<B。
     
答案: for(int n=1;n<400;n++)
{ int sum_a=0,sum_b=0;
  int a=n,b;
  for(int i=1;i<=a/2;i++)
  {
    if(a%i==0)
    sum_a+=i;
  }
  b=sum_a;
  if(b<=400)
  {
    for(int j=1;j<=b/2;j++)
    {
    if(b%j==0)
      sum_b+=j;
    }
    if(sum_b==a && a!=b)
    {
    A=a;
    B=b;
    break;
    }
  }
}
第11题 (10.0分)  题号:696
题目:请输出个、十、百位数字各不相同的所有三位数,
      结果写入f2.txt中,一个数一行。
要求:输出时按从小到大的顺序输出。
令数组全部的值为0
答案:for(i = 0; i < 10; i++)
        for(j = 0; j < 10; j++)
            for(k = 1; k < 10; k++)
            {
                if(i != j && j != k && i != k)
                {
                    output << k << j << i;
                    count++;
                    if(count == 60)
                    {
                        count = 0;
                        output << endl;
                    }
                    else
                        output << "    ";
                }
            }
第12题 (10.0分)  题号:635
题目:3025这个数具有一种独特的性质:将它平分为二段,即30和25,
使之相加后求平方,即(30+25)*(30+25),恰好等于3025本身。
请求出具有abcd=(ab+cd)*(ab+cd)这样性质的全部四位数并使用变
量num记录满足条件的数的总个数。
要求:调用output()函数将求出的数写入文件f2.txt中,例如output(3025)。
答案:
    int n,a,b;
    for(n=1000;n<10000;n++)
    {
        a=n/100;
        b=n%100;
        if((a+b)*(a+b)==n)
        {
            cout<<n<<' ';
            output(n);
            num++;
        }
    }
第13题 (10.0分)  题号:621
题目: 假设文件 "f1.txt" 和 "f2.txt" 以文本方式分别
      存放着两个长度相同的实数向量,但是具体长度未知 。
      请编写函数
                double prod(char* s1, char* s2)
      求二向量的内积。
      其中,s1 和s2 分别是存放两个向量的文件名。
      (向量的内积公式如图)
答案:ifstream inf1(s1,ios::in);
ifstream inf2(s2,ios::in);
double m, n;
double s=0;
while(inf1>>m && inf2>>n)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。