首页 > 代码库 > [C]Week 3 循环
[C]Week 3 循环
- 数数几位数 while 和 do-whileView Code
1 int main(){ 2 int x; 3 int n=0; 4 5 scanf("%d",&x); 6 7 n++; 8 x/=10; 9 while (x>0){10 n++;11 x/=10;12 }13 printf("%d\n",n);14 return 0;15 }
View Code1 do{2 x/=10;3 n++;4 }while (x>0);
- HW
你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。
输入格式:
一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。
输出格式:
两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。
输入样例:
9 3 4 2 5 7 -1
输出样例:
4 2
View Code1 #include<stdio.h> 2 int main() 3 { 4 int a; 5 int b=0; 6 int c=0; //b为偶数个数,c为奇数个数 7 scanf("%d",&a); 8 while(a!=-1) 9 {10 11 if(a%2==0)12 {b++;13 }14 else c++; 15 scanf("%d",&a);16 }17 printf("%d %d",c,b);18 return 0;19 }
对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这 个整数在第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成 了一个二进制数字。比如,对于342315,这个二进制数字就是001101。
这里的计算可以用下面的表格来表示:
数字
3
4
2
3
1
5
数位
6
5
4
3
2
1
数字奇偶
奇
偶
偶
奇
奇
奇
数位奇偶
偶
奇
偶
奇
偶
奇
奇偶一致
0
0
1
1
0
1
二进制位值
32
16
8
4
2
1
按照二进制位值将1的位的位值加起来就得到了结果13。
你的程序要读入一个非负整数,整数的范围是[0,100000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。
提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。
输入格式:
一个非负整数,整数的范围是[0,100000]。
输出格式:
一个整数,表示计算结果。
输入样例:
342315
输出样例:
13
View Code1 # include <stdio.h> 2 # include <math.h> 3 4 int main(){ 5 int num=0; 6 int sep=0; 7 8 int count=0; 9 int sam=0;10 int bin=0;11 int sum=0;12 13 scanf("%d",& num);14 while (num>0 && num < 100000){15 //scanf("%d",& num);16 sep= num % 10; //取分离出的每一次的个位数 17 18 count ++; //计算位数 19 20 bin = pow(2,(count-1));// 求2的n次方 pow函数 21 22 /* if(count %2==0 &&sep %2==0){23 // sam =1;24 sum+=bin; //如果位数的奇偶性和数字的奇偶性一致 就把对应的2进制相加 25 }26 else if(count %2 != 0 && sep %2 != 0){27 sum+=bin; 28 }29 else{sam=0;30 //sum=0;31 }; */32 33 if(count %2==sep %2){34 // sam =1;35 sum+=bin; //第二种写法也可以 更简洁 而且不用设置sam函数 36 }37 38 39 num/=10;}40 printf("%d",sum);41 42 43 44 45 //46 47 48 49 50 //printf("%d",sum); */51 return 0;52 }
[C]Week 3 循环
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。