指针巩固习题
1.该程序输出的结果为
#include<stdio.h>
int main()
{
int arr[]={1,2,3,4,5};
short *p=(short*)arr;//转化类型
int i=0;
for(i=0;i<4;i++)
{
*(p+i)=0;//short型指针+1跳过两个字节
}
for(i=0;i<5;i++)
{
printf("%d",arr[i]);
}
return 0;
}
2.程序的输出结果为
#include<stdio.h>
int main()
{
unsigned long pula[]={6,7,8,9,10};
unsigned long * pulp;
pulp=pula;
*(pulp+3)+=3;
printf("%d %d n",*pulp,*(pulp+3));
return 0;
}
3.程序的输出结果为
#include<stdio.h>
int main()
{
int a=0x11223344;
char* pc=(char*)&a;
*pc=0;
printf("%xn",a);
return 0;
}
4.写一个函数打印arr数组的内容,不使用数组下标,使用指针。
#include<stdio.h>
void prinf(int *pc,int sz)
{
int i=0;
for(i=0;i<sz;i++)
{
printf("%d",*(pc+i));
}
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int sz=sizeof(arr)/sizeof(arr[0]);
prinf(arr,sz);
return 0;
}
5.写一个函数,逆序字符串的内容
#include<stdio.h>
#include<string.h>
int main()
{
char arr[10000]={0};
//scanf("%s",arr);scanf函数遇到空格就不进行读数了
gets(arr);//fgets函数可以读取空格
int left=0;
int len = strlen(arr);
int right=len-1;
while(left<right)
{
char cmp=arr[left];
arr[left]=arr[right];
arr[right]=cmp;
left++;
right--;
}
printf("%sn",arr);
return 0;
}
6.计算求和(求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字)
#include<stdio.h>
int main()
{
int a=0;
int n=0;
int i=0;
int sum=0;
int k=0;
scanf("%d %d",&a,&n);
for(i=0;i<n;i++)
{
k=k*10+a;
sum+=k;
}
printf("%d",sum);
return 0;
}
7.