本文目录一览:
- 1、520是什么节日 520是什么意思
- 2、linux怎么在lcd显示一张400*240的照片并放在中间
- 3、excel制作表格的步骤教程
- 4、高三怎么学习数学
- 5、c语言求助 O(∩_∩)O谢谢
- 6、30分求帮解C语言题
520是什么节日 520是什么意思
“520”一般指网络情人节。
该节日源于歌手范晓萱的《数字恋爱》中“520”被喻成“我爱你”,以及音乐人吴玉龙的网络歌曲中“我爱你”与“网络情人”的紧密联系。
“520”隐喻“我爱你”,正是这句千百年来经久不衰的情话,让5月20日也成为互联网企业的商机。
/iknow-pic.cdn.bcebos.com/8718367adab44aed60693824bd1c8701a08bfbcf"target="_blank"title="点击查看大图"class="ikqb_img_alink"/iknow-pic.cdn.bcebos.com/8718367adab44aed60693824bd1c8701a08bfbcf?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc=""/
扩展资料:
根据“0”和“1”音近或象形所指代的不同,520主要是为女性设定的节日,而521则主要是为男性设定的节日。男性可以选择在5月20日对老婆、女友或喜欢的女神表白“520”(我爱你)。
5月21日这一天就是确定答案的日子了,被感动的女性记得向老公或心仪的男神回复“521”表示(我愿意、我爱你)。因此,每年5月20日和5月21日的“网络情人节”也成为了情侣们扎堆登记结婚、隆重举办婚宴的吉日。
节日当天,线上网购成潮,线下结婚扎堆。有关“520”的消息在朋友圈刷屏,不仅有情侣之间的秀恩爱,也有商家促销大战,网络情人节掀起了一场发红包、送礼物的热潮,俨然成为了全民狂欢节,算得上一大新民俗了。
linux怎么在lcd显示一张400*240的照片并放在中间
1) 在LCD上显示BMP或JPEG图片的主流程图
首先,在程序开始前。要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0。命令如下:
mknod fb0 c 29 0
在LCD上显示图象的主流程图如图1所示。程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形文件数据,把图象的RGB值映射到显存中,这部分是图象显示的核心。对于JPEG格式的图片,要先经过JPEG解码才能得到RGB数据,本项目中直接才用现成的JPEG库进行解码。对于bmp格式的图片,则可以直接从文件里面提取其RGB数据。要从一个bmp文件里面把图片数据阵列提取出来,首先必须知道bmp文件的格式。下面来详细介绍bmp文件的格式。
图1
2) bmp位图格式分析
位图文件可看成由四个部分组成:位图文件头、位图信息头、彩色表和定义位图的字节阵列。如图2所示。
图2
文件头中各个段的地址及其内容如图3。
图3
位图文件头数据结构包含BMP图象文件的类型,显示内容等信息。它的数据结构如下定义:
Typedef struct
{
int bfType;//表明位图文件的类型,必须为BM
long bfSize;//表明位图文件的大小,以字节为单位
int bfReserved1;//属于保留字,必须为本0
int bfReserved2;//也是保留字,必须为本0
long bfOffBits;//位图阵列的起始位置,以字节为单位
} BITMAPFILEHEADER;
2.1)信息头中各个段的地址及其内容如图4所示。
图4
位图信息头的数据结构包含了有关BMP图象的宽,高,压缩方法等信息,它的C语言数据结构如下:
Typedef struct {
long biSize; //指出本数据结构所需要的字节数
long biWidth;//以象素为单位,给出BMP图象的宽度
long biHeight;//以象素为单位,给出BMP图象的高度
int biPlanes;//输出设备的位平面数,必须置为1
int biBitCount;//给出每个象素的位数
long biCompress;//给出位图的压缩类型
long biSizeImage;//给出图象字节数的多少
long biXPelsPerMeter;//图像的水平分辨率
long biYPelsPerMeter;//图象的垂直分辨率
long biClrUsed;//调色板中图象实际使用的颜色素数
long biClrImportant;//给出重要颜色的索引值
} BITMAPINFOHEADER;
2.2)对于象素小于或等于16位的图片,都有一个颜色表用来给图象数据阵列提供颜色索引,其中的每块数据都以B、G、R的顺序排列,还有一个是reserved保留位。而在图形数据区域存放的是各个象素点的索引值。它的C语言结构如图5所示。
图5 颜色表数据结构
2.3)对于24位和32位的图片,没有彩色表,他在图象数据区里直接存放图片的RGB数据,其中的每个象素点的数据都以B、G、R的顺序排列。每个象素点的数据结构如图6所示。
图6 图象数据阵列的数据结构
2.4)由于图象数据阵列中的数据是从图片的最后一行开始往上存放的,因此在显示图象时,是从图象的左下角开始逐行扫描图象,即从左到右,从下到上。
2.5)对S3C2410或PXA255开发板上的LCD来说,他们每个象素点所占的位数为16位,这16位按B:G:R=5:6:5的方式分,其中B在最高位,R在最低位。而从bmp图象得到的R、G、B数据则每个数据占8位,合起来一共24位,因此需要对该R、G、B数据进行移位组合成一个16位的数据。移位方法如下:
b = 3; g = 2; r = 3;
RGBValue = ( r11 | g 5 | b);
基于以上分析,提取各种类型的bmp图象的流程如图7所示
图7
3) 实现显示任意大小的图片
开发板上的LCD屏的大小是固定的,S3C2410上的LCD为:240*320,PXA255上的为:640*480。比屏幕小的图片在屏上显示当然没问题,但是如果图片比屏幕大呢?这就要求我们通过某种算法对图片进行缩放。
缩放的基本思想是将图片分成若干个方块,对每个方块中的R、G、B数据进行取平均,得到一个新的R、G、B值,这个值就作为该方块在LCD屏幕上的映射。
缩放的算法描述如下:
(1)、计算图片大小与LCD屏大小的比例,以及方块的大小。为了适应各种屏幕大小,这里并不直接给lcd_width和lcd_height赋值为240和320。而是调用标准的接口来获取有关屏幕的参数。具体如下:
// Get variable screen information
if (ioctl(fbfd, FBIOGET_VSCREENINFO, vinfo)) {
printf("Error reading variable information. ");
exit(3);
}
unsigned int lcd_width=vinfo.xres;
unsigned int lcd_height=vinfo.yres;
计算比例:
widthScale=bmpi-width/lcd_width;
heightScale=bmpi-height/lcd_height;
本程序中方块的大小以如下的方式确定:
unsigned int paneWidth=
unsigned int paneHeight= ;
符号 代表向上取整。
(2)、从图片的左上角开始,以(i* widthScale,j* heightScale)位起始点,以宽paneWidth 高paneHeight为一个小方块,对该方块的R、G、B数值分别取平均,得到映射点的R、G、B值,把该点作为要在LCD上显示的第(i , j)点存储起来。
这部分的程序如下:
//-------------取平均--------
for( i=0;inow_height;i++)
{
for(j=0;jnow_width;j++)
{
color_sum_r=0;
color_sum_g=0;
color_sum_b=0;
for(m=i*heightScale;mi*heightScale+paneHeight;m++)
{
for(n=j*widthScale;nj*widthScale+paneWidth;n++)
{
color_sum_r+=pointvalue[m][n].r;
color_sum_g+=pointvalue[m][n].g;
color_sum_b+=pointvalue[m][n].b;
}
}
RGBvalue_256-r=div_round(color_sum_r,paneHeight*paneWidth);
RGBvalue_256-g=div_round(color_sum_g,paneHeight*paneWidth);
RGBvalue_256-b=div_round(color_sum_b,paneHeight*paneWidth);
}
}
4) 图片数据提取及显示的总流程
通过以上的分析,整个图片数据提取及显示的总流程如图8 所示。
图 8
图像显示应用程序:
#include errno.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include sys/ioctl.h
#include unistd.h
#include stdint.h
#include stdio.h
#include stdlib.h
#include asm/types.h
#include linux/videodev2.h
#include sys/mman.h
#include string.h
#include malloc.h
#include linux/fb.h
#include jpeglib.h
#include jerror.h
struct fb_dev
{
//for frame buffer
int fb;
void *fb_mem; //frame buffer mmap
int fb_width, fb_height, fb_line_len, fb_size;
int fb_bpp;
} fbdev;
//得到framebuffer的长、宽和位宽,成功则返回0,失败返回-1
int fb_stat(int fd)
{
struct fb_fix_screeninfo fb_finfo;
struct fb_var_screeninfo fb_vinfo;
if (ioctl(fd, FBIOGET_FSCREENINFO, fb_finfo))
{
perror(__func__);
return (-1);
}
if (ioctl(fd, FBIOGET_VSCREENINFO, fb_vinfo))
{
perror(__func__);
return (-1);
}
fbdev.fb_width = fb_vinfo.xres;
fbdev.fb_height = fb_vinfo.yres;
fbdev.fb_bpp = fb_vinfo.bits_per_pixel;
fbdev.fb_line_len = fb_finfo.line_length;
fbdev.fb_size = fb_finfo.smem_len;
return (0);
}
//转换RGB888为RGB565(因为当前LCD是采用的RGB565显示的)
unsigned short RGB888toRGB565(unsigned char red, unsigned char green, unsigned char blue)
{
unsigned short B = (blue 3) 0x001F;
unsigned short G = ((green 2) 5) 0x07E0;
unsigned short R = ((red 3) 11) 0xF800;
return (unsigned short) (R | G | B);
}
//释放framebuffer的映射
int fb_munmap(void *start, size_t length)
{
return (munmap(start, length));
}
//显示一个像素点的图像到framebuffer上
int fb_pixel(void *fbmem, int width, int height, int x, int y, unsigned short color)
{
if ((x width) || (y height))
return (-1);
unsigned short *dst = ((unsigned short *) fbmem + y * width + x);
*dst = color;
return 0;
}
int main(int argc, char **argv)
{
int fb;
FILE *infile;
struct jpeg_decompress_struct cinfo;
int x,y;
unsigned char *buffer;
char s[15];
struct jpeg_error_mgr jerr;
if ((fb = open("/dev/fb0", O_RDWR)) 0) //打开显卡设备
{
perror(__func__);
return (-1);
}
//获取framebuffer的状态
fb_stat(fb); //获取显卡驱动中的长、宽和显示位宽
printf("frame buffer: %dx%d, %dbpp, 0x%xbyte= %d\n",
fbdev.fb_width, fbdev.fb_height, fbdev.fb_bpp, fbdev.fb_size, fbdev.fb_size);
//映射framebuffer的地址
fbdev.fb_mem = mmap (NULL, fbdev.fb_size, PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
if ((infile = fopen("lcd.jpg", "rb")) == NULL)
{
fprintf(stderr, "open %s failed\n", s);
exit(-1);
}
ioctl(fb, FBIOBLANK,0); //打开LCD背光
cinfo.err = jpeg_std_error(jerr);
jpeg_create_decompress(cinfo);
//导入要解压的Jpeg文件infile
jpeg_stdio_src(cinfo, infile);
//读取jpeg文件的文件头
jpeg_read_header(cinfo, TRUE);
//开始解压Jpeg文件,解压后将分配给scanline缓冲区,
jpeg_start_decompress(cinfo);
buffer = (unsigned char *) malloc(cinfo.output_width
* cinfo.output_components);
y = 0;
while (cinfo.output_scanline cinfo.output_height)
{
jpeg_read_scanlines(cinfo, buffer, 1);
if(fbdev.fb_bpp == 16)
{
unsigned short color;
for (x = 0; x cinfo.output_width; x++)
{
color = RGB888toRGB565(buffer[x * 3],
buffer[x * 3 + 1], buffer[x * 3 + 2]);
fb_pixel(fbdev.fb_mem, fbdev.fb_width, fbdev.fb_height, x, y, color);
}
}
else if(fbdev.fb_bpp == 24)
{
memcpy((unsigned char *)fbdev.fb_mem + y * fbdev.fb_width * 3, buffer,
cinfo.output_width * cinfo.output_components);
}
y++;
}
//完成Jpeg解码,释放Jpeg文件
jpeg_finish_decompress(cinfo);
jpeg_destroy_decompress(cinfo);
//释放帧缓冲区
free(buffer);
//关闭Jpeg输入文件
fclose(infile);
fb_munmap(fbdev.fb_mem, fbdev.fb_size); //释放framebuffer映射
close(fb);
}
文章是我转载的
但是测试发现编译无法通过,
报错:
LCD.C:(.text+0x384): undefined reference to `jpeg_std_error(jpeg_error_mgr*)'
LCD.C:(.text+0x3a0): undefined reference to `jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned int)'
LCD.C:(.text+0x3b0): undefined reference to `jpeg_stdio_src(jpeg_decompress_struct*, _IO_FILE*)'
LCD.C:(.text+0x3c0): undefined reference to `jpeg_read_header(jpeg_decompress_struct*, int)'
LCD.C:(.text+0x3cc): undefined reference to `jpeg_start_decompress(jpeg_decompress_struct*)'
LCD.C:(.text+0x410): undefined reference to `jpeg_read_scanlines(jpeg_decompress_struct*, unsigned char**, unsigned int)'
LCD.C:(.text+0x59c): undefined reference to `jpeg_finish_decompress(jpeg_decompress_struct*)'
LCD.C:(.text+0x5a8): undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
collect2: ld returned 1 exit status
经过在网上查找,确定是JPEG解码库问题,我首先在Ubuntu安装了jpeg库
libjpeg 库的安装
在源文件里将
#include jpeglib.h
改成
extern "C" {
#include jpeglib.h
}
这里是有问题的,注意gcc 会把LCD.C当成c++编译,而把LCD.c当成C语言编译,改成lcd.c后就没有上边红色部分错误
由于是有的是JPEG解码库,链接的时候需要加上-ljpeg 选项
使用命令 arm-linux-gcc -ljpeg LCD.C -o LCD #add -ljpeg option 编译源文件成功,
文章知识点与官方知识档案匹配
CS入门技能树Linux入门初识Linux
23099 人正在系统学习中
点击阅读全文
打开CSDN,阅读体验更佳
开发板lcd上显示图片
#include #include #include "lcd.h" #include "regs.h" extern const unsigned char gImage_6[261120]; //extern const unsigned char gImage_5[261120]; extern const unsigned char gImage_a[83784]; extern const unsigned char test[]; static unsigned short drawb[272][480]; //it is a public draw area unsigned char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigned char mat[]={0x00,0x00,0x10,0x38, 0x6c,0xc6,0xfe,0xc6, 0xc6,0xc6,0xc6,0x00, 0x00,0x00,0x00,0x00 };
lcd屏幕显示bmp、jpg图片
文章目录BMP图片显示:jpeg压缩过程 RGB: ARGB 32bit 4Byte A:【24-31】 R:【16-23】 G:【8-15】 B:【0-7】 图片显示 显示思路: (1)打开液晶屏(open),进行内存映射(mmap) (2)打开图片,读取颜色数据 (3)将读取到的颜色数据映射到液晶屏 (4)关闭图片文件,液晶屏,解除内存映射 BMP图片显示: 没有经过压缩的二进制位图文件,文件较大,获取颜色数据方便 一张800*480的bmp格式的图片 8004803 = 1152000Byt
继续访问
最新发布 【正点原子I.MX6U-MINI应用篇】6、嵌入式Linux在LCD屏幕上显示字符
嵌入式Linux在LCD屏幕上显示字符
继续访问
数码相框(十六、LCD显示JPG格式图片)
注:本人已购买韦东山老师第三期项目视频,内容来源《数码相框项目视频》,只用于学习记录,如有侵权,请联系删除。 1. LCD 如何显示一张图片? 假如下图是是我们的 JZ2440 开发板,它有一个块显存、LCD控制器、LCD显示屏,LCD是如何显示张图片的呢? 如上图所示: ① 图片的颜色数据存放在显存,LCD 控制器会自动从显存取出图片的一个个颜色数据发送给LCD,取到最后又从头开始的循环取数据,最终把一张图片的全部颜色数据发送到LCD上,从而在LCD显示出该图片; ② 显存存放的数据是RGB数据;.
继续访问
linux滚动屏幕,基于MIDP1.0实现屏幕滚动(转)
本例介绍了一个常用的编程技巧,就是如何基于MIDP1.0实现屏幕的滚动效果。在MIDP2.0可以借助LayerManager的的“可视窗口”来实现。MIDP1.0通过变化坐标系来实现屏幕的滚动效果,只要借助Graphics.translate()方法。package com.j2medev.translate;import javax.microedition.midlet.*;import ja...
继续访问
Linux系统LCD显示图片的原理,linux驱动开发:用户空间操作LCD显示简单的图片【转】...
上一章我们简单介绍了LCD的一些基本原理。当然更深奥的还有,比如gamma,dither,HUE,satuation.OSD等等.我们知道我们是用framebuffer来实现显示的.显存:framebuffer.由DDRAM中划去一部分内存供显存使用.从而操作lcd相当于操作显存.lcd控制器(s5pv210里面有lcd控制器)会周期的获取framebuffer中的数据。经过处理丢给 显示屏的lc...
继续访问
linux中如何在fb上显示
framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。 framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构,可以通过fra...
继续访问
如何让linux fb0显示命令行,linux – 如何将/ dev / fb0用作来自用户空间的控制台,或者将文本输出到它...
所以我有一个Palm Pre(原始P100EWW)模型,我启用了开发人员模式,并安装了Debian Squeeze chroot.效果很好.我计划将这个用于任何东西(bittorrent peer,web server)但是一部手机.我注意到我是否做了猫/ dev / urandom / dev / fb0它实际上将随机像素写入屏幕,直到生成设备错误上没有剩余空格.真棒,现在我可以使用显示...
继续访问
linux 如何查看fb中分辨率_linux下直接写framebuffer(fb0)的方式显示bmp图像
linux下的显示设备就是/dev/fb0,往该设备写入的数据会显示在屏幕上,所以我们可以通过直接写frame buffer这个/dev/fb0设备来实现bmp图像的显示,而不用管是在shell文本方式下还是在其他gnome、qt、gtk、wayland等图形模式下,都能显示出来。当前前提是你的linux下必须具有该设备并支持读写(无特殊处理的linux都有该设备)。代码(支持16位、24位或32...
继续访问
Linux下LCD编程(fb设备_console_汉化)
继续访问
如何改造 Linux 虚拟终端显示文字
CJKTTY 补丁是什么,为什么我写了它 当你不使用 X 的时候,打开电脑,你就在使用虚拟终端。这么多年来它工作的很好,直到它来到了中国。包含中文字符的文件名无法正确显示,中文文档无法阅读。当然可以使用 X , 但是我为什么不能让终端也能显示汉字呢?如果在 X 下我能让屏幕显示汉字,终端下一定也能。为此我开始了 internet 上的搜寻。 我找到了 fbterm,这是个可以利用 /dev/
继续访问
LCD图片显示、触摸屏、音乐播放、缩放图片和播放视频
讲解LCD的原理和mmap函数,BMP格式图片的的显示,触摸屏的概念和原理以及触摸屏输入的解读,以及音乐视频播放和图片缩放。
继续访问
undefined reference to `jpeg_std_error(jpeg_error_mgr*)
背景 linux + QT BMP图片转JPG #include jpeglib.h 编译错误: root@happy-virtual-machine:/home/happy/Lee/Detector2# make arm-linux-g++ -Wl,-O1 -Wl,-rpath,/opt/qt-4.7.1/lib -o Detector2 main.o...
继续访问
linux屏幕滑动效果实现代码,使用swipe方法模拟屏幕滑动与手势密码绘制
前言App自动化测试中有两个很重要的操作,屏幕滑动与绘制手势密码。目前很多App在启动时,都存在启动时的引导动画或者加载上下文内容时需要手动上滑或者下滑加载页面,所以在自动化测试的过程中模拟手的滑动操作看起来就很重要了;第二个比较重要的是模拟手动绘制九宫格完成手势密码的设置,这种手势密码在我了解的范围内,大多在金融类的app中最常见,还有一些对用户信息保密性较好的app中,所以,模拟绘制手势密码也...
继续访问
Linux下LCD图片放大缩小实现,仿QQ空间滑动图片放大缩小控件
先来看一下效果:scrollzoom_listview.gif一、设计思路与实现步骤1、本例是通过重写ListView来实现的,头部的图片是ListView的HeadView。定义一个headview.xml布局文件,在这个布局文件中放一个ImageView,并给IamgeView设置一个初始高度2、实现下拉图片放大当ListView处于顶部的时候下拉实现图片放大,这里要用的一个核心的方法是ove...
继续访问
无法解析的外部符号 jpeg_std_error
1dlib.lib(png_loader.obj) : error LNK2001: 无法解析的外部符号 png_set_sig_bytes 1dlib.lib(png_loader.obj) : error LNK2001: 无法解析的外部符号 png_sig_cmp 1dlib.lib(png_loader.obj) : error LNK2001: 无法解析的外部符号...
继续访问
Linux LCD驱动(二)——图形显示
BMP和JPEG图形显示程序 1) 在LCD上显示BMP或JPEG图片的主流程图 首先,在程序开始前。要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0。命令如下: mknod fb0 c 29 0 在LCD上显示图象的主流程图如图1所示。程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形
继续访问
嵌入式Linux下完成LCD屏文字显示(帧缓冲框架)
帧缓冲框架是Linux下专门为显示类设备设计的接口,目的是将硬件和软件层分离开,方便应用层的编程,也方便应用层程序移植。帧缓冲框架向驱动层和应用层分别提供了一套标准接口,驱动层按照框架编写驱动,应用层按照框架编写应用程序。帧缓冲在/dev目录下生成的标准节点是fb,比如:/dev/fb0,/dev/fb1等等。
继续访问
linux 如何查看fb中分辨率_通过Linux FrameBuffer将像素绘制到屏幕上
最近,我对一个奇怪的想法感到震惊,他想从/ dev / urandom中获取输入,将相关字符转换为随机整数,然后使用这些整数作为像素rgb /xy值来绘制到屏幕上。我已经做过一些研究(在StackOverflow和其他地方),许多建议您可以直接直接写入/ dev /fb0,因为它是设备的文件表示形式。不幸的是,这似乎没有产生任何视觉上明显的结果。我找到了一个来自QT教程(不再可用)的示例C程序
excel制作表格的步骤教程
用excel做表格是在我们生活中很常用的技能,那么你知道要怎么用excel做表格呢?下面我为大家带来了excel制作表格的步骤教程_用excel制作表格步骤,希望可以帮助到大家!
目录
excel制作表格的步骤教程
18个Excel最常用的公式运算技巧总结
Excel函数公式大全方法解读
excel制作表格的步骤教程
在桌面上右键点击在快捷菜单中选择“属性---新建excel工作表”命令
2命名新建的表格名为“数据统计”,双击打开文件
3设置好表格的操作范围即纸张大小,这里设置为A4,页面布局--纸张大小--A4
4选择页面内的所有行,右键点击选择“行高”命令,设定好行高
5选择表头位置的单元格,右键点击选择“设置单元格格式”
6在“设置单元格格式”对话框中选择“对齐”选项卡,勾选“合并单元格”,点击“确定”按钮
7合并完后输入文字“数据统计表汇总”,并将其居中
8输入数据,这里只输入一部分
9选择表格数据所在的单元格,点击右键选择“设置单元格格式”命令,在对话框中选择“边框”选项卡,设置表格框架线条粗细,设置完点击“确定”
10表格的基本设置完成后,输入数据,保存即可,表格建完了
18个 Excel 最常用的公式运算技巧 总结
一、查找重复内容公式:=IF(COUNTIF(A:AA2)1”重复””")。
二、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6”2009/8/30″FALSE))/3600)。
三、从输入的18位身份证号的出生年月计算公式:=CONCATENATE(MID(E274)”/”MID(E2112)”/”MID(E2132))。
四、从输入的身份证号码内让系统自动提取性别,可以输入以下公式:=IF(LEN(C2)=15IF(MOD(MID(C2151)2)=1”男””女”)IF(MOD(MID(C2171)2)=1”男””女”))公式内的“C2”代表的是输入身份证号码的单元格。
五、求和: =SUM(K2:K56) ——对K2到K56这一区域进行求和;
六、平均数: =AVERAGE(K2:K56) ——对K2 K56这一区域求平均数;
七、排名: =RANK(K2,K$2:K$56) ——对55名学生的成绩进行排名;
八、等级: =IF(K2=85”优”IF(K2=74”良”IF(K2=60”及格””不及格”)))
九、学期总评: =K2_0.3+M2_0.3+N2_0.4 ——假设K列、M列和N列分别存放着学生的“平时总评”、“期中”、“期末”三项成绩;
十、最高分: =MAX(K2:K56) ——求K2到K56区域(55名学生)的最高分;
十一、最低分: =MIN(K2:K56) ——求K2到K56区域(55名学生)的最低分;
十二、分数段人数统计:
(1) =COUNTIF(K2:K56”100″) ——求K2到K56区域100分的人数;假设把结果存放于K57单元格;
(2) =COUNTIF(K2:K56”=95″)-K57 ——求K2到K56区域95~99.5分的人数;假设把结果存放于K58单元格;
(3)=COUNTIF(K2:K56”=90″)-SUM(K57:K58) ——求K2到K56区域90~94.5分的人数;假设把结果存放于K59单元格;
(4)=COUNTIF(K2:K56”=85″)-SUM(K57:K59) ——求K2到K56区域85~89.5分的人数;假设把结果存放于K60单元格;
(5)=COUNTIF(K2:K56”=70″)-SUM(K57:K60) ——求K2到K56区域70~84.5分的人数;假设把结果存放于K61单元格;
(6)=COUNTIF(K2:K56”=60″)-SUM(K57:K61) ——求K2到K56区域60~69.5分的人数;假设把结果存放于K62单元格;
(7) =COUNTIF(K2:K56”60″) ——求K2到K56区域60分以下的人数;假设把结果存放于K63单元格;
说明:COUNTIF函数也可计算某一区域男、女生人数。
如:=COUNTIF(C2:C351”男”) ——求C2到C351区域(共350人)男性人数;
十三、优秀率: =SUM(K57:K60)/55_100
十四、及格率: =SUM(K57:K62)/55_100
十五、标准差: =STDEV(K2:K56) ——求K2到K56区域(55人)的成绩波动情况(数值越小,说明该班学生间的成绩差异较小,反之,说明该班存在两极分化);
十六、条件求和: =SUMIF(B2:B56”男”,K2:K56) ——假设B列存放学生的性别,K列存放学生的分数,则此函数返回的结果表示求该班男生的成绩之和;
十七、 多条件求和: {=SUM(IF(C3:C322=”男”IF(G3:G322=110)))} ——假设C列(C3:C322区域)存放学生的性别,G列(G3:G322区域)存放学生所在班级代码(1、2、3、4、5),则此函数返回的结果表示求 一班的男生人数;这是一个数组函数,输完后要按Ctrl+Shift+Enter组合键(产生“{……}”)。“{}”不能手工输入,只能用组合键产生。
十八、根据出生日期自动计算周岁:=TRUNC((DAYS360(D3NOW( )))/3600)
Excel函数公式大全 方法 解读
一、条件判断:IF函数。
目的:判断成绩所属的等次。
方法:
1、选定目标单元格。
2、在目标单元格中输入公式:=IF(C3=90."优秀",IF(C3=80."良好",IF(C3=60."及格","不及格")))。
3、Ctrl+Enter填充。
解读:
IF函数是条件判断函数,根据判断结果返回对应的值,如果判断条件为TRUE,则返回第一个参数,如果为FALSE,则返回第二个参数。
二、条件求和:SUMIF、SUMIFS函数。
目的:求男生的总成绩和男生中分数大于等于80分的总成绩。
方法:
1、在对应的目标单元格中输入公式:=SUMIF(D3:D9."男",C3:C9)或=SUMIFS(C3:C9.C3:C9."=80",D3:D9."男")。
解读:
1、SUMIF函数用于单条件求和。暨求和条件只能有一个。易解语法结构为:SUMIF(条件范围,条件,求和范围)。
2、SUMIFS函数用于多条件求和。暨求和条件可以有多个。易解语法结构:SUMIFS(求和范围,条件1范围,条件1.条件2范围,条件2.……条件N范围,条件N)。
三、条件计数:COUNTIF、COUNTIFS函数。
目的:计算男生的人数或男生中成绩=80分的人数。
方法:
1、在对应的目标单元格中输入公式:=COUNTIF(D3:D9."男")或=COUNTIFS(D3:D9."男",C3:C9."=80")。
解读:
1、COUNTIF函数用于单条件计数,暨计数条件只能有一个。易解语法结构为:COUNTIF(条件范围,条件).
2、COUNTIFS函数用于多条件计数,暨计数条件可以有多个。易解语法结构为:COUNTIFS(条件范围1.条件1.条件范围2.条件2……条件范围N,条件N)。
四、数据查询:VLOOKUP函数。
目的:查询相关人员对应的成绩。
方法:
在目标单元格中输入公式:=VLOOKUP(H3.B3:C9.2.0)。
解读:
函数VLOOKUP的基本功能就是数据查询。易解语法结构为:VLOOKUP(查找的值,查找范围,找查找范围中的第几列,精准匹配还是模糊匹配)。
五、逆向查询:LOOKUP函数。
目的:根据学生姓名查询对应的学号。
方法:
在目标单元格中输入公式:=LOOKUP(1.0/(B3:B9=H3),A3:A9)。
解读:
公式LOOKUP函数的语法结构为:LOOKUP(查找的值,查找的条件,返回值的范围)。本示例中使用的位变异用法。查找的值为1.条件为0.根据LOOKUP函数的特点,如果 LOOKUP 函数找不到 lookup_value,则该函数会与 lookup_vector 中小于或等于 lookup_value 的最大值进行匹配。
六、查询好搭档:INDEX+MATCH 函数
目的:根据姓名查询对应的等次。
方法:
在目标单元格中输入公式:=INDEX(E3:E9.MATCH(H3.B3:B9.0))。
解读:
1、INDEX函数:返回给定范围内行列交叉处的值。
2、MATCH函数:给出指定值在指定范围内的所在位置。
3、公式:=INDEX(E3:E9.MATCH(H3.B3:B9.0)),查询E3:E9中第MATCH(H3.B3:B9.0)行的值,并返回。
七、提取出生年月:TEXT+MID函数。
目的:从指定的身份证号码中提取出去年月。
方法:
1、选定目标单元格。
2、输入公式:=TEXT(MID(C3.7.8),"00-00-00")。
3、Ctrl+Enter填充。
解读:
1、利用MID函数从C3单元格中提取从第7个开始,长度为8的字符串。
2、利用TEXT函数将字符的格式转换为“00-00-00”的格式,暨1965-08-21.
八、计算年龄:DATEDIF函数。
目的:根据给出的身份证号计算出对应的年龄。
方法:
1、选定目标单元格。
2、输入公式:=DATEDIF(TEXT(MID(C3.7.8),"00-00-00"),TODAY(),"y")"周岁"。
3、Ctrl+Enter填充。
解读:
1、利用MID获取C3单元格中从第7个开始,长度为8的字符串。
2、用Text函数将字符串转换为:00-00-00的格式。暨1965-08-21.
3、利用DATEDIF函数计算出和当前日期(TODAY())的相差年份(y)。
九、中国式排名:SUMPRODUCT+COUNTIF函数。
目的:对成绩进行排名。
方法:
1、选定目标单元格。
2、在目标单元格中输入公式:=SUMPRODUCT((C$3:C$9C3)/COUNTIF(C$3:C$9.C$3:C$9))+1.
3、Ctrl+Enter填充。
解读:公式的前半部分(C$3:C$9C3)返回的是一个数组,区域C$3:C$9中大于C3的单元格个数。后半部分COUNTIF(C$3:C$9.C$3:C$9)可以理解为:_1/COUNTIF(C$3:C$9.C$3:C$9),公式COUNTIF(C$3:C$9.C$3:C$9)返回的值为1.只是用于辅助计算。所以上述公式也可以简化为:=SUMPRODUCT((C$3:C$9C3)_1)+1.
excel制作表格的步骤教程相关 文章 :
★ excel表格制作教程
★ Excel表格基本操作教程
★ excel制作表格的步骤教程
★ Excel中表格制作图文教程的方法
★ excel制作表格的方法步骤图
★ Excel表格制作图表的方法教程全解
★ 最简单的表格制作方法技巧
★ excel表格制作流程图的方法步骤
★ excel制作漂亮表格的方法步骤图
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = ""; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();
高三怎么学习数学
高效听课方法:\x0d\x0a\x0d\x0a1、有准备的去听,也就是说听课前要先预习,找出不懂的知识、发现问题,带着知识点和问题去听课会有解惑的快乐,也更听得进去,容易掌握;\x0d\x0a2、参与交流和互动,不要只是把自己摆在“听”的旁观者,而是“听”的参与者,积极思考老师讲的或提出的问题,能回答的时候积极回答(回答问题的好处不仅仅是表现,更多的是可以让你注意力更集中)。\x0d\x0a3、听要结合写和思考。纯粹的听很容易懈怠,能记住的点也很少,所以一定要学会快速的整理记忆。\x0d\x0a4、如果你因为种种原因,出现了那些似懂非懂、不懂的知识,课上或者课后一定要花时间去弄懂。不然问题只会越积越多,最后就只能等着拥抱那“不三不四”的考试分数了。\x0d\x0a\x0d\x0a高效记忆方法:\x0d\x0a\x0d\x0a1、要学会整合知识点。把需要学习的信息、掌握的知识分类,做成思维导图或知识点卡片,会让你的大脑、思维条理清醒,方便记忆、温习、掌握。同时,要学会把新知识和已学知识联系起来,不断糅合、完善你的知识体系。这样能够促进理解,加深记忆。\x0d\x0a\x0d\x0a2、合理用脑。所谓合理,一是要交替复习不同性质的课程,如文理交叉,历史与地理交叉,这可使大脑皮层的不同部位轮流兴奋与抑制,有利于记忆能力的增强与开发;二是在最佳时间识记,一般应安排在早晨、晚上临睡前,具体根据自己的记忆高峰期来选择。\x0d\x0a\x0d\x0a3、借助高效工具。速读记忆是一种高效的阅读学习方法,其训练原理就在于激活“脑、眼”潜能,培养形成眼脑直映式的阅读学习方式,主要练习提升阅读速度、注意力、记忆力、理解力、思维力等方面。掌握之后,在阅读文章、材料的时候可以快速的提取重点,促进整理归纳分析,提高理解和记忆效率;同时很快的阅读速度,还可以节约大量的时间,游刃有余的做其它事情。具体学习可以参考《精英特全脑速读记忆训练软件》。\x0d\x0a\x0d\x0a学习思维导图,思维导图是一种将放射性思考具体化的方法,也是高效整理,促进理解和记忆的方法。不仅在记忆上可以让你大脑里的资料系统化、图像化,还可以帮助你思维分析问题,统筹规划。不过,要学好思维导图,做到灵活运用可不是一件简单的事,需要花费很多时间的。前面说的“精英特全脑速读记忆训练软件”中也有关于思维导图的练习和方法讲解,可以参考。\x0d\x0a\x0d\x0a总结提升方法:\x0d\x0a\x0d\x0a一是要总结考试成绩,通过总结学会正确地看待分数。只有正确看待分数,才不会被分数蒙住你的双眼,而专注于学习的过程,专注于蕴藏在分数背后的秘密。\x0d\x0a二是要总结考试得失,从中找出成败原因,这是考后总结的中心任务。学习当然贵在努力过程,但分数毕竟是知识和技能水平的象征之一,努力过程是否合理也常常会在分数上体现出来。\x0d\x0a三是要总结、整理错题,收集错题,做出对应的一些解题思路(不解要知道这题怎么解,还有知道这一类型的题要怎么解)。\x0d\x0a四是要通过总结,确定下阶段的努力方向。
c语言求助 O(∩_∩)O谢谢
#includestdio.h
#includestring.h
void strmcpy(char *s,const char *t, int m);
void main()
{
char s[80],t[80];
int m;
printf("Iuput:");
scanf("%s",t);
scanf("%d",m);
if(mstrlen(t))
printf("Error input!");
else
{
strmcpy(s,t,m);
printf("%s",s);
}
}
void strmcpy(char *s,const char *t,int m)
{
while(*s++=*((t++)+m-1));
}
30分求帮解C语言题
判断题
21、
语言函数的缺省(默认)类型是
void
型(空类型)。(
错)
22、
在
C
语言中,函数不能嵌套定义,但可以嵌套调用。(错
)
23、
一个程序中可以使用多条文件包含命令,但一条文件包含命令只能包含一个(对)
24、
在同一个数组中可以存储许多不同类型的值。(错
)
25、
C
语言中,变量名用大小写是等价的。(错
)
26、
C
语言的所有循环语句都要求至少要执行一次循环体。(
错)
27、
C
语言中,注释可以出现在源程序中空格可以出现的任何位置。(错
)
28、
C
语言规定:在一个源程序中,main
函数的位置可以任意。(
对)
29、
在同一种数据类型中,变量值越大,它所占内存的字节数越多。(错
)
30、
在
C
语言中,十六进制数是用英文字母
o和
x
后加一个整数来表示,例如
ox12f
31、
使用宏定义时,宏名可以是大写或者小写,但是常用大写字母表示。(
对)
32、
强制类型转换,如(double)x,只改变原变量的类型,而不改变其值。(
对)
33、
当
C
语言的函数先使用后定义时,应该作提前声明。(对,但有的可免声明
)
34、
在
C
语言程序中,不允许变量同名。(
错)
35、
C
语言的所有循环语句都要求至少要执行一次循环体。(
错)
程序填空题
36、
从键盘读入一个字符串,求该字符串的长度。
#include
stdio.h
int
len(char
*);
void
main()
{
char
str[80];
printf("Please
input
a
string:");
scanf("%s",str);
printf("The
length
of
the
string
is
%d.\n",len(str));
}
int
len(char
*
p)
{
int
n=0;
while(*p!='\0')
{
n++;
___________________________p++;_____________
}
return
(n);
}
37、
从键盘读入一个字符串,统计其中英文小写字母的个数。
#include
"string.h"
#include
"stdio.h"
void
main()
{
char
s[80];
int
i,n=0;
gets(s);
for(i=0;s[i]!='\0';i++)
____if(s[i]='a's[i='z'])______n++;_____________________________________
printf("n=%d\n",n);
}
38、
从键盘读入两个数,求其最大者。
#include
"stdio.h"
int
max(int,int);
void
main()
{
int
a,b,c;
printf("a=");scanf("%d",a);
printf("\nb=");scanf("%d",b);
c=max(a,b);
printf("\nmax
is
%d\n",c);
max(int
x,int
y)
_{if(ab)return
a;else
return
b;}_______________________________________________
39、
采用下面的公式编程求π
,要求计算到最后一项的值小于
10-6为止
lude
stdio.h
lude
math.h
main()
double
n=1,t=0,pi=0.0,s=1.0,epselon;
do
{
t=s/n;
pi+=t;
___s=-s;____________________________
n+=2;
epselon=fabs(t);
}while(epselon=1e-6);
printf("pi=%8.6f\n",4*pi);
}
序分析题
40、
#include
stdio.h
void
main()
{
int
a[3][3]={{3,2,2},{4,5,6},{-2,9,2}};
int
i,j,s=0;
for(i=0;i3;i++)
for(j=0;j3;j++)
if(i==2-j)
s=s+a[i][j];
printf("s=%d\n",s);
}
运行结果:__2,7,5_______________________________________
41、
#include
stdio.h
int
sub(int
n)
{
if(n==1)
return
1;
return
n+sub(n-1);
}
void
main()
{
printf("%d\n",sub(5));
}
运行结果:__15_______________________
42、
#include
stdio.h
int
x=2,y=5;
void
f()
{
int
x=0;
x++;
y++;
printf("%d,%d,",x,y);
}
void
main()
{
int
x=8;
f();
f();
printf("%d,%d\n",x,y);
}
运行结果:____1,y;1,y;8,5________________________________
43、
#include
stdio.h
#define
N
5
void
main()
{
char
s[N][N];
int
i,
j;
for(i=0;iN;i++)
{
s[i][i]='+';
for(j=i+1;jN;
j++)
{
s[i][j]='*';
s[j][i]='0';
}
}
for(i=0;iN;i++)
{
for(j=0;jN;j++)
printf("%3c",s[i][j]);
printf("\n");
}
}
行结果:_____+****
0+***
00+**
000+*
0000+
_____________________