您的位置:首页 > 其它

字符类题之反射

2016-06-19 14:01 281 查看
题目描述我们都知道人眼对自然界中的景物有不同的彩色感觉是因为日光(光源)包含有各种波长的可见光,同时景物又具有不同的反射(或透射)特性的缘故。例如:西红柿具有反射红色光谱成分的特性,在太阳光照射下其中的红色成分(吸收了其他光谱成分),所以人眼看到的西红柿是红色的。如果把西红柿放到蓝光下,照射到西红柿上的蓝光被它吸收了,人眼看到的将是黑色的西红柿。输入我们在每组测试数据的第一行有一个字符,表示某个景物能够反射的颜色,第二行输入的是一行字符串(长度不超过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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: