C语言上机题目来源及答案概要.docx

上传人:b****8 文档编号:10196996 上传时间:2023-02-09 格式:DOCX 页数:19 大小:41.03KB
下载 相关 举报
C语言上机题目来源及答案概要.docx_第1页
第1页 / 共19页
C语言上机题目来源及答案概要.docx_第2页
第2页 / 共19页
C语言上机题目来源及答案概要.docx_第3页
第3页 / 共19页
C语言上机题目来源及答案概要.docx_第4页
第4页 / 共19页
C语言上机题目来源及答案概要.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言上机题目来源及答案概要.docx

《C语言上机题目来源及答案概要.docx》由会员分享,可在线阅读,更多相关《C语言上机题目来源及答案概要.docx(19页珍藏版)》请在冰豆网上搜索。

C语言上机题目来源及答案概要.docx

C语言上机题目来源及答案概要

C语言”上机题目汇总

2012-2013-2

1.输入三角形两个边长及其夹角(角度值),求第三边边长和三角型面积。

(上机指导P983

(2))

#include

#include

floatpi=3.141592;

intmain()

{

floata,b,c,v,s;

scanf("%f%f%f",&a,&b,&v);c=sqrt(a*a+b*b-2*a*b*cos(v/180*pi));

s=a*b*sin(v/180*pi)/2;

printf("c=%0.2f,s=%0.2f\n",c,s);

return0;

}(测试通过)

2.输入一个字符,若是小写字母,则转换成大写字母输出;若是大写字母,则转换成小写字母输出。

(上机指导P1012

(2))

#include

intmain()

{

charch;

printf("input:

");

scanf("%c",&ch);

if(ch>='a'&&ch<='z')

printf("%c",ch-32);

elseif(ch>='A'&&ch<='Z')

printf("%c",ch+32);

elseprintf("inputerror!

");

return0;

}(测试通过)

3.输入一个大写字母,输出字母表中它前面的字母和后面的字母。

如果输入的字母为A或乙则分别输出提示信息“没有前面的字母”或“没有后面的字母”。

(上机指导P1012(3))

#include

intmain()

{

charc;

printf("请输入一个大写字母:

");

scanf("%c",&c);

if(c>'A'&&c<'Z')

printf("前一个字母是:

%c,后一个字母是:

%c",c-1,c+1);

elseif(c=='A')

printf("A的前面没有字母,A的后一个字母是%c",c+1);

elseif(c=='Z')

printf("Z的后面没有字母,Z的前一个字母是%c",c-1);

else

printf("输入有误请重新输入");

return0;

}(测试通过)

4.编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下

列信息:

(上机指导P1022(6))

(1)能同时被3、5、7整除。

(2)能同时被3、5、7中的两个数整除,并输出这两个数。

(3)只能被3、5、7中的一个数整除,输出该数。

(4)不能被3、5、7中的任何一个数整除。

#include

intmain()

{

intm;

printf("pleaseinput:

");

scanf("%d",&m);

if((m%3==0)&&(m%5==0)&&(m%7==0))printf("能同时被3,5,7整除");

elseif((m%3==0)&&(m%5==0)&&(m%7!

=0))

printf("能被3和5整除,");

elseif((m%3==0)&&(m%7==0)&&(m%5!

=0))

printf("能被3和7整除,");

elseif((m%7==0)&&(m%5==0)&&(m%3!

=0))

printf("能被7和5整除,");

elseif((m%7==0)&&(m%5!

=0)&&(m%3!

=0))

printf("能被7整除,");

elseif((m%7!

=0)&&(m%5==0)&&(m%3!

=0))

printf("能被5整除,");

elseif((m%7!

=0)&&(m%5!

=0)&&(m%3==0))

printf("能被3整除,");

else

printf("不能被3,5,7任一个整除");

return0;

}(测试通过)

5.已知正整数A>B>C且A+B+CV100,求满足2+4=4共有多少组,并输

A2B2C2

出满足条件的组合。

(上机指导P1062(3))

#include

intmain()

{

inta,b,c,cout=0;

for(c=1;c<100;c++)

for(b=c+1;b<100;b++)for(a=b+1;a<100;a++)

if(a+b+c>100)break;

elseif(1.0/(a*a)+1.0/(b*b)==1.0/(c*c))

{

printf(”A=%dB=%dC=%d\n",a,b,c);

cout++;

}

printf("%d\n",cout);

return0;

}(测试通过)

6.求1+-+-+-+—+—+的值,直到最后一项的值小于10-5。

(上机指

247111622

导P1062(4))

#include

intmain()

{

inti,a=1;

doubleb=0,s=0;

for(i=1;b<0.00001;i++){

a=i+a;

b=1.0/a;

s=s+b;

}

printf("%f",s);

return0;

}(测试通过)

7.用迭代法求某数a的平方根,已知求平方根的迭代公式为:

Xn=」(Xn-1+』)o

2Xn-1

取a为迭代初值,迭代的结束条件取人-x甘£10'5o(课本例6-6)

2

8.分别输出100以内(不包括100)所有偶数的和与所有奇数的和。

(课本例

6-8

9.利用嵌套循环输出以下图形(行与行之间无空行,列与列之间无空列):

(课

本例6-9)

#

##

###

####

10.使用循环找到并输出100以内的所有素数。

(课本例6-11)

11.利用循环找出并输出所有的“水仙花数”。

“水仙花数”是一个三位数,其

各位数字的立方和等于该数本身。

如153=13+53+33,所以153是“水仙花

数”。

(课本例6-19)

12.

输出斐波那契数列的前40项。

斐波那契数列是个整数数列,其定义为:

13.输出100以内所有的“同构数”。

所谓“同构数”一个正整数,它出现在其平方数的右边。

例如:

5是25右边的数,25是625右边的数,5和25都是同构数。

(做过的习题)

#include

intmain()

{

inti;for(i=1;i<=100;i++)

if(i*i%10==i||i*i%100==i)printf("%d\n",i);

return0;

}(测试通过)

14.指定一个正整数n,并输入n个整数,用冒泡法将它们由小到大顺序排列并输出。

(课本例7-4)

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#include

intmain()

{

inti,j,k;

printf("\n\n九九乘法表:

\n\n\n");

for(i=1;i<=9;i++){

for(j=1;j<=i;j++){

k=i*j;

printf("%d*%d=%-3d",j,i,k);

}printf("\n");

}

return0;

}

16.利用循环打印以下杨辉三角(要求打印7行):

(课本P983)

1

1

1

1

2

1

1

3

3

1

1

4

6

41

1

5

10

1051

1

6

15201561

#include

#defineM7

intmain()

{

inta[M][M],i,j;

for(i=0;i

for(j=0;j<=i;j++)

{

if(i==j||j==0)

a[i][j]=1;

else

a[i][j]=a[i-1][j]+a[i-1][j-1];

printf("%5d",a[i][j]);

if(i==j)printf("\n");

}

return0;

}

17.利用循环输出下列图形(无空行和空列):

(6-9变形)

*****

*******

#includeintmain(){inti,j,k;

for(i=1;i<=4;i++){

for(j=1;j<=8-i;j++)printf("");for(j=1;j<=2*i-1;j++)

printf("*");printf("\n”);

}return0;

}(测试通过)

18.不使用strcat函数,将两个字符串连接起来。

(课本例7-13)

19.编写函数,求1+1+1+1++1的值。

n的值由键盘获得。

(课本例8-6)

234n

20.编写函数intfun(charstr[])并在主函数中调用它。

此函数的功能是

判别字符串str是否为“回文”,若是,返回1,否则返回0(回文是指正反序相同的字符串,如“13531”、“madam”是回文,“1353”、“mrs”不是回文)。

(课本例8-9)

21.用递归方法计算n!

(课本例8-13)

22.用静态局部变量法计算n!

#include

intmain()

{

inti;

longn,s;

scanf("%d",&n);

for(i=s=1;i<=n;i++)

s=s*i;

printf("n!

=%ld\n",s);

return0;

}(测试通过,不过我不会用静态局部变量法,就只用了个循环)

23.编写函数,求

Rs=s1+s2+s3+s4,其中:

(课本例8-22)

…11

1

s1=1+—+—+

+-

23

50

o11

1

s2=1+—i—+

+-

23

100

11

s3=1+—+—+

1+—

23

150

…11

1+—

23

200

25.编写函数,求出n个a之积。

调用该函数,输入两个正整数n和a,求

a+aa+aaa+A+aa$^a之和。

(上机指导P1182

(2))

#includeintfun(inta,intn)inti,sum1=0,sum2=0;for(i=0;i

sum仁sum1*10+a;sum2+=sum1;

}

returnsum2;

}

intmain()

{

inta,n;

printf("Entertheaandn:

”);scanf("%d%d",&a,&n);

printf("result:

%d",fun(a,n));return0;

26.编写程序,使用字符指针将字符数组s1中的字符串拷贝到字符数组s2中去。

(课本例9-5)

27.使用“指向函数的指针”编写函数,求多项式x4+x-1当x=1.5,2.5,3.5,4.5

时的值。

(课本例9-16)

28.编写函数,将直角坐标(x,y)转换为极坐标(r,q)。

转换公式为:

(课本例

9-29)

29.编写函数,使用指针参数将字符串ch2复制到字符串ch1的末尾,实现ch1与ch2的连接。

(课本例9-32

30.利用指针编写程序,将一个一维数组a[10]中的最大元素和首元素换位,最

小元素和末元素换位。

数组元素由键盘获得。

(上机指导P1212(4))

#include"stdio.h"

voidmain()

{

intmax,min,*p,a[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);

p=a;

max=a[0];

for(i=1;i<10;i++,p++)if(max<*p)max=*p;

for(i=1;i<10;i++)

while(a[i]==max)

a[i]=a[O];

a[O]=max;

p=a;

min=a[9];

for(i=1;i<10;i++,p++)

if(min>*p)

min=*p;

for(i=1;i<10;i++)

while(a[i]==min)

a[i]=a[9];

a[9]=min;

for(i=0;i<10;i++)

printf("%d",a[i]);

}(测试通过)

31.试编程序,输入整数a和b,若a2+b2大于100,则输出a2b2百位以上(包括百位)的数字,否则输出两数之和。

#include

intmain()

{

inta,b;

longs;

printf("请输入整数a,b:

");

scanf("%d%d",&a,&b);

s=a*a+b*b;

if(s>100)

printf("%d",s/100);

else

printf("%d",a+b);

return0;

}(测试通过)

32.试编程序,求一个整数任意次方的最后三位数。

即求xy的最后三位数,要

求x,y从键盘输入,使用循环实现,不能使用数学库函数。

#include

voidmain()

{

inti,x,a;

longr=1;

printf("输入1个整数:

");

scanf("%d",&x);

printf("输入乘方数:

");

scanf("%d",&a);

for(i=1;i<=a;i++)

r=r*x%1000;

printf("%d的%d次方的后3位是%03ld",x,a,r);

}(测试通过)

33.求99的个、十、百位上数字之和。

#include

intmain()

{

inti,m=1,sum=0;for(i=1;i<9;i++){m=m*9%1000;

}

while(m)

{sum+=m%10;m/=10;

}printf("%d\n",sum);

return0;

}(测试通过)

34.输出100以内每位数的积大于每位数的和的所有正整数。

#include"stdio.h"voidmain(){intn,k=1,s=0,m;

for(n=1;n<=100;n++){

k=1;s=0;

m=n;

while(m>=1){k*=m%10;s+=m%10;m=m/10;

}

if(k>s)printf("%d\n",n);

}}(测试通过)

35.通过循环按行优先顺序为一个5X5的二维数组a赋1到25的自然数,然

后输出该数组的左下半三角。

(习题)

#include

intmain(void)

{

inta[5][5],k=1,i,j;

for(i=0;i<5;i++)

{for(j=0;j<5;j++)

{

a[i][j]=k;

k++;

}

}for(i=0;i<5;i++)

{for(j=0;j<=i;j++)printf("%d",a[i][j]);

printf("\n");

}

return0;

}(测试通过)

36.从键盘输入若干整数(个数小于30),其值在0至4的范围内,用-1作为

输入结束的标志。

统计每个整数的个数。

#include

intmain()

{

inta=0,b=0,c=0,d=0,e=0,num,i;

printf("从键盘输入若干整数:

\n");

for(i=1;i<=30;i++)

{

scanf("%d",&num);

if(num==(-1))break;

switch(num)

{

case0:

a++;break;

case1:

b++;break;

case2:

c++;break;

case3:

d++;break;

case4:

e++;break;

}

}

printf("0的个数为:

%d\n1的个数为:

%d\n2的个数为:

%d\n",a,b,c);

printf("3的个数为:

%d\n4的个数为:

%d\n",d,e);

return0;

}(测试通过)

37.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。

#include

intmain()

{

inta[30],b[5],i=0,j;

while(i<30)

a[i++]=2*(i+1);

i=0;

while(i<5)

{

j=i*6;b[i]=a[j]+a[j+1]+a[j+2]+a[j+3]+a[j+4]+a[j+5];b[i]/=6;

i++;

}

i=0;

while(i<5)

printf("%d\n",b[i++]);

return0;

}(测试通过)

38.数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,

并按每行3个元素的格式输出数组b。

#include

intmain()

{

inti,a[10];

intb[10];

printf("请输入10个整数,其中前9个数不能为0:

\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=1;i<10;i++)

b[i]=a[i]/a[i-1];

for(i=1;i<10;i++)

{

printf("%d\t",b[i]);

if(i%3==0)

printf("\n");}

return0;

}(测试通过)

39.编写函数sstrcmp,实现两个字符串的比较(即实现与strcmp函数功能相同的函数)。

若两个字符串相等,返回值为0;若不等,则返回两个对应自负的ASCII码值差值。

若前者大,应返回正值,若后者大,应返回负值。

#include

#defineN30

voidmain()

{

chars1[N],s2[N];

inti,j=0;

puts("输入字符串s1:

");

gets(s1);

puts("输入字符串s2:

");

gets(s2);

for(i=0;(s1[i]!

='\0')&&(s2[i]!

='\0');i++)

j=s1[i]-s2[i];

if((s1[i]=='\0')&&(s2[i]=='\0'))

printf("%d\n",j);

else

printf("%d\n",s1[i]-s2[i]);

}(测试通过)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1