第8周基础练习
依照学术诚信条款,我保证此作业是本人独立完成的。
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
1使用指针输出数组元素(10分)
题目内容:
编写程序,定义大小为20的整型数组,通过指针输入数组元素(9999为结束标志),数据超过20时只接收前20个。通过指针输出数组元素,用空格隔开。
输入:一行中输入若干整数,用空格隔开,9999表示结束。
输出:一行中输出数组元素,用一个空格隔开,末尾无空格。
【注意】本题输入输出不是问题,关键是要用指针操作。除定义数组外,后面的程序中不应出现下标运算。
样例1输入:
1 2 3 4 5 9999
样例1输出:
1 2 3 4 5
时间限制:500ms内存限制:32000kb
C++
#include
using namespace std;
int const N = 20;
int a[N];
int input(int *p) {
int n = 0;
cin >> *p;
while (*p != 9999) {
if (++n == N)break;
cin >> *(++p);
}
return n;
}
void print(int *p, int n) {
cout << *p++;
n--;
while (n) {
if (*p == 9999)break;
cout << " " << *p++;
n--;
}
}
int main() {
print(a, input(a));
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 3ms 236kb
5
用例2通过 2ms 368kb
5
提交答案本次得分/总分:10.00/10.00分
2通过指针输入输出数组元素的函数(10分)
题目内容:
编写两个函数,分别通过指针输入输出数组元素。编写主函数,定义数组,调用函数输入、输出数组元素。输入结束标志位9999,输出数据在一行中用空格隔开,末尾无空格。数据个数不超过100个。函数格式如下:
int input(int *p); //输入,返回输入的元素个数
void print(int *p,int n); //显示数组元素,n为元素个数
输入:一行中输入若干整数,用空格隔开,9999表示结束。
输出:一行中输出数组元素,用一个空格隔开,末尾无空格。
【注意】本题一要用函数,二要用指针,函数中不出现下标运算。主函中数组的定义仍可以用静态数组。
样例1输入:
1 2 3 4 5 9999
样例1输出:
1 2 3 4 5
时间限制:500ms内存限制:32000kb
C++
#include
using namespace std;
int const N = 120;
int a[N];
int input(int *p) {
int n = 0;
cin >> *p;
while (*p != 9999) {
if (++n == N)break;
cin >> *(++p);
}
return n;
}
void print(int *p, int n) {
cout << *p++;
n--;
while (n) {
if (*p == 9999)break;
cout << " " << *p++;
n--;
}
}
int main() {
print(a, input(a));
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 15ms 256kb
5
用例2通过 2ms 360kb
5
提交答案本次得分/总分:10.00/10.00分
3指针实现字符串复制函数(10分)
题目内容:
编写字符串复制的函数,用指针实现。函数格式为:
char * mystrcpy(char *s1,char *s2); //将s2中的内容复制到s1中,返回s1首地址。
编写主函数,输入字符串到s2中,调用函数实现复制,直接输出复制结果。函数调用格式如下:
cout<
字符串长度不超过100,函数中不出现下标运算,不使用字符串处理库函数,不使用string类。
输入:一个字符串
输出:一个字符串
【注意】本题的输入、输出相同,结果不是问题,关键一是用指针,二是用函数,三是返回指针,四是利用了返回的指针。
样例1输入:
copy
样例1输出:
copy
时间限制:500ms内存限制:32000kb
C++
#include
using namespace std;
int const N = 120;
char * mystrcpy(char *s1, char *s2){
char *p = s1;
while (*s2)*(s1++) = *(s2++);
*s1 = '\0';
return p;
}
int main() {
char *str1 = new char[N],
*str2 = new char[N];
cin >> str2;
str1 = mystrcpy(str1, str2);
cout << str1;
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 380kb
5
用例2通过 2ms 256kb
5
提交答案本次得分/总分:10.00/10.00分
4指针实现字符串比较(10分)
题目内容:
编写函数,用指针实现字符串的比较,不区分大小写,若s1>s2返回1,若s1 int mystrcmp(char *s1,char *s2); 在主函数中定义字符数组,输入字符串,调用函数进行比较,在主函数中输出结果。 注意,必须用字符数组和指针,函数中不出现下标运算,不能使用字符串处理库函数,也不能使用string类。字符串的长度不超过200. 输入:两个英文字符串,用空格隔开。 输出:1,0,或-1 【提示】关于不区分大小写,即"ABC"和"abc"被认为是相同的。实现方法是在比较字符时,如果是字母,将它们转为小写或大写(用一个函数实现,但不改变原字符),再比较。 【注意】本题的关键是用函数和指针实现。还有就是不区分大小写。 样例1输入: abc ABC 样例1输出: 0 时间限制:500ms内存限制:32000kb 用例测试结果 运行时间 占用内存 提示 得分 定义结构体PERSON表示一个人的基本信息,成员包含姓名(char),性别(char),年龄(int)。在主函数中定义结构体变量,通过指针输入一个人的信息,通过指针输出这个人的信息。 输入:姓名、性别、年龄,用空格隔开。 输出:姓名、性别、年龄,用空格隔开,末尾无空格。 样例1输入: Zhang male 20 样例1输出: Zhang male 20 【参考程序】 时间限制:500ms内存限制:32000kb 用例测试结果 运行时间 占用内存 提示 得分 定义结构体PERSON表示一个人的基本信息,成员包含姓名(char),性别(char),年龄(int)。在主函数中定义结构体数组表示一个班级(不超过50人),通过指针若干人的信息,输入三个0时表示结束,通过指针逆序输出这些人的信息。字符串的比较可以使用字符串处理库函数。 输入:若干行,每行是一个人的信息,用空格隔开。最后一行是0 0 0 表示结束。 输出:逆序输出人员信息,每行一人,个人信息各项用一个 空格隔开,末尾无空格。 样例1输入: zhao male 18 qian female 17 sun male 19 0 0 0 样例1输出: sun male 19 qian female 17 zhao male 18 【参考程序】 时间限制:500ms内存限制:32000kb 用例测试结果 运行时间 占用内存 提示 得分 编写程序,输入整数n,动态申请能存放n个double型数据的空间(动态数组),输入若干实数,以9999表示结束,实际个数不超过最大个数n,逆序输出数据。 输入:两行,第一行是元素最大个数;第1行是若干实数,用空格隔开,9999表示结束。 输出:逆序输出若干实数,用一个空格隔开,末尾无空格。 【注意】关键是动态和指针,程序中不出现下标运算。注意释放空间。 样例1输入: 20 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 9999 样例1输出: 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 【参考程序】 时间限制:500ms内存限制:32000kb 用例测试结果 运行时间 占用内存 提示 得分 定义结构体PERSON表示一个人的基本信息,成员包含姓名(char),性别(char),年龄(int)。在主函数中输入正整数n,动态申请能存放n个人的基本信息的存储空间,通过指针输入若干人的信息,输入三个0时表示结束,通过指针逆序输出这些人的信息。实际人数不超过n,字符串的比较可以使用字符串处理库函数。 输入:若干行,第1行是最大人数,以后每行是一个人的信息,用空格隔开。最后一行是0 0 0 表示结束。 输出:逆序输出人员信息,每行一人,个人信息各项用一个空格隔开,末尾无空格。 样例1输入: 10 zhao male 18 qian female 17 sun male 19 0 0 0 样例1输出: sun male 19 qian female 17 zhao male 18 【参考程序】 时间限制:500ms内存限制:32000kb 用例测试结果 运行时间 占用内存 提示 得分 定义结构体PERSON表示一个人的基本信息,成员包含姓名(char),性别(char),年龄(int)。在主函数中输入正整数n,动态申请能存放n个人的基本信息的存储空间,通过指针输入若干人的信息,输入三个0时表示结束,实际人数不超过n。根据实际人数再动态申请一个结构体数组,将输入的数据逆序复制到新的结构体数组中,通过指针输出这些人的信息。字符串的比较可以使用字符串处理库函数。 输入:若干行,第1行是最大人数,以后每行是一个人的信息,用空格隔开。最后一行是0 0 0 表示结束。 输出:逆序输出人员信息,每行一人,个人信息各项用一个空格隔开,末尾无空格。 【注意】关键一是动态申请存储空间,二是指针操作,程序中不出现下标运算;三是真正实现复制。 样例1输入: 10 zhao male 18 qian female 17 sun male 19 0 0 0 样例1输出: sun male 19 qian female 17 zhao male 18 时间限制:500ms内存限制:32000kb 用例测试结果 运行时间 占用内存 提示 得分
C++#include
用例1通过 3ms 380kb
2
用例2通过 2ms 228kb
2
用例3通过 2ms 372kb
1
用例4通过 3ms 364kb
1
用例5通过 2ms 376kb
1
用例6通过 3ms 364kb
1
用例7通过 3ms 360kb
1
用例8通过 3ms 360kb
1
提交答案本次得分/总分:10.00/10.00分
5通过指针访问结构体变量(10分)
题目内容:
C++#include
用例1通过 14ms 360kb
10
提交答案本次得分/总分:10.00/10.00分
6通过指针访问结构体数组(10分)
题目内容:
C++#include
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 372kb
10
提交答案本次得分/总分:10.00/10.00分
7动态申请变量(10分)
题目内容:
编写动态申请三个存放整数的存储单元,输入三个整数,输出它们的和。
输入:三个整数,用空格隔开。
输出:整数
【注意】输入、计算、输出都不是问题,关键是存放整数的空间是用new申请的。
样例1输入:
1 2 3
样例1输出:
6
【参考程序】
时间限制:500ms内存限制:32000kb
C++
```cpp
#include
用例1通过 2ms 368kb
3
用例2通过 2ms 380kb
3
用例3通过 2ms 376kb
2
用例4通过 19ms 380kb
2
提交答案本次得分/总分:10.00/10.00分
8动态申请数组(10分)
题目内容:
C++#include
用例1通过 3ms 360kb
4
用例2通过 2ms 356kb
3
用例3通过 3ms 364kb
3
提交答案本次得分/总分:10.00/10.00分
9动态申请结构体数组(10分)
题目内容:
C++#include
用例1通过 3ms 256kb
4
用例2通过 2ms 368kb
3
用例3通过 2ms 256kb
3
提交答案本次得分/总分:10.00/10.00分
10动态申请结构体数组空间和结构体数组复制(10分)
题目内容:
C++#include
用例1通过 2ms 256kb
3
用例2通过 3ms 256kb
3
用例3通过 2ms 368kb
4
提交答案本次得分/总分:10.00/10.00分