实验七 指针
This commit is contained in:
parent
ddb7f98b3f
commit
30b9f309c8
17
07/1/1.c
Normal file
17
07/1/1.c
Normal 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
47
07/1/README.md
Normal 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
49
07/2/2.c
Normal 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
62
07/2/README.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
【问题描述】
|
||||||
|
|
||||||
|
输入 `n(0<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
35
07/README.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# 实验七 指针(2学时)
|
||||||
|
|
||||||
|
> 作业时间: 2021-12-06 19:12:00 至 2021-12-26 23:55:00
|
||||||
|
|
||||||
|
# 实验目的
|
||||||
|
|
||||||
|
1. 掌握指针的概念、会定义和使用指针变量;
|
||||||
|
2. 掌握通过指针访问单个变量的方法;
|
||||||
|
3. 了解指针指向数组的使用。
|
||||||
|
|
||||||
|
# 实验器材
|
||||||
|
|
||||||
|
计算机硬件环境:PIII 667以上计算机;软件环境:Visual C,Devc++。
|
||||||
|
|
||||||
|
# 技能要点
|
||||||
|
|
||||||
|
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; 同类型指针变量```
|
@ -66,3 +66,6 @@ A repo to record my study life.
|
|||||||
- [2. 回文数](https://github.com/xtaodada/C-study/tree/master/06-1/2)
|
- [2. 回文数](https://github.com/xtaodada/C-study/tree/master/06-1/2)
|
||||||
- [3. 打印数字金字塔。输入层数,输出金字塔](https://github.com/xtaodada/C-study/tree/master/06-1/3)
|
- [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)
|
- [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)
|
||||||
|
Loading…
Reference in New Issue
Block a user