1 solutions

  • 0
    @ 2025-3-3 16:33:58

    C :

    #include<stdio.h>
    #include<string.h>
    int main(void){
    	char a[20][10],c;   //二维字符数组a用来存放每个单词 :第一个单词就是a[0]  以此类推 
    	int i=0,j=0,n=0,count=0;    //n为空格的数目  n+1就是单词的个数  count为字母的个数   
    	while((c=getchar())!='.'){   //如果输入的是'.'   就不会进入循环 这样就可以避免存入字符 点 
    		if(c!=' '){          
    			count++;  //如果输入的字符是字母  count++ 
    			a[i][j]=c;   //注意 第一次进入该循环的时候  i,j都是0(已经初始化了)   此时的i代表的是二维字符数组中第几个一位字符数组 
    			j++;    
    		}else{
    			a[i][j]='\0';   //如果输入的是空格 代表这个单词已经结束  因为后面使用的是字符串输出,所以在一维字符数组后面需要加上一个'\0' 
    			i++;    //i++   这个一位字符数组已经放入单词了   换下一个 
    			j=0;    //新的单词  新的j 
    			n++;    //记录空格的个数 
    		}
    	}
    	a[i][j]='\0';//因为最后一个单词后面没有空格了  所以我们要手动加上'\0'  不然后面的strcmp函数没办法用 
    	//到这里为止   我们已经成功将这一行字符  拆分成各个单词存放于二维数组a中
    	char b[10];   //b为输入的字符串  用于对比
    	//  i是从0开始的   所以目前  i+1的值就是单词的个数   i也就是a数组的最大有效下标(下标从0开始)
    	//如果不懂  那就用n+1  一个意思    n+1=i+1
    	scanf("\n");  //在你输入第二行之前 按了回车   
    	gets(b);
    
    	 for(i=0;i<=n;i++){
    	 	if(strcmp(a[i],b)==0){
    		  printf("%d",i+1);   //如果相等,就输出是第几个单词  i+1  显而易见 
    		  break; 
    		  } 
    	 }
    	 if(i>n)  printf("%d",count);//如果i>n  说明没找到  输入字母的个数 
    	return 0;
    } 
    

    Python :

    s=input()
    f=input()
    s=s[0:len(s)-1] #截掉最后的.
    list=s.split()
    c=0
    flag = 0
    for i in range(0,len(list)):
        c = c + len(list[i])
        if list[i]==f:
            flag=1
            print(i+1)
            break
    
    if flag==0: print(c)
    
    • 1

    Information

    ID
    10810
    Time
    1000ms
    Memory
    16MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By