8个小时8个小时的上机课!!
时间:2022-07-27
本文章向大家介绍8个小时8个小时的上机课!!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
8个小时8个小时的上机课!!
今天经历了惨无人道的上机课,整整八个小时,面对着C语言,老泪纵横……
一个寒假没写C了。
记录一下今天大概弄了这么几件事:
1.大数的乘法:
两个数组lin1[100],lin2[100]保存两个大数,结果保存在lout[201]中。公式是lout[i+j] = lin1[i] * lin2[j]; a、b的实际长度保存在lin1[0],lin2[0]中。
for (i = 0 ; i < lin1[0] ; i++)
{//注意i和j要从0开始,否则不能用公式了
for (j = 0 ; j < lin2[0] ; j++)
{//因为i,j从0开始,而lin1/lin2[0]不是第一个数字,所以要进行处理
lout[i+j] += lin1[lin1[0] - i] * lin2[lin2[0] - j];
lout[i+j+1] += lout[i+j]/10;
lout[i+j] %= 10;
}//后两个表达式表示进位,保证每位都只有一个数字
}
2.大数整除普通数(我这里是2,因为我做的题目是进制转换)
将大数a[]整除2后保存在b[]中,这里以一个函数给出。如果除以其他数将2更换即可。
void div2(int a[] , int b[]) //大数除法(除以2)
{//a[0]中保存大数a的长度
int i,n,mod = 0;
for (i = 1 ; i <= a[0] ; i++ )
{
n = a[i] + mod * 10;
b[i] = n / 2;
mod = n % 2;
}
b[0] = a[0];
return ;
}
思路跟小学在草稿纸上算除法一样(实际上我就是拿着笔在草稿纸上边算边想的程序)。
3.重定向函数freopen
以前用过这个函数,函数原型是:
FILE *freopen(const char *filename,const char *type, FILE *stream);
用法:freopen("01.in","w",stdin); 将标准输入流重定向到01.in。意思是将以前从命令提示符输入的东西改用文件01.in输入。同理输出则第三个参数为stdout。好处:输入输出时用printf、scanf就可以向文件中读、写东西了,不用再用文件操作fprintf..
这里讲一下把它改回来的用法(把标准输入输出流改回命令提示符):
freopen("CON","r",stdin); 和 freopen("CON","w",stdout);
4.Linux下文件复制(即不用API)
每次拷贝1024字节,直到文件拷贝完成。使用的I/O文件流。
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <string.h>
//文件复制,未使用Windows API,即可以在不同平台下使用
int main(int argc, char *argv[])
{
char buffer[1024];
char * ptr;
int rlen,wlen;
if (4 != argc || strcmp(argv[1],"HCOPY") != 0)
{
printf("正确格式为:HCOPY filename1 filename2n");
return 0;
}
int hin = open(argv[2],O_RDONLY);
if(hin < 0)
{
printf("打开来源文件错误,请检查输入n");
return 0;
}
int hout = open(argv[3],O_WRONLY | O_CREAT);
if(hin < 0)
{
printf("打开目标文件错误,请检查输入n");
return 0;
}
while(rlen = read(hin,buffer,sizeof(buffer))) //循环读取来源文件,每次读取1024字节
{
if (rlen == -1)
{
printf("读取文件出错n");
return 0;
}
else if(rlen > 0) //得到的结果大于0则进行复制
{
ptr = buffer;
while(wlen = write(hout,ptr,rlen))
{
if(wlen == -1)
{
printf("写入文件错误n");
return 0;
}
else if (wlen == rlen) //如果写入的和读出的字节相同,则说明全部写完了,就跳出本循环
{
break;
}
else if(wlen > 0) //没有全部写完,继续写
{
ptr += wlen;
rlen -= wlen;
}
}
}
}
printf("操作成功n");
close(hin); //勿忘关闭文件
close(hout);
return 0;
}
- Thinking in SQL系列之:数据挖掘K均值聚类算法与城市分级
- 设计模式专题(二十) ——职责链模式
- 设计模式专题(二十一) ——中介者模式
- 设计模式专题(二十二) ——享元模式
- 设计模式专题(二十三) ——解释器模式
- Thinking in SQL系列之数据挖掘C4.5决策树算法
- 设计模式专题(二十四) ——访问者模式
- PHP实用功能——modern PHP读书笔记(一)
- ModernPHP读书笔记(二) ——PHP开发标准
- iBatis.Net(6):Data Map(深入)
- iBatis.Net(5):Data Map(了解)
- ModernPHP读书笔记(三)——PHP的良好实践
- PHP开发过程的那些坑(一) ——对象拷贝
- PHP开发过程的那些坑(二) ——PHP empty函数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux程序安装及包管理
- Mysql存储引擎
- CentOS7-samba文件共享服务
- centos7-vsftpd文件服务器
- Mysql的逻辑架构
- centos7-httpd服务器
- Linux文件 目录与权限
- 简易数据分析(三):Web Scraper 批量抓取豆瓣数据与导入已有爬虫
- 嵌入式Linux开发环境搭建 配置Ubuntu
- 简易数据分析(五):Web Scraper 翻页、自动控制抓取数量 & 父子选择器
- 【深度】韦东山:一文看看尽linux对中断处理的前世今生
- 嵌入式开发之交叉编译程序万能命令_以freetype为例
- Python-EEG处理和事件相关电位(ERP)
- 嵌入式Linux开发 配置网络
- 问号脸:为什么 Java 中 “1000==1000” 为 false,而 ”100==100“ 为 true?