数组类型习题及答案

数组类型习题及答案
数组类型习题及答案

8-1 编写程序,将10个数34,3,29,63,70,16,85,82,90,93存放于一组数组中,求出这十个数的和及平均值。

解:#include ""

void main()

{

int a[10]={34,3,29,63,70,16,,90,93};

int i ,sum=0;

float average ;

for(i=0;i<10;i++)

{

sum=sum+a[i] ;

}

average=sum/;

printf("sum=%d,average=%f\n",sum,average);

}

运行结果:sum=565,average=

思考:数组有何特点此问题如果不用数组进行处理将会怎样

8-2 编写程序,求存放于上题数组中10个数的最大值,最小值及所在的位置。

解:#include ""

void main()

{

int a[10]={34,3,29,63,70,16,85,82,90,93};

int i,sum,max,min,d_max,d_min;

max=min=a[0];

d_max=d_min=0;

for(i=1;i<10;i++)

{

if(a[i]>max) {max=a[i];d_max=i;}

if(a[i]

}

printf("max=%d,a[%d]\n",max,d_max);

printf("min=%d,a[%d]\n",min,d_min);

}

运行结果:max=93,a[9]

Min=3,a[1]

思考:数组a[i]中i的变化意味着什么

8-3 编写程序,从键盘读入50个数存放于一数组中,求出该数组中最大值、最小值及所在位置。

解:#include ""

void main()

{

float a[50],max,min;

int i,d_max,d_min;

for(i=0;i<50;i++)

scanf("%f",&a[i]);

max=min=a[0];

d_max=d_min=0;

for(i=1;i<50;i++)

{

if(a[i]>max) {max=a[i];d_max=i;}

if(a[i]

}

printf("max=%d,a[%d]\n",max,d_max);

printf("min=%d,a[%d]\n",min,d_min);

}

思考:此题中不用数组也可以处理吗如果可以,区别之处在哪里8-4将存放于上题数组中的50个数分别按升序,降序排序。

解:#include ""

#define N 3

void main()

{

float a[N] ,t;

int i,j;

for(i=0;i

scanf("%f",&a[i]);

/*按升序排序*/

for(i=0;i

{

for(j=i;j

if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;}

printf("%8.2f ",a[i]);

}

printf("\n");

/*按降序排序*/

for(i=0;i

{

for(j=i;j

if(a[i]

printf("%8.2f ",a[i]);

}

printf("\n");

}

思考:此题中可以不用数组进行处理吗(进一步理解数组的特点。)8-5 编写程序,从键盘输入某班学生C语言课程考试成绩,评定每个学生C语言成绩等级。如果高于平均分10分,则等级为优秀;如果低于平均分10分,则等级为一般;否则等级为中等。

解:#include ""

#define N 3

void main()

{

int i ,j;

float average,a[N],sum=0;

for(i=0;i

{

scanf("%f",&a[i]) ;

sum=sum+a[i];

}

average=sum/N;

for(i=0;i

{

if(a[i]>average+10) printf("a[%d]优秀\n",i);

else if(a[i]

else printf("a[%d]中等\n",i);

}

}

思考:表示数组元素的a[i]一般称为什么变量它与一般变量有何区别

8-6 某班期终考试有六门课程,编写程序计算每门课程的平均成绩。进一步考虑全年级10个班的情况。

解:#include ""

#define N 30

#define M 6

void main()

{

int i,j;

float average[M],a[N][M],sum=0;

for(i=0;i

for(j=0;j

scanf("%f",&a[i][j]);

for(j=0;j

{

sum=0;

for(i=0;i

sum=sum+s[i][j] ;

average[j]=sum/N;

}

printf("6门课程的平均成绩分别为:\n");

for(i=0;i

{

printf("%f ",average[i]);

}

printf("\n") ;

}

思考:在此题中定义的数组a[N][M]中,N表示什么M 表示什么若考虑全年级10个班的情况,程序应做哪些改进

8-7 编写程序,将一个一维数组进行逆置。例如,原来顺序为1,3,5,7,则逆置后的顺序为7,3,5,1.

解:#include ""

#define N 4

void fun(int a[])

{

int i,t ;

for(i=0;i

{

t=a[i] ;

a[i]=a[N-1-i];

a[N-1-i]=t;

}

for(i=0;i

{

printf("%d",a[i]) ;

}

}

void main()

{

int i ,a[N] ;

printf("请输入一维数组各元素的值:\n");

for(i=0;i

scanf("%d",&a[i]);

fun(a);

printf("\n");

}

思考:如果要对7个元素的数组进行逆置操作,只需要修改什么地方数组元素的下标可以是算术表达式吗有何要求

8-8 编写程序,打印如下的杨辉三角形。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

解:#include ""

#define N 6

void main()

{

int i,j,a[N][N]={1},k;

for(i=1;i

{

for(j=1;j

if(j==1||i==j) a[i][j]=a[0][0] ;

else a[i][j]=a[i-1][j-1]+a[i-1][j] ;

}

for(i=1;i

{

for(k=1;k<=N-i;k++) /* 每行前面的空格*/

printf(" ") ;

for(j=1;j<=i;j++)

printf("%4d",a[i][j]) ;

printf("\n") ;

}

}

思考:在此题中定义一个a[N][N]的方阵数组显然有些浪费(有些元素闲置,却占用存储空间),可否考虑用一维数组进行处理

8-9 编写程序,用筛选法求100-1000之间的素数。

解:#include ""

#define N 1000

void main()

{

int i,a[N],n=0,db ;

for(i=1;i

a[i]=1 ;

for(i=2;i

{

if(a[i]==0) continue ;

db=i*2;

while(db

{

a[db]=0;

db=db+i;

}

}

for(i=100;i

if(a[i]==1)

{

printf("%d",i);

n++ ;

if(n%18==0) printf("\n") ;

}

printf("\n") ;

}

思考:在程序实际已求出了什么范围之间的所有素数在while循环中的“a[db]=0;”语句的作用是什么了

8-10 编写程序,利用数组实现大整数的加减运算。假定大整数不超过10位数字。

解:#include ""

#include ""

#define N 10

int a[N],b[N],c[N],d[N],jw=0;

int flag=1 ;/*标志两个大整数的大小关系*/

void chag0(int a[],int n)

{

for(int i=0;i<=n;i++)

a[i]=0;

}

void add() /*求两个大整数的和*/

{

int i ;

for(i=0;i

{

c[i]=(a[i]+b[i]+jw)%10 ;

jw=(a[i]+b[i]+jw)/10 ;0”...

即第一个字母变成第26个字母,第i个字母变成第26-i+1个字母。非字母字符不变。编写程序将密码译回原文,并输出密码和原文。解:#include ""

#include""

#define N 100

void main()

{

int i =0;

char ch[N], tran[N];

printf(“请输入密码电文字符串(<100): ”);

getch(ch);

while(ch[i]!=’\0’)

{

if(ch[i]>=’A’&&ch[i]<=’Z’)

tran[i]=(90-ch[i])+65;

else if(ch[i]>=’a’&&ch[i]<=’z’)

tran[i]=(122-ch[i])+97;

else tran[i]=ch[i];

i++;

}

tran[i]=’\0’;

printf(“\n 电文密码:%s”,ch);

printf(“\n 原文是:%s\n”,tran);

}

思考:在C语言中,对字符的比较是如何进行的其基本比较规则是什么

8-18 编写程序,读入若干国家的名称,按字典顺序排序输出。解:#include ""

#include""

#define N 50

#define M 20

void main()

{

int i ,j ,n=0;

char cname[N][M],tran[N] ;

printf("请输入国家名称(<50个且每个名称不超过20个字符,当第一个字符为空格是结束):\n");

for(i=0;i

{

gets(cname[i]) ;

if(cname[i][0]==' ') break ;

n++ ;

}

for(i=0;i

for(j=i+1;j

if((strmp(cname[i],cname[j]))>0)

{

strcpy(tran,cname[i]);

strcpy(cname[i],cname[j]);

strcpy(cname[j],tran);

}

printf("按字典顺序排序后为:\n");

for(i=0;i

puts(cname[i]) ;

}

思考:语句“if(cname[i][0]==‘’)break ;”的作用是什么若无此语句,程序运行将会出现什么状况。

8-19 若A为n×n对称方阵,将A压缩存放到一维数组B中,使B具有n(n+1)/2个元素,且A中信息可全部在B中找到。

解:#include ""

#define N 5

#define M N*(N+1)/2 /*用宏处理一维数组的动态下标,内容参见第12章*/

void main()

{

int a[N][N],b[M],i,j,k;

printf("请输入方阵A的值:\n");

for(i=1;i

{

for(j=1;j

scanf("%d",&a[i][j]);

}

for(i=1;i

for(j=1;j<=i;j++)

{

k=i*(i-1)/2+j;

b[k]=a[i][j];

}

printf("利用一维的b数组输出方阵的值:\n");

for(i=1;i

{

for(j=1;j

{

if(i>=j) k=i*(i-1)/2+j ;

else k=j*(j-1)/2+i;

printf("%d",b[k]);

}

printf("\n") ;

}

}

思考:如果在一个方阵中有大量的0元素(称为稀疏矩阵),如何进行一维的压缩存储

8-20 某单位用现金发放工资,编写程序计算各种面值的最佳张数,以保证发给职工工资时不需找零。职工工资与各种面值的张数均要求用数组描述。

解:#include ""

#define N 30

void main()

{

int i ,j ;

float salary[N] ;

int s ,money[10]={1000,500,200,100,50,20,10,5,2,1};

int sum[10] ;/*存放各种面值的张数*/

for( j=0;j<10;j++)

sum[j]=0 ;

printf("请输入每个职工的工资(精确到角):\n");

for( i=0;i

scanf("%f",salary+i) ;

for(i=0;i

{

s=int(10*salary[i]);/*取出第i个工人的工资并转化为角*/

for(j=0;j<10;j++)

{

sum[j]+=s/money[j];

s=s%money[j] ;

}

}

/*输出结果*/

for(i=0;i<10;i++)

{

if(i<7) printf("%d元",money[i]/10);

else printf("%3.1f元",money[i]/;

}

printf("\n") ;

for(i=0;i<10;i++)

printf(" %d ",sum[i]) ;

printf("\n") ;

}

思考:s/money[j],s%money[j]这两个表达式是用来求什么的如果不用角为单位,程序应如何设计

8-21编写n个学生、m门课程的成绩处理程序:

(1)实际学生人数、课程门数由键盘输入。

(2)n个学生、m门课程的成绩用二维实型数组描述,同时考虑学生

姓名、学号数据。

(3)求出每个学生的总成绩、平均成绩、并按总成绩排序。

(4)求出每门课程的平均成绩和不及格的人数。

解:#include ""

#include""

#define N 100 //假定学生人数不超过100

#define M 8 //假定课程门数不超过8

void main()

{

int n,m,i,j,k,lo,t;

int no[N],sc[N][M],sum[N],csum[M] ,dave[M];

float rave[N] ,cave[M],ave;

char name[N][10],nam[10] ;

printf("请输入(学生人数,课程门数):");

scanf("%d,%d",&n,&m) ;

for(i=0;i

{

printf("\n请输入第%d个学生的学号、姓名:",i+1);

scanf("%d",&no[i]);gets(name[i]) ;

printf("各门课的考试成绩:");

for(j=0;j

scanf("%d",&sc[i][j]);

}

for(i=0;i

{

sum[i]=0 ;

for(j=0;j

sum[i]+=sc[i][j];

rave[i]=sum[i]/m ;

}

for(j=0;j

{

csum[j]=0;dave[j]=0;

for(i=0;i

{

if(sc[i][j]<60) dave[j]++;

csum[j]+=sc[i][j] ;

}

cave[j]=csum[j]/n;

}

for(i=0;i

{

k=i ;

for(j=i+1;j

if(sum[k]

lo=no[i];no[i]=no[k];no[k]=lo;

strcpy(nam,name[i]);strcpy(name[i],name[k]);strcpy(name[k],nam); t=sum[i];sum[i]=sum[k];sum[k]=t;

ave=rave[i];rave[i]=rave[k];rave[k]=ave;

for(j=0;j

{

t=sc[i][j];sc[i][j]=sc[k][j];sc[k][j]=t;

}

}

/*输入显示过程*/

printf("名次学号姓名");

for(i=0;i

printf(" 总成绩平均成绩\n ");

for(i=0;i

{

printf("%2d %d %10s ",i+1,no[i],name[i]);

for(j=0;j

printf(" %d %7.2f\n",sum[i],rave[i]);

}

printf("\n 各科平均成绩:");

for(j=0;j

printf("\n 不及格人数:");

for(j=0;j

printf("\n") ;

}

思考:二维数组是否可以看作由若干一维数组构成此题中的排序采用了什么方法

8-22在保龄球比赛中,已知每次击倒的保龄球数。计算在一局比赛中一个人的得分,要求同时算出每一轮的得分和每一轮之后的累计得分。

保龄球比赛一局共十轮,前九轮中每一轮最多打两次球;第十轮可以大两次或三次球,每轮几分规则如下:

(1) 如果一轮中第一个球击倒全部10只保龄球(称为Strike,好球), 则这一轮的得分等于10分加下两次击倒保龄球的只数。

(2) 如果一轮中两个球击倒全部10只保龄球(称为Spare,成功),则这一轮的得分等于10分加下一次击倒保龄球的只数。

(3) 如果一轮中两个球一共击倒保龄球只数少于10个(称为No mark,平常),则这一轮的得分等于所击倒保龄球的总只数。

解:此题比较复杂,详细处理过程请参见本书上机实验指导部分的综合练习。为了便于理解,在此我们先将问题简化为:当一局十轮全部滚完后,再进行积分的显示与累计。

程序如下:

解:#include ""

void main()

{

int i,j,a[11][2],sc[10],sum[10] ;

a[10][0]=0;a[10][1]=0;a[11][0]=0;a[11][1]=0;

printf("请输入各轮两次的击倒的保龄瓶(球)数\n");

for(i=0;i<11;i++)

{

if(i<10)

{

printf("第%d轮第一次击倒瓶球数:",i+1);

scanf("%d",&a[i][0]);

if(a[i][0]<10)

{

printf("第%d轮第二次击倒瓶球数:",i+1);

scanf("%d",&a[i][1]);

else {printf("OK!\n");a[i][1]=0;}

}

else

{

if(a[9][0]+a[9][1]<10) break;

printf("附加第一次击倒瓶球数:") ;

scanf("%d",&a[i][0]);

if(a[9][0]==10)

{

printf("附加第二次击倒瓶球数:") ;

scanf("%d",&a[i][1]);

}

else {printf("OK!\n");a[i][1]=0;}

if(a[9][0]<10||a[i][0]+a[i][1]<10||a[i][0]!=10) break ; }

}

for(i=0;i<10;i++)

{

if(a[i][0]==10)

{if(a[i+1][0]==0&&i<9)

sc[i]=a[i][0]+a[i+1][0]+a[i+2][0];

else sc[i]=a[i][0]+a[i+1][0]+a[i+1][1];

}

else if(a[i][0]+a[i][1]==10)

sc[i]=a[i][0]+a[i][1]+a[i+1][0];

else sc[i]=a[i][0]+a[i][1];

if(i==0) sum[i]=sc[i] ;

else sum[i]=sum[i-1]+sc[i];

}

printf(" 轮次:");

for(i=1;i<=10;i++) printf("%4d",i);

printf(" 附加");

for(j=0;j<2;j++)

printf("\n第%d次得分:",j+1);

for(i=0;i<11;i++)

if(a[i][j]!=0||j==0||a[i][0]!=10) printf("%4d",a[i][j]);

else printf(" /");

}

printf("\n各轮得分:");

for(i=0;i<10;i++)

printf("\n 累计得分:");

for(i=0;i<10;i++)

printf("%4d",sum[i]);

printf("\n");

}

思考:语句“if(a[9][0]<10||a[i][0]+a[i][1]<10||a[i][0]!=10) break ;”处理的是哪些情况对此保龄球的积分累计问题,如何实现边滚球边显示积分与累计结果的功能

C语言必背的典型程序设计题目 - 数组、函数-------参考答案

1、使用选择法、冒泡法对10个数进行排序,并输出排序前后的数列。 n k=0; m t=0; //用于记录出列顺序 while(t #include <> void main() { int i,j,a[6][6]; for(i=0;i<=5;i++) { a[i][i]=1; a[i][0]=1; } for(i=2;i<=5;i++) { for(j=1;j<=i-1;j++) { a[i][j]=a[i-1][j]+a[i-1][j-1]; } } for(i=0;i<=5;i++) { for(j=0;j<=i;j++) { printf("%4d",a[i][j]); } printf("\n"); } } 5、编写程序,把下面的数据输入一个二维数组中。

25 36 78 13 12 26 88 93 75 18 22 32 56 44 36 58 然后执行以下操作: ①输出矩阵两个对角线上的数; ②分别输出各行和各列的和; ③交换第一行和第三行的位置; ④交换第二列和第四列的位置; ⑤输出处理后的数组。 #include<> #define SIZE 4 void main() { int a[SIZE][SIZE]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}}; int i,j,t,sum; //输出二维数组 printf("二维数组:\n"); for(i=0;i

常用数据类型转换使用详解

VC常用数据类型使用转换详解 CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。 CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OLECHAR FAR* BSTR; typedef const char * LPCTSTR; vc++中各种字符串的表示法 首先char* 是指向ANSI字符数组的指针,其中每个字符占据8位(有效数据是除掉最高位的其他7位),这里保持了与传统的C,C++的兼容。 LP的含义是长指针(long pointer)。LPSTR是一个指向以‘/0’结尾的ANSI字符数组的指针,与char*可以互换使用,在win32中较多地使用LPSTR。 而LPCSTR中增加的‘C’的含义是“CONSTANT”(常量),表明这种数据类型的实例不能被使用它的API函数改变,除此之外,它与LPSTR是等同的。 1.LP表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别的,都是32位.所以这里的LP和P是等价的. 2.C表示const 3.T是什么东西呢,我们知道TCHAR在采用Unicode方式编译时是wchar_t,在普通时编译成char. 为了满足程序代码国际化的需要,业界推出了Unicode标准,它提供了一种简单和一致的表达字符串的方法,所有字符中的字节都是16位的值,其数量也可以满足差不多世界上所有书面语言字符的编码需求,开发程序时使用Unicode(类型为wchar_t)是一种被鼓励的做法。 LPWSTR与LPCWSTR由此产生,它们的含义类似于LPSTR与LPCSTR,只是字符数据是16位的wchar_t而不是char。 然后为了实现两种编码的通用,提出了TCHAR的定义: 如果定义_UNICODE,声明如下: typedef wchar_t TCHAR; 如果没有定义_UNICODE,则声明如下: typedef char TCHAR; LPTSTR和LPCTSTR中的含义就是每个字符是这样的TCHAR。 CString类中的字符就是被声明为TCHAR类型的,它提供了一个封装好的类供用户方便地使用。

C语言练习题(带答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

matlab数据类型及转换

Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。 1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127; 2、浮点:(single;double) 浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。 3、逻辑:(logical) Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0: A = rand(5); A(A>0.5)=0; 4、字符:(char) Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’ 实际上是一个1行9列向量。构成矩阵或向量的行字符串长度必须相同。可以使用char函数构建字符数组,使用strcat函数连接字符。 例如,命令name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数. 例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。 此外,Matlab同时提供一种更灵活的单元格数组方法,使用函数cellstr可以将字符串数组转换为单元格数组: data= char(‘abc’,’abcd’) length(data(1,:)) ->? 4 cdata=cellstr(data) length(cdata{1}) ->?3 常用的字符操作函数 blanks(n) 返回n个空字符 deblank(s) 移除字符串尾部包含的空字符 (string) 将字符串作为命令执行 findstr(s1,s2) 搜索字符串 ischar(s) 判断是否字符串 isletter(s) 判断是否字母 lower(s) 转换小写 upper(s) 转换大写 strcmp(s1,s2) 比较字符串是否相同 strncmp(s1,s2,n) 比较字符串中的前n个字符是否相同 strrep(s1,s2,s3) 将s1中的字符s2替换为s3 5、日期和时间 Matlab提供三种日期格式:日期字符串如’1996-10-02’,日期序列数如729300(0000年1月1日为1)以及日期向量如1996 10 2 0 0 0,依次为年月日时分秒。 常用的日期操作函数

第三章lAB VIEW 数组、簇和图形1

第三章数据类型:数组、簇和波形 3.1概述 数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访问 其中的每个元素。索引的范围是0到n – 1,其中n是数组中 元素的个数。图3-1所显示的是由数值构成的一维数组。注意 第一个元素的索引号为0,第二个是1,依此类推。数组的元素 可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant,将它放置在流程图中。然后 再在数组框中放置数值常量、布尔数还是字符串常量。下图显示 了在数组框放入字符串常量数组的例子。左边是一个数组壳,中 间的图上已经置入了字符串元素,右边的图反映了数组的第0个 元素为:”ABC”,后两个元素均为空。 图3-1数组的创建

在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然后将 它们复制或者拖曳到流程图中,创建对应的常数。 还有很多在流程图中创建和初始化数组的方法,有些功能函 数也可以生成数组。 3.2.2数组控制对象、常数对象和显示对象 通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。 3.2.3自动索引 For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。 在默认情况下,对于每个连接到For循环的数组都会执行自 动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单击 通道(输入数组进入循环的位置),在快捷菜单中选择Disable Indexing。 练习3-1创建一个自动索引的数组 目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。 前面板 图3-2练习3-1的面板 1.打开一个新的前面板。 2.选择Controls?Array & Cluster,在前面板 中放置一个数组。设置它的标签为Waveform Array。 3.选择Controls?Numeric,在

java基本数据类型习题(选择24)

1、下列哪一个是合法的标识符: A、12class; B、+viod; C、-5; D、_black; 2、下列哪一个不是JAVA语言中保留字: A、if; B、sizeof; C、private; D、null; 3、下列描述中正确的一项是: A、标识符首字符的后面可以跟数字; B、标识符不区分大小写; C、复合数据类型变量包括布尔型、字符型、浮点型; D、数组属于基本数据类型; 4、下列哪一项不属于变量的组成部分: A、变量名; B、变量属性; C、变量初值; D、变量大小; 5、下列关于变量组成部分描述正确的一项是: A、变量名不是标识符;

B、变量名是标识符; C、浮点型属于复合类型; D、变量属性分为:基本类型和符合类型; 6、下列选项中,哪一项不属于JAVA语言的简单数据类型: A、整数型; B、数组; C、字符型; D、浮点型; 7、下列关于变量作用域的描述中,不正确的一项是: A、变量属性是用来描述变量作用域的; B、局部变量作用域只能是它所在的方法的代码段; C、类变量能在类的方法中声明; D、类变量的作用域是整个类; 8、下列关于基本数据类型的说法中,不正确的一项是: A、boolean是JAVA非凡的置值,或者为真或者为假; B、float是带符号的32位浮点数; C、double是带符号的64位浮点数; D、char应该上是8位的Unicode字符; 9、下列关于溢出的说法中,正确的一项是: A、一个整型的数据达到整型能表示的最大数值后,再加1,则机器产生上溢,结果为整型的最大值; B、一个整型的数据达到整型能表示的最小数值后,再减1,

c语言数组习题

数组练习解答 1定义一个名为 a 的单精度实型一维数组 ,长度为 4,所有元素的初值均为 0的数定义语句就是 【分析】按照一般数据定义语句的格式 ,可以直接写出方法一(参瞧答案);考虑到所有元素均赋初值时可 以省略数组长度,可以写出方法二(参瞧答案);考虑到不省略数组长度,给部分元素赋初值时,所有未赋初 值的元素均有空值(对数值型数组来说,初值为0),可以写出方法三(参瞧答案);考虑到选用静态型,不赋 初值所有元素也自动赋予。空值 (对数值型数组来说,初值为0),可以写出方法四(参瞧答案)。 【答案】方法一 :float a[4] = (0.0,0.0,0.0,0.0}; 方法二:float a[] = ( 0.0,0.0,0.0,0.0}; 规定,定义字符型数组时不允许直接使用 "字符常量"的方式赋初值,所以备选答案②也就是错误的。 备选答案③符合题意。【答案】③ 6定义一个名为"s"的字符型数组,并且赋初值为字符串"123"的错误语句就是() ① char s[]={ '1','2','3',' \0 '}; ② char s 「」={"123"}; ③ char s[]={"123\n"}; ④ char s[4]={'1','2','3'}; 【分析】备选答案①中省略了数组长度 ,所以每个元素都赋了初值,共计4个元素,初值依次为T '3'、’ \0',最后一个元素的值为字符串结束标记 ,所以数组S 中存放的就是字符串"123",该答案不符合 题意(即正确的);备选答案③中直接赋予字符串作为初值所以数组 s 的长度为4,其中的初值就是字符串 "123",不符合题意(即正确的);备选答案③中也就是给数组 s 赋予字符串的初值,但就是字符串不就是 方法三:float a[4]= {0.0}; 方法四:static float [4]; 2下列数组定义语句中,错误的就是() ① char x[1] = 'a'; ② auto char x[1]={0}; ③ static char x[l]; ④ char x[l]; 【分析】显然答案①中给字符型数组赋初值的格式不对 以 备选答案①就是符合题意的答案。 【答案】① 3用"冒泡排序法"对n 个数据排序,需要进行n 一 1 较,小者调上;该操作反复执行 n- k 次。现在假设有 则利用"冒泡排序法"执行第2步后的结果就是 【分析】开始排序前的排列执行第 4 1 - 3 : (不能直接赋予字符常量,必须用花括号括住),所 步。其中第k 步的任务就是:自下而上,相邻两数比 4个数据:4、l 、3、2要排序,假定4为上、2为下, O 1步后的排列执行第 2步后的排列 1 2 4 2 【答案】l 、2、4、 3 4用"选择排序法"对n 个数据排序,需要进行n-1 据中寻找最小数,与第k 个数据交换。现在假设有 行第2步后的结果就是 ____________________ 【分析】 开始排序前的排列为: 4 执行第1步后的排列为: 执行第2步后的排列为: 【答案】1、2、3、4 5下列数组定义语句中,正确的就是() ① int a[][]={1,2,3,4,5,6}; ② char a[2] ③ int a[][3]= {1,2,3,4,5,6}; ④ static int a[][] 【分析】C 语言规定,二维数组定义时不允许省略第二维的长度 步。其中第k 步的任务就是:在第k 个数据到第n 个数 4个数据:4、 1、 3、2要排序,则利用"冒泡排序法"执 「3] = 'a','b'; ={{1,2,3},{4,5,6}}; ,所以备选答案①④就是错误 C 语言还 显然 、'2'、

实验2基本数据类型与数组(最新整理)

民族学院实验报告 计算机科学 系 级 班 指导教师 报告人20 年 月 日 成 绩 课程名称 JAVA 语言程序设计实验名称实验二 基本数据类型与数组实验 目的 1.掌握基本数据类型及其相互之间的转换2.掌握JAVA 中数组的使用实验仪器 和器材具有JDK 环境的计算机一台 实验内容和要求 一、输出希腊字母表 1.请按模板要求,将【代码】替换为Java 程序代码,运行该程序时在命令窗口中输出希腊字母表。其运行效果如图 2.1所示。 图2.1 输出希腊字母表 GreekAlphabet.java public class GreekAlphabet { public static void main(String[] args) { int startPosition=0,endPosition=0; char cStart='α',cEnd='ω'; startPosition=(int )cStart; //cStart 做int 型数据转换,并将结果赋值给startPosition endPosition=(int )cEnd; //cEnd 做int 型数据转换,并将结果赋值给EndPosition System.out.println("希腊字母\'α\'在Unicode 表中的顺序位置:"+(int)cStart); System.out.println("希腊字母表:"); for (int i=startPosition;i<=endPosition;i++){ char c='\0'; cStart=(char )i; //i 做char 型转换运算,并将结果赋值给c System.out.print(" "+c); if ((i-startPosition+1)%10==0) System.out.println(); } } } 2.实验后练习 (1)将一个double 型数据直接赋值给float 型变量,程序编译时提示怎样的 错误? 答:程序提示的内容为:“可能损失精度”。 (2)在应用程序的main 方法中增加语句:

C语言数组编程题

实验4 数组 一.实验目的: 1.掌握一维数组的定义、赋值和输入输出的方法; 2.掌握字符数组定义、初始化、赋值的方法; 3.了解常见的字符串函数功能及其使用方法; 4.掌握二维数组的定义与引用。 二.实验内容: 1.编写程序,输入10个整数存入一维数组,统计输出其中的正数、负数和零的个数。 2.编写程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。 3.编写程序,输入10个整数存入一维数组,对其进行升序排序后输出。 4.编写程序,求二维数组中元素的最大值和最小值。 5.编写程序,求一个4×4矩阵中所有元素之和。 6.编写程序:从键盘上输入一字符串,统计输出该字符串中的字母字符、数字字符、空格以及其他字符的个数。 7.编写程序:从键盘上输入一字符串,并判断是否形成回文(即正序和逆序一样,如“abcd dcba”)。 8. 产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成。 9. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,按原来的规律将其插入并输出。 页脚内容1

10. 产生一个由10个元素组成的一维数组,数组元素由随机数(0-99)构成。按照升序排列并输出。再输入一个数,要求找出该数是数组中的第几个元素,如果不在数组中,则输出找不到。 11. 找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小。可能没有鞍点。 12. 编程输出杨辉三角。(要求输出10行)(杨辉三角:每行端点与结尾的数为1.每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大) 13. 输入一行字符,统计大写字母、小写字母、数字、空格以及其它字符个数。 14. 编写程序,将两个字符串连接起来,不用strcat。 15. 编写程序实现strcpy函数功能。 16. 编程实现strlen函数功能。 17. 编程求2-4+6-8…-100+102的值。 18. 假设某人有100,000现金。每经过一次路口需要进行一次交费。交费规则为当他现金大于50,000时每次需要交5%如果现金小于等于50,000时每次交5,000。请写一程序计算此人可以经过多少次这个路口。 19. 输入若干个正整数,以0结束,将其中大于平均值且个位为5的数排序后输出。(按由大到小的顺序排序) 20. 输入一个字符串,将其中ASCII码值为基数的字符排序后输出。(按由小到大的顺序) 21. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非16进制字符后,组成一个新字符串(16进制形式),然后将其转换为10进制数后输出。 22. 读入一个正整数n(1<=n<=6),再读入n阶矩阵,计算该矩阵除副对角线、最后一行、最后一列 页脚内容2

2.3 基本数据类型的转换

2.3基本数据类型的转换 本章目标 掌握基本数据类型间的自动转换 掌握任何基本数据类型的数据都会自动向String转换 掌握基本数据类型间的强制转换 Java的数据类型在定义时就已经确定了,因此不能随意转换成其他的数据类型,但Java允许用户有限度地做类型转换处理。数据类型的转换方式可分为“自动类型转换”及“强制类型转换”两种。 1 数据类型的自动转换 在计算机中完成一个计算时,要求参与计算的两个数值必须类型一致,如果不一致,计算机会自动将其中一个数值类型转换成另外一个数值的类型,然后完成计算。自动转换的原则如下: (1)转换前的数据类型与转换后的类型兼容。 (2)转换后的数据类型的表示范围比转换前的类型大。 例如,将short类型的变量a转换为int类型,由于short与int皆为整数类型,符合上述条件(1);而int的表示范围比short大,符合条件(2)。因此Java 会自动将原为short类型的变量a转换为int类型。 要注意的是,类型的转换只限该行语句,并不会影响原先所定义的变量的类型,而且通过自动类型的转换可以保证数据的精确度,它不会因为转换而损失数据内容。这种类型的转换方式也称为扩大转换。 范例:数据类型的转换 程序运行结果: x / y = 1.3519603 10 / 3.5 = 2.857142857142857 10 / 3 = 3 从程序的输出结果可以发现,int类型与float类型进行计算之后,输出的结

果会变成float类型,一个整型常量和一个浮点型常量进行计算之后,结果也会变为一个浮点数据,而如果两个int类型的常量进行计算,最终结果还是int类型,而其小数部分将会被忽略。 也就是说,假设有一个整数和双精度浮点数据做运算时,Java会所整数转换成双精度浮点数后再做运算,运算结果也会变成双精度浮点数。 提示:任何类型的数据都向String转型。 有一种表示字符串的数据类型String,从其定义上可以发现单词首字母大写了,所以此为一个类,属于引用数据类型,但是此类属于系统类,而且使用上有些注意事项,对于此种类型后面会有介绍,在此处所需要知道的只有以下两点: (1)String可以像普通变量那样直接通过赋值的方式进行声明。字符串是使用“””括起来的。两个字符串之间可以使用“+”进行连接。 (2)任何数据类型碰到String类型的变量或常量之后都向String类型转换。 范例:定义字符串变量 程序运行结果: str = lixinghua30 从运行结果来看,可以发现整型数据30自动转换成了字符的“30”,与字符串“lixinghua”进行了连接操作,变成了一个新的字符串“lixinghua30”。 范例:字符串常量操作的问题

C语言数组例题

6.1.1 Fibonacci数列 /* Fibonacci数列递推求解 */ main() {int k,n; long s,f[50]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); f[1]=1;f[2]=1;s=2; /* 数组元素与和变量赋初值 */ for(k=3;k<=n;k++) {f[k]=f[k-1]+f[k-2]; /* 实施递推 */ s+=f[k];} /* 实施求和 */ printf("F数列第%d项为:%ld\n",n,f[n]); printf("F数前%d项之和为:%ld\n",n,s); } 6.1.2 幂序列 /* 幂序列程序 */ main() {int k,n; long a,b,s,f[100]; printf("求数列的第n项与前n项和,请输入n:"); scanf("%d",&n); a=2;b=3;s=0; for(k=1;k<=n;k++) {if(a

else {f[k]=b;b=b*3;} /* 用3的幂给f[k]赋值 */ s+=f[k];} printf("数列的第%d项为:%ld\n",n,f[n]); printf("数列的前%d项之和为:%ld\n",n,s); } 6.1.3 双关系递推数列 /* 双关系2x+1,3x+1递推 */ main() {int n,i,j,h,m[1500]; m[1]=1; scanf("%d",&n); for(i=1;i<=n;i++) {m[2*i]=2*m[i]+1;m[2*i+1]=3*m[i]+1; for(j=i+2;j<=2*i+1;j++) {if(m[i+1]>m[j]) /* m(i+1)与m(j)比较 */ {h=m[j]; m[j]=m[i+1];m[i+1]=h;} /* 交换,使m(i +1)最小 */ if(m[i+1]==m[j]) m[j]=20000+j;}} /* 置m(j)为一出界大数,以避免重复 */ for(i=1;i<=n;i++) {printf(" %4d",m[i]);

java的基本数据类型有八种

java的基本数据类型有八种 各位读友大家好!你有你的木棉,我有我的文章,为了你的木棉,应读我的文章!若为比翼双飞鸟,定是人间有情人!若读此篇优秀文,必成天上比翼鸟! java的基本数据类型有八种四类八种基本数据类型1. 整型byte(1字节)short (2个字节)int(4个字节)long (8个字节)2.浮点型float(4个字节)double(8个字节)3.逻辑性boolean(八分之一个字节)4.字符型char(2个字节,一个字符能存储下一个中文汉字)基本数据类型与包装类对应关系和默认值short Short (short)0int Integer 0long Long 0Lchar Char '\u0000'(什么都没有)float Floa t0.0fdouble Double 0.0dboolean Boolean false 若某个类的某个成员是基本数据类型,即使没有初始化,java也会确保它获得一个默认值,如上所示。(这种初始化方法只是用于成员变量,不适用于局部变量)。jdk1.5支持自动拆装箱。可以将基本数据类型转换成它的包装类装箱Integer a = new Integer ();a = 100;拆箱int b = new Intger(100);一个字节等于8位,一个字节等于256个数,-128到127一个英文字母或一个阿拉伯数字就是一个字符,占用一个字节一个汉字两个字符,占用两个字节基本数据类型自动转换byte->short , char->int->longfloat->doubleint ->floatlong->double小可转大,大转小会失去精度。字符串与基本类型或其他类型间的转换⑴其它

lABVIEW关于数据类型的编辑:数组、簇和波形

数据类型:数组、簇和波形 .1概述 数组是同类型元素的集合。一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。可以通过数组索引访问其中的每个元素。索引的范围是0到n – 1,其中n是数组中元素的个数。图3-1所显示的是由数值构成的一维数组。注意第一个元素的索引号为0,第二个是1,依此类推。数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(如果需要用一个数组作为程序的数据源,可以选择Functions?Array?Array Constant,将它放置在流程图中。然后再在数组框中放置数值常量、布尔数还是字符串常量。下图显示了在数组框放入字符串常量数组的例子。左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。 图3-1数组的创建 在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然它们

c语言数组例题

#include int prime(int c) { inta,b=1; for(a=2;a int *hs(int a[3][2]) {inti,j,s[3],*p=s; s[0]=a[0][0];s[1]=s[2]=1; for(i=0;i<3;i++) for(j=0;j<2;j++) {if(s[0]

return 0; } 3.源代码为: #include voidhanshu(char *s) { while(*s) { if(*s>='A'&&*s<='Z') *s+=32; else if(*s>='a'&&*s<='z') *s-=32; *s++; } } void main() { char s[]="shaHUAHDJhhduahNBUahujJAWDhuwh8u"; hanshu(s); printf("改写后的字符串为:\n"); puts(s); } 4.源代码为: #include int add(int n) { int s=0; if(n==0) return 0; if(n==1) s=1; else s=n+add(n-1); return s; } void main() { intk,i; printf("输入一个整数:\n"); scanf("%d",&i); k=add(i); printf("%d累加的结果为:%d\n",i,k); } 测试数据为:4 运行结果为:10

数据类型转换

数据类型转换 一、隐式类型转换 1)简单数据类型 (1)算术运算 转换为最宽的数据类型 eg: [cpp] view plain copy #include using std::cout; using std::endl; int main(int argc, char* argv[]) { int ival = 3; double dval = 3.14159; cout << ival + dval << endl;//ival被提升为double类型 return 0; } 其运行结果: 6.14159 int main(int argc, char* argv[]) { 010D17D0 push ebp 010D17D1 mov ebp,esp 010D17D3 sub esp,0DCh 010D17D9 push ebx 010D17DA push esi 010D17DB push edi 010D17DC lea edi,[ebp-0DCh] 010D17E2 mov ecx,37h 010D17E7 mov eax,0CCCCCCCCh 010D17EC rep stos dword ptr es:[edi] int ival = 3; 010D17EE mov dword ptr [ival],3 double dval = 3.14159; 010D17F5 movsd xmm0,mmword ptr [__real@400921f9f01b866e (010D6B30h)]

010D17FD movsd mmword ptr [dval],xmm0 cout << ival + dval << endl;//ival被提升为double类型 010D1802 mov esi,esp 010D1804 push offset std::endl > (010D1064h) 010D1809 cvtsi2sd xmm0,dword ptr [ival] 010D180E addsd xmm0,mmword ptr [dval] 010D1813 mov edi,esp 010D1815 sub esp,8 010D1818 movsd mmword ptr [esp],xmm0 010D181D mov ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (010D90A8h)] 010D1823 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A0h)] 010D1829 cmp edi,esp 010D182B call __RTC_CheckEsp (010D111Dh) 010D1830 mov ecx,eax 010D1832 call dword ptr [__imp_std::basic_ostream >::operator<< (010D90A4h)] 010D1838 cmp esi,esp 010D183A call __RTC_CheckEsp (010D111Dh) return 0; 010D183F xor eax,eax } 010D1841 pop edi } 010D1842 pop esi 010D1843 pop ebx 010D1844 add esp,0DCh 010D184A cmp ebp,esp 010D184C call __RTC_CheckEsp (010D111Dh) 010D1851 mov esp,ebp 010D1853 pop ebp 010D1854 ret (2)赋值 转换为被赋值对象的类型,但不会改变赋值对象的数据类型。 eg: [cpp] view plain copy #include

c语言数组典型试题设计含答案

一.选择题(2*20) 【题1】在C 语言中,引用数组元素时,其数组下标的数据类型允许是。A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 【题2】以下对一维整型数组a 的正确说明是。 A)int a(10); B)int n=10,a[n]; C)int n; D)#define SIZE 10 scanf(“%d”,&n); int a[SIZE]; int a[n]; 【题3】若有说明:int a[10];则对a 数组元素的正确引用是。 A)a[10] B)a[3.5] C)a(5) D)a[10-10] 【题4】在C 语言中,一维数组的定义方式为:类型说明符数组名; A)[整型常量表达式] B)[整型表达式] C)[整型常量] 或[整型表达式] D)[常量] 【题5】以下能对一维数组a 进行正确初始化的语句是。 A)int a[10]=(0,0,0,0,0); B)int a[10]={}; C)int a[]={0}; D)int a[10]=”10*1”; 【题6】以下对二维数组a 的正确说明是。 A)int a[3][]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); 【题7】若有说明:int a[3][4];则对a 数组元素的正确引用是。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) 【题8】若有说明:int a[3][4];则对a 数组元素的非法引用是。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] 【题9】以下能对二维数组a 进行正确初始化的语句是。 A)int a[2][]={{1,0,1},{5,2,3}}; B)int a[][3]={{1,2,3},{4,5,6}}; C)int a[2][4]={{1,2,3},{4,5},{6}}; D)int a[][3]={{1,0,1},{},{1,1}}; 【题10】以下不能对二维数组a 进行正确初始化的语句是。 A)int a[2][3]={0}; B)int a[][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6};

C++基本数据类型转换

atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include 定义函数 doubleatof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。 返回值 返回转换后的浮点型数。 附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include main() { char *a=”-100.23”; char *b=”200e-2”; float c; c=atof(a)+atof(b); printf(“c=%.2f\n”,c); } 执行 c=-98.23 atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul 表头文件 #include

定义函数 intatoi(const char *nptr); 函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 返回值 返回转换后的整型数。 附加说明 atoi()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例 /* 将字符串a 与字符串b转换成数字后相加*/ #include mian() { char a*+=”-100”; ch ar b*+=”456”; int c; c=atoi(a)+atoi(b); printf(c=%d\n”,c); } 执行 c=356 atol(将字符串转换成长整型数) 相关函数 atof,atoi,strtod,strtol,strtoul 表头文件 #include 定义函数 longatol(const char *nptr); 函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 返回值 返回转换后的长整型数。 附加说明 atol()与使用strtol(nptr,(char**)NULL,10);结果相同。 范例

相关文档
最新文档