实验3-数组与指针
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码:
#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;
{
p[i] -= 32;
continue;
}
if (p[i] >= 'A' && p[i] <= 'Z')
{
p[i] += 32;
continue;
}
}
cout << p << endl;
return ;
}
sy3-9.cpp
10.
本题分值:10
题目标题:打印极值点下标。
时间限制:3000MS
内存限制:32768KB
ILoveC++!
样例输出:
ilOVEc++!
参考答案:#include <iostream>
using namespace std;
void main()
{
char*p = new char[];
cin >> p;
for (int i = 0; i < strlen(p); i++)
{
if (p[i] >= 'a' && p[i] <= 'z')
提示:定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(’\0’之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。
输入描述:输入一行:密文字符串。
输出描述:输出有一行:翻译后的明文字符串。
样例输入:
Coheifnia
代码:
#include<iostream>
usingnamespace std;
int main()
{
int a,b,c,d;//a,b,c,d分别用来记录英文字母、空格、数字和其他字符的个数
char s[101],*p;
p=s; //指针p指向字符串s的第一个字符
cin.getline(s,101); //输入一个含有空格的字符串存入s中
实验
程序填空
1.
本题分值:10
题目描述:
随机产生10个整数存放到数组中(下标0的位置不放,从下标1开始),输入待查找的整数x,查找x是否存在于这10个数中。若存在,则输出x(最初)出现在这批数中的位置序号(例如1或2或……);若不存在x,则输出“不存在”。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
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
输入描述:
依次输入6位评委的打分score1~score6,每个scorei都是double型,且满足0≤scorei≤100。
输出描述:
输出一行,表示该选手的最后得分。
提示:输出时不需要对精度特殊控制,用cout<<ANSWER即可。
样例输入:
78.8 92.3 87.6 94.8 85.8 94.8
return 0;
}
参考答案:sy3-1.cpp
2.
本题分值:10
题目描述:
编写一个程序,可以根据用户输入的不同值,建立不同长度的整型数组。给这个数组赋值,并求其所有元素之和。请填空使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。
代码:
#include<iostream>
using namespace std;
题目描述:
插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。
else
if(__(3)__) //如果p指向的是一个数字字符
c++;
else
__(4)__;
p++;//使指针p指向字符串中的下一个字符
}
cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl; //输出英文字母、空格、数字和其他字符的个数
return 0;
}
参考答案:sy3-5.cpp
for(j=k=0;ci[j]!='\0';j++)
if(j%2==0)
{
pl[k]=ci[j];
k++;
}
pl[k]='\0';
cout<<pl<<endl;
return 0;
}
sy3-8.cpp
9.
本题分值:10
题目标题:字符串大小写转换。
时间限制:1000MS
内存限制:32768KB
题目描述:
输入描述:
输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出描述:
代码:
#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]<<" ";
for(i=0;i<10;i++)
cin>>a[i];
cin>>height;
height=height+30;
for(i=0;i<10;i++)
{
if(height>=a[i])
count++;
}
cout<<count<<endl;
}
sy3-6.cpp
7.
本题分值:10
题目标题:歌唱比赛选手成绩计算。
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
题目描述:
输入一行字符串,分别统计其中英文字母、空格、数字和其他字符的个数,并输出。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。
输出只包含一个整数,表示陶陶能够摘到的苹果的数目。
样例输入:
100 200 150 140 129 134 167 198 200 111
110
样例输出:
5
参wenku.baidu.com答案:
#include<iostream>
using namespace std;
void main()
{
int i,a[10],height,count=0;
cin>>score[0]>>score[1]>>score[2]>>score[3]>>score[4]>>score[5];
for (i = 0; i< 6; i++)
{
sum = sum + score[i];
if (score[i] > max)
{
max = score[i];
}
if (score[i] < min)
4.
本题分值:10
题目描述:
输入字符串s及待删除的字符ch,将s中所有与ch相同的字符都删除掉,输出删除后得到的新串。以下程序是直接在数组s中进行删除,得到的新串仍然在数组s中。请在计算机上调试该程序以补足其中的空格。
代码:
#include <iostream>
using namespace std;
程序设计
6.
本题分值:10
题目标题:陶陶摘苹果。
时间限制:1000MS
内存限制:32768KB
题目描述:
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
{
min = score[i];
}
}
sum = sum - max - min;
x = sum / 4;
cout << "该选手的最后得分:" << x << endl;
return 0;
}
sy3-7.cpp
8.
本题分值:10
题目标题:神秘的字符加、解密技术。
时间限制:1000MS
内存限制:32768KB
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的元素中。请在计算机上调试以下程序以补足其中的空格。
int main()
{
intn,i,sum=0,*p;
cin>>n; //输入一个整数n
p=new int[__(1)__]; //创建一个含有n个整数的整数数组
for(i=0;i<n;i++) //输入n个整数存于动态数组p中
cin>>__(2)__;
for(i=0;i<n;i++) //求动态数组中的所有整数之和
a=b=c=d=__(1)__;
while(__(2)__) //当p指向的字符不是字符串结束标记时循环
{
if(*p>='A'&&*p<='Z' || *p>='a'&&*p<='z')//如果p指向的是一个英文字母字符
a++;
else
if (*p==' ') //如果p指向的是一个数字字符
b++;
}
//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;
输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。
要求用指针对字符串进行处理。
输入描述:
输入一行:长度小于20的不含空格的字符串。
输出描述:
输出一行:处理以后的字符串。
样例输入:
样例输出:
China
参考答案:#include <string>
#include <iostream>
using namespace std;
int main( )
{
char ci[81],pl[81]; //ci存放密文、pl存放明文
int j,k; //j,k分别记录ci串和pl串中的下标
cin>>ci; //首先输入密文
样例输出:
90.125
参考答案:#include <iostream>
using namespace std;
int main()
{
int i;
double score[6];
double max = -1;
double min = 200;
double sum = 0.0;
double x = 0.0;
时间限制:1000MS
内存限制:32768KB
题目描述:
歌唱大赛选手成绩这样计算:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。
提示:将6个评分存入score数组中。关键是求出其中的最大值max(即最高分)和最小值min(即最低分)。
题目描述:
在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。
#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;
{
p[i] -= 32;
continue;
}
if (p[i] >= 'A' && p[i] <= 'Z')
{
p[i] += 32;
continue;
}
}
cout << p << endl;
return ;
}
sy3-9.cpp
10.
本题分值:10
题目标题:打印极值点下标。
时间限制:3000MS
内存限制:32768KB
ILoveC++!
样例输出:
ilOVEc++!
参考答案:#include <iostream>
using namespace std;
void main()
{
char*p = new char[];
cin >> p;
for (int i = 0; i < strlen(p); i++)
{
if (p[i] >= 'a' && p[i] <= 'z')
提示:定义两个字符数组ci和pl,分别存放密文字符串和明文字符串。解密过程即在字符串ci中,从下标0的字符(首字符)开始,将偶数下标的字符(’\0’之前的)依次取出赋值到字符数组pl中,最后即得到明文字符串。
输入描述:输入一行:密文字符串。
输出描述:输出有一行:翻译后的明文字符串。
样例输入:
Coheifnia
代码:
#include<iostream>
usingnamespace std;
int main()
{
int a,b,c,d;//a,b,c,d分别用来记录英文字母、空格、数字和其他字符的个数
char s[101],*p;
p=s; //指针p指向字符串s的第一个字符
cin.getline(s,101); //输入一个含有空格的字符串存入s中
实验
程序填空
1.
本题分值:10
题目描述:
随机产生10个整数存放到数组中(下标0的位置不放,从下标1开始),输入待查找的整数x,查找x是否存在于这10个数中。若存在,则输出x(最初)出现在这批数中的位置序号(例如1或2或……);若不存在x,则输出“不存在”。以下是完成此项工作的程序,请在计算机上调试程序以补足其中的空格。
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
输入描述:
依次输入6位评委的打分score1~score6,每个scorei都是double型,且满足0≤scorei≤100。
输出描述:
输出一行,表示该选手的最后得分。
提示:输出时不需要对精度特殊控制,用cout<<ANSWER即可。
样例输入:
78.8 92.3 87.6 94.8 85.8 94.8
return 0;
}
参考答案:sy3-1.cpp
2.
本题分值:10
题目描述:
编写一个程序,可以根据用户输入的不同值,建立不同长度的整型数组。给这个数组赋值,并求其所有元素之和。请填空使程序完整,并在计算机上调试程序,以测试填入的部分是否正确。
代码:
#include<iostream>
using namespace std;
题目描述:
插入式加密法是信息加密中一种简单的加密技术,其方法是在明文字符中插入一些无意义的字母来形成密文单词。例如,对于明文:China,在间隔为1的位置依次插入一个字母而形成密文:Coheifnia。因此,其解密过程与加密过程相反,即从密文中首字符开始取,每间隔1个位置依次取出字符,就得到原始的明文。请编程实现插入式加密法所对应的解密算法,将密文翻译成明文。
else
if(__(3)__) //如果p指向的是一个数字字符
c++;
else
__(4)__;
p++;//使指针p指向字符串中的下一个字符
}
cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl; //输出英文字母、空格、数字和其他字符的个数
return 0;
}
参考答案:sy3-5.cpp
for(j=k=0;ci[j]!='\0';j++)
if(j%2==0)
{
pl[k]=ci[j];
k++;
}
pl[k]='\0';
cout<<pl<<endl;
return 0;
}
sy3-8.cpp
9.
本题分值:10
题目标题:字符串大小写转换。
时间限制:1000MS
内存限制:32768KB
题目描述:
输入描述:
输入包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出描述:
代码:
#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]<<" ";
for(i=0;i<10;i++)
cin>>a[i];
cin>>height;
height=height+30;
for(i=0;i<10;i++)
{
if(height>=a[i])
count++;
}
cout<<count<<endl;
}
sy3-6.cpp
7.
本题分值:10
题目标题:歌唱比赛选手成绩计算。
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
题目描述:
输入一行字符串,分别统计其中英文字母、空格、数字和其他字符的个数,并输出。请阅读以下不完整的程序,并在计算机上调试该程序以补足其中的空格,实现其功能。
输出只包含一个整数,表示陶陶能够摘到的苹果的数目。
样例输入:
100 200 150 140 129 134 167 198 200 111
110
样例输出:
5
参wenku.baidu.com答案:
#include<iostream>
using namespace std;
void main()
{
int i,a[10],height,count=0;
cin>>score[0]>>score[1]>>score[2]>>score[3]>>score[4]>>score[5];
for (i = 0; i< 6; i++)
{
sum = sum + score[i];
if (score[i] > max)
{
max = score[i];
}
if (score[i] < min)
4.
本题分值:10
题目描述:
输入字符串s及待删除的字符ch,将s中所有与ch相同的字符都删除掉,输出删除后得到的新串。以下程序是直接在数组s中进行删除,得到的新串仍然在数组s中。请在计算机上调试该程序以补足其中的空格。
代码:
#include <iostream>
using namespace std;
程序设计
6.
本题分值:10
题目标题:陶陶摘苹果。
时间限制:1000MS
内存限制:32768KB
题目描述:
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
{
min = score[i];
}
}
sum = sum - max - min;
x = sum / 4;
cout << "该选手的最后得分:" << x << endl;
return 0;
}
sy3-7.cpp
8.
本题分值:10
题目标题:神秘的字符加、解密技术。
时间限制:1000MS
内存限制:32768KB
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的元素中。请在计算机上调试以下程序以补足其中的空格。
int main()
{
intn,i,sum=0,*p;
cin>>n; //输入一个整数n
p=new int[__(1)__]; //创建一个含有n个整数的整数数组
for(i=0;i<n;i++) //输入n个整数存于动态数组p中
cin>>__(2)__;
for(i=0;i<n;i++) //求动态数组中的所有整数之和
a=b=c=d=__(1)__;
while(__(2)__) //当p指向的字符不是字符串结束标记时循环
{
if(*p>='A'&&*p<='Z' || *p>='a'&&*p<='z')//如果p指向的是一个英文字母字符
a++;
else
if (*p==' ') //如果p指向的是一个数字字符
b++;
}
//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;
输入一个长度小于20的不含空格的字符串,然后对该字符串做如下处理:对字符串中的每个字符,如果是大写字母,将其转化为小写;如果是小写字母,将其转化为大写,最后将处理后的字符串输出。
要求用指针对字符串进行处理。
输入描述:
输入一行:长度小于20的不含空格的字符串。
输出描述:
输出一行:处理以后的字符串。
样例输入:
样例输出:
China
参考答案:#include <string>
#include <iostream>
using namespace std;
int main( )
{
char ci[81],pl[81]; //ci存放密文、pl存放明文
int j,k; //j,k分别记录ci串和pl串中的下标
cin>>ci; //首先输入密文
样例输出:
90.125
参考答案:#include <iostream>
using namespace std;
int main()
{
int i;
double score[6];
double max = -1;
double min = 200;
double sum = 0.0;
double x = 0.0;
时间限制:1000MS
内存限制:32768KB
题目描述:
歌唱大赛选手成绩这样计算:去掉一个最高分,去掉一个最低分,将剩下分数的平均值作为选手的最后得分。现假设共有6位评委,都是按百分制打分,请编程计算选手的成绩。
提示:将6个评分存入score数组中。关键是求出其中的最大值max(即最高分)和最小值min(即最低分)。
题目描述:
在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。