实验九—指针1

/*下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的
max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据*/
#include <stdio.h>
void findByPoint(int *, int, int *, int *); /*其实是老师偷懒,应该是(int *a,int n,int *max,int *min)*/
void find(int *a, int n, int max, int min);
int main(void)
{
    int max1=0, min1=0, a[]={5,3,7,9,2,0,4,1,6,8};
    findByPoint(a,10,&max1,&min1); /*指针变量a,max,min,此处max1和min1之前不是加"*", &max1是地址*/
    printf("数组a最大和最小元素下标是%d,%d\n", max1, min1);

    int max2=0, min2=0,b[]={3,4,71,9,2,7,4,2,6,90};
    find(b,10,max2,min2); /*由于在最开始定义的只是普通的数值,所以max2和min2之前不用加"&"*/
    printf("数组b最大和最小元素下标是%d,%d\n", max2, min2);
    return 0;
}
void findByPoint(int *a, int n, int *max, int *min)
{
    int i;
    *max=*min=0;
    for (i = 1; i < n; i++)
    {
        if (a[i] > a [*max])/*求最大值*/ 
        *max=i;
        if (a[i] < a [*min])/*求最小值*/
        *min=i;
    }
}
void find(int *a, int n, int max, int min)
{
    int i;
    for (i = 1; i < n; i++)
    {
        if (a[i] > a [max])/*求最大值*/
        max=i;
        if (a[i] < a [min])/*求最小值*/
        min=i;
    }
    printf("数组b最大和最小元素下标是%d,%d\n", max, min);
}

 

/*输入一行字符,要求用自定义的函数void f(char *line)统计
和输出字符串中数字字符、英文字符和其他字符的个数*/
#include <stdio.h> 
#include <string.h> 
  
void count(char s[],int *pdight,int *pletter,int *pother) 
/*自定义函数,指针变量是dight,letter,other*/
{ 
    int n; 
    int i;
    n=strlen(s); 
 
    for(i=0;i<n;i++) /*循环累加求字符数量*/
    { 
      if(s[i]>=65&&s[i]<=122) 
      (*pletter)++; 
      else if(s[i]>=48&&s[i]<=57) 
      (*pdight)++; 
      else 
      (*pother)++; 
    }
}
 
int main() 
{ 
  printf("请输入一行字符:");
  char s[100]; 
  int dight=0; 
  int letter=0; 
  int other=0; 
  gets(s); 
  count(s,&dight,&letter,&other); /*&.....是地址*/
 
   printf("数字字符有 %d个,英文字母有 %d个,其它字符有 %d个 \n",dight,letter,other); 
 
   return 0; 
}

 

/*编程判断输入的一串字符是否为“回文”。所谓“回文”,是指顺读和倒读都一样的字符串。
如“XYZYX”和“xyzzyx”都是“回文”。要求使用指针变量判断字符串是否是回文。*/
#include<stdio.h>
#include<string.h>
void main()
{
    char s[40];
    char *p,*q;/*指针变量p,q*/
    int len,flag;
    gets(s);/*从输入得到一个字符串,遇回车结束,允许带空格*/
    len  =strlen(s);/*strlen(s)计算的是数组s[]中字符串的长度*/
    p=s;/*指向s头部*/
    q=s+len-1;/*指向s尾部*/
    flag=1;
    while(p<q)/*当p地址小于q地址时,循环执行括号内的语句*/
    {    if(*p==*q){p++,q--;}/*判断首尾两个字符是否相等,如果相等,p地址加1,q地址减1*/
         else{flag=0;break;} 
    }
    if(flag)printf("YES\n");
    else printf("No\n");
}

 

转载于:https://www.cnblogs.com/xym0914/p/3411787.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值