《C语言学习知识实验一到实验八规范标准答案.doc》由会员分享,可在线阅读,更多相关《C语言学习知识实验一到实验八规范标准答案.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.实验一:1、录入如下C源程序:main( ) printf(This is a C Programn)printf(I am a studentn);main()printf(This is a C Programn);printf(I am a studentn);2、编写一个C程序,第一行显示你的名字,第二行显示你所在的街道地址,第三行显示你所在的城市和邮政编码。#include int main() printf(Joe Smith); printf(n99 Somewhere Street); printf(nNonesuch, N.J., 07030); return 0;3、编写
2、一个C程序,输出以下信息: * Hello,World! *#includemain()printf(*n);printf( Hello, World!n);printf(*n);4、编程序,输出如下图形:* * * *#includemain()printf(* *n);printf(* *n);printf(* *n);printf(*n);5、遵循良好的编程习惯重新编写下列程序 #include int main( ) printf ( “The time has come” ); #includeint main()printf(The time has come);6、输入以下程序,
3、查找错误并改正,输出正确的运算结果 #include void main() int a,b a=123;b=456; sum=a+b print(sum is %dn,sum); #includevoid main()int a,b,sum; a=123;b=456; sum=a+b; printf(sum is %dn,sum);7、编写一个C程序,显示表达式3.0*5.0,7.1*8.3-2.2和3.2/(6.1*5)的结果。#include int main() printf ( 3.0 * 5.0 = %fn, 3.0 * 5.0 ); printf ( 7.1 * 8.3 - 2.
4、2 = %fn, 7.1 * 8.3 - 2.2 ); printf ( 3.2 / (6.1 * 5) = %fn, 3.2 / (6.1 * 5) ); return 0;实验二:1、编写程序,在程序中定义a=5,b=7,c=71,x=31.19,y=-31.2 实现下面的输出格式和结果(U表示空格):a=U5,b=U7,a-b=-2,c=U71%x=31.19,y=U-31.2,z =-31.2U,k=31.1900#includemain()int a=5,b=7,c=71; float x=31.19,y=-31.2,z,k; printf(na=%2d,b=%2d,a-b=%d,c
5、=%3d%n,a,b,a-b,c); printf(x=%5.2f,y=%6.1f,z=%-6.1f,k=%.4f,x,y,y,x);2、编写程序,显示下面的提示: Enter the length of the room: Enter the width of the room: 在显示每个提示后,你的程序应该使用scanf()函数调用为所显示的提示接受来自键盘的数据。在输入长度和宽度后,程序应该计算和显示面积,要求结果只保留两位小数。#includemain()float l,w,a; printf(nEnter the length of the room:n); scanf(%f,&l
6、); printf(nEnter the width of the room:n); scanf(%f,&w); a=l*w; printf(nlength=%.2f,width=%.2f,area=%.2fn,l,w,a);3、编写程序,将小写字母转换成大写字母。要求通过scanf()函数接受来自键盘的字母。(ASCII码中小写字母比它相应的大写字母ASCII码大32)#includemain()char c;scanf(%c,&c);c=c-32;printf(%cn,c);#includemain()char c,C; printf(nPlease:n); scanf(%c,&c); C
7、=c-32; printf(small=%c,large=%c,c,C);4、编写一个程序,计算和显示一年中分钟的数量。#includemain()long int a,b,c,sum;a=60;b=24;c=365;sum=a*b*c;printf(nsum=%ldn,sum);5编写一个程序,首先显示下面的提示: Enter the temperature in degrees Fahrenheit: 程序接收一个从键盘输入的数值并用公式Celsius=(5.0/9.0)*(Fahrenheit-32.0)把输入的华氏温度转化为摄氏温度值,并输出摄氏温度值,要求结果只保留三位小数。#inc
8、ludemain()float f,c; printf(nEnter the temperature in degrees Fahrenheit:n); scanf(%f,&f); printf(Celsius=%.3f,(5.0/9.0)*(f-32.0);6、编写一个程序,使用%d转换控制序列符分别显示小写字母a,m,n的十进制整数值。#includemain() printf(na=%d,m=%d,n=%dn,a,m,n);实验三:1、编写一个程序,要求用户输入两个数字。在程序使用一个或多个scanf()函数调用接收这些数字之后,用程序检查这些数字。如果第一个键入的数字大于第二个数字则输
9、出消息“The first number is greater than the second”,否则输出消息“The first number is not greater than the second”.#includemain()int x,y;scanf(%d%d,&x,&y);if (xy) printf(nThe first number is greater than the secondn);else printf(nThe first number is not greater than the secondn);2、输入3个数a,b,c,要求按由小到大的顺序输出。#inc
10、ludemain()int a,b,c,x;scanf(%d%d%d,&a,&b,&c);if(ab) x=a;a=b;b=x;if(ac) x=a;a=c;c=x;if(bc) x=b;b=c;c=x;printf(n%d %d %dn,a,b,c);3、编写一个程序,用scanf()函数接收一个字符并确定这个字符是否是一个小写字母。如果输入的字符是一个小写字母,显示消息“The character just entered is a lowercase letter”,如果输入的字符不是一个小写字母,显示消息“The character just entered is not a lowe
11、rcase letter”。#includemain()char c;scanf(%c,&c);if (c=a&c=z)printf(nThe character just entered is a lowercase lettern);else printf(nThe character just entered is not lowercase lettern);4、有一个函数 X (X1) y= 2X-1 (1X10) 3X-11 (X10) 要求输入x值,输出y值。#includemain()int x,y;scanf(%d,&x);if(x1) y=x; printf(ny=x %d
12、n,y);else if(x10) y=2*x-1; printf(ny=2x-1 %dn,y); else y=3*x-11; printf(ny=3x-11 %dn,y);5、输入百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,80-89分为B,70-79分为C, 60-69分为D,60分以下为E#includemain()float s;char g;scanf(“%f”,&s);while(s100|s0)printf(“nPleasen”); scanf(“%f”,&s)switch(int)(s/10)case 10: case 9:g=A;break; case
13、8:g=B;break;case 7:g=C;break;case 6:g=D;break;case 5:case 4:case 3:case 2:case 1:case 0: g=E;printf(“%c”,g);实验四:1、编写程序用while循环实现以2为增量输出数字2到10。程序输出应该是: 2 4 6 8 10#includemain()int i=2; printf(n); while(i=10) printf(%d ,i); i=i+2; 2、求(用while语句编程)5050#includemain()int n=1,sum=0;while(n=100)sum=sum+n;n=
14、n+1;printf(n%d,sum);3、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是“水仙花数”,因为153=13+53+33。153,370,371,407#includemain()int n,x,y,z;printf(n);for(n=100;n1000;n+) x=n/100; y=(n/10)-(n/100)*10;或 y=n%100/10; z=n%10; if(n=x*x*x+y*y*y+z*z*z) printf(%d ,n); printf(n);4、选择和显示可被3除尽的前20个整数#includemain()in
15、t n,x,y;printf(n);for(n=0,x=0;n20;x+) if(x%3=0) printf(%d ,x);n=n+1; printf(n);5、把100-200之间的不能被3整除的数输出#includemain()int n;printf(n);for(n=100;n=200;n+) if(n%3!=0) printf(%d ,n);printf(n);实验五:1、编写一个名为Ads()的函数,接收传递给它的一个单精度数,计算它的绝对值且显示这个绝对值。#includefloat Ads(float x)float y; if (x=0) y=x; else y=-x; re
16、turn(y);main()float x,y;scanf(%f,&x);y=Ads(x);printf(n%f %fn,x,y);2、写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。#includeabc(int);main()int x,y; scanf(%d,&x); printf(n); abc(x);abc(int a)int i,j; for(i=2,j=1;ia/2;i+) if(a%i=0) j=0;break; if(j=1) printf(OKn); else printf(NOTn);3、编写一个函数。计算一个圆的面积a,已知它的周长为c。这个函数应该调
17、用另一个返回这个给定周长c的圆半径r的函数。相关公式为:r=c/2和a=r2#include#define PI 3.14float radius(float l)float rad; rad=l/(2*PI); return rad;float area(float c)float a,r; r=radius(c); a=PI*r*r; return(a);main()float c,r,a; printf(n); scanf(%f,&c); a=area(c); printf(area=%fn,a);4、编写一个名为whole()的函数,返回传递给这个函数的整数部分。#includeint
18、 inty(float y)int n; n=y; return(n);main()int x; float y; scanf(%f,&y); x=inty(y); printf(%dn,x);5、xn的数值能够递归的定义为: X0=1 Xn=X*Xn-1 编写一个递归函数,返回xn的值#includeint power(int x,int n)int y; if (n=0) return 1; else y=x*power(x,n-1); return(y);main()int x,n,s; scanf(%d%d,&x,&n); s=power(x,n); printf(%d,s);实验六:
19、1、编写一个程序,输入5个整数数字到一个一维数组中,所有数字输入后,显示输入的这些数字,并且显示数组的平均值,最大值,最小值。#includemain()float sum=0,x;int a5,i,max,min;for(i=0;i5;i+) scanf(%d,&ai);printf(n);max=min=a0;for(i=0;imax) max=ai; if(aimin) min=ai; x=sum/5;printf(n%5.2f max=%d min=%dn,x,max,min);2、输入一串字符,计算其中空格的个数#includemain()int i,j;char a50;gets(
20、a);for(i=0,j=0;istrlen(a);i+) if(ai= ) j=j+1;printf(n%dn,j);3、求一个3*3 矩阵对角线元素之和#includemain()int i,j,a33,sum=0;for(i=0;i3;i+) for(j=0;j3;j+) scanf(%d,&aij); for(i=0;i3;i+) sum=sum+aii;printf(nsum=%dn,sum);4、有一个34的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。#includemain()int i,j,a34,max,x,y;for(i=0;i3;i+) for(j=0;j4;
21、j+) scanf(%d,&aij); max=a00;for(i=0;i3;i+) for(j=0;jmax) max=aij;x=i;y=j; printf(nmax=%d, x=%d, y=%dn,max,x,y);5、将一个一维数组中的值按逆序重新存放。#includemain()int a10,i,x;for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i5;i+) x=ai;ai=a9-i;a9-i=x;printf(n);for(i=0;i10;i+) printf(%d ,ai);printf(n);6、一篇文章,共有3行文字,每行有20个字符,要求分
22、别统计出其中英文大写字母,小写字母,数字,空格以及其它字符的个数。#includemain()int i,j,x,y,s,k,q;char a320;x=0;y=0;s=0;k=0;q=0;gets(a);for(i=0;i3;i+) for(j=0;j=A & aij=a & aij=0& aij=9) s=s+1; else if(aij= ) k=k+1; else q=q+1; printf(nx=%d, y=%d, s=%d, k=%d, q=%dn,x,y,s,k,q);实验七:1、输入3个整数,按由大到小的顺序输出。#includemax(int *x,int *y)int m;
23、m=*x;*x=*y;*y=m;main()int a,b,c,*p,*q,*r; printf(n); scanf(%d%d%d,&a,&b,&c); p=&a; q=&b; r=&c; if(ab) max(p,q); if(ac) max(p,r); if(bc) max(q,r); printf(n%d, %d, %dn,a,b,c);2、写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。#includemain()int n,m=0;char a50,*p;scanf(%s,a);p=a;printf(n);for(n=0;n50;n+,p+) if(*p!=
24、0) printf(%c,*p);m+; else break; printf(nsum=%d,m);3、将n个数按输入时顺序的逆序排列,用函数实现。#includereverse(int *p)int n,x,*p1,*p2; for(n=0;n2;n+) p1=p+n; p2=p+4-n; x=*p1;*p1=*p2;*p2=x; main()int n,a5; printf(n); for(n=0;n5;n+) scanf(%d,&an); reverse(a); printf(n); for(n=0;n5;n+) printf(%d ,an);4、编写一个程序,输入月份号,输出该月的英
25、文月名。例如,输入“3”,则输出“March”,要求用指针数组处理。#includemain()int n;char *p,*month13=,January,February,March,April,May,June,July,August,September,Octorber,November,December;printf(n);scanf(%d,&n);if(n=1)&(n=12)printf(n%sn,*(month+n);else printf(nERRORn);5、输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:输入10个数;进行处理;输出1
26、0个数。#includeinput(int *p)int n; for(n=0;n10;n+,p+) scanf(%d,p);max_min(int *p)int *q,*max,*min,x,n; q=p; max=min=p;p+; for(n=1;n10;n+) if(*max*p) min=p; p+; p-; x=*p;*p=*max;*max=x; x=*q;*q=*min;*min=x;out(int x)int n; for(n=0;n10;n+) printf(%d ,xn);main()int a10; input(a); printf(n); out(a); printf
27、(n); max_min(a); printf(n); out(a); printf(n);实验八:1、输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#includemain()char string81; int i,num=0,word=0; char c; gets(string); for(i=0;(c=stringi)!=0;i+) if(c= ) word=0; else if(word=0) word=1; num+; printf(There are %d words in the line.n,num);2、编写程序,将两个字符串连接起来,不要用strcat函数。
28、#includemain()char s180,s240;int i=0,j=0;printf(ninput string1:);scanf(%s,s1);printf(ninput string2:);scanf(%s,s2);while(s1i!=0) i+;while(s2j!=0) s1i+=s2j+;s1i=0;printf(The new string is: %sn,s1);3、编写一个程序,接收一个按名和姓的顺序输入的名字,然后按姓和名的方式显示这个名字。例如,如果用户输入Guo Zhong,则输出应该是Zhong Guo。#define LSIZE 81#define TRU
29、E 1#define FALSE 0int main()int i = 0;char nameLSIZE, firstLSIZE, lastLSIZE, c; printf(Enter your first and last name: );gets(name); / get the stringsplitName(name, first, last);printf(nThe name entered is: n);printf(%s, %sn, last, first);return 0; void splitName(char name, char first, char last)int spaceFnd = FALSE;int i = 0, j = 0, start;char c;while(c = namei+) != 0 & spaceFnd = FALSE) if(c = )spaceFnd = TRUE;start = i;elsefirstj = c;j+;firstj = 0;j = 0;while(c = namestart+) != 0) lastj = c;j+;lastj = 0;
限制150内