1、西北农林科技大学c语言实习答案实习11、 简单程序设计 编程写程序,在屏幕上输出信息:Happy New Year!/* 输出图形*/#includevoid main()printf(Happy New Year!n); 2、简单计算 由键盘任意输入2个数,分别计算它们的和、差、积、商。/*简单计算*/#includevoid main()float a,b;float h,c,j,s;scanf(%f%f, &a,&b);h=a+b;c=a-b;j=a*b;s=a/b;printf(和=%f,差=%f,积=%f,商=%fn,h,c,j,s);3、计算梯形的面积 已知梯形的上底、下底和高,计
2、算梯形的面积。/*计算梯形的面积*/#includevoid main()float supline,dowline,high;double area; scanf(%f,&supline); scanf(%f,&dowline); scanf(%f,&high);area = (supline+dowline)*high)/2.0;printf(%f n,area);4、输出字符对应的ASCII码 任意输入一个字符,输出此字符对应的ASCII码。/*输出字符对应的ASCII码*/#includevoid main()char c;scanf(%c,&c);printf(%dn,c);5、数据
3、类型长度测试 编写程序,测试所使用的计算机系统字符型、短整型、整形、长整型、单精度实型、双精度实型所占有的字节数量。/*数据类型长度测试*/#includevoid main() printf(size of char=%dn,sizeof(char); printf(size of short=%dn,sizeof(short); printf(size of int=%dn,sizeof(int); printf(size of long int=%dn,sizeof(long int); printf(size of float=%dn,sizeof(float); printf(siz
4、e of double=%dn,sizeof(double);1. 成绩判断 输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。不要改变与输入输出有关的语句。/*成绩判断*/#includevoid main()float mark; scanf(%f,&mark); if(mark60)printf(Failn); elseprintf(Passn);2. 字符转换 输入一个字符,如果它是大写字母,输出相应的小写字母;如果它是小写字母,输出相应的大写字母;否则,原样输出。不要改变与输入输出有关的语句。 #include main() char ch; ch=g
5、etchar(); if(ch=A&ch=a&chc&b+ca&a+cb) s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(三角形的面积是:%fn,area); scanf(%lfn,area); else printf(这3个数无法组成三角形!n);4. 判断是否能构成一个三角形 从键盘输三个数,判断是否能将它们作为三角形的三条边构成一个三角形。若能,输出“Yes”,否则,输出“No”。/*判断是否能构成一个三角形*/#includevoid main()float a,b,c;printf(请输入3条边长:);scanf(%f%
6、f%f,&a,&b,&c);if(a0&b0&c0&a+bc&a+cb& b+ca)printf(Yesn);elseprintf(Non);5. 按从大到小排序三个数 从键盘输入三个数,将它们按从大到小进行排序,然后输出。/*按从大到小排序三个数*/ #includemain() int a,b,c,d,e,f; printf(请输入三个整数n1,n2,n3:); scanf(%d%d%d,&a, &b, &c); printf(排序前:%d, %d, %dn, a, b, c);if(ab) d=c;e=a;f=b; if(cb)d=a;e=b;f=c;elsed=a;e=c;f=b;el
7、seif(bc)d=b;e=a;f=c;elsed=b;e=c;f=a;printf(排序后:%d, %d, %dn, d, e, f);1. 数据统计 任意输入n个整数,分别统计奇数的和、奇数的个数、偶数的和、偶数的个数。/*数据统计*/#include void main() int i,n,m,jishuhe=0,oushuhe=0,jishuge=0,oushuge=0; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&m); if(m%2!=0) jishuhe=jishuhe+m; jishuge+; else oushuhe=oushuhe+m; o
8、ushuge+; printf(%dn%dn%dn%dn,jishuhe,jishuge,oushuhe,oushuge); 2. 爱因斯坦阶梯问题爱因斯坦阶梯问题。设有一阶梯,每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨6阶,最后剩5阶;每步跨7阶,正好到阶梯顶。问满足条件的最少阶梯数是多少。/*爱因斯坦阶梯问题*/#include void main() int x; x=7; while(!(x%3=2)&(x%5=4)&(x%6=5) x+=14; printf(%dn,x);3. 猴子吃桃问题一天一只猴子摘下一堆桃子,吃了一半,觉得不过瘾,又多吃了一
9、个,第2天接着吃了前一天剩下的一半,再多吃了一个,以后每天如此,直到第n天,只剩下1个桃子,问猴子一共摘了多少桃子?/*猴子吃桃问题*/ #include void main() int n; int x=1,i; scanf(%d,&n);for(i=1;in;i+)x=2*(x+1);printf(%dn,x); ()=💎🌹🌹🌹🌹🎵🎵🎵💦🌹🌹🌹4. 求两个数的最大公约数和最小公倍数 用辗转相除法(即欧
10、几里得算法)求两个正整数的最大公约数和最小公倍数。/* 求两个数的最大公约数和最小公倍数*/ #include void main() int a,b,rem,temp;int Div,Multi;int a1,b1;scanf(%d%d,&a,&b);a1=a;b1=b;if(ab) temp=a; a=b; b=temp;while(rem) rem = a%b; a=b; b=rem;Div=a;Multi = a1*b1/Div;printf(%dn%dn,Div,Multi);5. 求sin(x)的近似值利用公式求sin(x)的近似值(精度为10e-6)。sin(x)=x-x3/3!
11、+x5/5!-x7/7!+.(-1)nx(2n+1)/(2n+1)!+./*求sin(x)的近似值*/ #include#includemain()float a,b=1;float i,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(%fn,sinx);6. 图形输出输入一个字符及行数n,用该字符在屏幕上输出如下图形: * * * *输入: 一个字符及要输出的行数n。 输出: 用该字符在屏幕上构成的要求图形。 #includevoid main
12、() int n,i,j; char ch; ch=getchar(); scanf(%d,&n); for(i=0;in;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,连接将两串字符。输入: 两串字符 输出: 连接将两串字符 输入样例: abcdef 输出样例: abcdef /*字符串连接*/#include#includevoid main() int i,j,k; char str20=0,str
13、110,str210; gets(str1); gets(str2); j=strlen(str1),k=strlen(str2); for(i=0;ij+k;i+) if(ij)stri=str1i; else stri=str2i-j; puts(str);/*字符串连接*/#include#includevoid main() char str1100,str250; int i,j; gets(str1); gets(str2); for(i=0;str1i!=0;i+) ; for(j=0;str2j!=0;j+) str1i=str2j; i+; str1i = 0; puts(s
14、tr1); 2. 简单加密程序 描述: 由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移2个字母,其他字符保持不变。 输入: 一串字符 输出: 加密后的字符串 输入样例: abl2CDxyz 输出样例: cdl2EFzab 提示: 1. 可用gets()和puts()输入输出字符串。2. 利用ASCII码运算进行加密。3. 循环右移的含义是:将a-z,AZ各看成一个环进行移动,即y右移2个字母后为a,z右移2个字母后为b;Y右移2个字母后为A,Z右移2个字母后为B。 /*简单加密程序*/ #includevoid main() char a80; int i; get
15、s(a); for(i=0;ai!=0;i+) if(ai=A& ai=a&ai=y&ai=Y&ai=Z) ai=ai-24;puts(a);3. 矩阵对角线元素求和 描述: 输入一个55的数组,分别求其主对角线和辅对角线上元素之和。 输入: 55的数组 输出: 主对角线和辅对角线上元素之和 输入样例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 输出样例: 65 65 提示: 主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对角线为从矩阵的右上角至左下角的连线,这些元素的下标之间
16、也可用相应的表达式表达。 /*矩阵对角线元素求和*/#include#includevoid main()int i,j;int a66;int sum1=0,sum2=0; for(i=0;i5;i+)for(j=0;j5;j+)scanf(%d,&aij);for(i=0;i5;i+) sum1=sum1+aii;sum2=sum2+ai4-i;printf(%d %dn,sum1,sum2);4. 数据顺序调整 描述: 由键盘任意输入10个数,将最大数调到最前面,最小数调到最后面。 输入: 任意10个数 输出: 数据调整后的10个数。 输入样例: 0 1 2 3 4 5 6 7 8 9
17、输出样例: 9 1 2 3 4 5 6 7 8 0 提示: 定义四个变量d1、d2、x1、x2,分别存放最大数、最小数及它们的位置; 在循环开始前,将第一个元素作为参考,将其值分别存入d1、x1,将其下标分别存入d2、x2; 在循环中将其它元素逐一与d1比较,若比d1大,将其存入d1,并将其下标存入d2;否则将其与x1比较,若比x1小,将其存入x1,并将其下标存入x2; 结束循环后,将d2所示位置的数与第一个数交换,将x2所示位置的数与最后一个数交换,然后输出数组所有元素即可。 /* 数据顺序调整*/#include#includevoid main () int i,a10,temp; in
18、t kmax=0,kmin=0; for(i=0;i10;i+) scanf(%d,&ai); for(i=0;iakmax) kmax=i; if(aiakmin) kmin=i; temp=a0; a0=akmax; akmax=temp; if(kmax!=9) temp=a9; a9=akmin; akmin=temp; 实习四答案1、 字符串连接/* exer 4-1 两串字符连接 */ #include #include void main(void) unsigned int i,j; char soustr80,desstr80; /printf(please enter so
19、ustr:); gets(soustr); /* 输入原串 */ /printf(please enter desstr:); gets(desstr); /* 输入目的串 */ i = strlen(soustr); /* 取目的串尾部位置 */ for(j=0; j=strlen(soustr); j+,i+) soustri = desstrj; /* 将原串依次接入目的串尾部 */ puts(soustr); 2、 简单加密程序/* exer 4-2 字符加密 */ #include #include void main(void) unsigned int j; char soust
20、r80,secstr80; /printf(please enter soustr:); gets(soustr); /* 输入原串 */ for(j=0; j=A & soustrj=a & soustrj=z ) secstrj = (soustrj-a+2)%26+a; /*计算小写字母密文*/ else secstrj = soustrj; /* 其它字符不变 */ puts(secstr); 3、 矩阵对角线元素求和/* exer 4-3 主和辅对角线上元素之和 */ #include #include void main(void) int i,j; int a55; int su
21、m1=0,sum2=0; /printf(please enter soustr:); for(i=0; i5; i+) for(j=0; j5; j+) scanf(%d,&aij); /* 输入数组 */ for(i=0; i5; i+) sum1 = sum1+aii; /* 主对角线 */ sum2 = sum2+ai4-i; /* 辅对角线 */ printf(%d %dn,sum1,sum2); 4、 数据顺序调整/* exer 4-4 将最大数调到最前面,最小数调到最后面 */#include#includevoid main(void) int i,a10,temp; int
22、kmax=0,kmin=0; /printf(please enter :); for(i=0; i10; i+) /* 输入数组 */ scanf(%d,&ai); for(i=0; iakmax) kmax = i; /* 找最大数位置 */ else if(aiakmin) kmin = i; /* 找最小数位置 */ if(kmax = 9 & kmin = 0) temp = a0; a0 = akmax; akmax = temp; /* 与最前面的数交换 */ else temp = a0; a0 = akmax; akmax = temp; /* 与最前面的数交换 */ tem
23、p = a9; a9 = akmin; akmin = temp; /* 与最后面的数交换 */ for(i=0; i9; i+) printf(%d ,ai); /* 输出数组 */ printf(%dn,ai);5、 字符个数统计/* exer 4-5 统计大写字母、小写字母、数字及其它字符的个数 */#include#includevoid main(void) unsigned int i; int cap=0,low=0,dig=0,oth=0; /* 定义并初始化 */ char str80; /printf(please enter str:); gets(str); /* 输入
24、原串 */ for(i=0; i=A & stri=a & stri=0 & stri=9) dig+; /* 统计数字 */ else oth+; /* 统计其它字符 */ printf(%d %d %d %dn,cap,low,dig,oth);6、 学生成绩计算/* exer 4-6 求每一个学生的总成绩和平均成绩 */#includevoid main(void) int i,j; float score105=0.0f; float allsco10,avesco10; for(i=0; i10; i+) for(j=0; j5; j+) scanf(%f,&scoreij); /* 输入学生的成绩 */ for(i=0; i10; i+) allsco
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1