C语言编程题

排序数组中插入数

#include 
int main()
{
	int i,j,x,a[10];
	printf("输入以排好序的数组:\n");
	for(i=0;i<9;i++)
	scanf("%d",&a[i]);
	printf("输入插入的数字:\n"); 
	scanf("%d",&x);
	for(i=0;i<9;i++)
	{
		if(xi;j--)
			a[j]=a[j-1];
			a[j]=x;
			break;
		}	
	}
	if(i==9) a[9]=x;
	printf("插入后排好序的数组:\n");
	for(i=0;i<10;i++)
	printf(" %d",a[i]);
 } 

魔方阵

#include 
int main()
{
int a[15][15], i, j, k, p, n;
p = 1;
//输入的n必须是奇数。 
//如果n是偶数,那么填充过程中会出现重复的元素,无法得到魔方阵。
while (p == 1)
{
printf("请输入n:") ; 
scanf("%d", &n);
if ((n != 0) && (n <= 15) && (n % 2 != 0))
p = 0; 
else printf("n 必须为奇数,");  
}
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
a[i][j] = 0;
j = n / 2 + 1;
a[1][j] = 1;
for (k = 2; k <= n * n; k++)
{
i = i - 1;
j = j + 1;
if ((i < 1) && (j > n))
{
i = i + 2;
j = j - 1;
}
else
{
if (i < 1)
i = n;
if (j > n)
j = 1;
}
if (a[i][j] == 0)
a[i][j] = k;
else
{
i = i + 2;
j = j - 1;
a[i][j] = k;
}
}
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
printf("%5d", a[i][j]);
printf("\n");
}
return 0;
}

 

数组逆置

#include 
int main()
{
	int i, j, temp,a[5];
	printf("输入数组:\n"); 
	for(i=0;i<5;i++)
	scanf("%d",&a[i]); 
    for (i = 0, j = 4; i < j; i++, j--) 
	{  
        temp = a[i];  
        a[i] = a[j];  
        a[j] = temp;  
    }  
    printf("逆序后的数组:\n"); 
	for(i=0;i<5;i++)
	printf(" %d",a[i]);	
} 

猴子偷桃

#include 
int main()
{
	int i,y;
	y=1;
	for(i=9;i>=1;i--)
		y=(y+1)*2;
	printf("第一天共摘了%d个桃子",y);
}

求π

#include   
#include    
int main()  
{  
    // 定义一个整型变量,用于交替地取值1和-1  
    int sign=1;  
  
    // 定义一个双精度浮点型变量,用于存储π的近似值,初始化为0.0  
    double pi=0.0,n=1.0,term=1.0;  
  
    // while循环,条件为term的绝对值大于或等于1×10^-6时继续循环  
    while(fabs(term)>=1e-6)  
    {  
        // 将当前项加到pi上  
        pi=pi+term;  
  
        // 分母每次加2,因为公式中的分母是奇数  
        n=n+2;  
  
        // 改变sign的符号,使得在每项中正负号交替  
        sign=-sign;  
  
        // 计算下一项的值  
        term=sign/n;  
    }  
  
    // 将结果乘以4,因为Leibniz公式计算的是π/4  
    pi=pi*4;  
  
    // 打印π的近似值,总共占据10个字符的宽度,其中包括小数点后的8位数字  
    printf("pi=%10.8f\n",pi);   
}

矩阵求最大值

#include 
int max(int array[][4])
{
	int i,j,max;
	max=array[0][0];
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
		if(array[i][j]>max) max=array[i][j];
		return (max);
} 
int main()
{
	int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
	printf("Max is %d\n",max(a));
}

四个数字比较大小

#include 
int max2(int a,int b)
{
	return a>=b?a:b;
 } 
 int max4(int a,int b,int c,int d)
 {
 	int m; 
 	m=max2(a,b);
 	m=max2(m,c);
 	m=max2(m,d);
 	return m;
 }
 int main()
 {
 	int a,b,c,d;
 	printf("请输入要比较的四个数:\n"); 
 	scanf("%d,%d,%d,%d",&a,&b,&c,&d);
 	printf("max=%d",max4(a,b,c,d));
 }

求n!

#include 
int fac (int n)
{
	int f;
	if(n<0)
	printf("n<0,data,error!\n");
	else if(n==0||n==1)
		f=1;
	else f=fac(n-1)*n;
	return(f);
 } 
 int main()
 {
 	int n;
 	printf("请输入要求的数字:");
	scanf("%d",&n);
	printf("%d的阶乘为:%d\n",n,fac(n));
 }

求1-2+3-4…+99-100的和

#include 
int main()
{	int sum,i;
	for(i=1;i<=100;i++)
	{	
		if(i%2!=0) sum+=i;//奇加 
		if(i%2==0) sum-=i;//偶减 
		
	}
	printf("1-2+3-4.....+99-100的和为%d",sum);
	
 }

求1+1/2+2/3+3/5+5/8+.前15项和

#include 

int main() {
    double sum = 0.0;
    int i, j = 1;
    for (i = 1; i <= 15; i++) {
        sum += j / (double)i;
        j += 2;
    }
    printf("前15项和为:%.2lf", sum);
   
}

两数相除要求小数点后70位数字

#include 
int main()
{
	double a,b,c;
	scanf("%lf,%lf",&a,&b); 
    c = a / b;    
    printf("a/b的值为:%.70lf\n", c);    
}

求逆序数

#include "stdio.h"
int main()
{
	int n,m,i;
	m=0; 
	printf("请输入一个数字,使其逆序:"); 
	scanf("%d",&n); 
	while(n!=0)
	{
		i=n%10; // 取个位上的数字
		m=m*10+i;// 构造逆序数 将取到的个位乘10,加上个位本身,使其循环操作
		         //使原来的个位变成十位,百位 
		n/=10;// 去掉个位上的数字 ,使输入数变小 
	}
	printf("逆序数为:%d",m) ;
}

冒泡排序

#include "stdio.h"
main()
{
    int a[100],n,i,j,temp;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    for(i=1;i<n;i++)
       for(j=0;j<n-i;j++)
          if(a[j]>a[j+1])
          {
              temp=a[j];
              a[j]=a[j+1];
              a[j+1]=temp;
          }     
        for(i=0;i<n;i++)
            printf("%5d",a[i]);
}

选择排序

#include
 
void select(int a[], int n)
{
    int i, j, min, temp;
    for (i = 0; i < n - 1; i++)
    {
        min = i;
        for (j = i + 1; j < n; j++)
        {
            if (a[j] < a[min])
                min = j;
        }
        temp = a[i];
        a[i] = a[min];
        a[min] = temp;
    }
}
 
int main()
{
    int a[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
    int n = 10;
    select(a, n);
    for (int i = 0; i < n; i++)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

判断素数

#include "stdio.h"
main()
{	int i,x;
 	scanf("%d",&x);
 	for(i=2;i<x;i++)
        if(x%i==0)	break;
 		if(i==x) printf("%d是素数",x);
 		else printf("%d不是素数",x);
}

最大公约数

int main()
{
	int x, y, z;
	z = 0;
	scanf("%d,%d", &x, &y);
	z = x%y;
    int m=x;
    int n=y;
	while (z)
	{
		x = y;
		y = z;
		z = x % y;
	}
	printf("最大公约数:%d\n", y);
	printf("最小公倍数:%d",m*n/ y);
}

菲波那切数列

#include "stdio.h"
int fib(int n)  
{
    int s;
    if(n==1||n==2) s=1;
    else s=fib(n-1)+fib(n-2);
    return s;
}
main()
{	
    int n;
    scanf("%d",&n);
    printf("%d",fib(n));
}

回文数

#include "stdio.h"
main()
{
	int x,y=0,t;
	scanf("%d",&x);
    t=x;
    do{
        y=y*10+t%10;
        t/=10;
    }while(t!=0)
    if(y==x)	printf("%d是回文数",x);
    else 	printf("%d不是回文数",x);
}

回文串

#include"stdio.h"
#include"string.h"
main()
{	int i,j;
	char str[100];
	gets(str);
	for(i=0,j=strlen(str)-1;i<j;i++j--)
		if(str[i]!=str[j)	break;
		if(i<j)	printf("不是回文串!\n");
		else 	printf("是回文串!\n");
}

a+aa+aaa+…+a…a

#include "stdio.h"
main()
{
    int a,n,i;
    long s,x;
    scanf("%d%d",&a,&n);
    for(i=1,s=0,x=0,i<=n;i++)
        {
          x=10*x+a;
          s=s+x;          
        }
    printf("%ld",s);   
}

百钱白鸡

#include 
#include 

int main()
{
	int cock, hen, chicken;
	for (cock = 0; cock <= 20; cock++)  			//控制公鸡的数量
		for (hen = 0; hen <= 33; hen++)  				    //控制母鸡的数量
			for (chicken = 0; chicken <= 100; chicken++) 	//控制小鸡的数量
			{
				if ((5 * cock + 3 * hen + chicken / 3.0 == 100) && (cock + hen + chicken == 100))
					printf("cock=%2d,hen=%2d,chicken=%2d\n", cock, hen, chicken);	//将满足条件的方案,直接输出到屏幕上
			}
	return 0;	
}

数组元素颠倒存放

#include "stdio.h"
main()
{						##从小到大输入数组,元素颠倒存放在元素组中						
    int a[10],i,j,t;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0,j=9;i<=j;j++,j--)
    {t=a[i];a[i]=a[j];a[j]=t;}
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
}

完数

#include "stdio.h"
main()
{						##完数:该数的所有真因子之和等于该数的和
    int i,s,j;			## 如:6=1+2+3    本题求1000以内
    for(i=2;i<=1000;i++)
    {
        s=0;
        for(j=1;j<=i-1;j++)
            if(i%j==0) s+=j;
        	if(i==s) printf("%5d",i);
    }
}

求1234组成不重复的三位数个数

#include "stdio.h"
main()
{
    int i,j,k,c;
    for(i=1,c=0;i<=4;i++)
        for(j=1;j<=4;j++)
            for(k=1;k<=4;k++)
                if(i!=j&&i!=k&&j!=k)
                    c++;
    printf("%d",c);
}

求整数各位数字之和

#include "stdio.h"
main()
{ 	int n,sum=0;
	scanf("%d",&n);
	for(;n!=0;)
	{	sum=sum+n%10;
		n=n/10;
	}

	printf("sum=%d",sum);

}

三个数从大到小排序

#include "stdio.h"
main()
{ 	int x,y,z,t;
	scanf("%d%d%d",&x,&y,&z);
	if(x<y){t=x;x=y;y=t;}
	if(x<z){t=x;x=z;z=t;}
	if(y<z){t=z;z=y;y=t;}
	printf("%5d%5d%5d",x,y,z);
}

求阶乘

#include 
int main()
{
    int i,n;
    double sum=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        sum=sum*i;
    printf("%lf",n,sum);
    
}

水仙花数

#include "stdio.h"
main()
{
   int i,a,b,c;
    for(i=100;i<=999;i++)
    {
        a=i/100;
        b=i/10%10;
        c=i%10;
        if(a*a*a+b*b*b+c*c*c==i)
            printf("%5d",i);
    }
}

玫瑰花数

#include 
#include 

int main() {
    int i, j, k;
    for (i = 1; i <= 9; i++) {
        for (j = 0; j <= 9; j++) {
            for (k = 0; k <= 9; k++) {
                int num = i * 100 + j * 10 + k;
                if (num == pow(i, 3) + pow(j, 3) + pow(k, 3)) {
                    printf("%d\n", num);
                }
            }
        }
    }
    return 0;
}

1,3,3,5,5,7,7,9,…,97,99,99,101

#include "stdio.h"
main()
{
    int i,s;
    for(i=1,s=0;2*i-1<=99;i++;)
        s+=(2*i-1)+(2*i+1)
    printf("%d",s);
    	//	两个相邻的项数与i的关系
    	//	如 1,3 2*i-1	2*i+1
}

1,4,7,10…前20项的和

#include "stdio.h"
main()
{
    int i,s=0;
    for(i=1;i<=20;i++)
        s+=3*i-2;	//项数与i的关系 3*i-2
    printf("%d",s);
    
}

鸡兔同笼

#include 

int main()
{
    int head, foot, chicken, rabbit;

    // 提示用户输入头和脚的数量,并使用 scanf 函数获取输入值
    printf("请输入头和脚的数量:");
    scanf("%d %d", &head, &foot);

    // 根据鸡和兔的数量关系,计算出兔的数量和鸡的数量
    // 由于每只兔有四只脚,每只鸡有两只脚,
    // 所以通过脚的数量减去头的数量乘以两只脚的数量,
    // 再除以每只兔的四只脚,就可以得到兔的数量。
    rabbit = (foot - head * 2) / 2;
    chicken = head - rabbit;

    // 输出计算结果
    printf("鸡的数量为:%d,兔的数量为:%d\n", chicken, rabbit);

    return 0;
}

输入三边长度计算并输出其面积

#include 
#include   
  
int main() {  
    float a, b, c, s, area;  
  
    printf("请输入三角形的三条边长:\n");  
    scanf("%f %f %f", &a, &b, &c);  
  
    if (a + b > c && a + c > b && b + c > a) 
    {  
        s = (a + b + c) / 2;     //海伦公式 
        area = sqrt(s * (s - a) * (s - b) * (s - c));  
        printf("三角形的面积为:%.2f\n", area);  
    } 
    else {  
        printf("不能构成三角形!\n");  
    }  
  
    return 0;  
}

你可能感兴趣的:(C语言,编程语言,c语言,算法,数据结构)