C语言的题目 求救

2025-04-17 21:44:09
推荐回答(2个)
回答1:

int a[5]={2,4,6,8,10},*P,* *k;这句话等价于

int a[5]={2,4,6,8,10};
int *P;
int **k;

这三句。

a是一个数组
p是一个int指针
k是一个指向int指针的指针

p=a; //p指向a数组的首地址
k=&p; //取p指针的地址给k。

printf("%d",*(p++));//p++表达式返回的是当前的p值,即数组首地址。解引用后实际上输出的是a[0]
输出为2
但是输出完了之后其实p要自增,指向a[1]

printf("%d\n",* *k);//* *k等价于*(*k)。对k解引用为p。所以*(*k)等价于*p。这时p指向的是a[1]
所以输出为4

总结输出为24

回答2:

#include
void main()
{
int a[10]={16,3,7,6,22,13,7,6,14,8};
int b[10]={0};
int i;
for(i=0;i<10;i++)
{
b[i]=1200+a[i]*180;
}
for( i=0;i<10;i++)
{
printf("工龄:%2d 工资:%d\n",a[i],b[i]);
}
}