按要求输出字符串。
输入格式:
第一行为一个字符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版权协议,转载请附上原文出处链接和本声明。