c语言08-09春试题及答案 下载本文

内容发布更新时间 : 2024/4/26 16:38:16星期一 下面是文章的全部内容请认真阅读。

(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 main( ) {

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 main( ) {

int a, b; char c;

scanf( \ switch( c ) {

case '+': printf(\ case '-': printf(\ default: printf(\ } }

输入:33-11 输出:

(3)程序

#include main( ) {

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 main( ) {

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 main( ) {

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