当前位置: 首页 > news >正文

【c语言】函数_作业详解

·                                                                                                                                                                前言:

对应c语言,49集

内容:

第一题,就是if =5就是赋值,不是判断,然后会循环打印5

#include <stdio.h> 
int main()
{
	int i = 0;
	for (i=0; i<10; i++)
	{
		if(i=5)
			printf("%d", i);
	}
 } 

第二题

if语句,只要接大括号就可以执行多条语句了

if语句是,0假,非0真

第三题

 switch语句中的default可以放在任意位置是对的,可以放前面,也可以放后面,但是不能乱放

就不能放在switch语句外边

c语言代码没有规定严格的顺序结构,只是理解,美观

char - 也是整型家族的,因为字符存储的时候,存储的是ascii值

这里可以就是3、4、5合在一起写,然后就是打印的是相同的,就不用重复写了

int main()
{
	int n = 0;
	scanf("%d", &n);
	switch(n)
	{
		default:
			printf("hehe");
			break;
		case 1:
			printf("buhehe");
			break;
		case 2:
		case 3:
		case 4:
			printf("buxixi");
			break;
	}
	return 0;
 } 

第4题,也是switch语句

讲的是switcch语句,然后就是如果没有break的话,就会一直往下循环,

就算遇到default语句,他也会进去执行相应结果

第5题,switch语句

switch(n),就是讲的是switch接收的参数类型为int类型,就必须是整型

第6题,switch语句

就算是switch循环嵌套了一个switch循环,里面循环结束了,也会执行后面的case语句,看题就明白了,就是这个,细品

int main()
{
	int x =3;
	int y =3;
	switch(x % 2)
	{
		case 1:
			switch(y)
				{
					case 1:
						printf("hehe");
					case 2:
						printf("buxixi");
					case 3:
						printf("hello");
				}
		case 2:
			printf("third");
	}
	return 0;
 } 

第7题,写一个数,这个好像比上课的难低,但是忘记上课怎么写了

不用函数的方式

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	//输入
	scanf("%d %d %d", &a, &b, &c);
	
	int tmp = 0;
	
	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;
 } 

用函数的形式写,直接定义一个swap交换函数,不需要返回值,因为没有创建什么临时变量,是直接更改参数的值的,从上往下执行的,用void无返回值就可以了

void Swap(int *px, int *py)
{
	int temp = *px;
	*px = *py;
	*py = temp;
}
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	//输入
	scanf("%d %d %d", &a, &b, &c);
	
	int tmp = 0;
	
	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题

求倍数, 嗯,ctrl+/,这个可以快速消失这个//

//求3的倍数 
//int main()
//{
//	int i = 0;
//	while(i <= 100)
//	{
//		if(i % 3 == 0)
//		{
//			printf("%d ", i);
//		}
//		i++;
//	}
	
//	for(i = 3; i <= 100; i+=3)
//	{
//		printf("%d ", i);
//	}
//	return 0;
//}

第9题,求a,b的最大公约数

错误实例

//给定两个数,求这两个数的最大公约数
//这里写错了 
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	
	while(m%n)
	{
		if(m % n !=0)          //假设m 16 n 24
		{
			int temp = 0;  
			temp = m;      //这里就算赋值了,但是这里也不对,因为这里么有新的值出现
			m = n;         //这里还是24
			n = temp;      //n还是16,只不过换了位置,a和b
		}
	}
	printf("%d", n);
	return 0;
 } 

暴力求解的实例

 //暴力求解
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	
	//第一步,算出两则的最小值 
	int min = (m < n) ? m : n;
	
	//循环为真 
	while(1)
	{
		//第二步,用最小值分别除以两个数,摸为0就表示找到了,退出循环 
		if(m % min == 0 && n %min ==0)
		{
			break;//跳出while循环 
		}
		else
			min--; //如果不能整除,就让最小值减一,然后再除,直到找到为止 
	}
	printf("%d", min);
	
	return 0; 
}

辗转相除法

//辗转相除法求解公约数
int main()
{
	int a = 0;
	int b = 0;
	
	//输入
	scanf("%d %d", &a, &b);
	
	//求最大公约数
	while(a%b)   //如果被整除,说明b就是最大公约数,0为假,就退出循环了 
	{
		int c = a%b;  //求ab两个的余数 
		a = b;        //然后b赋值给a 
		b = c;        //最小值赋值给b 
	}
	printf("%d", b);
	return 0;
 } 

第二套题目

1、while循环的条件表达式的执行次数总是会比循环体的执行次数多一次

因为当判断为假,就不进入循环

那么就执行了条件表达式,并没有执行循环体的语句

2、程序结果为,a=8

a = 7的时候,b=22,但是还没判断

当a等于8的时候,才进入循环判断,然后break,跳出循环

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", a);
	return 0;
 } 

3、编写一个程序,计算1~100的所有数字出现多少个数字9

//编写程序数一下 1 到 100 的所有数字出现多少个数字9
//
//9 19 29 39 49 59 69 79 89 99
//90 91 92 93 94 95 96 97 98 99

int main()
{
	int i = 0;  //遍历1 ~ 100到数字
	int count = 0; //计数 
	
	for(i = 1; i <= 100; i++)
	{
		//判断个位是不是9 
		if(i % 10 == 9)
			count++;
		//判断十位是不是9 
		if(i / 10 == 9)  //因为这个除的话是取整的 
			 count++; 
	}
	//打印
	printf("%d", count); 
	
	return 0;
 } 

4、计算1/1-1/2+1/3-1/4+1/5.......+1/99-1/100

分子总是1

分母是1~100

//4、计算1/1-1/2+1/3-1/4+1/5.......+1/99-1/100
//分子总是1
//分母是1~100

int main()
{
	int i = 0;       //循环100次 
	double sum = 0;  //求和 
	int flag = 1;  //循环正负 
	
	for(i = 1; i <=100; i++)
	{
		sum = sum + flag*(1.0 /i);  //这个除号默认是取整,要是想去小数,需要加上.0 
		flag = -flag; //因为是隔一次出现一个符号的,可以这样写 
	 } 
	 printf("%lf", sum);  //lf是double类型的输出标准符号 
	return 0;
}

http://www.dtcms.com/a/32076.html

相关文章:

  • 代码随想录_回溯
  • 代码编译(词法义)
  • Ansible 学习笔记
  • 如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗?
  • 用scratch制作一个简易计算器
  • 【Linux】35.封装 UdpSocket(2)
  • Coroutine协程
  • MySQL要点总结一
  • #渗透测试#批量漏洞挖掘#Progress Software Flowmon命令执行漏洞(CVE-2024-2389)
  • HarmonyOS 开发套件 介绍——下篇
  • 代码随想录算法训练营day42(0210)
  • 《平面几何强化训练题集》第2章10-29题
  • web服务器信创,保兰德(ESB)实时步骤
  • 2025软件测试面试常问的题(详细解析)
  • 在一个集成的 SynMatrix-Ansys 设计工作流程中实现 3D 滤波器仿真
  • 从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(一)
  • 给出方法步骤 挑战解决 用加密和访问控制保护数据隐私。 调架构、参数与用 GPU 加速优化模型性能。 全面测试解决兼容性问题。
  • 本地化部署 DeepSeek:从零到一的完整指南
  • 【Java】单例模式
  • 二级公共基础之数据结构与算法篇(七)排序技术
  • 基于ffmpeg+openGL ES实现的视频编辑工具-添加贴纸(八)
  • DeepSeek R1本地+私有云版医疗AI部署开发成功案例技术剖析
  • 曝光铁三角
  • 三维重建(十四)——铰接类文章整理
  • 前端面试-JavaScript 数据类型详解
  • Kubernetes控制平面组件:APIServer 基于匿名请求的认证机制详解
  • std::lock_guard、std::unique_lock、std::shared_lock
  • Oil Invoice Process
  • Linux内核,slub分配流程
  • 系统思考—结构影响行为