翁凯C语言成语入门第四周测试:数字特征值


理解:取得整数的数字可以用对10取余一个一个的计算;而数位可以在循环中累加一次一次的得到。

代码1:

#include<stdio.h>
int main()
{
	int count = 0;//移位计数,用来表示数位(1,2,3,4,5,6) 
	int temp;
	int num;//输入的数字 
	int sum = 0;//求和 
	int kp;
	scanf("%d",&num);
	
	while(num>0){
		temp = num%10;//取出最后一位 
		num /= 10;//减去最后一位之后的数 
		count++;//移位一次就加一次 
		int t = count;//用来接收移位,方便之后进行二进制求和 
		int a = 1;
		if(temp%2 == count%2) {//用来判断是不是同时是奇数或者偶数,如果是kp=1 
			kp = 1;
		}
		else{//两者不同时为奇数或者偶数,kp=0 
			kp = 0;
		}
		for(;t>1;t--){//求出该位置在二进制中表示多少 
			a = a*2;//循环结束得到这个二进制值 
		}
		sum = sum + a*kp;//求和计算 
	} 
	printf("%d\n",sum);
	return 0;
}

代码2:

#include<stdio.h>
int main()
{
	int sum=0;
	int count=0;
	int n;
	int temp;
	int ans=1;
	scanf("%d",&n);
	while(n>0){
		temp=n%10;//取得最后一位数字 
		count++;//移位一次加一次 
		
		if(temp%2 == count%2){//判断两者是否同时为奇数或者偶数 
			sum += ans;//如果两者同时为奇数或者偶数,求和值sum加上该位置二进制*2的数 
		}
		ans = ans*2;//该位置二进制表示的数 
		n /= 10;//减去最后一位数字之后的整数 
	}
	printf("%d",sum);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值