资源描述
(勤奋、求是、创新、奉献)
第 一 学期考察试卷
学院 ____________ 班级 __________ 姓名 __________ 学号 ____
《程序设计基础(C)》课程试卷A
(本卷考试时间 90 分钟)
题号
一
二
三
四
五
六
七
八
九
十
总得分
题分
30
15
12
19
24
100
得分
试题一 (每空3分,共30分)
解答下列各小题,把答案写在考卷的相应括弧内。
(1)设有int x=3, y=2, z=1; 则表达式 !(x+y)+z-1 && y+z/2的值是【 】。
(2)若有定义int m=5,y=2;则计算表达式y+=y-=m*=y执行后的y值是【 】。
(3)已知字符a的ACSII码值为97,以下语句的输出结果是【 】。
char ch=’b’;
printf(“%c, %4d\n”,ch,ch);
(4)设x,,y,z均是int型变量,请写出描述“x或y中有一个小于z”的表达式
【 】。
(5)当a=5,b=3,c=1,d=2时,执行下面一段程序后,x的值为【 】。
if(a>c)
if(b<d) x=2;
else x=3;
else x=6;
(6)设有 char str[ ]=" China ";
则执行 printf("%d\n", strlen(strcpy(str,"Shanghai")));
后的输出结果为【 】。
(7)执行下面的程序段后,k的值是【 】。
Int k=1;n=263;
do{k*=n%10;n/=10;
}while(n);
(8)表达式pow(2.8,sqrt((double)x))的值的数据类型为【 】。
i
(9) 执行下列语句后,a的值是多少? 【 】
int a=12;
a+=a-=a*a;
(10) 若w, x, y, z, m均为int型变量,则执行下面语句后的m值是. 【 】
w=1; x=2; y=3; z=4;
m=(w<x)? w : x;
m=(m<y)? m : y;
m=(m>z)? m : z;
试题二:(每题3分,共15分)
阅读下列程序,把程序的输出结果写在旁边括号中。
(1)执行下面程序段后,输出结果是【 】。
main()
{ int a[]={1,3,5,7,9,10,11},*p;
p=a+1;
printf(“%d\n”,*(p+3)*a[2]);
}
(2)执行下面程序段后,输出结果是【 】。
main( )
{
int i=3,j=2
char *a="DCBA";
printf("%c%c\n",*(a+i),*(a+j));
}
(3)以下程序运营结果是什么? 【 】
main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf("%d\n",a);
}
(4)以下程序的执行结果是什么? 【 】
#include<stdio.h>
void main()
{
int i=2,p;
int f(int a,int b);
p=f(i,i+1);
printf("%d",p);
}
int f(int a,int b)
{
return(a+b);
}
(5)以下程序的执行结果是什么? 【 】
#include<stdio.h>
void main()
{ int y=25,i=0,j,a[10];
do
{ a[i]=y%2; i++
y=y/2;
}while(y>=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j];
printf("\n");
}
试题三:(每题6分,共12分)
改错:下述程序(假定所有的变量都已经声明且赋值)有什么错误,请找出来,并将对的内容写在旁边。
(1)请找出并改正以下程序的错误:(共有3个错误)
line 1: #include <stdio.h>
line 2: int x= 1;
line 3: main(){
line 4: if( x = 1);
line 5: printf(" x equals 1" )
line 6: elseif
line 7: printf(" x does not equal 1");
line 8: return 0;
line 9: }
(2) 本程序从键盘输入一个正整数n,计算n!的值。规定定义和调用函数fact(n),计算n!。(共有3个错误)
#01 #include <stdio.h>
#02 void main(void)
#03 {
#04 int n;
#05 double f;
#06 double fact(int m);
#07 printf("Input n: ");
#08 scanf("%d", &n);
#09 f = fact( );
#10 printf("%d!=%f\n", n, f);
#11 }
#12 double fact(int m);
#13 {
#14 int i;
#15 double product;
#16 for ( i = 1; i <= m; i++ )
#17 product = product * i;
#18 return product;
#19 }
试题四:按指定规定编写程序。(第1题9分,第2题10分,共19分)
(1) 输入一个以回车结束的字符串(少于80个字符),将其中的小写字母用下面的相应大写字母替换,其余字符不变,输出替换后的字符串。
原字母 相应字母
a Z
b Y
c X
d W
.....
x C
y B
z A
(2)读入一个整数,记录并输出该数中5的个数。规定定义并调用函数countdigit(number,digit),它的功能是记录整数number中digit的个数。例如,countdigit(1309033,3)的返回值是3 。
试题五:阅读下列的问题描述、运营示例和相应的程序,把应填入其中的内容写在相应的序号后面。(每小题3分,共24分)
(1)【问题描述】输入一个正整数n(1<n<=10),再输入n个整数,将最小值与第一个数互换,最大值与最后一个数互换,然后输出互换后的n个数。
【运营示例】
Input n: 5
Input 5 integers: 8 2 5 1 4
After swapped : 1 2 5 4 8
【程序】
#include <stdio.h>
int main(void)
{
int n,i,a[10],temp1,temp2,min,max;
printf("Input n:");
scanf("%d",&n);
printf("Input ① integers:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("After swapped:");
min=max=0;
for( ② ;i<n;i++)
if(a[i]< ③ )
min=i;
temp1=a[0];
a[0]=a[min];
a[min]=temp1;
for( ② ;i<n;i++)
if(a[i]> ④ )
max=i;
temp2= ④ ;
④ =a[n-1];
a[n-1]=temp2;
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
①
②
③
④
(2)【问题描述】输入一个正整数n(1<n<10),输出九九乘法表的前nxn项,(将乘数、被乘数和积放在二维数组中,再输出该数组)。
【运营示例】
Input n: 3
* 1 2 3
1 1
2 2 4
3 3 6 9
The new string is 103+89
【程序】
#include <stdio.h>
int main(void)
{
int a[9][9],i,j,n;
printf("Input n:");
scanf("%d",&n);
a[0][0]=0;
for(i=1;i<=n;i++){
a[i][0]=i;
}
for(j=1;j<=n;j++){
a[0][j]=j;
}
for(i=1;i<=n;i++){
for(j=1;j<=i;j++)
a[i][j]= ① ;
}
printf(" * ");
for(i=1;i<=n;i++)
printf("%4d ",i);
② ;
for(i=1;i<=n;i++){
for(j=0;j<=n;j++){
if( ③ )
printf("%4d ", ④ );
}
printf("\n");
}
return 0;
}
①
②
③
④
展开阅读全文