编写一个求出找出所有水仙花数的程序,判断一个数是否是水仙花数由子函数完成,输出由主函数完成。
若一个三位正整数,若它的所有数字立方和等于该数本身,则为水仙花数。
例如 153=13+53+33
请帮忙给出正确答案和分析,谢谢!
水仙花数是指一个三位数中各个位数的立方和等于该数本身。例如:153=13+53+33是 153=1的3次方+5的3次方+3的3次方。
#include <stdiio.h>
mian()
{
int i,l,k,n;
printf("请输入水仙花数:\n");//输入水仙花数
for(i=100;i<1000;i++)/*水仙花数是三位数,所以是从100开始,截止到999,也就是小于1000*/
{
l=i/100;/*求出百位数上的数字*/
k=i/10%10;/*求出十位数的数字*/
n=i%10;/*求出个位数上的数字*/
if(l*100+k*10+n==l*l*l+k*k*k+n*n*n)/*判断水仙花数是否相等*/
{
printf("%-6d",n);/*宽度是6,当宽度不足6的时候,会补齐空格*/
}
}
printf("\n");/*回车,下一行*/
}
编写程序maxprog完成如下要求:从键盘输入15个数,然后找出其中的最大的数和最小的数,将它们输出到屏幕上(其中最大数和最小数分别定义变量名为max和min)。
( 9 ) 下面的程序执行时 , 可以从键盘输入一个正整数 , 然后把该数的每位数字按逆序输出 。 例如 : 输入 7685 ,则输出 5867 ,输入 1000 ,则输出 0001 。请填空。
Private Sub Command1_Click()
Dim x As Integer
x=InputBox( “ 请输入一个正整数 ” )
While x>_ _[11] ___
Print x Mod 10;
x=x\10
Wend
Print__ [12] __
End Sub
在考生文件夹下有“db4.mdb”数据库。
创建实现求“水仙花数”的模块“模块1”,实现求“水仙花数”并用消息框输出。“水仙花数”是指一个三位数,其各位数字的立方和恰好等于该数的本身。例如 153=1*1*1+5*5*5+3*3*3。要求:“水仙花数”用DO While循环实现。运行该模块的结果如图所示。
请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件OUT11.DAT中。
例如,若n为1000时,函数值应为s=153.909064。
注意:部分源程序已给出。
请勿改动主函数main()和输入输出函数progReadWrite()的内容。
试题程序:
include<conio.h>
include<math.h>
include<stdio.h>
double countValue(int n)
{
}
main ( )
{
clrscr();
printf ("自然数之和的平方根=%f\n", countValue(lO00)) ;
pregReadWrite();
}
pregReadWrite()
{
FILE *wf;
int i, n;
float s;
wf = fepen("OUT11.DAT", "w");
s = ceuntValue(1000);
fprintf(wf, "%f\n", s);
fclese(wf);
}
“高级语言程序设计”编程题库1. 从键盘输入3个整数,求其中的最大数和最小数,并输出结果。2. 从键盘上输入一个3*3的整数矩阵,求其各行的平均值并输出,输出时保留两位小数。3. 输出x2的值,x取值从0到10。4. 从键盘上输入一个3*4的整数矩阵,要求输出其最大元素的值,以及它的行号和列号。5.编写一个程序从键盘输入10个数,要求输出其中最小的。6.编写一个函数根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 s= 7.输出1000年(包括1000年)到1999年之间的所有闰年,要求每三个一行,分行输出。8. 编写程序打印所有的“水仙花数”。“水仙花数”指一个三位数,其各位数字立方和等于该数本身,例如153是一个“水仙花数”,因为 153111333555。9.编写一个程序,输入一个3位数的正整数,然后反向输出对应的数。如:123,则输出321。参考答案:#include void main()int i,s=0,j;scanf(%d,&i);if(i=100&i=999) j=i%10;s=s+j; j=(i-j)/10%10;s=s*10+j;j=i/100;s=s*10+j;printf(the inverse number is %d,s);elseprintf(input erroe!);10. 从键盘输入10名学生的C语言成绩存入一维数组内,编写程序计算10名学生的最高分、平均分和及格人数。参考答案:#include void main()int i,score10,max,min;float ave;for(i=0;i10;i+)scanf(%d,&scorei);max=score0;min=score0;ave=score0;for(i=1;imax)max=scorei;if(scoreimin)min=scorei;ave=ave+scorei;ave=ave/10.0;printf(max=%d,min=%d,ave=%f,max,min,ave);11. 编写一个程序,判断用户输入的字符是否是数字,若是数字,则输出“a numerical character”,否则输出“other character”。参考答案:#include void main()char ch;ch=getchar();if(ch=0&ch=9)printf(a numerical character);elseprintf(other character);12. 从键盘输入12个数存入二维数组a34中,编写程序求出最大元素的值及它所在的行号和列号。参考答案:#include void main()int i,j,a34,max,index_i,index_j;for(i=0;i3;i+)for(j=0;j4;j+) scanf(%d,&aij);max=a00;index_i=0;index_j=0;for(i=0;i3;i+)for(j=0;jmax)max=aij;index_i=i;index_j=j;printf(max=%d,index_x=%d,index_y=%d,max,index_i,index_j);13打印所有的“水仙花数”,所谓“水仙花数”是指一个三位正整数,其各位数字的立方和等于该数本身。参考答案:#include void main() int i, j, k, n; printf (result is: ); for (n = 100; n 1000; n+) i = n / 100; j = (n - i *100) / 10; k = n % 10; if (n = i*i*i + j*j*j + k*k*k) printf (%d , n); printf (n);利用函数将给定的33二维数组转置。参考答案:#include stdio.h void convert(int array33)int i,j,k;for(i=0;i3;i+)for(j=i+1;j3;j+)k=arrayij;arrayij=arrayji;arrayji=k;void main() int i,j;int a33=1,2,3,4,5,6,7,8,9;printf(转换前:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(t%d,aij);printf(n);convert(a);printf(n转换后:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(t%d,aij);printf(n);编程输入a、b、c的值后,输出一元二次方程ax2+bx+c=0的解。参考答案:#include #include void main( ) float a, b, c,d, x1, x2; printf(input a,b,c: ); scanf(%f%f%f, &a, &b, &c); d = sqrt(b * b - 4 * a *c); x1 = (-b + d) / (2 * a); x2 = (-b - d) / (2 * a); printf(x1 = %.2f x2 = %.2fn, x1, x2);从键盘上输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数计算,并输出结果。参考答案:#include void main() float a, b; int tag = 0; char ch; float result; printf(input two number: ); scanf(%f%f, &a, &b); fflush(stdin); printf(input arithmetic lable(+ - * /): ); scanf(%c, &ch); switch(ch) case +: result = a + b; break; case -: result = a - b; break; case *: result = a * b; break; case /: if (!b) printf(divisor is zero!n); tag = 1; else result = a / b; break; default: printf(illegal arithmetic lablen); tag = 1; if (!tag) printf(%.2f %c %.2f = %.2、fn, a, ch, b, result);编写输入一个字符串,计算其中空格的个数。 采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的成绩。编写程序,逆转字符串。 编写程序,统计一个英语文本中的英语单词个数。21. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。参考答案:#include “stdio.h”void main()int i,j,k,n;for(i=1;i=9;i+)for(j=0;j=9;j+)for(k=0;k=9;k+)if(i*i、*i+j*j*j+k*k*k=i*100+j*10+k)n=i*100+j*10+k;printf(n=%dn,n);22有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。参考答案:#include stdio.hmain()int n,t,number=20;float a=2,b=1,s=0;for(n=1;n=number;n+)s=s+a/b;t=a;a=a+b;b=t;printf(sum is %9.6fn,s);23找出101200中所有的素数。参考答案:#include #include int isprimer(int n)int
编写程序,一个数如果刚好与它所有的因子之和相等,则称该数为“完数”,如:6=1+2+ 3,则6就是一个完数。求5~500之间的完数的个数。
下面的程序执行时,可以从键盘输入一个正整数,然后把该数的每位数字按逆序输出。例如:输入7685,则输出5 8 6 7;输人1000,则输出0 0 0 1。请填空。 Private Sub Command1_Click Dim x As Integer X=InputBox(“请输入一个正整数”) While x> 【11】 Print x Mod 10; x=x\10 Wend Print 【12】 End Sub
程序PROGl.G的功能是:寻找并输出ll至999之间的数m,它满足m、m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如l21,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请考生编制函数int JsValue(long m)实现此功能,如果是回文数,则函数返回l,反之则返回0。最后把结果输出到文件out.dat中。 注意:部分源程序存放在test.c文件中。 请勿改动主函数main。
以下程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,例如对于数字 12,有1*2<1+2,故不输出该数:对于27,有2*7>2+7,故输出该数。请填空。
include<iostream.h>
void main()
{
int n,k=1,s=o,m;
for (n=1:n<=100:n++=
{
k=1;s=0;
_____,
while( )
{
k*=m%10;s+=m%10;
(3) ;
下面程序的功能是:从输入的正整数中选3个数进行输出,要求这些数都是2的倍数,请填空。