说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

字符数组-C语言教程

HTML文档下载 WORD文档下载 PDF文档下载
在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。用来存放字符量的数组称为字符数组。
7.3 字符数组
用来存放字符量的数组称为字符数组。
7.3.1 字符数组的定义
形式与前面介绍的数值数组相同。
例如:
    char c[10];
由于字符型和整型通用,也可以定义为int c[10]但这时每个数组元素占2个字节的内存单元。
字符数组也可以是二维或多维数组。
例如:
    char c[5][10];
即为二维字符数组。
7.3.2 字符数组的初始化
字符数组也允许在定义时作初始化赋值。
例如:
    char c[10]={‘c’, ‘  ’, ‘p’, ‘r’, ‘o’, ‘g’, ‘r’, ‘a’,’m’};
赋值后各元素的值为:
    数组C    c[0]的值为‘c’
c[1]的值为‘ ’
c[2]的值为‘p’ 
c[3]的值为‘r’
c[4]的值为‘0’
c[5]的值为‘g’
c[6]的值为‘r’
c[7]的值为‘a’
c[8]的值为‘m’
其中c[9]未赋值,由的值为‘p’系统自动赋予0值。
当对全体元素赋初值时也可以省去长度说明。
例如:
    char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};
这时C数组的长度自动定为9。
7.3.3 字符数组的引用
【例7.8】
main(){  int i,j;  char a[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};  for(i=0;i<=1;i++)    {      for(j=0;j<=4;j++)          printf("%c",a[i][j]);      printf("\n");    }}
本例的二维字符数组由于在初始化时全部元素都赋以初值,因此一维下标的长度可以不加以说明。
7.3.4 字符串和字符串结束标志
在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍字符串常量时,已说明字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符'\0'存入数组,并以此作为该字符串是否结束的标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。
C语言允许用字符串的方式对数组作初始化赋值。
例如:
    char c[]={'c', ' ','p','r','o','g','r','a','m'};
可写为:
        char c[]={"C program"};
    或去掉{}写为:
        char c[]="C program";
用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。上面的数组c在内存中的实际存放情况为:

C

 

p

r

o

g

r

a

m

\0

    ‘\0'是由C编译系统自动加上的。由于采用了‘\0'标志,所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。
7.3.5 字符数组的输入输出
在采用字符串方式后,字符数组的输入输出将变得简单方便。
除了上述用字符串赋初值的办法外,还可用printf函数和scanf函数一次性输出输入一个字符数组中的字符串,而不必使用循环语句逐个地输入输出每个字符。
【例7.9】
main(){  char c[]="BASIC\ndBASE";  printf("%s\n",c);}
注意在本例的printf函数中,使用的格式字符串为“%s”,表示输出的是一个字符串。而在输出表列中给出数组名则可。不能写为:
printf("%s",c[]);
【例7.10】
main(){  char st[15];  printf("input string:\n");  scanf("%s",st);  printf("%s\n",st);}
本例中由于定义数组长度为15,因此输入的字符串长度必须小于15,以留出一个字节用于存放字符串结束标志`\0`。应该说明的是,对一个字符数组,如果不作初始化赋值,则必须说明数组长度。还应该特别注意的是,当用scanf函数输入字符串时,字符串中不能含有空格,否则将以空格作为串的结束符。
例如当输入的字符串中含有空格时,运行情况为:
    input string:
        this is a book
输出为:
this
从输出结果可以看出空格以后的字符都未能输出。为了避免这种情况,可多设几个字符数组分段存放含空格的串。
程序可改写如下:
【例7.11】
main(){  char st1[6],st2[6],st3[6],st4[6];  printf("input string:\n");  scanf("%s%s%s%s",st1,st2,st3,st4);  printf("%s %s %s %s\n",st1,st2,st3,st4);}
    本程序分别设了四个数组, 输入的一行字符的空格分段分别装入四个数组。然后分别输出这四个数组中的字符串。
在前面介绍过,scanf的各输入项必须以地址方式出现,如 &a,&b等。但在前例中却是以数组名方式出现的,这是为什么呢?
这是由于在C语言中规定,数组名就代表了该数组的首地址。整个数组是以首地址开头的一块连续的内存单元。
如有字符数组char c[10],在内存可表示如图。

C[0]

C[1]

C[2]

C[3]

C[4]

C[5]

C[6]

C[7]

C[8]

C[9]

设数组c的首地址为2000,也就是说c[0]单元地址为2000。则数组名c就代表这个首地址。因此在c前面不能再加地址运算符&。如写作scanf("%s",&c);则是错误的。 在执行函数printf("%s",c) 时,按数组名c找到首地址,然后逐个输出数组中各个字符直到遇到字符串终止标志'\0'为止。
7.3.6 字符串处理函数
C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。 使用这些函数可大大减轻编程的负担。用于输入输出的字符串函数,在使用前应包含头文件"stdio.h",使用其它字符串函数则应包含头文件"string.h"。
下面介绍几个最常用的字符串函数。
1. 字符串输出函数 puts
   格式:  puts (字符数组名)
   功能:把字符数组中的字符串输出到显示器。 即在屏幕上显示该字符串。
【例7.12】
#include"stdio.h"main(){  char c[]="BASIC\ndBASE";  puts(c);}
    从程序中可以看出puts函数中可以使用转义字符,因此输出结果成为两行。puts函数完全可以由printf函数取代。当需要按一定格式输出时,通常使用printf函数。
2. 字符串输入函数gets
   格式:  gets  (字符数组名)
   功能:从标准输入设备键盘上输入一个字符串。
 本函数得到一个函数值,即为该字符数组的首地址。
【例7.13】
#include"stdio.h"main(){  char st[15];  printf("input string:\n");  gets(st);  puts(st);}
    可以看出当输入的字符串中含有空格时,输出仍为全部字符串。说明gets函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与scanf函数不同的。
3. 字符串连接函数strcat
   格式:  strcat (字符数组名1,字符数组名2)
   功能:把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志“\0”。本函数返回值是字符数组1的首地址。
【例7.14】
#include"string.h"main(){  static char st1[30]="My name is ";  int st2[10];  printf("input your name:\n");  gets(st2);  strcat(st1,st2);  puts(st1);}
    本程序把初始化赋值的字符数组与动态赋值的字符串连接起来。要注意的是,字符数组1应定义足够的长度,否则不能全部装入被连接的字符串。
4. 字符串拷贝函数strcpy
   格式:  strcpy (字符数组名1,字符数组名2)
   功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“\0”也一同拷贝。字符数名2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。
【例7.15】
#include"string.h"main(){  char st1[15],st2[]="C Language";  strcpy(st1,st2);  puts(st1);printf("\n");}
本函数要求字符数组1应有足够的长度,否则不能全部装入所拷
贝的字符串。
5. 字符串比较函数strcmp
   格式:  strcmp(字符数组名1,字符数组名2)
   功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
          字符串1=字符串2,返回值=0;
  字符串2〉字符串2,返回值〉0;
  字符串1〈字符串2,返回值〈0。
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。
【例7.16】
#include"string.h"main(){ int k;  static char st1[15],st2[]="C Language";  printf("input a string:\n");  gets(st1);  k=strcmp(st1,st2);  if(k==0) printf("st1=st2\n");  if(k>0) printf("st1>st2\n");  if(k<0) printf("st1<st2\n");}
本程序中把输入的字符串和数组st2中的串比较,比较结果返回到k中,根据k值再输出结果提示串。当输入为dbase时,由ASCII 码可知“dBASE”大于“C Language”故k〉0,输出结果“st1>st2”。
6. 测字符串长度函数strlen
   格式:  strlen(字符数组名)
   功能:测字符串的实际长度(不含字符串结束标志‘\0’) 并作为函数返回值。
【例7.17】
#include"string.h"main(){ int k;  static char st[]="C language";  k=strlen(st);  printf("The lenth of the string is %d\n",k);}
7.4 程序举例
【例7.18】把一个整数按大小顺序插入已排好序的数组中。
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。
main(){  int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};  for(i=0;i<10;i++)      { p=i;q=a[i];	for(j=i+1;j<10;j++)	if(q<a[j]) {p=j;q=a[j];}	if(p!=i)	{	  s=a[i];	  a[i]=a[p];	  a[p]=s;	}	printf("%d ",a[i]);      }    printf("\ninput number:\n");    scanf("%d",&n);    for(i=0;i<10;i++)      if(n>a[i])      {for(s=9;s>=i;s--) a[s+1]=a[s];      break;}      a[i]=n;    for(i=0;i<=10;i++)      printf("%d ",a[i]);    printf("\n");}
本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。 后移结束跳出外循环。插入点为i,把n赋予a[i]即可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数后的数组各元素值。
    程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。
【例7.19】在二维数组a中选出各行最大的元素组成一个一维数组b。
a=( 3  16 87  65
  4  32 11 108 
10 25 12  37)
b=(87 108 37)
本题的编程思路是,在数组A的每一行中寻找最大的元素,找到之后把该值赋予数组B相应的元素即可。程序如下:
main(){    int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27};    int b[3],i,j,l;    for(i=0;i<=2;i++)      { l=a[i][0];	for(j=1;j<=3;j++)	if(a[i][j]>l) l=a[i][j];	b[i]=l;}    printf("\narray a:\n");    for(i=0;i<=2;i++)      { for(j=0;j<=3;j++)	printf("%5d",a[i][j]);	printf("\n");}      printf("\narray b:\n");    for(i=0;i<=2;i++)      printf("%5d",b[i]);    printf("\n");}
程序中第一个for语句中又嵌套了一个for语句组成了双重循环。外循环控制逐行处理,并把每行的第0列元素赋予l。进入内循环后,把l与后面各列元素比较,并把比l大者赋予l。内循环结束时l 即为该行最大的元素,然后把l值赋予b[i]。等外循环全部完成时,数组b中已装入了a各行中的最大值。后面的两个 for语句分别输出数组a和数组b。
【例7.20】输入五个国家的名称按字母顺序排列输出。
    本题编程思路如下:五个国家名应由一个二维字符数组来处理。然而C语言规定可以把一个二维数组当成多个一维数组处理。 因此本题又可以按五个一维数组处理, 而每一个一维数组就是一个国家名字符串。用字符串比较函数比较各一维数组的大小,并排序,输出结果即可。
编程如下:
main(){    char st[20],cs[5][20];    int i,j,p;    printf("input country's name:\n");    for(i=0;i<5;i++)      gets(cs[i]);    printf("\n");    for(i=0;i<5;i++)      { p=i;strcpy(st,cs[i]);	for(j=i+1;j<5;j++)      if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}    if(p!=i)      {	strcpy(st,cs[i]);	strcpy(cs[i],cs[p]);	strcpy(cs[p],st);      }    puts(cs[i]);}printf("\n");}
本程序的第一个for语句中,用gets函数输入五个国家名字符串。上面说过C语言允许把一个二维数组按多个一维数组处理,本程序说明cs[5][20]为二维字符数组,可分为五个一维数组cs[0],cs[1],cs[2],cs[3],cs[4]。因此在gets函数中使用cs[i]是合法的。 在第二个for语句中又嵌套了一个for语句组成双重循环。这个双重循环完成按字母顺序排序的工作。在外层循环中把字符数组cs[i]中的国名字符串拷贝到数组st中,并把下标i赋予P。进入内层循环后,把st与cs[i]以后的各字符串作比较,若有比st小者则把该字符串拷贝到st中,并把其下标赋予p。内循环完成后如p不等于i说明有比cs[i]更小的字符串出现,因此交换cs[i]和st的内容。至此已确定了数组cs的第i号元素的排序值。然后输出该字符串。在外循环全部完成之后即完成全部排序和输出。
7.5 本章小结
1.数组是程序设计中最常用的数据结构。数组可分为数值数组(整数组,实数组),字符数组以及后面将要介绍的指针数组,结构数组等。
2.数组可以是一维的,二维的或多维的。
3.数组类型说明由类型说明符、数组名、数组长度(数组元素个数)三部分组成。数组元素又称为下标变量。 数组的类型是指下标变量取值的类型。
4.对数组的赋值可以用数组初始化赋值,输入函数动态赋值和赋值语句赋值三种方法实现。 对数值数组不能用赋值语句整体赋值、输入或输出,而必须用循环语句逐个对数组元素进行操作。
福利来了,爱拍原创免费为iOS版手游制作宣传视频 【工具推荐】Zrender——轻量级Canvas类库,让绘图大不同! 基于Docker和CoreOS的开源PaaS平台——Deis v1.0正式发布! 微软宣布.NET开发环境开源 支持三大操作系统 爆发吧,诺基亚!前员工开发物联网新设备 详解Visual Studio Emulator for Android,微软的Mobile First! HPC China 2014完美落幕,AMD Firepro荣获好评! 揭秘微软的Container技术之一Drawbridge AWS副总裁谈数据中心网络打造 【最具价值CTO评选秀】出门问问CTO雷欣:从技术极客到核心管理的秘密 《近匠》APICloud:“云”+“端”一体的移动API提供者 Oculus移动SDK发布!John Carmack操刀、集成Unity 4.5 11月15日深圳见!深圳微信开发者大会公布全部议程 参与2014中国大数据行业大调查 BDTC门票等你拿 HTML5规范尘埃落定,5个开发工具推荐 盘点最受开发者喜爱的Android 5.0 Lollipop API IoE Day侧记:想开发智能硬件?先要弄明白这几个问题 【问底】许鹏:使用Spark+Cassandra打造高性能数据分析平台(二) 微软承诺所有Lumia WP8设备将升级至Win10,用户会买账吗? 周末,深圳微信开发者大会等您来!(参会必读+名单) 营造云安全生态链 第五届云安全联盟高峰论坛在京顺利召开 中国大数据六大技术变迁记 【最具价值CTO评选秀】当当网CTO熊长青:结合行业及技术发展,规划技术方向 社交颠覆传统,环信技术交流沙龙纪实(组图) 揭秘经典案例炼成之道 微信开发者大会精华回顾 从一家电子商务网站学到的经验教训 【最具价值CTO评选秀】极路由CTO康晓宁:极客转型CTO的感悟 盘点这些年来的“微信万能论” 《近匠》亲加通讯云:IM即时通讯API的极致服务者 TCL杯HTML5智能电视开发大赛完美落幕,8项获奖应用大揭晓! Xcode 6.2 Beta发布,支持WatchKit的iOS 8.2 SDK来了! 怎么把Demo_Adhoc分到两台机上运行 数据库更新 how to 用 insert into 把一个.zip文件保存进数据库?? 请大家推荐一个CD机吧!!!! 急,NOTES与SQL SERVER的问题 asp实例 我的Access库文件原来大小是6.78M,我清空所有记录和减少很多记录时,为什么大小没改变? 关于delphi动态加载控件,在线 代人提问:请问.dcu文件是干什么的?如何才能生成该类型文件。 怎么响应Enabled属性 asp.net做网页,运行后,<asp;....></asp:...>字段仍然存在?? 请教VB高手们一个高难问题! 请问,存储过程在VC如何调用,用ADO,ODBC。 怎么实现这个SQL? 没事瞎问~~~黑客软件能走向海外吗?(比如扫描器,键盘记录器,木马等) windows protect --error ,我装不了系统啊 DbEdit里的数据用adoquery如何更新才好? 有没有办法调试存储过程? 我是个菜鸟,请教大家,VC++和C++ Builer的优点和缺点。 请问如何改变显示文本的颜色? delphi 6 的补丁包 浏览器为NS6时如何获取屏幕分辨率? 如何控制 ValueListEditor ?有一个Help这样写道: 各位斑竹请进来,紧急求救呀!!!!! 是否可以把用asa建的数据库转变为access? 在java中如何压缩和解压文件夹? 如何在运行期把最大化,最小化按钮灰掉!? 求一句广告词 请教一个毕业设计的问题,关于在c++buileder中OLe对象调用:怎么样把word中的表格导入到数据库 请问如果在首页中加入一个论坛的登陆对话框? 这样的IIS错误信息,是什么意思,怎么解决? 问一下,vb怎么连接数据库呀`~(access)有代码吧~~给分呀` 如何画箭头? C#进行嵌入式开发,方便吗? 她为什么看上我??! 如何用BCB从mp3文件中得到歌名,歌手名,唱片集,流派等! 各位知道有关于ORACLE系统管理实例方面的书籍吗? ADO访问access数据库,怎样编辑一条记录啊? 请教各位关于win2000默认共享的问题 喜欢德国队的进来,坚韧不拔的意志和不到最后一刻不放弃的精神!!!! 如何判断图像大小 com的参数传递问题 请问:如何将pb数据库中的表倒入vf数据库中???急!!!!!! 大家好,关于数据库的问题请,大家帮忙。 一个关于button的简单问题 有没有将图片设为桌面的api函数,若有怎样用?若没有,怎样实现该功能? 我在adotable中删除数据它老是报错:”键列信息在最后读取中改变“(急用) 如何将CString类型转换为int型? wyx病毒的所有症状表现、危害性、解决方法。 在线等待--100分(很简单的问题) 急急急!! 氢离子电子式 用热的快在电壶里烧水对电壶有害没?听说那样烧久了壶就不保温了 某同学在做电解水的实验时通电一段时间后,水的质量减少了2.7g(不考虑蒸发),理论上的H2和O2质量分别是多少 两根材料相同的均匀导线x和y串联在电路中,两导线沿长度方向的电势变化情况分别如图 电壶烧水,一段时间后发现壶盖在跳动,这种现象中能是整样转化的? 苯酚钠溶液和通入二氧化碳成什么? 并联电路中的一条支路电阻变化时,各个支路的电流分配会发生变化吗?在电源不变的情况下,即电压不变 电水壶不烧水时壶身与电座分开放好吗 一根铜导线和一根镍铬合金线.长短粗细都相同.把它们并联在电路里,通过哪根导线的电流大?为什么? 并联电路各支路分到的电流大小与电阻成____,电阻越大,分到的电流就越____.并联电路各支路分到的电流大小与电阻成____,电阻越大,分到的电流就越___,并联电路的总电阻比其中任何一个电阻都 电壶烧水把电能转化为()能1.2.热能 3.机械能 NaH是一种离子化合物,其中钠显+1价.NaH与水反应放出氢气.下列叙述错误的是A.NaH还原剂,水是氧化剂B.生成的另一种产物是氢氧化钠C.NaH的氧化产物是氢气D.水的氧化产物是氢气请问答案C正确吗, AB和BC 是由同种材料制成的长度相同的两段导体,将它们串联入电路中比较通过它们的电流和电压的大小 所有的原电池中是不是都是电解质溶液中的阴离子移向负极,阳离子移向正极? 从化学角度分析,甲醇有哪些特性?有什么通途? 有同种材料制成长度相等的导线串联 AB比BC细 比较他们的电压电流数量关系 春雨的诗句15句 甲醇、丙醇是怎么命名的,就是说有什么特征,为什么这么叫还有甲酸,乙酸还有那个丙三醇, 并联电路中支路电流是怎样按支路电阻分配的 电解水反应的化学方程式为 . 氢化锂是制作氢气的来源,反应化学式为LiH+H2O=LiOH+H2↑.计算80g氢化锂与足量水反应产生氢气质量 在并联电路中,有两条支路,其中一条的电阻比另一条的电阻大,那么电阻较大的有电流通过吗?或者在串联电路中,如果其中一处断路,那连接在电路中的电压表会偏转吗?如果并联电路中部分 从电解水的化学方程式 金属氢化物可以快速与水反应制取氢气,如:氢化锂与水反应的化学方程式为LiH+H2O=LiOH+H2.若制取10克氢气,需要消耗多少克氢化锂? 英语短文(礼仪方面)大一新生做课前发言,需要一篇英语短文要求:关于礼仪的 不要低幼化不要用特别难的词(符合大1新生) 电解水的化学方程式 化学上利用氢化锂和水在常温下反应制取氢气同时生成氢氧化锂反应的化学式为LiH+H2O=LiOH+H2↑生成的氢氧化锂能和多少克质量分数为10%的稀盐酸恰好完全反应 氢气还原氧化铜的方法测定某氧化铜样品的纯度(杂质不与氢气反应),同学们设计了以第三小题我选的是A和B,正确答案是BA为什么不是正确答案?如果装置的气密性不好,那就可能会导致空气 电解水的反应的化学方程式 苯酚,NaOH,CO2怎么反应?生成物好像是水杨酸钠反应式是什么?还有反应条件~ 带电粒子在复合场(电场与磁场同时存在)中的运动的分析方法 有两根粗细相同,长短不同的锰铜线,将它们串联在电路中,那根电压大,那根电流大 采用紫外分光光度计法测定时如何选择分析波长 描写春风春雨春风的古诗名句 如果在粗细相同的铁丝和锰铜丝之间选择,你选择---做连接电路的导线,理由是 ( )C2H6OH+( )O2---点燃---( )CO2+( )H2O 氯离子与氢离子能反应吗 煤层气的采集方法可行,是不是利用它驱动燃气轮机可以发电那?如果煤层气采集方便,为什么不利用它作为燃气轮机的燃料发电,然后产生蒸汽供暖. 一句写春雨的诗句 用氯酸钾和二氧化锰制取氧气用向上排空气法收集的最佳时刻 N2H4是一种常用的火箭燃料,它与一种单质X燃烧生成氮气写出X的化学式 原电池里的盐桥里面的离子能移动到溶液中吗?同时溶液中的离子能通过盐桥吗?如果只是让离子集中在盐桥与溶液接触的部分使两边溶液保持电中性,那么突然拿掉盐桥后,盐桥里面的离子不就 酸度0.2换成ph是多少 发射卫星时可用肼(N2H4)为燃料,用二氧化氮为氧化剂,这两种物质反应生成氮气和水蒸气.已知:N2(g)+2O2(g) ═2NO2(g) △H1= +67.7 kJ•mol-1N2H4(g) +O2(g) ═N2(g)+2H2O(g) △H2=-534 kJ•mol-1 电解质溶液在原电池中有什么用?书上说“原电池一定要形成闭合回路”,我不明白“闭合回路”是什么意思?参考书里说要离子的移动来导电,为什么?电子从负极流向正极,然后在正极和水中的 广泛使用酒精、沼气,既可解决能源问题,也有利减轻温室效应怎么错了?老师说它们是清洁能源啊? 发射通讯卫星的火箭用联氨N2H4作燃料用四氧化二氮气体作助燃剂燃烧后的生成物之一是氮气写出反应化学方程发射通讯卫星的火箭用联氨(N2H4)作燃料用四氧化二氮(N2O4)气体作助燃剂,燃烧 电解水的化学方程式有几个? 温室效应和甲烷有关系吗 "为了实验安全,做氢气还原氧化铜实验时,先检验氢气纯度后再像试管中通气体"对不对啊? 电解水化学方程式表示的意义? 甲烷可以直接引起温室效应吗? 用氢气还原氧化铜时在氢气通入前应先检验什么 电解水的化学反应方程式 在原电池中,电解质的阳离子和阴离子分别向什么电源的什么极移动,盐桥中的阴阳离子呢? 在氢气还原氧化铜时,通入氢气前先检验什么,为什么? 有哪些根据化学结构计算最大紫外吸收波长的经验规则 铜的电解精炼为什么铜离子比氢离子铁离子优先得到电子RT 电壶烧水有害吗 紫外最大吸收波长是650nm的话,荧光激发波长该选什么?如果激发波长选了650nm,那根据斯托克斯定理,发射波长不是在可见光外面了?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘