int a, b, *pa=&a, *pb=&b; scanf(“%d,%d”,&a,&b); swap (pa,pb);
printf(“a=%d,b=%d\\n”,a,b); return 0;
}
void swap (int *p1,int *p2) {
int p; p=*p1; *p1=*p2; *p2=p;
printf(“*p1=%d,*p2=%d\\n”,*p1,*p2); }
9.以下程序输出结果是 。 #include
int x=1,y=0,a=0,b=0; switch(x) {
case 1:switch (y)
{
case 0 : a++ ; break ; case 1 : b++ ; break ; }
case 2:a++; b++; break; case 3:a++; b++;
}
printf(“a=%d,b=%d”,a,b); return 0; }
10.输入6,下面程序的执行结果是: #include
unsigned int fact (unsigned int ); int main()
{ unsigned int n,fac; scanf(\ fac=fact (n);
printf(\ return 0; }
unsigned int fact (unsigned int n) {
unsigned int result; if(n==1||n==2) result=1; else
第6页/ 共14页
result=fact(n-1)+fact (n-2); return result; }
11.下面程序的输出结果是 。 #include
{ int x=7,y=3,s,j; for(j=0;j<3;j++) {
s=fun(x,y);
printf(\ }
return 0; }
int fun(int a,int b) {
static int n=1,i=2; i=n+1; n=i+a-b; return(n); }
12. 当运行以下程序时,从键盘输入:AhaMA□Aha
char s[80],c='a'; int i=0;
scanf(\
while(s[i]!='\\0') {
if(s[i]==c) s[i]=s[i]-32; else if(s[i]==c-32) s[i]=s[i]+32; i++; }
puts(s); return 0; }
13.下面程序执行的结果是 #include
void inv(int *, int ); int main()
{ int i,a[10]={3,7,9,11,0,6,7,5,4,2}; inv(a,10);
第7页/ 共14页
for(i=0;i<10;i++)
printf(\
printf(\return 0; }
void inv(int *x, int n)
{ int t,*p,*i,*j,m=(n-1)/2; i=x; j=x+n-1; p=x+m; for(;i<=p;i++,j--)
{ t=*i; *i=*j; *j=t; } }
14.下面函数的功能是 int strcmp(char *s,char *t) {
while (*s && *t && (*s == *t)) {
s++; t++; }
return *s - *t; }
四、程序填空题
1.以下程序输出a,b,c三个整数,并按从小到大排序,请完善程序。 #include
{ int a,b,c,t;
scanf(\ if( [1] ) {
t=a; a=b; b=t; }
if(a>c) {
[2] ; a=c; c=t; }
if(b>c) {
t=b;
[3] ; c=t; }
printf(\return 0;
第8页/ 共14页
}
2.下面程序是实现两个M?N矩阵相加,请完善程序。
#include
void add(int x[][N],int y[][N],int z[][N]); int main()
{ int i,j,a[M][N],b[M][N],c[M][N]; for(i=0;i scanf(\ add( [4] ); for(i=0;i for(j=0;j printf(\ printf(\ } return 0; } void tran(int x[][N],int y[][N],int z[][N]) { int i,j; for(i=0;i z[i][j]= [5] ; } 3.下面函数的功能是将两个字符串s1和s2连接起来,请填空使程序完整。 void conj(char *s1,char *s2) { char *p=s1 ; while (*s1) [6] ; while (*s2) { *s1= [7] ; s1++,s2++; } *s1=?\\0? ; } 4.函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据赋0到m-1的值。 #include #include struct aa *next; } NODE; NODE *Creatlink(int n, int m) { NODE *h=NULL, *p, *s; int i; 第9页/ 共14页 /**********found***********/ p=(NODE* )malloc(sizeof(NODE)); h=p; p->next=NULL; for(i=1; i<=n; i++) { s=(NODE *)malloc(sizeof(NODE)); s->data=rand()%m; /*rand()为随机函数*/ s->next=p->next; [8] ; p=p->next; } /**********found***********/ return h; } outlink(NODE *h) { NODE *p; p=h->next; while( [9] ) { printf(\ p=p->next; } printf(\} int main() { NODE *head; head=Creatlink(8,22); outlink(head); return 0; } 5.以下程序输出x,y,z三个数中的最小值,请完善程序。 #include int main ( ) { int x,y,z,min ; scanf(“%d %d %d”,&x,&y,&z); if(x>y) [10] ; else min=x; if( [11] ) min=z; printf (“%d”,min); return 0; } 6.下面程序是实现M?N矩阵的转置,请完善程序。 #include 第10页/ 共14页 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言期末复习题(2)在线全文阅读。
相关推荐: