西北农林科技大学c语言实习答案.docx
《西北农林科技大学c语言实习答案.docx》由会员分享,可在线阅读,更多相关《西北农林科技大学c语言实习答案.docx(42页珍藏版)》请在冰豆网上搜索。
![西北农林科技大学c语言实习答案.docx](https://file1.bdocx.com/fileroot1/2022-12/11/94eeb126-d92e-4291-accf-2c8839e73f89/94eeb126-d92e-4291-accf-2c8839e73f891.gif)
西北农林科技大学c语言实习答案
实习1
1、简单程序设计编程写程序,在屏幕上输出信息:
HappyNewYear!
/*输出图形*/
#include
voidmain()
{
printf("HappyNewYear!
\n");
}
2、简单计算由键盘任意输入2个数,分别计算它们的和、差、积、商。
/*简单计算*/
#include
voidmain()
{
floata,b;
floath,c,j,s;
scanf("%f%f",&a,&b);
h=a+b;
c=a-b;
j=a*b;
s=a/b;
printf("和=%f,差=%f,积=%f,商=%f\n",h,c,j,s);
}
3、计算梯形的面积已知梯形的上底、下底和高,计算梯形的面积。
/*计算梯形的面积*/
#include
voidmain()
{
floatsupline,dowline,high;
doublearea;
scanf("%f",&supline);
scanf("%f",&dowline);
scanf("%f",&high);
area=((supline+dowline)*high)/2.0;
printf("%f\n",area);
}
4、输出字符对应的ASCII码任意输入一个字符,输出此字符对应的ASCII码。
/*输出字符对应的ASCII码*/
#include
voidmain()
{
charc;
scanf("%c",&c);
printf("%d\n",c);
}
5、数据类型长度测试编写程序,测试所使用的计算机系统字符型、短整型、整形、长整型、单精度实型、双精度实型所占有的字节数量。
/*数据类型长度测试*/
#include
voidmain()
{
printf("sizeofchar=%d\n",sizeof(char));
printf("sizeofshort=%d\n",sizeof(short));
printf("sizeofint=%d\n",sizeof(int));
printf("sizeoflongint=%d\n",sizeof(longint));
printf("sizeoffloat=%d\n",sizeof(float));
printf("sizeofdouble=%d\n",sizeof(double));
}
1.成绩判断输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。
不要改变与输入输出有关的语句。
/*成绩判断*/
#include
voidmain()
{
floatmark;
scanf("%f",&mark);
if(mark<60)
printf("Fail\n");
else
printf("Pass\n");
}
2.字符转换输入一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。
不要改变与输入输出有关的语句。
#include
main()
{charch;
ch=getchar();
if(ch>='A'&&ch<='Z')
{ch=ch+32;
printf("%c\n",ch);}
elseif(ch>='a'&&ch<='z')
{ch=ch-32;
printf("%c\n",ch);}
else
printf("%c\n",ch);
}
3.利用海伦公式求三角形面积三角形三个边长
/*计算三角形面积*/
#include"math.h"
#include"stdio.h"
voidmain()
{
doublea,b,c,s,area;
printf("请输入3条边长:
");
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c&&b+c>a&&a+c>b)
{
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("三角形的面积是:
%f\n",area);
scanf("%lf\n",area);
}
else
printf("这3个数无法组成三角形!
\n");
}
4.判断是否能构成一个三角形从键盘输三个数,判断是否能将它们作为三角形的三条边构成一个三角形。
若能,输出“Yes”,否则,输出“No”。
/*判断是否能构成一个三角形*/
#include
voidmain()
{
floata,b,c;
printf("请输入3条边长:
");
scanf("%f%f%f",&a,&b,&c);
if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)
printf("Yes\n");
else
printf("No\n");
}
5.按从大到小排序三个数从键盘输入三个数,将它们按从大到小进行排序,然后输出。
/*按从大到小排序三个数*/
#include
main()
{
inta,b,c,d,e,f;
printf("请输入三个整数n1,n2,n3:
");
scanf("%d%d%d",&a,&b,&c);
printf("排序前:
%d,%d,%d\n",a,b,c);
if(a>b)
{
{
d=c;e=a;f=b;
}
{
if(c
{
d=a;e=b;f=c;
}
else
{
d=a;
e=c;
f=b;
}
}
}
else{if(b{d=c;
e=b;
f=a;
}
else
{if(a>c)
{d=b;
e=a;
f=c;
}
else{d=b;
e=c;
f=a;}
}
}
printf("排序后:
%d,%d,%d\n",d,e,f);
}
1.数据统计任意输入n个整数,分别统计奇数的和、奇数的个数、偶数的和、偶数的个数。
/*数据统计*/
#include
voidmain()
{
inti,n,m,jishuhe=0,oushuhe=0,jishuge=0,oushuge=0;
scanf("%d",&n);
for(i=0;i{
scanf("%d",&m);
if(m%2!
=0)
{
jishuhe=jishuhe+m;
jishuge++;
}
else
{
oushuhe=oushuhe+m;
oushuge++;
}
}
printf("%d\n%d\n%d\n%d\n",jishuhe,jishuge,oushuhe,oushuge);
}
2.爱因斯坦阶梯问题
爱因斯坦阶梯问题。
设有一阶梯,每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨6阶,最后剩5阶;每步跨7阶,正好到阶梯顶。
问满足条件的最少阶梯数是多少。
/*爱因斯坦阶梯问题*/
#include
voidmain()
{
intx;
x=7;
while(!
((x%3==2)&&(x%5==4)&&(x%6==5)))
x+=14;
printf("%d\n",x);
}
3.猴子吃桃问题
一天一只猴子摘下一堆桃子,吃了一半,觉得不过瘾,又多吃了一个,第2天接着吃了前一天剩下的一半,再多吃了一个,以后每天如此,直到第n天,只剩下1个桃子,问猴子一共摘了多少桃子?
/*猴子吃桃问题*/
#include
voidmain()
{
intn;
intx=1,i;
scanf("%d",&n);
for(i=1;i{
x=2*(x+1);
}
printf("%d\n",x);
}
┏(^ω^)=☞✘✨💎🌹🌹🌹🌹🎵🎵🎵💦⚡🌹🌹🌹
4.求两个数的最大公约数和最小公倍数
用辗转相除法(即欧几里得算法)求两个正整数的最大公约数和最小公倍数。
/*求两个数的最大公约数和最小公倍数*/
#include
voidmain()
{
inta,b,rem,temp;
intDiv,Multi;
inta1,b1;
scanf("%d%d",&a,&b);
a1=a;
b1=b;
if(a
{
temp=a;
a=b;
b=temp;
}
while(rem)
{
rem=a%b;
a=b;
b=rem;
}
Div=a;
Multi=a1*b1/Div;
printf("%d\n%d\n",Div,Multi);
}
5.求sin(x)的近似值
利用公式求sin(x)的近似值(精度为10e-6)。
sin(x)=x-x3/3!
+x5/5!
-x7/7!
+....(-1)nx(2n+1)/(2n+1)!
+...
/*求sin(x)的近似值*/
#include
#include
main()
{
floata,b=1;
floati,sinx,x;
scanf("%f",&x);
a=x;
sinx=0;
for(i=1;fabs(a/b)>=1e-6;i++)
{
sinx+=a/b;
a=-a*x*x;
b=b*2*i*(2*i+1);
}
printf("%f\n",sinx);
}
6.图形输出
输入一个字符及行数n,用该字符在屏幕上输出如下图形:
*
***
*****
*******
*********
输入:
一个字符及要输出的行数n。
输出:
用该字符在屏幕上构成的要求图形。
#include
voidmain()
{
intn,i,j;
charch;
ch=getchar();
scanf("%d",&n);
for(i=0;i{
for(j=0;j<(n-1-i);j++)
printf("");
for(j=0;j<(2*i+1);j++)
printf("%c",ch);
printf("\n");
}
}
┏(^ω^)=☞1.字符串连接由键盘任意输入两串字符,不用库函数strcat,连接将两串字符。
输入:
两串字符
输出:
连接将两串字符
输入样例:
abc
def
输出样例:
abcdef
/*字符串连接*/
#include
#include
voidmain()
{
inti,j,k;
charstr[20]={"\0"},str1[10],str2[10];
gets(str1);
gets(str2);
j=strlen(str1),k=strlen(str2);
for(i=0;i{
if(ielsestr[i]=str2[i-j];
}
puts(str);
}
/*字符串连接*/
#include
#include
voidmain()
{
charstr1[100],str2[50];
inti,j;
gets(str1);
gets(str2);
for(i=0;str1[i]!
='\0';i++)
;
for(j=0;str2[j]!
='\0';j++)
{
str1[i]=str2[j];
i++;
}
str1[i]='\0';
puts(str1);
}
2.简单加密程序
描述:
由键盘任意输入一串字符,对其进行加密,加密原则为:
如果为字母,将其循环右移2个字母,其他字符保持不变。
输入:
一串字符
输出:
加密后的字符串
输入样例:
abl2CDxyz
输出样例:
cdl2EFzab
提示:
1.可用gets()和puts()输入输出字符串。
2.利用ASCII码运算进行加密。
3.循环右移的含义是:
将a-z,A-Z各看成一个环进行移动,即y右移2个字母后为a,z右移2个字母后为b;Y右移2个字母后为A,Z右移2个字母后为B。
/*简单加密程序*/
#include
voidmain()
{
chara[80];
inti;
gets(a);
for(i=0;a[i]!
=0;i++)
{if((a[i]>='A'&&a[i]<='X')||(a[i]>='a'&&a[i]<='x'))
a[i]=a[i]+2;
elseif((a[i]>='y'&&a[i]<='z')||(a[i]>='Y'&&a[i]<='Z'))
a[i]=a[i]-24;
}
puts(a);
}
3.矩阵对角线元素求和
描述:
输入一个5×5的数组,分别求其主对角线和辅对角线上元素之和。
输入:
5×5的数组
输出:
主对角线和辅对角线上元素之和
输入样例:
12345
678910
1112131415
1617181920
2122232425
输出样例:
6565
提示:
主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对角线为从矩阵的右上角至左下角的连线,这些元素的下标之间也可用相应的表达式表达。
/*矩阵对角线元素求和*/
#include
#include
voidmain()
{
inti,j;
inta[6][6];
intsum1=0,sum2=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
for(i=0;i<5;i++)
{
sum1=sum1+a[i][i];
sum2=sum2+a[i][4-i];
}
printf("%d%d\n",sum1,sum2);
}
4.数据顺序调整
描述:
由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。
输入:
任意10个数
输出:
数据调整后的10个数。
输入样例:
0123456789
输出样例:
9123456780
提示:
①定义四个变量d1、d2、x1、x2,分别存放最大数、最小数及它们的位置;
②在循环开始前,将第一个元素作为参考,将其值分别存入d1、x1,将其下标分别存入d2、x2;
③在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入d2;否则将其与x1比较,若比x1小,将其存入x1,并将其下标存入x2;
④结束循环后,将d2所示位置的数与第一个数交换,将x2所示位置的数与最后一个数交换,然后输出数组所有元素即可。
/*数据顺序调整*/
#include
#include
voidmain()
{
inti,a[10],temp;
intkmax=0,kmin=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
if(a[i]>a[kmax])
kmax=i;
if(a[i]kmin=i;
}
temp=a[0];
a[0]=a[kmax];
a[kmax]=temp;
if(kmax!
=9)
{
temp=a[9];
a[9]=a[kmin];
a[kmin]=temp;
}
实习四答案
1、字符串连接
/*exer4-1两串字符连接*/
#include
#include
voidmain(void)
{
unsignedinti,j;
charsoustr[80],desstr[80];
//printf("pleaseentersoustr:
");
gets(soustr);/*输入原串*/
//printf("pleaseenterdesstr:
");
gets(desstr);/*输入目的串*/
i=strlen(soustr);/*取目的串尾部位置*/
for(j=0;j<=strlen(soustr);j++,i++)
{
soustr[i]=desstr[j];/*将原串依次接入目的串尾部*/
}
puts(soustr);
}
2、简单加密程序
/*exer4-2字符加密*/
#include
#include
voidmain(void)
{
unsignedintj;
charsoustr[80],secstr[80];
//printf("pleaseentersoustr:
");
gets(soustr);/*输入原串*/
for(j=0;j<=strlen(soustr);j++)
{
if(soustr[j]>='A'&&soustr[j]<='Z')
secstr[j]=(soustr[j]-'A'+2)%26+'A';/*计算大写字母密文*/
elseif(soustr[j]>='a'&&soustr[j]<='z')
secstr[j]=(soustr[j]-'a'+2)%26+'a';/*计算小写字母密文*/
else
secstr[j]=soustr[j];/*其它字符不变*/
}
puts(secstr);
}
3、矩阵对角线元素求和
/*exer4-3主和辅对角线上元素之和*/
#include
#include
voidmain(void)
{
inti,j;
inta[5][5];
intsum1=0,sum2=0;
//printf("pleaseentersoustr:
");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);/*输入数组*/
for(i=0;i<5;i++)
{
sum1=sum1+a[i][i];/*主对角线*/
sum2=sum2+a[i][4-i];/*辅对角线*/
}
printf("%d%d\n",sum1,sum2);
}
4、数据顺序调整
/*exer4-4将最大数调到最前面,最小数调到最后面*/
#include
#include
voidmain(void)
{
inti,a[10],temp;
intkmax=0,kmin=0;
//printf("pleaseenter:
");
for(i=0;i<10;i++)/*输入数组*/
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
if(a[i]>a[kmax])
kmax=i;/*找最大数位置*/
elseif(a[i]kmin=i;/*找最小数位置*/
}
if(kmax==9&&kmin==0)
{
temp=a[0];
a[0]=a[kmax];
a[kmax]=temp;/*与最前面的数交换*/
}
else
{
temp=a[0];
a[0]=a[kmax];
a[kmax]=temp;/*与最前面的数交换*/
temp=a[9];
a[9]=a[kmin];
a[kmin]=temp;/*与最后面的数交换*/
}
for(i=0;i<9;i++)
printf("%d",a[i]);/*输出数组*/
printf("%d\n",a[i]);
}
5、字符个数统计
/*exer4-5统计大写字母、小写字母、数字及其它字符的个数*/
#include
#include
voidmain(void)
{
unsignedinti;
intcap=0,low=0,dig=0,oth=0;/*定义并初始化*/
charstr[80];
//printf("pleaseenterstr:
");
gets(str);/*输入原串*/
for(i=0;i{
if(str[i]>='A'&&str[i]<='Z')
cap++;/*统计大写字母*/
elseif(str[i]>='a'&&str[i]<='z')
low++;/*统计小写字母*/
elseif(str[i]>='0'&&str[i]<='9')
dig++;/*统计数字*/
else
oth++;/*统计其它字符*/
}
printf("%d%d%d%d\n",cap,low,dig,oth);
}
6、学生成绩计算
/*exer4-6求每一个学生的总成绩和平均成绩*/
#include
voidmain(void)
{
inti,j;
floatscore[10][5]={0.0f};
floatallsco[10],avesco[10];
for(i=0;i<10;i++)
for(j=0;j<5;j++)
scanf("%f",&score[i][j]);/*输入学生的成绩*/
for(i=0;i<10;i++)
{
allsco