C语言程序设计

单选题有以下程序:#include #include main(){ int *a,*b,*c; a=b=c=(int*)malloc(sizeof(int)); *a=1; *b=2,*c=3; a=b; printf(%d,%d,%d,*a,*b,*c);}程序运行后的输出结果是(  )。A 3,3,3B 2,2,3C 1,2,3D 1,1,3

题目
单选题
有以下程序:#include #include main(){ int *a,*b,*c; a=b=c=(int*)malloc(sizeof(int)); *a=1; *b=2,*c=3; a=b; printf(%d,%d,%d,*a,*b,*c);}程序运行后的输出结果是(  )。
A

3,3,3

B

2,2,3

C

1,2,3

D

1,1,3

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是

A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=&s;}

B.main( ) { int *p; fun(&p); ┆ } int fun(int **p) { int s; *p=&s;}

C.#include<stdlib.h> main( ) { int *p; fun(&p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}

D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}


正确答案:D

第2题:

以下四个程序中,完全正确的是()。A.include main( ); { /* programmlng* / printf( "p

以下四个程序中,完全正确的是( )。

A.#include <stdio.h> main( ); { /* programmlng* / printf( "programming! \n" ); }

B.#include <stdio.h> main( ) { /*/programming printf("programming! \n"); }

C.#include <stdio.h> main( ) { /*programming* / printf( "programming! \n" ); }

D.include <stdio.h> main ( ) { /*/* programming*/*/ printf( "programming! \n" ); }


正确答案:C
解析:选项A)main();后面不应该有分号;选项B)中的注释语句不正确;选项D)的include前缺少#。

第3题:

以下四个程序中,完全正确的是( )。A.includeB.include main(); main() {/*pr

以下四个程序中,完全正确的是( )。

A.#include<stdio.h>

B.#include<stdio.h> main(); main() {/*programming*/ {/*/programming/*/ printf("programming!\n");} printf("programming!\n");}

C.#include<stdio.h>

D.include<stdio.h> main() main() {/*/*programming*/*/ {/*programming*/ printf("programming!\n");} printf("programming!\n");}


正确答案:B
解析:选项A中的main()后面不能直接用分号。选项C中的注释符使用不正确,编译器会把从第一个“/*到第一个*/”之间的当作注释,最后一个“*/”会被作为程序代码去编译。选项D中的include前要加上#表示是预定义语句。

第4题:

有以下程序 include main() { int y=9; for( ; y>0; y--) if(y%

有以下程序 #include <stdio.h> main() { int y=9; for( ; y>0; y--) if(y%3==0) printf("%d",--y); } 程序的运行结果是

A.741

B.963

C.852

D.875421


正确答案:C
解析:本题首先令y为9,然后通过一个for循环,当y还大于0则循环,每次循环让y递减1。循环体中是一条if语句,通过%运算符计算每当y能被3整除的时候,输出--y的值,即先将y减1,然后输出y的值。故当y等于9、6、3时会输出,输出值分别为8、5、2。所以应该选择C。

第5题:

有以下程序: include main ( ) int i;for(i =0;i <3 ;i ++ )switch (i)case 0: printf

有以下程序: #include <stdio.h> main ( ) int i; for(i =0;i <3 ;i ++ ) switch (i) case 0: printf(" % d" ,i); case 2: printf(" % d" , i); default: printf( "% d" , i);程序运行后的输出结果是( )。

A.22111

B.21021

C.122

D.12


正确答案:C
解析:程序中没有使用break终止switch语句的执行。当i:0时,执行第一个case语句,因为它后面没有break,所以一直到执行完default语句结束,输出3个0,再执行下一循环。所以只有选项C)正确。

第6题:

以下程序的输出结果是 【7】 。

#include "stdio.h"

main()

{int a=065;

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

}


正确答案:
52

第7题:

以下程序运行后的输出结果是【】include main ( ) {char a[] ="123456789", *p;int i =0;

以下程序运行后的输出结果是【 】

include <stdio.h>

main ( )

{ char a[] ="123456789", *p;

int i =0;

p=a;

while( * p)

{ if(i%2 ==0) *p='*';

p++;i++;

}

puts(a);

}


正确答案:*2*4*6*8*
*2*4*6*8* 解析:程序中指针p指向数组a,while(*P)语句的循环条件是* p!='\0',在循环体中,当 i=0,2,4,6,8时,i%2=0,执行*p='*',即a[i]='*',继续执行p++;i++;使i为奇数;当i=1, 3,5,7时,i%2=1,继续执行p++;i++;使i为偶数。可见,程序在字符串"123456789",的下标为偶数的位置上赋值'*',代替原字符串中的1,3,5,7,9。所以,程序输出结果为*2*4*6*8*。

第8题:

为使*p=20,下面正确的程序是()A. include main( ) { int a=10,b=20,*p=&b; printf

为使*p=20,下面正确的程序是 ( )

A.# include<stdio.h> main( ) { int a=10,b=20,*p=&b; printf("%d\t%d\n",p,*p); } *p)

B.# include<stdio.h> main( ) { int a=10,b=20,*p=b; printf("%d\t\%d\n",p,*p) }

C.# include<stdio.h> main( ) { int a=10,b=20,*p; p=&a; p + +; printf("%d\t\%d\n",p,*p);} }

D.# include<stdio.h> main( ) { int a=10,b=20,*p; *p=20; printf("%d\t\%d\n",p,*p); }


正确答案:A

第9题:

有以下程序 include define F(X,Y) (X)*(Y) main( ) { int a=3, b=4; prin

有以下程序

#include <stdio.h>

#define F(X,Y) (X)*(Y)

main( )

{ int a=3, b=4;

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

}

程序运行后的输出结果是

A.12

B.15

C.16

D.20


正确答案:A
解析:本题考查了带参数的宏定义。参数只是进行简单的替换而不是把其值求出后替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值。

第10题:

有以下程序 include int a=1; int f(int c) { stati

有以下程序 #include <stdio.h> int a=1; int f(int c) { static int a=2; c=c+1; return (a++) + c; } main() { int i, k=0; for(i=0;i<2;i++) { int a=3; k += f(a); k +=a; printf("%d\n",k); }

A.14

B.15

C.16

D.17


正确答案:A
解析:静态局部变量的作用域跟一般局部变量相同,都是从声明处开始到声明所在函数或语句块结束为止。但静态局部变量的生存周期却是从第1次执行到该静态局部变量的声明语句时起,直到程序结束。而—般局部变量的生存周期到离开它的作用域时就结束了。本题的f()函数中static int a=2;语句就声明了一个静态局部变量a,并初始化为2。主函数中,通过一个for循环连着调用了2次f()函数。两次调用形参c都为3,f()函数中让c增1变为4,然后输出(a++) +c,第1次调用a为2,所以输出结果为3+4=6,而第2次调用a被上次调用时的++运算符增1,所以为3,输出结果为3+4=7。所以主函数for循环结束后,k的值是13,下面一条k+=a;语句中的a是全局变量a,值为1。故最终输出结果是14,应该选择 A。

更多相关问题