}
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
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 { 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 页 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库c语言近几年考题(5)在线全文阅读。
相关推荐: