上海大学程序设计基础(C)07-08春试题及答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(073)上海大学2007-2008年春季学期试卷2008.6课程名:程序设计基础(C) 课程号:00863006 学分:5

应试人声明:

我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。

学号:姓名:学院/教师:

考生须知:

1.试卷和答题纸上的”学号、姓名、学院、教师”都要填上;

2.所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上;

3.不遵守上述要求者考试成绩将为零分。

4.本卷考试的得分为卷面分,电脑上机考试(另行安排)的得分为上

机分,考试成绩为卷面分与上机分之和。

一、基础题(21分,第1小题3分,其它每小题2分)

1.以下所有项中哪三项是合法的C语言变量名:_int、a[i]、*p、long、Sum、a2.1、“abc”、b12、3s。

2.设a和b为正整数,分别写出判断表达式:a和b都不是偶数;

a和b至少有一个是偶数。

3.计算位运算表达式的值,结果用十进制描述:100^200、100&36。4.定义char s[]=“12345AbCdE”;

分别写出printf(“%s”, &s[4]); 和printf(“%c”, *(s+7)+1); 的结果。5.定义int x=111, y=112; 写出执行语句x+=x==y--?--y:++x; 后x 和y的值。

6.写出printf(“%d,%u,%x,%o”, -1,-1,-1,-1); 的结果。

7.定义int i=0; 写出执行语句while(i++<10); 后的i的值。

8.定义int a[]={1,3,5,7,9,11,13,15,17,19}, *p=&a[3]; 分别计算表达式(&a[8] - &p[-2]) 和(*(a+7)-*(p+2)) 的值。

9.定义char s[20]=“string\061\nstring\062”;

写出printf(“%d”, strlen(s)); 和printf(“%d”, sizeof(s)); 的结果

(strlen( ) 为求字符串长度的库函数,sizeof为求对象存储字节数的运算符)。

10.定义struct student { int num; char name[20];} st[3];

FILE *fp; fp已以文本方式打开文件写,试写一条语句:将st[2]的各成员的值写到文件fp中。

二、阅读程序(36分,每小题4分)

仔细阅读下列程序,将各程序的运行结果写在答卷纸上。

(1)程序

#include

main()

{

int a, b;

scanf(“%d %d”, &a, &b);

while ( a!=b )

if ( a>b ) a = a-b;

else b = b-a;

printf(“%d\n”, a);

}

输入: 30 54

输出:?

(2)程序

#include

#include

main()

{

int i, j, n;

char s[20], t;

gets(s);

n = strlen(s);

for ( i = n; i > 0; i-- )

{

t = s[n-1];

for ( j = n-1; j > 0; j-- )

s[j] = s[j-1];

s[j] = t;

puts(s);

}

}

输入: abcd

输出:?

(3)程序

#include

main()

{

int i = 1;

while ( i<=15 )

if( ++i%3!=2 )

continue;

else

printf( “%d ”, i );

printf( “\n” );

}

输出:?

(4)程序

#include

main()

{

int a[3][3]={ 1,3,6,7,9,11,14,15,17 };

int i,j,s;

for( s=i=0, j=2; i<3; i++, j-- )

s+=a[i][j];

printf( “%d,”, s );

for( s=i=j=0; j<3; i++, j++ )

s+=a[i][j];

printf( “%d\n”, s );

}

输出:?

(5)程序

#include

int run( int *p )

{

int i, r=0;

for( i=0; *(p+i)!=0; i+=2 )

switch( *(p+i) )

{

case 1: r+=*(p+i+1); break;

case 2: r-=*(p+i+1); break;

case 3: r*=*(p+i+1); break;

case 4: r/=*(p+i+1);

}

return r;

}

main()

{

int a[]={ 2, 100, 4, 4, 1, 50, 3, 5, 0, 0 };

printf( “%d\n”, run(a) );

}

输出:?

(6)程序

#include

int n=0;

int func( int x )

{

int y=1;

static int z=1;

y+=x;

z+=x;

printf( “%d: %d,%d,%d\n”, ++n, x, y, z);

}

main()

{

int i=0;

while( i++<3 )

func(i);

printf( “Total: %d\n”, n );

相关文档
最新文档