第二章 选择语句

第一部分 选择题

一.

题目名称:

下面代码执行的结果是:( )

#include <stdio.h>

int main()
{
	int i = 0;
	for (i = 0; i<10; i++)
	{
		if (i = 5)
			printf("%d ", i);
	}
	return 0;
}

题目内容:

A .1 2 3 4 5 6 7 8 9 10

B .5 5 5 5 5 5 5 5 5 5

C .死循环的打印5

D .0 1 2 3 4 5 6 7 8 9


二.题目名称:

关于if语句说法正确是:( )

题目内容:

A .if语句后面只能跟一条语句

B .if语句中0表示假,1表示真

C .if语句是一种分支语句,可以实现单分支,也可以实现多分支

D .else语句总是和它的对齐的if语句匹配


三.题目名称:

int func(int a)
{
    int b;
    switch (a)
    {
        case 1: b = 30;
        case 2: b = 20;
        case 3: b = 16;
        default: b = 0;
    }
    return b;
}

则func(1) = (      )

题目内容:

A .30

B .20

C .16

D .0


四.题目名称:

switch(c)语句中,c不可以是什么类型( )

题目内容:

A .int

B .long

C .char

D .float


五.

题目名称:

下面代码的执行结果是什么( )

#include <stdio.h>
int main() {
	int x = 3;
	int y = 3;
	switch (x % 2) {
	case 1:
		switch (y)
		{
		case 0:
			printf("first");
		case 1:
			printf("second");
			break;
		default: printf("hello");
		}
	case 2:
		printf("third");
	}
	return 0;
}

题目内容:

A .secondthird

B .hello

C .firstsecond

D .hellothird


六.题目名称:

关于switch说法不正确的是:( )

题目内容:

A .switch语句中的default子句可以放在任意位置

B .switch语句中case后的表达式只能是整形常量表达式

C .switch语句中case子句必须在default子句之前

D .switch语句中case表达式不要求顺序


七.关于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


第二部分 代码题

一.题目名称:

打印3的倍数的数

题目内容:

写一个代码打印1-100之间所有3的倍数的数字


二.题目名称:

从大到小输出

题目内容:

写代码将三个整数数按从大到小输出。

例如:

输入:2 3 1

输出:3 2 1


三.题目名称:

打印素数

题目内容:

写一个代码:打印100~200之间的素数


四.题目名称:

打印闰年

题目内容:

打印1000年到2000年之间的闰年


五.题目名称:

最大公约数

题目内容:

给定两个数,求这两个数的最大公约数

例如:

输入:20 40

输出:20


 六.在屏幕上输出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-100的随机数

2.猜数字

1)猜小了,程序会告诉你猜小了,继续猜

2)猜大了,程序会告诉你猜大了。继续猜

3)猜对了,程序会告诉你:恭喜你,猜对了。结束

3.游戏可以反复玩

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void menu()
{
	printf("**************************\n");
	printf("******    1. play   ******\n");
	printf("******    0. exit   ******\n");
	printf("**************************\n");
}

//rand函数是专门用来生成随机数的
//rand函数返回的是0~RAND_MAX(32767)之间的一个随机数
//#define RAND_MAX 0x7fff
//
//
//
//rand函数在使用之前要使用一个srand函数来设置随机数的生成器
//srand函数在程序中只要调用一次就可以了,不需要频繁调用
//
//
//
//时间戳
//C语言中,time函数会返回时间戳
//
//NULL - 空指针

void game()
{
	int num  = 0;
	//1. 生成随机数
	int ret= rand() % 100 + 1;
	//printf("%d\n", ret);
	//2. 猜数字

	while (1)//一直猜,一部分一部分写
	{
		printf("请猜数字:>");
		scanf("%d", &num);
		if(num < ret)
		{
			printf("猜小了\n");
		}
		else if (num> ret)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		//打印菜单
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();//game函数中是猜数字的整个路基逻辑
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,重新选择\n");
			break;
		}
	} while (input);
	return 0;
}


十二.

描述

小乐乐最近接触了求和符号Σ,他想计算(1*i)的结果。但是小乐乐很笨,请你帮助他解答。

输入描述:

输入一个正整数n  (1 ≤ n ≤ 109)

输出描述:

输出一个值,为求和结果。

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	long long sum = 0;
	for (i = 1; i <= n; i++)
	{
		sum = sum + i;
	}
	//sum = (n = 1) * n / 2; 等差数列 通项公式
	printf("%lld", sum);   //long long用lld输出
	return 0;
}

 十三.描述

小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层)

输入描述:

输入包含一个整数n (0 ≤ n ≤ 109)

输出描述:

输出一个整数,即小乐乐到达楼上需要的时间。

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d", (n / 12) * 4 + 2);  
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值