作业帮 > 综合 > 作业

若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/06/06 01:05:04
若有语句int
a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i
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)) 我试了试提示错误,但它最后肯定是指针了,所以你说的也对