上海大学程序设计基础(C)07-08春试题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 );