本科试题C程序设计0805.docx
- 文档编号:11371732
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:13
- 大小:28.86KB
本科试题C程序设计0805.docx
《本科试题C程序设计0805.docx》由会员分享,可在线阅读,更多相关《本科试题C程序设计0805.docx(13页珍藏版)》请在冰豆网上搜索。
本科试题C程序设计0805
哈尔滨工程大学海洋工程专业《C程序设计》期末试卷
班级姓名学号
题号
一
二
三
四
五
总分
得分
一、选择题:
(下列各题A、B、C、D四个选项中,只有一个选项是正确的。
请将正确的选项填在题前的括号内。
每小题2分,共30分)
1、下列有关C程序的说法中,正确的是:
。
A)一个C程序中只能有一个主函数且位置任意;
B)一个C程序中可有多个主函数且位置任意;
C)一个C程序中只能有一个主函数且位置固定;
D)一个C程序中可以没有主函数。
2、以下叙述中不正确的是:
。
A)在C程序运算符中,逗号运算符优先级最低;
B)C程序中,AHP和ahp代表两个不同的变量;
C)C程序中,整数和实数在内存中存放形式相同;
D)在C程序中,%是只能用于整数运算的运算符。
3、已知ch是字符型变量,下面不正确的赋值语句是:
。
A)ch=‘\0’B)ch=‘a+b’
C)ch=‘7’+‘9’D)ch=7+9
4、设有如下定义
intx=10,y=5,z;
则语句printf("%d\n",z=(x+=y,x/y));
的输出结果是。
A)1B)0C)4D)3
5、设有如下定义:
charch=’z’,则执行下面语句后变量ch是值为:
。
ch=(‘A’<=ch&&ch<=‘Z’)?
(ch+32):
ch
A)AB)aC)ZD)z
6、若x和y都为float型变量,且x=3.6,y=5.8执行下列语句后输出结果为:
。
printf(“%f”,(x,y));
A)3.600000B)5.800000
C)3.600000,5.800000D)输出符号不够,输出不正确值
7、设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为:
。
A)strcpy(str1,str2);
B)strcpy(str1,“China”);
C)strcat(str1,“China”)
D)strcat(“Beijing”,str2);
8、以下对一维整型数组a的正确说明是。
A)inta(10);
B)intn=10,a[n];
C)intn;scanf(“%d”,&n);inta[n];
D)#defineSIZE10inta[SIZE];
9、设有如下程序段,则其执行结果为:
。
staticinta[]={1,2,3,4},*p;inti;
p=a;(p+3)+=2;printf(“%d”,*(p+3));
A)0B)6C)a[3]地址D)不正确的值
10、若I为整型变量,则下列程序段的运行结果为。
I=322;
if(I%2==0)printf(“#####”)
elseprintf(“*****”);
A)#####B)#####*****
C)*****D)有语法错误,无法输出结果
11、已知intx=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为:
。
if(x>y||x
z=x;x=y;y=z;
A)x=50,y=80,z=80B)x=50,y=30,z=30
C)x=30,y=50,z=80D)x=80,y=30,z=50
12、下面程序段的运行结果是:
。
x=y=0;while(x<15)y++,x+=++y;
printf(“%d,%d”,y,x);
A)20,7B)6,12
C)20,8D)8,20
13、若有语句int*point,a=45;point=&a;
下面均代表同一变量地址的一组选项是:
。
A)&apoint*&a
B)&*a&a*point
C)point&point&a
D)&a,&*pointpoint
14、以下程序的运行结果是:
。
main()
{inta=2,i;
for(i=0;i<3;i++)printf(“%4d”,f(a));}
f(inta)
{intb=0;staticintc=3
b++;c++;return(a+b+c);}
A)71013B)777
C)7911D)789
15、若有如下定义:
inta[3][3]={1,2,3,4,5,6,7,8,9},i;
则下列语句的输出结果是:
。
for(i=0;i<=2;i++)printf(“%d”,a[i][2-i]);
A)357B)369
C)159D)147
二、判断题:
(正确的填√,错误的填×,每小题1分,共10分)
1、C语言本身没有输入输出语句,输入输出操作都是通过调用库函数来实现的。
()
2、在C语言中,int、char和short三种类型数据在内存中所占用的字节数都是由用户自己定义的。
()
3、在C程序中一行内可以写几个语句,一个语句可以分写在多行上。
因此,并不是每一条C语句都必须有一个分号的。
()
4、在C语言的if语句中,用作条件判断的表达式只能是关系和逻辑表达式。
()
5、在C语言中break和continue都是循环中途退出语句,其中break语句用来跳出一层循环结构;continue语句用来结束一次循环。
()
6、C语言中while和do-while循环的主要区别是while语句的循环体至少会被执行一次,而do-while语句的循环体则可能一次也不执行。
()
7、数组首地址不仅能通过数组中第一个元素的地址表示,也可以通过数组名来表示。
()
8、在C语言中,只有在两个字符串所包含的字符个数相同时,才能比较大小。
如字符串“That”与“The”就不能进行大小比较。
()
9、函数的返回值类型是由函数的类型和return语句中表达式的类型共同决定的,当这两类型不一致时最终起决定作用的是return中表达式的类型。
()
10、定义指针变量时指定的类型称为基类型,基类型是指针变量所指向变量的类型,因此指针变量被定义之后都只能指向某一类型的变量。
()
三、程序填空题(每题2分,共12分)
1、输入一个字符,如果是大写字母,则把其变成小写字母;如果是小写字母,则变成大写字母;其它字符不变。
请填空:
main()
{charch;
scanf(“%c”,&ch);
if(
(1))ch=ch+32;
elseif(ch>’a’&&ch<‘z’)(
(2));
printf(”%c\n”,ch);}
2、以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。
请填空:
main()
{inta[3][4]={{7,5,-2,3},{1,0,-3,4},{6,8,0,2}};
intb[3][4]={{5,-1,7,6},{-2,0,1,4},{2,0,8,6}};
inti,j,c[3][4];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
c[i][j]=___(3)____;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
printf(“%3d”,c[i][j]);
____(4)___;}
}
3、以下程序使用递归法求n!
请填空:
floatfac(intn)
{floatf;
if(n<0){printf(“n<0”dataerror);f=-1;}
elseif(n==0||n==1)f=1;
elsef=(5);
return(f);}
main()
{intn;floaty;
printf(“inputaintegernumber”);
scanf(“%d”,&n);
y=(6);
printf(“%d!
=%15.0f”,n,y);}
四、写出下面程序的执行结果(本大题24分,每小题4分)
1.main()
{floata=3.14,b=3.14159;
printf(“%f,%5.3f\n”,a,b);}
2.main()
{chara[5][5],i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(i==0||i+j==4)
a[i][j]='*';
elsea[i][j]='';
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
printf("%c",a[i][j]);
printf("\n");}}
3.main()
{intx,i;
for(i=1,x=1;i<=50;i++)
{if(x>=10)break;
if(x%2==1){x+=5;continue;}
x-=3;}
printf(“%d\n”,i);}
4.func(intx,inty)
{intz;
z=a+b;
return(z);}
main()
{inta=6,b=7,c=8,r;
r=func((a--,b++,a+b),c--)
printf(“%d”,r);}
5.#include
voidincrement(void);
voidmain(void)
{
increment();
increment();
}
voidincrement(void)
{
staticintx=8;
x++;
printf("x=%d\n",x);
}
6.#include
voidmain(void)
{staticchara[]="ABCDEFGH",b[]="abCDefGh";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));
printf("\n");
}
五、编程题(共10分)
1.有一函数,其函数关系如下,试编程求对应于每一自变量的函数值。
x2(x<0)
y=-0.5x+10(0
x<10)
x-
(x
10)
2.若有如下公式:
+
+
+。
。
。
。
。
。
。
+
试根据上述公式编程计算
的近似值
(精确到10-6)。
3.编一程序,首先将一个包含10个数的数组按照升序排列,然后将从一指定位
置m开始的n个数按照逆序重新排列,并将新生成的相互组输出。
要求使用指
针控制方法实现上述功能。
一、选择题(本大题30分,每小题2分)
1~5ACBDD6~10BCDDA
11~15ADDDA
二、判断题(本大题10分,每小题1分)
1.√2.×3.×4.×5.√
6.×7.√8.×9.×10.√
三、程序填空题(本大题12分,每小题2分)
评分标准:
全对的满分,半对半错的给一半分,全错的不得分。
1.
(1)ch>=’A’&&c<=’Z’
(2)ch=ch-32
2.(3)a[i][j]+b[i][j]
(4)printf(“\n”)
3.(5)n*fac(n-1)
(6)ac(n)
四、写出下面程序的执行结果(本大题24分,每小题4分)
评分标准:
全对的满分,半对半错的给一半分,全错的不得分。
1.3.140000,3.141
2.*****
*
*
*
*
3.8
4.21
5.x=9
x=10
6.CDG
五、编程题(本大题24分,第一题7分,第二题8分,第三题9分)
1.#include
main()
{floatx,y;
scanf(“%f”,&x);
if(x<0)y=x*x;
elseif(x>=0&&x<10)y=-0.5*x+10;
elsey=x-sqrt(x);
printf(“y=%f”,y);
}
2.17.main()
{floata=1,b,pi,t=1;
while(t>=1e-6)
{pi=pi+t;
a++;
b=a*a;
t=1/b;
}
pi=pi*6;
printf(“pi=%f”,pi);
}
3.#include
main()
{intdata[10],m,n,j,*p1,*p2,temp;
printf(“\nInput10integer\n”);
for(j=0;j<10;j++)
scanf(“%d”,&data[j]);
printf(“Inputmandn:
\n”);
scanf(“%d%d”,&m,&n);
if(m<1||m>10||n<1||n>10||(m+n)>11)
{printf(“InputError!
\n”);
exit(0);
}
sort(data,10);
printf(“Resultofsortis:
\n”);
for(j=0;j<10;j++)
printf(“%d”,data[j]);
printf(“\n”);
p1=data+m-1;
p2=data+m+n-2;
for(;p1 {temp=*p1;*p1=*p2;*p2=temp;} printf(“FinalResultis: \n”); for(j=0;j<10;j++) printf(“%d”,data[j]); } sort(int*p,intn) {inti,j,temp; for(i=0;i for(j=i+1;j if(*(p+i)>*(p+j)) {temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 试题 程序设计 0805