(043)上海大学2004-2005年春季学期试卷 2005.6 课程名: 程序设计基础(C) 学分: 5
学号: 姓名: 学院/教师:
题号 题分 得分 一 20 二 30 三 8 四 12 卷面 70 上机 20 总分 90
考生须知:
1. 试卷和答题纸上的“学号、姓名、学院、教师”都要填上;
2. 所有答题内容都写在答卷纸上,交卷时将试卷和答卷纸一起交上; 3. 不遵守上述要求者考试成绩将为零分。
4. 本卷考试的得分为卷面分,电脑上机考试(另行安排)的得分为上
机分,考试成绩为卷面分与上机分的和。
一、基础题(20分,每小题2分)
1.定义int x=42,y=13;写出y+=2*(x++);执行后各变量的值。 2.设a=b=5;分别判断表达式的真假:6>a>4与b++==6。 3.分别计算字符串的长度:“Computer”与“\\\\abc\\\\123\\nmop”。 4.分别计算表达式的值:43 & 38 与 (43 ^ 38) << 2。
5.设n为正整数,写出判断表达式:n的个位数与百位数相等。 6.设x为浮点数,写出表达式:浮点数x的小数部分。
7.假设对n(n>0)个学生按下列方法进行分班:每班k(k>0)个 学生,最后一个班若不足k人也单独编成一个班。写出表达式 表示所编班的个数。
8.定义char ch; 写出语句:如果ch为小写字母则将ch转换为大
写,否则ch不变。
9.定义int a[10]; 写出语句片段:输入a数组中的10个整数。 10.定义char *pc[]={ \写出语
句片段:输出pc数组中的所有字符串,每字符串一行。
二、阅读程序(30分,每小题3分)
(043试卷) 1 / 10
仔细阅读下列程序,将各程序的运行结果写在答卷纸上。 (1)程序
#include
int m,n,k,i;
scanf( \ if ( m < n ) k = 1; else
k = -1;
for ( i = m; i != n; i+=k ) printf( \}
输入:22 16 输出:?
(2)程序
#include
int m, n = 0;
for ( m = 1; m <= 6; m++ ) {
switch( m ) {
case 4: case 6: case 9:
case 11:n = 30; break; case 2: n = 28; break;
default:n = 31; break; }
printf( \
(043试卷) 2 / 10
} }
输出:?
(3)程序
#include
int i;
for ( i = 2; i < n; i++ ) if ( n%i == 0 ) return 0; return 1; }
void testfunc( int n ) {
int i;
for ( i = 2; i < n; i++ )
if ( isprime(i) && isprime(n-i) ) break;
printf( \}
main() {
int n;
for ( n = 10; n <= 14; n += 2 ) testfunc( n ); }
输出:?
(4)程序
#include
char a[5][6]; int i, j;
for ( i = 0; i < 5; i++ )
(043试卷) 3 / 10
for ( j = 0; j < 5; j++ ) a[i][j] = '*'; for ( i = 0; i < 5; i++ ) {
a[i][i] = '#'; a[i][4-i] = '@'; a[i][5] = '\\0'; }
for ( i = 0; i < 5; i++ ) puts( a[i] ); }
输出:?
(5)程序
#include
int a[8] = { 0, 8, 16, 30, 40, 50, 60, 70 }; int n = 2, *p = &a[1]; n += *(p++);
printf( \ n *= ++(*p);
printf( \ n -= (*(++p))--; printf( \}
输出:?
(6)程序
#include
static int dd = 1; dd += x;
if ( x == 0 ) dd = 0; return dd;
(043试卷) 4 / 10
}
main() {
printf( \ func(0);
printf( \ printf( \}
输出:?
(7)程序
#include
void sort( int a[], int n ) {
int j, t; if ( n <= 1 ) return;
sort( a+1, n-1 );
for ( j = 0; j < n-1; j++ ) if ( a[j] < a[j+1] ) {
t = a[j];
a[j] = a[j+1]; a[j+1] = t; } }
main() {
int x[] = { 33, 77, 55, 11, 99 }; int i;
sort( x, 5 );
for ( i = 0; i < 5; i++ ) printf( \}
输出:?
(8)程序
(043试卷) 5 / 10