注:尽管在函数swap()里,形参x和y的值发生了交换,但根据函数参数的传递原则——“实参向形参单向传值(即x向a赋值,y向b赋值),形参的改变不影响实参”,实参变量a和b的值未发生交换!
2. 下列程序将输出_____。
# include
int f(int m)
{
static int k=0;
for(; k<=m; k++) s++; return s;
}
void main(void ) {
int s=1;
s=f(2)+f(2);
printf(\ return;
}
【解答】输出结果为:6#21# 注:(1)全局变量s的初始值为0;
(2)在f函数中,s是全局变量有效,而在main函数中,s是局部变量有效;
(3)在f函数中,k是静态变量,每次函数f调用结束后,其内存单元和值仍然保留。
3. 若输入:1273 <回车>,以下程序的输出结果是_______。
#include
scanf(“%d”, &n); m=0;
while (n>0) {
m=m*10+n; n/=10; }
《C程序设计基础及实验》期中考试试卷, 2012年11月23日 6 / 10
printf(“%d”, m); return;
}
【解答】输出结果是:3721
4. 若输入 -6+15*3/5=<回车> , 以下程序的输出结果是_______。 #include
int m=0, sum=0; char c, oldc='+';
do {
c=getchar(); if(c<='9'&&c>='0')
m=10*m+c - '0';
else {
if(oldc=='+')
sum += m;
else
sum -= m;
m=0; oldc=c;
printf(\ }
} while(c!='='); return;
}
【解答】0#-6#9#6#1#
程序的意思:对输入的字符串扫描,若碰到数字字符序列,求出相应的整数值m;若碰到其它字符——若字符是+号,则将m值加入到sum中去;若字符不是+号,则将从sum中减去m值。
5. 若输入:how are you? <回车>,以下程序的输出结果是_______。
#include
int word; char ch;
《C程序设计基础及实验》期中考试试卷, 2012年11月23日 7 / 10
word=0; while((ch=getchar())!='?'){ if(ch==' ') word=0; else if(word==0){ word=1; if(ch<='z'&&ch>='a') ch=ch-'a'+'A'; } putchar(ch); } return; }
【解答】How Are You
该程序思路:碰到一个新单词,则将该单词首字母从小写改为大写,其它字符原样输出。 提示:可借鉴统计单词个数程序的算法。
试题四、程序填空题(每空2分,共30分)
1. 输入正整数n,计算s = 1/1! + 1/2! + 1/3! + ……+ 1/n!的值。 #include
int j, k, n; double f, s;
scanf(\ (1) ; s=0.0 for (k=1 ; k<=n; k++){ (2) ; f=1.0
for(j=1; (3) ; j++) j<=k
(4) ; f=f*j
s=s+1.0/f; }
printf(\ (5) ); s return; }
2. 输入一个整数,统计该数的位数。如:输入12534,输出5;输入-99,输出2;输入0,输出1。
#include
《C程序设计基础及实验》期中考试试卷, 2012年11月23日 8 / 10
{
int count=0, number;
scanf(“%d”, (6) ); &number
if (number < 0) number = (7) ; -number do { number = (8) ; number/10 count++;
} while ( (9) ); number!=0 printf(“%d\\n”, count); return;
}
3. 下面程序验证“哥德巴赫猜想”:寻找3到1000间满足“偶数=素数1+素数2”(如10=3+7)的所
有偶数。素数指只能被1和自身整除的正整数,如2,3,17等;1不是素数。 #include
int i, j; (10) ; /*prime()函数声明*/ int prime(int n)
for (i=3 ; i<=500; i++) for (j=2; ; j++) if ( (11) ) { prime(j)==1 && prime(2*i-j)==1 printf(“%d = %d +%d\\n”, 2*i, j, 2*i-j); /*若2*i为两个素数之和 */ break; }
(12) ; return } int prime(int n) /* 判断n是否为素数:是返回1,不是返回0 */ {
int i;
if (n==1)
return (13) ; 0 for (i=2; i<=n/2; i++)
if ( (14) ) n%i==0
return 0;
return (15) ; 1
}
《C程序设计基础及实验》期中考试试卷, 2012年11月23日 9 / 10
C程序设计基础及实验》期中考试试卷, 2012年11月23日10 / 10
《