C语言2作业参考答案
更新时间:2024-01-14 12:40:01 阅读量: 教育文库 文档下载
C语言2作业1
一、判断题 (16分)
1. C程序是由函数构成的,每一个函数完成相对独立的功能。
2分
2. 被main函数调用的函数只能是库函数。
2分
3. 只有在函数被调用时,其形式参数才临时地占有存储空间.
2分
4. 函数若无返回值,则它一定无形参.
2分
5. 如果函数类型不定义为空类型,即使在return后面没有表达式,而实际上函数也是有一个不确定的返回值的.
2分
6. 函数必须有形参
2分
7. 函数必须有return语句
2分
8. 函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5
2分
二、选择题 (18分)
1.一个数据类型为void的函数中可以没有return语句,那么函数被调用时( ).
[A]
2分
A. 没有返回值 B. 返回一个系统默认值 C. 返回值由用户临时决定 D. 返回一个不确定的值
2.在C语言中,函数的数据类型是指____。
[A]
2分
A. 函数返回值的数据类型 B. 函数形参的数据类型 C. 调用该函数时的实参的数据类型 D. 任意指定的数据类型
3.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是____。
[D]
2分
A. 函数调用可以作为独立的语句存在 B. 函数调用可以作为一个函数的实参 C. 函数调用可以出现在表达式中 D. 函数调用可以作为一个函数的形参
4.阅读下面程序段,则执行后输出的结果是____。 #include
{ int m=4,n=2,k; k=fun(m,n);
printf(\}
int fun(int m,int n) {
return(m*m*m-n*n*n); }
[C]
A. 64 B. 8 C. 56 D. 0
2分
5.编写求两个双精度数之和的函数,选项中正确的是____。 A)double add(double a,double b) { double s; s=a+b;
return s; }
B)double add(double a,b) { double s; s=a+b;
return (s);}
C)double add(double a double b) { double s; s=a+b; returns;} D)double add(a,b) { double a,b,s; s=a+b;
return (s);}
[A]
A. A B. B C. C D. D
2分
6.现有如下程序段 #include
{ int a=24,b=16,c; c=aa(a,b);
printf(\}
int aa(int x,int y) { int w; while(y) { w=x%y; x=y; y=w; }
return x; }
则程序段的输出结果是____。
[D]
A. 5 B. 6 C. 7 D. 8
2分
7.函数的值通过return语句返回,下面关于return语句的形式描述错误的是____。
[C]
2分
A. return 表达式; B. return (表达式);
C. 一个return语句可以返回多个函数值 D. 一个return语句只能返回一个函数值
8.阅读下面程序,则执行后的结果为____。 #include
{ fun3(fun1(),fun2());} fun1()
{ int k=20; return k;} fun2()
{ int a=15; return a;}
fun3(int a,int b) { int k;
k=(a-b)*(a+b); printf(\
[B]
2分
A. 0 B. 175 C. 184 D. 编译不通过
9.阅读下列程序,则执行后输出的结果是____。 #include
printf(\
[A]
A. 1 B. 2 C. 6 D. 12
2分
三、程序设计题 (30分) 1. 第5章 四、1
10分
题目描述
输入一个整数x,输出下面分段函数f(x)的值。要求将分段函数的计算定义成函数。当x>0时 f(x)=1;当x=0时 f(x)=0;当x<0时 f(x)=-1。
输入描述
输入一个整数
输出描述
输出分段函数f(x)的值
样例输入
100
样例输出
f(100)=1 【参考答案1】 #include
int f(int x) // 函数定义 {
if(x>0) return 1;
else if(x==0) return 0; else return -1; }
void main() { int x,y;
scanf(“%d”,&x); y=f(x); // 函数调用
printf(\}
【参考答案2】 2. 第5章 四、4
10分
#include
输入三个数,输出它们的最小值。要求定义一个函数,返回两个数的最小值。
输入描述
输入三个实数中间用空格间隔
输出描述
输出结果保留三位小数
样例输入
5.7 98.32 -123.45678 样例输出
【参考答案2】 -123.457 【参考答案1】 #include
double min(double x,double y) { if(x void main() { double a,b,c,m; scanf(\ m=min(min(a,b),c); printf(\} 3. 第5章 四、5 10分 #include 在主函数中输入字符c和m,调用函数prn,连续将字符c输出m次。定义函数prn,完成连续将某个字符c输出m次后换行。 输入描述 先输入要输出字符,再输入一个整数,两者之间用空格间隔 输出描述 在一行中输出 样例输入 # 5 样例输出 ##### 【参考答案】 #include void prn(char c,int m) { int i; for(i=1;i<=m;i++) putchar(c); printf(\} void main() { char c; int m; scanf(\ prn(c,m); } C语言2作业2 一、判断题 (18分) 1. 函数即可以嵌套定义,又可以嵌套调用。 2分 2. 空函数没有返回值,除此之外,有些函数可以带回一个或一个以上的返回值。 2分 3. return后面括号里的表达式的值即是此函数的值。 2分 4. 定义在main函数后的任何函数都需在main中进行函数声明。 2分 5. 如果被定义函数的返回值是整型,可以不必进行声明。 2分 6. 求n!既可以用递归的方式,也可以用递推的方式。 2分 7. 递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。 2分 8. 在C语言中,所有函数之间都可以相互调用。 2分 9. 函数的递归调用不过是一个函数直接或间接地调用它自身。 2分 二、选择题 (22分) 1.在下面的函数声明中,存在着语法错误的是( ). [C] A. BC(int a, int); B. BC(int, int); C. BC(int, int=5); D. BC(int x, int y); 2分 2.以下程序的输出结果是____。 #include if(n==1||n==2)s=2; else s=n-fun(n-1); return s; } void main() { printf(\ } [A] A. 1 B. 2 C. 3 D. 4 2分 3.C语言中,若未说明函数的类型,则系统默认该函数的类型是( )。 [C] 2分 A. float型 B. double型 C. int型 D. void型 4.以下程序中有语法错误,有关错误原因的正确说法是( )。 main() {int G=5,k; void par_char(int x,int y); ?? k=par_char(G); ?? } [C] 2分 A. 语句void par_char();有错,不能用void说明函数的类型 B. 变量名G不能使用大写字母 C. 函数说明和函数调用语句之间有矛盾 D. 函数名中不能使用下划线 5.在C语言中,以下正确的说法是( )。 [D] 2分 A. 形参不占用存储单元 B. 只有当实参和与其对应的形参同名时才共占用存储单元 C. 实参和与其对应的形参共占一个存储单元 D. 实参和与其对应的形参各占用独自的存储单元 6.下列叙述中,正确的叙述项是( )。 [B] 2分 A. 定义函数时,必须要有形参 B. 函数中可以没有return语句,也可以有多条return语句 C. 函数f可以用f(f(x))形式调用,这种调用形式是递归调用 D. 函数必须有返回值 7.根据下面函数print的定义,选出调用函数print(5378)的值是( )。 void print(long n) { if (n==0) return ; else{ print(n/10); printf(\ return ; } } [A] A. 5 3 7 8 B. 8 7 3 5 C. 3 5 7 8 D. 8 7 5 3 2分 8.下述程序输出的结果是( )。 #include void fun(int a,int b,int c) { a=456;b=567;c=678; } void main() { int x=10,y=20,z=30; fun(x,y,z); printf(\} [A] A. 30,20,10 B. 10,20,30 C. 456,567,678 D. 678,567,456 2分 9.下述程序输出的结果是( )。 #include [C] A. 20 B. 21 C. 22 D. 23 2分 10.在下列程序中,调用f(8)的值是( ) int f(int n) { if(n==1) return(1); else if(n==2) return(2); else return(f(n-1)+f(n-2)); } [D] A. 13 B. 21 C. 55 D. 34 2分 11.有函数定义int fun() {return (3,4);},则调用fun后的函数返回值是____。 [B] 2分 A. 3 B. 4 C. 3和4 D. 程序出错 三、程序设计题 (20分) 1. 水仙花数2 10分 题目描述 “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。现在要求输出所有在m和n范围内的水仙花数。 (100<=m<=n<=999)。 编程要求,要求编写一个判断水仙花数的函数,在主函数调用该函数判断某个数是否为水仙花数。 输入描述 输入数据包括两个整数m和n 输出描述 要求输出所有在给定范围内的水仙花数如果有多个,则要求在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no;(注意:输出字母小写) 样例输入 样例输入1: 100 999 样例输入2: 200 300 样例输出 样例输出1: 153 370 371 407 样例输出2: no 【参考答案】 #include int isflower(int x) // 判断整数x是否水仙花数 { int a,b,c; a=x; b=x/10; c=x/100; if (a*a*a+b*b*b+c*c*c==x) return 1; // 若是水仙花数返回1,否则返回0 else return 0; } void main() { int n,m,i,c=0; // 变量c统计水仙花数个数 scanf(\ for(i=m;i<=n;i++) { if (isflower(i)==1) { printf(\ c++; // 或c=1; 则用变量c标识有否水仙花数 } } if (c==0) printf(\// 若在此范围内无水仙花数,则输出no } 2. 计算x的n次幂2 10分 题目描述 输入一个实数x和一个整数n(n≥0),计算x的n次幂。要求将计算x的n次幂定义成函数,不允许使用库函数pow。 输入描述 一个实数和一个整数,中间用空格间隔 输出描述 输出结果保留三位小数 样例输入 2.4 3 样例输出 13.824 【参考答案1】 #include double mypow(double x,int n) { int i; double y; for(i=y=1;i<=n;i++) y=y*x; return y; } void main() { int n; double x,y=1; scanf(\ y=mypow(x,n); printf(\} 【参考答案2】 #include else printf(\} 2. 双胞胎数 10分 题目描述 除1和它本身外,不能被其它整数整除的正整数称为素数(注:1不是素数,2是素数)。若两素数之差为2 ,则称两素数为双胞胎数,给定一段连续的正整 数,请判断其中有多少对双胞胎数。要求将判断某数是否素数写成函数。 输入描述 输入数据包含2个正整数A和B(0 输出描述 请判断并输出[A,B]范围内一共有多少对双胞胎数。 样例输入 31 601 样例输出 22 【参考答案】 #include if(x<2) return 0; k=sqrt(x); for(i=2;i<=k;i++) if (x%i==0) return 0; return 1; } void main() { int i,n=0,a,b; scanf(\ for(i=a;i<=b-2;i++) if (prime(i)&&prime(i+2)) n++; printf(\} C语言2作业4 一、选择题 (20分) 1.下列能正确定义一维数组a的语句是____。 A.int a(10); B.int n=10,a[n]; C.int n;scanf(\,&n);int a[n]; D.#define n 10 int a[n]; [D] A. A B. B C. C D. D 2分 2.若有定义语句“int a[10];”则下列对a中数组元素正确引用的是______。 [A] A. a[10/2–5] B. a[10] C. a[4.5] D. a(1) 2分 3.设有程序: main() { int i,a[11]; printf(\给数组赋值:\\n\; for (i=0;i<=10;i++) scanf(\,( )); ... ... printf(\输出数组:\\n\; for(i=0;i<=10;i++) printf(\; } 则在程序中的两个园括号中分别应填入:______ [C] 2分 A. &a[i]和&a[i] B. a[i]和&a[i] C. &a[i]和a[i] D. a[i]和a[i] 4.阅读程序: #include { int a[2]={0},i,j,k=2; for(i=0;i 以上程序的输出结果是____。 [D] 2分 A. 1 B. 2 C. 3 D. 不确定的值 5.若定义数组int a[10] ,其最后一个数组元素为______。 [C] A. a[0] B. a[1] C. a[9] D. a[10] 2分 6.若定义数组并初始化int a[10]={ 1,2,3,4},以下哪一个不成立______。 [B] 2分 A. a[8] 的值为0 B. a[1] 的值为1 C. a[3] 的值为4 D. a[9] 的值为0 7.在定义一个一维数组时,不能用来表示数组长度的是______。 [D] 2分 A. 常量 B. 符号常量 C. 常量表达式 D. 已被赋值的变量 8.若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是______。 [D] A. 12 B. 20 C. 40 D. 80 2分 9.以下程序的输出结果是______。 #include { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf(\} [B] A. 20 B. 21 C. 22 D. 23 2分 10.有以下程序 main() { int p[7]={11,13,14,15,16,17,18}, i=0,k=0; while(i<7 && p[i]%2) { k =k+ p[i]; i++; } printf(\} 执行后输出结果是_______。 [D] A. 58 B. 56 C. 45 D. 24 2分 二、程序设计题 (20分) 1. 与平均值最接近的数 10分 题目描述 输入n(n≤20)和n个实数,输出平均值及与平均值相差最小的数(若有多个,只需输出第一个)。 输入描述 输入n和n个实数,各数之间用空格分隔 输出描述 第一行输出平均值,第二行输出与平均值相差最小的数。输出结果均保留两位小数。 样例输入 6 2.3 4 -5 8.5 -9 15 样例输出 2.63 2.30 【参考答案1】 【参考答案2】 #include { double x[N],v,d; int i,n; scanf(\ for(i=0,v=0;i for(i=1;i if(fabs(d-v)>fabs(x[i]-v)) d=x[i]; printf(\} #include 10分 题目描述 输入n(n≤20)和n个整数放在一维数组中,找出其中最大的数,将它与数组最前面的元素交换后输出这些数。 输入描述 【参考答案2】 #include { int a[20],max,k,i,n; 输出数据占一行,数据间用一个空格分开。 scanf(\样例输入 for(i=0;i scanf(\样例输出 max=a[0]; 112 99 34 78 67 k=0; // 用来记录最大元素下标 【参考答案1】 for(i=1;i if(a[i]>max) #define N 20 { max=a[i]; // max放最大元素值 void main() k=i; } // 还要记录最大元素下标 { int a[N],n; a[k]=a[0];a[0]=max; //原元素值在max中 int i,k=0,t; for(i=0;i printf(\ for(i=0;i } scanf(\ // 思考:若交换时用语句t=a[0];a[0]=max; for(i=1;i // max=t; 有何问题? if(a[k] t=a[k];a[k]=a[0]; a[0]=t; for(i=0;i printf(\ printf(\ } C语言2作业5 一、判断题 (12分) 1. 如果想使一个数组中全部元素的值为1,可以写成 int a[10]={1*10}; 2分 2. C允许对数组的大小作动态定义,即可用变量定义数组的大小。 2分 3. 数组定义 int a[10]; 也可以写成 int a(10); 。 2分 4. 在对全部数组元素赋初值时,可以不指定数组长度。 2分 5. 数组定义 int a[10]; 表示数组名为a,此数组有10个元素。 2分 6. 数组定义 int a[10]; 表示数组名为a,此数组有10个元素,第10个元素为a[10]。 2 分 二、选择题 (8分) 1.下面的程序中哪一行有错误____。 #include { float array[5]={0.0}; //第A行 int i; for(i=0;i<5;i++) scanf(\ for(i=1;i<5;i++) array[0]=array[0]+array[i];//第B行 printf(\第C行 } [D] 2分 A. 第A行 B. 第B行 C. 第C行 D. 没有 2.int a[4]={5,3,8,9};其中 a[3]的值为______。 [D] A. 5 B. 3 C. 8 D. 9 2分 (0 5分 #include int a[101]={0}; //数组a的含义:元素a[k]的值表示到k楼层的人数。 int i,x,y,z,f; scanf(\ for(i=0;i __(2)__; if(a[f]!=0) { y+=5; __(3)__; } } while(f>0) { f--; __(4)__; } printf(\} (1)答案 2分 a[k]++ (2)答案 1分 x+=6 (3)答案 1分 n-=a[f] (4)答案 1分 z+=4 2. 下面程序的功能是生成并打印某数列的前20项,输入该数列的前两项,以后每个奇数编号的项是 前两项之和,偶数编号的项是前两相差的绝对值。生成的20个数放在一维数组x中,并按每行4项的形式输出。 5分 #include { int x[21],i,j; scanf(\ i=3; do{ x[i]= __(1)__ ; x[i+1]= __(2)__; i= __(3)__; } while(i<=20); for(i=1;i<=20;i++) { printf(\ if(i%4==0) printf(\ } } (1)答案 2分 x[i-1]+x[i-2] (2)答案 2分 x[i]>x[i-1]?x[i]-x[i-1]:x[i-1]-x[i] (3)答案 1分 i+2 3. 下面程序的功能是输入10个整数, 找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的10个数。 5分 #include { int a[10], max,min,i,j,k; for(i=0;i<10;i++) scanf(\ min=max=a[0]; __(1)__ ; for(i=1;i<10;i++) if(a[i] printf(\ printf(\ for(i=0;i<10;i++) printf(\ printf(\} (1)答案 2分 k=j=0 (2)答案 2分 k=i (3)答案 1分 a[k]=max 三、程序设计题 (20分) 1. 母牛的故事 10分 题目描述 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年 初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? 输入描述 输入数据每个测试实例包括一个整数n(0 输出描述 对于每个测试实例,输出在第n年的时候母牛的数量。 样例输入 5 样例输出 6 【参考答案】 #include { int a[55],n,i,j,x; a[1]=1;//第1年一头母牛 scanf(\ for(i=2;i<=n;i++) if(i<=4) a[i]=a[i-1]+1; // 前三年只有母牛能生小母牛 else a[i]=a[i-1]+a[i-3]; // 去年的母牛数加新生的小母牛 printf(\// 输出第n年的母牛数 } 2. 在数列中插入数据 10分 题目描述 有n(n≤20)个整数,已按从小到大顺序排列好,要求输入一个整数数,把它 插到数列中,使数列仍有序,并输出新的数列。(不允许重新排序) 输入描述 先输入数据个数n,再输入n个整数,最后输入要插入的数,输入时各数之间用空格隔开 输出描述 输出处理后的n+1个数,数据之间用空格分隔 样例输入 【参考答案2】 输入样例1: #include void main() { int a[21],n,i,j,x; 输入样例2: scanf(\4 -3 -1 7 20 28 for(i=0;i scanf(\输入样例3: scanf(“%d”,&x); 6 4 8 10 13 20 56 -5 for(i=0;i if(a[i]>x) break; // 查找x的插入位置 输出样例1: for(j=n-1;j>=i;j--) -7 2 6 8 10 15 a[j+1]=a[j]; // 比x大的数均后移 a[i]=x; // 将x插入到数组中 输出样例2: for(i=0;i<=n;i++) -3 -1 7 20 28 printf(\ printf(\输出样例1: } -5 4 8 10 13 20 56 【参考答案1】 #include { int i,n,a[21],x; scanf(\ for(i=0;i scanf(\ scanf(\ for(i=n-1;i>=0;i--) if(a[i]>x) a[i+1]=a[i]; // 比插入数据大的元素后移 else break; // 找到插入位置则退出循环 a[i+1]=x; // 将x插入到数组中 for(i=0;i printf(\ printf(\} C语言2作业7 一、选择题 (20分) 1.若有说明: int a[3][4]={0};则下面正确的叙述是____。 [D] A. 只有元素a[0][0]可得到初值0 B. 此说明语句不正确 C. 数组a中各元素都可得到初值,但其值不一定为0 D. 数组a中每个元素均可得到初值0 2.若有说明 int a[3][4];则对a数组元素的正确引用是____。 [C] A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1) 3.在定义int a[5][6];后,a[3][3]前有____个元素。 [C] A. 14 B. 18 C. 21 D. 26 4.若定义如下变量和数组_________。 int j; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是_________。 for (j=0;j<3;j++) printf(\ [C] A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 5.以下能正确定义数组并正确赋初值的语句是______。 [D] 2分2分2分2分2分 A. int N=5,b[N][N]; B. int a[1][2]={{1},{3}}; C. int c[2][]= {{1,2},{3,4}}; D. int d[3][2]={{1,2},{34}}; 6.有以下程序 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0; i<3; i++) { printf(\} 执行后输出结果是______。 [C] A. 4 5 6 B. 2 5 8 C. 3 6 9 D. 7 8 9 7.以下程序的输出结果是_______。 main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[i][b[j][j]]; printf(\} [B] A. 3 B. 4 C. 1 D. 9 8.设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是 [B] A. 2 B. 3 C. 4 D. 无确定值 9.以下程序的输出结果是_________ main() { int a[3][3]={ {1,2},{3,4},{5,6} },i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++)s+=a[i][j]; printf(\} [A] A. 18 B. 19 C. 20 D. 21 10.有以下程序 main() { int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i,s=0; for(i=0;i<4;i++) s+=aa[i][1]; printf(\} 程序运行后的输出结果是______。 [B] A. 11 B. 19 C. 13 D. 20 2分2分2分2分2分 二、程序填空题 (5分) 1. 输出以下图形: 1 2 2 2 2 2 1 3 1 2 2 2 1 4 3 3 1 2 1 4 4 3 3 3 1 4 4 4 3 3 1 5 1 4 4 3 1 5 5 5 1 4 1 5 5 5 5 5 1 #include { int a[7][7]; int i,j; for (i=0;i<7;i++) for (j=0;j<7;j++) { if (__(1)__) a[i][j]=1; else if (i for (i=0;i<7;i++) { for (j=0;j<7;j++) printf(\ printf(\ } } (1)答案 2分 i == j || i + j == 6 (2)答案 2分 a[i][j]=2 (3)答案 1分 i 三、程序设计题 (20分) 1. 输出矩阵中每行最大值 题目描述 10分 输入一个3行5列的矩阵数据,输出矩阵中每行最大值. 输入描述 输入3行5列共15个整数。 输出描述 输出每行的最大值。每个最大值占一行 样例输入 6 7 8 2 8 0 -3 4 5 9 5 6 1 2 0 样例输出 8 9 6 【参考答案】 #include { int a[3][5],i,j,max; for(i=0;i<3;i++) for(j=0;j<5;j++) scanf(\ for(i=0;i<3;i++) { max=a[i][0]; // 每行第一个元素作为找该行最大值的初始值 for(j=1;j<5;j++) if(max 2. 计算对角线元素和 题目描述 求一个 N×N(N不超过10) 矩阵两条对角线上元素之和(每个元素只加一次)。 输入描述 输入一个整数表示矩阵的阶数,再输入矩阵的内容,设元素值均为整数。 输出描述 输出其对角线元素之和(每个元素只加一次) 【参考答案2】 样例输入 #include if(i==j || i+j==n-1) // 对角线元素 sum+=a[i][j]; } printf(\} 5 6 9 4 9 7 8 3 5 1 7 6 样例输出 输出样例1: 27 输出样例2: 51 【参考答案3】 #include sum+=a[i][i]; // 加主对角线元素 if(i!=n-1-i) sum+=a[i][n-1-i]; // 加副对角线元素 } printf(\} C语言2作业8 一、选择题 (20分) 1.下面程序的输出结果是____。#include { int n[3][3], i, j; for(i=0;i<3;i++ ) for(j=0;j<3;j++ ) n[i][j]=i+j; for(i=0;i<2;i++ ) for(j=0;j<2;j++ ) n[i+1][j+1]+=n[i][j]; printf(\} [C] A. 14 B. 0 C. 6 D. 不确定 2.下面程序的输出结果是____。 2分 #include { int a[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4}; int i,j,n; n=9; i=n/5; j=n-i*5-1; printf(\} [B] A. 6 B. -3 C. 2 D. 不确定 3.若有定义char st[20]=\,则st中所存放字符串的长度和数组st的长度分别是____。 [C] A. 20和20 B. 13和20 C. 5和20 D. 9和9 4.若有定义char s[]=\,则s中所存放的字符串的长度是____。 [A] A. 9 B. 12 C. 13 D. 14 5.若有定义和语句: char s[10]; s=\; 则结果是_____。 [D] A. 输出 abcd B. 输出 a C. 输出 adcb D. 编译不能通过 6.若给出以下定义: char x[]=\ char y[]={'a','b','c','d','e','f','g'}; 则正确的叙述为_____。 [C] A. 数组x和数组y等价 B. 数组x和数组y的长度相同 C. 数组x的长度大于数组y的长度 D. 数组y的长度大于数组x的长度 7.下面程序的输出结果是____。 #include { char s[]=\ int v[4]={0},k,i; for (k=0;s[k]!='\\0';k++){ switch(s[k]) { case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } v[i]++; 2分2分2分2分2分 } for(k=0; k<4;k++) printf(\} [B] A. 4 2 1 1 B. 0 0 0 8 C. 4 6 7 8 D. 8 8 8 8 8.设已定义char a[10]和 int j,则下面输入函数调用中错误的是_________。 [B] A. scanf(\ B. for(j=0;j<9;j++) scanf(\C. gets(a); D. for(j=0;j<9;j++) scanf(\9.下列程序的输出结果是________。 main() {char ch[7]={\int j,s=0; for(j=0;ch[j]>='0'&&ch[j]<='9';j+=2) s=10*s+ch[j]-'0'; printf(\} [C] A. 12ba56 B. 66521 C. 6 D. 62 10.设已定义char x[8]和int j,为了给该数组赋值,下面语句中正确的是_______。 [D] A. x[8]=\for(j=0;j<7;j++) x[j]=getchar(); 2分2分2分2分 二、程序填空题 (10分) 1. 功能:产生并输出杨辉三角的前七行。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 #include int a[7][7]; int i,j,k; for (i=0;__(1)__;i++) { a[i][0]=1; a[i][i]=1; } for (i=2;i<7;i++) 5分 for (j=1;j a[i][j]= a[i-1][j-1]+__(2)__; for (i=0;i<7;i++) { for (j=0;i+1>j;j++) printf(\ printf(\ } } (1)答案 2分 i<7 (2)答案 2分 a[i-1][j] (3)答案 1分 a[i][j] 2. 功能:输入一行电报文字,要求将电报内的各字母转换为其对应的下一个字母,即A转换为B,B转换为C,C转换为D,依次类推,其中Z转换为A。 #include char str[101]; int i,j; printf(\ __(1)__; for(i=0;__(2)__;i++) { if(str[i]=='z') str[i]='a'; else if(str[i]=='Z') str[i]='A'; else __(3)__; } printf(\ __(4)__; return 0; } 5分 (1)答案 1分 gets(str) (2)答案 2分 str[i]!='\\0' (3)答案 1分 str[i]+=1 (4)答案 1分 puts(str) 三、程序设计题 (20分) 1. 矩阵乘法 题目描述 给定2个矩阵A和B,请计算A * B. (题目测试数据会确保A*B有意义) 输入描述 输入数据首先给出4个正整数A1,A2,B1,B2(1<=A1,A2,B1,B2<=10),然后是A1行A2列的整数,再然后是B1行B2列的整数,分别表示矩阵A和B. 输出描述 请计算并输出矩阵A和B相乘的结果(结果的每个元素都在32位整数范围之内),输入和输出格式参见样例. 样例输入 2 3 3 2 1 2 0 2 0 4 1 4 0 2 3 0 样例输出 1 8 14 8 10分 【参考答案】 #define N 10 #include { int A[N][N],B[N][N],C[N][N],A1,A2,B1,B2; int i,j,k; scanf(\ for (i=0;i for(j=0;j 2. 回文串 题目描述 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。 输入描述 每组测试数据包含一个字符串。 输出描述 如果一个字符串是回文串,则输出\否则输出\样例输入 【参考答案2】 level #include 【参考答案】 #include { char s[100]; int i,j; gets(s); for(j=0;s[j]!='\\0';j++); for(i=0,j--;i { printf(\ printf(\} else printf(\} 【参考答案3】 #include 一、判断题 (8分) 1. 字符常数和字符串常数的存储是相同的,都是以字符的ASCII码值进行存放。 2. 用gets函数可以接收一个含有空格的字符串。 3. 用printf函数输出一个字符串时,格式字符为%S,输出项可以是此字符串或存放此字符串的数组的数组名。 4. char c[]=\是一个合法的为字符串数组赋值的语句。 2分2分2分2分 二、选择题 (20分) 1.有定义语句:int b; char c[10];,则正确的输入语句是( )。 [B] A. scanf(\scanf(\2.下列数组s中所存放字符串的长度为____。 char s[]=\ [C] A. 9 B. 10 C. 11 D. 18 3.有数组定义语句“char a[20];”,则正确的输入语句为____。 [D] A. scanf(\,&a); B. scanf(\,a[]); C. gets(a[20]); D. gets(a); 4.有以下程序 #include { char s[][10]={\ printf(\} 执行后输出结果是_____。 [C] A. n,two B. t,one C. w,one D. o,two 5.下面程序的功能是将字符串中所有的字符c删除。__(1)__处应填? #include { char s[80]; int i,j; 2分2分2分2分 f(int b[],int n) { int i,r; r=1; for(i=0;i<=n;i++) r=r*b[i]; return r; } void main() { int x,a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf(\} [B] A. 720 B. 120 C. 24 D. 6 3.执行下列程序后的输出结果是____。 #include { char a[]=\ printf(\} [A] A. D B. C C. B D. A 4.执行下列程序后的输出结果是____。 #include { if(n==0) return a[0]; else return f(a,n-1)+a[n]; } main() { int x[]={1,3,5,7,9}; printf(\} [D] A. 1 B. 4 C. 9 D. 16 5.以下程序执行后的输出结果是______。 int f(int b[][4]) { int i,j,s=0; for(j=0;j<4;j++) { i=j; if(i>2) i=3-j; s+=b[i][j]; } return s; 2分2分2分 } void main( ) { int a[4][4]={{1,2,3,4},{0,2,4,6}, {3,6,9,12},{3,2,1,0}}; printf(\} [D] A. 12 B. 11 C. 18 D. 16 6.以下程序的运行结果是____。 #include \ #define FUDGE(y) 2.84+y #define PR(a) printf(\#define PRINT1(a) PR(a); putchar('\\n') main() { int x=2; PRINT1(FUDGE(5)*x); } [B] A. 11 B. 12 C. 13 D. 15 7.设有以下宏定义: #define N 3 #define Y(n) ((N+1)*n) 执行语句z=2*(N+Y(5+1));后,z的值为_____________。 [C] A. 出错 B. 42 C. 48 D. 54 8.有如下程序 #define N 2 #define M N+1 #define NUM 2*M+1 main() { int i; for(i=1;i<=NUM;i++)printf(\} 该程序中的for循环执行的次数是______。 [B] A. 5 B. 6 C. 7 D. 8 9.以下程序的输出结果是______。 #define SQR(X) X*X main() { int a=16,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(\ } [B] A. 16 B. 2 C. 9 D. 1 2分2分2分2分2分 10.下列宏定义命令中,____格式是正确的。 [D] A. #define pi=3.14159; B. define pi=3.14159 C. #define pi=\11.宏定义为“#define div(x,y) x/y;”,若语句 “printf(\\\n\-3));”作宏替换后为____。 [C] A. printf(\-3)); B. printf(\-3); C. printf(\-3;); D. printf(\-3;); 12.下列程序的输出结果____。 #define PT 5.5 #define S(x) PT*x*x #include { int a = 1,b = 2; printf(\} [A] A. 9.5 B. 18.5 C. 27.5 D. 49.5 13.下列程序的输出结果为____。 #include void sort(int a[],int n); for(i=0;i<10;i++){ m=-m; x[i]=m*i; } sort(x,10); for(i=0;i<10;i++) printf(\} void sort(int a[],int n) { int i,j,t; for(i=1;i<10;i++){ t=a[i]; for(j=i-1; j>=0; j--) if(t>a[j]) break; else a[j+1]=a[j]; a[j+1]=t; } 2分2分2分 } [B] 2分 A. -9 -7 -5 -3 -1 0 2 4 6 8 B. -8 -6 -4 -2 0 1 3 5 7 9 C. 0 -1 2 -3 4 -5 6 -7 8 -9 D. 0 1 -2 3 -4 5 -6 7 -8 9 二、程序填空题 (10分) 1. 输入一个整数,输出它的二进制序列。#include { int a[32],x,i,m; int change(int x,int a[]); scanf(\ m=change(x,a); for(i=0;i printf(\} int change( __(1)__ ) { int n=0,t,k; do { a[n]=x%2; __(2)__; n++; }while(x!=0); for(k=0;k return n; } (1)答案 2分 int x,int a[] (2)答案 2分 x=x/2 (3)答案 1分 a[k]=a[n-1-k] 5分 2. 输入一个6行、6列的数组,将每一行的所有元素都除以该行的主对角线元素,然后以行列对齐格式输出该数组。 #include { int a[6][6],i,j; void f(int a[][6],int m,int n); for(i=0; i<6;i++) for(j=0;j<6;j++) scanf(\ __(2)__; for(i=0; i<6;i++){ for(j=0;j<6;j++) printf(\ __(3)__ ; } } void f(int a[][6],int m,int n) { int i,j,t; for(i=0;i a[i][j]= __(5)__ ; } } 5分 (1)答案 1分 &a[i][j] (2)答案 1分 f(a,6,6) (3)答案 1分 printf(\ (4)答案 1分 a[i][i] (5)答案 1分 a[i][j]/t 三、程序设计题 (10分)
正在阅读:
C语言2作业参考答案01-14
03-北京六建工程公司-海关信息管理中心施工组织设计04-19
温暖的陌生人作文450字07-01
我国已有波形钢腹板桥梁详细介绍07-04
小小播音员广播稿11-22
浅谈住宅项目总平面设计的思路05-11
初中语文知识点《文言文阅读》《历史事件类》精选课时作业(04-26
以美国为例试论“三权分立”理论对西方行政制度及民主政府的影响09-18
市场调查与预测题目(带答案)10-28
政治纪律方面存在的问题原因分析一02-03
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 作业
- 答案
- 语言
- 参考
- 油漆火灾事故案例
- 江苏省扬州2018年高考语文一轮复习 材料概括分析题 Word版含答案 - 图文
- 岁末营销案例趣味乱弹
- 福建省南平市2017-2018学年第一学期七年级期末质量检测英语试题(精品)
- 六年级奥数工程问题应用题
- 基于单片机的毫欧表设计
- 发动机构造与维修试题
- 让客户秒回的外贸开发信
- 杭州市临时占用挖掘城市道路管理办法
- 第15课 大萧条与罗斯福新政
- 2011国家重点鼓励类产业资料要求
- 填字游戏3 - 图文
- 13种粥
- 中国互联网+长租公寓商业模式创新与投资战略规划分析报告2018年版(目录) - 图文
- 4.《3.走遍天下书为侣》教学设计
- 川渝公务员面试“教父”黄可耕老师详解四川历年面试真题 - 图文
- 西南高级技工学校教学楼施工组织设计 liao - 图文
- 《选矿学》实验指导
- 2015数形结合练习
- 2013届高考数学第一轮精讲精练5 第五章 数列复习教案 新人教版