上海对外经贸大学历年C语言程序设计试题
本试卷为上海对外经贸大学历年C语言程序设计试题,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。
C语言程序设计试题
一、单项选择题 (共20题,每题2分,共计40分)
( D )
1、有以下程序
#include <stdio.h>
main()
{
int x=l, y=2, z=3;
if(x>y) if(y<z) printf("%d", ++z);
else printf("%d", ++y);
printf("%d\n", x++);
}
程序的运行结果是________。
( C )
2、若ch为char型变量,k为int型变量(已知字符a的ascil码是97),则执行下列语句后输出的结果为( )。
ch='b'; k=10;
printf("%x,%0,",ch,ch,k);
printf("k=%%d\n",k);
( B )
3、设有字符串a="he has 钱!",则该字符串的长度为( )。
( D )
4、若有说明 :char c[10]= { 'e','a','s','t','\0' };, 则下述说法中正确的是 __ __________.
( D )
5、设有二维数组a(12,10),其每个元素占4个字节,数据按列优先顺序存储,第一个元素的存储地址为100。则元素a(5,5)的存储地址为________。
( B )
6、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu
{
int i;
int name;
} st,*p;
p=&st;
( C )
7、若已定义x为int型变量,说明指针变量p的正确语句是________。
( D )
8、下列不是循环语句的是________。
( C )
9、给一个short类型变量赋值的范围是________。
( B )
10、定义如下变量和数组: int k; int a[3][3]= {9,8,7,6,5,4,3,2,1}; 则下面语句的输出结果是________。
for(k=0;k<3;k++) printf("%d",a[k][k]);
( A )
11、下列选项可以正确表示字符型常量的是________。
( B )
12、有如下程序
main()
{
int x=3;
do
{
printf("%d",x--);
}
while(!x);
}
该程序的执行结果是______。
( D )
13、设向量i+2j+3k与2i+mj+6k垂且,则m=( )
( D )
14、请阅读程序:
#include<math.h>
#include<stdio.h>
main()
{
float a,b,c;
scanf("%f%f",&a,&b);
c=a/b;
while(1) {
if(fabs(c)>1.6) {
a=b;
b=c;
c=a/b;
}
else break;
}
printf("%f\n",b);
}
若运行时从键盘上输入3.6 2.4<回车>,则输出结果是______。
( A )
15、下列语句中,正确的是______。
( C )
16、设有以下语句:char str1[]="string",str2[8],*str3,*str4="string"; 则下列选项中,______不是对库函数strcpy的正确调用,此库函数用来复制字符串。
( B )
17、已知:int a[2][3]; 则对数组元素的非法引用是________。
( B )
18、能正确表示a≥10或a≤0的关系表达式是________。
( B )
19、若下列语句组,则输出结果是________。
int x=0;
if(x++<0) printf("%d",--x);
printf("%d",x++);
( A )
20、设有结构体的定义如下:
struct data
{
char c1;
char c2;
}
;
则sizeof(struct data)的值是________。
二、判断题 (共10题,每题2分,共计20分)
( T )
1、字符常量与字符串是两种不同的常量。
( T )
2、全局静态变量的作用域限制在定义它的源文件内,只能为该源文件内的函数公用。
( T )
3、宏定义在行末不加分号。
( F )
4、若变量定义为int x, y;,则x + y = 22是符合c语言语法的表达式。
( T )
5、c语言程序可以有多个文件。
( T )
6、在switch 语句中, case 后可不加" {}"。
( F )
7、若有 int k = 1; while(k=1) k++ ; 则while 循环执行的次数是1 次
( F )
8、若定义时,函数返回值类型为void ,函数仍然可有return 带回返回值。
( F )
9、使用strcpy(字符数组,字符串)函数时,字符串后面的'\0'并没有一起拷贝到字符数组中。
( T )
10、两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数
三、填空题 (共5题,每题4分,共计20分)
1、若有以下定义语句float x[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};,则表达式"x[1][1]*x[2][2]"的值是【1】。
2、源程序的基本单位是【】。
3、执行下面程序段后, k 值是________。
k=1;
n=263;
do
{
k*=n%10;
n/=10;
}
while(n);
4、以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。
#include <stdio.h>
main()
{
int a[10],*p,*s;
for(p=a;p-a<10;p++) scanf("%d",p);
for(p=a,s=a;p-a<10;p++) if(*p>*s) s=________;
printf("index=%d\n",s-a);
}
5、main()
{
int a,b;
for (a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
}
程序的输出结果a的值为________。
四、程序分析题 (共4题,每题5分,共计20分)
1、以下函数sstrcat( )的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。
void sstrcat(char *s, char *t)
{
int n;
n= strlen(s);
while (*(s+n)= ________ )
{
s++;
t++;
}
}
2、以下程序的输出结果是_____________。
main()
{
int a=10,b=10;
printf("%da%d",a――,――b);
}
3、执行下列程序段后,输出的a的值是_____________。
main( )
{
int a = 2;
switch(a)
{
case 0: a--;
break;
case 1: a++;
break;
case 2: a=a+5;
break
}
printf("%d",a);
}
4、已知t=5,则表达式"t-=t+=3"的值是______。
五、编程题 (共3题,每题0分,共计50分)
1、编写程序: 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
2、编写程序求解约瑟夫问题,有n个小孩围成一圈,给他们从1开始编号。现指定从第w个小孩开始报数,报到s时出列然后从下个小孩开始重新报数,报到s时出列如此重复下去直到所有的小孩都出列。求小孩出列的顺序,使用结构体实现。
3、输入一个字符串和一个特定字符,在字符串中删除从该特定字符开始的所有字符。例如输入字符串为"abcdefg",特定字符为'd',删除后的字符串为"abc";输入字符串为"abcdefg",特定字符为'x',则输出“特定字符不存在”。
相关标签:
- C语言
- 上海对外经贸大学
- 试题