当前位置:编程学习 > C/C++ >>

C语言输入问题

#include<stdio.h> int main() {char 易做图,sports,diet; float h,f,m; printf("please enter your father's height and your mother'height:\n"); scanf("%f%f",&f,&m); printf("please enter your 易做图(F or M):\n"); 易做图=getchar(); printf("If you like sports(Y or N):\n"); sports=getchar(); printf("If you have good diet(Y or N):\n"); diet=getchar(); if(易做图=='F') h=(f*0.923+m)/2; else h=(f+m)*0.54; if(sports=='Y') h=h*1.02; if(diet=='Y') h=h*1.015; printf("your height:%f\n",&h); return 0; } 问:输入完 father's height and your mother'height后为什么直接到了输入If you like sports(Y or N):跳过了SEX,最后If you have good diet又跳过了输入。。直接就结果了。。。
答案:// 函数的使用有点小问题即 getchar 和getch 区别就是是否等待回车按键
#include<stdio.h>
#include <conio.h>
int main()
{char 易做图,sports,diet;
 float h,f,m;
printf("please enter your father's height and your mother'height:\n");
scanf("%f%f",&f,&m);
printf("please enter your 易做图(F or M):\n");
易做图=getch();
printf("If you like sports(Y or N):\n");
sports=getch();
printf("If you have good diet(Y or N):\n");
diet=getch();
if(易做图=='F')
  h=(f*0.923+m)/2;
else
  h=(f+m)*0.54;
if(sports=='Y')
  h=h*1.02;
if(diet=='Y')
h=h*1.015;
printf("your height:%f\n",&h);
return 0;
}
其他:不动明王,即不动尊菩萨,其名号梵音为Acalanatha,意为不动尊或无动尊,教界称为“不动明王”,亦谓之不动使者。“不动”,乃指慈悲心坚固,无可撼动,“明”者,乃智慧之光明,“王”者,驾驭一切现象者。
[编辑本段]不动明王介绍
  依密教三轮身之分类而总判,不动明王为一切诸佛教令轮身,故又称为诸明王之王,五大明王之主不动明王尊。就金刚胎藏两部而分别其德,五方佛,各有三轮身。中央毗如遮那佛为自性轮身,金刚般若蜜多菩萨为正身,不动明王为教令轮身。所以不动明王是奉大日如来教令,示现忿怒形降伏一切恶魔之大威势明王。他的身相是对那些顽固不化、执迷不误、受魔障遮蔽的众生而变化的,以喝醒众生和吓退魔障。   不动明王其誓愿为“见我身者发菩提心,闻我名者断恶修善,闻我法者得大智能,知我心者即身成佛。”威力甚大,不论汉地佛教或藏传佛教,都重视修习本尊法门,又被称作大威力不动明王或常住金刚。   不动明王为佛教密宗八大明王首座,具有在遇到任何困难的时候,均能扫除障难,并不为动摇之意。不动明王显现愤怒像,使侵扰众生之邪魔畏惧而远离,使众生于修行路上不致动摇善念菩提心。   不动尊菩萨是理性的象征,能够默默保护您,能使您在人生的道路上知错知过,把握人生的每一次机遇,很好的利用自身的智慧,应付种种困境,使您事业有成,家庭幸福,吉祥如意。   不动明王法像形象介绍
  不动明王周身呈现青蓝色,右手持智慧剑,左手拿金刚索,右眼仰视,左眼俯视,周身火焰。一般都以愤怒的形象示人,表示驱魔斩鬼无往不前。而不动明王有两臂、四臂、六臂多个形象,但大多以两臂形象示人。其动作形象的来源主要是由印度教的湿婆(佛教称:大自在天)的忿怒形象而来,多做舞蹈相,立相。
不动明王是属鸡人的本命佛
  不动尊菩萨是属鸡人的本命佛,是理性的象征,能够默默保护您,能使您在人生的道路上知错知过,把握人生的每一次机遇,很好的利用自身的智慧,应付种种困境,使您事业有成,家庭幸福,吉祥如意。因此鸡年生人,若能虔诚佩戴或供奉不动尊菩萨之本命佛法像,必能受不动明王守护,使罪业远离,一生顺利,平安如意。   《法苑珠林》引《大集经》言:“阎浮堤外,四方海中,有十二兽,并是菩萨化导,人道初生,当菩萨住窟,即属此兽护持、得益,故汉地十二辰依此行也。……” “其所以分配之义,则《旸谷漫录》言之颜详。据之,子、寅、辰、午、戌、俱阳,故取相属之奇数以为名的鼠、虎、龙、猴、狗皆五指,而马单蹄也;丑、卯、巳、未、酉、亥属阴,故取相属之偶数以为名的牛、羊、鸡、猪皆四爪,兔两爪,蛇两舌也。”   据佛经记载,该十二兽即是现在的十二生肖,他们均有相应的一位菩萨化导、护持。这就是信众所称的本命佛,是千年以来人们所供奉的易做图善神!“本命佛”是与十二生肖者磁场最接近、感应力最强的佛。诚心信奉,本命佛的灵体自然旺盛,能使众生逢凶化吉、事业顺利、健康平安、家庭如意。   属鼠本命佛:千手观音菩萨   属牛本命佛:虚空藏菩萨   属虎本命佛:虚空藏菩萨   属兔本命佛:文殊菩萨   属龙本命佛:普贤菩萨   属蛇本命佛:普贤菩萨   属马本命佛:大势至菩萨   属羊本命佛:大日如来   属猴本命佛:大日如来   属鸡本命佛:不动尊菩萨   属狗本命佛:阿弥陀佛   属猪本命佛:阿弥陀佛
[编辑本段]五大明王
  不动明王   降三世明王   军荼利明王   大威德明王   金刚夜叉明王
[编辑本段]不动明王真言
  不动尊菩萨真言:南无-三曼多-伐折罗-赧-含
[编辑本段]不动明王降魔咒
  咒曰:“囊摩悉底 悉底 苏悉底 悉底伽罗 罗耶俱琰 参摩摩悉利 阿阇么悉底娑婆诃”   若颂此咒,可避降头、蛊毒、下符等,修行者,若达某程度,“天魔”、“鬼神”必定现前,颂此咒,消除上述等灾难。
[编辑本段]不动明王心咒
  南无三曼多哇日啰赧憾南无三曼多哇日啰赧憾南无三曼多哇日啰赧憾南无没钴三曼多南无没钴三曼多南无没钴三曼多南无没钴三曼多
[编辑本段]不动明王印
  双手食、中二指伸出,右手握于左手手心。
[编辑本段]佛教守护神
  佛教《大集经》:阎浮堤外,四方海中,有十二兽,并是菩萨化导,人道初生,当菩萨住窟,即属此兽护持、得益,故汉地十二辰(十二生肖)依此行也。而不动明王就是其佛教八大守护神之一,对应的汉地十二辰为鸡。所以在中国属鸡的人也佩戴“不动明王”法相作为守护神、本命佛。
[编辑本段]不动明王详细解说
一、详述
  火焰是不动明王的化身。许多寺庙里,比如日本(密宗),不动明王的造型身后一定会在身后被雕刻上火焰。中央毗如遮那佛为自性轮身,金刚般若蜜多菩萨为正**身,不动明王为教令轮身。所以不动明王是奉大日如来(大日如来的梵音是摩诃毗如遮那佛,摩诃译为大,毗如遮那译为光明遍照,故中文别称大日如来)教令,示现忿怒形降伏一切恶魔之大威势明王。表面看来,大日如来,金刚般若蜜多菩萨,不动明王,是三尊不同的个体。而实际上,却是诸佛总体的身、口、意三密,次等显现,即身密是大日如来,语密是金刚般若蜜多菩萨,意密是不动明王。即使是大日如来与释迦牟尼佛,也是如此,只不过是法身佛与应身佛之不同示现罢了.不动明王。他是明王之中最重要的尊格,被称为不动尊或无动尊,与观音和地藏菩萨并列,成为民间佛像的三大主尊。   不动明王居于五大明王中心位置,亦即居于首位,另四尊明王围绕在他身边。不动明王和大日如来关系密切,被视为大日如来的化身或使者。易做图大多数不动明王的造像都是三头六臂或一面八臂的忿怒尊,右手拿剑,左手握罗索,而且多是坐像,少有立像,是沿袭了印度教的忿怒尊的湿婆神的信仰。   密教诸尊,依三轮身之分类而总判之:则大日如来为一切诸尊之总体,为自性轮身,而此尊为一切诸佛之教令轮身。故又称为诸明王之王, 此尊于大日华台虽久已成佛,而以其本誓之故.现初发心之形,为如来之童仆而给使诸务,且给使于真言行者,故称使者。使者即使役于人之义也。不动使者,不动即使者而非不动者,不动之使者如二童子,八大童子等(是约于胎藏界)。 不动明王是大日如来的教令轮身, 降魔时示现的忿怒身,也是诸佛意的化身。 他的身相是对那些顽固不化、执迷不误、 受魔障遮蔽的众生而变化的,以喝醒众生和吓退魔障。 在五方佛示现的五大明王中,不动明王居首位。 其誓愿为“见我身者发菩提心, 闻我名者断恶修善,闻我法者得大智慧,知我心者即身成佛。”威力甚大,不论汉地佛教或藏传佛教, 都重视修习本尊法门,又被称作大威力不动明王或常住金刚。   不动明王的形象为一脸二臂,发垂披肩,愁眉瞠目,嘴角两侧露出两虎牙,现大忿怒相,上衣斜帔,下着摆裙,右手持剑,左手提索,以童子相站姿安立周身智慧烈焰中,造型特殊,显示此不动明王更具积极性与行动力。不动明王久以证得大光明遍照,已登大日华台,因其三昧耶本誓愿,而示现初发心时诸相不备之形,为如来之童仆,而执行诸务。不动明王身相亦有二臂,四臂或六臂的, 藏密崇奉的多为二臂像。全身青蓝色,表法性不变。 腰围虎皮裙,三眼红圆。右眼仰视,表示能捆住天子魔; 左眼俯视,表示烧毁龙魔和非天; 额眼平视,表示降伏夜叉和罗刹。脖子上挂着一条蛇, 表示除根本烦恼之"瞠心”以五骷髅及不动佛为饰,表消除一切恶障。全身以八大龙王为饰。右手高举着龙剑,左手拿系杵的金刚索以勾缚魔。右腿弓,左屈膝着地,于莲花月轮宝座上。,修习此尊法,可断除烦恼所生的一切障碍,施一切欲求如愿,顺利修成佛果之道。而其忿怒相,是大慈悲的显现,就如同父母对其顽劣不化的子女,以忿怒方法予以易做图,其动机是“慈爱”而非毁灭,因此可以说比祥和寂静之示现,更具慈悲力。右手持的剑,非一般的刀剑,乃是智慧之剑,能断烦恼之根,左手所提绢索,是用来易做图一切恶魔,而最大的恶魔,是我执魔也,所以其内在的密意,不在降伏外在的恶魔,而是以智慧力为武器,来降伏自己内在的“魔”。而魔之真实意思应为“磨”,并非一般人口中的魔。“魔”之所以为“磨”,完全是因为执着这个“自我”在作祟,所以一切外在的障碍、痛苦是来自于内在的障碍与执着,只要降伏了内心,则外在的一切将得到净化。
二、补遗
  据大日经疏卷五载,此尊坐盘石座,呈童子形。顶上有七髻,辫发垂于左肩,左眼细闭,下齿啮上唇,现忿怒相,背负猛火,右手持利剑,左手持罥索,作断烦恼之姿。此外,另据底哩三昧耶不动尊威怒王使者念诵法、金刚顶瑜伽护摩仪、一切如来金刚三业最上秘密大教王经卷三等载,另有一面四臂、四面四臂、三面二臂等种种形像,亦有从仪轨而来之密教图像,但以自由创作之杰作为多。   眷属除衿羯罗、制咤迦二童子侍立外,并有八大童子,即上记二童子外,另有慧光菩萨、慧喜菩萨、阿耨达罗菩萨、指德菩萨、乌俱婆哦童子、清净比丘等。又胜军不动明王四十八使者秘密成就仪轨载,其眷属有俱哩迦罗龙王乃至一切诸神王等四十八使者;圣不动经载有矜迦罗、制咤迦、不动慧等三十六童子为侍者。   据大日经卷四密印品载,其印契以左手为拳,舒展中指、食指,以拇指加于小指、无名指之上;伸右手食指、中指,入于左手掌中,亦以拇指加于无名指、小指之上。此外,不动立印轨、不动使者法、底哩三昧耶经等另举出根本秘密印乃至三钴金刚印等十四根本印。 SCANF连 回车也算进去了 


用 getchar();接收掉


#include<stdio.h>
int main()
{
	char 易做图,sports,diet;
	float h,f,m;
	printf("please enter your father's height and your mother'height:\n");
	scanf("%f%f",&f,&m);
	getchar();
	printf("please enter your 易做图(F or M):\n");
	易做图=getchar();
	getchar();
	printf("If you like sports(Y or N):\n");
	sports=getchar();
	getchar();
	printf("If you have good diet(Y or N):\n");
	diet=getchar();
	getchar();

	if(易做图=='F')
		h=(f*0.923+m)/2;
	else
		h=(f+m)*0.54;
	if(sports=='Y')
		h=h*1.02;
	if(diet=='Y')
		h=h*1.015;
	printf("your height:%f\n",&h);
	return 0;
} 易做图=getchar();取到的是你上一次输入的那个回车,在些前添加fflush(stdin)清空一下输入缓冲区就可以了 一般模式下,输入getchar是以回车结束,有个输入缓冲区,会保存你输入的字符和回车符,那么如果你下次再用c = getchar();得到的不是你输入的字符,是回车符。再一次gechar就可以把上一次的回车符给去掉.

下面有部分解释:
getchar()有一个让人很头疼的特点,这也导致了很多人不喜欢用它……
它会向终端缓存要求一个字符,如果缓存里没有这个字符它就会等待用户输入,于是在用户没有任何多余的输入的情况下,每一次调用它都会等待用户输入一个字符,但是并不是用户输入一个字符它就停止等待了,它的等待是以回车确认作为等待的终止条件的,也就是说,用户可以在回车之前输入n个字符,但是它只会返回第一个字符,其它的所有字符都会保留在终端缓存中,当下一次再执行getchar()的时候,才会从终端缓存中取出并返回这个字符……
由于每一次输入一个字符的时候都要按回车确认以终止等待,所以在缓存中将会存留一个回车,如果不再执行一次取出这个回车,它可能会影响到下一次的输入……
但是往往这不是处理事情的最好方式,因为,用户可能并不是输入一个字符加一个回车,用户可能会输入更多字符和一个回车,这时,这种处理方式反而会得到一种反效果,因为用户可能希望将所有的字符放在一起输入,这时,下一次getchar将是第一次输入中的下一个字符而不再产生等待,而这种处理方式不仅不会去除掉最后的回车(因为此时的回车不再是下一个字符了,而是在整个字符串的最后),反而会使得字符串中下一个字符的输入丢失……
所以getchar的这个特点使得它在实际应用中大受限制,仅仅会在编程学习中发挥一定的作用……同时scanf也有类似的弊病,比如说在请求数字的时候输入字符串之后程序所有的请求数字的scanf将会得到一连串奇怪的返回值……
等等这些在处理复杂的输入时将会使人很头疼……
常用的办法是使用conio.h中的getch()编写自己想要的输入,这个函数只会等待一个字符,而不会等待回车…… #include"stdio.h"
#include "conio.h"
#include "ctype.h"
/*想要像你说的那样的话,就必须动态申请内存,
 *不过我为了写法的简便,暂定说你输入的行数不超过10
 *每行的个数不超过10,,这样我就能用数组b[][]来写
 */
main()
{
    /*输入一个数,如果该数不是正常输入,退出*/
    char c=NULL,ch=NULL;
    int a=NULL,b[10][10]=,icount=NULL,temp=NULL,i=NULL,j=NULL;
    printf("input line number:");
    scanf("%d",&a);
    if(NULL==a||a>10){
        printf("input error && exit(1)!\n");
        system("pause");
        exit(1);
    }
    printf("you input number is %d\n",a);

    /*对于输入流清空,防止出错*/
    while ((c=getchar()) != '\n'&&c!=EOF){};

    /*此处就是你的输入有几行,我的写法简便,
     *你可以用动态内存申请来写
     */
    for(icount=0;icount<a;icount++){
        i=0;
        printf("please input the first data:");

        /*得到输入值,判断是否为数字*/
        while((ch = getche()) != EOF && isdigit(ch)){
            i = 10 * i + ch - 48;
        }
        /*进行判断,如果为0,说明输入的是字母  &&isdigit(ch)||ch==32  10*/
        if(0==i){
            printf("\nchar input 4 data:");
            b[icount][0]=ch;
            scanf("%d %d %d %d",&b[icount][1],&b[icount][2],&b[icount][3],&b[icount][4]);
        }else if(0<i<10){

            printf("\ndigit input %d data:",i);
            temp=1;
            j=0;
            while((ch = getche())!=EOF){
                if(ch==32||ch==10){
                    printf("| ");
                    temp++;
                    if(temp>i){
                        break;
                    }
                    j=0;
                    continue;
                }
                if(isdigit(ch)){
                    j= 10 *j+ ch - 48;
                    b[icount][temp]=j;
                }
            }
            printf("\n");
        }else{
            printf("\nerror input&&exit(1)");
            system("pause");
            exit(1);
        }
    }
    system("pause");
}

上一个:C语言程序设计题 中间不会写
下一个:c语言函数习题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,