c语言100实例


目录

1. 有1,2,3,4个数字,能组成多少个互不相同的无重复数字的三位数?都是多少?

 2.企业发放奖金根据利润提成。利润不高于十万时,奖金可提10%,高于十万时,低于十万部分不变,高于十万部分可提7.5%,20万到40万时,高于20万部分可提5%,40万到六十万时高于四十万部分可提3%,60万到100万,高于60万部分可提1.5%,超过100万按1%提成。键盘输入当月利润 i,求发放的奖金。

3.个整数它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问数是多少。

4.输入某年某月某日,判断这一天是这一年的第几天?

5.三个数排序

6.输出九九乘法表

7. 输出国际象棋棋盘

8.输出楼梯图形

9.有一对兔子,从出生第三个月之后,每个月生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子不死,求每个月兔子的数量是多少?一年之后是多少?

10.编程题10:输出101--200之间的素数

11.打印100-1000内的水仙花数

12.将一个正整数分解因数。例如:输入90,打印90=2*3*3*5

13.利用条件运算符完成。>=90的同学用A表示,60-89分用B表示,60分以下用C表示

14.辗除法实现输入两个正整数m和n,求最大公约数和最小公倍数。

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

16.求a+aa+aaa+aaaa+aaaaa+...+aa...a的值,a是一个数字及其变式。

17.一个数恰好是他的因子之和,这个数就被称为“完数”。例如;6=1+2+3.求1000内的完数

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

19.猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,不过瘾,又吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天的一半多一个,到第10天只剩一个桃子。求第一天吃了多少?

20.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。比赛名单顺序。a不和x比,c说不和x,z比,请找出三队选手的比赛名单。

21.打印菱形,数字类图形

22.有一序列 2/1,3/2,5/3,8/5,13/8,21/13...求这个数列的前20项之和。

23.1+2!+3!+4!+...+20!的和?

24.水仙花数

25.将一个正整数分解质因数

26.

27.给一个不多已5位数的正整数,要求:一、求是个几位数。二、逆序打印程序分析:将每个位取出来计算.

28.一个5位数,判断是不是回文数。12321是回文数,个位和万位相同,十位和千位相同。程序分析:将每个位取出来比较。

29.请输入星期几的第几个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:情况语句比较好,如果第一个字母一样,可以用if条件语句判断。

30.求一百以内的素数

31. 对10个数排序

32.求一个3*3矩阵对角线元素之和

33.有一个已经排好序的数组。先输入一个数,要求按原来的规律将它插入数组中。

34.将一个数组逆序输出

35.杨辉三角,输出前十行

36.好数 各位数乘积能被各位之和整除

37.不超过

38.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子分成5份,多了一个,这只猴子将多了的一个仍入海中,拿走了一份。第二只猴子把剩下的桃子又分均分成5份,又多了一个,同样的扔海中了,拿走了一份,第三、第四、第五都是这样做的。求海滩原来最少有多少个?

39.八进制转换成十进制

40.0-3所能组成的奇数个数

41.一个偶数总能表示两个素数之和

42.strcat


1. 有1,2,3,4个数字,能组成多少个互不相同的无重复数字的三位数?都是多少?

//编程1:有1,2,3,4个数字,能组成多少个互不相同的无重复数字的三位数?都是多少?
#include"stdio.h"
main(){
	int i,j,k;
	printf("\n");
	for(i=1;i<5;i++){
		for(j=1;j<5;j++){
			for(k=1;k<5;k++){
				if(i!=k&&i!=j&&k!=j)
				printf("%d%d%d\n",i,j,k);
			}
		}
	}
	return 0;
}

 2.企业发放奖金根据利润提成。利润不高于十万时,奖金可提10%,高于十万时,低于十万部分不变,高于十万部分可提7.5%,20万到40万时,高于20万部分可提5%,40万到六十万时高于四十万部分可提3%,60万到100万,高于60万部分可提1.5%,超过100万按1%提成。键盘输入当月利润 i,求发放的奖金。

/*编程2:企业发放奖金根据利润提成。利润不高于十万时,奖金可提10%,高于十万时,低于十万部分不变,
高于十万部分可提7.5%,20万到40万时,高于20万部分可提5%,40万到六十万时高于四十万部分可提3%,
60万到100万,高于60万部分可提1.5%,超过100万按1%提成。键盘输入当月利润 i,求发放的奖金。*/
#include"stdio.h"
main(){
	long int i;   //呆滞刻板
	int sum=0;
		scanf("%d",&i);
		if(i<=100000)    
		sum=100000*0.1;
			else if(i<=200000)
				sum=100000*0.1+100000*0.075;
					else if(i<=400000)
						sum=100000*0.1+100000*0.075+200000*0.05;
							else if(i<=600000)
								sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03;
									else if(i<=1000000)
										sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015;
											else sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(i-1000000)*0.01;
											printf("sum=%d",sum);
											return 0;

第二种:
//long int i;
//int w1,w2,w4,w6,w10,sum=0;
//scanf("%d",&i);
//w1=100000*0.1;
//w2=w1+100000*0.075;
//w4=w2+200000*0.05;
//w6=w4+200000*0.03;
//w10=w6+400000*0.015;
//if(i<=100000)
//	sum=i*0.1;
//		else if(i<=200000)
//			sum=w1+(i-100000)*0.075;
//				else if(i<=400000)
//					sum=w2+(i-200000)*0.05;
//						else if(i<=600000)
//							sum=w4+(i-200000)*0.03;
//								else if(i<=1000000)
//									sum=w6+(i-600000)*0.015;
//										else 
//											sum=w10+(i-1000000)*0.01;
//	printf("sum=%d",sum);
//	return 0;						                                                                                                                                                                                                                                                                                                      
}

3.个整数它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问数是多少。

//编程3:一个整数它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问数是多少。
#include"stdio.h"
#include"math.h"
main(){
	long int i,x,y,z;
	for(i=1;i<1000000;i++)
	{
		x=sqrt(i+100);
		y=sqrt(i+168);
		if(x*x==i+100&&y*y==i+168)
		printf("\n%ld\n",i);
	}
	return 0;
}

4.输入某年某月某日,判断这一天是这一年的第几天?

//编程4:输入某年某月某日,判断这一天是这一年的第几天?
#include"stdio.h"
main(){
	
	int day,month,year,sum=0,leap;
	printf("请输入某年某月某天");
	scanf("%d,%d,%d",&year,&month,&day);//输入格式符合条件 例如:2022,3,7
	switch(month)
	{
		case 1:sum=0;break;
		case 2:sum=31;break;
		case 3:sum=59;break;
		case 4:sum=90;break;
		case 5:sum=120;break;
		case 6:sum=151;break;
		case 7:sum=181;break;
		case 8:sum=212;break;
		case 9:sum=243;break;
		case 10:sum=273;break;
		case 11:sum=304;break;
		case 12L:sum=334;break;         
		default:printf("error\n");
	}
	sum=sum+day;//总的sum= sum+是某月的第几天
	if(year%400==0||(year%4==0&&year%100!=0))
			leap=1;
	else 
			leap=0;
	if(leap==1&&month>2) //若是闰年且月份大于2月份加一天
	sum++;
	printf("是该年的第%d天",sum);
	return 0;                                                                                                                                          		
}

5.三个数排序

//编程5:输入三个整数想,x,y,z,三个数从小到大输出
#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=y,z=y,z=t;}
	printf("%d %d %d\n",x,y,z);
	return 0;	
}	

6.输出九九乘法表

//编程6:输出九九乘法口诀
#include"stdio.h"
main() {
int i,j,sum=0;
for(i=1;i<10;i++){
	for(j=1;j<=i;j++){
		sum=i*j;
		printf("%d*%d=%-3d",i,j,sum);
	}
	printf("\n");
}
return 0;
}

7. 输出国际象棋棋盘

//编程7:输出国际象棋棋盘
#include"stdio.h"
main(){
	int i,j;
	for(i=0;i<8;i++){
		for(j=0;j<8;j++){
			if((i+j)%2==0)
				printf("%c%c",0xa8,0x80);
				else 
					printf(" ");	
			}
	printf("\n");
	}
return 0;
}

8.输出楼梯图形

//编程8:输出楼梯图形
#include"stdio.h"
main(){
	int i,j;
	for(i=1;i<11;i++){
		for(j=1;j<=i;j++){
			printf("%c%c",0xa8,0x80);
		}
		printf("\n");
	}
	return 0;
}

9.有一对兔子,从出生第三个月之后,每个月生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子不死,求每个月兔子的数量是多少?一年之后是多少?

//编程9:有一对兔子,从出生第三个月之后,每个月生一对兔子,小兔子长到第三个月又生一对兔子,、
//假如兔子不死,求每个月兔子的数量是多少?一年之后是多少?
#include"stdio.h"
main(){
	long f1,f2;
	int i;
	f1=f2=1;
	for(i=1;i<=12;i++){
		printf("%12d%12d",f1,f2);
		if(i%2==0) printf("\n");                                                                                                                                     
		f1=f1+f2;
		f2=f1+f2;
	}
	return 0;
}

10.编程题10:输出101--200之间的素数

//编程题10:输出101--200之间的素数
#include"stdio.h"
main(){
	int i,j,cnt=0;
	for(i=101;i<=200;i++){
		for(j=2;j

11.打印100-1000内的水仙花数

//编程11:打印100-1000内的水仙花数
#include"stdio.h"
main(){
	int i,j,k,n;
	for(n=100;n<1000;n++){
		i=n/100;
		j=n/10%10;
		k=n%10;
		if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
		printf("%-5d",n);
	}
	return 0;
}

12.将一个正整数分解因数。例如:输入90,打印90=2*3*3*5

//编程12:将一个正整数分解因数。例如:输入90,打印90=2*3*3*5
#include"stdio.h"
main(){
	int n,i;
	scanf("%d",&n);
	printf("%d=",n);
	for(i=2;i<=n;i++)
	while(n!=i){
		if(n%i==0){
			printf("%d*",i);
			n=n/i;
		}
		else 
			break;
	}
	printf("%d",n);
	return 0;
}

13.利用条件运算符完成。>=90的同学用A表示,60-89分用B表示,60分以下用C表示

//编程13利用条件运算符完成。>=90的同学用A表示,60-89分用B表示,60分以下用C表示
#include"stdio.h"
main(){
	int cj;
	char g;
	scanf("%d",&cj);
	g=cj>=90?'A':(cj>=60?'B':'C');
	printf("%d %c\n",cj,g);
	return 0;
}

14.辗除法实现输入两个正整数m和n,求最大公约数和最小公倍数。

//编程14:输入两个正整数m和n,求最大公约数和最小公倍数。
#include"stdio.h"
main(){
	int a,b,num1,num2,t;
	printf("输入两个正整数\n");
	scanf("%d,%d",&num1,&num2);
	if(num1

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

//编程15:输入一行字符,分别统计其中英文字母、空格、数字和其他字符的个数。
#include"stdio.h"
main(){
	char c;
	int letters=0,space=0,figure=0,others=0;
	printf("请输入一行字符\n");
	while((c=getchar())!='\n'){
		if(c>='a'&&c<='z'||c>='A'&&c<='Z')
				letters++;
			else if(c==' ')
				space++;
			else if(c>='0'&&c<='9')
				figure++;
			else others++;
	}
	printf("letters=%d,space=%d,figure=%d,others=%d",letters,space,figure,others);
	return 0;
}

16.求a+aa+aaa+aaaa+aaaaa+...+aa...a的值,a是一个数字及其变式。

//编程16:求a+aa+aaa+aaaa+aaaaa+...+aa...a的值,a是一个数字。
#include"stdio.h"
main(){
	int i,n,a,s=0,ss=0;
	printf("请输入多少项,值为多少。\n");
	scanf("%d,%d",&n,&a);//输出项的数量n和数值a
	for(i=0;i

17.一个数恰好是他的因子之和,这个数就被称为“完数”。例如;6=1+2+3.求1000内的完数

//编程17:一个数恰好是他的因子之和,这个数就被称为“完数”。例如;6=1+2+3.求1000内的完数。
#include"stdio.h"
main(){
	int i,j,s;
	for(i=2;i<=1000;i++){
		s=0;//s每次都要置0,所以放for循环例里面
		for(j=1;j

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

//编程18:一球从100米高度自由落下,每次落地反弹后跳回原来高度的一半,再落下,
//求十次落地后,共经过多少米?第10次多高?
#include"stdio.h"
main(){
	float s=100.0,h=50;
	int i,cnt=1;
	for(i=2;i<=10;i++){
		s=s+h*2;//第一次下落s=100米 反弹高度=下落高度  =2*h
		h/=2;//减半
		cnt++;
		printf("第%d次   %f米\n",cnt,s);
	}
	printf("共经过%f米\n",s);
	printf("第10次高度是%f米\n",h);
	return 0;
}

19.猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,不过瘾,又吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天的一半多一个,到第10天只剩一个桃子。求第一天吃了多少?

//编程19:猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半,不过瘾,又吃了一个,
//第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天都吃了前一天的一半多一个,
//到第10天只剩一个桃子。求第一天吃了多少?

//程序分析:逆向思维
#include"stdio.h"
main(){
	int day=10,x1,x2=1;
	while(day>0){    //已知第十天,从第九天起算
		x1=(x2+1)*2;
		x2=x1;
		day--;
	}
	printf("%d\n",x1);//吃不了这么多吧
	return 0;
}

20.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。比赛名单顺序。a不和x比,c说不和x,z比,请找出三队选手的比赛名单。

//编程20:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。比赛名单顺序。
//a不和x比,c说不和x,z比,请找出三队选手的比赛名单。
#include"stdio.h"
main(){
	  
	  
}

21.打印菱形,数字类图形

//编程21:图形打印
//    *
//   ***
//  *****
// *******
//*********
// *******
//  *****
//   ***
//    *

//程序分析:把图形分为两部分看待,前五行,后四行,for循环嵌套,i循环次数,j输出空格,k输出*
#include"stdio.h"
main(){
	int i,j,k;
	for(i=1;i<=5;i++){  //第一个for循环,嵌套两个小for循环
		for(j=1;j<=5-i;j++)//前五行空格
			printf(" ");
		for(k=1;k<=2*i-1;k++)//输出前五行*
			printf("*");
			printf("\n");//程序执行一边换行
	}
	for(i=1;i<=4;i++){  //第二个for循环,嵌套两个小for循环
		for(j=1;j<=i;j++)//后四行空格
			printf(" ");
		for(k=1;k<=9-2*i;k++)//输出后四行*
			printf("*");
		printf("\n");	//程序执行一边换行
	}
	return 0;  
}


//图形类1
/*
******
 ******
  ******
   ******
   */
#include"stdio.h"
int main(){
	/*int i,j;
		for(i=1;i<=4;i++){
			for(j=1;j<=i-1;j++)
			printf(" ");
			for(j=1;j<=6;j++){
				printf("*");
				printf("\n");
			}
		}*/
		
//数字类:printf("*");换成printf("%d",i(b变)或j(变))
//例:		1        5       1       5
//         12       45      21       45
//        123      345     321       345
//       1234     2345    4321       2345
//      12345    12345   54321       12345
int i,j,k;
	/*for(i=1;i<=5;i++){
			for(j=1;j<=5-i;j++){
				printf(" ");
			}
			for(j=1;j<=i;j++){
				printf("%d",j);
			}
			printf("\n");
		}*/
		
		
	/*for(i=1;i<=5;i++){
			for(j=1;j<=5-i;j++){
				printf(" ");
			}
			for(j=6-i;j<=5;j++){
				printf("%d",j);
			}
			printf("\n");
		}*/
		
	/*for(i=1;i<=5;i++){
			for(j=1;j<=5-i;j++){
				printf(" ");
			}
			for(k=i;k>=1;k--){
				printf("%d",k);
			}
		
			printf("\n");
		}*/
	
	for(i=1;i<=5;i++){
		for(j=6-i;j<=5;j++){
			printf("%d",j);
		}
		printf("\n");
	}			
		
	return 0;
}




//图形类2
/*  A
   AB
  ABC
 ABCD
ABCDE */

//#include"stdio.h"
//int main(){
//	
//	int i,j;
//	for(i=1;i<=5;i++){
//			for(j=1;j<=5-i;j++){
//				printf(" ");
//			}
//			for(j=1;j<=i;j++){
//				printf("%c",j+64);
//			}
//			printf("\n");
//		}
//}

//九九乘法表
//	int i,j;	
//	for(i=1;i<=9;i++){
//		for(j=1;j<=i;j++){
//			printf("%d*%d=%-3d",i,j,i*j);
			printf("%d*%d=%-3d",j,i,i*j);
//		}
//		printf("\n");
//	} 	 
//}

22.有一序列 2/1,3/2,5/3,8/5,13/8,21/13...求这个数列的前20项之和。

//编程22;有一序列 2/1,3/2,5/3,8/5,13/8,21/13...求这个数列的前20项之和。

//程序分析:后一个分子是前一个数的分子+分母,分母是前一个的分子
#include"stdio.h"
main(){
	int i,t;
	float a=2,b=1,s=0.0;//float 分数
	for(i=1;i<=20;i++){
		s+=a/b;
		t=a;a=a+b;b=t;//a+b赋给下个a,a赋给下个b
	}
	printf("%9.6f\n",s);
	return 0;
}

23.1+2!+3!+4!+...+20!的和?

//编程23:1+2!+3!+4!+...+20!的和?

//程序分析:类似于累加
#include"stdio.h"
main(){
	int i;
	float s=1,ss=0;//s*= 中s必须是初始值为 1
	for(i=1;i<=20;i++){
		s*=i;
		ss+=s;		
	}
	printf("%f\n",ss);
}

24.水仙花数

#include"stdio.h"
int main(){
	int i,x,y,z;
	for(i=100;i<1000;i++){
		x=i%10;
		y=i/10%10;
		z=i/100%10;
		if(x*x*x+y*y*y+z*z*z==i){ //判断条件
			printf("%d\n",i);
		}
	}
} 

25.将一个正整数分解质因数

#include"stdio.h"
int main(){
	int n,i;
	printf("请输入整数:");
	scanf("%d",&n);
	printf("%d=",n);
	for(i=2;i<=n;i++){
		while(n%i==0){
			printf("%d",i);
			n/=i;
			if(n!=1){
				printf("*");
			}
		}
	} 
}

26.

27.给一个不多已5位数的正整数,要求:一、求是个几位数。二、逆序打印
程序分析:将每个位取出来计算.

//编程27:给一个不多已5位数的正整数,要求:一、求是个几位数。二、逆序打印
//程序分析:将每个位取出来计算
#include"stdio.h"
main(){
	int a,b,c,d,e,x;
	scanf("%d",&x); //万
	a=x/10000;  //千
	b=x/1000%10; // 百
	c=x/100%10; //十
	d=x/10%10;  //个
	e=x%10;
	if(a!=0) printf("有5位 %d %d %d %d %d\n",e,d,c,b,a);
	else if(b!=0) printf("有4位 %d %d %d %d\n",e,d,c,b);
	else if(c!=0) printf("有3位 %d %d %d\n",e,d,c);
	else if(d!=0) printf("有2位 %d %d \n",e,d);
	else if(e!=0) printf("有1位 %d\n",e);
	else printf("error\n");
	return 0;
}

28.一个5位数,判断是不是回文数。12321是回文数,个位和万位相同,十位和千位相同。程序分析:将每个位取出来比较。

//编程28:一个5位数,判断是不是回文数。12321是回文数,个位和万位相同,十位和千位相同。
//程序分析:将每个位取出来比较
#include"stdio.h"
main(){
	int a,b,c,d,e,x;
	printf("请输入一个5位数\n");
	scanf("%d",&x);
		a=x/10000;//万
		b=x/1000%10;//千
		d=x/10%10;//十
		e=x%10;//个
		if(a==e&&b==d) //判断条件是否符合
			printf("%d是回文数\n",x);
		else 
			printf("该数不是回文数\n");
		return 0;
		
}

29.请输入星期几的第几个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。程序分析:情况语句比较好,如果第一个字母一样,可以用if条件语句判断。

//编程29:请输入星期几的第几个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
//程序分析:情况语句比较好,如果第一个字母一样,可以用if条件语句判断。
#include"stdio.h"
main(){
	char letter;
	printf("输入英文日期\n");
	while((letter=getchar())!='#'){ //以字符'#'结束
		switch(letter){  //Switch语句,搭配break使用
			case 'S':printf("请输入第二个字母\n");//第一个字母一样,判断第二个字母
			if((letter=getchar())=='a')  //if判断,符合条件输出
				printf("saturday\n");
			else if((letter=getchar())=='u')
				printf("sunday\n");
			else printf("error\n");//上面两种都不符合输出error
			break;//case 结束,跳出循环
			case 'F':printf("friday\n");break;
			case 'M':printf("monday\n");break;
			case 'T':printf("请输入第二个字母\n");
			if((letter=getchar())=='h')
				printf("thursday\n");
			else if((letter=getchar())=='u')
				printf("tuesday\n");
			else printf("error\n");
			break;
			case 'w':printf("wednesday\n");break;
			default:printf("data error\n");//以上条件都不符合,执行default语句
		}
	}
	return 0;
}

30.求一百以内的素数

//编程30:求一百以内的素数
#include"stdio.h"
#include"math.h"
int main(){
	int i,j;
	for(i=3;i<=100;i++){//素数:除1和它本身之外没有其他因子的数
		for(j=3;j<=i;j++){
		if(i%j==0) break;//若有其他因子直接跳出
		}	
		if(i==j)//找到本身的数就是素数
		printf("%-5d",i);
	}
}

31. 对10个数排序

//编程31:对10个数排序
//程序分析:可以利用选择法,即从后九个比较过程中,选择一个最小的与第一个元素交换,下次类推。
#include"stdio.h"
main(){
	int i,j,min,a[10],t;
	for(i=0;i<10;i++){
		printf("a[%d]=",i);
		scanf("%d",&a[i]);
	}		              
	for(i=0;i<10;i++)
		printf("%5d",a[i]);  
		printf("\n");
	for(i=0;i<9;i++){
		min=i;
		for(j=i+1;j<10;j++){
			if(a[min]>a[j]) 
				{min=j;}
			t=a[i];
			a[i]=a[min];
			a[min]=t;
		}
	}
	for(i=0;i<10;i++)
		printf("%5d",a[i]);                    
	return 0;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
}

32.求一个3*3矩阵对角线元素之和

//编程32:求一个3*3矩阵对角线元素之和
//程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
#include"stdio.h"
main(){
	float a[3][3],sum=0;
	int i,j;
	for(i=0;i<3;i++)//外循环
		{for(j=0;j<3;j++)//内循环
		scanf("%f",&a[i][j]);//键入数据值
	}
	for(i=0;i<3;i++)
		{sum=sum+a[i][i];}//对角线i=i 
	printf("对角线之和%6.2f",sum);
	return 0;			
}

33.有一个已经排好序的数组。先输入一个数,要求按原来的规律将它插入数组中。

//编程33:有一个已经排好序的数组。先输入一个数,要求按原来的规律将它插入数组中。
//程序分析:先判断是否大于最后一个数,排除不在其中的情况,再考虑插入中间的情况。
//#include"stdio.h"
//main(){
//	int a[11]={1,2,3,4,5,6,7,8,9,10};
//	int temp1,temp2,i,j,end,number;
//	for(i=0;i<10;i++)
//		printf("%5d",a[i]);//输出原有数组
//	printf("\n");
//	printf("请输出一个新的数字number:\n");//提示语句
//	scanf("%d",&number);//输入
//	end=a[9];//找到最后一个元素
//	if(number>a[9])//与a[9]比较大小,超过a[9]放在数组第十位上
//		a[10]=number;//第十位
//	else {//上面条件不成立执行该语句
//		for(i=0;i<10;i++){//遍历
//			if(a[i]>number){//判断number会是第几位,将number赋给该位置
//				temp1=a[i];
//				a[i]=number;//将number赋给该位置
//				for(j=i+1;j<11;j++){//从i位往后,将数组后一个下标的数值赋给前面一个下标,
//					temp2=a[j];      
//					a[j]=temp1;
//					temp1=temp2;//重复,实现每位数对应下标往后推一位
//				}
//			break;//执行完跳出
//		}
//	}
//}
//	for(i=0;i<11;i++){
//		printf("%5d",a[i]);
//	}
//return 0;
//}

#include"stdio.h"
main(){
	int a[10]={38,29,25,18,17,12,9,6,4},x,i,t;
	printf("请输入一个数x,要求0<=x<=40:\n");
	scanf("%d",&x);
	a[9]=x;
	for(i=0;i<9;i++)
	printf("a[%d]=%d  ",i,a[i]);
	printf("\n");
	for(i=0;i<10;i++){
		if(a[9]>a[i]){
			t=a[9];
			a[9]=a[i];
			a[i]=t;
		}
	}
	for(i=0;i<10;i++)
		printf("a[%d]=%d  ",i,a[i]);
		return 0;
}

34.将一个数组逆序输出

//编程34:将一个数组逆序输出
//程序分析:将第一个和最后一个互换
#include"stdio.h"
#define N 5
main(){
	int a[N]={1,4,7,5,9},i,temp1;
	for(i=0;i

35.杨辉三角,输出前十行

//编程35:杨辉三角,输出前十行
/*    1
	  1   1
	  1   2   1
	  1   3   3   1
	  1   4   6   4   1
	  1   5   10  10  5   1  
*/
#include"stdio.h"
main(){
	int i,j,a[10][10];//定义
	for(i=0;i<10;i++){//特殊情况
		a[i][0]=1;
		a[i][i]=1;
	}
	for(i=2;i<10;i++)//规律   某个位置的值=该值上面数值+该值上方左边的数值
		for(j=1;j

36.好数 各位数乘积能被各位之和整除

//76:好数 各位数乘积能被各位之和整除
#include "stdio.h"
main()
{
int i,j,k,b,c,d,m[10],cnt=0,a[10];
	printf("请输入一组不超过10个数的三位数并以-1作为结束:\n");
	for(i=0;i<10;i++){
			scanf("%d",&a[i]);
			b=a[i]/100%10;
			c=a[i]/10%10;
			d=a[i]%10;
		}
	for(i=0;i<10;i++){
		if((b+c+d)%(b*c*d)==0)
		m[cnt++]=a[i];
	}
	for(j=0;j

37.不超过

#include"stdio.h"
main(){
	int i,sum=0,s=0;
	for(i=1;;i+=3){
		sum+=i;
		if(sum>1000)
		{printf("不超过1000的最大i的值为 %d\n",(i-3)); break;}	
	}
		printf("超过1000的值为 %d\n",sum);
		for(i=1;i<=73;i+=3)
			s+=i;
		printf("不超过1000的最大值为 %d\n",s);
	return 0;
}

38.海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子分成5份,多了一个,这只猴子将多了的一个仍入海中,拿走了一份。第二只猴子把剩下的桃子又分均分成5份,又多了一个,同样的扔海中了,拿走了一份,第三、第四、第五都是这样做的。求海滩原来最少有多少个?

//编程38:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子分成5份,多了一个,这只猴子将多了的一个
//仍入海中,拿走了一份。第二只猴子把剩下的桃子又分均分成5份,又多了一个,同样的扔海中了,拿走了一份,
//第三、第四、第五都是这样做的。求海滩原来最少有多少个?

#include"stdio.h"
main(){
	int m,i,j,k,count;//i为每次剩下的桃子数量   j 为桃子的总数
	  for(i=4;i<10000;i+=4){  //循环5次  第一次剩余4个,第二次应该(4+1+1)/4*5   所以必须是4的倍数
	  	count=0;
	  	m=i;
	  	for(k=0;k<5;k++){
		  	j=i/4*5+1;         //对应每一次总的桃子数 
		  	i=j;               //下一次的桃子数量是上一次剩余桃子数量
		  	if(j%4==0)         //剩余的能被4整除才能继续算 
		  		count++;
		  	else 
		  		break;
		  }
	  i=m;
	  if(count==4)            //能被4整除的次数为4 
	  {printf("原数量最少为 %d 个\n",j);break;}
	}
	return 0;
}

39.八进制转换成十进制

//编程39:八进制转换成十进制

#include 
int main()
{
	char *p, s[8];    // 100  1*8^2+0*8^1+0*8^0
	int n;
	p=s;
	gets(p);
	n = 0;
	while (*p)
		n = n * 8 + *(p++) - '0';
	printf("%d\n", n);
	return 0;
}
/*


//#include 
///*10进制转换为8进制*/
//void fun(int a)
//{
//	int chu, yu;
//	chu=a/8;
//	yu=a%8;
//	if(chu==0)
//	{
//		printf("%d",yu);
//	}
//    else
//    {
//    	fun(chu);
//    	printf("%d",yu);
//	}
//}
//int main()
//{
//	int x;
//	printf("请输入10进制数:");
//	scanf("%d",&x);
//	printf("转化后的8进制为:");
//	fun(x);
//    return 0;
//}



#include 
/*10进制转换为16进制*/
int sum(int a,char b[])
{
	int chu, yu;
	chu=a/16;
	yu=a%16;
	if(chu==0)
		printf("%c",b[yu]);
    else
    {
    	sum(chu,b);
    	printf("%c",b[yu]);
	}
}
int main()
{
	int a;
	char b[17]="0123456789ABCDEF";
	printf("请输入10进制数:");
	scanf("%d",&a);
	printf("转化后的16制数为:");
	sum(a,b);
    return 0;
}


1.首先理解一下八进制转化为十进制,是数字形式的转化,但是在计算机中数字字符都是按照acsii
的形式存储的,所以说首先要将数字字符的ascii码转化为数字,代码就是   n=*p-'0';
2.转化成数字成功之后就是将指针的地址指向下一个数组的值的地址  p++;
然后就是去判断,将输入发的几个数字字符都转化为十进制数字之后,再整体结合成一个完整的十进制数

要清楚的两点是:1.数字字符(ascii)转化为数字   n=*p-'0';
                2.八进制转化为为十进制的算法  n=n*8+*p-'0';

解释链接:https://blog.csdn.net/zmyyyyu/article/details/120212562
*/

40.0-3所能组成的奇数个数

//编程40:0-3所能组成的奇数个数
#include"stdio.h"
main(){
	long sum=4,s=4;      //s是范围内奇数个数    sum=4是一位数时奇数个数
 	int j;
	for(j=2;j<=8;j++)    // j代表位数
	{
		printf("%ld\n",sum);
	if(j<=2)             //个位为1,3,5,7    
		s*=3;            // 十位不能为0,7种情况
	else 
		s*=4;            //大于两位数就是八种情况
	sum+=s;}             //s是一位,两位数...八位数时可以有多少个奇数    sum是s的和
	printf("sum=%ld",sum);
	return 0;
}

/*public static void main(String[] args) {
        //求0-7组成的奇数个数,不重复,如果可以重复,结果无数多个
        int count = 0;
        //一位数
        count = 4; //1,3,5,7 个位必须保证为奇数
        //两位数
        count += 6 * 4; //排列问题,个位从4个奇数中选一个,十位不能为0,不能与各位相同,还有6种选择
        //三位数
        count += 6 * 6 * 4; //同两位数
        //四位数
        count += 6 * 6 * 5 * 4;
        //五位数
        count += 6 * 6 * 5 * 4 * 4;
        //六位数
        count += 6 * 6 * 5 * 4 * 3 * 4;
        //七位数
        count += 6 * 6 * 5 * 4 * 3 * 2 * 4;
        //八位数
        count += 6 * 6 * 5 * 4 * 3 * 2 * 1 * 4;

        System.out.println("0-7所能组成的奇数个数:"+count);

    }
*/

41.一个偶数总能表示两个素数之和

//编程41:一个偶数总能表示两个素数之和
//#include"stdio.h"
//#include"math.h"
//main(){
//	int a,b,c,d;
//	scanf("%d",&a);
//	for(b=3;b<=a/2;b+=2){
//		for(c=2;c<=sqrt(b);c++)
//		if(b%c==0) break;
//		if(c>sqrt(b))
//			d=a-b; 
//		else 
//			break;
//		for(c=2;c<=sqrt(d);c++)
//		if(d%c==0) break;
//		if(c=sqrt(d))
//		printf("%d=%d+%d\n",a,b,d);
//	}
//	return 0;
//}

#include 
#include 
#include 

int isPrime(int n) 
{
    if(n < 2) {
        return 0;
    }
    for(int i = 2; i <= sqrt(n); i++) {
        if(n % i == 0) {
            return 0;
	    }
    }
    return 1;
}

int main()
{
    int n;
    int i;
    printf("请输入一个偶数:");
    scanf("%d",&n);
    for (i = 1; i < n; i++) {
        if (isPrime(i) && isPrime(n-i)) {
            break;
        }
    }
    printf("偶数%d可以分解成%d和%d两个素数的和:", n, i, n-i);
    return 0;
}

42.strcat

//编程75:strcat
#include"stdio.h"
#include"string.h"
main(){
//	char a[100],b[100];
//	int i,j,k;
//	printf("请输出a数组:\n");
//	gets(a);
//	printf("请输出b数组:\n");	
//	gets(b);
//	for(i=strlen(a),j=0;i<=strlen(a)+strlen(b);i++,j++)
//	a[i]=b[j];
//	puts(a);
//	return 0;

char a[100],b[100],i,j,k; 
printf("输入数组a\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(i=1,j=0;i<=strlen(a);i++,j++)
a[i]=b[j];
for(i=0;i

你可能感兴趣的:(C语言,c++,蓝桥杯,c语言,算法)