实验七 指针

This commit is contained in:
xtaodada 2021-12-06 21:15:31 +08:00
parent ddb7f98b3f
commit 30b9f309c8
No known key found for this signature in database
GPG Key ID: EE4DC37B55E24736
6 changed files with 213 additions and 0 deletions

17
07/1/1.c Normal file
View File

@ -0,0 +1,17 @@
#include<stdio.h>
void calculate(double x,double y,double *he,double *cha,double *ji,double *shang){
*he=x+y;
*cha=x-y;
*ji=x*y;
*shang=x/y;
}
int main(){
double x,y,he,cha,ji,shang;
scanf("%lf %lf",&x,&y);
calculate(x,y,&he,&cha,&ji,&shang);
printf("%g %g %g %g",he,cha,ji,shang);
return 0;
}

47
07/1/README.md Normal file
View File

@ -0,0 +1,47 @@
【问题描述】
编程题:利用指针,设计子函数实现求两个数的和差积商,函数原型如下
```
void calculate(double x,double y,double *he,double *cha,double *ji,double *shang)
```
并设计主函数求1组数的和差积商并输出。
【输入形式】
输入两个数(整数或实数),空格间隔
【输出形式】
输出和差积商,空格间隔,若有小数,按 `%g` 最短格式输出
【样例输入】
```
5 10
```
【样例输出】
```
15 -5 50 0.5
```
【样例说明】
【评分标准】
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:2
平均占用内存:1.990K
平均CPU时间:0.00428S
平均墙钟时间:0.00428S
测试数据 评判结果
测试数据1 完全正确
测试数据2 完全正确

49
07/2/2.c Normal file
View File

@ -0,0 +1,49 @@
#include<stdio.h>
void input(int a[],int n){
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
}
void output(int a[],int n){
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
}
void reserve(int a[],int n){
int temp;
for(int i=0,j=n-1;i<j;i++,j--){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
int find(int a[],int n,int x){
for(int i=0;i<n;i++){
if(a[i]==x) return i;
}
return -1;
}
int main(){
int a[10],n,x,t;
printf("n=\n");
scanf("%d",&n);
printf("输入数据:\n");
input(a,n);
reserve(a,n);
printf("置逆后:\n");
output(a,n);
printf("\n");
for(int i=3;i>0;i--){
printf("x=\n");
scanf("%d",&x);
t=find(a,n,x);
if(t>-1){
printf("下标=%d\n",t);
}
else {
printf("没找到\n");
}
}
return 0;
}

62
07/2/README.md Normal file
View File

@ -0,0 +1,62 @@
【问题描述】
输入 `n0<n<=10`再输入n个数利用指针置逆后重新输出再输入一个要查找的数找到了输出在数组中对应的下标没找到输出no循环3次查找3个数据请设计四个子函数
1. void input(int a[],int n) 实现向数组a输入n个数
2. void output(int a[],int n) 实现将数组a的前n个数输出
3. void reserve(int a[],int n) 实现将数组a的前n个数置逆
4. int find(int a[],int n,int x) 实现在数组a的前n个数中查找x若找到返回元素下标若没找到返回-1.
【样例输入】
```
7
10 20 30 40 50 60 70
20
15
60
```
【样例输出】
```
n=
输入数据:
置逆后:
70 60 50 40 30 20 10
x=
下标=5
x=
没找到
x=
下标=1
```
# 运行结果
成功通过编译, 且无编译警告
共有测试数据:1
平均占用内存:1.953K
平均CPU时间:0.00564S
平均墙钟时间:0.00564S
测试数据 评判结果
测试数据1 完全正确

35
07/README.md Normal file
View File

@ -0,0 +1,35 @@
# 实验七 指针(2学时)
> 作业时间: 2021-12-06 19:12:00 至 2021-12-26 23:55:00
# 实验目的
1. 掌握指针的概念、会定义和使用指针变量;
2. 掌握通过指针访问单个变量的方法;
3. 了解指针指向数组的使用。
# 实验器材
计算机硬件环境PIII 667以上计算机软件环境Visual CDevc++。
# 技能要点
1. 指针的定义,初始化,引用;
2. ``和`*`运算符的使用;
3. 指向数组的指针的定义,初始化,引用;
4. 指针的比较运算例如p>q;
5. 指针与整数的加减运算例如p+i;
6. 使用运算符`[]`,实现用下标法间接访问数组;
7. 使用运算符`*`和`(+` 或 `-)`,实现用指针法间接访问数组。
# 思考题
1. 指针做赋值运算时,赋值运算符右侧可以是那些值?
答:第一,```int x,*p,*q;
p=&x; 同类型变量的地址
q=p; 同类型指针变量```
第二,```int a[10],*p,*q;
p=a; 数组名
p=&a[0] p=a+0; 数组元素地址
q=p; 同类型指针变量```

View File

@ -66,3 +66,6 @@ A repo to record my study life.
- [2. 回文数](https://github.com/xtaodada/C-study/tree/master/06-1/2)
- [3. 打印数字金字塔。输入层数,输出金字塔](https://github.com/xtaodada/C-study/tree/master/06-1/3)
- [4. 实验9——函数基础——两点间的距离](https://github.com/xtaodada/C-study/tree/master/06-1/4)
- [实验七 指针(2学时)](https://github.com/xtaodada/C-study/tree/master/07)
- [1. 利用指针,设计子函数实现求两个数的和差积商](https://github.com/xtaodada/C-study/tree/master/07/1)
- [2. 对一组数据置逆,查找操作](https://github.com/xtaodada/C-study/tree/master/07/2)