高级程序设计语言考试试卷
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数void reverse(NodeTp *h);/* h为单链表头指针*/
的功能是将所有结点逆序连接,试写出该函数的完整实现。(7分)
C程序设计模拟试卷答案
一、1.字母 下划线2. (1) 2 (2) 1 (3) 0 (4) 10 (5) 8 (6) 0
3. (1) d=4 b=3 (2) a=3 c=24.地址值 内存中该指针(地址)处存贮的数据
6.当算术表达式中出现了char型变量时,系统自动将该型变量值转换为类型值才参与运算。
7.结构化程序设计只需使用三种程序结构,分别是结构、结构和结构。
8.C语言的变量有4种存贮类型,即extern、static、register和。
二、单项选择题(1.5×10分)
1.在IBM-PC机中,一个unsigned int型数据在内存需占用()字节。
}
(A)1(B)2(C)4(D)8
2.下列符号中,合法的C常量是()。
(A)097(B)0.5e+1.0(C)0x5FH(D)‘\ \’
3.若变量已有正确定义,程序a = 0 ; for ( i =1 ; i < = n ; i + + ) for ( j =0 ; j < = i ; j + + ) a + + ;执行后,变量a的值是()。
while(1)
{ scanf(“%d”,&x);if(x==-1) break;
if(x%2==0) fprintf(fw,“%8d”,x);
}
fclose(fw);
}
2. #include “stdio.h”
void main()
{ int n,k; double s=0,a=1;
printf(“Input n=”);scanf(“%d”,&n);
9.已知实型变量a存贮的是一个0~1之间的实数,将a以两位小数百分比形式输出(如:a=0.347592,则输出为34.75%)正确的打印语句是( )。
(A)printf(“%.2f%%”,a*100); (B)printf(“%.2f%”,a);
(C)printf(“%.2f%%”,a/100); (D)printf(“%.2f%%”,100*(a+0.5));
for(j=0;j<=40;j++)
{ k=100-i*5-j*2; if(k>=0&&i+j+k<=40) printf(“%4d%4d%4d\n”,i,j,k); }
}
4. void reverse(NodeTp *h)
{ NodeTp *s,*p;
s=h;h=NULL;
while(s!=NULL) { p=s;s=s->next;p->next=h;h=p; }
}
main()
{ sub(3);printf(“%d”,x+y);sub(y-x);
}该程序的输出是:(3分)
(3)#include“stdio.h”
#include“string.h”
void main()
{ char s[81],*p,*q,t;
gets(s);
p=s;q=s+strlen(s)-1;
10.定义C函数时,不给出返回值类型,则默认的返回值类型是( )。
(A)float(B)void(C)int(D)NULL指针
三、多项选择题(2×6分,多选或错选不得分,漏选得1分)
1.与语句if ( a !=0 ) …等效的语句是()。
(A)if ( !a ) …(B)if ( a) …(C)if (!a==0)…(D)if ( a>0 | | a<0 ) …
2.向磁盘上已有的正文(文本)文件添加字符行,文件打开方式可以是()。
(A)”r+”(B)”a”(C)”w+”(D)”a+”
3.若有定义int a[3][4];以下哪些是对该数组元素的正确描述( )。
(A)*(a+1)(B)*(a[1]+2)(C)*(*(a+2)+3)(D) a[3][2]
4.若函数头文件已有正确包含,以下能够正确而安全地输入一个字符串的C及程序有()。
(1)以下函数的功能是用递归法计算n!,请填空使之完善。
double fac(int n)
{ if(n<=1) return;
return;
}
(2)bubsort函数的功能是实现对N元整型数组冒泡排序(由大到小),请填空使之完善。
#define N 10
int a[N];
void bubsort()
五、1.#include“stdio.h”
void main()
{ int x;FILE *fw;
fw=fopen(“a.txt”,”w”);
if(!fw) { printf(“Can’t create the file a.txt.\n”);return; }
printf(“Input int numbers until –1 to stop.\n”);
main()
{ intm,i,k;
for(m=2;m<=1000;m++)
{ k=sqrt(m);
for(i=2;i<=;i++) if(m%i==0) break;
if() printf(“%5d”,m);
}
}
(4)以下程序的功能是将正文(文本)文件ABC.TXT中的大写英文字母变成小写,请填空使之完善。
fseek(fp,,SEEK_CUR);
fputc(ch,fp);fseek(fp,0L,SEEK_CUR);
}
}
fclose(fp);
}
五、程序设计(共28分)
1.写一个程序,输入若干正整数,至到-1时停止,将输入的偶数存入正文文件A.TXT中。(正文文件中,要求每个数占6列,每行5个数)(7分)
while(p<q) { t=*p;*p=*q;*q=t;p++;q--; }
puts(s);
}
若程序输入为ABCDEFG,输出为(3分)。
(4)#include “stdio.h”
#define N 8
void main()
{ int a [N ] , k , *p;
for ( k = 0 ; k < N ; k + + ) scanf ( “%d” , & a [ k ]);
3.已知int a = 1, b = 2, c = 3 , d = 4;执行下列语句后,写出指定变量的值。
(1)d ++ = ++b ;变量d =,b=
(2)a*=――c + 1 ;变量a =,c=
4.C语言中,指针变量存贮的是;指针的对象是指。
5.写一个带参数的宏定义,判断一个整型变量x是否是偶数。
四、1. (1) 2 1 0 (2) 3233221 (3) GFEDCBA (4) 213546
2. (1) 1 n*fac(n-1) (2) int a[]或int a[N] N-i < t
(3) math.h k i>k (4) “r+” ch = = EOF或ch = = -1或feof(fp) ch+32 -1L
p=a;
for (k = 0 ; k < N ; k + + ) if (a[k]>0) { *p=a[k]; p++; }
while(p>a) {――p; printf (“%d”, *p); }
}
若该程序的输入为0-96-1454 3-521,则程序的输出为
(3分)
2.程序填空(13分,每空1分)
(A)’A’(B)65(C)0101(D)’\x41’
6.C语言共用体类型变量( )。
(A)各成员变量首地址值相同 (B)各成员变量首地址值不同
(C)存贮空间为所有成员变量长度之和 (D)定义时不能进行初始化
四、读程序写结果与程序填空(共25分)
1.阅读以下程序,写出程序运行的结果。(3×4分)
(1)main()
5. #define even(x) ( (x)%2 = = 0)6. int
7.顺序 选择(条件、分支、判断) 循环(重复)8. Auto
二、1. B 2. D 3. D 4. C 5. C 6. A 7. A 8. D 9. A 10. C
三、1. BCD 2. ABD 3. BC 4. BC 5. ABCD 6. AD
西南交通大学
考试试卷
课程名称C程序设计(本)试卷(A)
二○年——二○学年第学期
教学站点专业名称
姓名学号班级分数
一、填空题(1×20分)
1.C语言规定,标识符必须以或开头。
2.写出下列表达式的求值结果。
(1)2+3>>1(2)5 ! = 1
(3)!!(2>3)(4)125%10*2
(5)sizeof (0.25)(6)1/2*(3+5)
(A)char *s; scanf(“%s”, *s);
(B)char s[41], p=s; scanf(“%s”,p);
(C)char *s;s=(char *)malloc(41);gets(&s[0]);
(D)char s[41]; scanf(“%c”,s);
5.已下可以正确表达英文字符A的C表达式是( )。
for(k=1;k<=n;k++) { a*=k;s+=pow((-1),k-1)*a; }
printf(“s=%.0f\n”,s);
}
3. #include “stdio.h”
void main()
{ int i,j,k;
printf(“%4d%4d%4d\n”,5,2,1);
for(i=0;i<=20;i++)
(A)n (n +1 ) / 2(B)( n + 1 ) ( n + 2 ) / 2
(C)n ( n-1) / 2(D)n ( n + 3 ) / 2
4.已知变量p , q是两个同类型的指针变量,下列表达式有语法错误的是()。
(A)p+1(B)p++(C)p/q(D)(p–q ) / 2
5.有定义static int a[ ] = {0 , 1 , 2 , 3 , 4 } ,*p ;执行语句p = a + 2 ;后,表达式*++p的值为()。
#include“stdio.h”
voidmain()
{ FILE*fp;int ch;
fp=fopen(“abc.txt”,);
if(!fp) { printf(“ABC.TXT not found.\n”);return; }
while(1)
{ ch=fgetc(fp);if() break;
if(ch>=’A’&&ch<=’Z’) { ch=;
(A)1(B)2(C)3(D)4
6.C语言的数组下标固定从()开始。
(A)0(B)1(C)动态指定的整数(D)下标起始值并不固定
7.以下语句用于跳出循环体的是()。
(A)break;(B)continue;(C)return;(D)quit;
8.C语言存贮字符串时,用特殊字符()表示字符串结束。
(A)’\x0a’(B)’0’(C)13(D)’\0’
{ int x=3;
do { x- -; printf ( “ %2d ”, x ) ; }while ( x > 0 );
}
该程序的输出是(3分)。
(2)#include“stdio.h”
int x=1,y=2;
void sub(int a)Leabharlann Baidu
{ static int x=3;
printf(“%d%d%d”,x,y,a);x--;
2.计算s=1!-2!+3!-4!+…+(-1)n-1n! (n >0 ),要求n值由键盘输入,输出s的值。(7分)
3.面值100元的人民币,兑换为1元、2元和5元的零钞,要求零钞总数不超过40张,求所有兑换方案。(7分)
4.已知单向链表结点结构为
typedef struct node { int data;struct node *next; } NodeTp;
{ inti,j,t;
for(i=1;i<=N-1;i++)
for(j=0;j<;j++)
if(a[j]a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=; }
}
(3)以下程序的功能是打印输出1000以内的素数,请填空使之完善。
#include“stdio.h”
#include“”
的功能是将所有结点逆序连接,试写出该函数的完整实现。(7分)
C程序设计模拟试卷答案
一、1.字母 下划线2. (1) 2 (2) 1 (3) 0 (4) 10 (5) 8 (6) 0
3. (1) d=4 b=3 (2) a=3 c=24.地址值 内存中该指针(地址)处存贮的数据
6.当算术表达式中出现了char型变量时,系统自动将该型变量值转换为类型值才参与运算。
7.结构化程序设计只需使用三种程序结构,分别是结构、结构和结构。
8.C语言的变量有4种存贮类型,即extern、static、register和。
二、单项选择题(1.5×10分)
1.在IBM-PC机中,一个unsigned int型数据在内存需占用()字节。
}
(A)1(B)2(C)4(D)8
2.下列符号中,合法的C常量是()。
(A)097(B)0.5e+1.0(C)0x5FH(D)‘\ \’
3.若变量已有正确定义,程序a = 0 ; for ( i =1 ; i < = n ; i + + ) for ( j =0 ; j < = i ; j + + ) a + + ;执行后,变量a的值是()。
while(1)
{ scanf(“%d”,&x);if(x==-1) break;
if(x%2==0) fprintf(fw,“%8d”,x);
}
fclose(fw);
}
2. #include “stdio.h”
void main()
{ int n,k; double s=0,a=1;
printf(“Input n=”);scanf(“%d”,&n);
9.已知实型变量a存贮的是一个0~1之间的实数,将a以两位小数百分比形式输出(如:a=0.347592,则输出为34.75%)正确的打印语句是( )。
(A)printf(“%.2f%%”,a*100); (B)printf(“%.2f%”,a);
(C)printf(“%.2f%%”,a/100); (D)printf(“%.2f%%”,100*(a+0.5));
for(j=0;j<=40;j++)
{ k=100-i*5-j*2; if(k>=0&&i+j+k<=40) printf(“%4d%4d%4d\n”,i,j,k); }
}
4. void reverse(NodeTp *h)
{ NodeTp *s,*p;
s=h;h=NULL;
while(s!=NULL) { p=s;s=s->next;p->next=h;h=p; }
}
main()
{ sub(3);printf(“%d”,x+y);sub(y-x);
}该程序的输出是:(3分)
(3)#include“stdio.h”
#include“string.h”
void main()
{ char s[81],*p,*q,t;
gets(s);
p=s;q=s+strlen(s)-1;
10.定义C函数时,不给出返回值类型,则默认的返回值类型是( )。
(A)float(B)void(C)int(D)NULL指针
三、多项选择题(2×6分,多选或错选不得分,漏选得1分)
1.与语句if ( a !=0 ) …等效的语句是()。
(A)if ( !a ) …(B)if ( a) …(C)if (!a==0)…(D)if ( a>0 | | a<0 ) …
2.向磁盘上已有的正文(文本)文件添加字符行,文件打开方式可以是()。
(A)”r+”(B)”a”(C)”w+”(D)”a+”
3.若有定义int a[3][4];以下哪些是对该数组元素的正确描述( )。
(A)*(a+1)(B)*(a[1]+2)(C)*(*(a+2)+3)(D) a[3][2]
4.若函数头文件已有正确包含,以下能够正确而安全地输入一个字符串的C及程序有()。
(1)以下函数的功能是用递归法计算n!,请填空使之完善。
double fac(int n)
{ if(n<=1) return;
return;
}
(2)bubsort函数的功能是实现对N元整型数组冒泡排序(由大到小),请填空使之完善。
#define N 10
int a[N];
void bubsort()
五、1.#include“stdio.h”
void main()
{ int x;FILE *fw;
fw=fopen(“a.txt”,”w”);
if(!fw) { printf(“Can’t create the file a.txt.\n”);return; }
printf(“Input int numbers until –1 to stop.\n”);
main()
{ intm,i,k;
for(m=2;m<=1000;m++)
{ k=sqrt(m);
for(i=2;i<=;i++) if(m%i==0) break;
if() printf(“%5d”,m);
}
}
(4)以下程序的功能是将正文(文本)文件ABC.TXT中的大写英文字母变成小写,请填空使之完善。
fseek(fp,,SEEK_CUR);
fputc(ch,fp);fseek(fp,0L,SEEK_CUR);
}
}
fclose(fp);
}
五、程序设计(共28分)
1.写一个程序,输入若干正整数,至到-1时停止,将输入的偶数存入正文文件A.TXT中。(正文文件中,要求每个数占6列,每行5个数)(7分)
while(p<q) { t=*p;*p=*q;*q=t;p++;q--; }
puts(s);
}
若程序输入为ABCDEFG,输出为(3分)。
(4)#include “stdio.h”
#define N 8
void main()
{ int a [N ] , k , *p;
for ( k = 0 ; k < N ; k + + ) scanf ( “%d” , & a [ k ]);
3.已知int a = 1, b = 2, c = 3 , d = 4;执行下列语句后,写出指定变量的值。
(1)d ++ = ++b ;变量d =,b=
(2)a*=――c + 1 ;变量a =,c=
4.C语言中,指针变量存贮的是;指针的对象是指。
5.写一个带参数的宏定义,判断一个整型变量x是否是偶数。
四、1. (1) 2 1 0 (2) 3233221 (3) GFEDCBA (4) 213546
2. (1) 1 n*fac(n-1) (2) int a[]或int a[N] N-i < t
(3) math.h k i>k (4) “r+” ch = = EOF或ch = = -1或feof(fp) ch+32 -1L
p=a;
for (k = 0 ; k < N ; k + + ) if (a[k]>0) { *p=a[k]; p++; }
while(p>a) {――p; printf (“%d”, *p); }
}
若该程序的输入为0-96-1454 3-521,则程序的输出为
(3分)
2.程序填空(13分,每空1分)
(A)’A’(B)65(C)0101(D)’\x41’
6.C语言共用体类型变量( )。
(A)各成员变量首地址值相同 (B)各成员变量首地址值不同
(C)存贮空间为所有成员变量长度之和 (D)定义时不能进行初始化
四、读程序写结果与程序填空(共25分)
1.阅读以下程序,写出程序运行的结果。(3×4分)
(1)main()
5. #define even(x) ( (x)%2 = = 0)6. int
7.顺序 选择(条件、分支、判断) 循环(重复)8. Auto
二、1. B 2. D 3. D 4. C 5. C 6. A 7. A 8. D 9. A 10. C
三、1. BCD 2. ABD 3. BC 4. BC 5. ABCD 6. AD
西南交通大学
考试试卷
课程名称C程序设计(本)试卷(A)
二○年——二○学年第学期
教学站点专业名称
姓名学号班级分数
一、填空题(1×20分)
1.C语言规定,标识符必须以或开头。
2.写出下列表达式的求值结果。
(1)2+3>>1(2)5 ! = 1
(3)!!(2>3)(4)125%10*2
(5)sizeof (0.25)(6)1/2*(3+5)
(A)char *s; scanf(“%s”, *s);
(B)char s[41], p=s; scanf(“%s”,p);
(C)char *s;s=(char *)malloc(41);gets(&s[0]);
(D)char s[41]; scanf(“%c”,s);
5.已下可以正确表达英文字符A的C表达式是( )。
for(k=1;k<=n;k++) { a*=k;s+=pow((-1),k-1)*a; }
printf(“s=%.0f\n”,s);
}
3. #include “stdio.h”
void main()
{ int i,j,k;
printf(“%4d%4d%4d\n”,5,2,1);
for(i=0;i<=20;i++)
(A)n (n +1 ) / 2(B)( n + 1 ) ( n + 2 ) / 2
(C)n ( n-1) / 2(D)n ( n + 3 ) / 2
4.已知变量p , q是两个同类型的指针变量,下列表达式有语法错误的是()。
(A)p+1(B)p++(C)p/q(D)(p–q ) / 2
5.有定义static int a[ ] = {0 , 1 , 2 , 3 , 4 } ,*p ;执行语句p = a + 2 ;后,表达式*++p的值为()。
#include“stdio.h”
voidmain()
{ FILE*fp;int ch;
fp=fopen(“abc.txt”,);
if(!fp) { printf(“ABC.TXT not found.\n”);return; }
while(1)
{ ch=fgetc(fp);if() break;
if(ch>=’A’&&ch<=’Z’) { ch=;
(A)1(B)2(C)3(D)4
6.C语言的数组下标固定从()开始。
(A)0(B)1(C)动态指定的整数(D)下标起始值并不固定
7.以下语句用于跳出循环体的是()。
(A)break;(B)continue;(C)return;(D)quit;
8.C语言存贮字符串时,用特殊字符()表示字符串结束。
(A)’\x0a’(B)’0’(C)13(D)’\0’
{ int x=3;
do { x- -; printf ( “ %2d ”, x ) ; }while ( x > 0 );
}
该程序的输出是(3分)。
(2)#include“stdio.h”
int x=1,y=2;
void sub(int a)Leabharlann Baidu
{ static int x=3;
printf(“%d%d%d”,x,y,a);x--;
2.计算s=1!-2!+3!-4!+…+(-1)n-1n! (n >0 ),要求n值由键盘输入,输出s的值。(7分)
3.面值100元的人民币,兑换为1元、2元和5元的零钞,要求零钞总数不超过40张,求所有兑换方案。(7分)
4.已知单向链表结点结构为
typedef struct node { int data;struct node *next; } NodeTp;
{ inti,j,t;
for(i=1;i<=N-1;i++)
for(j=0;j<;j++)
if(a[j]a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=; }
}
(3)以下程序的功能是打印输出1000以内的素数,请填空使之完善。
#include“stdio.h”
#include“”