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