2005级信息学院《C语言程序设计》考试试题
一、判断下列语句或程序的对错。(“╳”表示错,“√”表示对)(10分)
1 float s=0,s1.1=0; ( ╳)
2 #define M=100 ( ╳)
int a[M];
3char *p[]=”\”c test\””; ( ╳)
4if((a=b)>0)t=a; ( √)
5char str1[20]==” china”,str2[20]; ( ╳) str2=str1;
6int i,*p=&i; ( √)
7float a[100],*p; ( √) p=a+1;
8printf(“%d\n”,(30,50,80)); ( √)
9int x,y; ( √) y=20,x=y+‟a‟;
10int (*p)[20],a[20]; ( √) p=(int (*)[20])a;
二、计算下列表达式的值(10分)
设unsigned int a=7,b=17,c=5,d=3;
float x=2.5,y=4.7;
(1)x+a%3*(int)(x+y)%2/4 ( 2.5 )
(2)!(a<=b)||(b<c) ( 0 )
(3) (a^b)+(c<<1|d) ( 33 )
(4) a=1,b=2,(a>b)?++a:++b ( 3 )
(5) a/2.0*b-c/3+d ( 61.5 )
三、程序改错,用标记指出错误,并在旁边将错误的地方进行修正(10分)
(1)求某班30个学生英语成绩的平局分
#include <stdio.h>
float calculate (float *p,int n);/*添加函数声明*/
main ()
{
float a[30],aver;
int m;
for(m=0;m<30;m++)
scanf(“%d”,a+m);
aver=calculate(a,30);
printf(“aver=%f\n”,aver);
}
float calculate (float *p,int n) /*添加函数的数据类型*/
{
char x;
int temp; /*int temp=0 需要设置初始值为0;
for(x=0;x<=n;x++) /*for(x=0;x<n;x++)*/
temp+=p[x];
return temp/n;
}
(2)N个字符串中最大字符串
#include <stdio.h>
#define N 5
char *process (char p[][80],int n);添加函数声明
main()
{
char string[N][80],*p;
char i;
for(i=0;i<N;i++)
scanf(“%s”,&string[i]); /* scanf(“%s”,string[i]); 除掉取地址符*/
p=process(string,N);
printf(Max string :=%s\n”,p);
}
char *process (char *p[][80],int n) /*去掉*号,或改为char p[][]*/
{
int i;
char *pmax;
for(i=1;i<n;i++)
if(p[i]<pmax) /*使用字符串比较函数strcmp(p[i],pmax)>0*/
pmax=p[i];
return pmax;
}
四程序填空(10分)
(1)利用公式sin x
设x=0.4时sin x的值
# include<stdio.h>
main()
{
float x,sn,un;
int i,j;
x=0.4;
un=_________________________;
sn=__________________________;
i=1;
while(un=1e-5)
{
un=_________________________;
sn=__________________________;
i++;
}
printf(“x=%f,sinx=%f\n”,x,sn);
}
(2)以下itoa(int a,char *)是一个将整数转换为对应的数字串的函数,reverse(char*)是一个将字符串翻转函数,被itoa调用,main()函数是用来测试itoa 函数的. (书中例题:p197)
#include<stdio.>
#define LENGTH 6
void reverse(char *);
void itoa(int,char *);
void main()
{
int n;
char s[LENGTH];
printf(“input a integer:\n”);
scanf(“%d”,&n);
itoa(n,s);
printf(“string:%s”,s);
}
void itoa(int n,char *p)
{
int i,sign;
if((sign=n)<0)
n= -n;
i=0;
do
{
_p[i++]=n%10+‟0‟;
}while((n/=10)>0);
if(sign<0)
p[i++]= …-…;
p[i]=‘\0’;
reverse(p);
}
void reverse(char *)
{
int i,j,k;
for(i=0,j=strlen(p)-1;i<j;i++,j=j-1) {
k=p[i];
p[i]=p[j];
p[j]=k;
}
}
五,写出结果
(1)
#include<stdio.h>
void main()
{
int i,j,p,s;
s=0;
for(i=1;i<=4;i++)
{
p=1;
for(j=1;j<=i;j++)
p=p*j;
s=s+p;
}
printf(s="%d\n",s);
}
S = 33
(2)
#include<stdio.h>
void mian()
{
int i,j,a[5][5];
for(i=0;i<5;i++)
{
a[i][i]=1;
a[i][0]=1;
}
大一期末c语言必考知识点for(i=2;i<5;i++)
for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
(打印杨辉三角)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
(3)
#include<stdio.h>
int d=1;
void func();
void main();
{
func();
func();
func();
}
void func()
{
static int a;
register int b=0;
int c=0;
printf("a=%4d\tb=%4d\tc=%4d\td=%4d\n",a++,b++,c++,d++);
}
a=0 b=0 c=0 d=1
a=1 b=0 c=0 d=2
a=2 b=0 c=0 d=3
(4)
#include<stdio.h>
struct Student
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论