1按如下递归公式求函数值:x=1时 f(x)=10;x不等于1时 f(x)=f(x-1)+2。
递归算法,函数定义是递归的,可直接使用
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int f(int x)
{
    if(x==1)
        return 10;
    else
        return f(x-1)+2;
}
int main()
{
    int x;
    cin>>x;
    cout<<f(x)<<endl;

}
1凯撒密码的加密方法是:给定一串字符,把其中每个大写字母变换成按顺序向后移N位的字母,遇到26个字母结束要环回到字母A计算顺序,其他字符不变。编程实现凯撒加密,输出密文。
判断如果字符在 'A' 和‘Z'-N  之间 直接加N
              否则'Z'-N和‘Z'之间,直接加N会超过’Z',为了回还到A,减去26(英文字母的个数)
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int main()
{
    string s;
    int i,N;
    cin>>N>>s;
 //   cout<<N<<endl<<s<<endl;
    for(i=0;s[i]!='\0';i++)
    {  // cout<<s[i]<<endl;
        if(s[i]>='A' && s[i]<='Z'-N)
            s[i]=s[i]+N;
        else if(s[i]>'Z'-N &&s[i]<='Z')
             s[i]=s[i]+N-26;
    }
    cout<<s<<endl;

}

1平面直角坐标系下两点A(x1,x2)、B(y1,y2),它们之间的欧氏距离为:sqrt((x1-y1)*(x1-y1)+(x2-y2)*(x2-y2))。扩展到N维空间,每个点的坐标有N维,例如点A(x1,x2,......,xN),类似地也可以计算两点之间的欧氏距离。编程计算N位向量的欧氏距离。(2分)

#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
#define Maxsize 100
int main()
{
    int a[Maxsize],b[Maxsize],N,i;
    double result;
    cin>>N;
    for(i=0;i<N;i++)
        cin>>a[i];
    for(i=0;i<N;i++)
        cin>>b[i];
    for(i=0;i<N;i++)
        result=result+(a[i]-b[i])*(a[i]-b[i]);
    result=sqrt(result);
    cout<<fixed<<setprecision(2)<<result<<endl;

}

另外解法,可以采用动态数组,就用到指针,new和delete的使用,这里是考查动态数组,数组名和指针之间的关系,也可以用函数实现求距离。


#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;

int main()
{
    int *a,*b,N,i;
    double result;
    cin>>N;
    a=new int[N];
    b=new int[N];
    for(i=0;i<N;i++)
        cin>>a[i];
    for(i=0;i<N;i++)
        cin>>b[i];
    for(i=0;i<N;i++)
        result=result+(a[i]-b[i])*(a[i]-b[i]);
    result=sqrt(result);
    cout<<fixed<<setprecision(2)<<result<<endl;
    delete a;
    delete b;


}

用函数实现求距离,注意参数的传递方式,实际有多种方式,包括对指针的使用


#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
double distance_N(int *p1,int *p2,int n)
{   int i;
    double result;
    for(i=0;i<n;i++)
        result=result+(p1[i]-p2[i])*(p1[i]-p2[i]);
    result=sqrt(result);
    return result;
   // cout<<result<<endl;
}

int main()
{
    int *a,*b,N,i;
    double result;
    cin>>N;
    a=new int[N];
    b=new int[N];
    for(i=0;i<N;i++)
        cin>>a[i];
    for(i=0;i<N;i++)
        cin>>b[i];

    cout<<fixed<<setprecision(2)<<distance_N(a,b,N)<<endl;
    delete a;
    delete b;


}

1编写一个函数get_average()获取整型数组元素的平均值。要求这个函数既可以用来求一维数组元素的平均值,也可以求二维数组元素的平均值。在main()函数中通过具体的一维数组Array_1D和二维数组Array_2D测试这个函数。假定一维数组为a[5],二维数组为b[2][3],一维数组和二维数组的变量值由键盘分别输入,在屏幕上输出一维数组和二维数组的平均值,平均值间用一个空格分开。(2分)
指针这块命题,是考查一维数组和二维数组的存储和指针的使用。
函数是采用一维指针进行书写,当实际参数时二维数组的时候,传入其第一个元素的地址
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
#define Maxsize 100
int  get_average(int *p,int n)
{
    int sum=0,i;
    for(i=0;i<n;i++)
        sum=sum+p[i];
    return sum/n;
}
int main()
{
    int a[5],b[2][3],i,j;
    for(i=0;i<5;i++)
        cin>>a[i];
    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
           cin>>b[i][j];
    cout<<get_average(a,5)<<' '<<get_average(&b[0][0],6)<<endl;

}
 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐