【程序1】
题目:八进制转换为十进制
程序源代码:
#include
int main()
{
char *p,s[6];int n;
p=s;
gets(p);
n=0;
while (*(p)!='\0')
{
n=n*8+*p-'0';
p++;
}
printf("%d",n);
return 0;
}
【程序2】题目:输入3个数a,b,c,按大小顺序输出。
1.程序分析:利用指针方法。
2.程序源代码:
#include
int main()
{
int n1,n2,n3;
int *pointer1,*pointer2,*pointer3;
void swap(int *p1,int *p2);
printf("please input 3 number:n1,n2,n3:");
scanf("%d,%d,%d",&n1,&n2,&n3);
pointer1=&n1;
pointer2=&n2;
pointer3=&n3;
if(n1>n2)
swap(pointer1,pointer2);
if(n1>n3)
swap(pointer1,pointer3);
if(n2>n3)
swap(pointer2,pointer3);
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
return 1;
}
void swap(int *p1,int *p2)
{
int p;
p=*p1;*p1=*p2;*p2=p;
}
==============================================================
【程序3】题目:输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。
程序源代码:
#include
void main()
{
int number[10];
void input(int number[10]);
void max_min(int array[10]);
void output(int array[10]);
input(number);
max_min(number);
output(number);
}
void input(int number[10])
{
int i;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
void max_min(int array[10])
{
int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p
{
if(*p>*max)
max=p;
if(*p
min=p;
}
l=*min;*min=array[0];array[0]=l;
k=*max;*max=array[9];array[9]=k;
}
void output(int array[10])
{
int *p;
for(p=array;p<=array+9;p++)
printf("%d ",*p);
printf("\n");
}
==============================================================
【程序4】
题目:有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
程序源代码:
#include
#define nmax 50
void main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i
*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m
{
if (*(p+i)!=0) k++;
if (k==3)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n)
i=0;
}
while(*p==0) p++;
printf("%d is left\n"