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

C语言习题2.0

C语言习题1.0

C语言习题-CSDN博客

目录

C语言习题1.0

C语言习题-CSDN博客

找一个数字的连续因子

求N个分数的和

正整数A+B

函数

预处理

文件处理

操作符


找一个数字的连续因子

//找连续因子,及其个数
int main()
{
	int a;
	scanf("%d", &a);
	int num = 0;  //储存连续因子的个数
	int min = 0;   //储存连续因子的起始位置
	int m;

	//从i开始向后找连续因子
	for(int i=2;i<sqrt(a);i++)
	{
		int t = a;
		for (m = i; m < a; m++)
		{
			if (t % m == 0)
				t /= m;
			else
				break;
		}
		if (m - i > num)
		{
			num = m - i;
			min = i;
		}
	}
	printf("%d\n", num);
	for (int i = min; i < min + num - 1; i++)
		printf("%d*", i);
	printf("%d", min + num - 1);
	
	return 0;
}

求N个分数的和

求N个分数的和,结果以整数和真分数的形式打印

//求N个分数的和

int gys(int x, int y)
{
	int t = x % y;
	while (t)
	{
		x = y;
		y = t;
		t = x % y;
	}
	return y;
}

int main()
{
	int a, b;
	int num;
	scanf("%d", &num);//读取有几个分数
	scanf("%d/%d", &a, &b);//先读取第一个分数
	int fz = 0, fm = 0;

	for (int i = 1; i < num; i++)
	{
		int c, d;
		scanf("%d/%d", &c, &d);  //读取第二个分数
		
		//求两个分母的最大公因数
		int gony = gys(b, d);
		//求最小公倍数即分母
		 fm = b * d / gony;
		//将分子通分
		 fz = a * fm / b + c * fm / d;
		 a = fz, b = fm;
	}
	//此时所有的分子和分母多完成相加了
	//对分式进行化简,先找到最大公因数
	int t = gys(fz, fm);
	if (t)
	{
		fz /= t;
		fm /= t;
	}

	if (fz % fm == 0)   //能被整除
		printf("%d\n", fz / fm);
	else if (fz / fm == 0)   //是一个真分式
		printf("%d/%d\n", fz, fm);
	else          //是一个假分数
		printf("%d %d/%d", fz / fm, fz%fm, fm);

	return 0;
}

正整数A+B

//整数A+B
int main()
{
	char put[500];
	gets(put);
	int m1 = 1; //用m1来记录数字是否有效
	int m2 = 1;
	int t1 = 0, t2 = 0;   // 用t1和t2来保留数字
	int j=0;

	int num = strlen(put);
	//查找第一个数字
	for (int i = 0; i < num; i++)
	{
		if (put[i] == ' ')//如果等于空格
		{
			//首字符是空格则m1为0,即A为无效数字
			if (i == 0)
			{
				m1 = 0;
			}
			j = i + 1;   //第二个数字要从i+1开始查找
			break;
		}
		else if (put[i] >= '0' && put[i] <= '9')
		{
			t1 = t1 * 10 + put[i] - '0';
		}
		else   //其他情况就是包含无效字符,则A为无效数字
		{
			m1 = 0;
		}
	}

	//查找第二个数字
	for (int i = j; i < num; i++)
	{
		if (put[i] >= '0' && put[i] <= '9')
			t2 = t2 * 10 + put[i] - '0';
		else
		{
			m2 = 0;
			break;
		}
	}

	//打印
	//先答应A
	if (m1 == 0 || t1 < 1 || t1>1000)
		printf("? + ");
	else
		printf("%d + ", t1);
	//再打印B
	if (m2 == 0 || t2 < 1 || t2>1000)
		printf("? = ");
	else
		printf("%d = ", t2);
	//打印结果
	if ((m1 == 0 || t1 < 1 || t1>1000) || (m2 == 0 || t2 < 1 || t2>1000))
		printf("?");
	else
		printf("%d", t1 + t2);


	return 0;
}

函数

(C语言)函数-CSDN博客

1)函数的定义可以放在任意位置,函数的声明必须放在函数使用之前;

2)自定义函数具有高内聚低耦性:函数与函数之间的联系应该尽量小,函数内应尽量少的使用全局变量;

3)使用指针访问的时候,char*一次访问一个字节,short*一次访问两个字节;

4)在打印的时候,%d一次读取四个字节;%lld和%llx等整形即%f,%lf一次读取8个字节;

5)C语言中一个变量可以被多次定义,在不同函数中;

6)将14.99四舍五入为15————printf("%.0f",14.99);

预处理

预处理详解-CSDN博客

1)#define宏定义;

2)#if,#ifdef,#ifndef,#else,#elif,除此之外还有#if defined ....的用法。都属于条件编译指令。#pragme是一个比较复杂的预编译指令;

3)ifndef,define,endif是用来解决同一文件重复包含相同文件的;

4)预处理只会处理#开头的语句,编译阶段只校验语法,链接时才会找实体。

文件处理

(C语言)文件操作-CSDN博客

1)文件名可以不包含后缀名,后缀名决定了文章的打开方式;

2)realloc函数可调整动态申请空间的大小,可大可小;

操作符

(C语言)操作符(全网最全,最详细)_c语言操作符大全-CSDN博客

1)用n|(n+1)来计算一个数二进制中0的个数,n&(n-1)来计算一个数中二进制中1的个数;

2)==的优先级比=高;

3)注意是传值还是传址;

4)new和delete成对使用,malloc和free成对使用;

5)字符常量用' ',字符串用''  '';

6)12a315156,在用%3d读取12a的时候,a是无效数字,不会被读取,但是也不会被舍去,会保留下来让下一个读取指令读取;

7)[  ]的优先级比*高;

8)getchar不像scanf一样,getchar会读取回车;


http://www.kler.cn/a/448024.html

相关文章:

  • UVM 验证方法学之interface学习系列文章(十二)virtual interface 终结篇
  • 3. Kafka入门—安装与基本命令
  • iOS + watchOS Tourism App(含源码可简单复现)
  • webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式
  • 谷歌建筑下载
  • 清远榉之乡托养机构为你深度分析:特殊碳水化合物饮食对自闭症的作用
  • PyCharm 中打印完整的 DataFrame
  • ubuntu 上怎么设置应用开机自动启动
  • 复习打卡大数据篇——Hadoop HDFS 01
  • 全志H618 Android12修改doucmentsui进入后左边动态加载的item
  • BUUCTF Pwn picoctf_2018_rop chain WP
  • Firecrawl教程①:自动化抓取与数据转化,赋能AI应用
  • idea中打补丁包
  • 音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现
  • Linux之用户相关命令
  • 深度学习:解锁智能时代的钥匙与实战案例
  • 【Java】递归算法
  • 特征维度远大于样本量时候的过拟合问题
  • Vue2学习(一)——Vue简介、Vue指令与指令修饰符
  • 《Django 5 By Example》阅读笔记:p614-p644
  • 机器学习基础算法 (一)-线性回归
  • 【项目介绍】基于机器学习的低空小、微无人机识别技术
  • spring mvc | servlet :serviceImpl无法自动装配 UserMapper
  • 创建项目以及本地仓库和远程仓库并上传项目
  • 《探索QT 5.14.1:功能、特性与应用全解析》
  • Mysql-SQL执行流程解析