首页>>前端>>JavaScript->c语言程序设计简答题汇总?

c语言程序设计简答题汇总?

时间:2023-12-05 本站 点击:0

C语言题目简答题

1、(c=65 c=90)?(c=c+32):(c=c) /*符合你的要求,不是C语句,而是C表达式*/

2、a%10==5 /*符合你的要求,不是C语句,而是C表达式*/

3、【题目不全啊】

4、【题目不全啊】

5、这个题算是所有6个题中最难的了。

首先,fun函数中定义了一个static类型的变量,含义如下:

有时希望函数中的 局部 变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。

这道题还有一个迷惑点是,该程序还在“文件包含”命令下面定义了一个全局变量,变量名同样也是d。全局变量(或全程变量)可以为本文件中其它函数所共用,其有效范围从定义变量的位置开始,到本源文件结束。

这里要注意,这两个d虽然名字相同,但他们不是一个变量,两者地址不同,即占用的存储单元不一样。

要解决这道题,你还应该了解:一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最开头,也可以放在程序最后,或在一些函数之前,或在另一些函数之后)。

上面的问题清楚之后,下面就容易了。先执行main函数,第一句

int a=1;

定义了整型变量a并赋初值为1。然后调用输出函数

printf("%5d\n",fun(a+fun(d)));

这里,printf函数的输出列表中调用了fun函数,而fun函数中的参数是一个表达式a+fun(d),这个表达式中也有fun函数,其参数是d,这里,这个d 作为实参,必定是在“文件包含”命令下面定义的全局变量d,即先执行了fun(1)。

好,我们看看执行fun(1)是什么效果。首先形参p得到了实参的值1,然后

static int d=5;

定义了一个局部静态变量d, 并初始化为5,然后

d+=p;

就相当于“d=d+p;”,即d=5+1,d的值为6,然后

printf("%5d",d);

输出了当前局部静态变量d的值6,然后

return d;

即函数返回值为6,main函数中fun(d)就可以用数字6代替,a+fun(d)就是7了。

然后又调用了一次fun函数,fun(a+fun(d)),即fun(7)。

好,我们继续看这时函数应该如何调用。还是形参p得到了实参值7,然后

static int d=5;

由于fun函数里的d是静态变量,在第一次调用该函数时d已经被定义,系统已经为它分配了存储存单元,所以,这次再调用fun函数的时候,d不用再定义了,而且保留上次的值6,也就是说,这次的“d=5”是不会被执行的。继续,

d+=p;

即d=d+p,也就是6+7,这次fun函数里的局部静态变量d的值为13,

printf("%5d",d);

输出d的值13,然后

return d;

fun函数返回值为13。回到main函数,fun(a+fun(d))即可用13 来代替,然后

printf("%5d\n",fun(a+fun(d)));

输出13,换行,程序运行结束。

分析完执行过程,这个题的答案就有了。由于printf函数中写在%和d之间的整数代表输出字段宽度为5(如果数据的位数小于5,则左补空格,若大于5,则按实际位数输出),fun函数的printf函数的格式控制字符串中没有换行符'\n',所以最终输出结果应该只有一行:

6 13 13

press any key to continue

要注意,6前面有4个空格,6和第一个13之间有3个空格,两个13之间也有3个空格,第二个13后面什么都没有直接换行。最后的“press any key to continue”是Visual C++ 6.0系统自动生成的,提示程序已经运行完毕,按任意键退出。

6、Visual C++ 6.0 或 Turbo C++ 3.0

艾玛,打这么多字累屎了。。。。。。

C语言程序设计,简答题,求正解啊.

1. 以下程序的输出结果是什么。

#includestdio.h

void main( )

{

  int a=1,b=0;

  switch(a) {

//switch选择语句,a = 1,那么就选择case 1执行.

    case 1://注意此处case 1没有break,所以后面的case 2也执行.

 

      switch(b) {

//switch选择语句,b = 0,那么就选择case 0执行.

        case0: printf(“0”); break;

//执行case 0,输出0,它有break终止语句,所以后面的case 2就不执行了.

        case 1:printf(“1”); break;

  }

  case 2: printf(“2”); break;

//执行case 2,输出2.

  }

}

//总的输出结果:02

//知识点:理解选择分支结构,case遇到break才会终止后面的执行.  

  

2. 以下程序的输出结果是什么。

#includestdio.h

void main( )

{

  inta=3,b=2,c=1;

//a、b、c的作用域在main函数内.

  {

int b=5,c=12;

//b、c的作用域在{}内.

c-=b*2;

//此时b、c调用的值是{}内的b = 5、c = 12,那么c = 12 - 5*2 = 2

a+=c;

//此时的a是调用的main函数的a = 3, c调用的是c = 2. 即结果a = 3 + 2 = 5.

  }

printf(“a=%d,b=%d,c=%d\n”,a,b,c);//此时a、b、c都是调用的main函数内的变量,a有经过操作,a = 5,b、c没有经过操作,b = 2,c = 1.

}

//总的输出结果为:a=5,b=2,c=1

//知识点:考查变量的作用域,记住自动变量的作用域只在{}内,超出作用域就不生效了.  

 

3.以下程序的输出结果是什么。

#includestdio.h

int main(void)

{

       intx=1,y=2,z=2;

       if(x)   z += 1;

//x0为真,执行z += 1; z变为3 

       if(!y)  z += 2;//!y  0为假,不执行.

       if(z)   z += 3;

//z0为真,执行z += 3; z变为6

       printf("%d\n",z);

//输出6

       return 0;

}

//总的输出结果为:6 

//知识点:对if语句的判断条件,真执行、假不执行. 

4 以下程序的输出结果是什么。

#includestdio.h

int main(void)

{

       int a=3,b=4,c=5,d=6;

       if(ab)

//ab为假,所以后面的语句不执行.

              if(bc) printf("%d", c);

              else  printf("%d",b);

//注意这里,else总是与上面的if匹配.

       printf("%d\n",d);

//输出d = 6,没有经过任何语句操作.

       return 0;

}

//总的输出结果:6 

//知识点: else总是与最近的if匹配. 

 

5. 以下程序的输出结果是什么。

#includestdio.h

void main( )

{

  ints,t,a,b;

  a=2;b=4;

 s=t=1;

 if(a0)  s+=1;

//a0为真,执行s += 1;s变为2

 if(ab)  t=s+t;//ab为假,所以执行else语句,else为if下面的第一个,最近的.

 else

if(a= =b)  t=5;

//执行if( a == b )不成立,所以执行else语句,else为if下面的第一个,最近的.

else  t=2*s;

//执行t = 2*s;即t = 2*2 = 4.

printf(“%d\n”,t);

}

//总的输出结果为:4

//知识点: else总是与最近的if匹配.(if找它下面的第一个else,else找它上面的第一个if,前提是if、else没有括号()限制优先级)

C语言程序设计

1.B 2.B 3.C 4.A 5.C 6.D 7.B 8.B 9.A 10.C

1、编写程序。从键盘输入100个数,将正数升序排列到数组的前端,把0放在中间,负数按降序排列在0的后面。

#include"stdio.h"

void main()

{

int i,j,k,s,a[100],b[100]={0},m=0,n=0;

printf("input:");

for(i=0;i100;i++)

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

for(i=0,j=0;i100;i++)

if(a[i]0){b[j++]=a[i];m++;}//m正数个数

for(i=0,j=99;i100;i++)

if(a[i]0){b[j--]=a[i]; n++;}//n负数个数

for(i=0;im-1;i++)//正数排序

{ k=i

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

if(b[i]b[j])k=j;

if(i!=k)

{s=b[i];b[i]=b[k];b[k]=s;}

}

for(i=100-n;i99;i++)//负数排序

{ k=i

for(j=i+1;j100;j--)

if(b[i]b[j])k=j;

if(i!=k)

{s=b[i];b[i]=b[k];b[k]=s;}

}

for(i=0;i100;i++)

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

printf("\n")

}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/JavaScript/13091.html