C语言作业题总结.docx
- 文档编号:5940664
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:14
- 大小:18.79KB
C语言作业题总结.docx
《C语言作业题总结.docx》由会员分享,可在线阅读,更多相关《C语言作业题总结.docx(14页珍藏版)》请在冰豆网上搜索。
C语言作业题总结
1、编写程序:
从键盘输入两个数,计算两个数的和、差、积、商,将这些结果输出。
(有能力的同学,可以试一试完成一个简单的计算器)
#include
#include
intmain()
{
floatr1,r2,p1,p2,p3,p4;
r1=8;
r2=2;
p1=r1+r2;
p2=r1-r2;
p3=r1*r2;
p4=r1/r2;
printf("p1=%f\np2=%f\np2=%f\np4=%f\n",p1,p2,p3,p4);
return0;
}
按要求编写程序,并上机运行。
题目为:
设半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积,圆柱体积。
用scanf输入数据,输出计算结果。
输出时要有文字说明,取小数点后两位数字。
#include
#definePI3.14
voidmain()
{
floatr,h,C1,S1,S2,V1,V2;
scanf("%f%f",&r,&h);
C1=2*PI*r;
S1=PI*r*r;
S2=4*PI*r*r;
V1=4.0/3*PI*r*r*r;
V2=PI*r*r*h;
printf("C1=%.2f\nS1=%.2f\nS2=%.2f\nV1=%.2f\nV2=%.2f\n",C1,S1,S2,V1,V2);
}
编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
#include
voidmain()
{
charc1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar('\n');
printf("%c\n",c2);
return0;
}
(1).给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90-100分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。
①事先编好程序,要求分别用if语句和switch语句实现。
运行程序,并检查结果是否正确。
②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。
修改程序,使之能正确处理任何数据。
当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。
#include
voidmain()
{
floatscore;
scanf("%f",&score);
if(score>100||score<0)
{
printf("输入数据错\n");
return;
}
elseif(score>=90)printf("A\n");
elseif(score>=80)printf("B\n");
elseif(score>=70)printf("C\n");
elseif(score>=60)printf("D\n");
elseprintf("E\n");
}
#include
intmain()
{
floatscore;
scanf("%f",&score);
if(score>100||score<0)
{
printf("输入数据错\n");
return0;
}
switch((int)score/10)
{
case10:
case9:
printf("A\n");break;
case8:
printf("B\n");break;
case7:
printf("C\n");break;
case6:
printf("D\n");break;
default:
printf("E\n");break;
}
return0;}
(2).给一个不多于6位的正整数,要求:
①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。
应准备以下测试数据:
要处理的数为1位正整数;
要处理的数为2位正整数;
要处理的数为3位正整数;
要处理的数为4位正整数;
要处理的数为5位正整数。
要处理的数为6位正整数。
除此之外,程序还应当对不合法的输入作必要的处理。
例如:
输入负数;
输入的数超过6位(如123456)。
(2)#include
intmain()
{
longintx;
inty,z=0,i=0;
printf("请输入一个不超过1000000的整数:
");
scanf("%ld",&x);
if(x>999999||x<1)
{
if(x>999999)printf("输入的数超过6位\n");
elseif(x<1)printf("输入为负数\n");
return0;}
else{
while(x!
=0)
{
y=x%10;
printf("%d\t",y);
x=x/10;
i=i+1;
}
printf("\n这个数共有%d位\n",i);
}
return0;
}
(3).输入4个整数,要求按由小到大顺序输出。
得到正确结果后,修改程序使之按由大到小顺序输出。
#include
intmain()
{
floata,b,c,d,t;
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("%5.2f,%5.2f,%5.2f,%5.2f\n",a,b,c,d);
return0;
}
(4).根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。
#include
#include
intmain()
{
inta,b,c,s,area;
printf("请输入三角形三条边:
");
scanf("%d,%d,%d",&a,&b,&c);
if(a+b>c||a+c>b||b+c>a)
{
if(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)printf("直角三角形");
elseif(a*a+b*b>c*c||a*a+c*c>b*b||b*b+c*c>a*a)printf("锐角三角形");
elseif(a*a+b*b s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%d\n",area); } elseprintf("不能组成三角形"); return0; } 输入两个正整数m和n,求它们的最大公约数和最小公倍数。 在运行时,输入的值m>n,观察结果是否正确。 再输入时,使m 修改程序,不论m和n为何值(包括负整数),都能得到正确结果。 #include intmain() { intm,n,t,a,f; printf("请输入两个正整数m,n: \n"); scanf("%d,%d",&m,&n); if(m f=m*n; for(;a=m%n;m=n,n=a) {if(a==0)break; if(a! =0)continue; } printf("最大公约数为%d\n",n); printf("最小公倍数为%d\n",f/n); return0; } #include intmain() { intm,n,t,a,p; printf("请输入两个正整数: "); scanf("%d,%d",&m,&n); if(m { t=m; m=n; n=t; }; P=m*n; while(n! =0) { a=m%n; m=n; n=a; } printf("最大公约数为%d\n",n); printf("最小公倍数为%d\n",p/a); return0; } (2).输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 #include intmain() { charc; intl=0,i=0,j=0,k=0; printf("请输入一行字符: \n"); while((c=getchar())! ='\n') { if(c>='0'&&c<='9')i++; elseif((c>='a'&&c<='z')||(c>='A'&&c<='Z'))j++; elseif(c=='')k++; elsel++; } printf("数字个数为: %d\n,英文字母个数为: %d\n,空格个数为: %d\n,其他字符为: %d\n",i,j,k,l); return0; } (3).用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。 在得到正确结果后,请修改程序使所设的x初值由1.5改变为100、1000、10000,再运行,观察结果,分析不同的x初值对结果有没有影响,为什么? 修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。 #include #include intmain() { floatx,x0,y,y1; inti=0; printf("请输入x: "); scanf("%f",&x); do { x0=x; y=2*x0*x0*x0-4*x0*x0+3*x0-6; y1=6*x0*x0-8*x0+3; x=x0-y/y1; i++; printf("x=%5.2f\n",x); } while (fabs(y)>1e-5); printf("x=%f\n",x); printf("i=%d\n",i); return0; } (1).写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。 本程序应当准备以下测试数据: 17、34、2,1、0。 分别输入数据,运行程序并检查结果是否正确 #include #include voidmain() { inta,b; intprime(inta); printf("请输入一个数: "); scanf("%d",&a); b=prime(a); if(b)printf("%d是一个素数",a); elseprintf("%d不是一个素数",a); } intprime(inta) { inti,flag=1; for(i=2;i if(a%i==0){flag=0;break;} returnflag; } (2).用一个函数来实现将一行字符串的内容按反序存放,在主函数中输入和输出字符串. 把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。 把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 #include #include voidmain() { chara[100]; voidconver(charstr[100]); gets(a); conver(a); puts(a); } voidconver(charstr[100]) { inti,j; chart; i=0;j=strlen(str)-1; for(;i { t=str[i]; str[i]=str[j]; str[j]=t; } } (1).用递归法将一个整数n转换成字符串。 例如,输入483,应输出字符串“483”。 n的位数不确定,可以是任意的整数。 #include intmain() { intn; printf("请输入整数: "); voidtochar(intn); scanf("%d",&n); tochar(n); return(0); } voidtochar(intn) { if(n<10)putchar(n+'0'); else{ tochar(n/10); putchar(n%10+'0'); } } (2).求两个整数的最大公约数和最小公倍数。 用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。 #include voidmain() { intMaximum(intn,intm); intMinimum(intn,intm); inta,b,c,d; printf("请输入两个整数\n"); scanf("%d%d",&a,&b); c=Maximum(a,b); d=Minimum(a,b); printf("最大公约数是%d\n最小公倍数是%d\n",c,d); } intMaximum(intn,intm) { intr,t; if(m>n) {t=n;n=m;m=t;} r=n%m; while(r! =0) {n=m; m=r; r=n%m;} returnm;} intMinimum(intn,intm) {returnn*m/Maximum(n,m);} (1).输入三个整数,按由小到大的顺序输出,然后将程序改为: 输入三个字符串,按由小到大顺序输出。 #include voidmain() { voidmsort(int*a,int*b,int*c); inta,b,c; scanf("%d%d%d",&a,&b,&c); msort(&a,&b,&c); printf("%d%d%d\n",a,b,c); } voidmsort(int*a,int*b,int*c) { intt; if(*a>*b) { t=*a; *a=*b; *b=t; } if(*a>*c) { t=*a; *a=*c; *c=t; } if(*b>*c) { t=*b; *b=*c; *c=t; } } (2).用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: intstrcmp(char*p1,char*p2); 设p1指向字符串s1,p2指向字符串s2,要求当s1=s2时,函数返回值为0,如果sl≠s2,则返回它们二者第一个不相同字符的ASCII码差值(如“BADY”与“BAD”的第二个字母不相同,“O”与“A”之差为79—65=14);如果sl>s2,则输出正值;如果sl 两个字符串s1、s2由main函数输入,strcmp函数的返回值也由main函数输出。 #include intmain() { intmstrcmp(char*p1,char*p2); chars1[20],s2[20]; gets(s1); gets(s2); printf("%d\n",mstrcmp(s1,s2)); return0; } intmstrcmp(char*p1,char*p2) { for(;*p1==*p2&&*p1&&*p2;p1++,p2++); if(*p1>*p2)return (1); if(*p1<*p2)return(-1); elsereturn(0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业题 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)