2C语言上机练习题总结版.docx
《2C语言上机练习题总结版.docx》由会员分享,可在线阅读,更多相关《2C语言上机练习题总结版.docx(30页珍藏版)》请在冰豆网上搜索。
2C语言上机练习题总结版
“C语言”上机题目汇总
2013-2014-2
1.输入三角形两个边长及其夹角(角度值),求第三边边长和三角型面积。
2.输入一个字符,若是小写字母,则转换成大写字母输出;若是大写字母,则转换成小写字母输出。
3.输入一个大写字母,输出字母表中它前面的字母和后面的字母。
如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。
4.编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:
(1)能同时被3、5、7整除。
(2)能同时被3、5、7中的两个数整除,并输出这两个数。
(3)只能被3、5、7中的一个数整除,输出该数。
(4)不能被3、5、7中的任何一个数整除。
5.已知正整数A>B>C且A+B+C<100,求满足
共有多少组,并输出满足条件的组合。
6.求
的值,直到最后一项的值小于
。
7.用迭代法求某数
的平方根,已知求平方根的迭代公式为:
。
取
为迭代初值,迭代的结束条件取
。
8.分别输出100以内(不包括100)所有偶数的和与所有奇数的和。
9.利用嵌套循环输出以下图形(行与行之间无空行,列与列之间无空列):
#
##
###
####
10.使用循环找到并输出100以内的所有素数。
11.利用循环找出并输出所有的“水仙花数”。
“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。
如
,所以153是“水仙花数”。
12.输出斐波那契数列的前40项。
斐波那契数列是个整数数列,其定义为:
13.输出100以内所有的“同构数”。
所谓“同构数”一个正整数,它出现在其平方数的右边。
例如:
5是25右边的数,25是625右边的数,5和25都是同构数。
14.指定一个正整数n,并输入n个整数,用冒泡法将它们由小到大顺序排列并输出。
15.利用循环打印下列九九乘法表:
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
4*1=44*2=84*3=124*4=16
5*1=55*2=105*3=155*4=205*5=25
6*1=66*2=126*3=186*4=246*5=306*6=36
7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
16.利用循环打印以下杨辉三角(要求打印7行):
1
11
121
1331
14641
15101051
1615201561
17.利用循环输出下列图形(无空行和空列):
*
***
*****
*******
18.不使用strcat函数,将两个字符串连接起来。
19.编写函数,求
的值。
n的值由键盘获得。
20.编写函数intfun(charstr[])并在主函数中调用它。
此函数的功能是判别字符串str是否为“回文”,若是,返回1,否则返回0(回文是指正反序相同的字符串,如“13531”、“madam”是回文,“1353”、“mrs”不是回文)。
21.用递归方法计算
。
22.用静态局部变量法计算
。
23.编写函数,求
,其中:
24.编写程序,计算组合数
。
m和n由键盘获得。
25.编写函数,求出n个a之积。
调用该函数,输入两个正整数n和a,求
之和。
26.编写程序,使用字符指针将字符数组s1中的字符串拷贝到字符数组s2中去。
27.使用“指向函数的指针”编写函数,求多项式
当
时的值。
28.编写函数,将直角坐标
转换为极坐标
。
转换公式为:
29.编写函数,使用指针参数将字符串ch2复制到字符串ch1的末尾,实现ch1与ch2的连接。
30.利用指针编写程序,将一个一维数组a[10]中的最大元素和首元素换位,最小元素和末元素换位。
数组元素由键盘获得。
31.试编程序,输入整数a和b,若
大于100,则输出
百位以上(包括百位)的数字,否则输出两数之和。
32.试编程序,求一个整数任意次方的最后三位数。
即求
的最后三位数,要求x,y从键盘输入,使用循环实现,不能使用数学库函数。
33.求
的个、十、百位上数字之和。
34.输出100以内每位数的积大于每位数的和的所有正整数。
35.通过循环按行优先顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。
36.从键盘输入若干整数(个数小于30),其值在0至4的范围内,用-1作为输入结束的标志。
统计每个整数的个数。
37.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。
38.数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。
39.编写函数sstrcmp,实现两个字符串的比较(即实现与strcmp函数功能相同的函数)。
若两个字符串相等,返回值为0;若不等,则返回两个对应字符的ASCII码值差值。
若前者大,应返回正值,若后者大,应返回负值。
1、#include
#include
main()
{
doublea,b,c,d,e,s;
scanf("%lf%lf%lf",&a,&b,&d);
e=cos(d*3.1415926/180);
c=sqrt(a*a+b*b-2*a*b*e);
s=1.0*a*b*sin(d*3.145926/180)/2;
printf("第三条边=%f,面积为=%f",c,s);
}
2、#include
main()
{
charch;
ch=getchar();
if(ch>=65&&ch<=90)
ch=ch+32;
else
ch=ch-32;
printf("%c",ch);
}
3,#include
main()
{
intx,y;
charch;
ch=getchar();
if(ch==65)
printf("没有前面的字母");
elseif(ch==90)
printf("没有后面的字母");
else
{x=ch-1;y=ch+1;printf("%c%c",x,y);}
}
4、#include
main()
{
intx;
printf("Pleaseinput:
\n");
scanf("%d",&x);
if(x%3==0&&x%5==0&&x%7==0)
printf("能同时被3、5、7整除。
\n");
elseif(x%3==0&&x%5==0)
printf("能同时被3、5、7中的两个数整除,分别是3,5\n");
elseif(x%3==0&&x%7==0)
printf("能同时被3、5、7中的两个数整除,分别是3,7\n");
elseif(x%5==0&&x%7==0)
printf("能同时被3、5、7中的两个数整除,分别是5,7\n");
elseif(x%3==0&&x%5!
=0&&x%7!
=0)
printf("只能被3、5、7中的一个数整除,是3\n");
elseif(x%3!
=0&&x%5==0&&x%7!
=0)
printf("只能被3、5、7中的一个数整除,是5\n");
elseif(x%3!
=0&&x%5!
=0&&x%7==0)
printf("只能被3、5、7中的一个数整除,是7\n");
else
printf("不能被3、5、7的任何一个数整除\n");
}
5、#include
main()
{
inta,b,c,i=0;
for(c=1;c<33;c++)
for(b=c+1;b<49;b++)
for(a=b+1;a<97;a++)
if((1.0/(a*a)+1.0/(b*b))==1.0/(c*c))
{i++;printf("a=%d,b=%d,c=%d\n",a,b,c);}
printf("有%d组\n",i);
}
5.已知正整数A>B>C且A+B+C<100,求满足共有多少组,并输出满足条件的组合。
(2)
#include
main()
{
inta,b,c,i=0;
for(a=1;a<99;a++)
for(b=1;bfor(c=1;cif(a+b+c<100&&(1.0/(a*a)+1.0/(b*b))==1.0/(c*c))
{i++;printf("a=%d,b=%d,c=%d\n",a,b,c);}
printf("有%d组\n",i);
}
6,#include
main()
{
inti=0;
doubles=0,c=1;
while(1/c>=1e-5)
{s=s+1/c;i++;c=c+i;}
printf("sum=%f\n",s);
return0;
}或者#include
main()
{
inti=0;
doubles=0,c=1;
while(1/c>=1e-5)
{
s=s+1/c;
c=c+i;
c=c+1;
i++;
}
printf("sum=%f\n",s);
return0;
}
7、#include
#include
main()
{
floata,x0,x1;
scanf("%f",&a);
x1=a/2;
do{
x0=x1;
x1=(x0+a/x0)/2;
}while(fabs(x1-x0)>1e-5);
printf("a=%f,squart(a)=%f\n",a,x1);
}
8、#include
main()
{
inti,s1=0,s2=0;
for(i=1;i<100;i++)
if(i%2==0)
s2=s2+i;
else
s1+=i;
printf("s1=%d,s2=%d",s1,s2);
}
9、#include
main()
{
inti,j,k;
for(i=1;i<=4;i++)
{for(j=1;j<=5-i;j++)
printf("");
for(k=1;k<=i;k++)
printf("#");
printf("\n");}
}
10、#include
#include
intsu(intx)
{
inti=1;
doublek;
k=sqrt(x);
if(x>=0)
{while(++i<=k)
{if(x%i==0)
return0;}
if(i>k)
return1;}
else
return2;
}
main()
{
intb,i;
for(i=1;i<100;i++)
{
b=su(i);
if(b==1)
printf("%d\n",i);}
}
(2)
//判断一个数是否为素数
#include
intmain()
{
intn,i;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i>=n)
printf("%disprime\n",n);
else
printf("%disnotprime\n",n);
return0;
}
(3)
//找出100以内的素数
#include
intmain()
{
intn,i;
for(n=3;n<=100;n++,n++)
{
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i>=n)
printf("%d\n",n);
}
return0;
}
11、#include
main()
{
inta,b,c,i;
for(i=100;i<1000;i++)
{a=i/100;
b=i/10%10;
c=i%10;
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\n",i);}
}
//多重循环实现水仙花数
#include
intmain()
{
inti,j,k,a;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
a=i*100+j*10+k;
if(i*i*i+j*j*j+k*k*k==a)
printf("%d\n",a);
}
return0;
}
12、#include
main()
{
inta=1,b=1,c,i;
for(i=1;i<=40;i++)
if(i<3)
printf("1\n");
else
{c=a+b;
printf("%d\n",c);
a=b;
b=c;}
}
(2)
(2)
//斐波那契数列
#include
intmain()
{
inta=1,b=1,i;
printf("%-6d%-6d\n",a,b);
for(i=2;i<=20;i++)
{
a=a+b;
b=a+b;
printf("%-6d%-6d\n",a,b);
}
return0;
}
13、#include
intf(intn)
{
intx;
x=n*n;
if(n<4)
{if(n==x)
return1;
else
return0;}
elseif(n<10)
{if(n==(x%10))
return1;
else
return0;}
else
{if(n==(x%100))
return1;
else
return0;}
}
main()
{
inti;
for(i=0;i<100;i++)
if(f(i))
printf("%d\n",i);
}
14、#include
main()
{
inta[100],i,j,n,t;
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
for(i=0;ifor(j=1;jif(a[j-1]>a[j])
{t=a[j-1];a[j-1]=a[j];a[j]=t;}
printf("排序:
\n");
for(i=0;iprintf("%d",a[i]);
}
15、
(1)//乘法表
#include
intmain()
{
inti,j,x;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%-3d",i,j,i*j);
printf("\n");
}
return0;
}
(2)
#include
main()
{
inti,j,x;
for(i=1;i<=9;i++)
for(j=i,x=1;x<=i;x++)
{printf("%2d*%d=%2d",i,j,x*j);
if(x==i)
printf("\n");}
}
16、#include
main()
{
inti,j,a[7][7]={0};
for(i=0;i<7;i++)
{a[i][0]=1;
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];}
for(i=0;i<7;i++)
{for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");}
}
17、
(1)正三角形
#include
intmain()
{
inti,j,k;
for(i=1;i<=4;i++)
{
for(j=i;j<=4;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}
(2)
#include
main()
{
intn=4,i,j,z;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)
printf("");
for(z=1;z<=(2*i-1);z++)
printf("*");
for(j=1;j<=4-i;j++)
printf("");
printf("\n");}
}
18、#include
main()
{
chars1[80],s2[80];
inti=0,j=0;
gets(s1);
gets(s2);
while(s1[i++]);
i=i-1;
while(s2[j])
{s1[i]=s2[j];i++;j++;}
s1[i]='\0';
printf("%s\n",s1);
}
19、#include
main()
{
intn,i;
doubles=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+1.0/i;
printf("%6.2f\n",s);
}
20、#include
intfun(charstr[])
{
inti=0,n=0;
while(str[i++]);
n=i-1;
for(i=0;iif(str[i]!
=str[n-1-i])
return0;
if(i==n/2)
return1;
else
return0;
}
main()
{
chars[30];
printf("Pleaseinput:
\n");
gets(s);
if(fun(s)==0)
printf("不是回文");
else
printf("是回文");
}
21、#include
#include
#include
longf(intn)
{
longk;
if(n<0)
{
printf("Error!
\n");
exit(0);
}
elseif(n==0||n==1)
k=1;
else
k=n*f(n-1);
returnk;
}
main()
{
intn;
longk;
printf("Pleaseinput:
\n");
scanf("%d",&n);
k=f(n);
printf("%d!
=%d",n,k);
}
22、#include
doublef(intn)
{
staticintc;
inti,k=1;
c=n;
for(i=1;i<=n;i++)
k=k*i;
returnk;
}
main()
{
intq;
scanf("%d",&q);
f(q);
printf("%f",f(q));
}
23、#include
doublef(intn)
{
doubles=0;
inti;
for(i=1;i<=n;i++)
s=s+1.0/i;
returns;
}
intmain()
{
doubles;
s=f(50)+f(100)+f(150)+f(200);
printf("s=%8.2lf",s);
return0;
}
24、#include
longfun1(longn)
{
longk=1;
inti;
for(i=1;i<=n;i++)
k=k*i;
returnk;
}
longfun2(longm,longn)
{
longc;
c=fun1(m)/(fun1(n)*fun1(m-n));
returnc;
}
main()
{
longc,m,n;
printf("Pleaseinputmandn:
\n");
scanf("%ld%ld",&m,&n);
c=fun2(m,n);
printf("%ld",c);
}
25、
(1)//a+aa+aaa+aaaa
#include
intmain()
{
intn,i,a,t;
doubles=0;
printf("Pleaseinputnanda:
\n");
scanf("%d%d",&n,&a);
t=a;
for(i=1;i<=n;i++)
{
s=s+a;
a=a*10;
a=a+t;
}
printf("%6.2f",s);
return0;
}
#include
doublef(intn,inta)
{
doubles=1;
inti;
for(i=1;i<=n;i++)
s*=a;
returns;