C)return语句的返回值类型与指针k的基类型不一致,这里会产生警告
D)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告
(36)有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为
A)3,2
B)3,1
C)2,2
D)2,1
(37)现有如下程序段
#include “stdio.h”
main()
{int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};
int i=0,j=5;
printf(“%d\n”,*(&a[0][0]+2*i+j-2));}
则程序的输出结果为
A)21
B)78
C)23
D)28
(38)下列程序的输出结果是
#include “stdio.h”
#define N 3
#define M 3
void fun(int a[M][N])
www.lexue88.com
{printf(“%d\n”,*(a[1]+2));}
main()
{int a[M][N];
int i,j;
for(i=0;i《M;i++)
for(j=0;j《N;j++)
a[i][j]=i+j-(i-j);
fun(a);}
A)3
B)4
C)5
D)6
(39)下列关于字符串的说法中错误的是
A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
B)′\0′作为标志占用存储空间,计入串的实际长度
C)在表示字符串常量的时候不需要人为在其末尾加入′\0′
D)在C语言中,字符串常量隐含处理成以′\0′结尾
(40)有下面程序段
#include “stdio.h”
#include “string.h”
main()
{char a[3][20]={{“china”},{“isa”},{“bigcountry!”}};
char k[100]={0},*p=k;
int i;
for(i=0;i《3;i++)
{ p=strcat(p,a[i]);}
i=strlen(p);
printf(“%d\n”,i);}
则程序段的输出结果是
A)18
B)19
C)20
D)21
(41)现有如下程序段
#include “stdio.h”
#include “string.h”
main()
{char a[]=“acfijk”;/*这里是有序的字符序列*/
char b[]=“befijklqswz”;/*这里是有序的字符序列*/
char c[80],*p;
int i=0,j=0,k=0;
while(a[i]!=′\0′ && b[j]!=′\0′)
{if(a[i]《b[j])c[k++]=a[i++];
else if(a[i]》b[j])c[k++]=b[j++];
else {c[k++]=b[j++];
i++;}}
while(a[i]==′\0′ && b[j]!=′\0′)
c[k++]=b[j++];
while(a[i]!=′\0′ && b[j]==′\0′)
c[k++]=a[i++];
c[k]=′\0′;
puts(c);}
则输出结果是
A)acfijkbefijklqswz
B)abceffiijjkklqswz
C)befijklqswz acfijk
D)abcefijklqswz
(42)现在有如下程序
#include “stdio.h”
main()
{char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!=′\0′;i++)
if(s[i]!=′H′______)
s[j]=′\0′;
puts(s);}
这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是
A)s[j++]=s[i];j++;
B)s[j]=s[i++];j++;
C)s[j++]=s[i];
D)s[j]=s[i];
(43)下列说法中错误的是
A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽
C)静态全局变量可以被其他的编辑单位所引用
D)所有自动类局部变量的存储单元都是在这些局部变量所在的函数体(或复合语
句)时生成,退出其所在的函数体(或复合语句)时消失
(44)阅读下列程序段,则程序的输出结果为
#include “stdio.h”
#define M(X,Y)(X)*(Y)
#define N(X,Y)(X)/(Y)
main()
{int a=5,b=6,c=8,k;
k=N(M(a,b),c);
printf(“%d\n”,k);}
A)3
B)5
C)6
D)8
(45)若有以下定义和语句
struct a
{ int n,m;};
struct a st[3]={{1,20},{2,19},{3,21}};
struct a *p=st;
则以下错误的引用是
A)(p++)-》n;
B)st[0].n;
C)(*p).n;
D)p=&st.m;
(46)假设有如下定义:struct a{int n;float k;}data,*p;若要使p指向data中的成员n,正确的赋值语句是
A)p=&data.n;
B)*p=data.n;
C)p=(struct a *)&data.n;
D)p=(struct a *)data.n;
(47)下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。假定t1所指向的链表非空
struct node{ float x;struct node *next;};
connect(struct node *t1, struct node *t2)
{ if(t1-》next==NULL)t1-》next=t2;
else connect(______ ,t2); }
要实现此功能则应该添入的选项是
A)t1.next
B)++t1.next
C)t1-》next
D)++t1-》next
(48)C语言结构体类型变量在程序运行期间
A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元
B)所有的成员一直驻留在内存中
C)只有最开始的成员驻留在内存中
D)部分成员驻留在内存中
(49)有下列运算符:~,&,《《,》》, |,^,则运算的优先顺序是
A)~,&, |,《《,》》,^
B)~,《《,》》,&, |,^
C)~,《《,》》,^, &,|
D)~,《《,》》,&,^, |
(50)最简单的交换排序方法是
A)快速排序 B)选择排序
C)堆排序 D)冒泡排序
,2017计算机二级考试C语言考前密卷六tag: 计算机等级考试,计算机等级考试试题,全国计算机等级考试试题,计算机等级考试