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

【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.kler.cn/a/557217.html

相关文章:

  • 一文读懂大模型文件后缀名,解锁 AI 世界的密码
  • 探索Android动态埋点的新视界:UprobeStats深度解析
  • 解决“error: Tried to call obs_frontend_start_virtualcam with no callbacks!”
  • 计算机视觉算法实战——智能零售货架监测(主页有源码)
  • 83_CentOS7通过yum无法安装软件问题解决方案
  • 基于springboot的攀枝花市鲜花销售系统
  • 【论文阅读】identifying backdoor data with optimized scaled prediction consistency
  • 蓝桥杯真题 - 缴纳过路费 - 题解
  • 氧化锆(化学式ZrO₂)在多个工业领域发挥重要作用京煌科技
  • 机器学习 - 投票感知器
  • VUE四:Vue-cli
  • Android 中 如何监控 某个磁盘有哪些进程或线程在持续的读写
  • 【WebGL】fbo双pass案例
  • SpringAI系列 - ToolCalling篇(二) - 如何设置应用侧工具参数ToolContext(有坑)
  • hot100-滑动窗口
  • ctfshow——phps源码泄露
  • Tio-Boot 集成 Spring Boot 实现即时通讯功能全解析
  • 深度学习图像预处理可视化:拆解Compose操作的全过程
  • Java集合框架(知识整理)
  • ipad连接电脑断断续续,不断弹窗的解决办法