首页 > 其他分享 >37-巩固练习

37-巩固练习

时间:2024-03-29 21:58:38浏览次数:21  
标签:语句 巩固 return 函数 int 练习 37 printf main

37-1 if语句等

1、问:输出结果

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

答:一直输出5,死循环

解析:i=5是赋值语句,不是判断语句,每一次循环i都被赋值为5,每一次都打印5;每一次循环i都被赋值为5,加1后是6,永远小于10,要一直循环下去

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

A.if语句后面只能跟一条语句
B.if语句中0表示假,1表示真
C.if语句是一种分支语句,可以实现单分支,也可以实现多分支 
D.else语句总是和它的对齐的if语句匹配

答:C

解析:B:0表示假,非0表示真,并不只有1

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

A.switct语句中的default子句可以放在任意位置
B.switch语句中case后的表达式只能是整形常量表达式
C.switch语句中case子句必须在default子句之前
D.switch语句中case表达式不要求顺序

答:C

解析:default与case的顺序不作要求;char也是属于整型家族的,因为字符存储的时候,存储的是ASCII码值

4、问:func(1)是多少?

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;
}

答:0

解析:没有break

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

A.int   B.Jong   C.char   D .float

答:D

6、问:输出结果

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;
}

 答:hellothird

解析:注意有无break

7、将三个整数按从大到小输出

代码1:

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d%d%d", &a, &b, &c);
	if (a > b)
	{
		if (a < c)
		{
			printf("%d ", c);
			printf("%d ", a);
			printf("%d ", b);
		}
		else
		{
			if (a > c)
			{
				if (b > c)
				{
					printf("%d ", a);
					printf("%d ", b);
					printf("%d ", c);
				}
				else
				{
					printf("%d ", a);
					printf("%d ", c);
					printf("%d ", b);
				}
			}
		}
	}
	else
	{
		if (b < c)
		{
			printf("%d ", c);
			printf("%d ", b);
			printf("%d ", a);
		}
		else
		{
			if (b > c)
			{
				if (a > c)
				{
					printf("%d ", b);
					printf("%d ", a);
					printf("%d ", c);
				}
				else
				{
					printf("%d ", b);
					printf("%d ", c);
					printf("%d ", a);
				}
			}
		}
	}
	return 0;
}

代码2(推荐):

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int tmp = 0;
	scanf("%d%d%d", &a, &b, &c);
	//调整,a放最大值,b放中间值,c放最小值
	if (a < b)
	{
		tmp = a;
		a = b;
		b = tmp;
	}
	if (a < c)
	{
		tmp = a;
		a = c;
		c = tmp;
	}
	if (b < c)
	{
		tmp = b;
		b = c;
		c = tmp;
	}
	printf("%d %d %d", a, b, c);
	return 0;
}

 代码3(函数版):

void Swap(int* a, int* b)
{
	int tmp = 0;
	tmp = *a;
	*a = *b;
	*b = tmp;
}
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d%d%d", &a, &b, &c);
	//调整,a放最大值,b放中间值,c放最小值
	if (a < b)
	{
		Swap(&a, &b);
	}
	if (a < c)
	{
		Swap(&a, &c);
	}
	if (b < c)
	{
		Swap(&b, &c);
	}
	printf("%d %d %d", a, b, c);
	return 0;
}

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

代码1:

int main()
{
	int i = 0;
	for (i = 3; i <= 100; i+=3)
	{
		printf("%d ", i);
	}
	return 0;
}

代码2:

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

9、求两个数的最大公约数

 代码1:暴力求解

int main()
{
	int a = 0;
	int b = 0;
	int tmp = 0;
	int i = 0;
	scanf("%d%d", &a, &b);
	if (a > b)  //让a是小的数
	{
		tmp = a;
		a = b;
		b = tmp;
	}
	for (i = a; i > 1; i--)
	{
		if ((a % i == 0)&&(b % i == 0))
		{
			printf("最大公约数:%d\n", i);
			break;
		}
	}
	if (1 == i)
	{
		printf("这两个数没有公约数");
	}
	return 0;
}

代码2:辗转相除法

两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int tmp = 0;
    scanf("%d%d", &a, &b);
	while (c= a % b)
	{
		a = b;
		b = c;
	}
	printf("%d\n", b);
	return 0;
}

a和b谁大谁小不影响,可以用a=18,b=24和a=24,b=18自己测试一下

37-2 for循环语句等

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

A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数总是比循环体的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关

答:B

2、问:输出结果

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;
			continue;
		}
		b = b - 5;
	}
	printf("%d\n", a);
	return 0;
}

答:8

3、编程数一下1到100的所有整数中出现多少个数字9

注意:题目中说的是出现多少个9,而不是多少个数字包含9

int main()
{
	int i = 0;
	int count = 0;  //计数
	for (i = 1; i <= 100; i++)
	{
		if (i / 10 == 9)  //十位是9
		{
			count++;
		}
		if (i % 10 == 9)  //个位是9
		{
			count++;
		}
	}
	printf("%d\n", count);
	return 0;
}

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

代码1:

int main()
{
	int i = 0;
	double sum = 0;  //结果是小数
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 != 0)
		{
			sum += 1.0 / i;  //要想得到小数,必须要有一个浮点数
		}
		else
		{
			sum += -1.0 / i;
		}
	}
	printf("%lf\n", sum);
	return 0;
}

代码2:

int main()
{
	int i = 0;
	double sum = 0;  //结果是小数
	int flag = 1;  //用于正负变换
	for (i = 1; i <= 100; i++)
	{
		sum += (1.0 / i)*flag;
		flag = -flag;
	}
	printf("%lf\n", sum);
	return 0;
}

5、10个数找最大值

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	int max = arr[0];
	for (i = 1; i < 10; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
	}
	printf("%d\n", max);
	return 0;
}

代码2(手动输入十个数)

int main()
{
	int arr[10] = { 0 };
	int j = 0;
	for (j = 0; j < 10; j++)
	{
		scanf("%d", &arr[j]);
	}
	int i = 0;
	int max = arr[0];
	for (i = 1; i < 10; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
	}
	printf("%d\n", max);
	return 0;
}

6、 在屏幕上输出九九乘法表

代码1:

int main()
{
	int i = 0;
    //打印9行
	for (i = 1; i <= 9; i++)
	{
		int j = 0;
        //打印一行
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%d ", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

代码2: 

 %2d:右对齐;%-2d:左对齐

int main()
{
	int i = 0;
	for (i = 1; i <= 9; i++)
	{
		int j = 0;
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%-2d ", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

37-3 函数等

1、问:关于实参和形参描述错误的是()

A.形参是实参的一份临时拷贝
B.形参是在函数调用的时候才实例化。才开辟内存空间
C.改变形参就是改变实参
D.函数调用如果采用传值调用。改变形参不影响实参

答:C

2、问:函数调用exec(v1,v2),(v3,v4),v5,v6)中,实参的个数()

A .3   B.4   C.5   D.6

答:B

解析:表达式是一个实参

3、问:以下关于函数设计不正确的说法是()

A.函数设计应该追求高内聚低耦合
B.要尽可能多的使用全局变量
C.函数参数不易过多
D.设计函数时,尽量做到谁申请的资源就由谁来释放

答:B

解析:高内聚低耦合,功能单一,不要与其他的产生过多关联;过多使用全局变量,不安全。

4、问:关于C语言函数描述正确的是()

A.函数必须有参数和返回值
B.函数的实参只能是变量
C.库函数的使用必须要包含对应的头文件
D.有了库函数就不需要自定函数了

答:C

5、问:C语言规定,在一个源程序中,main函数的位置()

A.必须在最开始
B.必须在库函数的后面
C.可以任意
D.必须在最后

答:C

6、问:以下叙述中不正确的是()

A.在不同的阂数中可以使用相同名字的变量
B.函数中的形式参数是在栈中保存
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

答:D

解析:

7、 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

void print_table(int n)
{
	int i = 0;
	for (i = 1; i <= n; i++)
	{
		int j = 0;
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%-2d ", i, j, i * j);
		}
		printf("\n");
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	print_table(n);
	return 0;
}

37-4 函数递归等 

1、问:能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是:()

A.return这两个数   B.形参用数组   C .形参用两个指针   D.用两个全局变量

答:A

解析:return只能返回一个数

2、问:关于函数调用说法不正境的是()

A.函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝
B.函数可以传址调用,传址调用的时候。可以通过形参操作实参
C.函数可以嵌套定义,但是不能嵌套调用
D.函数可以嵌套调用,但是不能嵌套定义

答:C

3、问:在函数调用时,以下说法正确的是()

A.函数调用后必须带回返回值
B.实际参数和形式参数可以同名
C.函数间的数据传递不可以使用全局变量
D.主调函数和被调函数总是在同一个文件里

答:B

标签:语句,巩固,return,函数,int,练习,37,printf,main
From: https://blog.csdn.net/weixin_63260114/article/details/137148929

相关文章

  • win靶场练习where-1s-tHe-Hacker
    第一题题目说被攻击力,那就去网页看看怎么个事第一题秒了第二题 问修改时间,那就看php文件最后修改时间即可第三,四,五题 找webshell,d盾扫一下第六题 第七题 win+rcmdnetuseradmin$第八题 win+r eventvwr.msc安全筛选时间常见id类型4624登录成功......
  • 蓝桥杯 试题 基础练习 数列特征
    问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入5......
  • 蓝桥杯 试题 基础练习 查找整数
    问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置......
  • 最小割问题合集,最大权闭合图,最大密度子图,最小权点覆盖,最大权独立子图,OJ练习,代码详解
    文章目录零、回顾1、流网络的割2、最小割问题一、最小割的应用1.1POJ1966--CableTVNetwork1.1.1原题链接1.1.2思路分析1.1.3AC代码1.2ZOJ2676NetworkWars1.2.1原题链接1.2.2思路分析1.2.3AC代码1.3OPTM-OptimalMarks1.3.1原题链接1.3.2思路分析1.3.3AC代码......
  • python项目练习——8.图像处理应用程序
    项目功能分析:这个项目可以让用户上传图片,并对图片进行基本的处理,比如调整大小、应用滤镜、添加水印等。这个项目涉及到图像处理、文件上传、用户界面设计等方面的技术。代码示例:fromflaskimportFlask,render_template,requestfromPILimportImage#初始化Flask......
  • Codeforces Round 937 (Div. 4)----->E. Nearly Shortest Repeating Substring
    一,思路:1.这题很容易想到枚举n的因数(时间复杂度n^(1/2)),然后根据这个长度枚举字符串,看是否满足最多只有一个不相同(时间复杂度n)。总的时间复杂度是(n根号n)的级别。又n是1e5级别所以可以过。但是当n是1e6就不行了。2.难点在于如何判断,一个字符串的不同字符数量,主要是hshah......
  • 2024-03-29 js练习之生成多个数组,且每个数组内的值不能重复
    代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>doubleBox</t......
  • 练习-Java类和对象之对象引用之模拟手机功能
    第1关:练习-Java类和对象之对象引用之模拟手机功能任务描述本关任务:实现手机的基本功能。手机具有属性:品牌(brand)、型号(type)、价格(price)、操作系统(os)和内存(memory);具有功能:查看手机信息(about())、打电话(call(intnumber))、玩游戏(play())。编程要求仔细阅读右侧编辑区内给出的......
  • P1037 [NOIP2002 普及组] 产生数 python 题解
    原题链接:产生数原理解释本题就是基本的dfs,对每一个数遍历深搜,得到他能变化的所有情况,最后相乘就是结果,网上都是c的解法,需要用到高精度,但是python可以处理大数,不需要。vis[]判断该数是否变换过,防止重复以n=123,k=2,变换列表x=[1,3],y=[3,4],即1->3,3->4:先遍历1:遍历......
  • 从CF1373D看最大子段和与奇偶段的分析
    Problem-1373D-Codeforces先看出了一个很显然的东西,逆转的子序列的长度必须是偶数。但之后就想错了,想到双指针和其他方法去求这个最大段。但我粗暴的通过\(a_{i+1}-a_i\)来贪心双指针明显是不对的。最大子段和只要把\(a_{i+1}-a_{i}\)转成一个数组\(b_i\)......