对两个数组a和b进行如下初始化: char a[] = “ABCDEF”; char b[] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F C为什么错?对两个字符数组a和b进行初始化char a[ ]...

作者&投稿:植柿 (若有异议请与网页底部的电邮联系)

答案是D,a数组比b数组长度长

原因:a数组的长度是6,b数组的长度是7。

在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。


扩展资料:

初始化器在C/C99/C++中,初始化器是声明器的可选部分,它由一个'='以及其后的一个表达式(或含有多个以','隔开的带圆括号表达式的单一列表)所组成。

详细说明:

把一个字符串赋值给数组:u4 str1[]={"cxknmsl"};

实际上数组str1在内存中的实际存放情况为: c x k n m s l '\0' 

这后面的'\0'是由C编译系统自动加上的。所以在用字符串赋初值时一般无须指定数组的长度, 而由系统自行处理。 

把字符数组str1中的字符串拷贝到字符数组str2中,串结束标志'\0'也一同拷贝。



楼主首先要明白的是什么是长度。数组元素的个数称之为数组的长度。
现在再看看问题 第一个是 字符串,第二个是字符数组 ,字符串以'\0'为结束符号,字符数组不用。
那就很明白了。B 对。
要说明的是,虽然他们长度相同,不过占的内存字节数是不一样的,第一个占7个字节(后面的'\0'占一个。)第二个占6个字节。

"ABCDEF”;是字符串,字符串默认是有字符串结束符的。
所以选d

要不这样理解吧
首先a作为字符串长度为6;
作为字符数组有7个元素,包含\0,a数组的长度为7;
b是字符数组有6个元素,不是字符串,b数组的长度为6;
选D

#include<stdio>
void main()
{
int m,n;
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
m=sizeof(a);
n=sizeof(b);
printf("a 所占字节数 %d,b 所占字节数 %d\n",m,n);
}
所以选D

对两个数组a和b进行如下初始化 char a[]="Goodbye"; char b[]={'G','o','o','d','b','y',~

D a数组存的是字符串 结尾有一个/0所以比b数组长一个字节

a数组这样赋值会在结尾多一个结束符'\0'
b数组没有结束符,即'\0'
所以A和B都不对
因为b没有结束符,所以不能叫字符串,所以C也不对

...两个私有的整型变量a和b,定义构造函数对a和b进行初始化
答:int a,b;public:A(int x=0,int y=0){ a=x;b=y;} int geta(){ return a; } int getb(){ return b; } };class B: public A{ public:B(int x=1, int y=1):A(x,y){ } int geta() { return 2*A::geta();};};void main(){ B b(10,15);cout <<b.geta() <...

C++:两个int型升序数组a和b,存入同型数组c后仍升序(有要求),咋写...
答:int main(){ int a[7]={1,3,5,7,9,11,15};int b[9]={2,3,6,7,8,9,12,13,15};int alength=sizeof(a)/sizeof(a[0]);int blength=sizeof(b)/sizeof(b[0]);int c[alength+blength];int i=0,j=0,k=0;while(true){ if(i<alength && j<blength){//a,b数组都...

vb我想把两个随机数组合并后排序现在两个随机数组都可以出来然后合并要...
答:第二:把其中一个数组做为母数组,把另一个数组合并过来,这个用到数组保护机制如下:Option Explicit Dim a(): Dim b()Private Sub Command1_Click() '初始化数组A B Dim i As Integer '重新定义数组长度,并赋值 ReDim a(5)ReDim b(4)For i = 0 To 5 a(i) = i Print "数组a...

(Java方法)有两个整形数组,int[]a={10,20,30,40,50},int[] b={10,20...
答:count++; } } } int []c=new int[a.length+b.length-2*count]; int k=0; for(int i=0;i<a.length;i++){ if(a[i]!=-1)c[k++]=a[i]; } for(int j=0;j<b.length;j++){ if(b[j]!=-1)c[k++]=b[j]; } for(int i=0;i<c.length;...

写一个c++程序,建立两个数组,数组A存入# +-×÷,B存入5个5,使用for...
答:{ if(op==0)return a+b;else if(op==1)return a-b;else if(op==2)return a*b;else { if(fabs(b)<1.0e-8)return -1000000;//除0的情况 else return a/b;} } double calc(int a[],int b[]){ int x[4];double ret[5];int flag=1;int i,j,lena=4, lenb=5;for(i...

我想写一个比较繁琐的程序:两个数组a b,a有120个元素,有360个元素,算s...
答:long long suma, sumb[241], sumab;double p[241];void init(void) { int i;for (i = 0; i < 120; i++)a[i] = i;for (i = 0; i < 360; i++)b[i] = i;suma = 0;memset(sumb, 0, sizeof(sumb));sumab = 0;} int main(){ int i, j;/* 初始化 可以替代...

求助:C语言自测
答:A、2, 0 B、3, 1 C、3, 2, 1 D、2, 1, 0 第10题 有循环:while(1){……} 则下列正确的描述是__A___A、无限循环 B、一次循环也不做 C、循环一次 D、语法错 第11题 对数组a和b进行初始化:char a[ ]="abcdef",b[ ]={'a','b','c','d','e','f'}; 则以下叙述...

c语言程序指针问题
答:{int a[5], b[5] ;int *p, i ; p=a; for (i=0; i<10:i++) *p++=i;}分析:该程序想通过指针变量p的自加运算来完成用0~9初始化数组a和b,但这是建立 在数组a和b相邻存放的基础上的,事实上这种情况并不一定成立。3、混淆...

C语言上机题目:输入一个字符串,然后按逆序重新存放该字符串.
答:include<string.h> include<stdio.h> int main(){ char a[100];int i,n,j=0,temp;gets(a);n=strlen(a);for(i=0;i<n/2;i++){ temp=a[i];a[i]=a[n-1-i];a[n-1-i]=temp;} a[n]='\0';puts(a);return 0;} ...

C语言编程:编写程序将两个有序数组A、B合并成另一个有序的数组C,设为...
答:include<stdio.h> voidmain(){ inta[10],b[10],c[20],i,ia,ib,ic;printf("pleaseinputthefirstarray\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)scanf("%d",&b[i]);printf("\n");ia=0;ib=0;ic=0;while(ia<10&&ib<10){ if(a[ia]<b[ib]){...