物联1243陈灿阳
1. 编程题
采用递归方法求下面多项式:其中n和x为任意正整数。在主函数中输⼊数据并调⽤函数得到结
果
代码
#include <stdio.h>
int func(int n,int x)
{
if(n==0)
{
return 0;
}
else if(n==1)
{
return x;
}
else if(n>1)
{
x = (2*n-1)*func(n-1,x) - (n-1)*func(n-2,x)/n;
return x;
}
}
int main()
{
int n,x;
scanf("%d %d",&n,&x);
printf("%d",func(n,x));
return 0;
}
运行截图
解释:
使用递归函数,使得函数不断调用自身得出最后结果
2. 填空题
下⾯程序执行后的输出结果是( ),并给出简单解释。
我的回答
(1)结果为:5335
(2)简单解释:main函数中swap1(1)将数组a[2]的两个值进行交换,swap2(b[0],b[1])只是将b[0],b[1]两个值赋给了c0,c1,并没有改变数组内的值
3. 选择题
以下叙述中错误的是( ),并给出简单解释。
我的回答
(1)结果为:C、E、F
(2)简单解释:C.编译器不会给出”下标越界“的信息。 E.通常为整型表达式,而不是任何类型的表达式。 F.不指定数组的大小,也不赋初值,编译器是无法自动分配内存大小的。
4. 选择题
以下对⼀维数组、⼆维数组,不正确的定义+初始化的选项有哪些?给出简单解释
我的回答
(1)结果为:B、E、H
(2)简单解释:B.定义y的长度为5,但赋初值时却赋了6个值。 E.应使用花括号,而不是双引号。 H.数组第一维为2,却有三个子列表
6. 编程题:
描述:计算A与B的交集. 读⼊集合A的⾮零整数 ,集合B的⾮零整数
。要求:计算A与B的交集 ,再以由⼩到⼤的升序输出 中的
元素,如果 为空,则输出{}。
代码
#include<stdio.h>
int panduan=0;
void swap(int *a,int *b){//交换
int t=*a;*a=*b;*b=*a;
}
void dingyi(int a[],int len){//输入
int i;
for ( i = 0; i < len; i++){
scanf("%d",&a[i]);
}
}
void daying(int a[],int len){//输出
int i;
if(panduan==1)
{
for ( i = 0; i < len; i++){
printf("%d ",a[i]);
}
printf("\n");
}
else{
printf("{}");
}
}
void chachong(int a[],int b[],int c[],int len_a,int len_b,int *len_c){//查重
int i,j,k=0;
for(i=0;i<len_a;i++){
for(j=0;j<len_b;j++){
if(a[i]==b[j]){
c[k]=a[i];k++;
panduan=1;
}
}
}
*len_c=k;
}
void paixu(int a[],int len){//排序
int i,j;
int k;
for ( i = 0; i < len; i++){
k=i;
for( j = i+1;j < len; j++){
if(a[k] > a[j])k=j;
}
swap(&a[i],&a[k]);
}
}
int main(){
int len_a,len_b,len_c=0;
int a[100],b[100],c[100];
int i;
scanf("%d%d",&len_a,&len_b);
dingyi(a,len_a);dingyi(b,len_b);
chachong(a,b,c,len_a,len_b,&len_c);
paixu(c,len_c);
daying(c,len_c);
return 0;
}
运行截图
解释
通过多个函数来实现找到a,b两个数组的交集,并赋给第三个数组,最后将第三个数组排序后进行输出