问答题
给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回-1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include<stdio.h> #include<string.h> #define N 5 #define M 8 int fun(char(*ss)[M],char*t) {int i; /**********found**********/ for(i=0;i<___________(1);i++) /*********found**********/ if(strcmp(ss[i],t)==0)return___________(2); return-1; } main() { char ch[N][M]={"if","while","switch","int","for"},t[M]; int n,i; printf("\nThe original string\n\n"); for(i=0;i<N;i++)puts(ch[i]);printf("\n"); printf("\nEnter a string for search:");gets(t); n=fun(ch,t); /*********found**********/ if(n==__________(3)printf("\nDon′t found!\n"); else printf("\nThe position is %d.\n",n); }
【正确答案】正确答案:(1)N (2)i (3)-1
【答案解析】解析:本题中函数fun的功能是在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该字符串数组中的位置,未找到则返回-1。 第一空:“for(=0;i<________1:i++)”部充循环的结束条件,fun的参数(*ss)[M]是指向N行M列的字符串数组,循环是逐行查找是否存在t所指的字符串,因此循环次数是N次,故第一空处应为“N”。第二空:“if(strcmp(ss[i],t)==0)return_________2;”说明两个字符串相同,按照题干要求,应返回该串在字符串数组中的位置i,故第二空处为“i”。第三空:“if(n==__________3)printf("\nDon't found!\n"):”,fun函数未找到则返回-1,因此这里是判断n是否等于-1,如果n等于-1标识没有找到,在屏幕上输出“Don't found!”,因此第三空处为“一1”。