c语言近几年考题(5)

2019-05-18 14:10

}

void fun2(int *x,int *y) { int z;

z=*x; *x=*y; *y=z; //对指向的目标对象间接交换 ,实质a=9,b=5 (*x)++; (*y)++; //对指针的目标对象自增 ,实质a=10,b=6 }

void main() { int a=5,b=9;

fun1(&a,&b);

printf(\ fun2(&a,&b);

printf(\

}

main函数中第一个printf输出结果为( 32 )。

32 (A) a=9,b=5 (B) a=5,b=9 (C) a=10,b=6 main函数中第二个printf输出结果为( 33 )。 33 (A) a=9,b=5 (B) a=5,b=9 (C) a=10,b=6

5. 有如下程序(设其文件名为2-5.c)(考点:命令行参数)

# include

void main(int argc,char *argv[]) //argc = 4

{ int i; char *p; //p为一级字符指针

printf(\ //4

if(argc>2) p=argv[1]; // p指向第二个字符串的首地址 puts(p+1); //输出指向字符串加1个字符后的字符串 }

若运行该程序时,在命令提示符后输入('↙'表示回车换行符): 2-5 file1 file2 file3↙

则执行printf(\时,输出结果为( 34 )。 34 (A) 1 (B) 2 (C) 3 执行puts(p+1); 时,输出结果为( 35 )。

(D) 4 (D) ile2 (D) a=6,b=10 (D) a=6,b=10

35 (A) file1 (B) file2 (C) ile1

6. 有下列程序(考点:字符数组、函数(地址参数))

# include # include long fun(char str[]) { int i; long s=0,t;

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

{ t=0;

while(str[i]>='0' && str[i]<='9') //将连续的数字字符串转换成整数 { t=t*10+str[i]-'0'; i++; }

s=s+t; //累加之前转换的整数,若没有则加0 } return s; }

void main() {

第 21 页 共 50 页

char string[]=\Welcome123To456Sichuan789\ long len;

len=fun(string); printf(\

}

(1)程序运行的输出结果为( 36 ) 36 (A) 123456789 (B) 9

(C) 1368

(D) 450

(2)该程序的功能是( 37 )

37 (A) 取出字符串中的数字子串连接起来

(B) 统计数字子串在字符串中出现的次数

(C) 将数字子串转换为整数并累加

(D) 将字符串中的数字字符转换为数字,结果加起来乘以10

7. 有如下程序:(考点:字符数组、循环、switch语句)

# include

void main()

{ static char s[]=\SWiL_TECH1\\11W\\1WALLMP1\ // ?\\11?值为整数9, ?\\1?值为整数1 int j;

char ch;

for(j=2;(ch=s[j])!='\\0';j++) { switch(ch) {

case 'A': putchar('a'); continue; case '1': break;

case 1: while( (ch=s[++j])!='\\n' && ch!='\\0'); case 9: putchar('#'); case 'E':

case 'L': continue; default : putchar(ch); continue; //continue作用于循环,用于结束本次循环 }

putchar('*');

}

printf(\}

① 程序的运行结果是( 38 )。

38 (A) SWi TCH*#

(B) SSSWi TCH*#

(C) SWi TCH*#W# (D) SSSWi L TECHWWALLMP

② 字符串\中的 “\\1”是( 39 )。

39 (A) 字符1 (B) 十制制数值1 (C) 两个字符 (D) 八进制数值1

8. 在下面程序中,若file.dat文件中原有内容为:abc,则运行程序后file.dat文件中的内容为(

# include

void main()

{ FILE *fp;

fp=fopen(\w\ //?w?方式打开的文件是新建 fprintf(fp,\ //将”def”写到fp所指的文件 fclose(fp);

第 22 页 共 50 页

40 )。 (考点:文件打开方式)

}

40 (A) abcdef (B) abc (C) def (D) NULL 注意:① 请把下面“程序填空”中各小题答案写在主观题答题纸上 ② 每一个空只填一个语句或一个语句所缺的部分内容

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

1. 下面程序的功能是按学生的姓名(假设没有重名)查询其成绩排名和平均成绩。查询可以连续进行,直到输入0时查询结束。请填空。(考点:结构体类型,顺序查找算法)

# include

# include

# define NUM 4

struct stud //定义结构体类型 { int code; //排名 char *name; //姓名

float score; // 平均成绩

};

struct stud stu[]={2,\,3,\

4,\1,\}; //定义结构体数组并初始化 void main() { char str[10]; int i; do

{ prnitf(\

scanf(\ //输入待查询学生的姓名 for(i=0;i

if(strcmp(① stu[i].name ,str)==0) { printf(\

printf(\

printf(\verage: %5.1f\\n\

② ; //若找到,输出该元素的各个成员后转入下一次查询 }

if(③ )printf(\ }while( strcmp(str,\ );

}

2. 函数fun的功能是:求出无符号十进制数n中包含0的个数,及各位数字的最大值。最大值通过函数值返回,0的个数通过形参指针zero带回。在main函数中输入n的值,调用fun函数并输出结果。例如:n=300800,则0的个数为4,各位数字的最大值为8。请填空。(考点:求最值、整数的分解算法)

# include

int fun(unsigned int n,int *zero)

{ int cnt=0,max=0,t;

while(n!=0)

{ t=① ; //取个位

if(t==0) cnt++; //计数器,计0的个数 if(max

第 23 页 共 50 页

② =cnt; //对形参指针间接运算,将0的个数赋给其目标对象(主函数中的zero变量) return max; }

void main() { unsigned int n; int zero,max; printf(\ scanf(\ max=fun(③ );

printf(\max,zero);

}

3.以下程序的功能是把从键盘输入的字符依次存放在文件test.txt中,但是要过滤掉其中的数字字符,在输入字符‘%’并回车作为结束标志。请填空。(考点:文件、字符串)

#include

void main() { FILE *fp; char ch;

char fname[12]=\

if((fp=fopen( fname,\w\① ) printf(\ else

{ printf(\

while((ch=getchar())!='%') if(ch>='0' && ch<='9')

② ; //若ch是数字字符,则不输出到文件,转入下一次循环 else

fputc(ch, ③ ); //若是非数字字符,则将ch输出到fp所指的文件 fclose(fp);

} }

4. 以下程序是建立一个带头结点的单向链表,并用随机函数为各个结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。请填空。(考点:单链表)

# include # include typedef struct aa

{ int data; //数据域

struct aa *next; //指针域,存放下一个结点的地址

}NODE; //typedef自定义类型,新的结构体类型名为NODE int fun(NODE *h)

{ int sum=0;

① ; //定义结构体类型指针p

p=② ; //p指向跳过头结点后的第一个结点 while(p)

{ if(p->data%2==0) sum+=p->data;

第 24 页 共 50 页

p=③ ; //p指针指向下一个结点 }

return sum;

}

NODE *creatlink(int n) //建立带头结点的单链表 { NODE *h,*p,*s; int i;

h=p=(NODE *)malloc(sizeof(NODE)); for(i=1;i<=n;i++)

{ s=(NODE *)malloc(sizeof(NODE)); s->data=rand(); s->next=p->next; p->next=s; p=p->next; }

p->next=NULL; return h;

}

outlink(NODE *h) //输出链表 { NODE *p; p=h->next; while(p)

{ printf(\ p=p->next; } }

void main() { NODE *head;

int even;

head=creatlink(12); //调用ceratlink函数建立单链表 head->data=9000;

outlink(head); //输出以head开始链表 even=fun(head);

printf(\even); }

5. 程序的功能是计算p?m!n!*(m?n)!,其中,m与n为两个正整数。请在程序中编号处填写适当的表

达式,使程序得出正确的结果。 (考点:循环、阶乘算法)

# include

int fun(int x) //计算x! { long s=1;

int i;

for(i=1;i<=x;i++) ① ; return ② ;

第 25 页 共 50 页


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

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

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

马上注册会员

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