实验报告(2019年6月12日)

c程序实验报告

姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月30日
实验项目:
???1、指针基础及指针运算
???2、数据交换
???3、输出指定行数的杨辉三角形
???4、数组元素奇偶排列

一、实验目的与要求

1.指针基础及指针运算

● 本实验旨在及爱情学生对指针数据类型的理解,熟悉指针的定义、通过指针间接访问变量

2.数据交换

● 本实验旨在加强学生对指针类型作为函数参数传递的理解,通常将实参传递给形参时,有两种方式,即按值传递和按地址传递,其中指针类型参数即是按地址。
实验要求:
● 定义两个函数,分别为void swap1(int a ,int b)和void swawp2(int a,int b),用于交换a,b的值。
● 从主函数中分别输入两个整型变量a、b
●从主函数中分别调用上述两个交换函数,并打印输出交换后a、b的结果

3.字符串翻转及字符串连接

● 本实验旨在加强学生对字符指针以及将指针作为函数的返回类型的理解,并通过指针对字符串进行操作,通常来说,一个字符串在内存中是连续存放的,起开始地址为指向该字符串的指针值,字符串均以‘\0‘作为结束字符
实验要求
●定义两个字符指针,通过gets()函数输入两个字符串
●定义一个函数charreverse(char str),通过指针移动方式将字符串反转
●定义一个函数charlink(charstr1,char *str2),通过指针移动方式将两个字符串连接起来。
●从主函数中分别调用上述函数,输入字符串并打印输出结果。

4.数组元素奇偶排列

●本实验旨在加强学生对使用指针对数组进行操作的理解,通常数组的名称及整个数组的起始存储地址,可以定义一个指针指向它,然后通过指针移动来访问各个数组成员。
实验要求
●定义一个整型一堆数组,任意输入数组的元素,其中包含奇数和偶数
●定义一个函数,实现将数组元素奇数存在左,偶数在右的排列。
●在上述定义的函数中,不允许再增加新的数组
●从主函数中分别调用上述含税,打印输出结果

二、实验内容

1.实验练习:8.3.1

问题描述:

(1)定义一个整型指针变量p,使它指向一个整形变量a,定义一个浮点型指针q,使它指向一个浮点型变量b,同时定义另外一个整型变量c并赋初值3
(2)使用指针变量,调用scanf函数分别输入a和b的值。
(3)通过指针间接访问并输出a、b的值。
(4)按十六进制方式输出p、q的值以及a、b的地址
(5)将p指向c,通过p间接访问c的值并输出
(6)输出p的值及c的地址,并与上面的结果进行比较

流程图

实验代码

#include<stdio.h>
int main()
{
    int *p,a,c=3;
    float *q,b;
    p=&a;
    q=&b;
    printf("Please input the value of a,b:");
    scanf("%d,%f",p,q);
    printf("Result:\n");
    printf("%d,%f\n",a,b);
    printf("%d,%f\n",*p,*q);
    printf("The Addreses of a,b:%p,%p\n",&a,&b);
    printf("The Addreses of a,b:%p,%p\n",p,q);
    p=&c;
    printf("c=%d\n",*p);
    printf("The adress of c:%x,%x\n",&c,p);
    return 0;
}

运行结果

问题:

2.实验练习8.3.2

流程图

实验代码:

#include<stdio.h>
void swap1(int x,int y);
void swap2(int *x,int *y);
int main()
{
    int a,b;
    printf("Please input a:");
    scanf("%d",&a);
    printf("Please inpur b:");
    scanf("%d",&b);
    swap1(a,b);
    printf("\nAfter call swap1:a=%d  b=%d\n",a,b);
    swap2(&a,&b);
    printf("\nAfter Call swap2:a=%d  b=%d\n",a,b);
    return 0;
}

void swap1(int x,int y)
{
    int temp;
    temp=x;
    x=y;
    y=temp;
}

void swap2(int *x,int *y)
{
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
}

运行结果

问题:

3.实验练习:8.3.3

问题描述:

编写程序,从键盘输入行数,输出指定行数的杨辉三角形。

流程图


实验代码

#include<stdio.h>
char *reverse(char *str);
char *link(char *str1,char *str2);
int main()
{
    char str[30],str1[30],*str2;
    printf("Input Reversing Character String:");
    gets(str);
    str2=reverse(str);
    printf("Output Reversed Character String:");
    puts(str2);
    printf("Inpur String1:");
    gets(str);
    printf("Inpur String2:");
    gets(str1);
    str2=link(str,str1);
    printf("Link String1 and String2:");
    puts(str2);
    return 0;
}

char *reverse(char *str)
{
    char *p,*q,temp;
    p=str,q=str;
    while(*p!='\0')
    p++;
    p--;
    while(q<p)
    {
        temp=*q;
        *q=*p;
        *p=temp;
        q++;
        p--;
    }
    return str;
}

char *link (char *str1,char *str2)
{
    char *p=str1,*q=str2;
    while (*p!='\0')
    p++;
    while (*q!='\0')
    {
        *p=*q;
        p++;
        q++;
    }
    *p=*q;
    return str1;
}

运行结果

问题:这个题目主要的问题在于使结束字符为空字符,在第一次完成时出现了错误,在指针同时移动的时候我算错了指针位置,使后一位为空字符,导致输出结果中会含有一个未知字符

4.实验练习:8.3.4

流程图

实验代码

#include<stdio.h>
#define N 10
void arrsort(int a[],int n);
int main()
{
    int a[N],i;
    for(i=0;i<N;i++)
    scanf("%d",&a[i]);
    arrsort(a,N);
    for(i=0;i<N;i++)
    printf("%d ",a[i]);
}
void arrsort (int a[],int n)
{
    int *p,*q,temp;
    p=a;
    q=a+n-1;
    while (p<q)
    {
        while (*p%2!=0)
        p++;
        while(*q%2==0)
        q--;
        if(p>q) break;
        temp=*p;
        *p=*q;
        *q=temp;
        p++;
        q--;
    }
}

运行结果

问题:无

三、实验小结

实验中存在的问题:
1、指针的通向移动与相向移动时会搞错指针位置
2、通过指针进行值传递或是址传递会混淆

原文地址:https://www.cnblogs.com/1hzq/p/11008244.html

时间: 2024-07-29 12:21:27

实验报告(2019年6月12日)的相关文章

实验报告(2019年4月3日)

c程序实验报告 姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月3日 实验项目: ???1.if语句的应用 ???2.switch/case语句的应用 ???3.switch/case语句嵌套if语句的应用 ???4.switch/case结构的嵌套应用 ???5.分析程序 一.实验目的与要求 1.if语句的应用 ● 掌握c语言逻辑运算和关系运算的规则 ● 学会正确地使用关系式和逻辑表达式 ● 掌握if-else语句的使用方法 2.switch/case语句的应用 ● 掌握算

实验报告(2019年4月17日)

c程序实验报告 姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月17日 实验项目: ???1.用for语句实现循环 ???2.用while循环语句实现循环 ???3.用do-while语句实现循环 ???4.用while语句和for语句配合实现循环 ???5.用for语句嵌套实现循环 一.实验目的与要求 1.用for语句实现循环 ● 掌握c语言逻辑运算和关系运算的规则 ● 掌握for语句实现循环的方法 ● 循环嵌套的使用 2.用while循环语句实现循环 ● 掌握while语

实验报告(2019年4月31日)

c程序实验报告 姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月30日 实验项目: ???1.编写由三角形三边求面积的函数 ???2.编写求N阶乘的函数 ???3.求两个整数的最大公约数 ???4.打印输出指定图形 ???5.求500以内所有亲密数对 ???6.利用复化梯形公式计算定积分 ???7.计算Ackerman函数 ???8.编写计算x的y次幂的递归函数getpower(int x,int y).并在主程序中实现输入输出. ???9.编写计算学生年龄的递归函数 ???

实验报告(2019年4月30日)下半部分

c程序实验报告 姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月30日 实验项目: ???1.利用复化梯形公式计算定积分 ???2.计算Ackerman函数 ???3.编写计算x的y次幂的递归函数getpower(int x,int y).并在主程序中实现输入输出. ???4.编写计算学生年龄的递归函数 ???5.编写递归函数下hi先Ackerma函数 一.实验目的与要求 1.利用复化梯形公式计算定积分 ●掌握c语言中定义函数的方法 ●掌握通过"值传递"调用函数的方

实验报告(2019年6月26日)

c程序实验报告 姓名:黄志乾????实验地点:教学楼514教室????实验时间:4月30日 一.本章要点 1.通过实验理解结构体和共用体的数据结构 2.结构体.共用体中数组的使用及变量的赋值 3.结构体和共用体定义时的嵌套使用(嵌套使用的结构体必须先定义) 二.实验内容 1.实验练习:9.1 问题描述:试利用结构体类型描述年.月.日,输入一个日期,统计该日期是本年度第多少天. 流程图 实验代码 #include<stdio.h> main() { struct date { int year,

2019年5月12日-linux就该这么学-第6课

Vim编辑器与Shell命令脚本 4.3.2 for 条件循环语句 for 变量名 in 取值列表 do 命令序列 done 4.3.3 while 条件循环语句 while 条件测试操作或语句 do 命令序列 done 4.3.4 case条件测试语句case 变量值 in条件1命令序列1::条件2命令序列2::......)默认命令序列esac4.4 计划任务服务程序(1)单次执行:at 时间---设定执行时间:at -l ---查看已设置好还未执行的一次性计划任务:atrm 任务序列号--

2019年6月12日——开始记录并分享学习心得——Python3.7中对列表进行排序

Python中对列表的排序按照是排序是否可以恢复分为:永久性排序和临时排序. Python中对列表的排序可以按照使用函数的不同可以分为:sort( ), sorted( ), reverse( ). 下边具体介绍一下这三种函数的使用: 1. 使用sort( )对列表进行永久性排序 my_love = ['sleep', 'weekend', 'games', 'learning', 'travel'] # 定义一个列表my_love.sort() # 对列表按照字母顺序永久性排序print(my

2019年7月12日实验室开展学术研讨

首先,由付俊俊同学介绍了同态加密的相关概念,介绍了加法同态加密.乘法同态加密和完全同态加密,并讲到了完全同态加密是抗量子攻击的.其次,由王利朋老师讲解了一篇论文“不使用双线性对映射的无证书签密方案的安全性分析及改造”.再次,由马威老师介绍了“TRUST MANAGEMENT IN IOT”.最后,由贾老师做了一下会议总结,并对实验室紧接下来的相关工作做了合理安排. 原文地址:https://www.cnblogs.com/zznuxxaq/p/11178109.html

2019年8月12日 《TensorFlow 实战Google深度学习框架 》学习 20190813

2014年提出的Seq2Seq模型. 训练步骤分为  预处理,词对齐,短语对齐,抽取短语特征,训练语言模型,学习特征权重等诸多步骤. 基本思想为:使用一个循环神经网络读取输入句子,将整个句子的信息压缩到一个固定维度的编码中:再使用另一个循环神经网络读取这个编码,将其解压为目标语言的一个句子. 原文地址:https://www.cnblogs.com/beautifulchenxi/p/11348044.html