实验9 指针1

 1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。

#include <stdio.h>
void findByPoint(int *, int, int *, int *);
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,共有十个数组,a,max,min是指针变量,&max1,&min1是地址*/
    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); /*选取b,共有十个数组*/
    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; /*选定最大值,并将i的值赋给max*/
        if (a[i] < a [*min]) *min=i; /*选定最小值,并将i的值赋给min*/
    }
}
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);
}

这次课学习的指针,我感觉有些难以理解。希望今后的学习能多了解些相关知识……

另外一点:我觉得上次课的九九乘法表有些让我抓狂,真没能想到数组可以那么用,有两行不明白有待理解,然后自己尝试一下。

2、输入一行字符,要求用自定义的函数void f(char *line)统计和输出字符串中数字字符、英文字符和其他字符的个数。

#include<stdio.h>
void count(char *s,int *digit,int *letter,int *other)
{
    *digit= *letter=*other=0;/*定义指针*/
    while(*s != '\0'){/*开始循环*/
        if(*s>='0' && *s<='9')
            (*digit)++;
        else if((*s>='a' && *s<='z')||(*s>='A' && *s<='Z'))
            (*letter)++;
        else
            (*other)++;
        s++;
    }
}
int main()/*函数调用指针*/
{
    int i=0,digit,letter,other;
    char ch,str[100];/*定义一个数组*/
    printf("Enter charaters:");
    ch = getchar();
    while(ch !='\n') {
        str[i] = ch;
        i++;
        ch = getchar();
    }
    str[i] = '\0';
    count(str,&digit,&letter,&other);
    printf("digit = %d  letter = %d  other =%d \n",digit,letter,other);

    return 0;
}

3、编程判断输入的一串字符是否为“回文”。所谓“回文”,是指顺读和倒读都一样的字符串。

#include<stdio.h>
#include<string.h>/*定义字符串*/
void main()
{
    char s[20];
    char *p,*q;/*指针p、q*/
    int len,flag;/*len是代表字符长度;flag就只是一个标识符无特殊意义*/
    gets(s);/*接受字符串,放到数组s中*/
    len  = strlen(s);/*字符长度*/
    p = s;
    q = s+len-1;
    flag = 1;
    while(p<q)/*如果p<q,则调换顺序;比较的是字符的长度不是比较字母*/
    {    if(*p == *q){p++;q--;}
         else{flag = 0; break;}
    }
    if (flag) printf("YES\n");
    else printf("No\n");
}

 

 

转载于:https://www.cnblogs.com/ctly/p/3411864.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值