C语言上机题目来源及答案概要.docx
- 文档编号:10196996
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:19
- 大小:41.03KB
C语言上机题目来源及答案概要.docx
《C语言上机题目来源及答案概要.docx》由会员分享,可在线阅读,更多相关《C语言上机题目来源及答案概要.docx(19页珍藏版)》请在冰豆网上搜索。
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变形) ***** ******* #include 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)) #include 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]); }(测试通过)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 题目 来源 答案 概要