今日新学

一,指针的用法

#include<stdio.h>
int main()
{
int c,d,*a,*b,*t;
scanf("%d %d",&c,&d);
a=&c;
b=&d;
t = *a;
*a = *b;
*b = t;
printf("%d %d",*a,*b);
}

指针是指定一个数的地址,*a指的是一个数,a是指这个这个指针指的区域存的数字。

交换数值时,可以交换地址也可以直接交换数。

二,如何在输入的同时输入空格?

scanf("%[^\n]%*c",s);

三,如何输出一个未知位数的每一位数?

for (d=0;;d++)
{
a[d]=number%10;
number=number/10;
count++;
if (number<=0)
break;
}

for(i=0;i<=count;i++)

printf("%d",a[i]);

可以输出每一位数

四,逆序一个多位数的函数方法。

int reverse( int number )
{
int f=1,sum=0,n;
if(number<0)
{number=-number;
f=-1;}
while(number)
{
n=number%10;
sum=sum*10+n;
number=number/10;
}
sum=sum*f;
return sum;
}

五,在一个程序中,同时有两个及以上的函数,大于等于二的函数可以使用其上方的新函数

六,如何判断一个数是否是素数的函数

int prime( int p )
{
int i;
if (p<=1)
return 0;
else
{
for (i=2;i<p;i++)
{
if (p%i==0)
break;
}
if (p<=1||i<p)
return 0;
else
return 1;
}
}

七,找完数(及质因子)

int factorsum( int number )
{
int i,sum=1;
if (number==1)
return 0;
else{
for (i=2;i<=number/2;i++)
{
if (number%i==0)
sum=sum+i;
}
return sum;}
}           ——————————如何判断是否是个质数
void PrintPN( int m, int n )
{
int i,j,sum,b=0,a[10000],k=0;
for(i=m;i<=n;i++)
{
b=0;   ——————循环完成一个数后不要忘记把b重新赋0值
for (j=2;j<=i/2;j++)
{
if (i%j==0)
{
a[b]=j;
b++;
}
}
if (factorsum(i)==i)
{
printf("%d = 1",factorsum(i));
for (j=0;j<b;j++)
{
printf(" + %d",a[j]);
}
printf("\n");
k++;
}
}
if (k==0)
printf("No perfect number");
}   ——————————————如何进行一定范围的质数输出(包括输出所有质因子)


八,如何实现a,b值的互换?

另外设置一个额外值temp,令temp=a ; a=b ; b=temp ;   即可输出a和b的值相互交换。

九,递归思想进行函数书写

int Ack( int m, int n )
{
if (m==0)
return n+1;
else if(n==0&&m>0)
return Ack(m-1,1);
else if(m>0&&n>0)
return Ack(m-1,Ack(m,n-1));
}

 

 

int f( int n )
{
if (n==0)
return 0;
else if (n==1)
return 1;
else if (n>=2)
return f(n-2)+f(n-1);
}

递归不太熟悉,以后补充!!

十,十进制转化为二进制(非负整数输入)

void dectobin( int n )
{
int i,c=0,a[1000];
for (i=0;n>=2;i++)
{
a[i]=n%2;     ——————先输出最右边的数
n=n/2;
}
if (n==1)
printf("1");—————————————————————
while(i)                                                                                |
{                                                                                          |
c=1;               |——————————不要忘记减一,因为这里已经输出了最左边的数
printf("%d",a[i-1]);    ——————从左往右输出
i--;
}
if(c==0)
printf("0");
}

十一,常用函数

在自己写的函数中,如果要用到系统指定的函数可以在定义函数的上方加#include<该函数的头文件>,这样就能在自己写的函数中使用已存在的函数。

sqrt是将一个数开平方的函数,头文件是math.h

十二,冒泡排序的函数版本

void sort( int a[], int n )
{
int temp,i,j;
for (j=0;j<n-1;j++)
{
for (i=0;i<n-j-1;i++)
{
if( a[i+1]<a[i])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
}

注意各个循环是怎样进行的限制条件是啥!!!

 

posted @ 2022-11-15 01:49  三万里浮沉  阅读(49)  评论(0)    收藏  举报