资源描述
考试卷( A )卷
考试课程
程序设计基础
考试日期
成 绩
课程号
教师号
任课教师姓名
考生姓名
学号(8位)
年级
专业
注意:
(1) 所有答案均写在答题纸上,写在试卷上无效;
(2) 考试结束后请将试卷和答题纸一起交上来。
(3) 试题中若出现C源代码,考虑源代码的大小写,不考虑标点符号的中英文状态;
(4) 本试题中C代码的开发环境为Microsoft Visual C++6.0,运行环境为Windows2000/XP系统;
(5) 当题目中只有程序片段时,假设完整程序已经具有其它必要代码且能够正确运行,如包含相应的库文件、main()函数的定义等。
试题一、单项选择题(每小题 2 分,共 20 分)
1. 下列可用于C语言用户标识符的一组是( )
A. void, define, WORD B. a3_b3, _123,Car C. For, -abc, IF Case D. 2a, DO, sizeof
2. 以下叙述中正确的是( )。
A. 构成C程序的基本单位是函数
B. 可以在一个函数中定义另一个函数
C. main( )函数必须放在其他函数之前
D. 所有被调用的函数一定要在调用之前进行定义
3. 程序段( )的功能是将变量u、s中的最大值赋给变量t.
A、if (u>s) t=u; t=s; B、t=u; if (t>s) t=s;
C、if (u>s) t=s; else t=u; D、t=s; if (u>t) t=u;
4. 已知i=3,则printf (“%d”, -i++) 的输出结果为( )
A、-4 B、 -3 C、-2 D、 以上均不对
5. 有数组定义语句”char a[20]”, 则正确的输入语句为( )
A、scanf(“%s”, &a) B、scanf(“%s”, a[]) C、 gets(a[20]) D、gets(a)
6. 下面程序段的运行结果是( )。
char *s="abcde"; s+=2;printf("%d",s);
A. cde B. 字符′c′ C. 字符′c′的地址 D. 无确定的输出结果
7. 以下能正确定义一维数组的选项是( )。
A. int a[5]={0,1,2,3,4,5};
B. char a={′A′,′B′,′C′};
C. int a[5]="0123";
D. char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};
8. 设有以下说明语句 typedef struct { int n; char ch[8]; } PER; 则下面叙述中正确的是( )。
A. PER 是结构体变量名 B. PER是结构体类型名
C. typedef struct 是结构体类型 D. struct 是结构体类型
9 对于以下递归函数f,调用 f(3) 的返回值是( )。
int f(int n)
{
if(n) return f(n-1) + n;
else return n;
}
A、10 B、6 C、3 D、0
10. 指针变量 p1,p2 类型相同,要使 p1,p2 指向同一变量,哪个语句是正确的( )
A、p2=*&p1; B、p2=**p1; C、p2=&p1; D、 p2=*p1;
试题二、程序填空题。按程序功能,在划线部分填写适当的内容(每空2分,共20分)
1. 功能:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
#include <stdio.h>
int main()
{
int length(__(1)__);
int len;
char str[20];
printf("please input a string:\n");
scanf("%s",str);
len=length(__(2)__);
printf("the string has %d characters.",len);
}
int length(char *p)
{
int n;
n=0;
while(*p!='\0')
{
__(3)__;
p++;
}
return n;
}
2. 功能:将一个字符串中下标为m的字符开始的全部字符复制成为另一个字符串。
#include<stdio.h>
void strcopy(char *str1,__(1)__,int m)
{
char *p1,*p2;
p1= __(2)__;
p2=str2;
while(*p1)
*p2++=__(3)__;
*p2=’\0’;
}
void main()
{
int i,m;
char str1[80],str2[80];
gets(str1);
scanf("%d",&m);
strcopy(str1,__(4)__,m);
puts(str1);
puts(str2);
}
3. 功能:函数sort是使用选择法将一维整型数组中各元素按值从大到小排序。
void sort( int a[ ], int n)
{
int i, j,k,temp;
for(i=0; i<n-1; i++)
{
(1)
for(j=i+1; j < n; j++)
if( (2) )
(3)
if(k!=i)
{temp=a[k]; a[k]=a[i]; a[i]=temp;}
}
}
试题三、程序阅读题:阅读程序,写出程序的正确输出结构(每题5分,共30分)
1. 以下程序运行后的输出结果是
#include <stdio.h>
int main(void)
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2) break;
++x;
}
x++;
}
printf("x=%d\n",x);
return 0;
}
2. 以下程序运行后的输出结果是
#include <stdio.h>
int main(void)
{
char *name[]={"John","Goldy","Richard","Jackson","Lenovika"};
char **p;
int i;
p=name;
for(i=0;i<5;i++)
{
printf("%c,%s\n",**p,*p+i);
p++;
}
return 0;
}
3. 输入15246,以下程序运行后的输出结果是
#include<stdio.h>
void main()
{
int a,b;
scanf("%d",&a);
b=0;
while(a>0)
{
b = b*10+a%10;
a = a/10;
}
printf("%d\n",b);
}
4. 以下程序运行后的输出结果是
#include <stdio.h>
int f(int a)
{
int b=0;
static int c=3;
a=c++,b++;
return a;
}
int main(void)
{
int a = 2,i,k;
for(i=0;i<2;i++)
k= f(a++);
printf("%d\n",k);
return 0;
}
5. 以下程序运行后的输出结果是
#include <stdio.h>
int i;
int main(void)
{
void prt();
for(i = 0;i<5;i++)
{
prt();
}
return 0;
}
void prt()
{
for(i=0;i<5;i++)
printf("%c",'*');
printf("\n");
}
6. 以下程序运行后的输出结果是
#define SQURARE(n) ((n)*(n))
#include <stdio.h>
int main(void)
{
int i=1;
while(i<=4)
printf("%d\n",SQURARE(i++));
return 0;
}
试题四、编程题(每题10分,共 30 分)
1. 编程计算两点间的直线距离。
要求:点坐标采用结构体类型,屏幕获取输入两点,并输出距离(小数点后保留两位)。
2. 编写函数实现功能:删除一个字符串中的所有数字字符,处理后的字符串仍然存放在原来的字符串中。 例如:传入的字符串为:48CTYP9E6,则处理后该字符串为:CTYPE。函数的形式为:
void deldigits(char *str)
其中str 为传入要处理的字符串的指针。
3. 编程计算下列级数和。要求:屏幕获取输入x,计算精度直至末项绝对值小于为止,并将结果保存在文本文件”d:\\program\\result.txt”中。
考试课程
程序设计基础
考试日期
18日
成绩
课 程 号
教 师 号
任课教师姓名
考生姓名
学号(8位)
年级
专业
座位号
参考答案(请把答案写到答题纸上)
试题一、单项选择题(每小题 2 分,共 20 分)
题号
1
2
3
4
5
6
7
8
9
10
答案
B
A
D
B
D
C
D
B
B
A
二、填空题(每空2分,共20分)
1. (1) char *p (2) str (3) n++
2. (1) char *str2 (2) str1+m (3) *p1++ (4) str2
3. (1) k=i (2) a[j]>a[k] (3) k=j
试题三、程序阅读题:阅读程序,写出程序的正确输出结构(每题5分,共30分)
1. x=6
2. J,John
G,oldy
R,chard
J,kson
L,vika
3. 64251
4. 4
5. *****
6. 1
9
试题四、程序设计题(共 30 分)
1.(8分)
#include <stdio.h>
#include <math.h>
typedef struct _point
{
float x;
float y;
} point;
void main()
{
point a,b;
float dist;
prinf(“Please input point a:\n”);
scanf(“%f%f”,&a.x,&a.y);
prinf(“Please input point b:\n”);
scanf(“%f%f”,&b.x,&b.y);
dist=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
dist=sqrt(dist);
printf(“The distance between point a and point b is:%.2f”,dist);
}
2.
#include <stdio.h>
void deldigits(char *str)
{
char *p=str;
while(*p!=’\0’)
if(*p>=’0’ && *p<=’9’)
p++;
else
*str++=*p++;
*str=’\0’;
}
/* void main()
{
char item[100];
gets(item);
deldigits(item);
puts(item);
}
*/
3.#include <stdio.h>
int main(void)
{
FILE *fp;
int i=1;
double x,sum=0.0,t=1.0;
fp=fopen("d:\\program\\result.txt","w");
printf("please input x:");
scanf("%lf",&x);
while(t>=1e-7)
{
sum+=t;
t*=x/(i++);
}
printf("The sum is %lf\n",sum);
fprintf(fp,"%lf", sum);
fclose(fp);
return 0;}
第 6 页 共 6 页
展开阅读全文