1.
#include<cstdio>
using namespace std;
int findvall(int n)
{
int f;
if(n==0) return 1;
else
{
f=findvall(n/2);
}
return (n*f);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n" ,findvall(n));
return 0;
}
判断题
1) 第6行输出if(n==0)改成if(n==1)时,对于输入的正整数n,输出结果不会改变。( )
2) 对于输入的正整数程序输出的值小于等于n。()
3) 如果输入的n是负数的话,该程序会出现死循环,所以该程序不能求解n是负数的情况。( )
4) 如果多次运行该程序,并且输入的n是单调递增的正整数,那么每次输出的结果也是一个严格单调递增的数列。( )
选择题
5) 若两次输入n的值相差1,但输出的结果却是一个正数,一个负数,那么两次输入的n可能是下面四组中的( )。
6) 此程序的时间复杂度是( )。
2. 输入一串由小写字母组成的字符串,根据程序判断或选择正确的答案。
#include<cstdio>
#include<cstring>
using namespace std;
int main( ) {
char str[60];
int len,i,j,chr[26];
char mmin='z';
scanf("%s",str);
len = strlen(str);
for (i=len-1; i>=1; i--)
if(str[i-1]<str[i]) break;
if(i==0) {
printf("No result! \n");
return 0;
}
for(j=0; j<i-1; j++) putchar(str[j]);
memset(chr, 0, sizeof(chr));
for(j=i; j<len; j++) {
if(str[j]> str[i-1] && str[j] < mmin)
mmin = str[j];
chr[str[j]-'a']++;
}
chr[mmin-'a']--;
chr[str[i-1]-'a']++;
putchar(mmin);
for(i=0; i<26; i++)
for (j=0; j<chr[i]; j++)
putchar(i + 'a');
putchar('\n');
return 0;
}
判断题
1) 输入的字符串长度应该在[1,59]的范围内。( )
2) 如果输入的字符数组所有字符都是从大到小的,那么会输出"No result!"。( )
3) 第25行输出的值为输入字符串里的ASCII最小的那个字符。()
4) 第26行到第28行是把chr[]数组中存在的对应字符按照从小到大输出,即把剩下未输出的字符按照从小到大输出。()
选择题
5) 如果输入的是abcdzdcba,则第16行输出的是( )
6) 如果程序的输出结果是"fhhggh",则输入有可能是()
3. 本题是一款模拟贫吃蛇程序,游戏是在一个a*a的网格上进行的。其中输入第一行一个整数a。第二行两个些数n和m。接下来是n行,每行第一个数为opt,表示操作编号。接下来的输入的变量与操作编号对应,输出:即第m秒过后的地图,蛇所在的位置输出
“o”,其余位置输出“.”以换行结尾。
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
int a,mp[101][101];
int t[100003] ;
int y[100003] ;
int cnt;
int len=2,dir=3,die=0;
const int dx[5] = {0,0,-1,0,1};
const int dy[5] = {0,-1,0,1,0};
int nx=0, ny=1;
int px=1, py=2;
int check(int x, int yy)
{
if(x<1||x>a||yy<1||yy>a)
return 1;
if(cnt+1-mp[x][yy] < len)
return 1;
return 0;
}
void work()
{
if(die) return;
px += nx;
py += ny;
die=check(px,py);
if(die) return;
mp[px][py]= ++cnt;
}
void show()
{
for(int i= 1; i<=a; ++i)
{
for(int j=1; j<=a; ++j)
{
if(mp[i][j] != 0&& mp[i][j]>= cnt-len+1)
putchar('o');
else
putchar('.');
}
puts("");
}
}
int main()
{
mp[1][1]= ++cnt;
mp[1][2]= ++cnt;
int n,m,op,xx;
char s[3];
scanf("%d",&a);
scanf("%d%d",&n, &m);
while(n--)
{
scanf("%d%d",&op,&xx);
if(op==1)
{
t[xx]=1;
scanf("%s",s);
if(s[0]=='L')
y[xx]= 1;
else if(s[0]=='U')
y[xx]= 2;
else if(s[0]=='R')
y[xx]= 3;
else
y[xx]= 4;
}
else
{
t[xx]= 2;
}
}
for(int tm=1; tm<=m; ++tm)
{
if(t[tm]==1)
{
if(y[tm]%2!= dir%2)
{
dir = y[tm];
nx = dx[y[tm]];
ny = dy[y[tm]];
}
}
else if(t[tm]==2)
{
++len;
}
work();
if(die)
{
break;
}
}
show();
return 0;
}
判断题
1) (2分)由程序代码可知,贪吃蛇的初始长度为2,蛇头和蛇尾分别在坐标[1,2]、[1,1]处。( )
2) (2分) check函数是用来检测蛇是否吃到果实的。( )
3) (2分)第54行及第58行输入1 x y表示在第x秒按下了y键,y为LURD中的一种,分别表示按下了左、上,右、下四种按钮。( )
4) (2分)当输入样例如下所示时:10\n10 20\n2 1\n2 2\n2 3\n2 4\n2 5\n1 6 R\n1 7 D\n1 8 L\n1 9 U最终程序的运行结果所代表的含义可表示为贪吃蛇在第9秒过后就死亡了,因此最后贪吃蛇保持的是死亡前(第7秒过后)的位置。( )
选择题
5) 若输入地图边长为x,共n次操作(x>n),则该程序时间复杂度为( )