元旦c语言练习

1以下对二维数组 a的正确说明是(  double a[1][4]  )。

int a[3][]

 

float a(3,4)

 

double a[1][4]

 

float a(3)(4)

2、判断字符串a是否大于b,应当使用( if (strcmp(a,b)>0)  

if (a>b)

 

if (strcmp(a,b))

 

if (strcmp(b,a)>0)

  

if (strcmp(a,b)>0)

3、有以下程序

1

2

3

4

main()

{ int a=666,b=888;

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

}

程序运行后的输出结果是(666  )

 解:运行后,有警告但没有错误,可以运行出结果,printf函数传参是从右往左,只有一个%d,左边参数会覆盖右边参数;

错误信息

 

666

 

888

 

666,888

3下列选项中,不能用作标识符的是(  2_int_  )

 :标识符不能以数字开头;

_1234_

 

_1_2

 

int_2_

 

2_int_

4、 C++ 中,用于实现动态多态性的是( 虚函数)。

 解:C++支持两种多态性,静态多态性,动态多态性;静态多态性:通过重载函数和运算符重载实现(编译时多态性);                  动态多态性:通过虚函数和继承实现。(运行时多态性)

内联函数

 

重载函数

 

模板函数

 

虚函数

5、下列标识符错误的是(     2ab   

 

xly

 

_123

 

2ab

 

_ab

6、以下不符合 C语言语法的赋值语句是(    y=(a=3,6*5);    )。

解:正确应为y=({a=3;6*5});

a=1,b=2

 

++j;

 

a=b=5;

 

y=(a=3,6*5);

7、以下对C语言函数的描述中,正确的是( c程序必须由一个或一个以上的函数组成)。

C 程序必须由一个或一个以上的函数组成

 :正确,一个C程序至少包含一个主函数;

C 函数既可以嵌套定义又可以递归调用

 解:函数可以嵌套调用,但不可以嵌套定义;

函数必须有返回值,否则不能使用函数

 解:可以没有返回值;

C 程序中有调用关系的所有函数必须放在同一个程序文件中

解:也可以放到另一个.h文件里;

8、 x,y,t均为 int 型变量,执行下列语句后,y的值为(3)。                                                                                                              

x=y=3; t=++x||++y;

 解:短路运算;

不确定

 

4

 

3

 

1

9、下列程序段,循环体执行次数是:3次)

1

2

3

y = 2;

while (y <= 8)

    y = y + y;

 

2

 

16

 

4

 

3

10、用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数

解: int (*a[10])(int);

int *a[10];

 

int (*a)[10];

 

int (*a)(int);

 

int (*a[10])(int);

11、下面有关javac++的描述,错误的是?

 c++java支持多继承  解:C++支持多继承,java不支持多继承;

java是一次编写多处运行,c++是一次编写多处编译

 

c++java支持多继承

 

Java不支持操作符重载,操作符重载被认为是c++的突出特征

 

java没有函数指针机制,c++支持函数指针

 

12不能把字符串"HELLO!"赋给数组b的语句是(char b[10];b="HELLO!";

 解:数组名是字符串常量,不能赋值;

char b[10]={'H''E''L''L''O''!''\0'};

 

char b[10];b="HELLO!";

 

char b[10];strcpy(b"HELLO!");

 

char b[10]="HELLO!";

13、*p++ 自增p还是 p 所指向的变量?自增p所指向的变量

 解:++在后,滞后运算;

自增p

 

自增p所指向的变量

 

和机器相关

14、下面程序会输出什么:1,2,2,2

1

2

3

4

5

6

7

8

9

10

11

12

13

static int a=1;

void fun1(void){    a=2;  }(全局变量赋值)

void fun2(void){    int a=3;  }(局部变量,销毁)

void fun3(void){   static int a=4;  }

int main(int argc,char** args){ 

     printf(“%d”,a);//1 

     fun1( ); 

     printf(“%d”,a);//2 

     fun2( ); 

     printf(“%d”,a);//2

     fun3( );

      printf(“%d”,a); //2

}

 

1 2 3 4

 

1 2 2 2

 

1 2 2 4

 

1 1 1 4

15、已知一运行正常的程序中有这样两个语句:int p1,*p2=&a; p1=b;由此可知,变量ab的类型分别是(  intint  )。

 

intint

 

int*int

 

intint*

 

int*int*

16、c++中,声明const int i,是在哪个阶段做到i只可读的       (编译)

编译

 

链接

 

运行

 

以上都不对

17、以下程序的运行结果是(computer ,  com

int main(void)

{

printf("%s , %5.3s\n","computer","computer");

return 0;

}

 解:%m.ns:一共输出m个字符,但是只取出字符串中前n个字符,这n个字符串在m个字符串右侧,前面补m-n个空格;

computer , puter

 

computer , com

 

computer , computer

 

computer , compu.ter

18、运行下面这段C语言程序之后,输出在屏幕上的结果是:a=1, b=2, c=3, *p=2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

void foobar(int a, int *b, int **c)

{

    int *p = &a;

    *p = 101;

    *c = b;

    b = p;

}

 

int main()

{

    int a = 1;

    int b = 2;

    int c = 3;

    int *p = &c;

    foobar(a, &b, &p);

    printf("a=%d, b=%d, c=%d, *p=%d\n", a, b, c, *p);

    return (0);

}

 解:理解值传递;

a=1, b=2, c=3, *p=2

 

a=101, b=2, c=3, *p=2

 

a=101, b=101, c=2, *p=3

 

a=1, b=101, c=2, *p=3

 

 

19下列程序的运行结果是35,请为横线处选择合适的程序(   (p+1)->n   

1

2

3

4

5

6

7

8

9

10

11

12

13

#include<stdio.h>

 struct S

 {

    int n;

    char c[10];

 } *p;

 main()

 {

    struct S a[3]={{3,"abc"},{5,"def"},{7,"ghi"}};

    p=a;

    printf("%d,",(*p).n);

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

 }

 

20、 C 语言中下面那个语句的结果是 1    (B C)

 

A、main 函数正常结束的返回值

 解;正常返回值为零;

B、return 7&1;

解:B 结果为1;

C、char *p="hello"; return p == "hello"; 

解:C结果为1;

D、上面都不对

 

21下列给定程序中,函数fun的功能是:把形参a所指数组中的奇数按原顺序依次存放到a[0]a[1]a[2]…中,把偶数从数组中删除,奇数个数通过函数值返回。 例如,若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除偶数后,a所指数组中的数据为:9,1,3,5,7,返回值为5

函数原型:int cnt_array_oushu(int *a, int len) 

解:

#include<stdio.h>

int cnt_array_oushu(int *a, int len);

void show(int *a, int len);

 

int main()

{

int a[9]={9,1,4,2,3,6,5,8,7};

show(a, 9);

int ret=cnt_array_oushu(a,9);

printf("奇数个数为:%d\n",ret);

printf("奇数数列为:\n");

show(a, ret);

return 0;

}

 

int cnt_array_oushu(int *a, int len)

{

int i=0,j=0;

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

{

if((a[i]%2)==0)

{

if(i!=(len-1))

{

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

a[j]=a[j+1];

len--;

}

else

len--;

i--;

}

}

return len;

}

 

void show(int *a, int len)

{

int i=0;

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

{

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值