C语言_算法_7

7.1 输入三个数排序,从小到大排序

(1)方式一:变量

#include <stdio.h>
int main() {
	int a,b,c,d,temp;
	printf("请a,b,c的值(以,隔开) ");
	scanf("%d,%d,%d",&a,&b,&c,&d);
	if(a>b){
		temp=a;
		a=b;
		b=temp;
	}
	if(a>c){
		temp=a;
		a=c;
		c=temp;
	}
	if(b>c){
		temp=c;
		c=b;
		b=temp;	 
	}
	printf("从小到大输出:%d,%d,%d\n",a,b,c);
	return 0;
	
}

 (2)方式二 指针

#include <stdio.h>
int main() {
	void exchange(int *q1,int *q2,int *q3);
	void swap(int *pt1,int *pt2);
	int a,b,c,*p1,*p2,*p3;
	printf("输入三个整数用,隔开:"); 
	scanf("%d,%d,%d",&a,&b,&c); 
	p1=&a;
	p2=&b;
	p3=&c; 
	exchange(p1,p2,p3);
	printf("从小到大排序为%d,%d,%d\n",a,b,c);
	return 0;
}

void swap(int *pt1,int *pt2)
{
	int temp;
	temp=*pt1;
	*pt1=*pt2;
	*pt2=temp;
}
void exchange(int *q1,int *q2,int *q3)
{
	void swaq(int *pt1,int *pt2);
	if(*q1<*q2)swap(q1,q2);
	if(*q1<*q3)swap(q1,q3);
	if(*q2<*q3)swap(q2,q3);

}

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

#include <stdio.h>
int main() {
	int i=0,j=0,k=0,h=0;
	char c;
	printf("请输入一个字符串 ");
	c=getchar();
	while(c !='\n'){
		if(c==' ')i++;
		else if(c<='z' && c>='A')j++;
		else if(c<='9' && c>='0')k++;
		else h++;
		c=getchar();
	}
	printf("空格有%d个,数字有%d个,数字有%d个,其他字符有%d个",i,j,k,h);
	return 0;
	
}

  7.3 求S=a+aa+aaa+aaa+····+aaa···aa的值,其中a是数字,n表示位数

#include <stdio.h>
int main() {
	int i,n,s=0,a=2,sum=0;
	printf("请输入2的位数 n=");
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		s =s*10+a;
		sum +=s;
		if(i==n){
			printf("%d",s);	
			break;
		}
		printf("%d+",s);
	}
	printf("=%d\n",sum);
	return 0;
	
}

  7.4 求 1!+2!+3!+····+20!

#include <stdio.h>
int main() {
	int i,j,sum=1,s=0;
	for(j=1;j<=20;j++){
		sum=1;
		for(i=1;i<=j;i++){
			sum *=i;
		}
		s +=sum;		
	}
	printf("%d\n",s);
	return 0;
	
}

7.5 求(1+1*1+1/1)+(2+2*2+1/2)+·····+(100+100*100+1/100)

#include <stdio.h>
int main() {
	int i;
	double  sum=0.0;
	for(i=1;i<=2;i++){
		sum +=i+i*i+(double)1/i;		
	}
	printf("%.3f\n",sum);
	return 0;
	
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值