实验十一(2018) B. 实验10_5_指针数组初步

这题应该考的是字符串整体输出时的特点
反正puts()和printf(%s)也很耿直,就从给定的地址开始读取字符,读到’\0’就结束,至于给定的地址前是啥,’\0’后又是啥,他们一点也不关心
比如一个char set[]={‘a’,’\0’,‘b’,‘c’,’\0’};
你从头开始puts就出来一个a,你从b开始puts就出来bc
所以弄两个指针,一个checkPtr在碰到空格时就把它改成’\0’,同时通知printPtr打印这一句,每次碰到’\0’两个就一起越过去,printPtr总停留在某个单词的开始
遍历条件是*checkPtr不是\0,所以最后一次没有机会给printPtr打印,还要单独调用一次

#include <stdio.h>
void printWords(char *);
int main(int argc, char const *argv[])
{
	char str[10001],*strPtr=&str;
	gets(str);
	printWords(strPtr);
	return 0;
}

void printWords(char *checkPtr)
{
	char *printPtr=checkPtr;
	while(*checkPtr!='\0')
	{	
		if(*checkPtr==' ')
		{
			*checkPtr='\0';
			puts(printPtr);
			checkPtr++;
			printPtr=checkPtr;
		}
		else checkPtr++;
	}
	puts(printPtr);
}

题目描述
已知一个总长度不超过10000的字符串,字符串中只包含大写字母“A—Z”、小写字母“a—z”和空格‘ ’。空格用于分割单词,空格的个数不超过1000个。你的任务是将字符串中用空格分隔的单词打印出来。
你要按照如下要求完成任务:
1.利用指针数组指向每个单词的开始位置。
2.把字符串中单词结束后的空格改为“\0”,然后使用指针数组将每个单词打印出来。
3.不可直接输出或使用二维数组输出单词。
输入与输出要求:输入一个字符串,满足题目描述,占一行。输出这个字符串中的单词,每个单词占一行。
程序运行效果:

Sample 1:
You are great↙
You↙
are↙
great↙
Sample 2:
itisalongword↙
itisalongword↙

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值