三个整数排序
一、实验目的
二、实验内容
1、输入三个整数,用指针实现从大到小排序
(1)编程提示
本质上是两个数的比较。三个数比较时,a和b比较,a和c比较,b和c比较。
88 22 55
88 55 22
代码:
#include
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 函数
一、实验目的
二、实验内容
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 函数
一、实验目的
二、实验内容
3.输入一行字符,用指针知识统计其中的大写字母、小写字母、空格、数字和其它字符的个数。
(1)编程提示
利用if的第三种形式,判断各字符并进行计数。
输入一行字符,例如
chi n123CDEH# !Tt @
输出格式数据格式如下,用一个空格分隔
大写字符 小写字母 空格 数字字符 其他字符
5 5 3 3 3
#include
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++;
else
other++;
}
printf("%d %d %d %d %d\n",bchar_number,schar_number,space_number,num_number,other);
return 0;
}
用指针知识按要求输出5×5矩阵
实验7 函数
一、实验目的
二、实验内容
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
void fun(int *p,int n)
{
int *pmax=p,*pmin=p,*m=p,t; //四个指针均指向一维空间的起始单元
//找最大数和最小数
for(m=m+1;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
4*5+0
t = *(p+20);
*(p+20) = *pmin;
*pmin = t;
//找出此次次次小数
pmin = p+1;
m = p+2;
for(; m
24
t = *(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 函数
一、实验目的
二、实验内容
5.编写函数,求字符串的长度。
编程提示:在遍历字符串时,进行计数,直到遇到’\0’结束。
输入数据,之间用空格分隔,例如
abcdefghi
输出格式数据格式如下,用一个空格分隔
9
代码:
#include
int main(){
char str[256];
char *p=str;
gets(p);
while((*p)!='\0')
p++;
printf("%d",p-str);
return 0;
}
用函数指针实现数组排序
一、实验目的
二、实验内容
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
void sort_1(int a[],int n) //case为1,升序排列
{
int i,j,*p=a;
int t;
for(i=0;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