C语言 实验八 指针

C语言 实验八 指针

一、实验目的
1.掌握指针变量的定义、引用和基本运算。
2.掌握通过指针操作数组元素的方法。
3. 初步掌握带有指针形参的函数的定义及调用方法。
4. 初步认识使用函数指针调用函数的方法。
二、实验学时
4 学时
三、实验内容
1.使用指针编程求解问题
编程实现:键盘输入 n 个整数,将它们从小到大排序后输出,要求使用指
针作函参,采用冒泡排序法实现。
冒泡、选择、插入、交换排序法见https://blog.csdn.net/m0_63790435/article/details/121375755?utm_source=app&app_version=4.20.0&code=app_1562916241&uLinkId=usr1mkqgl919blen第四题
输入输出示例:
请输入 n 的值:6
请输入 6 个整数:25 -5 7 12 -13 46
排序后的结果:-13 -5 7 12 25 46
2.使用字符指针编程求解问题
编程实现:输入一行字符,将其中的大写字母复制到某个数组中并输出。
输入输出示例:
请输入字符串:abAdeFGhopqRstuwv
新字符串为:AFGR
3.改正以下程序中的错误,并编译运行成功
编程实现:输入 5 个字符串,输出其中最大的字符串。
含有错误的源程序如下:
#include<stdio.h>
#include<string.h>
int main( )
{
int i;
char str[80],max[80];
printf(“Input 5 string s:\n”);
scanf("%s",str);
max=str;
for(i=1;i<5;i++)
{
scanf("%s",str);
if (max<str) /调试时设置断点/
max=str;
}
printf(“Max is: %s \n”, max);
return 0;
}
4.阅读以下程序,体会使用函数指针调用函数的步骤。
以下程序是一个使用函数指针调用函数的实例。阅读程序,输入、编译、
连接,运行并观察结果。
#include <stdio.h>
int max(int x,int y)
{ int m=x;
if (y>m)
m=y;
return m;
}
int main()
{ int a,b,c;
int (*funp)(int,int); /定义函数指针/
printf(“Input a,b:”);
scanf("%d%d",&a,&b);
funp=max; /函数指针指向具体的函数/
c=(*funp)(a,b); /用函数指针调用函数/
printf(“max=%d\n”,c);
return 0;
}
四、实验小结
1.定义指针变量后,一定要让指针变量有具体的指向,即建立指针变量与其他变
量之间的联系,否则可能会出现什么样的后果?
2.使用指针变量作函参与使用一般变量作函参有什么区别?

#include <stdio.h>

int sx(int *x,int n)          
{
         int i,j,s;         
         for(i=0;i<n-1;i++)         
         for(j=0;j<n-1-i;j++)         
         if(x[j]>x[j+1])              
         s=x[j],x[j]=x[j+1],x[j+1]=s;
 }

void main ()
{
        int n,x[1000],i;        
        printf("请输入n的值:");        
        scanf("%d",&n);        
        printf("请输入%d个整数:",n);        
        for(i=0;i<n;i++)        
        scanf("%d",&x[i]);        
        sx(x,n);        
        printf("排序后的结果:");        
        for(i=0;i<n;i++)        
        printf("%d ",x[i]);
}
#include<stdio.h>
main( )
{
        int i=0,j=0;        
        char x[100],s[100],*p=x;        
        printf("输入一行字符:");        
        scanf("%s",&x);        
        while(p[i]!='\0')        
        {   
                    if(p[i]>='A'&&p[i]<='Z')               
                    {          
                                 s[j]=p[i],j++; //或者换为s[j++]=p[i];   
                     }               
                     i++;          
         }         
         printf("%s",s);
}
#include<stdio.h>
#include<string.h>
main( )
{
        int i;        
        char str[80],max[80];        
        printf("Input 5 string s:");        
        for(i=0;i<5;i++)        
        {    
                   scanf("%s",str);               
                   if (strcmp(max,str)<0)               
                   strcpy(max,str);        
          }        
          printf("Max is: %s \n", max);
}
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值