C语言第七章习题汇总(19道)

1.求a的首地址
#include<stdio.h>
void main()
{
	int a,b;
	a=100;
	b=100;
	printf("a=%-6d",a);
	printf("b=%-6d",b);
	printf("a=%-6d\n",&a);
	//&a求出的是a的首地址
}
2.定义一个指针变量
#include<stdio.h>
void main()
{
	int a,b;
	int*p,*q;
	a=100;
	b=100;
	p=&a;q=&b;
	printf("a=%-6d",a);//*&a相当于a
	printf("b=%-6d",b);
	printf("&a=%-6d",p);//&*p相当于p
//若为printf("&a=%-6d",*p);则会求出a的值
	printf("&b=%-6d\n",q);
}
3.通过指针变量访问整形变量
#include<stdio.h>
void main()
{
	int a,b;
	int*p,*q;
	a=100;
	b=10;
	p=&a;q=&b;
	printf("a=%-6d",a);
	printf("b=%-6d",b);
	printf("*p=%-6d",*p);
	printf("*q=%-6d\n",*q);
}
4.输入两个整数,按从大到小的顺序输出
#include<stdio.h>
void main()
{
	int a,b;
	int*p1,*p2,*P;
	scanf("%d%d",&a,&b);
	p=&a;q=&b;
	if(a<b)
	{
		P=p1;
		p1=p2;
		p2=P;
	}
	printf("a=%-6d",a);
	printf("b=%-6d",b);
	printf("p=%-6d",*p1);
	printf("q=%-6d\n",*p2);
}
5.利用指针作为函数参数实现交换两个变量的值(1)
#include<stdio.h>
void swap(int *p1,int *p2)
{
	int p;
	p=*p1;
	*p1=*p2;
	*p2=p;
}
void main()
{
	int a,b;
	int*p1,*p2;
	scanf("%d%d",&a,&b);
	p1=&a;p2=&b;
	if(a<b)
	swap(p1,p2);
	printf("a=%-6d",a);
	printf("b=%-6d",b);
}
6.利用指针作为函数参数实现交换两个变量的值(2)
#include<stdio.h>
void swap(int *p1,int *p2)
{
	int p;
	p=*p1;
	*p1=*p2;
	*p2=p;
}
void main()
{
	int a,b;
	scanf("%d%d",&a,&b);
	if(a<b)
	swap(&a,&b);
	printf("a=%-6d",a);
	printf("b=%-6d",b);
}
7.指针与数组的联系 组合(1)
#include<stdio.h>
void main()
{
	int a[5],i;
	int*p;
	p=a;
	for(i=0;i<5;i++)
		scanf("%d",&a[i]);
	for(i=0;i<5;i++)
		printf("%4d",*(p+i));
}
8.指针与数组的联系 组合(2)
#include<stdio.h>
void main()
{
	int a[5],i;
	int*p;
	for(i=0;i<5;i++)
	{scanf("%d",&a[i]);
	p=&a[i];	
	printf("%8d",*p);}	
}
9.指针与数组的联系 组合(3)
#include<stdio.h>
void main()
{
	int a[5],i;
	int*p;
	p=a;
	for(i=0;i<5;i++)
	{scanf("%d",&a[i]);
	}	
    for(p=a;p<a+5;p++)
		printf("%4d",*p);
}
10.输出二维数组的全部元素
#include<stdio.h>
void main()
{
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},i,j;
	int(*p)[4];
	p=a;//相当于p=&a[0];
	for(i=0;i<3;i++)
	{	for(j=0;j<4;j++)
		printf("%-4d",*(*(p+i)+j));
		printf("\n");}
}
11.输入数组的全部元素
#include<stdio.h>
void main()
{
	int a[5]={1,3,5,7,9},i,*p;
	p=a;
	for(i=0;i<5;i++)
		printf("%-4d",a[i]);
	printf("\n");
	for(i=0;i<5;i++)
		printf("%-4d",*(a+i));
	printf("\n");
	for(i=0;i<5;i++)
		printf("%-4d",*(p+i));
	printf("\n");
	for(;p<a+5;p++)
		printf("%d",*p);
}
12.定义一个字符数组,用初始化的方式存放一个字符串,然后输出该串。(1)
#include<stdio.h>
void main()
{
	char s[]="hdkur";
	char*p;
	p=s;
	printf("%s\n",p);
}
13.定义一个字符数组,用初始化的方式存放一个字符串,然后输出该串。(2)
#include<stdio.h>
void main()
{
	char *p="hello";
	printf("%s\n",p);
}
14.探究行指针和列指针的不同
#include<stdio.h>
void main()
{
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	int i,j;
	for(i=0;i<3;i++)
	{	for(j=0;j<4;j++)
			printf("%-4d",a[i][j]);
	printf("\n");}
		printf("%d\n",a);//行指针
		printf("%d\n",a+1);//地址加16
		printf("%d\n",a[0]);//列指针
		printf("%d\n",a[0]+1);//地址加4
}
15.定义一个行指针输出三行四列
#include<stdio.h>
void main()
{
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	int i,j;
	int (*p)[4];
	p=a;
	for(i=0;i<3;i++)
	{	for(j=0;j<4;j++)
			printf("%-4d",*(*(p+i)+j));
	printf("\n");}
		printf("%d\n",a);
		printf("%d\n",a+1);
		printf("%d\n",a[0]);
		printf("%d\n",a[0]+1);
}
16.定义一个列指针输出三行四列
#include<stdio.h>
void main()
{
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	int i;
	int *p;
	p=a[0];
	for(i=0;i<12;i++)
	{
		if(i%4==0)
			printf("\n");
		printf("%-4d",*(p+i));
	}
	printf("\n");
		printf("%d\n",a);//行指针
		printf("%d\n",a+1);//地址加16
		printf("%d\n",a[0]);//列指针
		printf("%d\n",a[0]+1);//地址加4
}
17.定义一个指针型数组(1)
#include<stdio.h>
void main()
{
	int a=100,b=200;
	int *p[2];
	p[0]=&a;p[1]=&b;
	printf("%d\n",*p[0]);
	printf("%d\n",*p[1]);
}
18.定义一个指针型数组(2)
#include<stdio.h>
void main()
{
	int a=100,b=200,i;
	int *p[2];
	p[0]=&a;p[1]=&b;
	for(i=0;i<2;i++)
		printf("%d\n",*p[i]);
}
19.
#include<stdio.h>
void main()
{
	char *s[2];
	s[0]="abcdefg";
	s[1]="123456";
	printf("%s\n",s[0]);
	printf("%s\n",s[1]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值