字符串输出

按要求输出字符串。

输入格式:

第一行为一个字符c(只可能是大写字符或小写字符)
第二行为一个整数n(1<n<20),代表测试数据组数。
后边是n行,每行一个字符串(字符串中只包含大写字母或小写字母,且长度小于60),为n组测试数据。

输出格式:

若干行(至少一行),每行对应输入的n行字符串,如果c在该行字符串中出现过两次或两次以上(无论大写或小写只要字母一样就算出现一次),则该字符串被输出,否则该字符串不能被输出。如果输出的字符串超过一个,则每个字符串占一行且后输入的先输出。

#include <stdio.h>
#include <string.h>
/* 函数声明 */
int CountNum(char *a,char n);

int main()
{
	char c,a[100][1000]; 
	int n,i,ans[100]={0};
	scanf("%c %d",&c,&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",a[i]);
		ans[i]=CountNum(a[i],c);
//		if(ans[i]>=2) 
//		puts(a[i]);		注意题目要求,里面有一句话是后输入的先输出,所以要分开写输出 
	}
	for(i=n-1;i>=0;i--)
	{
		if(ans[i]>=2)
		{
			puts(a[i]);//用puts不用再换行了 
		 } 
	}
	
	return 0;
}	
int CountNum( char *a,char c)	//整个复制上一道题的那个函数 ,但是这道题出现了大写的 
 {
 	int i,ans=0;
 		for(i=0;a[i]!='\0';i++)//循环整个数组,数组结束标志是\0 
		 {
		 	if((a[i]==c)||a[i]==c+32||a[i]==c-32)//如果有其他字符,要考虑到大小写边界问题,这个题就不用了 
		 	ans++;
		  }
	return ans; 
 }
 

或者

#include<stdio.h>
 #include <string.h>
 int main (){
     int n,i,j,count;
     char c;
     char a[100];
     scanf("%c",&c);
     scanf("%d",&n);
     for(i=0;i<n;i++){
         scanf("%s",&a[i]);
         for(i=n-1;i>=0;i--){
             for(j=0;j<=100;j++)
                 if (a[j]==c||a[j]==c-32)
                    count ++;         }
         if(count>=2)
             printf("%s",a);
        
     }
     return 0;
     
 }


版权声明:本文为m0_63269363原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。