内容发布更新时间 : 2025/11/4 17:09:03星期一 下面是文章的全部内容请认真阅读。
(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