第七章实验

news/2024/11/23 2:32:39/

 三个整数排序

一、实验目的

  1. 掌握指针的概念,会定义并使用指针变量。
  2. 学会使用数组的指针和指向数组的指针变量。
  3. 学会使用字符串的指针和指向字符串的指针变量。
  4. 学会使用指向函数的指针变量。

二、实验内容

1、输入三个整数,用指针实现从大到小排序

(1)编程提示
本质上是两个数的比较。三个数比较时,a和b比较,a和c比较,b和c比较。

输入样例:

88 22 55

输出样例:

88 55 22

代码: 

#include <stdio.h>
void swap(int *a,int *b)
{int t;t=*a;*a=*b;*b=t;
}
void exchange(int *p1,int *p2,int *p3)
{if(*p1<*p2)swap(p1,p2);if(*p1<*p3)swap(p1,p3);if(*p2<*p3)swap(p2,p3);
}
int main()
{int a,b,c;scanf("%d %d %d",&a,&b,&c);int *p1=&a,*p2=&b,*p3=&c;exchange(p1,p2,p3);printf("%d %d %d",a,b,c);return 0;
}

 

10个整数排序

实验7 函数

一、实验目的

  1. 掌握指针的概念,会定义并使用指针变量。
  2. 学会使用数组的指针和指向数组的指针变量。
  3. 学会使用字符串的指针和指向字符串的指针变量。
  4. 学会使用指向函数的指针变量。

二、实验内容

2.将10个整数按由大到小排序输出。

(1)编程提示:利用冒泡法排序。

输入样例:

9 7 1 6 8 4 3 10 2 5

输出样例:

输出格式“%d ”

1 2 3 4 5 6 7 8 9 10 

代码: 

用指针知识统计各种字符的个数

实验7 函数

一、实验目的

  1. 掌握指针的概念,会定义并使用指针变量。
  2. 学会使用数组的指针和指向数组的指针变量。
  3. 学会使用字符串的指针和指向字符串的指针变量。
  4. 学会使用指向函数的指针变量。

二、实验内容

3.输入一行字符,用指针知识统计其中的大写字母、小写字母、空格、数字和其它字符的个数。
(1)编程提示
利用if的第三种形式,判断各字符并进行计数。

输入样例:

输入一行字符,例如

chi n123CDEH# !Tt @

输出样例:

输出格式数据格式如下,用一个空格分隔
大写字符 小写字母 空格 数字字符 其他字符

5 5 3 3 3
#include <stdio.h>
int main () {char str[100],*p=str;gets(p);int bchar_number=0,space_number=0,schar_number=0,num_number=0,other=0;for(;*p!='\0';p++){if(*p>='A' && *p<='Z') bchar_number++;else if(*p>='a' && *p<='z')schar_number++;else if(*p==' ')space_number++;else if(*p>='0' && *p<='9')num_number++;elseother++;}printf("%d %d %d %d %d\n",bchar_number,schar_number,space_number,num_number,other);return 0;
}

 

 用指针知识按要求输出5×5矩阵

实验7 函数

一、实验目的

  1. 掌握指针的概念,会定义并使用指针变量。
  2. 学会使用数组的指针和指向数组的指针变量。
  3. 学会使用字符串的指针和指向字符串的指针变量。
  4. 学会使用指向函数的指针变量。

二、实验内容

4.编写函数,将一个5×5矩阵的最大值放在中心,四角按从左到右,从上到下的顺序存放最小值。
编程提示:利用打擂台法求最大值和最小值。

输入样例:

输入数据,之间用空格分隔,例如

11 12 13 14 15
21 31 66 88 23
10 42 68 31 35
65 68 99 82 29
71 72 73 74 75

输出样例:

输出格式数据格式如下,用一个空格分隔

10 71 75 14 11
21 31 66 88 23
15 42 99 31 35
65 68 68 82 29
12 72 73 74 13

代码:

/*11 12 13 14 15
21 31 66 88 23
10 42 68 31 35
65 68 99 82 29
71 72 73 74 75
输出样例:
输出格式数据格式如下,用一个空格分隔
10 71 75 14 11
21 31 66 88 23
15 42 99 31 35
65 68 68 82 29
12 72 73 74 13 */
#include <stdio.h>
void fun(int *p,int n)
{int *pmax=p,*pmin=p,*m=p,t;	//四个指针均指向一维空间的起始单元//找最大数和最小数for(m=m+1;m<p+n;m++){if(*m>*pmax)pmax=m;if(*m<*pmin)pmin=m;}//把最大数放到中心位置t = *(p+2*5+2);*(p+12) = *pmax;*pmax = t;//把最小值放到左上角t = *p;*p = *pmin;*pmin = t;//找次小数pmin = p+1;m = p + 2;for(; m<p+n;m++){if(*m < *pmin)pmin = m;}//把次小数置换到右上角t = *(p+4);*(p+4) = *pmin;*pmin = t;//找次次小数pmin = p+1;m = p+2;for(; m<p+n;m++){if( (*m<*pmin)&&(m!=(p+4)) )pmin = m;}//把次次小数置换到左下角	[4][0]——>4*5+0t = *(p+20);*(p+20) = *pmin;*pmin = t;//找出此次次次小数pmin = p+1;m = p+2;for(; m<p+n;m++){if( (*m<*pmin)&&(m!=(p+4))&&(m!=(p+20)) )pmin = m;}//把次次次小数置换到右下角	[4][4]——>24t = *(p+24);*(p+24) = *pmin;*pmin = t;
}int main()
{int a[5][5],i,j;for(i=0;i<5;i++){for(j=0;j<5;j++)scanf("%d",&a[i][j]);}fun(*a,25);for(i=0;i<5;i++){for(j=0;j<4;j++)printf("%d ",a[i][j]);printf("%d",a[i][j]);printf("\n");}return 0;
}

 求字符串的长度

实验7 函数

一、实验目的

  1. 掌握指针的概念,会定义并使用指针变量。
  2. 学会使用数组的指针和指向数组的指针变量。
  3. 学会使用字符串的指针和指向字符串的指针变量。
  4. 学会使用指向函数的指针变量。

二、实验内容

5.编写函数,求字符串的长度。

编程提示:在遍历字符串时,进行计数,直到遇到’\0’结束。

输入样例:

输入数据,之间用空格分隔,例如

abcdefghi

输出样例:

输出格式数据格式如下,用一个空格分隔

9

代码: 

#include<stdio.h>
int main(){char str[256];char *p=str;gets(p);while((*p)!='\0')p++;printf("%d",p-str);return 0;
}

用函数指针实现数组排序
一、实验目的

  1. 掌握指针的概念,会定义并使用指针变量。
  2. 学会使用数组的指针和指向数组的指针变量。
  3. 学会使用字符串的指针和指向字符串的指针变量。
  4. 学会使用指向函数的指针变量。

二、实验内容

6.输入10个整数进行排序并输出,其中用函数指针编写一个通用的排序函数,如果输入1,程序实现数据按升序排序;如果输入2,程序实现数据按降序。

(1)编程提示

定义ascend函数,决定按升序排序;定义descend函数,决定按降序排序;定义sort函数,实现排序的算法,根据实参,确定指向函数的指针变量调用ascend函数还是descend函数。

输入样例:

输入数据,之间用空格分隔
输入样例1:

2 3 4 9 10 8 7 6 5 1
1

输出样例:

输出格式数据格式如下,用一个空格分隔;最后一个数字后没有空格。

输出样例1:

1 2 3 4 5 6 7 8 9 10

输入样例2:

2 3 4 9 10 8 7 6 5 1
2

输出样例2

10 9 8 7 6 5 4 3 2 1

代码:

#include <stdio.h>
void sort_1(int a[],int n)  //case为1,升序排列
{int i,j,*p=a;int t;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++)if(*(a+i)>*(a+j)){t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;}}
}
void sort_2(int a[],int n)  //case为2,降序排列
{int i,j,*p=a;int t;for(i=0;i<n-1;i++){for(j=i+1;j<n;j++)if(*(a+i)<*(a+j)){t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;}}
}int main()
{int i,j,a[10];int flag;for(j=0;j<10;j++)scanf("%d",&a[j]);scanf("%d",&flag);switch(flag){case 1:sort_1(a,10);break;case 2:  sort_2(a,10);break;}printf("%d",*(a));for(i=1;i<10;i++)printf("% d",*(a+i));return 0;
}

 


http://www.ppmy.cn/news/364681.html

相关文章

Intel C220/C600 RAID 在硬盘上的数据结构-纯干货

Intel C220/C600 RAID 在硬盘上的数据结构-纯干货 以4盘6TB 组建的RAID 5为例阵列扇区在磁盘上的分布结构一些计算方法 以4盘6TB 组建的RAID 5为例 因为自己的4盘阵列坏了&#xff0c;数据恢复需要&#xff0c;就简单研究了一下磁盘阵列写在磁盘上的数据结构。 基础信息如下&a…

全志F1C600 sqlite3嵌入式移植安装全过程

https://blog.csdn.net/nanfeibuyi/article/details/88034543 https://blog.csdn.net/H542723151/article/details/100568182 https://www.cnblogs.com/wangkangluo1/archive/2012/05/27/2520465.html https://www.ibm.com/developerworks/cn/linux/l-makefile/ 全志F1C600板子…

【010 设备驱动】ioctl和unlock_ioctl有什么区别?

一、ioctl 作用 大部分驱动除了需要具备读写设备的能力外&#xff0c;还需要具备对硬件控制的能力。例如&#xff0c;要求设备报告错误信息&#xff0c;改变波特率&#xff0c;这些操作常常通过ioctl方法来实现。 二、ioctl和unlock_ioctl有什么区别&#xff1f; kernel 2.6.…

pyqt 主窗口传递图像到对话窗口

import sys from PyQt5 import QtWidgets, QtGui, QtCore# 对话窗口 class Dialog(QtWidgets.QDialog):def __init__(self, parentNone):super(Dialog, self).__init__(parent)self.setWindowTitle("Dialog")self.label QtWidgets.QLabel(self)self.label.setFixedS…

【电量计芯片】鼎盛合分享手机电量显示电量芯片技术

不知道有没有人会跟我一样曾经有手机电量焦虑症&#xff0c;电量没有满格出门一定会焦虑&#xff0c;电量低于三分之一就已经在想要不要充电了&#xff0c;而一旦电量颜色变黄以下我就不敢再玩手机&#xff0c;立即去充电。这种问题我相信肯定不是只有我一个人有&#xff0c;更…

Android,六款安卓车机大PK

2013-10-08 10:57:46 张伟 我要评论:0 点击量&#xff1a;1021 PK机型&#xff1a;飞歌GALAXY车载智能机3G版、纽曼车PAD系列、路畅畅安系列、TCL康钛钛铂金系列、阿科达致胜豪华版专用导航新A9双核1024彩虹版、耀美科技安卓导航。 第一局 UI大PK 飞歌GALAXY车载智能机3G版主界…

国内外车载信息发展情况——专用机未来发展方向

随着丰田G-BOOK车载信息服务车载信息服务&#xff08;Telematics&#xff09;在国内的商用&#xff0c;标志着国内在私家车领域车载信息服务的大幕已经拉开&#xff0c;除了丰田G-BOOK&#xff0c;通用On-star、日产Starwing引进到国内类似服务的计划已经提上日程。我们后装的路…

408自装或4S店加装的凯立德导航升级地图技术贴

轉自&#xff1a;408自装或4S店加装的凯立德导航升级地图技术贴 注&#xff1a;本贴教程仅用作技术交流分享&#xff0c;根据本贴刷坏导航的&#xff0c;楼主概不负责&#xff01; 升级凯立德导航&#xff0c;从升级过程来看&#xff0c;了解了不少&#xff0c;特此发帖来说说 …