广工C语言试卷及答案
- 格式:docx
- 大小:79.97 KB
- 文档页数:14
C Anyview 7-9章作业参考答案/**********【习题7.010】写一函数求3个整数中最小的数。
**********/int min(int x, int y, int z)/* 返回3个整数x,y和z中最小的数*/{if(x>y)x=y;if(x>z)x=z;return x;}/**********【习题7.020】编写函数,求用1元、5元和10元三种纸币支付n元钱共有多少种支付法?例如,16元可有6种支付方法:方法 1 2 3 4 5 610元0 0 0 0 1 15元0 1 2 3 0 11元16 11 6 1 6 1**********/int change(int n){int i,j,k,m=0;for(i=0;i<=n;i++)for(j=0;j<=n/5;j++)for(k=0;k<=n/10;k++)if(i+5*j+10*k==n)m++;return m;}/**********【习题7.030】先编写一个判断素数的函数。
再编写一个函数将一个偶数表示为两个素数之和,并返回其中较小的素数。
注:素数指只能被1和自身整除的正整数。
规定0,1不是素数。
**********/int prime(int n)/* 判断素数,如果是素数返回1,不是素数则返回0 */{ int t;if(n==1)return 0;for(t=2;t<=(n/2);t++)if(n%t==0)return 0;return 1;}int f(int i)/* 将偶数i表示为两个素数之和,返回其中较小的素数*/{ int n;for(n=3;n<=i;n++)if(prime(i-n)&&prime(n))return n;}/**********【习题7.050】编写函数,将字符串中ASCII码最小的字符放在第一个字符位置,其余字符依次往后移。
2022年广东理工职业学院公共课《C语言》科目期末试卷B(有答案)一、填空题1、C语言的源程序必须通过【】和【】后,才能被计算机执行。
2、执行下面程序段后,k的值是_______。
k=1;n=263;do{k*=n%10;n/=10;} while(n);3、下面程序段是找出整数的所有因子。
请填空。
scanf("%d",&x);i=1;for(;_______;){if(x%i==0)printf("%3d",i);i++;}4、请读程序段:int x=1;printf("%d\n",~x);上面程序段的输出结果是_______。
5、若x=0123,则表达式(5+(int)(x))&(~2)的值是_______。
6、若有定义语句:inte=1,f=4,g=2;float m=10.5,n=4.0,k;,则执行表达式k=(e+f)/g+sqrt((double)n)*1.2/g+m后k的值是_______。
7、设有如下结构体说明:struct ST{int a;float b;struct ST*c;doublex[3];}st1;请填空,完成以下对数组s的定义,使其每个元素均为上述结构体类型。
_______8、设有宏定义如下:#define MIN(x,y)(x)>(y)?(x):(y)#define T(x,y,r)x*r*y/4则执行以下语句后,s1的值为_______,s2的值为_______。
int a=1,b=3,c=5,s1,s2;s1=MIN(a=b,b-a);s2=T(a++,a*++b,a+b+c);9、下面程序段将输出computer。
请填空。
char c[]="It is a computer";for(i=0;_______;i++){_______;printf("%c",c[j]);}10、已有一维数组a,n为元素的个数,且各元素均有值;函数void process(float*p,int n,float(*fun)(float*,int))为一个可完成下面各种计算的通用函数。
一、选择题1. 设有如下程序段,则下面描述正确的是int k=10;while (k=0) k=k-1;A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次2. 下面程序段的运行结果是a=1; b=2; c=2;while(a<b<c) { t=a; a=b; b=t; c--;}pirntf(“%d, %d, %d”,a,b,c);A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,1 3. 下面程序段的运行结果是。
int n=0;while(n<=2) n++; printf(“%d”,n);A.2 B.3 C.4 D.有语法错误4. 设有如下程序段,则描述正确的是。
t=0;while (printf(“*”)){t++; if(t<3) break;}A.其中循环控制表达式与0等价B.其中循环控制表达式与‘0’等价C.其中循环控制表达式是不合法的D.以上说法都不对5. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对等数时结束循环,请选择填空。
#include<stdio.h>int main(){int a,b,t;scanf("%d%d",&a,&b);while( ){if(a>b) {t=a;a=b;b=t;}printf("%d,%d\n",a,b);scanf("%d%d",&a,&b);}return 0;}A.!a=b B.a!=b C.a==b D.a=b8. 下面程序的功能是在输入的一系列正整数中求出最大者,输入0结束循环,请选择填空。
#include<stdio.h>int main(){int a,max=0;scanf("%d",&a);while( ){if(max<a) max=a;scanf("%d",&a);}printf("%d\n",max);return 0;}A.!a=0 B.a!=0 C.a= =0 D.a=09. 下面程序的运行结果是。
一、选择题1. 以下程序的运行结果是。
#include <stdio.h>int main( ){ int m=5, n=10;printf(“%d, %d\n”,m++, --n);return 0;}A.5,9 B.6,9 C.5,10 D.6,102. 有定义语句int a,b; ,若要通过语句scanf(“%d, %d”, &a, &b); 使变量a得到数值6,变量b得到数值5,下面形式中错误的是。
(注:□代表空格)A.6,5<回车> B.6,□□5<回车>C.6 5<回车> D.6,<回车>5<回车>3. 以下程序的输出结果是。
(注:□代表空格)#include <stdio.h>int main( ){ printf(“\n*s1=%15s*”, “chinabeijing” );pirntf(“\n*s2=%-5s*”, “chi”);return 0;}A.*s1=chinabeijing□□□* B.*s1=chinabeijing□□□* *s2=**chi* *s2=chi□□*C.*s1=*□□chinabeijing* D.*s1=□□□chinabeijing* *s2=□□chi* *s2=chi□□*4. 已有如下定义语句和输入语句,若要求a1, a2, c1, c2的值分别为10、20、A和B,当从第一列开始输入数据时,正确的数据输入方式是。
(注:□代表空格)int a1,a2; char c1, c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A.10A□20B<回车> B.10□A□20□B<回车>C.10□A□20B<回车> D.10A20□B<回车>5. 已有定义int x; float y; 且执行scanf(“%3d%f”, &x,&y); 语句,若从第一列开始输入数据12345□678<回车>,则x的值为(1),y的值为(2)。
院: 一、单选题(每题 2 分,共 60 分) 1.以下描述正确的是 C A) C 程序的执行是从 main()函数开始,到本程序的最后一个函数结束 B) 编译程序对 C 源程序编译时不检查语法 C) C 程序中没有输入输出语句 D) 在一个 C 程序中 main()函数必须出现在所有函数之前 2.结构化程序设计不应该使用 B A) 自顶向下,逐步细化的方法 B) 灵活、简洁的 goto 结构 C) 模块化设计 D) 三种基本结构:顺序结构、选择结构、循环结构的编码方法 3.将 C 源程序进行 B 可得到目标文件。 A) 编辑 B) 编译 C) 连接 D) 运行 4. 在 C 语言中,变量所分配的内存空间大小 C A) 均为两个字节 B) 由用户自己定义 C) 由变量的类型决定 D) 是随意的 5. 以下不能定义为用户标识符是 D A) min B)_01 C)_int D) 3a 6. 以下选项中可作为 C 语言合法常量的是 D A) 3e2.0 B) 081 C) e3 D) 123L 7. 若有语句 char c;,并要将字符 a 赋给变量 c,则下列赋值表达式正确的是 B 。 A) c=a B) c=’a’ C) c=”a” D) c=’97’ 8. 有程序段 : int a,b; scanf( “%d,%d”,&a,&b); 请为之选择运行时正确的输入方法 _____ B___ A) 1 2↙ B) 1,2 ↙ C)1 ↙2↙ D)1;2 ↙ 9.若有语句 int x=5; 则执行语句 x+=x*=10;后, a 的值是 A 。 A) 100 B) 55 C) 60 D) 105 10.下列语句合法的是 B 。 A) 4+a=b=0; B) a=++b; C) a=2=b=6; D) a=4++; 11.执行以下语句,输出结果是 C 。 int x=2;
装 订 线 专 业: 学 号:
姓 名: printf(“%d”, ((x=4*5, x*5), x+20)); A) 120 B) 100 C) 40 D) 20 12. C 语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为 _ C__ A) 由实参传给形参,再由形参传回给实参 B) 地址传递 广东工业大学试卷用纸,共 7 页,第 1 页 C) 单向值传递 D) 由用户指定传递方式 13.以下选项中非法的表达式是 A 。 A) 7.5%2/2 B) x=y=0 C) (char)(66+1) D) ’c’+1 14. 下列程序的输出结果是 D 。 void main() { float a=3.2; int b,c; b=1.2; c=(b+3.8)/5.0; printf(“%d\n”, a*c); } A) 3 B) 3.2 C) 3.07 D) 0 15. C 语言中用于结构化程序设计的三种基本结构是 A 。 A) 顺序结构、选择结构、循环结构 B) if, switch, break C) for, while, do-while D) if, for, continue 16. 执行以下程序,输出结果是 D 。 int x, y=3, z=2; x=(--y==z++)?--y:++z; printf(“x=%d y=%d z=%d”,x,y,z); A) x=4 y=2 z=4 B) x=3 y=2 z=3 C) x=4 y=1 z=4 D) x=1 y=1 z=3 17. 已有定义 : char a[]="abc",b[]={'a','b','c'}; 以下叙述中正确的是 C A) 数组 a 和 b 的长度相同 B) a 数组长度小于 b 数组长度 C) a 数组长度大于 b 数组长度 D)上述说法都不对 18.执行以下程序,输出结果是 C 。 void main() { int x=3,y=4,z=2,i; i=xy; printf(“i=%d z=%d”, i,z); } A) i=0 z=10 B) i=1 z=10 C) i=0 z=2 D) i=1 z=2 19. 用数组名作为函数调用时的实参,实际上传送给形参的是 A A) 数组首地址 B) 数组的第一个元素值 C) 数组中全部元素的值 D) 数组元素的个数 20. 执行如下语句, 输出 c 的值是 C 。 int c=1, x=3;
switch(x+1) { case 4: c++; case 6: c++; break; default: c++; } printf(“%d”, c); A) 1 B) 2 C) 3 D) 4 广东工业大学试卷用纸,共 7 页,第 2 页 21. 若有定义: int a[2][3]; 则对 a 数组的第 i 行 j 列元素的正确引用为 A A) *(a[i]+j) B) *(a+i)+j C) *(a+i+j) D) a[i]+j 22 .若有如下程序: void main()
{ int x=1,a=0; do { a++; }while(x,x--); } 则语句 a++; 执行的次数是 C 。 A) 0 B) 1 C) 2 D) 无限次 23 .以下程序中, while 循环的循环次数是 D 。 void main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } „„ } A) 1 B) 10 C) 6 D) 死循环,不能确定次数 24.下面能正确定义一维数组的选项是 B 。 A) int num[]; B) #define N 10 int num[N];
C) int num[0..10]; D) int N=10; int num[N];
25.在 C 语言中,函数的隐含存储类别是 C 。 A) auto B) static C) extern D) 无存储类别 26.以下程序的输出结果是 C 。 void main()
{ char str[20]=”hell\0o\t” ; printf(“%d %d\n”, strlen(str),sizeof(str)); } A) 9 7 B) 7 20 C) 4 20 D) 20 20 27.下列选项中不正确的语句组是 A 。 A) char s[10]; s= “Beijing” ; B) char s[ ]= “Beijing” ; C) char *s = “Beijing” ; D) char *s ; s= “Beijing” ; 28.有如下程序 , 执行后输出的结果是 C(形参不传给实参) 。 void f(int x, int y) { int t; if(x} void main() { int a=1,b=3,c=2; f(a,b); f(a,c); f(b,c); 广东工业大学试卷用纸,共 7 页,第 3 页 printf(“%d,%d,%d\n”,a,b,c); } A) 3,2,1 B) 1,2,3 C) 1,3,2 D) 2,3,1 29 .执行如下程序段后, a 的值为 C 。 int *p, a=1,b=2; p=&a; a=*p+b; A) 1 B) 2 C) 3 D) 4 30.下列关于 C 语言数据文件的叙述中正确的是 C 。 A) 文件由 ASCII 码字符序列组成, C 语言只能读写文本文件 B) 文件由二进制数据序列组成, C 语言只能读写二进制文件 C) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 D) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 二、填空题(每空 2 分,共 40 分) 1 .若输入字符串: abcde,则以下 while 循环体将执行 (1)0 次。 while((ch=getchar())== ’d’) putchar(ch);
2. 设有下列定义语句 int x[3]={3,4,5}, *p1=x, **p2=&p1;则表达式**p2 的值是 3 (2) , 表达式*(*p2+1)的值是 4 (3) 。
3.以下函数的功能是:求 x 的 y 次方,请填空。 double fun(double x, int y)
{ int i; double z; for(i=1, z=x; iz=z* x (4) ; return z; } 4 .若有以下程序段,请填空。 struct str { int a; struct str *next; }*p1; p1=( struct str * (5) )malloc(sizeof(struct str)); 5 .设有以下定义: struct s { int info; struct s *next; } x,y,z; 已建立如下图所示链表结构:
请 写 出 删 除 节 点 y 的 赋 值 语 句 6. 以下程序的功能是: 从键盘上输入 x y z
x.next=y.next; (6)
一个字符串, 把该字符
串中的小写字母转换为大写字母 (字母 A 的 ASCII 码为 65,字母 a 的 ASCII 码为 97),输出到文 件 test.txt 中。
#include 广东工业大学试卷用纸,共 7 页,第 4 页