续C语言经典100题

本文介绍了几个C语言编程示例,涉及字符类型统计、整数操作、算法实现(如查找完数、序列和计算、阶乘等)、递归和循环结构,展示了基本的编程技巧和逻辑思维。
摘要由CSDN通过智能技术生成

//输入一行字符,分别统计出其中英文字母,
//空格,数字和其他字符的个数。

#include<stdio.h>
int main()
{
	char ch;
	int alpha=0,space=0,digit=0,other=0;
	while((ch=getchar())!='\n'){
		if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
			alpha++;
		}else if(ch==' '){
			space++;
		}else if(ch>='0'&&ch<='9'){
			digit++;
		}else{
			other++;
		}
	}
	printf("字母%d个 空格%d个 数字%d个 其它字符%d个\n",alpha,space,digit,other);
	return 0;
}

//2+22+222+2222 ......

#include<stdio.h>
int main()
{
	int a=2;
	int n;
	int t=a;
	scanf("%d",&n);
	int i=1;
	int sum=0;
	while(i<=n){
		sum+=a;
		a*=10;
		a+=t;
		i++;
	}
	printf("%d",sum);
	return 0;
}

//一个数如果恰好等于它的因子之和,这个数就被称为“完数”
//例如6=1+2+3;编程找出1000之类的全部完数。

#include<stdio.h>
int main()
{
	int sum;
	for(int i=1;i<=1000;i++){
		sum=0;
		for(int j=1;j<=i/2;j++){
			if(i%j==0){
				sum+=j;
			}
		}
		if(i==sum){
			printf("%d is a profect number,its factors are:",i);
			for(int j=1;j<=i/2;j++){
				if(i%j==0){
					printf(" %d",j);
				}
			}
			printf("\n");
		}
	}
	return 0;
}

//一球从100米高度自由落下,每次落地后反弹回原来高度的一半,再落下
//求它在第10 次落地时,共经过多少米?第十次反弹多高?

#include<stdio.h>
int main()
{
	double h=100;
	double s=100;
	h=h/2;
	for(int i=2;i<=10;i++){
		s=s+h*2;
		h=h/2;
	}
	printf("s=%lfh=%lf",s,h);
	return 0;
}

//猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不够,
//又吃了一个,之后每天吃一半加一个。
//到第10天早上想再吃时,见只剩下一个了。
//求第一天共摘了多少个桃子。


//循环
#include<stdio.h>
int main()
{
	int x1,x10=1,day=9;
	while(day>0)
	{
	  	x1=(x10+1)*2;
		x10=x1;
		day--;
	}
	printf("%d\n",x1);
    return 0;	
}


//递归
#include<stdio.h>
int tao(int n)
{
	if(n==10){
		return 1;
	}else{
		return (tao(n+1)+1)*2;
	}
}
int main()
{
	printf("%d",tao(1));
	return 0;
}


//打印图案(菱形)
//     *
//    ***
//   *****
//  *******
//   *****
//    ***
//     *

#include<stdio.h>
int main()
{
	int i,j,k;
	int n;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		for(k=1;k<=n-i;k++){
			printf(" ");
		}
		for(j=1;j<=2*i-1;j++){
			printf("*");
		}
		printf("\n");
	}
	for(i=n-1;i>=1;i--){
		for(k=1;k<=n-i;k++){
			printf(" ");
		}
		for(j=2*i-1;j>=1;j--){
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

//有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 .....
//求出这个数列的前二十项之和。

#include<stdio.h>
int main()
{
	int i;
	double sum=0.0;
	double a=2,b=1,t;
	for(i=0;i<20;i++){
		sum+=a/b;
		t=a;
		a=a+b;
		b=t;
	}
	printf("%lf",sum);
	return 0;
	
}

//求1!+2!+.....n!

#include<stdio.h>
int jiecheng(int n)
{
	if(n==1){
		return 1;
	}else{
		return jiecheng(n-1)*n;
	}
}
int main()
{
	int n,i,sum=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		sum+=jiecheng(i);
	}
	printf("%d",sum);
	return 0;
}   //注意n过大会丢失数据

//利用递归函数调用方式,将所输入的字符,
//以相反顺序打印出来

#include<stdio.h>
void reverse(char *str)
{
	if(*str){
		reverse(str+1);
		putchar(*str);
	}
}
int main()
{
	char str[100];
	printf("请输入一串字符:\n");
	gets(str);
	printf("相反顺序输出为:\n");
	reverse(str);
	return 0;
}

//有5个人坐在一起,
//问第五个人多少岁?他说比第4个人大2岁。
//问第4个人岁数,他说比第3个人大2岁。
//问第三个人,又说比第2人大两岁。
//问第2个人,说比第一个人大两岁。
//最后问第一个人,他说是10岁。
//请问第五个人多大?

#include<stdio.h>
int age(int n)
{
	if(n==1){
		return 10;
	}else{
	    return age(n-1)+2;
	}
}
int main()
{
	printf("%d\n",age(5));
	return 0;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值