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;
}
}
- 二维数组的查询
#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
上一篇: java反射原理制作对象打印工具
下一篇: java算法实现预测双色球中奖号码