C语言
一、填空题(20分)
1.在C语言系统中,分别写出内部静态型和外部静态型变量的存储类型的标识符、生存期和有效域。字符串函数puts
标识符生存期有效域
内部静态型
外部静态型
2.用逻辑表达式表示下述关系。
a是带有小数的正数:___________________
a是大写西文字符:________________________
3.float a[50],*p;p=a;若printf(“%x”,p);显示ff1d,则printf(“%x”,p+2);
显示_______________;printf(“%x”,&a[3]);显示______________。
4.在C语言程序中,若主函数main()带有形参,main(int argc,char *argv[]),则此函数经编译后的可执行文件在执行时有
_________________________________________,
其中argc表示__________________________________,
argv[0]表示_____________________________________,
argv[i](1≤i≤argc-1)表示_______________________。
5.用fopen()函数打开一个文件成功,则开辟两个区:___________和____________,并返回_______________,格式:
____________________________________。
6.用sub_and_sort()实现如下功能:对一指针指向的字符串实现按字符
由小到大排序后,返回截取其左边m个字符构成的一个新字符串,则函
数sub_and_sort()的定义方式为:________________________________。
二、指出下列程序中的错误,并予以改正(错误处加下划线,并说
明错误的原因。(15分)
1.下列程序实现输入变量x,并显示x的值。
main()
{int x;
printf(“enter x:”);
int*p;
scanf(“%d”,p);
x=*p;
printf(“\nx=%d\n”,&x);
};
2.main()
{char a[4][100],*p[4];
void print_string(char*q[],int n);
int i;
p=a;
for(i=1;i<=4;i++)
gets(&p[i]);
print_string(p[0]);
}
void print_string(char*q[],int n) {int i;
for(i=0;i<n;i++)
puts(q++);
}
3.main()
{char ch[100],*p,ch1[100];改正:改正:
改正:
strcpy(ch1,“abcd”);
p=ch;
strcat(p,ch1);
}
三、写出下列程序执行的结果。(25分) 1.main()
{int total(int n);
int i,sum=0;
for(i=0;i<5;i++)
sum+=total(i);
printf(“sum=%d\n”,sum);
}
输出结果为:
2.main()
{void swap0(int p1,int p2);
void swap1(int*p1,int*p2);
void swap2(int*p1,int*p2);
void swap3(int*p1,int*p2);
int a=5,b=3;
printf(“a=%d,b=%d\n”,a,b);
swap1(&a,&b);
printf(“a=%d,b=%d\n”,a,b);
swap2(&a,&b);
printf(“a=%d,b=%d\n”,a,b);
swap3(&a,&b);
printf(“a=%d,b=%d\n”,a,b); }
输出的结果为:
void swap1(int*p1,int*p2)
{int*p;
p=p1,p1=p2,p2=p;
}
void swap2(int*p1,int*p2)
{int*p,a;
p=&a;
*p=*p1;*p1=*p2;*p2=*p;
}
void swap3(int*p1,int*p2)
{int a,*p=&a;
a=*p1;p1=p2;*p2=*p;
}
int total(int n)
{static k=0;
k+=n;
k*=n;
return(k);
}
void swap0(int p1,int p2)
{int p;
p=p1,p1=p2,p2=p;
}
3.#include <stdio.h>main()
{char name1[20],name2[20];printf(“输入两个姓名:\n”);scanf(“%s%s”,name1,name2);printf(“\n 第一个姓名为:”)puts(name1);
printf(“\n 第二个姓名为:”)puts(name2);}
4.#include <string.h>msin()
{char *fun(char *pt);char ch[30],*p;
strcpy(ch,”abcdefghi ihgfedcba”);puts(fun(ch));}结果:
5.#include <stdlib.h>
main(int argc,char *argv[]){int n;float
f(int n);n=atoi(argv[1]);printf(“%.3f”,f(n));}
此函数以文件jc.c 存储,执行时键入jc 5输出结果:
四、编程题(10+10+20=40分)。
1.
按以下格式打印杨辉三角形(要求打印10行)
1
1
11
2
1
执行时从键盘上键入:Liming Liu Dehua(回车)
输出结果为:
char *fun(char *pt){int i=0,l;l=strlen(pt);
while(*pt!=’\0’)pt++;while(i<l/2){pt--;i++;}return(pt);}
float f(int n){
if(n==1)return(1.0);else return(1.0/n*f(n-1));}
1331
14641
15101051
......
2.输入若干个(<=10个)字符串,每个字符串的长度<=20,以输入空字符串作为结束标记。把这些字符串按下列方式连接,构成一个新字符串,并予以输出。在main()中输入字符串组的个数和输出新字符串,在input()函数中输入字符串组;在string_cat()中完成字符串连接。
字符串1:
字符串2:
字符串3:
字符串4:
…….
3.一个链表的结点的数据项为:学号(long型),姓名(char型数组),成绩1(float型),成绩2(flo
at型)。试编一个链表复制函数cly_copy()和显示复制后链表的函数cly_print()。
(函数的形参和类型自己定义)。设原链表的头指针为head;复制后链表的头指针为newhead。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。