一,指针的用法
#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;
}
}
}
}
注意各个循环是怎样进行的限制条件是啥!!!
标签:return,函数,int,sum,number,新学,printf,今日 From: https://www.cnblogs.com/hpamsl/p/16891145.html