
两个C++选择题,一个结果题,请大神帮忙解释一下,答案我知道,求解题过程。
若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i<10)。A.p[i]B.*(*(a+i))C...
若有语句int
a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。
A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i])
以下程序的输出结果是( )。
#include <iostream.h>
void main()
{ char
s[]="12134211",*p;
int
v1=0,v2=0,v3=0,v4=0; v1 v2 v3 v4
for
(p=s;*p;p++) 4 7 5 8
switch(*p)
{
case
'1':v1++;
case
'3':v3++;
case
'2':v2++;
default: v4++;
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
A.4,2,1,1 B.4,7,5,8 C.7,3,2,1 D.8,8,8,8
#include<iostream.h>
void trans(int x)
{ char a[10];
int i=0, rem;
do {
rem=x%16;
x=x/16;
if(rem<10) a[i]=48+rem; // '0'字符的ASCⅡ48
else a[i]=55+rem; // 'A'字符的ASCⅡ65
i++;
}while(x!=0);
while(i>=0)cout<<a[--i];
cout<<endl;
}
void main()
{ int n=168;
trans(n);
} 展开
a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。
A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i])
以下程序的输出结果是( )。
#include <iostream.h>
void main()
{ char
s[]="12134211",*p;
int
v1=0,v2=0,v3=0,v4=0; v1 v2 v3 v4
for
(p=s;*p;p++) 4 7 5 8
switch(*p)
{
case
'1':v1++;
case
'3':v3++;
case
'2':v2++;
default: v4++;
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
A.4,2,1,1 B.4,7,5,8 C.7,3,2,1 D.8,8,8,8
#include<iostream.h>
void trans(int x)
{ char a[10];
int i=0, rem;
do {
rem=x%16;
x=x/16;
if(rem<10) a[i]=48+rem; // '0'字符的ASCⅡ48
else a[i]=55+rem; // 'A'字符的ASCⅡ65
i++;
}while(x!=0);
while(i>=0)cout<<a[--i];
cout<<endl;
}
void main()
{ int n=168;
trans(n);
} 展开
展开全部
1、B为二维数组指针,详情参考:http://zhidao.baidu.com/question/363334059.html
2、
#include <iostream.h>
void main()
{
char s[]="12134211",*p;
int v1=0,v2=0,v3=0,v4=0;
for(p=s;*p;p++)
{
switch(*p)
{
case'1':v1++; //若为1则执行词句,由于没有break语句,程序继续向下执行,v1~v4都加1
case'3':v3++; //若为2则执行词句,由于没有break语句,程序继续向下执行,v3,v2,v4都加1
case'2':v2++; //若为3则执行词句,由于没有break语句,程序继续向下执行,v2和v4都加1
default: v4++; //若为其他则执行词句,由于没有break语句,程序继续向下执行,v4都加1
}
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
数组中:
四个1,v1-v4加4次,
一个3,v3,v2,v4各加1次
两个2,v2和v4各2次
一个4,v4加1次
故最后v1=4,v2=7,v3=5,v4=8
3、显示A8
#include<iostream.h>
void trans(int x)
{
char a[10];
int i=0, rem;
do {
rem=x%16; //求除以16的余数
x=x/16; //求整除16的数
if(rem<10) a[i]=48+rem; // '0'字符的48,求出小于10的ASCⅡ
else a[i]=55+rem; // 'A'字符的ASCⅡ65,求出大于等于10的ASCⅡ
i++;
}while(x!=0);//直到x为0
while(i>=0)cout<<a[--i];//按序号从大到小显示a[i]的值
cout<<endl;
}
void main()
{
int n=168;
trans(n); //第一次rem=8<10,+48,为8的ASCⅡ码
//x=10≠0循环,第二次rem=10,+55,即为65,A 的ASCⅡ码
}
//故最后显示为A8
追问
最后一题如果我写结果等于8A可以么?
还有第一题,a+i表示的是a数组中的第i个元素,加上指针符号,意思为表示第i个元素的值,这时在加上括号外的指针符号就没有意义了,我这么说对么?
追答
不可以的,输出时从后往前输出,这个题中是连续输出a[1],a[0]即A8
第一题,我说错了,*(*(a+i)) 其中*(a+i)表示a[i]的值,,但是,*(*(a+i)) 我试了试提示错误,但它最后肯定是指针了,所以你说的也对
展开全部
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( B )不是对a数组元素的正确引用(其中0≤i<10)。
A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i])//B把a的元素当地址取其值了,错。
以下程序的输出结果是( B )。//注意没有break的csse要顺序向下执行就可得出结果。
#include <iostream.h>
void main(){
char s[]="12134211",*p;
int v1=0,v2=0,v3=0,v4=0;
for(p=s;*p;p++)
switch(*p){
case'1': v1++;
case'3': v3++;
case'2': v2++;
default: v4++;
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
A.4,2,1,1 B.4,7,5,8 C.7,3,2,1 D.8,8,8,8
#include<iostream.h>此题输出A8。这是个把十进制变为16进制的代码。
void trans(int x){
char a[10];
int i=0, rem;
do {
rem=x%16;
x=x/16;
if(rem<10) a[i]=48+rem; // '0'字符的ASCⅡ48
else a[i]=55+rem; // 'A'字符的ASCⅡ65
i++;
}while(x!=0);
while(i>=0)cout<<a[--i];
cout<<endl;
}
void main(){
int n=168;
trans(n);
}
A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i])//B把a的元素当地址取其值了,错。
以下程序的输出结果是( B )。//注意没有break的csse要顺序向下执行就可得出结果。
#include <iostream.h>
void main(){
char s[]="12134211",*p;
int v1=0,v2=0,v3=0,v4=0;
for(p=s;*p;p++)
switch(*p){
case'1': v1++;
case'3': v3++;
case'2': v2++;
default: v4++;
}
cout<<v1<<","<<v2<<","<<v3<<","<<v4<<endl;
}
A.4,2,1,1 B.4,7,5,8 C.7,3,2,1 D.8,8,8,8
#include<iostream.h>此题输出A8。这是个把十进制变为16进制的代码。
void trans(int x){
char a[10];
int i=0, rem;
do {
rem=x%16;
x=x/16;
if(rem<10) a[i]=48+rem; // '0'字符的ASCⅡ48
else a[i]=55+rem; // 'A'字符的ASCⅡ65
i++;
}while(x!=0);
while(i>=0)cout<<a[--i];
cout<<endl;
}
void main(){
int n=168;
trans(n);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询