C语言例题100道(1~20)

例题1:有1、2、3、4这4个数字,能组成多少个互不相同且无重复数字的三位数,都是多少?

#include <stdio.h>

int main(void)
{
	int i, j, k;
	int n = 0;
	printf("Here are the answers:\n");

    /*以下位三重循环,分别代表百位、十位和个位数*/  
	for(i=1 ; i<5 ; i++)
	{
		for(j=1 ; j<5 ; j++)
		{
			for(k=1 ; k<5 ; k++)
			{
				if(i != j && i != k && j != k) //满足三位数各不相等即可输出
				{
					printf("%d%d%d\n", i, j, k);
					n++;
				}
			}
		}
	}
	printf("There are %d numbers\n", n);
	return 0;
}

例题2:企业发放的奖金根据利润提成,提成方式如下:其中i为利润,b为奖金

i <= 10, b = 10%*i;

i > 10 && i <= 20, b = (i-10)*7.5%+10*10%

i > 20 && i <= 40, b = (i-20)*5%+10*10%+10*7.5%

i > 40 && i <= 60, b = (i-40)*3%+10*10%+10*7.5%+20*5%

i > 60 && i <= 100, b = (i-60)*1.5%+10*10%+10*7.5%+20*5%+20*3%

i > 100, b = (i-100)*1%+10*10%+10*7.5%+20*5%+20*3%+40*1.5%

#include <stdio.h>

int main(void)
{
	float i, b;
	int s; 
	printf("请输入利润(万元)值:");
	scanf("%f", &i);

	while(i < 0)  //判断输入是否有误,有误则重新输入
	{
		printf("输入有误,请重新输入!\n");
		printf("请输入利润(万元)值:");
		scanf("%f", &i);
	}

	s = i/10;

	switch (s) //switch条件值或表达式结果必须为int型
	{
		case 0:
		case 1:
			b = i*0.1;
			break;
		case 2:
			b = ((i-10)*0.075) + (10 * 0.1);
			break;
		case 3:
		case 4:
			b = ((i-20)*0.05) + (10 * 0.1) + (10 * 0.075);
			break;
		case 5:
		case 6:
			b = ((i-40)*0.03) + (10 * 0.1) + (10 * 0.075) + (20 * 0.05);
			break;
		case 7:
		case 8:
		case 9:
		case 10:
			b = ((i-60)*0.015) + (10 * 0.1) + (10 * 0.075) + (20 * 0.05) + (20 * 0.03);
			break;
		default:
			b = ((i-100)*0.01) + (10 * 0.1) + (10 * 0.075) + (20 * 0.05) + (20 * 0.03) + (40 * 0.015);
			break;
	}

	printf("您的奖金为%0.2f元\n", b*10000);
	return 0;
}

例题3:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

#include <stdio.h>
#include <math.h> //sqrt()函数(开方函数)属于math函数库,开头需要包含math函数库的头文件

int main(void)
{
	int i, x, y, n=0;

	for(i = 0 ; i < 100000 ; i++)
	{
		x = sqrt(i+100);
		y = sqrt(i+268);
		if( x*x == (i+100) && y*y == (i+268))  //判断是否满足题目条件
		{
			printf("%d\n", i);
			n++;  //记录满足条件的数的个数
		}
	}

	printf("在0~100000中,总共有%d个这样的数\n", n);
	return 0;
}

例题4:输入某年某月某日,判断这一天是这一年的第几天

#include <stdio.h>

#if(0)
/*方法1:用switch语句*/
int main(void)
{
	int y, m, d, day;

	printf("请输入年-月-日:");
	scanf("%d-%d-%d", &y, &m, &d);

	while(m > 12 || d > 31)
	{
		printf("输入有误,请重新输入!\n");
		printf("请输入年-月-日:");
		scanf("%d-%d-%d", &y, &m, &d);
	}

	switch (m)
	{
		case 1:
			day = d;
			break;
		case 2:
			day = d + 31;
			break;
		case 3:
			day = d + 31 + 28;
			break;
		case 4:
			day = d + 31 + 28 + 31;
			break;
		case 5:
			day = d + 31 + 28 + 31 + 30;
			break;
		case 6:
			day = d + 31 + 28 + 31 + 30 + 31;
			break;
		case 7:
			day = d + 31 + 28 + 31 + 30 + 31 + 30;
			break;
		case 8:
			day = d + 31 + 28 + 31 + 30 + 31 + 30 +	31;
			break;
		case 9:
			day = d + 31 + 28 + 31 + 30 + 31 + 30 +	31 + 31;
			break;
		case 10:
			day = d + 31 + 28 + 31 + 30 + 31 + 30 +	31 + 31 + 30;
			break;
		case 11:
			day = d + 31 + 28 + 31 + 30 + 31 + 30 +	31 + 31 + 30 + 31;
			break;
		case 12:
			day = d + 31 + 28 + 31 + 30 + 31 + 30 +	31 + 31 + 30 + 31 + 30;
			break;
	}

	if( y%400 == 0 || (y%100 != 0 && y%4 == 0))
	{
		day++;
	}	

	printf("这一天是该年的第%d天\n", day);
	return 0;
}
#endif

/*方法2:用数组*/
int main(void)
{
	int i, y, m, d, day;
	int a[12] = {0,31,28,31,30,31,30,31,31,30,31,30};

	printf("请输入年-月-日:");
	scanf("%d-%d-%d", &y, &m, &d);

	while(m > 12 || d > 31)
	{
		printf("输入有误,请重新输入!\n");
		printf("请输入年-月-日:");
		scanf("%d-%d-%d", &y, &m, &d);
	}

	day = d;

	for(i=0 ; i<m ; i++)
	{
		day = day + a[i];
	}

	if( y%400 == 0 || (y%100 != 0 && y%4 == 0))
	{
		day++;
	}	

	printf("这一天是该年的第%d天\n", day);

	return 0;
}

例题5:输入三个整数x,y,z,请把这三个数由小到大输出

#include <stdio.h>

int compare(int a[]);  //声明比较函数
void print(int a[]);  //声明打印函数

int n;

int main(void)
{
	int i;
	int a[10];

	printf("请输入要比较的整数个数(2~10):");
	scanf("%d", &n);
	
	while(n<2 || n>10)
	{
		printf("输入有误,请重新输入!\n");
		printf("请输入要比较的整数个数(2~10):");
		scanf("%d", &n);
	}

	for(i=0 ; i<n ; i++)
	{
		printf("请输入第%d个数:", i+1);
		scanf("%d", &a[i]);
	}

	printf("当前数字的排列顺序为:");
	print(a);

	compare(a);
	printf("比较后数字的排列顺序为:");
	print(a);

	return 0;
}

int compare(int a[])
{
	int temp, i, j;
	for(i=0 ; i<n ; i++)
	{
		for(j=i+1 ; j<n ; j++)
		{
			if(a[i] > a[j])
			{
				temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
	}
	return a;
}

void print(int a[])
{
	int i;
	for(i=0 ; i<n ; i++)
	{
		printf(" %d ", a[i]);
	}
	printf("\n");
}

例子6、7:用"*"显示出子母C,输出特殊图案

#include <stdio.h>

void print1();
void print2();

int main(void)
{
	print1();
	printf("\n");
	print2();
	return 0;
}

void print1()
{
	printf("  ***** \n");
	printf(" *      \n");
	printf("*       \n");
	printf(" *      \n");
	printf("  ***** \n");
}

void print2()
{
	printf(" *******   *      ****** *     * ******   *     * ****** *    *   *\n");
	printf("    *      *      *    * *     * *         *   *  *    * *    *   *\n");
	printf("    *      *      *    * *     * *          * *   *    * *    *   *\n");
	printf("    *      *      *    * *     * ******      *    *    * *    *   *\n");
	printf("    *      *      *    *  *   *  *           *    *    * *    *   *\n");
	printf("    *      *      *    *   * *   *           *    *    * *    *    \n");
	printf(" *******   ****** ******    *    ******      *    ****** ******   *\n");
}

例题8、9:输出9*9乘法表、输出国际象棋棋盘

#include <stdio.h>

void print_excel();		//声明九九乘法表打印函数
void print_chess();		//声明国际象棋棋盘打印函数

int main(void)
{
	print_excel();
	print_chess();
	return 0;
}

void print_excel()
{
	int i, j;
	for (i=1 ; i<10 ; i++)
	{
		for (j=1 ; j<i+1 ; j++)
		{
			printf(" %d*%d=%2d ", i, j, i*j);
		}
		printf("\n");
	}
	printf("\n");
}

void print_chess()
{
	int i, j;
	for (i=0 ; i<8 ; i++)
	{
		for (j=0 ; j<8 ; j++)
		{
			if((i+j)%2 == 0)
			{
				printf("%c%c", 168, 128);
			}
			else
			{
				printf("  ");
			}
		}
		printf("\n");
	}
}

例题10:打印楼梯,同时在楼梯上方打印两个笑脸

#include <stdio.h>

void print_stairs(int x);

int main(void)
{
	int n;
	printf("请输入楼梯阶层数:");
	scanf("%d", &n);

	printf("\1 \1\n");
	print_stairs(n);

}

void print_stairs(int x)
{
	int i, j;
	for(i=0 ; i<x ; i++)
	{
		for(j=0 ; j<i+1 ; j++)
		{
			printf("%c%c", 168, 128);
		}
		printf("\n");
	}
}

例子11:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问每个月的兔子总数为多少(输出前40个月的数据)

#include <stdio.h>

int rabbit(int x);

int main(void)
{
	int n, add = 0;
	printf("请输入最终月份:");
	scanf("%d", &n);

	add = add + rabbit(n);
	
	printf("%d个月后兔子的总数为%d\n", n, add);

	return 0;
}

int rabbit(int x)
{
	int y;
	if(x < 3)  //
	{
		y = 2;
	}
	else
	{
		y = rabbit(x-1) + rabbit(x-2); 
        /*递归函数,第x个月兔子数量等于第x-1月与第x-2月数量之和*/
	}
	return y;
}

例题12:判断101-200之间有多少个素数,并输出所有素数

#include <stdio.h>
#include <math.h>

int main(void)
{
	int i, j, k, l, mark;
	int n = 0;
	int a[50];
	for(i=101 ; i<201 ; i+=2)
	{
		for(j=2 ; j<=(int)(sqrt(i)) ; j++)		//sqrt函数包含在math.h头文件中
		{
			if(i%j == 0)
			{
				mark = 0;
			}
		}
		if(mark != 0)
		{
			a[n] = i;
			n++;
		}
	}
	for(l=0 ; l<n ; l++)
	{
		printf("a[%d] = %d\n", l, a[l]);
	}
	return 0;
}

例题13:打印出所有的“水仙花”数,所谓“水仙花”数是指一个三位数,其各位数字立方和等于该数

#include <stdio.h>

int main(void)
{
	int i, j, k, x, y, z, m, n = 0;
	for(i=1 ; i<10 ; i++)
	{
		for(j=0 ; j<10 ; j++)
		{
			for(k=0 ; k<10 ; k++)
			{
				x = i*i*i;
				y = j*j*j;
				z = k*k*k;
				m = i*100 + j*10 + k;
				if(m == (x+y+z))
				{
					printf("%d\n", m);
					n++;
				}
			}
		}
	}
	printf("共有%d个水仙花数\n", n);
	return 0;
}

例题14:将一个正整数分解质因数。例如:输入90,打印出90 = 2x3x3x5

/*在for循环中使用递归函数时,需要break语句和状态判断语句*/
#include <stdio.h>

void bkdown(int x);

int main(void)
{
	int b;

	printf("请输入正整数:");
	scanf("%d", &b);

	printf("%d=", b);
	bkdown(b);

	return 0;
}

void bkdown(int x)
{
	int j;
    int i = 0;
	for(j=2 ; j<x ; j++)
	{
		if(x%j == 0)
		{
			x = x/j;
			printf("%dx", j);;
			bkdown(x);
            i = 1;
            break;
		}
	}
    if(i == 0)
    {
        printf("%d\n", x);
    }
}

例题15:利用条件运算符的嵌套完成学习成绩的转换:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
60分以下的用C表示

#include <stdio.h>

int main(void)
{
	int a, b;

	printf("请输入学生成绩:");
	scanf("%d", &a);

	((a>=90) ? printf("A\n") : ((a>60 && a<90) ? printf("B\n") : printf("C\n") ));
	return 0;
}

例题16:输入两个正整数m和n,求其最大公约数和最小公倍数

#include <stdio.h>

int main(void)
{
	int m, n, i, j;
	int t = 1;

	printf("请输入正整数m,n:");
	scanf("%d %d", &m, &n);

	if(m>n)
	{
		j = m;
	}	
	else
	{
		j = n;
	}
	
	for(i=1 ; i<j ; i++)
	{
		if(m%i == 0 && n%i == 0)
		{
			m = m / i;
			n = n / i;
			t = t * i;
			i = 1;  //重新循环,除数可以相同
		}
	}

	printf("这两个数的最大公约数为%d,最小公倍数为%d\n", t, t*m*n);

	return 0;
}

例题17:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

#include <stdio.h>
#include <conio.h>

int main(void)
{
	char c;
	int l=0, s=0, n=0, o=0;

	printf("请输入字符串:\n");

	while((c=getchar()) != '\n')
	{
		if(c >= 'A' && c <= 'z')
		{
			l++;
		}
		else if(c == ' ')
		{
			s++;
		}
		else if(c >= '0' && c <= '9')
		{
			n++;
		}
		else
		{
			o++;
		}
	}

	printf("输入字符串中有%d个字母,%d个空格,%d个数字,%d个其他字符\n", l, s, n, o);

	return 0;
}

例题18:求s=a+aa+aaa+aaaa+aa...a的值

#include <stdio.h>
#include <math.h>

int main(void)
{
	int a, b, i, j;
	int s = 0;

	printf("请输入数字以及项数:");
	scanf("%d %d", &a, &b);

	for(j=b ; j>0 ; j--)    //外循环为每一项
	{
		for(i=j ; i>0 ; i--)    //从最后一项开始算起,内循环为每一项的和
		{
			s = s + a * pow(10, i-1);
		}
	}

	for(j=1 ; j<b+1 ; j++)
	{
		for(i=j ; i<b+1 ; i++)
		{
			printf("%d", a);
		}
		if(j != b)
		{
			printf("+");
		}
		else
		{
			printf("=%d\n", s);
		}
	}

	return 0;
}

例题19:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
找出1000以内的所有完数

#include <stdio.h>

int bkdown(int x);

int main(void)
{
	int i, r;
	int m = 0;
	int a[100];

	for(i=1 ; i<1001 ; i++)
	{
		r = bkdown(i);
		if(r != 0)
		{
			a[m] = r;
			m++;
		}
	}

	printf("1000以内有%d个完全数,分别为:\n", m);
	for(i=0 ; i<m ; i++)
	{
		if(i != m-1)
		{
			printf("%4d ", a[i]);
		}
		else
		{
			printf("%4d\n", a[i]);
		}
	}

	return 0;
}

int bkdown(int x)
{
	int j, l;
	int s = 0;
	l = x;

	for(j=1 ; j<l ; j++)
	{
		if(l%j == 0)
		{
			s = s + j;
		}
	}

	if(s == x)
	{
		return x;
	}
	else
	{
		return 0;
	}
}

例题20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第10次落地时,共经过多少米?第10次反弹多高?

#include <stdio.h>

int main(void)
{
	int i;
	float s = 0;
	float h = 100;

	for(i=0 ; i<10 ; i++)
	{
		s = s + h;    //球每次从最高点落地时的高度
		h = h / 2.0;
        if(i != 9)
        {
            s = s + h;    //球每次从地面反弹到最高点的高度
        }
	}

	printf("小球第10次落地时,共经过%f米,第10次反弹%f米\n", s, h);
	return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值