第六次作业 for循环

目录

三.在屏幕上输出9*9乘法口诀表

四.求10 个整数中最大值

五.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

七.编写代码在一个整形有序数组中查找具体的某个数(二分查找)重点


一.关于while(条件表达式) 循环体,以下叙述正确的是( )? (假设循环体里面没有break,continue,return,goto等等语句)  

A.循环体的执行次数总是比条件表达式的执行次数多一次

B.条件表达式的执行次数总是比循环体的执行次数多一次

C.条件表达式的执行次数与循环体的执行次数一样

D.条件表达式的执行次数与循环体的执行次数无关

解析:
(1)while循环是先执行条件表达式,如果满足,再执行循环体

二.有以下程序

#include <stdio.h>int main()
{
	int a = 0, b = 0;
	for (a = 1, b = 1; a <= 100; a++)
	{
		if (b >= 20) break;
		if (b % 3 == 1)    
		{
			b = b + 3;  //1 4 7 10 13 16 19 22
			continue;
		}
		b = b-5;
	}
	printf("%d\n", a); //2 3 4 5 6 7 8
	return 0;
}

程序的输出结果是?( )

A.10

B.9

C.8

D.7

三.在屏幕上输出9*9乘法口诀表

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 9; i++) //表示1-9行
	{
		int j = 0;
		for (j = 1; j <= i; j++)//表示列,第一行,有一列
		{
			//printf("%d*%d=%d ", i, j, i * j);
			printf("%d*%d=%2d ", i, j, i * j); //2d表示2个空位,右对齐
			//printf("%d*%d=%-2d ", i, j,i * j);   //-2d表示2个空位,左对齐
		}
		printf("\n"); //打印完一行换行
	}
	return 0;
}

四.求10 个整数中最大值

#include<stdio.h>
//打擂台法,擂主需要是元素本身;
//用一个数挨个和其他元素比较,每一次比较都把较大值赋给一个第三方
int main()
{
	int arr[10] = {0};
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i <sz; i++)   //输入数组元素
	{ 
		scanf("%d", &arr[i]);  //元素名不是地址  
		//循环输入控制台:写一个 空格,所有写完,回车
	}
	//int max = 0;  //如果都小于0,不对,错误定义
	int max = arr[0];
	for (i = 1; i <sz; i++) //第二个数和第一个比较
	{
		if (arr[i] > max)  
		{
			max = arr[i]; //将2个数中的较大值赋给max
		}
	}
	printf("%d\n", max);
	return 0;
}

五.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

#include<stdio.h>
int main()
{
	int j = 0;
	int flag = 1;
	double ret=0;   //所求值是小数
	for (j = 1; j <= 100; j++)
	{
		ret = ret+(flag)*1.0 / j;   //用falg表示正负,也可以用pow,也可以条件判断分母
		//1.0 是因为需要执行浮点数除法
		flag = -flag;
	}
	printf("%lf\n", ret);
	return 0;
}

六.编写程序数一下 1到 100 的所有整数中出现多少个数字9

//9 19 29 39 49 59 69 79   %
//90...99                  /   99有2个9
#include<stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 10 == 9)
		{
			//printf("%d ", i);
			count++;
		}
		if ( i / 10 == 9)
		{
			//printf("%d ", i);
			count++;
		}
	}
	//printf("\n");
	printf("%d", count);  //20
	return 0;
}

七.编写代码在一个整形有序数组中查找具体的某个数(二分查找)重点

要求:找到了就打印数字所在的下标,找不到则输出:找不到。

#include<stdio.h>
int main()
{
	//数组如果有n个元素,最坏的情况下要找n次
	int arr[10] = { 1,2,3,4,5,6,7,18,19,110 };
	int k = 7;//查找7
	int left= 0;
	int right = 9;
	int  flag = 0;
	while(left<= right)
	{
		int mid  = (left+ right) / 2;//求出中间元素的下标
		if(arr[mid] > k)
		{
			right = mid - 1;
		}
		else if(arr[mid] < k)
		{
			left= mid+ 1;
		}
		else
		{
			printf("找到了,下标是:%d\n", mid);
			flag= 1;
			break;
		}
	}
	if(flag == 0)
		printf("找不到\n");
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值