c语言近几年考题(2)

2019-05-18 14:10

}

void main() {

char s[20]=\

fun(s,t1,t2); puts(t1); puts(t2); }

(1)程序中第一个puts的输出结果为( 36 )

36 (A) abcdefg (B) 2345 (C) 2AbCdE3Fg45 (D) 2aBcDe3fG45 (2)程序中第二个puts的输出结果为( 37 ) 37 (A) abcdefg (B) 2345 (C) 2AbCdE3Fg45 (D) 2aBcDe3fG45

7. 有如下程序:(考点:命令行参数、宏定义、条件运算符)

# include

# define IsAlpha(c) c>='a'&&c<='z'?1:0 void main(int argc,int **argv) {

char *str,cx; int cn=0; if(argc<2) return;

str=(*++argv); while(*str) {

cx=(*str++); if(IsAlpha(cx)) cn++; }

printf(\}

若上述程序经编译连接后形成的可执行文件名为:2-8.exe

(1) 当输入命令行: 2-8.exe 2abHc abA2时,输出为( 38 )。 38 (A) 5 (B) 3 (C) 1 (2) 上述程序的功能是( 39 )。

39 (A) 命令行第一参数2abHc中出现的小写字母个数

(B) 命令行第一参数2abHc中出现的大写字母个数 (C) 命令行第二参数abA2中出现的小写字母个数

(D) 命令行第二参数abA2中出现的大写字母个数

8. 有如下程序:(考点:文件、大小写字母转换方法 )

# include void main()

{

char ch; FILE *fp;

if((fp=fopen(\ {

第 6 页 共 50 页

(D) 2

printf(\ exit(0); }

ch=fgetc(fp);

while(ch!=EOF) {

if(ch>='a'&&ch<='z') ch-=32;

else if(ch>='A'&&ch<='Z') ch+=32; putchar(ch); ch=fgetc(fp); }

fclose(fp); }

若磁盘文件test.dat中的内容为ab12HD,则程序运行结果为( 40 )。 40 (A) ab12HD (B) Ab12hD (C) aB12Hd (D) AB12hd 注意:① 请把下面“程序填空”中各小题答案写在主观题答题纸上 ② 每一个空只填一个语句或一个语句所缺的部分内容

三、程序填空 ( 每空2分,共30分 )

1. 以下程序能计算数列1/2,3/4,1/6,3/8,1/10,3/12?的前15项之和。请填空。(考点:序列处理算法)

# include

# define N 15 void main() {

int i;

double sum=0.0,a,b=0.0; for(i=0;i

if(① ) a=② ; else

a=1.0; b+=2.0;

sum+=③ ; }

printf(\

}

2. 一结构体数组中放置了10名学生的学号和成绩(成绩互不相同),程序功能是求出学生的最高分,输出他的学号和成绩。请填空。(考点:结构体数组、求最值算法)

# include typedef struct sutdent {

char no[10]; int score;

第 7 页 共 50 页

}ST;

void main() {

ST s[10]={{\

{\int max,i,maxi; max=s[0].score; maxi=0;

for(i=1;i<10;i++)

if(s[i].score① max) {

max=② ; maxi=③ ;

}

printf(\

}

3. insert()函数在一维数组y中把x插到下标为i的元素之前,i≥0。如果i大于等于元素个数则插在末尾。原有的元素个数存放在指针变量n所指的变量中。请填空。(考点:数组、插入元素算法)

# include

# define N 11

void insert(int y[],int *n,int x,int i) {

int j; if(i<*n)

for(j=*n-1; ① ; j--) ② =y[j]; else i=*n;

y[i]= ③ ; (*n)++; }

void main() {

int y[N]={0,1,2,3,4,5,6,7,8,9},x,i,*n,j; j=N-1;

printf(\ scanf(\

printf(\ scanf(\ insert(y,&j,x,i); for(j=0;j

printf(\ \

}

4. 下面程序能将Hello!反向打印出来。请填空。(考点:函数(地址参数)、字符数组、递归算法)

# include

void main()

第 8 页 共 50 页

{

int print_hello(char *); print_hello(\}

int print_hello(char *string) {

char *str=string;

if(*str==① ) return; while(*str)

② ; --str;

printf(\

③ ;

print_hello(string); }

5. 函数fun的功能是:根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入,n的值

in大于等于0。请填空。s??(?1) (考点:循环、序列处理算法)

i?02?i?1# include void main() {

void fun(float *,int ); float a; int k=2;

fun(&a,k);

printf(\}

void fun(float *sn,int n) {

float s=0.0,w,f=-1.0; int i=0;

for(i=0;i<=n;i++) {

f=① *f; w=f/② ; s+=w; }

③ =s; }

第 9 页 共 50 页

(第一套) (60分钟)

一、程序调试题(文件名为test1-1.c) (40分)

在main函数中分别输入两个字符串s和t,调用fun函数,并将结果输出到屏幕和文本文件test1-1.txt中。

函数fun的功能是:找出字符串s中,在s 和t中都出现过的字符,并将其放入字符串p中。 例如:假设字符串s 为“abcdaef”,字符串t为“catbrd”,则输出“abcda”。

请改正程序中的错误,使它能得出正确结果。 注意:不得增行或删行,也不得更改程序结构。

源程序如下: #include

void fun(char *s,char *t,char p) {

int i,j,k=0;

for(i=0;s[i]!='\\0';i++) {

for(j=0;t[j]!='\\0';j++) if(s[i]==t[i]) { p[k]=s[i]; k++; break; } }

p[k-1]='\\0'; }

void main() {

FILE *fp;

char s[80],t[80],p[80];

if((fp=fopen(\ {

printf(\ exit(0); }

gets(s); gets(t); fun(s,t,p); printf(\ puts(p); fputc(p,fp); fclose(fp); }

二、编写程序(程序文件名命为test1-2.c)(60分)

(1)请编写函数fun,它的功能是:求两个整数x和y的最大公约数,最大公约数作为函数值返回。 (2)在main函数中输入三个整数,通过调用fun函数求出三个数的最大公约数,并输出结果。

第 10 页 共 50 页


c语言近几年考题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于单片机的脉搏心率测量仪-参考论文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: