常见C算法

排序:冒泡算法

#include 
int main()
{
	int i,j,t;
	int a[5]={5,4,3,2,1};
	for(i=0;i<4;i++)
		for(j=0;j<5;j++)
			if(a[j]>a[j+1])
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;	
			}
			for(i=0;i<5;i++)
				printf("%d",a[i]);
	return 0;

	
}




#include 
int main(){
	int a[10];
	int i,j,t;
	printf("input:");
	
	for(i=0;i<10;i++)
	scanf("%d",&a[i]);
	for(i=0;i<10;i++)
		for(j=0;j<10-i-1;j++)
			if(a[j]>a[j+1])
			{
				t=a[j+1];
				a[j+1]=a[j];
				a[j]=t;
			}

			for(i=0;i<10;i++)
			printf("%d",a[i]);
 
}

进制转换

//十进制转任意进制
#include 
int main(){
	int result[100];
	int length=0;
	int n,c,i,p;
	scanf("%d",&n);//n为十进制数
	scanf("%d",&p);//p为目标进制大小 
	
	while(n!=0)
	{
		result[length]=n%p;
		length++;
		n/=p;

	}
for(i=length-1;i>=0;i--)
printf("%d",result[i]);
} 

//任意进制转十进制
#include 
int main(){
	int x,p;   //x输入数字  p该数的进制数  

	int y=0,product=1;
		scanf("%d",&x);
	scanf("%d",&p);
	while(x!=0){
		y=y+(x%10)*product;
		x=x/10;
		product=product*p;
	}
	printf("%d",y);
	return 0;
} 

 

质数的判定

#include 
int main(){
	int n;
	int prime();
	printf("input:");
	scanf("%d",&n);

	if(	prime(n))
		printf("yes");
	else
		printf("no");

} 

int prime(int num)
{
	int i;
	for(i=2;i

 

 

数字金字塔


#include 
#include
void pyramid(int n)
{
	int i, j, k;
	//控制行数
	for (i = 1; i <= n; i++)
	{
		//输出左边的空格,每行有n-i个空格
		for (j = 1; j <= n - i; j++)
			printf(" ");
		//每一行左边空格输完后输出数字,n行n个数字(数字后面有一个空格)
		for (k = 1; k <= i; k++)
			printf("%d ", i);
		//换行
		printf("\n");
	}
}
 
int main()
{
	int n;
	scanf("%d", &n);
	pyramid(n);
	system("pause");
	return 0;
}

按照下列格式输出由“*”组成的倒三角图案。

常见C算法_第1张图片

思路:

  1. 打印图案一定是外循环管行数,内循环管每行的内容。
  2. 每行空格数:0、1、2、3,于是内部用一个for循环打印空格。
  3. 每行“星+空格”数:3、2、1、0,于是用 j 从 3-i 开始,到 0 结束,打印“星+空格”。
  4. 每行末尾的“星”是没有空格的,紧接着换行。
#include
int main(){
    int i,j;
    for(i=0;i<4;i++)
	{for(j=0;j0;j--)
        printf("* ");
     printf("*");
     printf("\n");
	}
}

 

在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。

输入时float 用 %f, double 用 %lf, 这是约定(规定)。

%0.1f表示保留一位小数

#include
int main(){
    double x;
    scanf("%lf",&x);
    if(x!=0)
    printf("f(%0.1f) = %0.1f",x,1/x);
    else
    printf("f(0.0) = 0.0");
}

C语言中%6.1f是指输出的浮点数包含小数点总长度为6位,其中小数1位。(%6.1f靠右对齐,%-6.1f靠左对齐)

#include
main()
{    
printf("123456\n");    
printf("%6.1f",124.53);
}

验证结果如下:

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​3​​+5​3​​+3​3​​。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。

 

#include 

int narcissistic( int number );
void PrintN( int m, int n );

int main()
{
    int m, n;

    scanf("%d %d", &m, &n);
    if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);
    PrintN(m, n);
    if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);

    return 0;
}

/* 你的代码将被嵌在这里 */
int narcissistic(int number){
    int j,a=0,r,count=0,t,sum=0,tem;
    t=number;
    while(t)
    {
        t/=10;
        count++;
    }
    t=number;
    while(t)
    {
        j=count;
        tem=1;
        while(j--)
        {
            tem*=(t%10);
        }
        sum+=tem;
        t=t/10;

           
    }
    if(sum==number)
        a=1;

    return a;
}


void PrintN(int m,int n)
{
    int i;
    for(i=m+1;i

 

1、输入5个字符串,对字符串排序并输出 


#include 
void sort(char *str[],int n)
{
    int i,j;
	char *t;
    for(i=0;i 0,则表示 str2 小于 str1。
如果返回值 = 0,则表示 str1 等于 str2。*/
		if(strcmp(str[i],str[j])>0)  
            {
				t=str[i];
				str[i]=str[j];
				str[j]=t;
            }
            
}


void main()
{
char str[5][20];
char * p[5];
int i;
printf("input:");
for(i=0;i<5;i++)
{
scanf("%s",str[i]);
p[i]=str[i];
}

sort(p,5);
printf("output:");
for(i=0;i<5;i++)
printf("%s\n",p[i]);
}

 

输入一个字符串,统计字符串中大、小写字母,数字及其他字符出现的次数
              输入:abcd123![]ABC
              输出:3 4 3 3

#include 
int main()
{	
	int i,len;
	int sum1,sum2,sum3,sum4;
	
	char a[20];
	printf("input:");
	sum1=sum2=sum3=sum4=0;
	gets(a);//输入字符串
	len=strlen(a);
	for(i=0;i='A'&&a[i]<='Z')
			sum1++;
		else if(a[i]>='a'&&a[i]<='z')
			sum2++;
		else if(a[i]>='0'&&a[i]<='9')
			sum3++;
		else
			sum4++;
	}
	printf("大写字母%d个\n",sum1);
	printf("小写字母%d个\n",sum2);
	printf("数字%d个\n",sum3);
	printf("其他字符%d\n",sum4);
	return 0;

	
}

 

输入一个整数n,输出该整数中重复的数字,如果没有则输出 No repeat

#include 
#include 
int main(){
    char a[11],i,j,k;
	int len;
	char t=0;
    printf("Input an integer...\n");
    scanf("%s",a);
	len=strlen(a);
	printf("length=%d\n",len);
    for(i='0';i<='9';i++){
        for(k=j=0;a[j]!='\0';j++)
            if(a[j]==i)
                k++;
        if(k>1){
            printf("%2c",i);
            t++;
        }
    }
    printf("\n");
    if(!t)
        printf("No repeted numbers.\n");
    return 0;
}

 

 

 

 

你可能感兴趣的:(常见C算法)