习题7精简带答案Word文档下载推荐.docx
- 文档编号:7543273
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:27
- 大小:23.82KB
习题7精简带答案Word文档下载推荐.docx
《习题7精简带答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《习题7精简带答案Word文档下载推荐.docx(27页珍藏版)》请在冰点文库上搜索。
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
【题7.12】若有说明:
inta[][4]={0,0};
则下面不正确的叙述是 。
A)数组a的每个元素都可得到初值0
B)二维数组a的第一维大小为1
C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
【题7.13】若有说明:
则数组a中各元素 。
A)可在程序的运行阶段得到初值0
B)可在程序的编译阶段得到初值0
C)不能得到确定的初值
D)可在程序的编译或运行阶段得到初值0
【题7.14】以下各组选项中,均能正确定义二维实型数组a的选项是 。
A)floata[3][4];
floata[][4];
floata[3][4];
floata[3][]={{1},{0}};
floata[][]={{0};
{0}};
C)floata[3][4];
D)floata[3][4];
staticfloata[][4]={{0},{0}};
floata[3][];
autofloata[][4]={{0},{0},{0}};
floata[][4];
【题7.18】下面程序 (每行程序前面的数字表示行号)。
1main()
2{
3floata[3]={0};
4inti;
5for(i=0;
i<
3;
i++)scanf(“%d”,&
a[i]);
6for(i=1;
4;
i++)a[0]=a[0]+a[i];
7printf(“%d\n”,a[0]);
8}
A)没有错误B)第3行有错误
C)第5行有错误D)第6行有错误
【题7.19】若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 。
(假设a[0][0]位于数组的第一个位置上。
)
A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1
【题7.20】对以下说明语句的正确理解是 。
inta[10]={6,7,8,9,10};
A)将5个初值依次赋给a[1]至a[5]
B)将5个初值依次赋给a[0]至a[4]
C)将5个初值依次赋给a[6]至a[10]
D)因为数组长度与初值的个数不相同,所以此语句不正确
【题7.21】以下不正确的定义语句是 。
A)doublex[5]={2.0,4.0,6.0,8.0,10.0};
B)inty[5]={0,1,3,5,7,9};
C)charc1[]={‘1’,‘2’,‘3’,‘4’,‘5’};
D)charc2[]={‘\x10’,‘\xa’,‘\x8’};
【题7.22】若有说明:
inta[][3]={1,2,3,4,5,6,7};
则a数组第一维的大小是 。
A)2B)3C)4D)无确定值
【题7.23】若二维数组a有m列,则在a[i][j]前的元素个数为 。
A)j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1
【题7.24】定义如下变量和数组:
intk;
inta[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是 。
for(k=0;
k<
k++)printf(“%d”,a[k][2-k]);
A)357B)369C)159D)147
【题7.26】以下正确的定义语句是 。
A)inta[1][4]={1,2,3,4,5};
B)floatx[3][]={{1},{2},{3}};
C)longb[2][3]={{1},{1,2},{1,2,3}};
D)doubley[][3]={0};
【题7.27】下面程序的运行结果是 。
main()
{
inta[6][6],i,j;
for(i=1;
6;
i++)
for(j=1;
j<
j++)
a[i][j]=(i/j)*(j/i);
{
printf(“%2d”,a[i][j]);
printf(“\n”);
}
}
A)11111B)00001C)10000D)10001
11111000100100001010
11111001000010000100
11111010000001001010
11111100000000110001
【题7.29】下面是对s的初始化,其中不正确的是 。
A)chars[5]={“abc”};
B)chars[5]={‘a’,‘b’,‘c’};
C)chars[5]=“”;
D)chars[5]=“abcdef”;
【题7.30】下面程序段的运行结果是 。
charc[5]={‘a’,‘b’,‘\0’,‘c’,‘\0’};
printf(“%s”,c);
A)‘a’‘b’B)abC)abc
【题7.31】对两个数组a和b进行如下初始化
chara[]=“ABCDEF”;
charb[]={‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};
则以下叙述正确的是 。
A)a与b数组完全相同B)a与b长度相同
C)a和b中都存放字符串D)a数组比b数组长度长
【题7.32】有两个字符数组a、b,则以下正确的输入格式是 。
A)gets(a,b);
B)scanf(“%s%s”,a,b);
C)scanf(“%s%s”,&
a,&
b);
D)gets(“a”),get(“b”);
【题7.33】有字符数组a[80]和b[80],则正确的输出形式是 。
A)puts(a,b);
B)printf(“%s%s”,a[],b[]);
C)putchar(a,b);
D)puts(a),puts(b);
【题7.34】下面程序段的运行结果是 。
chara[7]=“abcdef”;
charb[4]=“ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
A)空格B)\0C)eD)f
【题7.35】有下面的程序段
chara[3],b[]=“China”;
a=b;
printf(“%s”,a);
则 。
A)运行后将输出ChinaB)运行后将输出Ch
C)运行后将输出ChiD)编译出错
【题7.37】判断字符串a和b是否相等,应当使用 。
A)if(a==b)B)if(a=b)
C)if(strcpy(a,b))D)if(strcmp(a,b))
【题7.38】判断字符串s1是否大于字符串s2,应当使用 。
A)if(s1>
s2)B)if(strcmp(s1,s2))
C)if(strcmp(s2,s1)>
0)D)if(strcmp(s1,s2)>
0)
【题7.39】下面程序段是输出两个字符串中对应字符相等的字符。
请选择填空。
charx[]=“programming”;
chary[]=“Fortran”;
inti=0;
while(x[i]!
=‘\0’&
&
y[i]!
=‘\0’)
if(x[i]==y[i])printf(“%c”,【1】);
elsei++;
【1】A)x[i++]B)y[++i]C)x[i]D)y[i]
【题7.41】下述对C语言字符数组的描述中错误的是 。
A)字符数组可以存放字符串
B)字符数组的字符串可以整体输入、输出
C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D)不可以用关系运算符对字符数组中的字符串进行比较
【题7.42】有已排好序的字符串a,下面的程序是将字符串s中的每个字符按a中元素的规律插入到a中。
#include<
stdio.h>
chara[20]=“cehiknqtw”;
chars[]=“fbla”;
inti,k,j;
for(k=0;
s[k]!
=‘\0’;
k++)
j=0;
while(s[k]>
=a[j]&
a[j]!
=‘\0’)j++;
for(【1】)【2】;
a[j]=s[k];
puts(a);
【1】A)i=strlen(a)+k;
i>
=j;
i--B)i=strlen(a);
i--
C)i=j;
i<
=strlen(a)+k;
i++D)i=j;
=strlen(a);
i++
【2】A)a[i]=a[i+1]B)a[i+1]=a[i]
C)a[i]=a[i-1]D)a[i-1]=a[i]
【题7.43】下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。
chara[]=“acegikm”;
charb[]=“bdfhjlnpq”;
charc[80],*p;
inti=0,j=0,k=0;
while(a[i]!
b[j]!
=‘\0’)
if(a[i]<
b[j]){【1】}
else{【2】}
k++;
c[k]=‘\0’;
if(【3】)p=b+j;
elsep=a+i;
strcat(c,p);
puts(c);
【1】A)c[k]=a[i];
i++;
B)c[k]=a[j];
C)c[k]=a[i];
j++;
D)c[k]=a[j];
【2】A)c[k]=a[i];
【3】A)a[i]==‘\0’B)a[i]!
=‘\0’
C)a[i-1]==‘\0’D)a[i-1]!
【题7.44】下面程序的功能是将字符串s中所有的字符c删除。
chars[80];
inti,j;
gets(s);
for(i=j=0;
s[i]!
if(s[i]!
=‘c’)【1】;
s[j]=‘\0’;
puts(s);
【1】A)s[j++]=s[i]B)s[++j]=s[i]
C)s[j]=s[i];
j++D)s[j]=s[i]
【题7.46】下面程序的运行结果是 。
charch[7]={“12ab56”};
inti,s=0;
for(i=0;
ch[i]>
=‘0’&
ch[i]<
=‘9’;
i+=2)
s=10*s+ch[i]-‘0’;
printf(“%d\n”,s);
A)1B)1256C)12ab56D)1
2
5
6
【题7.47】当运行以下程序时,从键盘输入:
aabb<
CR>
ccdd<
(<
表示回车),则下面程序的运行结果是 。
chara1[5],a2[5],a3[5],a4[5];
scanf(“%s%s”,a1,a2);
gets(a3);
gets(a4);
puts(a1);
puts(a2);
puts(a3);
puts(a4);
A)aaB)aaC)aaD)aabb
bbbbbbcc
ccccdddd
ccddddee
【题7.49】当运行以下程序时,从键盘输入:
AhaMAAha<
(<
chars[80],c=‘a’;
inti=0;
scanf(“%s”,s);
while(s[i]!
if(s[i]==c)s[i]=s[i]-32;
elseif(s[i]==c-32)s[i]=s[i]+32;
i++;
A)ahAMaB)AhAMaC)AhAMaahAD)ahAMaahA
【题7.50】下面程序的运行结果是 。
chara[80]=“AB”,b[80]=“LMNP”;
strcat(a,b);
while(a[i++]!
=‘\0’)b[i]=a[i];
puts(b);
A)LBB)ABLMNPC)ABD)LBLMNP
【题7.51】下面程序的运行结果是 。
charstr[]=“SSSWLIA”,c;
intk;
for(k=2;
(c=str[k])!
switch(c)
{
case‘I’:
++k;
break;
case‘L’:
continue;
default:
putchar(c);
}
putchar(‘*’);
A)SSW*B)SW*C)SW*AD)SW
【题7.52】下面程序的运行结果是 。
chara[]=“morning”,t;
inti,j=0;
7;
i++)if(a[j]<
a[i])j=i;
t=a[j];
a[j]=a[7];
a[7]=a[j];
puts(a);
A)mogninrB)moC)morningD)mornin
7.2 填空题
【题7.58】若有以下输入(<
代表回车符),则下面程序的运行结果是10468246122。
7105467983246122-1<
intb[51],x,i,j=0,n=0;
x);
while(x>
-1){b[++n]=x;
scanf(“%d”,&
=n;
if(b[i]%2==0)b[++j]=b[i];
i++)printf(“%3d”,b[i]);
printf(“\n”);
【题7.65】以下程序可求出所有的水仙花数。
(提示:
所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。
例如:
407=4×
4×
4+0×
0×
0+7×
7×
7,故407是一个水仙花数。
)请填空。
intx,y,z,a[8],m,i=0;
printf(“Thespecialnumbersare(inthearrangeof1000):
\n”);
for(m=100;
m<
=999;
【1】m++)
x=m/100;
y=【2】;
m/10%10
z=m%10;
if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)
{a[i]=m【3】;
for(x=0;
x<
i;
x++)
printf(“%6d”,a[x]);
【题7.66】下面程序的功能是生成并打印某数列的前20项,该数列第1,2项分别为0和1,以后每个奇数编号的项是前两项之和,偶数编号的项是前两项差的绝对值。
生成的20个数存在一维数组x中,并按每行4项的形式输出。
请填空。
intx[21],i,j;
x[1]=0;
x[2]=1;
i=3;
do{
x[i]=x[i-1]+x[i-2];
【1】;
x[i+1]=fabs(x[i-1]-x[i-2]);
//【2】;
i=i+2【3】;
}while(i<
20);
=20;
printf(“%5d”,x[i]);
if(i%4==0)
printf(“\n”);
【题7.67】若有以下输入(<
代表回车换行符),则下面程序的运行结果是 。
Theresultis:
1:
8
2:
5
3:
6
4:
3
1423341233222331114111-1<
#defineM50
inta[M],c[5],i,n=0,x;
printf(“Enter0or1or2or3or4,toendwith-1\n”);
while(x!
=-1)
if(x>
=0&
=4)
{a[n]=x;
n++;
scanf(“%d”,&
5;
i++)c[i]=0;
n;
i++)c[a[i]]++;
printf(Theresultis:
=4;
i++)printf(“%d:
%d\n”,i,c[i]);
【题7.70】下面程序将十进制整数转换成n进制。
inti,base,n,j,num[20];
printf(“Enterdatathatwillbeconverted\n”);
printf(“Enterbase\n”);
base);
num[i]=n%【1】base;
n=n/【2】base;
}while(n!
=0);
printf(“Thedata%dhasbeenconvertedintothe%d--base
data:
\n”,n,base);
for(j=i-1;
j>
=0;
j--【3】)
printf(“%d”,num[j]);
应该是将十进制整数n转换成base进制,从dowhile循环中的终止条件n!
=0就可以知道了。
比如求15的4进制
14%4=2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 精简 答案