内容发布更新时间 : 2024/11/1 7:14:21星期一 下面是文章的全部内容请认真阅读。
中国计量学院2010~ 2011 学年第 1 学期 《C语言程序设计1》课程考试试卷( A )
开课二级学院: 信息学院 ,考试时间: 年____月____日 时 考试形式:闭卷 允许带 笔、学生证或身份证 入场 考生姓名: 学号: 专业: 班级:
装 订 线 题序 得分 评卷人 一 二 三(1) 三(2) 总分 试题一:阅读程序,选择填空(试题一共3小题,每小题各含4个单项选择填空。每空3分,共36分)
1、【程序说明】输入10整数,将其中前5个数从小到大排序,然后输出这10个数。(调用函数排序,地址和值传递的过程,见讲义例37)
运行示例:
Enter 10 integers:10 98 -9 3 6 9 100 -1 0 2 After sorted:-9 3 6 10 98 9 100 -1 0 2 【程序】
#include
void sort ( (1) ) *(27)/*int x[ ]或int *x都可以,与下面的 出现的 x[i]对得上*/ { int i, j, k, t;
for ( i = 0; i < n-1; i++) { //书上的选择法
k = i ;
for ( j = k+1; j < n; j++)
if ( x[j] < x[k]) k = j; t = x[i];
(2) ;(70) x[k] = t;
} }
main()
{ int i, a[10];
printf(\ for(i = 0; i < 10; i++)
scanf(\(72)//a+i等价&a[i]
(4) D ; *(47)//sort(a,5)才能与sort(int x[ ], int n)相配
printf(\ for(i = 0; i < 10; i++)
printf(\}
【供选择的答案】
C(1)A、int x[n],int n
C、int *x,int n B(2)A、x[k]=x[j] x[j]=x[k] C(3)A、a[i]
B、*(a+i)
C、&a[i]
D、sort(a,5)
D、*a[i]
D(4)A、sort(a[5],5)
C、sort(a[],5)
2、【程序说明】输入一个3*4的二维数组,找出最小值以及它的行下标和列下标,并写入文本文件a.dat中。(求二维数组的最小值并记上下标,文件操作,见例21,例53)
运行示例:
Enter a array(3*4):5 19 0 -3 2 1 3 2 10 -9 6 -1 a.dat中的内容:
min = a[2][1] = -9 【程序】
#include
{ int i, j, row, col, min, a[3][4];
FILE *fp; //文件操作的四部曲,见讲义 printf(\ for(i = 0; i < 3; i++) for(j = 0; j < 4; j++)
scanf(\
(5) ; (75) row = col = 0;
for(i = 0; i < 3; i++) for(j = 0; j < 4; j++) if(a[i][j] < min ){ (6) ;(70)
row = i; col = j; }
(7) *(58) //以写的方式打开文件a.dat并使fp指向文件头部 fprintf(fp, \fclose(fp); }
【供选择的答案】
A(5) A、min = a[0][0]
C、a[row][col] = 0 C、min = a[i][j]
B、min = &a[0][0] D、min = -1
B、a[row][col] = a[i][j] D、a[row][col] = a[j][i] B、fp=fopen(”a.dat”,”r”); D、fopen(”a.dat”,”r”);
B、sort(a[10],10)
B、int *x,int *n D、int x,int n
C、x[k]=x[i]
D
、
B、x[i]=x[k]
C(6) A、min = a[row][col]
A(7) A、fp=fopen(”a.dat”,”w”);
C、fopen(”a.dat”,”w”);
B(8) A、a[i][j] B、a[row][col] C、a[j][i] D、
a[col][row] 3、【程序说明】输入一个以回车结束的字符串(少于80个字符),调用sym函数判断该字符串是否对称。若对称,输出”Yes”,否则输出”No”。(用指针定义自定义函数判定回文,见例41)
装 订 线
运行示例1:
Enter a string: abcDcba Yes
运行示例2:
Enter a string: abcdef No 【程序】
#include
int sym(char *s) //指针指向字符串头部
{ int i, n; //指针的类型,指向,移动和取值
for(n = 0; *(s+n) != ’\\0’; n++); for( i = 0; (9) ; i++ )(69)
if(*(s+i) != (10) )*(46)//s+i与s+n-i-1对称 return 0;;
(11) ;*(53) } main()
{ char str[80];
printf(\
gets(str);
if( (12) ) printf(\(67)//if( )的执行过程 else printf(\}
【供选择的答案】
D(9) A、*(s+i)==’\\0’ B、!s[i] A(10)A、*(s+n-i-1)
C、i<=n
D、i<=n/2 D、s[n-i] D、!sym(str)
B、*(s+n-i) C、'\\0'
D(11)A、else return 1 B、return I C、else return i D、return 1 B(12)A、sym(str)=1 B、sym(str)==1 C、sym(str)==0
试题二:阅读程序,选择运行结果(试题一共4小题,第1、2小题各含5个单项选
择填空,第3、4小题各含4个单项选择填空,共18个单项选择填空。每空2分,共36分)
【程序1】(continue, break, exit(0),switch( ), 多重循环,if~else的配对,见省二试卷)
程序1
#include
{ int i, m = 15, y = 0;