华师C编程题库

编写一个求出找出所有水仙花数的程序,判断一个数是否是水仙花数由子函数完成,输出由主函数完成。

若一个三位正整数,若它的所有数字立方和等于该数本身,则为水仙花数。

例如 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)。


正确答案:步骤1:单击工具栏的[新建]按钮打开[新建]对话框在[文件类型]区中选择“程序”再单击[新建文件]。 步骤2:在程序编辑框里输入: SET TALK OFF CLEAR INPUT "请输入第1个数:" TO a STORE a TO max min FOR i=2 TO 15 INPUT "请输入第"+RIGHT(STR(i)2)+"个数:" TO a IF maxa max=a ENDIF IF min>a min=a ENDIF ENDFOR ? "最大值"max ? "最小值"min 步骤3:单击工具栏上的[保存]按钮将程序名命名为“maxprog”关闭命令窗口即可完成操作。
步骤1:单击工具栏的[新建]按钮,打开[新建]对话框,在[文件类型]区中选择“程序”,再单击[新建文件]。 步骤2:在程序编辑框里输入: SET TALK OFF CLEAR INPUT "请输入第1个数:" TO a STORE a TO max, min FOR i=2 TO 15 INPUT "请输入第"+RIGHT(STR(i),2)+"个数:" TO a IF maxa max=a ENDIF IF min>a min=a ENDIF ENDFOR ? "最大值",max ? "最小值",min 步骤3:单击工具栏上的[保存]按钮,将程序名命名为“maxprog”,关闭命令窗口即可完成操作。


( 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循环实现。运行该模块的结果如图所示。


正确答案:


编写程序,一个数如果刚好与它所有的因子之和相等,则称该数为“完数”,如:6=1+2+ 3,则6就是一个完数。求5~500之间的完数的个数。


正确答案:程序代码如下: CLEAR SET TALK OFF gs=0 FOR i=5 to 500 yzh=0 FOR j=1 to INT (i/2) IF i&j=0 yzh= yzh+j ENDIF ENDFOR IF yzh=i gs=gs+1 ENDIF ENDPOR ? Gs
程序代码如下: CLEAR SET TALK OFF gs=0 FOR i=5 to 500 yzh=0 FOR j=1 to INT (i/2) IF i&j=0 yzh= yzh+j ENDIF ENDFOR IF yzh=i gs=gs+1 ENDIF ENDPOR ? Gs


华师C编程题库“高级语言程序设计”编程题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

下面的程序执行时,可以从键盘输入一个正整数,然后把该数的每位数字按逆序输出。例如:输入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


正确答案:
void Base::fun ; virtual display==0;


程序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。


正确答案:
【审题关键句】回文数字。
【解题思路】
①定义长整型变量i、n,并分别赋给初值m、0(m的值等于主函数中m循环变量的值)。
②当变量i的值非零时,即m值不为0时,把n乘以l0加上i除以l0所得的余数的和赋给变量n,把i除以l0所得的商,赋给变量i。实现对整数i各位上的数字进行逆序排列。
③当退出while循环时,判断n是否等于m,如果两者相等,则说明参数m是回文,返回l,否则,不是回文,返回0。
【参考答案】


下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。 例如,输入一个整数27638496,函数返回值为64862。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序在文件BLANKl.C中。 不得增行或删行,也不得更改程序的结构!


正确答案:
【考点分析】
本题考查:已知某数,如何求该数各个位数值,已知各个位数值,如何表示该数;除法运算。
【解题思路】
填空l:定义变量t用来存放某数的各个位数值,此处判断t是否为偶数,即对2求余结果是否为0。填空2:将t作为x的个位数,原来x的各个位上升l位,即x=10*x+1。
填空3:每循环一次,通过除法运算,去掉数值最后一位。
【解题宝典】
如果知道某数n的各个位的数值,可以得到该数值fl,如n的个位为a、十位为b、百位为c,那么n=c*100+b*10+a。如果知道数值n,可以采用求余和除法操作来表示其各个位,如n%10(取个位)、n/lO(取十位),读者可以自己考虑一下,如果是三位数,如何提取各个位?四位数呢?


以下程序的功能是输出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) ;


正确答案:m-n m m/=10
m-n m m/=10


下面程序的功能是:从输入的正整数中选3个数进行输出,要求这些数都是2的倍数,请填空。


正确答案:

更多 “华师C编程题库” 相关考题
考题 问答题编一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153=1*1*1+5*5*5+3*3*3,所以153是“水仙花数”。正确答案:inta,i,j,k;for(a=100;a<=999;a++){i=a%10;k=a/100;j=a%100/10;if(a==Math.Pow(i,3)+Math.Pow(j,3)+Math.Pow(k,3))Console.WriteLine("{0}是水仙花数",a);解析:暂无解析

考题 编一个程序,输入一个正整数n,把它转换为二进制数,并输出。提示:应该利用数组。正确答案:int[]a=newint[80];inti,j,n=0;while(n<=0){Console.WriteLine("请输入一个正整数:");n=int.Parse(Console.ReadLine());}i=0;Console.Write("/n正整数{0}转换为二进制数:",n);while(n>0){a[++i]=n%2;n=n/2;}for(j=i;j>0;j--)Console.Write(a[j]);Console.WriteLine();

考题 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。正确答案:public class lianxi03{public static void main(String[]args){int b1,b2,b3; for(int m=101;m<1000;m++){b3=m/100;b2=m%100/10;b1=m%10;if((b3*b3*b3+b2*b2*b2+b1*b1*b1)==m){System.out.println(m+"是一个水仙花数");}}}}

考题 编一个程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153=1*1*1+5*5*5+3*3*3,所以153是“水仙花数”。正确答案:inta,i,j,k;for(a=100;a<=999;a++){i=a%10;k=a/100;j=a%100/10;if(a==Math.Pow(i,3)+Math.Pow(j,3)+Math.Pow(k,3))Console.WriteLine("{0}是水仙花数",a);

考题 问答题所谓“回文数”是指读一个自然数,从正方向读和反方向读,结果是一样的。例如:646,1551,891232198都认为是回文数。编一个程序,输入一个正整数,判定它是否为回文数。当输入的数为0时,则退出程序,否则继续循环执行程序。正确答案:ints,k;inti,j;int[]a=newint[20];boolpos;while(true){s=-1;while(s<0){Console.Write("请输入一个正整数或者只按一个数字0:");s=int.Parse(Console.ReadLine());if(s==0)return;}k=s;pos=true;i=-1;while(k>0){i++;a[i]=k%10;k=k/10;}//注意:数组a的长度为(i+1)for(j=0;j<(i+1)/2;j++)if(a[j]!=a[i-j]){pos=false;break;}if(pos)Console.WriteLine("{0}是回文数。",s);elseConsole.WriteLine("{0}不是回文数。",s);}解析:暂无解析

考题 编一个程序,输入一个整数,使用ifelse语句,如果该数大于0,则加上100,否则加上500,输出结果。正确答案:inti,j;Console.WriteLine("请输入一个整数");i=int.Parse(Console.ReadLine());if(i>0){j=i+100;Console.WriteLine("{0}>0,最后结果是{1}",i,j);}else{j=i+500;Console.WriteLine("{0}<0,最后结果是{1}",i,j);

考题 问答题编一个程序,输入一个整数,使用ifelse语句,如果该数大于0,则加上100,否则加上500,输出结果。正确答案:inti,j;Console.WriteLine("请输入一个整数");i=int.Parse(Console.ReadLine());if(i>0){j=i+100;Console.WriteLine("{0}>0,最后结果是{1}",i,j);}else{j=i+500;Console.WriteLine("{0}<0,最后结果是{1}",i,j);解析:暂无解析

考题 通过键盘输入一个高精度的正整数n(n的有效位数≤240),去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。 【样例输入】 178543 S=4 【样例输出】 13正确答案:为了尽可能地逼近目标,我们选取的贪心策略为:每一步总是选择一个使剩下的数最小的数字删去,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字,否则删除第一个递减区间的首字符。然后回到串首,按上述规则再删除下一个数字。重复以上过程s次,剩下的数字串便是问题的解了。具体算法如下:输入s,n;while(s>0){i=1; //从串首开始找while(i{i++;}delete(n,i,1); //删除字符串n的第i个字符s--;}while(length(n)>1)&&(n[1]=‘0’)delete(n,1,1); //删去串首可能产生的无用零输出n;

考题 所谓“回文数”是指读一个自然数,从正方向读和反方向读,结果是一样的。例如:646,1551,891232198都认为是回文数。编一个程序,输入一个正整数,判定它是否为回文数。当输入的数为0时,则退出程序,否则继续循环执行程序。正确答案:ints,k;inti,j;int[]a=newint[20];boolpos;while(true){s=-1;while(s<0){Console.Write("请输入一个正整数或者只按一个数字0:");s=int.Parse(Console.ReadLine());if(s==0)return;}k=s;pos=true;i=-1;while(k>0){i++;a[i]=k%10;k=k/10;}//注意:数组a的长度为(i+1)for(j=0;j<(i+1)/2;j++)if(a[j]!=a[i-j]){pos=false;break;}if(pos)Console.WriteLine("{0}是回文数。",s);elseConsole.WriteLine("{0}不是回文数。",s);}

考题 PLC的I/O点数是指PLC的外部()。A、输入端子数B、输出端子数C、输入和输出端子数D、用户程序储存容量正确答案:C