编程实现: 输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标 (下标从0开始);否则输出"Not Found"。输出格式为"index = %d\n"
本道题我用了两种方法,一种是逐个逐个出答案,另一种是一块出答案
一、(注:里面的两个getchar()一定要加上,不然字符串无法输入)
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
getchar();//吞噬回车键
while(n--)
{
char a,b[80];
int i=0,j;
scanf("%c",&a);
getchar();//吞噬回车键
gets(b);
for(j = strlen(b)-1;j!=0;j--)//因为要求输出重复最大的地址,故从后往前找
{
if(a == b[j])
{
printf("index = %d\n", j);
i = 1;
break;
}
}
if(i == 0)
printf("Not Found\n");
}
return 0;
}
二、(利用二维数组来存放字符串,同样要注意getchar()的位置)
#include <stdio.h>
#include <string.h>
int main()
{
int n;
scanf("%d",&n);
char str[n][80];
char c[n];
for(int i=0;i<n;i++)
{
getchar();//清除缓冲区
c[i]=getchar();
getchar();//清除缓冲区
gets(str[i]);
}
for(int i=0;i<n;i++)
{
int flag=-1;
for(int j=0;j<strlen(str[i]);j++)
{
if(str[i][j]==c[i])flag=j;
}
if(flag==-1)printf("Not Found\n");
else printf("index = %d\n",flag);
}
}
希望对大家有帮助!