程序设计基础试题_08_答案.doc
- 格式:doc
- 大小:30.75 KB
- 文档页数:6
1
学院领导
审批并签名 A / B卷
广州大学 学年
第 学期考试卷
课程 高级语言程序设计 考试形式(开/闭卷,考试/查)
学院 系 专业 班
级 学号 姓名
题次 一 scanf(“%c”,&ch) 二 三 ; 四 五 六 七 八 九 十 总分 评卷人
分数
评分
一、 填空题(每空1分,共10分)
1.C源程序的基本单位是( 函数 )。
2.在一个C源程序中,注释部分两侧的分界符分别是( /* )和
( */ )。
3.在C语言中,double类型数据占( 8 )个字节,char型占(1 )个
字节。
4.若a和b均是int型变量,且a和b的初值均为5,则计算表达式
a+=b++ 后,a的值为(a=10 ),b的值为( b=6 )。
5.在C语言中,整数可用三种数制表示,它们分别是( 八进
制 )、( 十进制 )和( 十六进制 )。
二、程序计算题(每小题5分,共15分)
1. 以下有一程序,输出结果是:( )。
main()
{ int x=2,y,z; x*=3+2;
printf(“%d\n”,x);
x*=y=z=4
printf(“%d\n”,x);
x=y=1;
2
z=x++-1;
printf(“%d,%d\n”,x,z);
z+=-x+++(++y);
printf(“%d,%d\n”,x,z);
}
答案:
10 40 2,0 3,0
2. 以下程序的输出结果是 31 。
fun(int x,int y,int z)
{
z=x*x+y*y } main() { int a=3 fun(5,2,a); printf(“%”,a);
}
3.下列程序的运行结果是 total=144 。
main()
{ int arr_sum(int arr[],int n);
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total; int (*pt)();
pt=arr_sum; p=a[0];
total=(*pt)(p,12);
printf(“total=%d\n”,total);
}
arr_sum(int arr[],int n) { int i,sum=0;
3
for(i=0;i
三、 程序填空题(每空4分,共40分)
1. 输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果
它是一个小写字母,则把它变成大写字母;其他字符不变。请填空。
main() { char ch;
if( ch>='A'&&ch<='Z' ) ch=ch+32;
else if(ch>='a'&&ch<='z') ch=ch-32 ;
}
2. 以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量
p的语句。
void fun(int *x,int *y) { …… }
main()
{ int a=10,b=20;
int(*p)(int,int) ; /*定义变量p*/ p=fun;
p(&a,&b) ……
}
3. 下面程序的功能是打印100以内个位数为6且能被 3整
除的所有数。请填空。
#include
for(i=0; i <=9 ;i++) { j=i*10+6;
if( j %3!=0 ) continue; printf(“%d”,j);
} }
4.完成下面程序的链表建立:
4
#include
#define LEN sizeof(struct link) struct link
{ char name[10]; int num;
struct link *next ; }; main()
{ struck link *head,*p; int i;
head=null;
for(i=0;i<10;i++)
{ p= (struct link*) mallo(LEN)
scanf(“%c,%d”,&p->name,&p->num); p->next=head; head=p; } }
5.下面程序的功能是利用插入排序法将十个字符从小到大进行排序。插入
法的思路是:先对数组的头两个元素进行排序,然后根据前两个元素的
情况把第三个元素插入,然后插入第四个……。请填空。
#include
char *insert(char aa[10]) ; { int a,b,t;
for(a=1;a<=9;a++) { t=aa[a];
b=a-1;
while((b>=0)&&(t>aa[b]))
{ aa[b+1]=aa[b] ; b--;
}
aa[b+1]=t ; }
return aa;
5
}
void main() { char a[11]; int i;
printf(“\nEnter 10 char:”);
for(i=0;i<=9;i++) a[i]=getchar(); a[i]='\0';
insert(a);
printf(“\nThe is 10 char:”);
printf(“%s”,a);
}
四.编程(第1小题20分,第2小题15分,共35分)
1.编一程序,将字符串中的第m个字符开始的全部字符复制成另一个字
符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调用
函数中完成复制。
答案:
#include
char str1[80],str2[80]; printf(“Input a string:\n”);
gets(str2);
printf(“Input m:\n”);
scanf(“%d”,&m);
if(strlen(str2)
else
{copystr(str1,str2,m);
printf(“Rsult is :%s\n”,str1);
} }
copystr(char *p1,char * p2,int m) {int n=0; while(n
6
{*p1=*p2;p1++;p2++;} *p1='\0';
}
2. 利用结构类型编写一个程序,计算一名同学5门功课的平均分,并
打印。
答案: main() {
struct student {
char name[20]; int order; int score[5]; float average; }x; int sum=0, i;
printf(“Input:name,order and 5 scores.\n”);
scanf(“%s”,x.name);
scanf(“%d”,&x.order);
for(i =0, I<5,I++)
scanf(“%d”,&.score[i]); x,average=0.0; for( i =0,I<5,I++)
sum+=x.score[ i ]; x,average=(float)sum/5;
printf(“\n%s\t%d\n”,x.name,x.order);
printf(“Average=%f\n”,x.average):
}