int c=f(&a[3],3); 这句什么int64 什么意思思?请解释一下

解释一下#include&stdio.h& int f(int n); main() {int a=3,s; s=f(a);s=s+=(a);printf(&%d\n&,s); } f(in_百度知道
解释一下#include&stdio.h& int f(int n); main() {int a=3,s; s=f(a);s=s+=(a);printf(&%d\n&,s); } f(in
其他类似问题
其他3条回答
因为是值传递 S的值不会因为用f(a)函数而改变,默认为0;a=3;s=s+=a;意思是s=s+a;最后打印出s的值为多少······但是你这题没有写完吧??f(int a)的定义都没有看见 只有声明
恩,是的。但是不知道是怎么运行的。可以帮忙解析一下吗?#include&stdio.h&int f(int n);main(){int a=3,s;s=f(a);s=s+=(a);printf(&%d\n&,s);}f(int n){static int a=1;n+=a++;}
char a[]=&369&,*p=a;
int s=0,t=1;
while(*++p) t*=10;
//这里的while(*++p)是简写形式,它等价于while(*++p!=0)又等价于
while(*++p!='\0')。因为&*&和&++&的优先级相同,而且是自由向左结合,
p先加1再指向a数组,所以在这条语句中刚开始p是指向a[1]的也就是6.
所以当while循环结束时,t=100,而不是1000,p指向a[3]也就是'\0'//
//p--使得p又重新指向a数组的a[2]=9//
//while(t)也是一个简写的形式,相当于while(t!=0)// {
s+=(*p-'0')*t;
//注意这句话的理解,你的疑惑就是在这里了。下面我来帮你解释清楚//
首先要明白字符型数据的相加减实质上是字符在ASCLL码表上对应的ASCLL
值的相加减,而不是简单的直接拿字符来做相加减运算。s+=(*p-'0')*t;
这句话开始p是指向a[2],a[2]存储的是字符'9'。'9'对应的ASCLL值是57。
字符'0'对应的ASCLL值是48。
所以s+=(*p-'0')*t=s+(*p-'0')*t=0+(57-48)*。
任意一个字符型数据的数字与字符'0'相减后的结果就是这个数字的本身了。
也就是说字符'9'-'0'是等于 int型的9.也就是对char做了一个转换。(自己理解)
t/=10;}printf(&%d\n&,s); // 所以输出的s当然就是963了//}需要更正的是t的值是100而不是1000,楼上的回答不正确
char a[]=&369&,*p=a;
int s=0,t=1;
while(*++p) t*=10;
//这里的while(*++p)是简写形式,它等价于while(*++p!=0)又等价于
while(*++p!='\0')。因为&*&和&++&的优先级相同,而且是自由向左结合,
p先加1再指向a数组,所以在这条语句中刚开始p是指向a[1]的也就是6.
所以当while循环结束时,t=100,而不是1000,p指向a[3]也就是'\0'//
//p--使得p又重新指向a数组的a[2]=9//
//while(t)也是一个简写的形式,相当于while(t!=0)// {
s+=(*p-'0')*t;
//注意这句话的理解,你的疑惑就是在这里了。下面我来帮你解释清楚//
首先要明白字符型数据的相加减实质上是字符在ASCLL码表上对应的ASCLL
值的相加减,而不是简单的直接拿字符来做相加减运算。s+=(*p-'0')*t;
这句话开始p是指向a[2],a[2]存储的是字符'9'。'9'对应的ASCLL值是57。
字符'0'对应的ASCLL值是48。
所以s+=(*p-'0')*t=s+(*p-'0')*t=0+(57-48)*。
任意一个字符型数据的数字与字符'0'相减后的结果就是这个数字的本身了。
也就是说字符'9'-'0'是等于 int型的9.也就是对char做了一个转换。(自己理解)
t/=10;}printf(&%d\n&,s); // 所以输出的s当然就是963了//}需要更正的是t的值是100而不是1000,楼上的回答不正确
printf的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在C语言中,%d,%c,%f都是什么意思,请详细的说一下,谢谢了
在C语言中,%d,%c,%f都是什么意思,请详细的说一下,谢谢了 5
printf函数调用的一般形式printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用
printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为:
printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。
格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%c”表示按字符型输出等。后面将专门给予讨论。非格式字符串在输出时原样照印,在显示中起提示作用。
输出表列中给出了各个输出项, 要求格式字符串和各输出项在数量和类型上应该一一对应。void
main(){int a=88,b=89;printf("%d
%d\n",a,b);printf("%d,%d\n",a,b);printf("%c,%c\n",a,b);printf("a=%d,b=%d",a,b);}a&--8,b&--89
printf("%d
%d\n",a,b);printf("%d,%d\n",a,b);printf("%c,%c\n",a,b);printf("a=%d,b=%d",a,b);本例中四次输出了a,b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d
之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号,
因此输出的a,b值之间加了一个逗号。第六行的格式串要求按字符型输出 a,b值。第七行中为了提示输出结果又增加了非格式字符串。二、格式字符串在Turbo C中格式字符串的一般形式为:
[标志][输出最小宽度][.精度][长度]类型
其中方括号[]中的项为可选项。各项的意义介绍如下:1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:表示输出类型的格式字符       格式字符意义d
                以十进制形式输出带符号整数(正数不输出符号)o
                以八进制形式输出无符号整数(不输出前缀O)x
                以十六进制形式输出无符号整数(不输出前缀OX)u                 以十进制形式输出无符号整数f
                以小数形式输出单、双精度实数e                 以指数形式输出单、双精度实数g
                以%f%e中较短的输出宽度输出单、双精度实数c                 输出单个字符s
                输出字符串2.标志标志字符为-、+、#、空格四种,其意义下表所示: 标志格式字符      标 志 意 义-          结果左对齐,右边填空格+
         输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号#          对c,s,d,u类无影响;对o类,
在输出时加前缀o         对x类,在输出时加前缀0x;对e,g,f
类当结果有小数时才给出小数点3.输出最小宽度用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出,
若实际位数少于定义的宽度则补以空格或0。4.精度精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,
则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。5.长度长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。void main(){int a=15;float b=138.3576278;double
c=5687;char
d='p';printf("a=%d,%5d,%o,%x\n",a,a,a,a);printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);printf("c=%lf,%f,%8.4lf\n",c,c,c);printf("d=%c,%8c\n",d,d);}
a&--15b&--138.3576278c&--5687d&--'p'main(){int
a=29;float b=;double c=32;char
d='h';printf("a=%d,%5d,%o,%x\n",a,a,a,a);printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);printf("c=%lf,%f,%8.4lf\n",c,c,c);printf("d=%c,%8c\n",d,d);}
本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。
第八行中以四种格式输出实型量b的值。其中“%f”和“%lf
”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf
”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“%bc
”指定输出宽度为8故在输出字符p之前补加7个空格。使用printf函数时还要注意一个问题,
那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右, 也可从右到左。Turbo
C是按从右到左进行的。如把例2.13改写如下述形式:void main(){int
i=8;printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);}
i&--8这个程序与例2.13相比只是把多个printf语句改一个printf
语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行
的。在式中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7。
再对“-i++”项求值得-7,然后i自增1后为8。再对“i--”项求值得8,然后i再自减1后为7。再求“i++”项得7,然后I再自增1后为8。
再求“--i”项,i先自减1后输出,输出值为7。 最后才求输出表列中的第一项“++i”,此时i自增1后输出8。但是必须注意,
求值顺序虽是自右至左,但是输出顺序还是从左至右, 因此得到的结果是上述输出结果。字符输出函数putchar
函数putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。其一般形式为: putchar(字符变量)
例如:putchar('A'); 输出大写字母Aputchar(x); 输出字符变量x的值putchar('\n'); 换行
对控制字符则执行控制功能,不在屏幕上显示。 使用本函数前必须要用文件包含命令:#include&stdio.h&void main(){char
a='B',b='o',c='k';putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');putchar(a);putchar(b);putchar('\n');putchar(b);putchar(c);}数据输入语句C语言的数据输入也是由函数语句完成的。
本节介绍从标准输入设备—键盘上输入数据的函数scanf和getchar。 scanf函数
scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。一、scanf函数的一般形式
scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为:
scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,
也就是不能显示提示字符串。地址表列中给出各变量的地址。 地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b
的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。
应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。 变量的地址和变量值的关系如下:
&a---&a567 a为变量名,567是变量的值,&a是变量a的地址。在赋值表达式中给变量赋值,如: a=567
在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。
这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。void
main(){int a,b,c;printf("input
a,b,c\n");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d",a,b,c);}
注意&的用法!在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入7、8、9后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,
因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。如: 7 8 9或789格式字符串格式字符串的一般形式为: %[*][输入数据宽度][长度]类型
其中有方括号[]的项为任选项。各项的意义如下:1.类型表示输入数据的类型,其格式符和意义下表所示。格式    字符意义 d
    输入十进制整数o     输入八进制整数x     输入十六进制整数u     输入无符号十进制整数f或e   
输入实型数(用小数形式或指数形式)c     输入单个字符s
    输入字符串2.“*”符用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。 如 scanf("%d %*d
%d",&a,&b);当输入为:1 2 3
时,把1赋予a,2被跳过,3赋予b。3.宽度用十进制整数指定输入的宽度(即字符数)。例如:
scanf("%5d",&a);输入:只把12345赋予变量a,其余部分被截去。又如:
scanf("%4d%4d",&a,&b);输入:将把1234赋予a,而把5678赋予b。4.长度长度格式符为l和h,l表示输入长整型数据(如%ld)
和双精度浮点数(如%lf)。h表示输入短整型数据。使用scanf函数还必须注意以下几点:a. scanf函数中没有精度控制,如:
scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。b.
scanf中要求给出变量地址,如给出变量名则会出错。如
scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。c.
在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。d.
在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:scanf("%c%c%c",&a,&b,&c);输入为:d
e f则把'd'赋予a, 'f'赋予b,'e'赋予c。只有当输入为:def时,才能把'd'赋于a,'e'赋予b,'f'赋予c。
如果在格式控制中加入空格作为间隔,如 scanf ("%c %c
%c",&a,&b,&c);则输入时各数据之间可加空格。void
main(){char a,b;printf("input character
a,b\n");scanf("%c%c",&a,&b);printf("%c%c\n",a,b);}
scanf("'C14F14%c%c",&a,&b);printf("%c%c\n",a,b);
由于scanf函数"%c%c"中没有空格,输入M N,结果输出只有M。而输入改为MN时则可输出MN两字符,见下面的输入运行情况: input
character a,bMNMNvoid main(){char
a,b;printf("input character a,b\n");scanf("%c
%c",&a,&b);printf("\n%c%c\n",a,b);}scanf("%c
%c",&a,&b); 本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。e.
如果格式控制串中有非格式字符则输入时也要输入该非格式字符。例如:scanf("%d,%d,%d",&a,&b,&c);
其中用非格式符“ , ”作间隔符,故输入时应为: 5,6,7又如:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);则输入应为a=5,b=6,c=7g.
如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。void main(){int
a;printf("input a
number\n");scanf("%d",&a);printf("%ld",a);}由于输入数据类型为整型,
而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下: void
main(){printf("input a long
integer\n");scanf("%ld",&a);printf("%ld",a);}运行结果为:input
a long integer 当输入数据改为长整型后,输入输出数据相等。
相关知识等待您来回答
学习帮助领域专家
当前分类官方群专业解答学科习题,随时随地的答疑辅导c语言,int 10h,视频中断什么意思?高人能不能具体解释一下,用法呢?一定采纳答案,送上20财富币_百度知道
c语言,int 10h,视频中断什么意思?高人能不能具体解释一下,用法呢?一定采纳答案,送上20财富币
提问者采纳
int 10h是DOS的一个中断,可以理解为一个函数或过程,一般是用于在屏幕肠法斑盒职谷办贪暴楷上显示字符或图型,具体用法相当复杂(在某几个寄存器设置相应的数值,然后执行调用),需要找一本“DOS中断调用”相关的资料来查看。C语言一般只在库文件里面涉及低级显示的汇编部分用到这个命令,一般的C学习者不需要关心这些具体的实现细节。
提问者评价
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁{int k=0;char c='A';
{ switch (c++) 输出结果为多少?请解释下,本人新手,希望不吝赐教。_百度知道
{int k=0;char c='A';
{ switch (c++) 输出结果为多少?请解释下,本人新手,希望不吝赐教。
{int k=0;char c=‘A’;
{ switch (c++)
{case‘A’:k++;break;case‘B':k--;
case‘C’:k+=2;break;
case‘D’:k=k%2;continue;
case‘E’:k=k*10;break; default:k=k/3;}
k++;}while (c&‘G’);
p鸡工惯继甙荒轨维憨哩rintf(“%d\n&,k);}
提问者采纳
输出结果:4首先 c=‘A’,k=0: =& k++,k=1 =&
=& c++ =& c=B =& k++,k=2然后 c=
B, k=2: =& k--,k=1 =& k+=2,k=3 =&
=& c++ =& c=C =& k++,k=4然后 c=
C, k=4: =& k+=2,k=6 =&
=& c++ =& c=D =& k++,k=7然后 c=
D, k=7: =& k=k%2,k=1 =&
=& c++ =& c=E =& k++,k=2然后 c=
E, k=2: =& k=k*10,k=20 =&
=& c++ =& c=F =&
k++,k=21然后 c=
F, k=11:=& k=k/3,k=3
=& c++ =& c鸡工惯继甙荒轨维憨哩=G =& k++,k=4 因为 c=G 不满足 while (c&'G') 循环条件,所以循环结束输出 4
提问者评价
其他类似问题
不吝赐教的相关知识
其他1条回答
c='A',c++,CASE 'B'.K--,K=K+2,K=1;C='B',C++,CASE C,K=K+2;K=3;C='C',C++,CASE D,K=K%2,K=1;C='D',C++,CASE E,K=K*10;K=10C='E',C++,DEFAULT K=K/3;K=3;C='G' printf(&%d\n&,k);最后输出3
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 329|回复: 5|
在线时间1253 小时经验477 威望0 性别保密最后登录注册时间阅读权限30UID1615407积分477帖子精华0分享0
EH中级, 积分 477, 距离下一级还需 623 积分
积分排行2320帖子精华0微积分0
(1.77 KB, 下载次数: 11)
20:47 上传
下载次数: 11
在线时间146 小时经验60 威望0 性别女最后登录注册时间阅读权限20UID1981323积分60帖子精华0分享0
EH初级, 积分 60, 距离下一级还需 290 积分
积分排行3000+帖子精华0微积分0
点在公式结果的单元格上按F9键你就明白了。
在线时间1253 小时经验477 威望0 性别保密最后登录注册时间阅读权限30UID1615407积分477帖子精华0分享0
EH中级, 积分 477, 距离下一级还需 623 积分
积分排行2320帖子精华0微积分0
爱你宝贝cc 发表于
点在公式结果的单元格上按F9键你就明白了。
我想要的是解释一下这个公式,
在线时间10466 小时经验20381 威望12 最后登录注册时间阅读权限100UID18473积分20981帖子精华0分享10
管理以下版块
积分排行12帖子精华0微积分1
这是由于你INDEX引用A:A所决定的。你引用整个A列,为保证取到第3行至第14行的信息,而INT(RAND()*11)是随机产生0,1,2,3,……,10的数,再+3就能保证起始行在第3行了。同时你这:INT(RAND()*11+3),只能产生:3,4,5,6,……,13,如果保证取到第14行的数据,公式还需修改成:INT(RAND()*12+3) 才对。
还有这随机会产生重复数。
21:41 上传
下载次数: 1
3.92 KB, 下载次数: 1
本帖评分记录鲜花
总评分:&鲜花 + 2&
在线时间10466 小时经验20381 威望12 最后登录注册时间阅读权限100UID18473积分20981帖子精华0分享10
管理以下版块
积分排行12帖子精华0微积分1
这样引用数据,就不需需+3了。=INDEX($A$3:$A$14,INT(RAND()*13))复制代码
在线时间1303 小时经验2553 威望1 性别保密最后登录注册时间阅读权限70UID2550763积分2553帖子精华0分享0
EH铁杆, 积分 2553, 距离下一级还需 647 积分
积分排行382帖子精华0微积分0
公式中的RAND()*11+3,是RAND()*(14-3)+3的简化式。其意思是,点击F9求3到13之间随机数值。
INT(RAND()*11+3),是求3(含3)到13(含13)之间随机整数。
INDEX(A:A,INT(RAND()*11+3)) ,是查找A列中某行D的数据,其行数等于INT(RAND()*11+3)计算值。
积分≥4700即可申请
金牌优秀管理者
金牌优秀管理者勋章No.2
金牌优秀管理者
金牌优秀管理者勋章No.1
优秀管理者
优秀管理者勋章No.1
金牌优秀会员
金牌优秀会员奖章No.2
金牌优秀会员
金牌优秀会员奖章No.1
优秀会员奖章No.2
优秀会员奖章No.1
关注我们,与您相约微信公众平台!
Copyright 1999 - 2017 Excel Home. All Rights Reserved.本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!
Powered by
本站特聘法律顾问:徐怀玉律师 李志群律师 &&

我要回帖

更多关于 int64 什么意思 的文章

 

随机推荐