編寫一個(gè)程序,用c語言函數(shù),但不能用指針
編寫一個(gè)程序完成“菜單”功能,。提供三種選擇途徑:其一是求水仙花數(shù)(所謂水仙花數(shù)是指三位整數(shù)的各位上的數(shù)字的立方和等于該整數(shù)本身,。例如,,153就是一個(gè)水仙花數(shù):153=13+53+33),,找出100-999之間的所有水仙花數(shù),。其二是找出素?cái)?shù),找出2-n之間的所有素?cái)?shù),。其三是求Faibonacci數(shù)列前n項(xiàng)的值,。
#include<stdio.h>#include<math.h>//保存三位數(shù)的每一位int numArr[3];//判斷是否是水仙花數(shù)int funA(int num){int temp=num,sum=0,count=0;while(temp!=0){sum+=pow(temp%10,3);numArr[count]=temp%10;count++;temp/=10;}return num==sum?1:0;}//判斷是否是質(zhì)數(shù)int funB(int num){int i,count=0;for(i=1;i<=num;i++){if(num%i==0){count++;}}return num>1&&count<3?1:0;}//求Faibonacci數(shù)列中的任意一項(xiàng)int funC(int num){if(num==1||num==2){return 1;}else{return funC(num-1)+funC(num-2);}}//找100-999之間的水仙花數(shù)void findA(){int i;for(i=100;i<=999;i++){if(funA(i)==1){ printf("%d=%d的立方+%d的立方+%d的立方",i,numArr[2],numArr[1],numArr[0]);}}}//輸出2-n之間的質(zhì)數(shù)void findB(){int i,n;printf("請輸入一個(gè)大于2的整數(shù):");scanf("%d",&n);if(n<2){printf("必須輸入一個(gè)大于2的整數(shù)!");findB();}else{printf("2到%d之間的質(zhì)數(shù)有:",n);for(i=2;i<=n;i++){if(funB(i)==1){printf("%d ",i);}}}printf("");}//求Faibonacci數(shù)列中的前N項(xiàng)void findC(){int i,n;printf("請輸入一個(gè)大于等于1的整數(shù):");scanf("%d",&n);if(n<1){printf("必須輸入一個(gè)大于等于1的整數(shù)!");findC();}else{printf("Faibonacci數(shù)列的前%d項(xiàng)分別是:",n);for(i=1;i<=n;i++){printf("%d ",funC(i));}}printf("");}void showMenu(){int choose=0; printf("1.輸出100-999之間的所有水仙花數(shù)"); printf("2.輸出2-n之間的所有素?cái)?shù)"); printf("3.輸出Faibonacci數(shù)列前n項(xiàng)"); printf("========================================"); printf("請輸入你的選擇(1-3):"); scanf("%d",&choose); if(choose==1){ findA(); }else if(choose==2){ findB(); }else if(choose==3){ findC(); }else{ printf("你的輸入不正確,請重新輸入!"); showMenu(); }}void main(){showMenu();}