C语言实例011

大家好,我是一童,N-S图先不画了,刚按好Visio,改天再说,哈哈哈。今天分享的内容大部分关于指针,分别是统计一句话中的单词数,简单的指针输出数组,利用指针逆序输出数组,二维数组的查询(利用指针变量p指向包含n个整形元素的一维数组)

1.字符数组的应用,单词数统计

#include <stdio.h>/*输入一句英文,用空格隔开,判断单词数*/
#define N 100
void main()
{
	char str[N],c;
	int i,num=0,word=0;
	printf("请输入一句英文: ");
	gets(str);
	for(i=0;(c=str[i])!='\0';i++)//只要不按回车键,一直循环
		if(c==' ')
			word=0;//如果是空格字符,word置0
		else if(word==0)//如果不是空格且word原值为0
		{
			word=1;//置1
			num++;
		}
		printf("一共有%d个单词!\n",num);
}

2.简单的指针输出数组

#include <stdio.h>
#define N 5
void main()
{
	int i,a[N],*p;
	puts("输入数组元素: ");
	p=a;
	for(i=0;i<N;i++)
	scanf("%d",p++);
	p=a;//注意!!!p的起始值是a+10,故重新赋值
	puts("输出数组:\n");
	for(i=0;i<N;i++,p++)
		printf("%d ",*p);
	puts("\n");
}

3.利用指针逆序输出数组

#include <stdio.h>//利用指针逆序输出数组
#define N 1000
void Lv(int a[N],int n);//函数声明
void main()
{
	while(1)
	{
	int a[N],i,*p,n;
	puts("请输入数组大小: ");
	scanf("%d",&n);
	puts("请输入数组元素:");
	for(p=a;p<a+n;p++)
		scanf("%d",p);
	puts("\n");
	Lv(a,n);//函数调用
	puts("逆序输出数组: ");
	for(p=a;p<a+n;p++)
		printf("%d",*p);
	puts("\n");
}
}
void Lv(int a[N],int n)//自定义函数
{
	int *i,*j,*p,t,m=(n-1)/2;//m中间数
	i=a;
	j=a+n-1;
	p=a+m;
	for(i=a;i<=p;i++,j--)//i从左至右移动,j从右至左移动
	{
		t=*i;
		*i=*j;
		*j=t;
	}

}
  1. 二维数组的查询
#include <stdio.h>//指针变量p指向包含n个整形元素的一维数组
#define ROWS 100
#define COLS 100
void main()
{
	int a[ROWS][COLS],n,m,i,j,k,(*p)[COLS];
	p=a;
	printf("输入二维数组的行:");
	scanf("%d",&n);
	printf("\n");
	printf("输入二维数组的列:");
	scanf("%d",&m);
	printf("\n请输入二维数组元素:");
		for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
			scanf("%d",*(p+i)+j);
	}
	printf("\n输出二维数组:\n");
		for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
			printf("%d ",*(*(p+i)+j));
			if(j%m==0)
			printf("\n");
	}
		printf("请输入你要查询数组的行和列:\n");
		printf("Row= ");
		scanf("%d",&i);
		printf("Col= ");
		scanf("%d",&j);
		printf("\n您要查询的数值a[%d][%d]=%d",i,j,*(*(p+i-1)+j-1));
		printf("\n");
}

好了,今天先分享这些,有不懂滴 | | 写错滴 欢迎下方留言!!1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值