欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言实例011

程序员文章站 2024-03-07 16:12:27
...

大家好,我是一童,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