一、单项选择题(每小题 2 分,共 30 分)
1. 1. C 语言程序中可以对程序进行注释,注释部分必须用符号_____括起来。 A、?{? 和?}? B、?[?和?]? C、“/*”和”*/” D、“*/”和”/*” 2. 2. 下列运算符中,优先级最低的是_____。
A、* B、!= C、+ D、= 3. 3. 若变量已正确定义,表达式 (j=3, j++) 的值是_____ 。
A、3 B、 4 C、5 D、0
4. 4. 已知字符 ?a? 的ASCII码为 97 ,执行下列语句的输出是_____。 printf (\
A、98, b B、语句不合法 C、98, 99 D、 98, c 5. 5. 表达式strcmp(“box”, “boss”) 的值是一个_______。
A、 正数 B、 负数 C、 0 D、 不确定的数 6. 6. 数组定义为 int a[3][2]={1, 2, 3, 4, 5, 6},数组元素_____的值为6。 A、a[3][2] B、a[2][1] C、a[1][2] D、a[2][3] 7. 7. 要调用数学函数时,在#include命令行中应包含_____。
A、 ”stdio.h” B、 ”string.h” C、 ”math.h” D、 ”ctype.h” 8. 8. 判断i和j至少有一个值为非0的表达式是_____。
A、 i!=0 && j!=0 B、i*j!=0 [yh1] C、!(i==0 || j==0) D、i&&j 9. 9. 若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. 10. 若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于_____。 A、p++ B、x++ C、*(p++) D、&x++
11. 11. 若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, _____是正确的。 A、p2=p1; B、p2=**p1; C、p2=&p1; D、p2=*p1; 12. 12. 下列程序段的输出是_____。 int c[]={1, 3, 5}; int *k=c+1;
printf(\
A、 3 B、 5 C、 4 D、6 13. 13. 不正确的赋值或赋初值的方式是______。 A、char str[]=\; B、char str[7]={'s', 't', 'r', 'i', 'n', 'g'};
C、char str[10];str=\;
D、char str[7]={'s', 't', 'r', 'i', 'n', 'g', ?\\0?};
14. 14. 对于以下结构定义,++p->str中的++加在_____。
struct { char *str; int len;
} *p;
A、指针str上 B、指针p上 C、str指的内容上 D、以上均不是 15. 15. 对于如下说明,语法和语义都正确的赋值是_____。
int c, *s, a[]={1, 3, 5};
A、c=*s; B、 s[0]=a[0]; C、s=&a[1]; D、 c=a;
二、填空题(每小题 2 分,共 20 分)
1. 1. 写出下列程序段的输出结果。
float x1, x2; x1=3/2; x2=x1/2;
printf(\
2. 2. 表达式 (7<<1>>2^2 ) 的值是_______。 3. 3. 写出下列程序段的输出结果。 #define A 10
#define B (A
4. 4. 写出判断字符变量c是英文字母的表达式 。 5. 5. 写出下列程序段的输出结果。 int k, x;
for (k=0, x=0; k<=9&&x!=10; k++) x+=2;
printf (\
6. 6. 写出下列程序段的输出结果。
printf(“%d, %d”, NULL, EOF);
7. 7. 对于以下递归函数f,调用 f (3) 的返回值是_____。 f (int n)
{ return ((n>0) ? 2*f(n-1)+f(n-2) : -1); } 8. 8. 写出下列程序段的输出结果。 char str[]=\
printf(\
9. 9. 输入12345#后,写出下列程序的输出结果。 void main() { char c; for(c=getchar(); getchar()!=?#?; c=getchar()) putchar(c); }
10. 10. 执行程序find –nx ould text.txt时,*++argv[1]的值是_______。
三、程序阅读题(每题5分,共20分)
1. 1. 若输入 3 1 2 3 <回车> , 则以下程序的输出结果是_______。 #include \ void main() { int i, j, n, a[10]; scanf(\ for (i=0; i printf(\ } 2. 2. 若输入89 76 24 25 9 8 11 16 35 4 <回车> , 则以下程序的输出结果是_______。 #include \ #define N 10 main() { int x[N], y1[N], y2[N]; int i, j, n1, n2, t, p; n1=n2=0; for(i=0;i if(x[i] % 2==0) y1[n1++]=x[i]; else y2[n2++]=x[i]; } for(i=1; i if(y1[j]>y1[j+1]){ } t=y1[j]; y1[j]=y1[j+1]; y1[j+1]=t; for(i=0; i for(j=i+1; j for(i=0; i 3. 3. 以下程序的输出结果是_______。 #include void p(int *x, int y) { ++*x; y--; z=*x+y+z; printf(\ } void main() { int x=1, y=5, z=9; p(&x, y); printf(\ } 4. 4. 若输入 -6+15*3/5=<回车> , 则以下程序的输出结果是_______。 #include int m=0, sum=0; t=y2[i]; y2[i]=y2[p]; y2[p]=t; } char c, oldc='+'; do { c=getchar(); if(c<='9'&&c>='0') m=10*m+c - '0'; else { if(oldc=='+') sum += m; else sum -= m; m=0; oldc=c; printf(\ } } while(c!='='); } 四、程序填空题(每空 2 分,共 20 分) 1. 1. 下列程序的功能是创建单向链表。 #include void insert(char *, int); struct link * head = NULL; main() { char name[10]; int mark; struct link * t; while ( 1 ) { scanf(\ name, &mark); if ( strcmp(name, \ break; ______(1)_______; } for (t=head; ______(2)_______) printf(\ t->name, t->mark); } void insert(char * name, int mark) { struct link * p; p = ______(3)_______ ; strcpy(p->name, name); p->mark = mark; ______(4)_______; if ( head != NULL ) ______(5)_______; head = p; } 2. 2. prog.c是带命令行参数的程序。运行prog filename时,将文本文件filename中的 内容原样输出;运行prog -u filename时,将文本文件filename中的所有字母以大写方式输出(其余字符原样输出);运行prog -d filename时,只将文本文件filename中的数字输出。 # include { FILE *fp; char * filename, ch; int tag=0; if (argc <2 || argc>3) { printf(“Argument error\\n”); return; } if (argc == 3) { if (strcmp(argv[1], “-u”) == 0) tag=1; else if (strcmp(argv[1], “-d”) == 0) tag=2; else {printf(“Option error\\n”); return;} ______(6)_______; } else filename = argv[1]; if (______(7)_______) { printf(“Cannot open file\\n”); 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. 1. [程序说明] (10分) 输入m和n(m≥n≥0)后,计算下列表达式的值并输出。 m! n!*(m-n)! 要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。 2. 2. [程序说明] (10分) 编写函数strcmp(char * s1, char * s2)。若s1和s2均是数字串(包括+/-号),则按照十进制整数大小进行比较;否则按照Ascii序进行比较。s1大于/等于/小于s2时,分别输出1/0/-1。可以直接调用atoi函数。 2000~2001学年《程序设计基础C》参考答案 一、单项选择题(每小题 2 分,共 30 分) 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 选择 C D A D A B C B D B A B C A C 二、填空题(每小题 2 分,共 20 分) 1 3 5 1, 0.5 -3 5, 10 2 4 6 1 c>=?a?&&c<=?z?|| c>=?A?&&c<=?Z? 0, -1 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库c语言测试题 3在线全文阅读。
相关推荐: