/*下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 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");
}