#include <stdio.h>
void counter(){//元素计数器
int upper=0,lower=0,digit=0,space=0,other=0,i=0;
char *p,s[20];
printf("input string:");
while ((s[i]=getchar())!='\n') {
i++;
}
p=&s[0];
while (*p!='\n') {
if (('A'<=*p)&&(*p<='Z')) {
++upper;
}
else if (('a'<=*p)&&(*p<='z'))
{
++lower;
}
else if(*p==' ')
{
++space;
}
else if(('0'<=*p)&&(*p<='9'))
{
++digit;
}
else
{
++other;
}
p++;
}
printf("upper case:%d lower case:%d",upper,lower);
printf("space:%d digit:%d other:%d\n",space,digit,other);
}
void cautious()
{
char *p,a[]="ABCDEF";
for (p=a; *p!='\0'; ) {
printf("%s\n,",p);
p++;
if (*p!='\0') {
p++;
}
else
{
break;
}
}
}
void mysterious(){
int i,k;
char a[10],b[80],*p;
p=a;k=0;
for (i=0; i<7; i++) {
scanf("%c",p++);
}
while (*p)
for (i=0; i<=3&&*p; p++,k++,i++){
b[k]=*p;
if (i==4) {
b[k]='*';k++;
}
b[k]='\0';
printf("%d\n",b[k]);
}
}
int main(int argc, const char * argv[]) {
void change(int *);//函数声明
/*
将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小元素(顺序为从左到右从上到下顺序依次从小到大存放),
在main函数中调用
*/
int a[5][5],*p,i,j;//声明整形二维数组,指针,变量
printf("input matrix:\n");//提示符
for (i=0; i<5; i++)//外层循环遍历行数
for (j=0; j<5; j++)//内层循环遍历列数
scanf("%d",&a[i][j]);//输入二维数组的元素
p=&a[0][0];//使p指向0行0列的元素
change(p);//调用函数实现变换
printf("now,matrix:\n");
for (i=0; i<5; i++) {
for (j=0; j<5; j++)
printf("%3d",a[i][j]);
printf("\n");
}
counter();
cautious();
mysterious();
return 0;
}
void change(int *p){//交换函数
int i,j,temp;
int *pmax,*pmin;
pmax=p;
pmin=p;
for (i=0; i<5; i++)//找出最大值和最小值的地址,并赋值给pmax,pmin
for (j=i; j<5; j++){
if (*pmax<*(p+5*i+j)) {
pmax=p+5*+j;
}
if (*pmin>*(p+5*i+j)) {
pmin=p+5*+j;
}
}
temp=*(p+12);//将最大值换给中心元素
*(p+12)=*pmax;
*pmax=temp;
temp=*p;//将最小值换给左上角的元素
*p=*pmin;
*pmin=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin;//将第二个最小值换给右上角元素
*pmin=*(p+4);
*(p+4)=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin;//将第三个最小值换给左下角的元素
*pmin=*(p+20);
*(p+20)=temp;
pmin=p+1;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin; //将第四个最小值换给右下角的元素
*pmin=*(p+24);
*(p+24)=temp;
}
output:
input matrix:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
now,matrix:
1 5 13 25 2
6 7 8 9 10
11 12 21 14 15
16 17 18 19 20
3 22 23 24 4
input string:upper case:0 lower case:0space:0 digit:0 other:0
ABCDEF
,CDEF
,EF
,