目录
五.计算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;
}