ios学习记录 day4
作业:
1、打印1 - 100中不能被7整除又不包含7的数。
for (int i = 1;i < 101;i++){
if(i % 7 != 0 && i / 10 != 7 && i % 10 != 7){
printf("%2d ",i);
}
}
2、输入两个数,求最小公倍数和最大公约数。
int x = 0,y = 0,maxGY = 0,minGB = 0;
scanf("%d,%d",&x,&y);
for (int i = 1;i <= (x < y ? x : y);i++){
if(x % i == 0 && y % i == 0){
maxGY = i;
}
}
minGB = x * y / maxGY;
printf("最大公约数是%d,最小公倍数是%d\n",maxGY,minGB);
3、随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数,第二大数。
int max = 0,max2 = 0;
for (int i = 0; i < 20; i++) {
unsigned int k = arc4random() % (100 - 10 + 1) + 10;
printf("%d ",k);
if (max < k) {
max2 = max;
max = k ;
}else if (max2 < k){
max2 = k;
}
}
printf("最大值%d\n",max);
printf("二大值%d\n",max2);
4、编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
for(int i = 100;i < 1000;i++){
int gw = i % 10,sw = i /10 % 10,bw = i / 100;
if(gw*gw*gw+sw*sw*sw+bw*bw*bw == i){
printf("%d ",i);
}
}
(2)for (int i = 1;i < 10; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
if (i*i*i + j*j*j + k*k*k == i * 100 + j * 10 + k) {
printf("%d ",i * 100 + j * 10 + k);
}
}
}
}
5、使用循环打印三角形
*****
_***
__*
_***
*****
(1) for (int i = 1; i < 3; i++) {
for (int k = 1; k < i; k++) {
printf("_");
}
for (int j = 5; j >= 2 * i - 1 ; j--) {
printf("*");
}
printf("\n");
}
for (int i = 1; i < 4; i++) {
for (int k = 3; k > i; k--) {
printf("_");
}
for (int j = 1; j <= 2 * i - 1 ; j++) {
printf("*");
}
printf("\n");
}
(2)打印 *
* *
* * *
for (int i = 0; i < 3; i++) {
for (int k = 3; k > i + 1; k--) {
printf(" ");
}
for (int j = 0; j < 2 * i + 1; j++) {
if (j % 2 == 0) {
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
(3) for (int i = 0 , a = 0 ,b = 2; i < 5; i++) {
for (int j = 0; j < a + 1; j++) {
printf("%3c",'*');
}
for (int j = 0; j < b * 2 - 1; j++) {
printf("%3c",' ');
}
for (int j = 0; j < (5 - abs((b * 2 - 1))) / 2; j++) {
printf("%3c",'*');
}
printf("\n");
if (i < 2) {
a++;
b--;
}
else{
a--;
b++;
}
}//****输出横着的漏斗
6、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
char c = '\0';
int zimu = 0,kongge = 0,shuzi = 0,qita = 0;
while (c != '\n') {
scanf("%c",&c);
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
zimu ++;
}else if (c == ' '){
kongge ++;
}else if (c >= '0' && c <= '9'){
shuzi ++;
}else{
qita ++;
}
}
printf("字母个数%d,空格个数%d,数字个数%d,其它字符个数%d\n",zimu,kongge,shuzi,qita);
7、求S(n) = a+aa+aaa+aaaa+...+aa..a之值,其中a是一个数字,n表示a的位数例如:2+22+222+2222+22222(此时n=5),n和a都从键盘输入。
int n = 0,a = 0,an = 0,sn = 0;
printf("输入位数n,数字a:");
scanf("%d,%d",&n,&a);
for (int i = 0; i < n; i++) {
an = an * 10 + a;
sn += an;
if (i != n - 1) {
printf("%d+",an);
}else{
printf("%d=",an);
}
}
printf("%d\n",sn);
8、求1!+2!+3!+4!+..+20!
(1)long sum = 0,an = 1;
for (int i = 1;i < 20 + 1;i++){
an *= i;
sum += an;
}
printf("%ld\n",sum);
(2 long sum1 = 1,sum2 = 0;
for (int i = 1; i <= 20; i++) {
sum1 = 1;
for (int j = 1; j < i + 1; j++) {
sum1 *= j;
}
sum2 += sum1;
}
printf("%ld\n",sum2);
9、一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?
float height = 100,sum = 0;
for (int i = 0; i < 10; i++) {
sum += height * 2;
height = height / 2;
}
sum -= 100;
printf("经过的路径%f,第十次反弹%f\n",sum,height);
10、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘多少个桃子。
(1) int x = 1;
for (int i = 10; i > 1; i--) {
x = (x + 1) * 2;
}
printf("第一次摘了%d个桃\n",x);
(2)int x = 1;
for (int i = 10; i > 0; i--) {
printf("%d天剩%d个桃\n",i,x );
x = (x + 1) * 2;
}
(3)int x = 1;
for (int i = 0; i < 10; i++) {
printf("%d天剩%d个桃\n",10 - i,x );
x = (x + 1) * 2;
}