c语言输出菱形这个程序的输出结果为什么是3,3,4?

c语言中float输出的结果从左往右有效数字是6位,但是我编写这个小程序后怎么就只有3位有效?望高手解答。_百度知道
c语言中float输出的结果从左往右有效数字是6位,但是我编写这个小程序后怎么就只有3位有效?望高手解答。
void main(){ float a=78;n&quot,a).h&gt#include&stdio,为什么;%f\ printf(&quot.88;.879997表示很无语;}输出结果却是78
提问者采纳
11指数需要减去127才是真正的指数 -
= 想要搞清楚这个问题,是10进制的61.001111整数部分1001110转换10进制为78小数部分0,后面八位为指数位最后23位为尾数110.11*(2^6)=1001110,你需要了解float类型在内存中的存储结构符号位|指数|尾数78.96875所以你在输出是按小数点后六位输出为78,1.001111转换10进制为0.88在内存中的结构为10 第一位为符号位
我试过78.77错误,78.777正确,78.99错误 仿佛只要小数点后前两位一样就出错,但是78.8899正确
输入78.80 78.82 也正确,但是输入78.81就错误
输入78.8840也正确还有,您的解释看明白了,问下,在内存中的二进制显示如何才能用调试模式看出来?还有,书上写的是float精度是六位,这样岂不是不是六位了希望高手帮忙解决下上述两条问题。多谢
你可以自己写段代码,把float保存的内存片段按bit打印出来。
提问者评价
非常感谢,高手。多谢。
其他类似问题
float的相关知识
其他3条回答
指 78,再2进制化10进制.8799 有效数字6位。它不等于 78,有效数字精度到 6位.88,它含截断误差; 是因为 10进制化2进制,截断误差 在第7位。引入了截断误差
请问什么是截断误差,精度既然是六位,为什么只有3位准确?以及,怎样让输出的结果变为准确值?
十进制化二进制化不尽,(类似无限循环小数),float 数只有 二进制 32 位存放空间,存不下的部分就丢失了。这叫“截断”(尾巴没了)。精度六位,指 数的期望值与数的近似值的误差 在最右边,依次数去是第7位截断。而不是要写出6个一模一样的数来。这里 误差 fabs( 78.88 - 78.8799)
= 0.0001 ,当然,你可以用%.10f
显示更多位。变为“准确值”:用 math,h 里的函数,例如 地板,天花板 (看你需要)或自编4舍5入程序。。再要准确,你用 字符串存放。
单精度浮点型有效数字是7位
后面一般补齐6位小数楼主用的是VC6.0 吧
用TC2.0 试试 或许和软件对读数据的处理有关
具体原因我也不明白 帮不了你
zy im DB haha
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言程序输出结果_百度知道
c语言程序输出结果
int b ){int temp =b = temp , b ,a = b ,c=%d” ;p r i n t f ( ” a=%}int a = 1 ,b=%d” , a ,b=%d , b = 2 , b ) ;p r i n t f ( ” a=%d , c = 0 ;int main ( ) {int a = 3 , b = 4 , b ) ;swap ( a , c ) ;return 0 ;}输出什么?最好给出理由void swap ( int a
提问者采纳
在swap中;&#47,所以ab的值没有交换,另外局部变量和全局变量名字一致时;&#47,局部变量和全局变量名字一致时,取局部变量的值a=3
c=0;&#47a=4 b=3/由于swap是值传递
提问者评价
谢谢各位。最佳还是给又好又快的这位吧。
其他类似问题
按默认排序
其他5条回答
就是说把实参a,b=3a=3,b变量值是不会变的,b变量swap()函数对a,b=4,b但是在main函数里会被新的同名局部变量a,c=0理由如下,虽然声明了全局变量a,b所屏蔽,所以main()里内的a。swap(a,b)参数的传递方式是值传递的,b的值在函数调用的时候复制给swap()里a,b进行交换值的操作。由于是值传递输出 a=4
先调用 swap(a, b); 传递的会是 main 函数中局部声明的 a, b, 因为局部变量已经覆盖了全局的变量然后在 swap 函数里会交换形参 a, b 的值,于是会输出 a=4, b=3然后 swap 函数执行完后,回到 main 函数,打印出 a, b, c 的值,会输出 a=3, b=4, c=0因为 a 和 b 的值并未修改。c的值是全局变量的值。
首先,a b c为全局变量且分别为1,2,0在main函数里面对a b分别赋了3和4,以主函数的为准。执行swap(a,b)时对ab进行了交换,先输出void swap函数中的输出语句a=4,b=3但该函数没有反回值,所以主函数的a和b仍然为3和4,故又输出a=3,b=4,c=0总体输出如下:a=4,b=3 a=3,b=4,c=0
a,b,c 都是全局变量,可以被修改p r i n t f ( ” a=%d ,b=%d” , a , b ) ;a=4 ,b=3 p r i n t f ( ” a=%d ,b=%d ,c=%d” , a , b , c ) ;a=3,b=4 ,c=0
a=4 b=3//在swap中,局部变量和全局变量名字一致时,取局部变量的值a=3
c=0;//我上机运行了,和我想的一样,a ,b根本没有交换
c语言程序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁小弟实在不知道这个程序的输出怎么是“7 2 5 4 3 6”请大神帮助_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:277,176贴子:
小弟实在不知道这个程序的输出怎么是“7 2 5 4 3 6”请大神帮助收藏
#include&stdio.h&voidfun(int *a, int n){ inti,j,k,t;for(i=0;i&n-1;i+=2){ k=i;for(j=i;j&n;j+=2) if(a[j]&a[k]) k=j;t=a[i];a[i]=a[k];a[k]=t;}}intmain(){ intaa[10]={1,2,3,4,5,6,7},i;fun(aa,7);for(i=0;i&7;i++)printf(" %d,",aa[i]);printf("\n");return0;}
我分析的结果是7 2 7 4 7 6 7
谁能帮我解答一下!正确答案谁7 2 5 4 3 6 1标题答案少写了一位!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或您还未登陆,请登录后操作!
共有 3 位网友向您献上回答啦, 对答案满意?赶快给出你的好评,感谢他们吧!
aa是3*3的数组,初始化后是
执行if,则执行的是aa[0][1]=aa[0][0]+1
这时的aa是
printf语句相当于输出aa[0][0]为2。
执行else,则执行的是++p,效果是p原来指向aa[0][0],现在改为指向a[0][1]了。
printf语句相当于输出aa[0][1]为3。
循环结束。输出回车。
看到的结果为:
23(后面有个回车)
您的举报已经提交成功,我们将尽快处理,谢谢!
大家还关注
<a href="/b/5115877.html" target="_blank" title="C语言的问题 题目: 输入一个整数,判断是否是素数(只能被1和它本身整除的并且大于1的自然数)看看底下的编程对不对,错了要怎么改?
{int x=1,n,i;
scanf("%d",&n);
if (n==2) printf("是素数");
else for (i=2;iC语言的问题 题目: 输入一个整数,判断...
<a href="/b/5117025.html" target="_blank" title="看看程序哪错了啊 大家帮忙看看这个程序啊 错在哪啊
//5. 要求将字符数组s1中的数据全部拷贝到字符数组s2中,但要求s2中
//的每两个字符间都插入一个空格。如s1中字符串是"china\0",则字符数组s2为"c h i n a\0".
char s1[20],s2[40];
for(i=0;i<20;i++ )
if(j=i+i);
s2[j]=s1[i];
if(j=i+i+1);
s2[j]=' ';
for(j=0;j看看程序哪错了啊 大家帮忙看看这个程序啊...
<a href="/b/5117036.html" target="_blank" title="C的问题 大家帮忙看看这个程序啊 错在哪啊
//5. 要求将字符数组s1中的数据全部拷贝到字符数组s2中,但要求s2中
//的每两个字符间都插入一个空格。如s1中字符串是"china\0",则字符数组s2为"c h i n a\0".
char s1[20],s2[40];
for(i=0;i<20;i++ )
if(j=i+i);
s2[j]=s1[i];
if(j=i+i+1);
s2[j]=' ';
for(j=0;jC的问题 大家帮忙看看这个程序啊 错在哪...
<a href="/b/5117756.html" target="_blank" title="C程序高手帮忙 //6. 写一个字函数,从主函数中传进来一个字符数组作为参数,
//要求寻找此字符数组中最长且含有两个元音字母的单词。在主函数中输出该单词。
void search(char *a[],int n)
int m,i,j,k,count=0,len_of_word1=0,len_of_word2=0;
for(i=0;i<10;i++)
len_of_word1=strlen(a[i]);
len_of_word2=strlen(a[j]);
if(len_of_word1<len_of_word2)
k=len_of_word2;
for(m=0;n<k;m++)
if(a[m]='a'||a[m]='e'||a[m]='o'||a[m]='i'||a[m]='u')
char *a[10]={{'yes','trade','dog''fat','at','war','element','read','noy','parent'}};
search(a,n);
if(count=2)
for(m=0;mC程序高手帮忙 //6. 写一个字函数,...
<a href="/b/5127515.html" target="_blank" title="请大家帮忙..关于C++..很急的...谢谢了 题目是设计一个程序,使它可以连接两个字符串...
下面是我写的一个程序,写的是两个特定的字符川的连接,不知有哪位高手知道任意两个字符串的连接的程序怎么写,如果知道请写出来哈...我写的虽然没有错误,但怎么都没有执行结果,老师要求必须用C++做,所以请各位帮帮忙,晚辈感激不尽..
void main()
char*str1="abcd";
char*str2="ef";
strcat(str1,str2);
cout<请大家帮忙..关于C++..很急的......来源:本站原创
9:16:43【】
一、选择题(每小题1分,共40小题,共40分)1.算法的空间复杂度是指(&)。A.算法程序的长度B.算法程序中=的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间2.下列叙述中正确的是(&)。A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率3.简单的交换排序方法是(&)。A.快速排序B.选择排序C.堆排序D.冒泡排序4.关于结构化程序设计原则和方法的描述错误的是(&)。A.选用的结构只准许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用GOT0语句D.语言中若没有控制结构,应该采用前后一致的方法来模拟5.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和(&)。A.可重用性差B.安全性差C.非持久性D.冗余性6.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是(&)。A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.不强调模拟现实世界中的算法而强调概念7.对如下二叉树进行后序遍历的结果为( )。    A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(&)。A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程9.两个或两个以上模块之间关联的紧密程度称为(&)。A.耦合度B.内聚度C.复杂度D.数据传输特性10.下列描述错误的是(&)。A.继承分为多重继承和单继承B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D.类是具有共同属性、共同方法的对象的集合
11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。 A.DB包含DBS和DBMS B.DBMS包含DB和DBS C.DBS包含DB和DBMS D.没有任何关系 12.下列合法的声明语句是( )。 A.int_abc=50; B.double int=3+5e2.5; C.long do=1L: D.float 3_asd=3e-3; 13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是( )。 A.x &&Y B.x &=Y C.x‖y+z &&y-z D.!((x 14.若ch为char型变量,k为int型变量(已知字符a的ASCIl码是97),则执行下列语句后输出的结果为( )。 ch=’b’; k=10: printf( "%X,%o,",ch,ch,k); printf( "k=%%d\n",k); A.因变量类型与格式描述符的类型不匹配,输出无定值 B.输出项与格式描述符个数不符,输出为0值或不定值 C.62,142,k一%d D.62,142,k一%l0 15.有下列程序: fun(int X,int y){return(x+y);) main() { int a=1,b=2,c=3,sum;    sum=fun((a++,b++,a+b),c++);    printf( "%d\n",sum); } 执行后的输出结果是( )。 A.6 B.7 C.8 D.9 16.假定x和Y为double型,则表达式x=2,y—x+3/2的值是( )。 A.3.500000 B.3 C.2.000000 D.3.000000 17.有如下程序: main() {int x=1,a=0,b=0;    switch(x)    {    case 0:b++;    case l:a++;    case 2:a++;b++;    )    printf( "a=%d,b=%d\n",a,b); ) 该程序的输出结果是( )。 A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2 18.下列程序的输出结果是( )。 main() {int i=1,j=2,k=3;    if(i++= =1 &&(++j= =3= =‖k++= =3))    printf( "%d%d%d\n",i,J,k); ) A.1 2 3 B.2 3 4 C.2 2 3 D.2 3 3 19.下列程序的输出结果是( )。 #include main() { int a=0,i;    for(i=1;i &5;i++)    { switch(i)    { case 0:    case 3:a+=1;    case l:    case 2:a+=2;    default:a+=3;    )    printf( "%d",i); ) A.19 B.1 C.6 D.8 20.有以下程序: main() {int X,i;    for(i=1;i &=50;i++)    {x=i;    if(X%2=O)    if(x%3=O)    if(X%7=0) .    printf( "%d,i)";    ) ) 输出结果是( )。 A.28 B.27 C.42 D.41
21.以下程序的输出结果是(&)。main(){int&a[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;  &for(i=1;i&&3;i++)  &for(j=0;j&&=i;j++)s+=a[i][j];  &printf(&"%d\n",s);}A.18B.19C.20D.2122.有下列程序:main(){&int&k=5;  &while(--k)&printf(&"%d",k=1);  &printf(&"/n");)执行后的输出结果是(&)。A.1B.2C.4D.死循环23.若有定义:“int&a[2][3];”,则对a数组的第i行第J列元素的正确引用为(&)。A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j24.下列能正确进行字符串赋值的是(&)。A.char&s[5]={&"ABCDE"};B.char&s[5]={’A’,’B’,’C’,’D’,’E’};&、C.char*S;S=&"ABCDE";D.char*s;printf(&"%《",s);25.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。  struct&node{har&data;struct&node*next;)*P,*q,*r;现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是(&)。A.q-:&&next=r-&next;p--:&next=r;rm:&next=q;B.q-:&&next=r;q-&next=r-&next;r-&next=q;C.q-:&&next=r-&next;r-&next=q;p-&next=r;D.q-:&&next=q;p-&next=r;q-&next=r-&next;26.有下列程序:main(){int&i,j,x=0;for(i=0,i&&2;i++){x++;for(j=0;j&&=3;j++){if(j%2)continue;  &x++:  &)  &x++:  &}  &printf(&"x=%d\n"x);}程序执行后的输出结果是(&)。A.x=4B.x=8C.x=6D.x=1227.有下列程序:int&funl(double&a){return&a*=a;}&、int&fun2(double&x,double&y){double&a=0,b=0;  &a=funl(x);b=funl(y);return(int)(a+b);)main(){double&w;w=fun2(1.1,2.0),……}程序执行后变量w中的值是(&)。&、A.5.21&B.5&C.5.0&D.0.028.有下列程序:main(){int&i,s=0,t[]={1,2,3,4,5,6,7,8,9};  &for(i=0;i&&9;i+=2)s+=*(t+i);  &printf(&"%d\n",s);}程序执行后的输出结果是(&)。A.45B.20C.25D.3629.有下列程序:int&fun(int&n){if(n=&=1))return&l;  &else  &return(n+fun(n-1)):}main(){&int&x;  &seanf(&"%d",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量x输入l0,程序的输出结果是(&)。A.55B.54C.65D.4530.有下列程序:int&fun(int&x[],int&n){&static&int&sum=0,i;  &for(i=0;i  &return&sum;}main(){int&a[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;  &s=fun(a,5)+fun(b,4);printf(&"%d\n",s);程序执行后的输出结果是(&)。&、A.45B.50C.6031.有下列程序: main() f char*P[]={ "3697","2584");    int i,j;long num=0;    for(i=0;i &2;i++)    {j=0;    while(p[i][j]!=’\0’)    {if((p[i][j]-t\0’)%2)num=10*num+p[j][j]-’0’;    j+=2;    )    )    printf( "%d\n",num); ) 程序执行后的输出结果是( )。 A.35 B.37 C.39 D.3975 32.以下程序的输出结果是( )。 main() { char st[20]= "hell0\O\t\\\”;    printf( "%d%d\n",strlen(st),sizeof(st)); } A.9 9 B.5 20 C.13 20 D.20 20 33.若有下的定义: "int t[3][2];",能正确表示t数组元素地址的表达式是( )。 A. &t[3][2] B.t[3] C.t[l] D.t[2][2] 34.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是( )。 A.文件开始 B.文件末尾 C.文件当前位置 D.以上都不对 35.下述程序的输出结果是( )。 #include main() {int i;    for(i=1;i &=10;i++)    {if(i*i &=20)&&(i*i&=lOO))       }    printf( "%d\n",i*i); ) A.49 B.36 C.25 D.64 36.若有定义“int b[8],*p=b;”,则p+6表示( )。 A.数组元素b[6]的值 B.数组元素b[6]的地址 C.数组元素b[7]的地址 D.数组元素b[0]的值加上6 37.设变量已正确定义,则以下能正确计算f=n!的程序是( )。 A.f=0; for(i=1;i &=n;i++)f*=i; B.f=1;for(i=1;i C.f=1;for(i=n;i &1;i++)f*=i; D.f=1;for(i=n;i &=2;i--)f*=i; 38.下述程序执行的输出结果是( )。 #include main() {char a[2][4]; ,    strcpy(a。 "are");strcpy(a[1],"you");    a[o][3]=’ &’;    printf( "%s\n",a); ) A.are &you B.you C.are D. & 39.设x=011050,则x=x&01252的值是( )。 A.1000 B.1001 C.0010 D.1000 40.在“文件包含,,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是( )。 A.直接按系统设定的标准方式搜索目录 B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索 C.仅仅搜索源程序所在目录 D.仅仅搜索当前目录 二、基本操作题(共18分) 请补充函数proc(),该函数的功能是计算下面公式SN的值: SN=1+1/3十4/5+...+2N-1/SN-1 例如,当N=20时,SN=29.031674。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。    试题程序:    #include    #include    #include    double proc(int n)    {    double s=1.0,sl=0.0;    int k;    for(【1】;k &=n;k++)    {    sl=S;    【2】    }    return 【3】 ;    )    void main()    {    int k=0:    double sum;    system( "CLS");    printf( "\nPlease input N=");    scanf( "%d",&k);    sum=proc(k);    printf( "\nS=%If",sum);    )
三、程序改错题(共24分) 下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值: Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn) 例如,n中的值为l0,则应输出0.817962。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:    #include    #include    #include    double proc(int n)    {    double y=1.0;    f|****found****    int J=1; .    int i;    for(i=2;i &=n;i++)    {    j=-l*j;//****found****    y+=1/(i*i);    )    return(y);    )    void main()    {    int n=10:    system( "CLS"):    printf( "\nThe result is%lf\n",proc(n));    ) 四、程序设计题(共18分) 编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:    #include    #include    #include    char*proc(char(*a)[81],int num)    {    )    void main()    {    char ss[l0][81],*max;    int n,i=0;    printf( "输入若干个字符串:");    gets(ss[i]);    puts(ss[i]);    while(!strcmp(ss[i], "****")= =0)    {    i++:    gets(ssEi]);    puts(ss[i]);    )    n=i:    max=proe(SS,n);    printf( "\nmax=%s\n",max); } 参考答案及专家详解
一、选择题 1.D。【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。 2.D。【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。用不同的存储结构,其处理的效率是不同的。 3.D。【解析】所谓的交换排序方法是指借助数据元素之间的互相交进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。 4.C。【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用G0T0语句。其他三项为结构化程序设计的原则。 5.D。【解析】文件系统所管理的数据文件基本上是分散、相互独立的。相对于数据库系统,以此为基础的数据处理存在3个缺点:数据冗余大、数据的不一致性、程序与数据的依赖性强。 6.C。【解析】面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。 7.D。【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。 8.B。【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。 9.A。【解析】模块的独立性是指每个模块保证完成系统要求的独立功能,并且与其他模块的联系少且接口简单。衡量软件的模块独立性有内聚性和耦合性两个定性度量标准。耦合性是模块间互相连接紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,以利于提高模块的独立性。 10.C。【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。 11.C。【解析】数据库系统由如下5个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。其中DB(DataBase)即数据库,是统一管理的相关数据的集合DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。由以上可知,选C为正确答案。 12.A。【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项d0是C语言的一个关键字。D选项标识符只能以字母或下划线开始。 13.D。【解析】本题考查逻辑运算符的使用。当“ &&”的两个运算对象都是逻辑l时,表达式返回值才是1;“‖”的两个运算对象至少有一个是逻辑1时,表达式返回值也是l,x14.C。【解析】第l个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%o”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或o);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。 15.C。【解析】函数fun(int x,int y)的功能是返回x+Y的值。在主函数中,变量a,b,c的初始值分别为 1,2,3。因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。 16.D。【解析】在x=2,y=x+3/2中,3/2=1,2+1=3,因此表达式的值为3,因为X,y为double型变量,故选择D选项。 17.A。【解析】当X为1时,执行case l,a自加等于l,因为case l后没有break,接着执行case 2,此时a的值为2,b自加为1,故选择A选项。 18.D。【解析】本题考查自增运算符“++”、逻辑与运算符“ &&”和逻辑或运算符“‖”。自增运算符“++”出现在变量之前,表示先使用变量的值加1,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“‖”只要一个值为1,值就为l。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为l;1与任何数都为进行或(1 1)运算,结果都为1,因此k一3的表达式i++是先运算后自加,因此运算时i为 1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。 19.A。【解析】本题考查switch语句。当i=1时,执行case l,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case 2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case 3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=l9,结束循环。 20.C。【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。 A。【解析】循环的作用是求行下标从l到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。 22.A。【解析】在程序语句中,k的初始值为5,进行第l次while循环后,k自减l为4,非0,执行循环体里的printf语句,输出k,此时k的值变为l。程序执行第2次循环时,k自减l变为0,为假,退出while循环语句。所以程序的最后结果为l。 23.A。【解析】通过地址来引用数组元素的方法有下列5种: (1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+j);(4)*(a[i][j]);(5)( &a[o][0]+3*i+j)。故A正确。 24.C。【解析】选项A、B的空间不够;字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出 字符,不能输入字符串。 25.D。【解析】由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r- &next=q,这时r指向的节点为q;p-&next=r,这时P指向的节点为r;q-&next:r-&next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。 26.B。【解析】在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量J的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加l两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。 27.C。【解析】子函数funl(double a)的功能是返回a的平方值的整数部分。子函数fun2(double X, double y)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。又因为题中变量W的定义为double型,函数fun(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.0。 28.c。【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是l+3+5+7+9=25,即变量S的值等于25。 29.A。【解析】本题在函数int fun(int n)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。因而在主函数中调用x=fun(x)时,当输入10赋给变量X时,递归调用的过程为 fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7) =10+9++8+7+fun(6)=10+9++8+7+6+fun(6) =10+9++8+7+6+5+fun(4) =10+9++8+7+6+5+4+fun(3) =10+9++8+7+6+5+4+3+fun(2) =10+9++8+7+6+5+4+3+2+fun(1) =10+9++8+7+6+5+4+3+2=55 30.C。【解析】在函数int fun(int x[],int n)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数int fun(int x[],int n)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。 31.D。【解析】执行第一次for循环时,用表达式p[i][J]!=’\o’来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-’\o’)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。 32.B。【解析】从题目中可知,’\O’、’\t’、’\\’分别为一个字符,而sizeof是求字节个数的函数,其中包括’\O’占的字节,strlen函数是求数组长度的函数;其以’\0’结束,因此strlen的值为5,sizeof的值为20。 33.C。【解析】数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项c中表示的是第一个的首地址;选项D表示的为其元素的值,并不是地址。 34.B。【解析]SEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。 35.C。【解析】当if执行到第一个满足(i*i &=20)&&(i*i&=100)这个条件的i出现时,通过break语句跳出循环,执行下面的prinlf语句。 36.B。【解析】指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中p+6指的是将指针向后移动了6个存储单元,即指向b[6],存放的是b[6]的地址。 37.D。【解析】由n!的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以l,2,3,…,n,最后计算得到f=n!=0,所以选项A不正确。在选项B中,f的初值为l,在for循环语句中,f依次乘以l,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。 38.A。【解析]strcpy实现的功能是复制,该操作把are复制到a中,aE03 E33一’&’,且strcpy(aEl], "you")把you复制到a[l]中,故输出a为“are&you”。 39.A。【解析】本题主要考查按位与运算,x=Oll050的二进制形式为01000,Ol252的二进制形式为1010,两者相与得1000。 40.B。【解析】#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。 二、基本操作题程序填空题 【1】k=2【2】s+=(2*k一1)/sl【3】s 【解析】由题目中所给公式可知,多项武的第一项为1。变量s中存放多项式的和,其初始值为l。因此,循环从第二项开始,因此,【1】处填“k=2”;变量sl中存放各项表达武的值,由公式可知,【2】处填“s+=(2*k-1)/sl”;题目中要求将多项式的和返回到主函数当中,因此,【3】处填“s”。 三、程序改错题 (1)错误:int j=1;正确:double j=1.0; (2)错误:y+=1/(i*i); 正确:y+=j/(i*i); 【解析】由函数proc()可知,变量j的作用是控制每一项符号的变化,并且作为运算的分子,应改为double型变量。因此,“int j=1;”应改为“double j=1.0;”。变量y中存放多项式的值,多项式中的每一项符号由变量j决定。因此,“y+=1/(i*i);”应改为“y+=j/(i*i);”。 四、程序设计题 char*proc(char(*a)[81],int M) { char*max; int i=0: max=a[O]: for(i=0;i if(strlen(max) max=a[i]; return max; //返回最长字符串的地址 } 【解析】本题首先要定义一个字符指针用于保存最长的字符串,并使其初始值指向第一个字符串;再循环遍历字符串数组,通过if语句比较字符串的长度,并把最长的字符串地址赋给字符指针;最后返回最长字符串的地址。
上一篇资讯:
下一篇资讯:
远程学习须知

我要回帖

更多关于 c语言输出 的文章

 

随机推荐