c语言实验报告.docx
《c语言实验报告.docx》由会员分享,可在线阅读,更多相关《c语言实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
c语言实验报告
身高预测
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。
小孩成人后身高与其父母身高和自身性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为:
男性成人时身高=(faHeight+moHeight)*0.54(cm)
女性成人时身高=(faHeight*0.923+moHeight)/2(cm)
此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。
*/
#include
voidmain()
{doublefaHeight,moHeight,h,h1=0,h2=0;
charsex,sports,diet;
printf("请输入父亲身高(cm)");
scanf("%lf",&faHeight);
printf("请输入母亲身高(cm)");
scanf("%lf",&moHeight);
printf("请输入孩子性别(F:
女性,M:
男性)");
scanf("%*c%c",&sex);
printf("是否喜爱体育锻炼?
(Y/N)");
scanf("%*c%c",&sports);
printf("是否有良好的卫生饮食习惯?
(Y/N)");
scanf("%*c%c",&diet);
if(sex=='M'||sex=='m')
h=(faHeight+moHeight)*0.54;
else
h=(faHeight*0.923+moHeight)/2;
if(sports=='Y'||sports=='y')h1=0.02;
if(diet=='Y'||diet=='y')h2=0.015;
printf("孩子身高为:
%.2f(cm)",h*(1+h1+h2));
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
*输入一个学生的两门课成绩(百分制),计算该学生的总分并要求输出成绩等级'A'、'B'、'C'、'D'、'E'。
总分在180分以上为'A',160~179分为'B',140~159分为'C',120~139分为'D',120分以下为'E
#include
voidmain()
{inta,b;
printf("请输入两门课的成绩(百分制):
");
scanf("%d%d",&a,&b);
if(a<0||a>100||b<0||b>100)
printf("输入错误(成绩应为百分制)!
");
else
{switch((a+b)/20)
{case20:
case19:
case18:
printf("%d--->A",a+b);break;
case17:
case16:
printf("%d--->B",a+b);break;
case15:
case14:
printf("%d--->C",a+b);break;
case13:
case12:
printf("%d--->D",a+b);break;
default:
printf("%d--->E",a+b);
}
}
}
题目:
在[200,900]范围内同时满足以下两个条件的十进制数:
(1)其个位数字与十位数字之和除以10所得的余数是百位数字;
(2)该数为素数;
问:
有多少个这样的数,并逐一显示(每行显示5个)。
*/
#include
#include
voidmain()
{inti,j,m,a,b,c,flag;
m=0;
for(i=201;i<900;i+=2)
{a=i/100;
b=i/10%10;
c=i%10;
if((b+c)%10==a)
{flag=1;
for(j=2;j<=(int)sqrt(i);j++)
if(i%j==0)
{flag=0;
break;
}
if(flag==1)
{printf("%4d",i);
m++;
}
if(m%5==0)printf("\n");
}
}
printf("这样的数有%d个",m);
}
------------------------------------------------------------------------------------------------------------------------------------------------
编程输出如下上三角形式的九九乘法表。
123456789
---------
123456789
4681012141618
9121518212427
162024283236
2530354045
36424854
495663
6472
81
*/
#include
voidmain()
{inti,j;
for(i=1;i<10;i++)
printf("%-4d",i);
printf("\n");
for(i=1;i<10;i++)
printf("%-4c",'-');
printf("\n");
for(i=1;i<10;i++)
{for(j=1;j
printf("%-4c",'');
for(j=i;j<10;j++)
printf("%-4d",i*j);
printf("\n");
}
}
/*打印fabonacci数列的前20项,该数列前两项为1,以后各项均为前相邻两项之和*/
#include
voidmain()
{intfa[20];
inti;
fa[0]=fa[1]=1;
for(i=2;i<20;i++)
fa[i]=fa[i-1]+fa[i-2];
printf("fabonacci数列的前20项\n");
for(i=0;i<20;i++)
{printf("%-6d",fa[i]);
if((i+1)%5==0)printf("\n");
}
}
/*从键盘输入一个班学生(最多30人)的成绩,然后按降序进行排列*/
#include
#defineN30
voidmain()
{doubles[N],t;
intn,i,j;
printf("请输入学生人数:
");
scanf("%d",&n);
for(i=0;i{printf("请输入第%d个学生的成绩:
",i+1);
scanf("%lf",s+i);
}
for(i=0;ifor(j=i+1;jif(s[i]
{t=s[i];
s[i]=s[j];
s[j]=t;
}
printf("\n降序排序后成绩\n");
for(i=0;iprintf("%.2f\n",s[i]);
}
/*从键盘输入一个班学生(最多30人)的成绩,然后按降序进行排列*/
#include
#defineN30
voidmain()
{doubles[N],t;
intn,i,j;
printf("请输入学生人数:
");
scanf("%d",&n);
for(i=0;i{printf("请输入第%d个学生的成绩:
",i+1);
scanf("%lf",s+i);
}
for(i=0;ifor(j=0;jif(s[j]
{t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
printf("\n降序排序后成绩\n");
for(i=0;iprintf("%.2f\n",s[i]);
}
/*编写一个程序,利用字符数组实现两个字符串的比较。
*/
#include
#defineN80
intstrbj(chars1[],chars2[])
{inti=0;
while(s1[i]==s2[i])
if(s1[i]=='\0')
return0;
else
i++;
returns1[i]-s2[i];
}
voidmain()
{chars1[N],s2[N];
intk;
printf("请输入第一个字符串");
gets(s1);
printf("请输入第二个字符串");
gets(s2);
k=strbj(s1,s2);
if(k>0)
printf("%s>%s",s1,s2);
elseif(k<0)
printf("%s<%s",s1,s2);
else
printf("%s=%s",s1,s2);
}
*编写程序,输出2~n之间的所有素数,n由键盘输入。
要求判断素数的过程要写在函数中,由主函数调用实现,并写出2组以上程序运行结果。
*/
#include
#include
intsushu(intm)
{inti;
for(i=2;i<(int)sqrt(m);i++)
if(m%i==0)return0;
return1;
}
voidmain()
{intn,i,count=0;
printf("inputn:
");
scanf("%d",&n);
printf("2~%d之间的素数有:
\n",n);
for(i=2;i<=n;i++)
if(sushu(i)==1)
{count++;
printf("%-6d",i);
if(count%5==0)printf("\n");
}
printf("\n");
}
/*编程实现输入8个学生某门功课的成绩,用函数求出平均分,并在主函数中输出平均分以及高于平均分的同学的成绩。
*/
#include
#defineN8
doubleaver(doubles[])
{inti;
doublesum=0;
for(i=0;isum+=s[i];
returnsum/N;
}
voidmain()
{doubles[N],a;
inti;
for(i=0;i{printf("请输入第%d个学生的成绩:
",i+1);
scanf("%lf",s+i);
}
printf("平均分为:
%.2f\n",a=aver(s));
printf("高于平均分的成绩有\n");
for(i=0;iif(s[i]>a)printf("%.2f",s[i]);
}
/*下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even返回偶数之和。
*/
#include
#defineN10
voidfun(int*a,intn,int*odd,int*even)
{inti;
*odd=*even=0;
for(i=0;iif(*(a+i)%2==0)
*even+=*(a+i);
else
*odd+=*(a+i);
}
voidmain()
{
inta[N]={1,10,2,3,19,6},i,n=6,odd,even;
printf("Theoriginaldatais:
\n");
for(i=0;iprintf("%5d",*(a+i));
printf("\n\n");
fun(a,n,&odd,&even);
printf("Thesumofoddnumbers:
%d\n",odd);
printf("Thesumofevennumber:
%d\n",even);
}
/*编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现
删除字符串str中和字符ch相等所有字符,然后输出字符串str。
*/
#include
#defineN80
voiddele(char*s,charch)
{char*q;
q=s;
while(*s!
='\0')
{if(*s!
=ch)
{*q=*s;
q++;
}
s++;
}
*q='\0';
}
voidmain()
{charstr[N],ch;
printf("请输入字符串:
");
gets(str);
printf("请输入要删除的字符:
");
ch=getchar();
dele(str,ch);
printf("删除%c后的字符串为\n",ch);
puts(str);
}
/*某单位进行选举,有5位候选人:
zhang、wang、li、zhao、liu。
编写一个统计每人得票数的程序。
要求每个人的信息使用一个结构体表示,5个人的信息使用结构体数组。
*/
#include
structusr
{charname[50];
intnum;
};
voidmain()
{inti,n;
structusruser[5]={{"zhang",0},{"wang",0},{"li",0},{"zhao",0},{"liu",0}};
printf("请输入选票,5位选手的编号分别是1、2、3、4、5,当输入非选手编号时输入结束:
\n");
scanf("%d",&n);
while(n==1||n==2||n==3||n==4||n==5)
{user[n-1].num++;
scanf("%d",&n);
for(i=0;i<5;i++)
printf("%s得票:
%d\n",user[i].name,user[i].num);
}
/*设张三20岁、李四22岁、王平23岁,编程输出3人中年龄最小者的姓名和年龄*/
#include
structusr
{charname[50];
intage;
};
voidmain()
{inti,j;
structusruser[3]={{"张三",20},{"李四",22},{"王平",23}};
j=0;
for(i=1;i<3;i++)
{if(user[i].agej=i;
}
printf("年龄最小的是%s,年龄%d岁\n",user[j].name,user[j].age);
}
/*编写一个程序,将5个字符串写入文件中。
*/
#include
#include
voidmain()
{inti;
charstr[100];
FILE*fp;
fp=fopen("text.txt","w");
if(fp==NULL)
{printf("不能打开这个文件");
exit(0);
}
printf("请输入5个字符串:
\n");
for(i=0;i<5;i++)
{scanf("%s",str);
fprintf(fp,"%s\n",str);
}
fclose(fp);
}
/*根据程序提示从键盘输入一个已存在的文本文件的完整文件名,再输入一个新文本文件的完整文件名,
然后将已存在的文本文件中的内容全部复制到新文本文件中*/
#include
#include
voidmain()
{charch,frname[50],fwname[50];
FILE*fr,*fw;
printf("请输入原文件名:
");
scanf("%s",frname);
printf("请输入新文本文件名:
");
scanf("%s",fwname);
fr=fopen(frname,"r");
if(fr==NULL)
{printf("不能打开%s文件",frname);
exit(0);
}
fw=fopen(fwname,"w");
if(fw==NULL)
{printf("不能打开%s文件",fwname);
exit(0);
}
ch=fgetc(fr);
while(!
feof(fr))
{
fputc(ch,fw);
ch=fgetc(fr);
}
fclose(fr);
fclose(fw);
}