1.图形面积(函数)
分别针对各类图形定义不同的面积函数,通过输入的选项调用不同的函数方法,根据提示输入指定方法的参数,返回面积值。
思路:
(1)为了实现不同图形面积的求解,可以对不同图形的面积求法封装成不同的方法
(2)通过switch语句调用不同的方法实现不同图形面积的求解
void square(float w);
void rectangle(float l,float w );
void triangle(float h,float w);
void round(float r);
void main(int argc, char *argv[])
{
int select;
float b;
float l,w;
float h,wd;
float r;
printf("请选择你要求的图形编号:1正方形,2长方形,3三角形,4圆形:(eg:1)");
scanf("%d",&select);
switch(select){
case 1:
printf("border = ");
scanf("%f",&b);
square(b);
break;
case 2:
printf("length = ");
scanf("%f",&l);
printf("width = ");
scanf("%f",&w);
rectangle(l,w);
break;
case 3:
printf("height = ");
scanf("%f",&h);
printf(" width = ");
scanf("%f",&wd);
triangle(h,wd);
break;
case 4:
printf("radius = ");
scanf("%f",&r);
round(r);
break;
default:
break;
}
return 0;
}
void square(float w){
float s=w*w;
printf("the area is %-4f\n",s);
}
void rectangle(float l,float w){
float s=w*l;
printf("the area is %-4f\n",s);
}
void triangle(float h,float w){
float s=h*w*0.5;
printf("the area is %-4f\n",s);
}
void round(float r){
float s=r*r*3.14;
printf("the area is %-4f\n",s);
}
显示效果:
2.删除字符串中的空格(函数)
使用循环遍历,当遍历到空格符号时,指针往后移一位,依次循环删除所有空格符。
void func(char *p){
int i=0,j=0;
while(p[i]){
if(p[i]==' ') i++;
else p[j++]=p[i++];
}
p[j]='\0';
printf("%s\n",p);
}
int main(){
char c[100]="123 qer";
func(c);
return 0;
}
如果需要输入字符串,则使用gets()方法即可。
3.将两个字符串合并为一个字符串输出
int main(int argc, char *argv[])
{
char s1[40]={"Hello "},s2[20]={"World "};
char *p,*q;
p=s1;
q=s2;
while(*p++);
p--;
while(*q){
*p++=*q++;
}
p=s1;
puts(p);
return 0;
}
4.用指针将整型组 s[8]={1,2,3,4,5,6,7,8}中的值逆序存放。
int main(int argc, char *argv[])
{
int s[8]={1,2,3,4,5,6,7,8};
int *p;
p=s;
for(int i=0;i<8/2;i++){
*(p+i)^=*(p+7-i);
*(p+7-i)^=*(p+i);
*(p+i)^=*(p+7-i);
}
p=s;
for(int j=0;j<8;j++){printf("%d",s[j]);}
puts("");
return 0;
}
5.输入一个字符串,内有数字和非数字字符,如 a123x456 17960? 302tab5876 将其中连 续的数字作为一个整数,依次存放到整型数组 a 中。例如,123 放在 a[0],456 放在 a[1], 统计共有多少个整数,并输出这些数
int main(int argc, char *argv[])
{
char str[30],*p;
int a[10]={0};
int result=0,i=0,j=0,sum=0;
printf("请输入字符串:");
gets(str);
p=str;
while(*p){
if(*p>='0'&&*p<='9'){
result=result*10+(*p-'0');
if(!(*(p+1)>='0'&&*(p+1)<='9')){
a[i++]=result;
result=0;
sum++;
}
}
p++;
}
printf("中间有%d个整数\n",sum);
while(sum-->0){
printf("%-4d\n",a[j++]);
}
return 0;
}