21xrx.com
2024-12-22 21:21:57 Sunday
登录
文章检索 我的文章 写文章
C++期末考试编程题答案及解析
2023-07-09 11:05:43 深夜i     --     --
C++ 期末考试 编程题 答案 解析

本次C++期末考试编程题共分为3道,下面将一一给出答案及解析。

题目一:给定一个整数n,实现一个算法,判断n是否为素数。

答案及解析:


bool isPrime(int n){

  if(n<=1)

    return false;

  for(int i=2;i*i<=n;i++){

    if(n%i==0)

      return false;

  }

  return true;

}

首先判断n是否小于等于1,若是则返回false;然后从2遍历到sqrt(n),若n可以被i整除,则返回false;否则,返回true。

题目二:给定一个整数n,实现一个算法,输出n行由*组成的等腰直角三角形。

答案及解析:


void triangle(int n){

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

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

      cout<<"* ";

    }

    cout<<endl;

  }

}

首先从1遍历到n,每遍历一次就输出i个*。

题目三:给定一个整数数组a和一个整数n,实现一个算法,输出数组a中所有和为n的数对。

答案及解析:


void findPair(int a[], int n, int sum){

  unordered_map<int, int> mp;

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

    int diff=sum-a[i];

    if(mp.find(diff)!=mp.end())

      cout<<"("<<diff<<","<<a[i]<<") ";

    mp[a[i]]=i;

  }

}

首先创建一个哈希表,用来存储数组中已经遍历过的值及其下标。遍历数组,计算当前值与目标和的差值,然后在哈希表中查找是否存在该差值,若存在,则输出该数对;若不存在,则将当前值存入哈希表。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复