1、取最大值
使用自定函数,实现比较两个数的大小,并且返回输出最大数
#include<stdio.h>
int max(int a,int b);
int max(int a,int b)
{
return (a>=b)?a:b;
}
int main()
{
int x;
int y;
printf("input two numbers:");
scanf("%d,%d",&x,&y);
int m=max(x,y);
printf("%d\n",m);
return 0;
}
2、传值和传址
include<stdio.h>
//传值函数
void res(int a,int b)
{
int c;
printf("被调函数传值后的数据:\n");
printf("a=%d,b=%d\n",a,b);
c=a;
a=b;
b=c;
printf("被调函数值的交换后数据:\n");
printf("a=%d,b=%d\n",a,b);
return ;
}
//传址函数
void addr(int* p1,int* p2)
{
int* num;
printf("被调函数传址完成后的数据:\n");
printf("*p1=%d,*p2=%d\n",*p1,*p2);
*num=*p1;
*p1=*p2;
*p2=*num;
printf("被调函数传址交换完成后的数据:\n");
printf("*p1=%d,*p2=%d\n",*p1,*p2);
return ;
}
//传址函数(1)
void addr1(int* p1,int* p2)
{
int* num;
printf("被调函数传址完成后的数据:\n");
printf("*p1=%d,*p2=%d\n",*p1,*p2);
num=p1;
p1=p2;
p2=num;
printf("被调函数传址交换完成后的数据:\n");
printf("*p1=%d,*p2=%d\n",*p1,*p2);
return ;
}
int main()
{
int x;
int y;
int* q1=&x;
int* q2=&y;
printf("input two numbers:");
scanf("%d,%d",&x,&y);
printf("============================================\n");
printf("主函数赋值后的数据\n");
printf("x=%d,y=%d\n",x,y);
res(x,y);
printf("被调函数传值交换完成后,主函数的数据:\n");
printf("x=%d,y=%d\n",x,y);
printf("============================================\n");
printf("主函数传传址前的数据:\n");
printf("x=%d,y=%d\n",x,y);
addr(q1,q2);
printf("被调函数传址交换完成后,主函数的数据:\n");
printf("x=%d,y=%d\n",x,y);
printf("============================================\n");
printf("主函数传传址2前的数据:\n");
printf("x=%d,y=%d\n",x,y);
addr1(q1,q2);
printf("被调函数传址2交换完成后,主函数的数据:\n");
printf("x=%d,y=%d\n",x,y);
printf("============================================\n");
return 0;
}
3、统计随机数个数
编写一个程序,用于产生20个0~10之间的随机数,将这20个随机数存入数组,并通过函数统计这些随机数中某个数出现的次数
#include<stdio.h>
#include<time.h>
#include<math.h>
int number(int* q1,int* q2)
{
int i=0;
int k=0;
for(i=0;i<20;i++)
{
k=*(q1+i);
*(q2+k)+=1;
}
for(i=0;i<10;i++)
{
printf("%d的个数为%d\n",i,*(q2+i));
}
return 0;
}
int main()
{
int i;
int* p1;
int* p2;
int j=0;
int arr1[20]={0};
int arr2[10]={0};
p1=arr1;
p2=arr2;
int num;
srand(time(NULL));
for (i=0;i<20;i++)
{
arr1[i]= rand()%10;
}
for (i=0;i<20;i++)
{
printf("%4d",arr1[i]);
}
number(p1,p2);
}
输入3个数,按由小到大的顺序输出,要求两个数的值交换的功能用函数实现
#include<stdio.h>
void maopao(int* q)
{
int i;
int j;
for (j=3;j>0;j--)
{
for(i=0;i<2;i++)
if(*(q+i)>*(q+i+1))
{
int num=*(q+i+1);
*(q+i+1)=*(q+i);
*(q+i)=num;
}
}
for(i=0;i<3;i++)
{
printf("%4d",*(q+i));
}
printf("\n");
return ;
}
int main()
{
int arr[3]={0};
int* p=arr;
int i;
printf("Please input 3 numbers:");
for(i=0;i<3;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<3;i++)
{
printf("%4d",*(p+i));
}
printf("\n");
maopao(p);
return 0;
}