字符类题之反射

题目描述


我们都知道人眼对自然界中的景物有不同的彩色感觉是因为日光(光源)包含有各种波长的可见光,
同时景物又具有不同的反射(或透射)特性的缘故。例如:西红柿具有反射红色光谱成分的特性,
在太阳光照射下其中的红色成分(吸收了其他光谱成分),所以人眼看到的西红柿是红色的。如果
把西红柿放到蓝光下,照射到西红柿上的蓝光被它吸收了,人眼看到的将是黑色的西红柿。


输入

我们在每组测试数据的第一行有一个字符,表示某个景物能够反射的颜色,第二行输入的是一行
字符串(长度不超过1000),表示一组照射到该景物上的光源(长度不超过26)。问,是否有光源
照射到景物上能够显示出景物的颜色,如果有则将每个光源按行输出,没有则输出“No!”。
有多组测试数据,每组测试数据的输出结果用一行空行分割开来。


输出


样例输入

r
ogr bg abc r
e
oga bw

样例输出

ogr
r

分析:
查找有空格字符串中,有某字符的子串,并输出该字串!

AC代码如下:

#include "stdio.h" 
#include "string.h"

int main(int argc, char* argv[]) 
{ 
	char a[1100],b[50]; 
	char c; 	
	int i,j,k,l,ss=0;
	int flag;//标记是否有该字符
	int ff;//标记是否已输出该字符,作用是为了解决一种特例,   r    “asdr sdr r sd”
	while(scanf("%c",&c)!=EOF) 
	{ 	
		getchar(); 	
		gets(a); 	
		ff=0; 	
		if (ss++)     //按要求输出换行 	
		{ 		
			printf("\n"); 	
		} 	
		for (i=0;i<(int)strlen(a);i++) 	
		{ 		
			if (i==0) 		
			{ 	
				k=0; 		
				flag=0; 			
				l=i; 				
				while(a[l]!=' '&&l<(int)strlen(a)) 	
				{ 				
					if(a[l]==c) flag=1; 	
					b[k++]=a[l]; 		
					l++; 			
				} 				
				if (flag) 		
				{ 				
					ff=1; 			
					for (j=0;j<k;j++) 	
					{ 					
						printf("%c",b[j]); 	
					} 				
					printf("\n"); 			
				} 		
			} 		
			else 	
			{ 			
				k=0; 	
				flag=0; 		
				l=i; 			
				if (a[l]==' ') 		
				{ 			
					l++; 	
					while(a[l]!=' '&&l<(int)strlen(a)) 	
					{ 					
						if(a[l]==c) flag=1; 
						b[k++]=a[l]; 				
						l++; 				
					} 				
					if (flag) 		
					{ 					
						ff=1; 				
						for (j=0;j<k;j++) 	
						{ 					
							printf("%c",b[j]); 	
						} 					
						printf("\n"); 				
					} 			
				} 		
			} 	
		} 	
		
		if (flag==0&&ff==0) 	
		{ 		
			printf("No!\n"); 
		} 
	} 
	return 0; 
}



 
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值