今天学习了指针,用*p表示指针,**p表示指针的指针,指针表示数据的地址,解引用的时候可以直接表示数据本身。
以下为今日练习:
1.有5个字符串,首先将它们按照字符串中的字符个数由小到大排列,再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现
#include<stdio.h>
#include<string.h>
int main()
{
char ss[10]={"\0"};
char s[5][10]={"qwertyu","iopasd","fghjk","lzxc","vbn"};
int i,j;
for(j=0;j<4;j++)
{
for(i=0;i<4;i++)
{
if(strlen(s[i])>strlen(s[i+1]))
{
strcpy(ss,s[i]);
strcpy(s[i],s[i+1]);
strcpy(s[i+1],ss);
}
}
}
strcpy(ss,"\0");
for(i=0;i<5;i++)
{
if((*(s[i]+2))!='\0')
{
ss[i]=*(s[i]+2);
}
else
{
ss[i]=' ';
}
}
puts(ss);
for(i=0;i<5;i++)
{
puts(s[i]);
}
}
2.字符替换。要求用函数replace将用户输入的字符串中的字符t(T)都替换为e(E),并返回替换字符的个数。
#include<stdio.h>
int replace(char *p);
int main()
{
int b;
char s[20]={"\0"};
gets(s);
b=replace(s);
puts(s);
printf("替换的字符数量为:%d\n",b);
}
int replace(char *p)
{
int i;
int m=0;
for(i=0;i<20;i++)
{
if(*(p+i)=='t')
{
*(p+i)='e';
m++;
}
if(*(p+i)=='T')
{
*(p+i)='E';
m++;
}
}
return m;
}
3.编写一个程序,输入星期,输出该星期的英文名。用指针数组处理。
#include<stdio.h>
int main()
{
int a;
char s[7][20]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
char *p[7];
int i;
for(i=0;i<7;i++)
{
p[i]=s[i];
}
while(scanf("%d",&a)&&a>0&&a<8)
{
puts(p[a-1]);
}
}