c语言的选择题
[3]、已知有如下程序:
void main()
{
int a[5]={1,2,3,4,5},*b;
b=(int*)malloc(sizeof(int));
____;
printf("%d\n",*b);
}
要使程序输出为a[2]的值,则下列有关函数fun的定义和下划线处对应的fun调用语句正确的有( )。
【答 案】CD
【分 数】2分
【选 项】
A、void fun(int*s,int*d)
{*d=*(s+2);}
调用: fun(a,&b)
B、void fun(int*s,int&d)
{d=*(s+2);}
调用: fun(a,b)
C、void fun(int*s,int &d)
{d=*(s+2);}
调用: fun(a,*b)
D、void fun(int*s,int **d)
{**d=*(s+2);}
调用: fun(a,&b)
[9]、若x,y均定义为int型,z定义为double型,以下scanf函数调用语句合法的有( )。
【答 案】ABC
【分 数】2分
【选 项】
A、scanf("%d%lx,%le",&x,&y,&z);
B、scanf("%2d*%d%lf",&x,&y,&z);
C、scanf("%x%*d%o",&x,&y);
D、scanf("%x%o%6.2f",&x,&y,&z);
[18]、以下有关字符串赋值、赋初值的语句正确的有( )。
【答 案】BD
【分 数】2分
【选 项】
A、char sz[2][40];sz[1]=“string1”;
B、char *sz[2];sz[1]=“string2”;
C、char sz[][40]=“string3”;
D、char *sz[2]={“string1”,“string2”};
[19]、若已建立如图所示的单向链表:
则下列选项中能将s所指的结点插入到链表尾部,构成新的单项链表的语句组有( )。
【答 案】BCD
【分 数】2分
【选 项】
A、a=a->link;s->link=a->link;a->link=s->link;
B、a=(*a).link;(*s).link=(*a).link;(*a).link=s;
C、s->link=NULL;a=(*a).link;(*a).link =s;
D、s->link=a->link->link;a->link->link=s;
[20]、有以下程序段:
#include "stdio.h"
#include "string.h"
main( )
{ char ss[10]="1,2,3,4,5";
gets(ss);
___________
printf("%s\n",ss); }
执行程序时如果输入ABC则输出结果为ABC6789,则下划线处的语句可以是( )。
【答 案】ACD
【分 数】2分
【选 项】
A、strcat(ss,"6789");
B、strcpy(ss[3], "6789" );
C、strcpy(ss, "ABC6789" );
D、strcpy(&ss[3], "6789" );
希望有高手好好帮我分析一下这五道选择题?不理解啊。。。。。。。。。。。。
[解决办法]
[3]、已知有如下程序:
void main()
{
int a[5]={1,2,3,4,5},*b;
b=(int*)malloc(sizeof(int));
____;
printf("%d\n",*b);
}
要使程序输出为a[2]的值,则下列有关函数fun的定义和下划线处对应的fun调用语句正确的有( )。
【答 案】CD
【分 数】2分
【选 项】
A、void fun(int*s,int*d)
{*d=*(s+2);}
调用: fun(a,&b) //实参与形参类型不匹配,实参为int**类型,形参为int*类型
B、void fun(int*s,int&d)
{d=*(s+2);} //左边为int*类型,右边为int类型
调用: fun(a,b)
C、void fun(int*s,int &d)
{d=*(s+2);}
调用: fun(a,*b)
D、void fun(int*s,int **d)
{**d=*(s+2);}
调用: fun(a,&b)
[9]、若x,y均定义为int型,z定义为double型,以下scanf函数调用语句合法的有( )。
【答 案】ABC
【分 数】2分
【选 项】
A、scanf("%d%lx,%le",&x,&y,&z);
B、scanf("%2d*%d%lf",&x,&y,&z);
C、scanf("%x%*d%o",&x,&y);
D、scanf("%x%o%6.2f",&x,&y,&z); //scanf函数不能设置精度
[18]、以下有关字符串赋值、赋初值的语句正确的有( )。
【答 案】BD
【分 数】2分
【选 项】
A、char sz[2][40];sz[1]=“string1”; //s[1]是指针常量
B、char *sz[2];sz[1]=“string2”;
C、char sz[][40]=“string3”; //格式不对,应为char sz[][40]={“string3”};
D、char *sz[2]={“string1”,“string2”};
[19]、若已建立如图所示的单向链表: //图呢???
则下列选项中能将s所指的结点插入到链表尾部,构成新的单项链表的语句组有( )。
【答 案】BCD
【分 数】2分
【选 项】
A、a=a->link;s->link=a->link;a->link=s->link;
B、a=(*a).link;(*s).link=(*a).link;(*a).link=s;
C、s->link=NULL;a=(*a).link;(*a).link =s;
D、s->link=a->link->link;a->link->link=s;
[20]、有以下程序段:
#include "stdio.h"
#include "string.h"
main( )
{ char ss[10]="1,2,3,4,5";
gets(ss);
___________
printf("%s\n",ss); }
执行程序时如果输入ABC则输出结果为ABC6789,则下划线处的语句可以是( )。
【答 案】ACD
【分 数】2分
【选 项】
A、strcat(ss,"6789");
B、strcpy(ss[3], "6789" ); //传的是地址
C、strcpy(ss, "ABC6789" );
D、strcpy(&ss[3], "6789" );
[解决办法]
A、char sz[2][40];sz[1]=“string1”; //s[1]是指针常量的意思是程序运行过程中值(这里是系统分配的)不可变,sz[1]=“string1”;是错误的。
[解决办法]