(083)上海大学2008-2009年春季学期试卷 2009.6 课程名: 程序设计基础(C) 课程号:00863006学分:5
应试人声明: 我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。
学号: 姓名: 学院/教师: 题号 题分 得分 一 21 二 36 三 8 四 12 卷面 77 上机 23 总分 100 考生须知:
1. 试卷和答题纸上的”学号、姓名、学院、教师”都要填上;
2. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上; 3. 不遵守上述要求者考试成绩将为零分。
4. 本卷考试的得分为卷面分,电脑上机考试(另行安排)的得分为上
机分,考试成绩为卷面分与上机分之和。
一、基础题(21分,第1小题3分,其它每小题2分)
1. 在下列符号中选出3个合法的C语言标识符:
Abc, 123, _char, a*b, static, case, long,INT
2.假设C语言中一个int型数据在内存中占2个字节,请写出unsigned int 型数据的取值范围。
3.假设a,b,c分别表示三角形的三个边长,请写出a,b,c能够构成三角形的条件:任意两边之和大于第三边。 4.假设m是一个2位正整数, 请用一个表达式描述m的逆序整数。比如,m是12,则m的逆序整数是21。
5.设有定义int s=168; 请写出表达式s/2+(s+1)/2的值。
6.设有定义int x=8; 请写出表达式x<<2和x>>2的值。
(083试卷) 1 / 14
7. 设有定义int y=2009; 写出表达式 ((y%4==0) && (y0!=0) || (y@0==0)) ? \的值。
8.定义int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a+5; 请写出表达式p-a和++(*(++p))的值。 9. 设有定义:int x;char s[80]; 执行scanf(“M%s”,&x,s);语句,若从键盘第1列开始输入数据1234.56<回车>,请分别写出x和s的值。
10.请从以下有关字符串的描述中选出正确的说法(多选)。
A. 字符数组的字符串可以整体输入输出
B. 字符数组中只能存放键盘上可以找到的字符 C. 字符串\小于字符串\
D. 可以使用形如\的表达式比较字符串的大小
二、阅读程序(36分,每小题4分)
仔细阅读下列程序,将各程序的运行结果写在答卷纸上。
(1)程序
#include
int t, h, m;
scanf( \ h = t/100; if ( h==0 )
h = 12;
printf( \ m = t0; if ( m<10 )
printf( \ printf( \
if( t<1200 || t==2400 ) printf( \
(083试卷) 2 / 14
else
printf( \}
输入:1508 输出:?
(2)程序
#include
int a, b; char c;
scanf( \ switch( c ) {
case '+': printf(\ case '-': printf(\ default: printf(\ } }
输入:33-11 输出:
(3)程序
#include
int i, j, n;
scanf( \ for( i=0; i { for( j=0; j if( i==0 || i+j==n-1 || i==n-1 ) printf( \ else printf( \ (083试卷) 3 / 14 } printf( \ } } 输入:4 输出:? (4)程序 #include int a[10], i, k; for ( i=0; i<10; i++ ) a[i] = i + 1; for ( i=9; i>=2; i-- ) a[i] = a[i-2]; for ( i=0; i<10; i++ ) printf( \} 输出:? (5)程序 #include int comp( int a, int b ) { int c; if ( a>b ) c=1; else if ( a==b ) c=0; else c=-1; return( c ); } main( ) { int a[5], b[4]; int i, k; for ( i=0; i<5; i++ ) scanf( \ (083试卷) 4 / 14 for ( i=0; i<4; i++ ) b[i] = comp( a[i], a[i+1] ); for ( i=0; i<4; i++ ) printf( \} 输入: 200 100 500 400 300 输出:? (6)程序 #include int getan( int n, int a ) { if ( n==1 ) return a; else return getan( n-1, a ) + 2; } main( ) { int a=3, b; b = getan( 5, a ); printf( \} 输出:? (7)程序 #include char s1[80], s2[255]; char table[10][10]={\ \ int i, j, n, k; gets( s1 ); for ( i=j=0; s1[i]!='\\0'; i++ ) { if ( s1[i]<'0' || s1[i]>'9' ) (083试卷) 5 / 14