C语言上机报告4Word下载.docx
《C语言上机报告4Word下载.docx》由会员分享,可在线阅读,更多相关《C语言上机报告4Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
%d,%d"
&
a,&
b);
max=yue(a,b);
min=bei(a,b);
max=%d,min=%d\n"
max,min);
return0;
}
intyue(intx,inty)
inti,t;
for(i=1;
i<
=x&
&
=y;
i++)
if(x%i==0&
y%i==0)
t=i;
return(t);
intbei(intx,inty)
intj;
if(x>
=y)j=x;
elsej=y;
for(;
!
(j%x==0&
j%y==0);
j++);
return(j);
3.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
intmain()
intsushu(intm);
inta,s;
请输入要判定的数:
%d"
a);
s=sushu(a);
if(s==1)
printf("
%d是素数\n"
a);
elseprintf("
%d不是素数\n"
}
intsushu(intm)
for(i=2;
=m;
if(m%i==0&
m)break;
if(m-i==0)t=1;
elset=0;
returnm;
4.写一个函数,使给定的一个二维数组(3×
3)转置,即行列互换。
intzhuangzhi(intb[3][3]);
inta[3][3];
inti,j;
请输入一个三维数组:
for(i=0;
3;
for(j=0;
j<
j++)
scanf("
a[i][j]);
for(i=0;
{
for(j=0;
printf("
%d"
a[i][j]);
printf("
\n"
}
zhuangzhi(a);
return0;
intzhuangzhi(intb[3][3])
inti,j,t;
t=b[i][j];
b[i][j]=b[j][i];
b[j][i]=t;
return(b[3][3]);
6.写一函数,将两个字符串连接。
voidlianjie(charstring1[],charstring2[],charstring[]);
chars1[100],s2[100],s[100];
请输入两个字符串:
%s"
s2);
lianjie(s1,s2,s);
\nThenewstringis%s\n"
s);
voidlianjie(charstring1[],charstring2[],charstring[])
string1[i]!
='
\0'
;
string[i]=string1[i];
for(j=0;
string2[j]!
0'
string[i+j]=string2[j];
string[i+j]='
8.写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。
如输入1990,应输出"
1990"
。
charf(charb);
inti;
chara[]={1,9,9,0}
f(a);
4;
%c"
a[i])
charf(charb)
inti=0;
"
b[i]);
9.编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出以上的结果。
chartongji(charstr0[100];
charb)
intb[4];
{inti;
for(i=0;
str0[i]!
i++)
{if(str0[i]>
=65&
str0[i]<
=90||str0[i]>
=97&
=122)
b[0]++;
elseif(str0[i]>
=48&
=57)
b[1]++;
elseif(str0[i]==32)
b[2]++;
elseb[3]++;
{chartongji(charstr0[100],charb);
charstr1[100];
staticinti,a[4];
gets(str1);
tongji(str1,a);
printf("
zimuShuziKonggeQita\n"
%-8d"
a[i]);
return0;
13.用递归方法求n阶勒让德多项式的值递归公式为:
1
floatp(floatx0,intn)
{floaty;
if(n==0||n==1)
if(n==1)y=x0;
elsey=1;
elsey=((2*n-1)*x0*p(x0,n-1)-(n-1)*p(x0,n-2))/n;
return(y);
{floatx,y0;
inta,i;
scanf("
%f,%d"
x,&
y0=p(x,a);
y0=%.3f\n"
y0);
14.输入10个学生5门课的成绩,分别用函数实现下列功能:
①计算每个学生的平均分
②计算每门课的平均分
③找出所有50个分数中最高的分数所对应的学生和课程;
④计算平均分方差:
其中,
为某一学生的平均分。
15.写几个函数:
①输个10个职工的姓名和职工号;
②按职工号由小到大顺序排序,姓名顺序也随之调整;
③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
17.用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串"
483"
n的位数不确定,可以是任意位数的整数。
18.给出年月日,计算该日是该年的第几天。
intsum_day(intmonth,intday);
intleap(intyear);
intyear,month,day,days;
输入日期(年,月,日):
%d,%d,%d"
year,&
month,&
day);
%d%d%d"
year,month,day);
days=sum_day(month,day);
if(leap(year)&
month>
=3)
days=days+1;
是第这一年的%d天。
days);
intsum_day(intmonth,intday)
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
month;
day+=day_tab[i];
return(day);
intleap(intyear)
intleap;
leap=year%4==0&
year%100!
=0||year%400==0;
return(leap);
习题八
1.输入3个整数,按由小到大的顺序输出。
voidswap(int*p1,int*p2);
inta1,a2,a3;
int*p1,*p2,*p3;
请输入三个整数:
a1,a2,a3:
a1,&
a2,&
a3);
p1=&
a1;
p2=&
a2;
p3=&
a3;
if(a1>
a2)swap(p1,p2);
a3)swap(p1,p3);
if(a2>
a3)swap(p2,p3);
结果输出顺序为:
%d,%d,%d\n"
a1,a2,a3);
voidswap(int*p1,int*p2)
intp;
p=*p1;
*p1=*p2;
*p2=p;
2.输入3个字符串,按由小到大的顺序输出。
string.h>
voidf(char*,char*);
charstr1[40],str2[40],str3[40];
输入三个字符串:
gets(str1);
gets(str2);
gets(str3);
//引用标准库函数,对字符串进行比较
if(strcmp(str1,str2)>
0)f(str1,str2);
if(strcmp(str1,str3)>
0)f(str1,str3);
if(strcmp(str2,str3)>
0)f(str2,str3);
%s\n%s\n%s\n"
str1,str2,str3);
voidf(char*p1,char*p2)
charp[40];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
3.上输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写3个函数:
①输入10个数;
②进行处理;
③输出10个数。
voidinput(int*);
voidmax_min_value(int*);
voidoutput(int*);
intnumber[10];
input(number);
//调用输入10个数的函数
max_min_value(number);
output(number);
voidinput(int*number)
输入10个数:
10;
scanf("
number[i]);
voidmax_min_value(int*number)
int*max,*min,*p,temp;
max=min=number;
for(p=number+1;
p<
number+10;
p++)
if(*p>
*max)max=p;
elseif(*p<
*min)min=p;
temp=number[0];
number[0]=*min;
*min=temp;
if(max==number)max=min;
temp=number[9];
number[9]=*max;
*max=temp;
voidoutput(int*number)
int*p;
结果是:
for(p=number;
%d\t"
*p);
7.有一个字符串,包含n个字符。
写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
voidcopystr(char*,char*,int);
intm;
charstr1[20],str2[20];
输入字符串:
从哪一个字符开始复制?
m);
if(strlen(str1)<
m)
输入错误!
else
{
copystr(str1,str2,m);
%s\n"
str2);
}
voidcopystr(char*p1,char*p2,intm)
intn;
n=0;
while(n<
m-1)
n++;
p1++;
while(*p1!
)
*p2=*p1;
p2++;
*p2='
15.有一个班4个学生,5门课程。
求第一门课程的平均分;
找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;
找出平均成绩在90分以上或全部课程成绩在85分以上的学生。
分别编3个函数实现以上3个要求。