[C语言程序合集] 持续更新ing

目录

1.小球落下

2.当前日期,判断 过一千天后,日期是多少

3.100 -1000以内的Armstrong 数

 4.输出倒三角

5.输出杨辉三角

6.弗洛伊德三角

7.1000以内的素数

8.一个数等于两个素数之和

9.两个多维数组 矩形相加

10.输入一段文章 删除里面的'c'字符

11.随意进制转换

12.strcat()字符串连接

13.输入年月,判断天数

14.1000以内的水仙花数

 15.一个字母向后移五位

16.1000以内的完全数

17.输出9*9乘法表

18.输出1000以内完全数


1.小球落下

//小球从100米处落下,每次落地后又反跳回来,高度返回到原来的1/2,然后再落下,问:第10次落地时,共经过了多少米?第10次反弹时的高度为多少?
#include<stdio.h>
main()
{
	float sum = 100, journey1 = 100,journey2;
	int i, n=1;
	for (i = 2; i <= 10; i++)
	{
		journey1= journey1 / 2;
		journey2 = journey1 * 2;
		sum += journey2;
		printf("第%d次下落,共经过%F,本次为%f\n", i, sum, journey1/2);
	}


}

2.当前日期,判断 过一千天后,日期是多少

//当前日期,判断1000天后是多少,日期
#include<iostream>

int check(int year)
{
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        return 1;
    else
        return 0;
}
int main()
{
    //string start="2014-11-09";
    int year = 2023, month = 10, day = 30;

    for (int i = 1; i <= 1000; i++)
    {
       
        day++;
        if (month > 12)
        {
            year++;
            month = month % 12;
           
        }

        switch (check(year))
        {
        case 0:
            switch (month)
            {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if (day > 31)
                {
                    month++;
                    day = day % 31;
                }
                break;
            case 2:
                if (day > 28)
                {
                    month++;
                    day = day % 28;
                }
                break;
            case 0:
            case 4:
            case 6:
            case 9:
            case 11:
                if (day > 30)
                {
                    month++;
                    day = day % 30;
                }
                break;
            }
            break;


        case 1:
            switch (month)
            {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                if (day > 31)
                {
                    month++;
                    day = day % 31;
                }
                break;
            case 2:
                if (day > 29)
                {
                    month++;
                    day = day % 29;
                }
                break;
            case 0:
            case 4:
            case 6:
            case 9:
            case 11:
                if (day > 30)
                {
                    month++;
                    day = day % 30;
                }
                break;
            }
            break;

        }
      
    }
    printf("% d % d % d", year, month, day);
}

3.100 -1000以内的Armstrong 数

//判断100 -1000以内的Armstrong 数
//Armstrong 数:就是n位数的各位数的n次方之和等于该数,例如:
//153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3
//1634 = 1 ^ 4 + 6 ^ 4 + 3 ^ 4 + 4 ^ 4



#include<stdio.h>
#include<math.h>
 main()
{
	int i, a, n = 0, j, sum = 0;
	for (i = 100; i <= 1000; i++)
	{
		a = i;
		while (a > 0)
		{
			n++;
			a /= 10;
		}

		a = i;

		for (j = 0; j < n; j++)
		{
			sum += pow(a % 10, n);
			a /= 10;
		}

		if (sum == i)
		{
			printf("%d ", i);
		}

		sum = 0;
		n = 0;
	}
}

 4.输出倒三角

//输出倒三角

#include<stdio.h>
main()
{
	int i,n=5,j,k;//n为层数
	for (i = 1; i < n; i++)
	{
		for (j = 1; j < n - i; j++)
		{
			printf(" ");
		}
		for (k = 1; k <=i * 2 - 1; k++)
		{
			printf("*");
		}
		printf("\n");
	}

}

5.输出杨辉三角

#include<stdio.h>
main()
{
  int i,j,spese,row,coef;
  printf("请输入层数");
  scanf("%d",&row);
  for(i=0;i<row,i++)
  {
    for(spece=1;spece<row;spece++)
      {
       printf(" ");
      }
   for(j=0;j<i,j++)
      {
       if(i==0||j==0)
         {
           coef=1;
          }
       elss
         {
           coef=coef*(i-j+1)/j;
           printf("%4d",coef);
         }
       printf("\n");

  }
}

6.弗洛伊德三角

#include<stdio.h>
main()
{
	int i=1, row,j,n=1;
	for (row = 1; row <= 5; row++)
	{
		for (j = 1; j <= row; j++)
		{
			printf("%d ", n++);
		}
		printf("\n");
	}
}

7.1000以内的素数

#include<stdio.h>
main()
{
	int i, j, count = 0;
	for (i = 2; i <= 1000; i++)
	{
		for (j = 2; j <= i / 2; j++)
		
			if (i % j == 0)
				break;
			if (j>i/2)
			{
				printf("%d ", i);
				count++;
			}
		
	}
}

8.一个数等于两个素数之和

#include<stdio.h>

int sushu(int num)
{
	int i;
	for (i = 2; i <= num / 2; i++)
	{
		if (num % i == 0)
		{
			return 0;
		}
		
	}
	return 1;
}
main()
{
	int i, num;
	printf("请输入你的数:");
	scanf_s("%d", &num);
	
	for (i = 2; i <= num / 2; i++)
	{
		if(sushu(i)==1)
			if (sushu(num - i) == 1)
			{
				printf("%d=%d+%d", num, i, num - i);
				printf("\n");
			}
	}
	
}

9.两个多维数组 矩形相加

#include<stdio.h>
#include<math.h>
//使用多维数组将两个矩阵相加

main()
{
	int h,l,x;
	int a[100][100], b[100][100], sum[100][100];
	printf("请输入你的列数");
	scanf_s("%d", &l);
	printf("请输入你的行数");
	scanf_s("%d", &h);

	for(int i =0;i<h;i++)
		for (int j = 0; j < l; j++)
		{
			printf("请输入 a%d%d", i + 1, j + 1);
			scanf_s("%d", &x);
			a[i][j] = x;
		}

	for (int i = 0; i < h; i++)
		for (int j = 0; j < l; j++)
		{
			printf("请输入 b%d%d", i + 1, j + 1);
			scanf_s("%d", &x);
			b[i][j] = x;
		}
	for (int i = 0; i < h; i++)
		for (int j = 0; j < l; j++)
		{
			sum[i][j] = a[i][j] + b[i][j];

		}


	printf("两个数组相加为:\n");
	for (int i = 0; i < h; i++)
	{
		for (int j = 0; j < l; j++)
		{
			printf("%d  ", sum[i][j]);

		}
		printf("\n");
	}


    
	
}

10.输入一段文章 删除里面的'c'字符

#include<stdio.h>
main()
{
	char s[20];
	int i, j;
	gets(s);
	for (i = 0, j = 0; s[i] != '\0'; i++)
		if (s[i] != 'c')
			s[j++] = s[i];
	s[j] = '\0';
	puts(s);


}

11.随意进制转换

#include<stdio.h>
#include<math.h>
main()
{
	int num, base, newbase, newnum=0,copynum,i=0;
	printf("请输入你的数和进制,以及你需要转换的进制:");

	scanf_s("%d%d%d", &num, &base, &newbase);
	copynum = num;
	while (num != 0)
	{
		newnum += (num % newbase) * pow(base,i);
		num /= newbase;
		i++;
	}

	printf("%d进制原进制为%d,转换%d后数为%d", copynum, base, newbase, newnum);

}

12.strcat()字符串连接

#include <stdio.h>
int main()
{
    char s1[15]="123", s2[100]="345", j;//确保第一个字符串长度大于总和
    int i;

    strcat(s1, s2);  
    printf("%s",s1 );

}

13.输入年月,判断天数

#include <stdio.h>

int check(year)
{
    if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
    {
        return 1;
    }
    else 0;
}

int main()
{
    int year, month,date=31;
    printf("请输入你的年份和月份,用空格间隔:");
    scanf_s("%d%d", &year, &month);
    if( month >= 1 && month <= 12)
    {
        if (month == 4 || month == 6 || month == 9 || month == 11)
        {
            date = 30;
        }
        else if (month == 2)
        {
            if (check(year) == 1)
            {
                date = 29;
            }
            else
            {
                date = 28;
            }
        }
    }
    else
    {
        printf("输入错误!");
        return;
    }
    printf("%d年%d月有%d天", year, month, date);
}

14.1000以内的水仙花数

#include<stdio.h>
#include<math.h>
main()
{
	int i,g,s,b;
	printf("1000以内的水仙数:");
	
	for (i = 100; i <= 999; i++)
	{
		b = i / 100;
		s = i / 10 % 10;
		g = i % 10;

		if ((pow(b, 3) + pow(s, 3) + pow(g, 3)) == i)
		{
			printf("%d ", i);
		}
	}

 15.一个字母向后移五位

#include<stdio.h>
main()
{
	char ch1,ch2;
	printf("请你输入一个英文字母:");
	scanf_s("%c", &ch1);
	ch2 = ch1;
	if (ch1 >= 97 && ch1 <= 97 + 26)
	{
		if (ch1 <= 97 + 21)
		{
			ch1 = ch1 + 5;
		}
		else
		{
			ch1 = ch1 - 21;
		}
	}
	else
	{
		printf("你的输入有误!");
	}

	printf("输入的%c向后第五个字母为:%c", ch2, ch1);
}

16.1000以内的完全数

#include<stdio.h>
main()
{
	int sum = 0, i, j;
	printf("1000以内的完全数:");
	for (i = 0; i <= 1000; i++)
	{
		sum = 0;
		for (j = 1; j <= i / 2; j++)
		{
			if (i % j == 0)
			{
				sum += j;
			}
		}

		if (sum == i)
		{
			printf("%d ", i);
		}

	}
}

17.输出9*9乘法表

#include<stdio.h>
main()
{
	int i, j;
	printf("99乘法表:\n");
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%d ", j, i, i * j);
		}
		printf("\n");
	}
}

18.输出1000以内完全数

#include<stdio.h>
main()
{
	int i, j,sum;
	printf("回文数:一个数的因子之和等于本身\n");
	printf("1000以内完全数:");
	
	for (i = 1; i <= 100; i++)
	{
		sum = 0;
		for (j = 1; j <= i / 2; j++)
		{
			if (i % j == 0)
			{
				sum += j;
			}
			
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
	
	}
}

19.有1020个西瓜,第一天卖一半多2个,以后每天卖剩下的一半多2个,问几天后卖完(猴子吃桃)

#include<stdio.h>
main()
{
	printf("问题:有1020个西瓜,第一天卖一半多2个,以后每天卖剩下的一半多2个,问几天后卖完:");
	int n = 1020,t=0;
	while (n > 0)
	{
		t++;
		n = n / 2 - 2;
		printf("第%d天,还剩%d个\n",t,n);

	}
	printf("\n %d天后卖完;", t);
}

20.输入英文句子,输出单词个数

#include<stdio.h>
main()
{
	char ch[80];
	int i,word=1,num=0;
	gets(ch);
	for (i = 0; ch[i] != '\0'; i++)
	{
		if (ch[i] == ' ')
		{
			word = 1;
		}
		else if (word == 1)
		{
			word = 0;
			num++;
		}
	}
	printf("\n这篇文章有%d个单词", num);
}

21.输入一段文章,大写首写字母

#include<stdio.h>
main()
{
	int i,word=1;
	char ch;

	while ((ch = getchar()) != '\n')
	{
		if (ch == ' ')
		{
			word = 1;
		}
		else if (word == 1)
		{
			ch -= 32;
			word = 0;
		}
		putchar(ch);
	}

	
	
}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值