C语言作业题总结Word文件下载.docx
《C语言作业题总结Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言作业题总结Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
![C语言作业题总结Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/1/06a7ddb6-b325-447a-9456-98493140e509/06a7ddb6-b325-447a-9456-98493140e5091.gif)
C1=%.2f\nS1=%.2f\nS2=%.2f\nV1=%.2f\nV2=%.2f\n"
C1,S1,S2,V1,V2);
编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
#include<
charc1,c2;
c1=getchar();
c2=getchar();
putchar(c1);
putchar('
\n'
);
%c\n"
c2);
(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时,通知用户“输入数据错”,程序结束。
floatscore;
scanf("
%f"
score);
if(score>
100||score<
0)
{
printf("
输入数据错\n"
return;
}
elseif(score>
=90)printf("
A\n"
=80)printf("
B\n"
=70)printf("
C\n"
=60)printf("
D\n"
elseprintf("
E\n"
return0;
switch((int)score/10)
case10:
case9:
printf("
break;
case8:
case7:
case6:
default:
return0;
(2).给一个不多于6位的正整数,要求:
①求出它是几位数;
②分别打印出每一位数字;
③按逆序打印出各位数字,例如原数为321,应输出123。
应准备以下测试数据:
要处理的数为1位正整数;
要处理的数为2位正整数;
要处理的数为3位正整数;
要处理的数为4位正整数;
要处理的数为5位正整数。
要处理的数为6位正整数。
除此之外,程序还应当对不合法的输入作必要的处理。
例如:
输入负数;
输入的数超过6位(如123456)。
(2)#include<
longintx;
inty,z=0,i=0;
请输入一个不超过1000000的整数:
"
%ld"
x);
if(x>
999999||x<
1)
if(x>
999999)printf("
输入的数超过6位\n"
elseif(x<
1)printf("
输入为负数\n"
else{
while(x!
=0)
{
y=x%10;
printf("
%d\t"
y);
x=x/10;
i=i+1;
}
\n这个数共有%d位\n"
i);
(3).输入4个整数,要求按由小到大顺序输出。
得到正确结果后,修改程序使之按由大到小顺序输出。
#include<
floata,b,c,d,t;
%f,%f,%f,%f"
a,&
b,&
c,&
d);
if(a>
b)
{t=a;
a=b;
b=t;
c)
a=c;
c=t;
d)
a=d;
d=t;
if(b>
{t=b;
b=c;
b=d;
if(c>
{t=c;
c=d;
%5.2f,%5.2f,%5.2f,%5.2f\n"
a,b,c,d);
(4).根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。
inta,b,c,s,area;
请输入三角形三条边:
%d,%d,%d"
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<
c*c||a*a+c*c<
b*b||b*b+c*c<
钝角三角形"
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
area=%d\n"
area);
不能组成三角形"
输入两个正整数m和n,求它们的最大公约数和最小公倍数。
在运行时,输入的值m>
n,观察结果是否正确。
再输入时,使m<
修改程序,不论m和n为何值(包括负整数),都能得到正确结果。
intm,n,t,a,f;
请输入两个正整数m,n:
\n"
%d,%d"
m,&
n);
if(m<
n){t=m;
m=n;
n=t;
};
f=m*n;
for(;
a=m%n;
m=n,n=a)
{if(a==0)break;
if(a!
=0)continue;
最大公约数为%d\n"
n);
最小公倍数为%d\n"
f/n);
intm,n,t,a,p;
请输入两个正整数:
n)
t=m;
m=n;
n=t;
};
P=m*n;
while(n!
m=n;
n=a;
p/a);
(2).输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。
charc;
intl=0,i=0,j=0,k=0;
请输入一行字符:
while((c=getchar())!
='
)
0'
&
c<
9'
)i++;
elseif((c>
a'
z'
)||(c>
A'
Z'
))j++;
elseif(c=='
'
)k++;
elsel++;
数字个数为:
%d\n,英文字母个数为:
%d\n,空格个数为:
%d\n,其他字符为:
%d\n"
i,j,k,l);
(3).用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。
在得到正确结果后,请修改程序使所设的x初值由1.5改变为100、1000、10000,再运行,观察结果,分析不同的x初值对结果有没有影响,为什么?
修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
floatx,x0,y,y1;
inti=0;
请输入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++;
x=%5.2f\n"
x);
while
(fabs(y)>
1e-5);
x=%f\n"
i=%d\n"
(1).写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。
本程序应当准备以下测试数据:
17、34、2,1、0。
分别输入数据,运行程序并检查结果是否正确
inta,b;
intprime(inta);
请输入一个数:
%d"
a);
b=prime(a);
if(b)printf("
%d是一个素数"
a);
%d不是一个素数"
intprime(inta)
inti,flag=1;
for(i=2;
i<
sqrt(a);
i++)
if(a%i==0){flag=0;
returnflag;
(2).用一个函数来实现将一行字符串的内容按反序存放,在主函数中输入和输出字符串.
把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。
把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。
string.h>
chara[100];
voidconver(charstr[100]);
gets(a);
conver(a);
puts(a);
voidconver(charstr[100])
inti,j;
chart;
i=0;
j=strlen(str)-1;
for(;
j;
i++,j--)
t=str[i];
str[i]=str[j];
str[j]=t;
(1).用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串“483”。
n的位数不确定,可以是任意的整数。
intn;
请输入整数:
voidtochar(intn);
tochar(n);
return(0);
voidtochar(intn)
{
if(n<
10)putchar(n+'
tochar(n/10);
putchar(n%10+'
(2).求两个整数的最大公约数和最小公倍数。
用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。
intMaximum(intn,intm);
intMinimum(intn,intm);
inta,b,c,d;
请输入两个整数\n"
scanf("
%d%d"
b);
c=Maximum(a,b);
d=Minimum(a,b);
最大公约数是%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!
{n=m;
m=r;
r=n%m;
returnm;
intMinimum(intn,intm)
{returnn*m/Maximum(n,m);
(1).输入三个整数,按由小到大的顺序输出,然后将程序改为:
输入三个字符串,按由小到大顺序输出。
#include<
voidmsort(int*a,int*b,int*c);
inta,b,c;
%d%d%d"
msort(&
%d%d%d\n"
a,b,c);
voidmsort(int*a,int*b,int*c)
intt;
if(*a>
*b)
t=*a;
*a=*b;
*b=t;
*c)
*a=*c;
*c=t;
if(*b>
t=*b;
*b=*c;
(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<
s2则输出负值。
两个字符串s1、s2由main函数输入,strcmp函数的返回值也由main函数输出。
intmstrcmp(char*p1,char*p2);
chars1[20],s2[20];
gets(s1);
gets(s2);
mstrcmp(s1,s2));
intmstrcmp(char*p1,char*p2)
*p1==*p2&
*p1&
*p2;
p1++,p2++);
if(*p1>
*p2)return
(1);
if(*p1<
*p2)return(-1);
elsereturn(0);