实验3  数组与指针
程序填空
1.
本题分值:10
题目描述:
随机产生10个整数存放到数组中(下标0的位置不放,从下标1开始),输入待查的整数x,查x是否存在于这10个数中。若存在,则输出x(最初)出现在这批数中的位置序号(例如1或2或……);若不存在x,则输出“不存在”。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
代码:
#include <iostream>
using  namespace  std;
int main( )
{
    int a[101],k,x;
    for(k=1;k<=10;k++)  //从数组中下标1的元素开始存放数据
    {
        a[k]=rand( )%101;    //产生0~100之间的的整数
//        cout<<a[k]<<"  ";
    }
//    cout<<endl;
    cin>>x; //输入待查数x
    for(k=1;k<=10;k++)
        if(a[k]==x) __(1)__; //若发现了x,则不用继续循环、继续查
    if(k__(2)__)
      cout<<"x存在,它的位置序号是:"<<__(3)__<<endl;
    else
      cout<<"不存在!"<<endl;
    return 0;
}
参考答案:sy3-1.cpp
2.
本题分值:10
题目描述:
编写一个程序,可以根据用户输入的不同值,建立不同长度的整型数组。给这个数组赋值,并求其所有元素之和。请填空使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。
代码:
#include<iostream>
using namespace std;
int main()
{
    int n,i,sum=0,*p;
    cin>>n; //输入一个整数n
    p=new int[__(1)__];  //创建一个含有n个整数的整数数组
    for(i=0;i<n;i++)    //输入n个整数存于动态数组p中
        cin>>__(2)__;string字符串转化数组
    for(i=0;i<n;i++)  //求动态数组中的所有整数之和
        sum=sum+*(p+i);
    cout<<sum<<endl;    //显示结果
    delete __(3)__; //删除动态数组p
    return 0;
}
参考答案:sy2-2.cpp
3.
本题分值:10
题目描述:
输入5个整数依次存放到数组a中(从下标1开始存放),再输入待插入的整数x以及它要插入到数组中的位置下标k(1≤k≤5),要求插入后不影响a中原来下标为k到5的所有元素的先后顺序。请按照数组中的元素顺序,输出插入前的5个整数和插入后的这6个整数。提示:插入时,应该先从后往前地(从下标5到下标k)将每个数组元素都后移1个位置,最后再将x存放到下标k的元素中。请在计算机上调试以下程序以补足其中的空格。
代码:
#include <iostream>
using  namespace  std;
int main( )
{
    int a[101],k,j,x;
    //分别输入5个整数
    for(j=1;j<=5;j++) cin>>a[j];
    cin>>x>>k; //输入待插入的数x和插入的位置下标k
    if(k<1 || k>5)  return 0;
    for(j=5;j>=k; __(1)__) //从下标5到下标k,将每个数组元素都后移1个位置
        a[j+1]=a[j];
    __(2)__=x;
    //输出将x插入到下标k后的这6个数
    for(j=1;j__(3)__;j++) cout<<a[j]<<"  ";
    cout<<endl;
    return 0;
}
参考答案:sy3-3.cpp
4.
本题分值:10
题目描述:
输入字符串s及待删除的字符ch,将s中所有与ch相同的字符都删除掉,输出删除后得到的新串。以下程序是直接在数组s中进行删除,得到的新串仍然在数组s中。请在计算机上调试该程序以补足其中的空格。
代码:
#include <iostream>
using  namespace  std;
int main( )
{
    char  s[81], ch;
    int k,j;
    cin>>s;    //输入一个字符串后按回车键,该字符串存入s中
    cin>>ch; //输入待删除的字符后按回车键
    //k代表s中每个字符的下标
    //j代表未删除(保留)字符应放在s中新的位置下标
    for(k=j=0;s[k]!='\0';k++)
        if(s[k]!=ch)
        {
            s[j]= __(1)__;
            __(2)__;
        }
    __(3)__='\0'; //得到的新串末尾要放结束符
    cout<<s<<endl;
    return 0;
}
参考答案:sy3-4.cpp
5.
本题分值:10
题目描述:
输入一行字符串,分别统计其中英文字母、空格、数字和其他字符的个数,并输出。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。
代码:
#include<iostream>
using namespace std;
int main()
{
    int a,b,c,d;//a,b,c,d分别用来记录英文字母、空格、数字和其他字符的个数
    char s[101],*p;
    p=s;    //指针p指向字符串s的第一个字符
    line(s,101); //输入一个含有空格的字符串存入s中
    a=b=c=d=__(1)__;
    while(__(2)__)  //当p指向的字符不是字符串结束标记时循环
    {
        if(*p>='A'&&*p<='Z' || *p>='a'&&*p<='z')//如果p指向的是一个英文字母字符
            a++;
        else
            if (*p==' ')    //如果p指向的是一个数字字符
                b++;
            else
                if(__(3)__)    //如果p指向的是一个数字字符
                    c++;
                else
                    __(4)__;
        p++;//使指针p指向字符串中的下一个字符
    }
    cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;  //输出英文字母、空格、数字和其他字符的个数
    return 0;
}
参考答案:sy3-5.cpp
程序设计
6.
本题分值:10
题目标题:陶陶摘苹果。
时间限制:1000MS
内存限制:32768KB
题目描述:
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
输入描述:
输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出描述:
输出只包含一个整数,表示陶陶能够摘到的苹果的数目。
样例输入:
100 200 150 140 129 134 167 198 200 111
110
样例输出:
5
参考答案:
#include<iostream>
using namespace std;
void main()
{
int i,a[10],height,count=0;
for(i=0;i<10;i++)
  cin>>a[i];
    cin>>height;
height=height+30;
for(i=0;i<10;i++)
{
  if(height>=a[i])

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