版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、20012002学年“C语言程序设计基础”试卷试题一、单项选择题(每小题 2 分,共 20 分)1C 语言程序的三种基本结构是顺序结构、选择结构和_结构。A、循环 B、递归 C、转移 D、嵌套2若x是单精度实型变量,表达式 (x = 10/4) 的值是_ 。A、2.5 B、 2.0 C、 3 D、 23. 表达式 !x 等价于_。A、x=0 B、x=1 C、x != 0 D、x != 14若变量已正确定义且 k 的值是 4,计算表达式 ( j = k-) 后,_。A、j=3, k=3 B、j=3, k=4 C、j=4, k=4 D、j=4, k=35. 算术运算符、赋值运算符和关系运算符的运算
2、优先级按从高到低的顺序依次为_。A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算6C语言中,形参的缺省的存储类说明是_。A、 auto B、static C、 register D、extern 7下列语句定义pf为指向float类型变量f的指针,_是正确的。A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f;8表达式 sizeof(“key”) 的值是_。A、1 B、2 C、3 D、49将程序prog.
3、c编译后运行:prog nla hello world 则 *(*(argv+2) 是_。A、p B、- C、h D、w10若a是整型变量,表达式 (a a ) 等价于_。 A、a B、1 C、0 D、2试题二、填空题(每小题 3 分,共 24 分)1写出语句 printf (%d, %o, %x, 0x12, 12, 012); 的输出结果。 2写出下列程序段的输出结果。#define F(x) x - 2#define D(x) x*F(x)printf(%d,%d, D(3), D(D(3) ;3写出下列程序段的输出结果。int k ; char *s = “ABC”; for( k=1
4、0; k != 0; k- ) ; printf ( %d, k );while( *s+ ) putchar( *s );4写出下列程序的输出结果。void fun(int k) static int a; printf(”%d,”, a); a += k; main() int k; for (k=1; kx); printf(%d, +p-y); printf(%dn, (a+3)-x);6写出下列程序的输出结果。#include stdio.h void main() int k, j, m, n, a66, b6; m=3, n=2; for(k=0; km; k+) for(j=0
5、; jn; j+) akj = k*n+j+1; for(k=0; km; k+) bk = 0; for(j=0; jn; j+) bk += akj; for(k=0; km; k+) printf(%d, , bk);7写出下列程序的输出结果。 # include long fib(int g) switch(g) case 0: return(0); case 1: case 2: return(2); printf(g=%d, g); return ( fib(g-1) + fib(g-2) ); main() long k; k = fib(4); printf(k=%ldn, k
6、);8用typedef定义一个长度为10的整型数组NUM。 试题三、程序阅读题(每题 5 分,共 20 分)1写出下列程序的输出结果。#include int x, y, z;void p(int *x, int y) -*x; y+; z = *x+y; printf(%d,%d, *x,y);void main() x=5; y=2; z=0; p(&x, y); printf(%d,%d,%d-, x, y, z); p(&y, x); printf(%d,%d,%dn, x, y, z);2写出下列程序的输出结果,并指出该程序的功能。#include void main()int x,
7、 k; x =14;for ( k = 0; x!=0; x &= x-1 )+k; printf(%dn, k);3写出下列程序的输出结果。#include void main() int v=6,3,4,1,2; int n=5; int gap, j, k, temp; for( gap = n/2; gap 1; gap /= 2 ) for( j = gap; j = 0 & vk vk+gap; k -= gap ) temp = vk; vk = vk+gap; vk+gap = temp; for(k=0; knum) ; while (p1-num != 0) p1 = (s
8、truct line *) malloc (LEN) ; scanf(%d, &p1-num) ; if ( p1-num = 0 ) p2-next = NULL ; else p2-next = p1 ; p2 = p1 ; k+; p2-next = head ; p1 = head-next ; p1 = p1-next ; for ( j=1 ; j %d , p1-num) ; p1 = p1-next ; 试题四、程序填空题(每空 2 分,共 20 分)1输入10个点的坐标(设坐标为整数值), 输出距原点最远的点(设唯一)的坐标及该点距原点的距离.#include void ma
9、in() struct int x, y; float length; point10; int k, sub=0; for(k = 0; k 10; k+) scanf(%d%d, &pointk.x, &pointk.y); pointk.length = (1) for(k=1; k10; k+) if( (2) ) (3) printf(%d,%d) %fn, pointsub.x, pointsub.y, pointsub.length);2将输入的 n 个字符串连接成1个字符串 , 然后输出该字符串.#include #include void main() char str102
10、0, string200; int k, n; scanf(%d, &n); for (k=0; kn; k+) gets(strk); (4) for (k=1; k= 0 & sk = a & sk = 0 & sk = a & sk day_tableapk; k+) (9) *pmonth = (10) *pday = yearday;试题五、编程题 ( 共 16 分)1程序说明 (5分)请编写函数 sum_fact(number),返回number 的因子之和。(能整除number的数就是它的因子,number定义为int)例如sum_fact(6) = 12 (因为1, 2, 3,
11、 6是6的因子)2程序说明 (11分)文本文件 input.txt 中存放了一批整数,将其中每个数的因子之和顺序写入文件 output.txt。 ( 必须调用第1小题中定义的函数 sum_fact(number) 计算 number 的因子之和 )例:若文件 input.txt 中存放了1, 2, 6 ,则每个数的因子之和分别是 1 3 12 ,它们被写入文件output.txt。20012002学年“C语言程序设计基础”答卷下框由教师填写: 题号一二三四五总分 得分 阅卷人试题一、选择题 (每小题2分,共20分)题号12345678910选择ABADCABDCC试题二、填空题 (每小题3分,
12、共24分)1 18,14,A 2 7, -13 3 0BC 4 0, 1, 3, 5 10, 41, 70 6 3, 7, 11, 7 g=4, g=3, k=6 8 typedef int NUM10 试题三、程序阅读题 (每小题5分,共20分)1 4, 3, 4, 2, 71, 5, 4, 1, 6 2 3 统计二进制数中1的数目 3 2,1,4,3,6,(4,1,2,3,6,j) 4 34512 试题四、程序填空题 (每空2分,共20分)(1) sqrt( pointk.x * pointk.x + pointk.y * pointk.y );(2) pointk.length poin
13、tsub.length(3) sub = k;(4) strcpy( string,str0 );(5) strcat( string,strk );(6) char s 或 char *s (7) d = d * 16 + sk - 0;(8) d = d * 16 + sk - a + 10;(9) yearday -= day_tableapk;(10) k试题五、编程题 (第1题5分,第2题11分,共16分)1、int sum_fact(int number) 定义、变量说明、返回 2分 int k, sum = 0; if ( number 0 ) number = - number
14、; for(k = 1; k = number; k+) 1 分 if( number%k = 0 ) sum += k; 2 分 return sum;2、# include 头文件、变量说明 1 分 main() FILE *fpin, *fpout; int x; if ( fpin = fopen(input.txt,r ) = NULL) 2 分 printf( Cant open file input.txtn ); exit(0); if ( fpout = fopen(output.txt,w ) = NULL) 2 分 printf( Cant creat file outp
15、ut.txt ); exit(0); while ( !feof( fpin ) 1 分 fscanf( fpin, %d, &x); 2 分 fprintf( fpout, %d , sum_fact(x); 2 分 fclose( fpin ); 关闭文件 1 分 fclose( fpout ); 20022003学年“C语言程序设计基础”试卷注: 请将答案写在答卷上一、单项选择题(每小题 2 分,共 30 分)1. C 语言程序中可以对程序进行注释,注释部分必须用符号_括起来。 A、 和 B、和 C、“/*”和”*/” D、“*/”和”/*”2. 下列运算符中,优先级最低的是_。 A、*
16、 B、!= C、+ D、=3. 若变量已正确定义,表达式 (j=3, j+) 的值是_ 。A、3 B、 4 C、5 D、04. 已知字符 a 的ASCII码为 97 ,执行下列语句的输出是_。 printf (%d, %c, b, b+1 ) ; A、98, b B、语句不合法 C、98, 99 D、 98, c5. 表达式strcmp(“box”, “boss”) 的值是一个_。 A、 正数 B、 负数 C、 0 D、 不确定的数6. 数组定义为 int a32=1, 2, 3, 4, 5, 6,数组元素_的值为6。 A、a32 B、a21 C、a12 D、a237. 要调用数学函数时,在#
17、include命令行中应包含_。 A、 ”stdio.h” B、 ”string.h” C、 ”math.h” D、 ”ctype.h”8. 判断i和j至少有一个值为非0的表达式是_。 A、 i!=0 & j!=0 B、i*j!=0 yh1 Ci!=0|j!=0、!(i=0 | j=0) D、i&j9. 若a是基本整型变量,c是单精度实型变量,输入语句_是错误的。 A、scanf(”%d,%f”, &a, &c); B、scanf(”d=%d, c=%f”, &a, &c); C、scanf(”%d%f”, &a, &c); D、scanf(”%d%f”, a, c);10. 若变量已正确定义
18、并且指针p已经指向某个变量x,则(*p)+相当于_。 A、p+ B、x+ C、*(p+) D、&x+11. 若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, _是正确的。 A、p2=p1; B、p2=*p1; C、p2=&p1; D、p2=*p1;12. 下列程序段的输出是_。 int c=1, 3, 5; int *k=c+1; printf(%d, *+k); A、 3 B、 5 C、 4 D、613. 不正确的赋值或赋初值的方式是_。 A、char str=string; B、char str7=s, t, r, i, n, g;C、char str10;str=stri
19、ng;D、char str7=s, t, r, i, n, g, 0;14. 对于以下结构定义,+p-str中的+加在_。struct int len; char *str; *p; A、指针str上 B、指针p上 C、str指的内容上 D、以上均不是15. 对于如下说明,语法和语义都正确的赋值是_。int c, *s, a=1, 3, 5;A、c=*s; B、 s0=a0; C、s=&a1; D、 c=a;二、填空题(每小题 2 分,共 20 分)1. 写出下列程序段的输出结果。 float x1, x2; x1=3/2; x2=x1/2; printf(%d, %.1f, (int)x1,
20、 x2) ;2. 表达式 (722 ) 的值是_。 3. 写出下列程序段的输出结果。 #define A 10 #define B (AA+2)-2 printf(%d, B*2);4. 写出判断字符变量c是英文字母的表达式 。5. 写出下列程序段的输出结果。 int k, x;for (k=0, x=0; k0) ? 2*f(n-1)+f(n-2) : -1); 8. 写出下列程序段的输出结果。 char str=hellotworldn; printf(%d, %cn, sizeof(str), *(str+10);9. 输入12345#后,写出下列程序的输出结果。 void main()
21、 char c; for(c=getchar(); getchar()!=#; c=getchar() putchar(c); 10. 执行程序find nx ould text.txt时,*+argv1的值是_。三、程序阅读题(每题5分,共20分)1. 若输入 3 1 2 3 , 则以下程序的输出结果是_。 #include stdio.h void main() int i, j, n, a10; scanf(%d, &n); for (i=0; in; i+) scanf(%d,&ai); for (i=0; in; i+) for (j=0; jn; j+) printf(%d, ,
22、a(i+j)%n); 2. 若输入89 76 24 25 9 8 11 16 35 4 , 则以下程序的输出结果是_。 #include stdio.h #define N 10 main() int xN, y1N, y2N; int i, j, n1, n2, t, p; n1=n2=0; for(i=0;iN;i+) scanf(“%d”, &xi); if(xi % 2=0) y1n1+=xi; else y2n2+=xi; for(i=1; in1; i+) for(j=0; jy1j+1) t=y1j; y1j=y1j+1; y1j+1=t; for(i=0; in2-1; i+)
23、 p=i; for(j=i+1; jn2; j+) if(y2py2j) p=j; if(p!=i) t=y2i; y2i=y2p; y2p=t; for(i=0; in1; i+) printf(%d, , y1i); for(i=0; in2; i+) printf(%d, , y2i); 3. 以下程序的输出结果是_。 #include int z; void p(int *x, int y) +*x; y-; z=*x+y+z; printf(%d, %d, %d#, *x, y, z);void main() int x=1, y=5, z=9; p(&x, y); printf(%
24、d, %d, %d#, x, y, z); 4. 若输入 -6+15*3/5= , 则以下程序的输出结果是_。 #include void main() int m=0, sum=0; char c, oldc=+; do c=getchar(); if(c=0) m=10*m+c - 0; else if(oldc=+) sum += m; else sum -= m; m=0; oldc=c; printf(%d, , sum); while(c!=); 四、程序填空题(每空 2 分,共 20 分)1. 下列程序的功能是创建单向链表。 #include #include struct li
25、nk char name10; intmark; struct link * next; ; void insert(char *, int); struct link * head = NULL; main() char name10; int mark; struct link * t; while ( 1 ) scanf(%s %d, name, &mark); if ( strcmp(name, #) = 0 ) break; _(1)_; for (t=head; _(2)_) printf(: %dn, t-name, t-mark);void insert(char * name
26、, int mark)struct link * p;p = _(3)_ ;strcpy(p-name, name);p-mark = mark; _(4)_;if ( head != NULL ) _(5)_;head = p;2. prog.c是带命令行参数的程序。运行prog filename时,将文本文件filename中的内容原样输出;运行prog -u filename时,将文本文件filename中的所有字母以大写方式输出(其余字符原样输出);运行prog -d filename时,只将文本文件filename中的数字输出。# include # include void mai
27、n(int argc, char * argv)FILE *fp;char * filename, ch; int tag=0;if (argc 3) printf(“Argument errorn”); return; if (argc = 3) if (strcmp(argv1, “-u”) = 0) tag=1;else if (strcmp(argv1, “-d”) = 0) tag=2;else printf(“Option errorn”); return;_(6)_; else filename = argv1;if (_(7)_) printf(“Cannot open fil
28、en”); return;while (_(8)_ ) ch = fgetc(fp);if ( tag = 0 ) putchar(ch);else if ( tag = 1 ) _(9)_; else if ( _(10)_) putchar(ch);fclose(fp);五、编程题 ( 共 10 分,混合班学生做第2题,其他学生做第1题)1. 程序说明 (10分) 输入m和n(mn0)后,计算下列表达式的值并输出。 m! n!*(m-n)! 要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。2. 程序说明 (10分) 编写函数strcmp(char * s1, ch
29、ar * s2)。若s1和s2均是数字串(包括+/-号),则按照十进制整数大小进行比较;否则按照Ascii序进行比较。s1大于/等于/小于s2时,分别输出1/0/-1。可以直接调用atoi函数。20022003学年“C语言程序设计基础”参考答案一、单项选择题(每小题 2 分,共 30 分)题号123456789101112131415选择CDADABCBDBABCAC二、填空题(每小题 2 分,共 20 分)11, 0.5213-34c=a&c=A&cnext(3) (struct link *)malloc(sizeof(struct link)(4) p-next = NULL(5) p-
30、next = head(6) filename = argv2(7) (fp=fopen(filename, “r”) = NULL(8) ! feof(fp)(9) putchar(toupper(ch)(10) tag= 2& isdigit(ch) 五、编程题 ( 共 10 分,混合班学生做第2题,其他学生做第1题)1、#include float fact(int);main()intm, n;float val;scanf(“%d%d”, &m, &n);val = fact(m) / (fact(n) * fact(m-n);printf(“Value: %fn”, val);fl
31、oat fact(int n)if ( n = 0 ) return 1;return(fact(n-1) * n);float fact(int n) int i; float f=1;for(i=1; i=n; i+) f=f*i; return f; 2、#include #include #include int strcmp(char * s1, char * s2)inttoken =0, val1, val2, n, i;for (i=0; s1i!=0; i+) if ( s1i!=+ & s1i !=- & !isdigit(s1i) token = 1; break; fo
32、r (i=0; !token & s2i!=0; i+) if ( s2i!=+ & s2i !=- & !isdigit(s2i) token = 1; break; if ( token = 0 )val1 = atoi(s1);val2 = atoi(s2);if ( val1 val2 ) n = 1;else if ( val1 s2i ) return 1;else if ( s1i s2i ) return 1;if ( strlen(s1) = = strlen(s2) ) return 0;if ( si = = 0 ) return 1;else return 1;20032004学年“C语言程序设计基础”试卷注: 请将答案写在答题卷上一、单项选择题(每题2分,共30分)1. _是合法的用户自定义标识符。A、 b-b B、float C、 D、 _isw 2. 若变量已正确定义并赋值,表达式_不符合C语言语法。A、a*b/c; B、3.14%2 C、2, b D、a/b/c 3. _是不正确的字符常量。A、n B、1 C、a D、1014. 在 C 程序中,用_表示逻辑值“真”。A、1 B、非 0 的数 C、非 1 的数 D、 大于 0 的数5. _把x、y定义成float类型变量,并赋同一初值3.14。A、float x, y=3.14; B、float
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东佛山高明技师学院、佛山市高明区职业技术学校招聘事业编制教师8人备考题库含答案详解(夺分金卷)
- 2026福建漳州市龙文区教育局招聘43人备考题库附答案详解【研优卷】
- 2026安徽芜湖市第一人民医院第一次招聘劳务派遣人员16人备考题库及参考答案详解(新)
- 2026云南昆明聂耳交响乐团编外人员招聘2人备考题库附参考答案详解(巩固)
- 2025 网络基础的 FTP 协议的文件传输功能课件
- 2025 网络基础之区块链与数字版权网络的保护机制课件
- 护理质量管理体系与差错控制
- 合作利益冲突避免承诺书5篇范文
- 数据存储企业运营方案手册
- 医疗健康全面承诺书(6篇)
- 洗煤厂工程施工组织设计方案
- 抵押物品的借款合同模板
- 体育组织信访管理工作流程与制度
- 价值型销售(技能篇)
- 挡土墙新建及土地回填平整投标方案(技术方案)
- T-CECS120-2021套接紧定式钢导管施工及验收规程
- JGJ+196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 《创新创业基础》课件-模块四 创新成果保护与转化
- 燃料检修潜在风险与预控措施
- 中学生防震减灾知识
- 劳务合同模板电子下载
评论
0/150
提交评论