第 16 题
#include <bits/stdc++.h>
using namespace std;
int n,x,y;
char op,a[1000],b[1000];
int deal () {
switch(op) {
case '+':return x+y;
case '-':return x-y;
case '*':return x*y;
}
}
int main() {
scanf ("%d\n",&n) ;
while(n--) {
gets(a) ;
switch(a[0]) {
case 'a':op='+';sscanf(a+2, "%d%d", &x, &y);break;
case 'b':op='-';sscanf(a+2, "%d%d", &x, &y);break;
case 'c':op='*';sscanf(a+2, "%d%d", &x, &y);break;
default :sscanf (a, "%d%d",&x,&y) ;
}
sprintf(b, "%d%c%d=%d",x,op,y,deal());
puts(b);
printf("%d\n",strlen(b));
}
return 0;
}
假设输入一个整数n(1≤n≤50)。接着的n行为需要输入的算式,每行可能有三个数据或两个数据。若该行为三个数据则第一个数据表示运算类型,a表示加法运算,b表示减法运算,c表示乘法运算,接着的两个数据x,y表示参加运算的运算数。若下一行为两个数据x,y,则表示本题的运算类型与上一题的运算类型相同,而这两个数据为运算数。
数据保证第一个算式有三个数据。完成下面的判断题和选择题:
注:↓ 为回车符
判断题
第 16 题 sscanf与scanf 类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符数组为输入源。( )
第 17 题 第13行scanf("%d\n",&n);改成scanf("%d" ,&n) ;程序运行结果不变。( )
第 18 题 第15行gets(a) ;改成geline(cin,a);程序运行结果不变。( )
第 19 题 第23行put(b);改成cout<
第 20 题 若输入1↓d 64 64↓则输出为( )。
第 21 题 若输入2↓a 64 46 则输出为( )。
第 23 题
#include <bits/stdc++.h>
using namespace std;
struct Big_int {
int a[1000], len;
Big_int() {
memset(a,0,sizeof(a));
len=1;
}
Big_int(string s) {
len=s.size();
for(int i=len; i>=1; i--) a[i]=s[len-i]-'0';
}
void print() {
int i=len;
for(; i>1; i--) if(a[i]>0) break;
for(int j=i; j>=1; j--) cout<<a[j];
}
Big_int operator+ (const Big_int &x) {
Big_int ans;
ans.len= (len>x.len?len:x.len) ;
for(int i=1; i<=ans.len; i++) {
ans.a[i]+=a[i]+x.a[i];
ans.a[i+1]+=ans.a[i]/10;
ans.a[i]%=10;
}
if (ans.a[ans.len+1]>0) ans.len++;
return ans;
}
};
string s;
int main() {
cin>>s;
Big_int a(s);
cin>>s;
Big_int b(s);
Big_int c=a+b;
c.print();
return 0;
}
判断题
第 23 题 C++语言中,struct默认是public 的,而class默认是private的。( )
第 24 题 第06行memset的作用是对a数组里的所有元素设置为0,因为a数组里的元素是int类型的,所以memset是以4个字节为一组进行设置的。( )
第 25 题 第07行len=1;改成len=0;程序的运行结果不变。( )
第 26 题 去除第14行int i=len;将这句话写入第15行,改成for(int i=len;i>1;i--),程序的运行结果不变。( )
第 27 题 第18行Big_int operator +(const Big_int &x)改成Big_int operator + (Big_int x),程序的运行结果不变。( )
第 28 题 第22行ans.a[i]+=a[i]+x.a[i];改成ans.a[i]=a[i]+x.a[i],程序的运行结果不变。( )
第 29 题 若输入010 ↓ 0090 ↓则输出为( )。
第 31 题
#include<bits/stdc++.h>
using namespace std ;
const int maxn = 1000005;
int n,m;
int w[maxn],c[maxn];
int f(int m,int n) {
if(n==0) return 0;
int x=f (m,n-1) ;
int y=0;
if(m-w[n]>=0) y=f(m-w[n],n-1)+c[n];
return max(x,y);
}
int main() {
cin>>m>>n;
for(int i=1; i<=n; i++)
cin>>w[i]>>c[i];
cout<<f(m,n);
return 0;
}
假设输入的n是不超过200的正整数,m是不超过30的正整数,w[i]、e[i]都是不超过5000的正整数,完成下面的判断题和单选题:
第 31 题 main函数里的m和n变量,与f函数里面的m和n变量,占用内存中的不同空间。( )
第 32 题 输入m为0,此程序可能会死循环或发生运行错误。()
第 33 题 若输入2 2 1 2 3 4则输出为( )。
第 34 题 若输入10 2 1 2 3 4则输出为( )。
第 35 题 若输入10 4 2 1 3 3 4 5 7 9则输出为( )。
第 36 题 (4分)若输入20 10,接下来的输入是1到20,则输出为( )。