实验七 指针
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)
|
||||
- [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)
|
||||
|
Loading…
Reference in New Issue
Block a user