1、从键盘输入两个整数,求出最大数并输出。
解:
解法1:
⑴编程思路:
①首先定义变量,x,y存储两个整数,max存储求出的最大数。
②用输入语句输入变量x,y的值。
③若x>y,则变量max取x的值,否则取y的值。
④输出求得的变量max的值。
⑵源程序:
main()
注意:
①else之后不能直接写条件,如不能写作else(x
解法2:
⑴编程思路:
同解法1。
⑵源程序:
main()
2、从键盘输入一个实数,求其绝对值并输出。
解:
解法1:
⑴编程思路:
①首先定义变量,x存储该实数,y存储其绝对值。
②用输入语句输入变量x的值。
③若x>0,则变量y取x的值,否则取-x的值。
④输出求得的变量y的值。
⑵源程序:
main()
解法2:
⑴编程思路:
①首先定义变量x,先存储该实数,后存储其绝对值。
②用输入语句输入变量x的值。
③若x
④输出求得的变量x的值。
⑵源程序:
main()
3、从键盘输入x的值,求y的值并输出。
解:
解法1:
采用三条平行的if语句分别求值,每条if语句对应于一种情况(一个分支)。
⑴编程思路:
①首先定义变量x, y。
②用输入语句输入变量x的值。
③若x>0,则变量y取1;若x=0,则变量y取0;若x
④输出求得的变量y的值。
⑵源程序:
main()
注意:
①if(x==0)不能写作if(x=0),因为后者表示赋值,x的值总为,即条件总为假。
②在一组平行的if语句中,不管前边的if语句条件是真是假,后边的if语句总要执行。
解法2:
采用嵌套的if语句分别求值,共分为三种情况(三个分支)。
⑴编程思路:
①首先定义变量x, y。
②用输入语句输入变量x的值。
③若x>0,则变量y取1;否则若x=0,则变量y取0;否则若x
④输出求得的变量y的值。
⑵源程序:
main()
注意:
①在两个嵌套的if语句中,只有前边的if语句条件是假(或者是真),后边的if语句才会执行。
4、从键盘输入三个整数,求出最大数并输出。
解:
解法1:
⑴编程思路:
①首先定义变量,a,b,c存储三个整数,max存储求出的最大数。
②用输入语句输入变量a,b,c的值。
③先求出前两个数中的最大数,并存入变量max中。若a>b,则max取a的值,否则取b的值。
④再用第三个数与前两个数中的最大数比较,求出三个数中的最大数,并存入变量max中。若c>max,则max取c的值,否则max保持不变。
⑤输出求得的变量max的值。
⑵源程序:
main()
解法2:
利用条件运算符求出三个数中的最大数。
⑴编程思路:
同解法1。
⑵源程序:
main()
解法3:
⑴编程思路:
①首先定义变量,a,b,c存储三个整数,max存储求出的最大数。
②用输入语句输入变量a,b,c的值。
③若a>b同时a>c,则max取a的值。若b>a同时b>c,则max取b的值。若c>a同时c>b,则max取c的值。
④输出求得的变量max的值。
⑵源程序:
main()
注意:
①因为该程序中的三个条件是互相排斥的,即只有第一个条件为假时,才需要判断第二个条件;只有前两个条件均为假时,才需要判断第三个条件,故可以用三个嵌套的if语句进行判断。
②同时因为三个条件是相互独立、互不依赖的,故也可以用三个平行的if语句进行判断。
5、从键盘输入两个数,然后按升序输出。
解:
解法1:
⑴编程思路:
①首先定义变量,a,b存储两个数,t作为交换a,b的中间变量。
②用输入语句输入变量a,b的值。
③若a>b,则将变量a,b的值相交换,以保证a的值较小,b的值较大。
④按照先a后b顺序输出两个变量的值。
⑵源程序:
main()
printf("%f,%f\n",a,b);
}
注意:
①用于交换变量a,b值的三条赋值语句,必须括起来作为一条复合语句。即当条件为真时,三条赋值语句都执行;当条件为假时,三条赋值语句都不执行。
解法2:
⑴编程思路:
①首先定义变量a,b,用于存储两个数。
②用输入语句输入变量a,b的值。
③若a
⑵源程序:
main()
6、从键盘输入三个整数,按升序排序后输出。
解:
⑴编程思路:
①首先定义变量,a,b,c存储两个数,t作为交换a,b,c的中间变量。
②用输入语句输入变量a,b,c的值。
③若a>b,则将变量a,b的值相交换,以保证a的值较小,b的值较大。
④若a>c,则将变量a,c的值相交换,以保证a的值较小,c的值较大。此时变量a的值最小。
⑤若b>c,则将变量b,c的值相交换,以保证b的值较小,c的值较大。此时变量a的值最小,变量b的值次之,变量c的值最大。即a,b,c已按升序排序。
⑥输出变量a,b,c的值。
⑵源程序:
main()
/*三条赋值语句必须括起来*/
if(a>c) /*三条if语句相互平行*/
printf("a=%d,b=%d,c=%d\n",a,b,c); }
注意:
①用于交换两个变量值的三条赋值语句,必须括起来作为一条复合语句。即当条件为真时,三条赋值语句都执行;当条件为假时,三条赋值语句都不执行。
②因为后面的两个判断不应依赖于其前边判断,故必须用三个平行的if语句进行判断。
6、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母,否则保持不变。
解:
解法1:
⑴编程思路:
①首先定义变量,ch1用于存储输入的字符,ch2用于存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch1。
③若ch1>='a'&&ch1
④最后输出ch2的值。
⑵源程序:
#include
main()
注意:
①if(ch1>='a'&&ch1
解法2:
⑴编程思路:
①首先定义变量ch,先存储输入的字符,后存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch。
③若ch>='a'&&ch
④最后输出ch的值。
⑵源程序:
#include
main()
7、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母;若为大写字母,则转化为相应的小写字母,否则保持不变。
解:
解法1:
⑴编程思路:
①首先定义变量,ch1用于存储输入的字符,ch2用于存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch1。
③若ch1>='a'&&ch1='A'&&ch1
④最后输出ch2的值。
⑵源程序:
#include
main()
注意:
①因为只有ch1不是小写字母时,才需要判断ch1是不是大写字母,故第二个if语句应嵌套在第一个if语句的else子句中。
②若第二个if语句与第一个if语句平行(即第二个if语句之前无else),则第二个if语句中的else仅否定第二个条件ch1>='A'&&ch1
解法2:
⑴编程思路:
①首先定义变量ch,先存储输入的字符,后存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch。
③若ch>='a'&&ch='A'&&ch
④最后输出ch的值。
⑵源程序:
#include
main()
注意:
①因为只有ch不是小写字母时,才需要判断ch是不是大写字母,故第二个if语句应嵌套在第一个if语句的else子句中。
②若第二个if语句与第一个if语句平行(即第二个if语句之前无else),则当输入一个小写字母(如’f’)时,先执行第一个if语句,因ch1>='a'&&ch1='A'&&ch1
8、从键盘输入一个字符,若为小写字母,则转化为相应的大写字母;若为大写字母,则转化为相应的小写字母;否则转化为ASCII码表中的下一个字符。
解:
解法1:
⑴编程思路:
①首先定义变量,ch1用于存储输入的字符,ch2用于存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch1。
③若ch1>='a'&&ch1='A'&&ch1
④最后输出ch2的值。
⑵源程序:
#include
main()
注意:
①第二个if语句应嵌套在第一个if语句的else子句中,而不能与第一个if语句平行。
解法2:
⑴编程思路:
①首先定义变量ch,先存储输入的字符,后存储转化之后的字符。
②用输入语句输入一个字符并存入变量ch。
③若ch>='a'&&ch='A'&&ch
④最后输出ch的值。
⑵源程序:
#include
main()
注意:
①第二个if语句应嵌套在第一个if语句的else子句中,而不能与第一个if语句平行。
9、从键盘输入两个整数及一个运算符,分别求出其和差积商并输出。
(其中运算符在两个整数之间输入)
解法1:
⑴编程思路:
①首先定义变量,a,b存储两个整数,s存储两个整数的运算结果,ch存储运算符。
②用输入语句输入变量a,b,ch的值。
③若ch为加号,则s=a+b;若ch为减号,则s=a-b;若ch为乘号,则s=a*b;若ch为除号,则s=a/b。
④最后输出变量s的值。
⑵源程序:
main()
注意:
①因为四个判断相互排斥、互不依赖,故既可以采用嵌套的if语句进行判断,也可以采用平行的if语句进行判断。
解法2:
⑴编程思路:
同解法1。
⑵源程序:
main()
解法3:
⑴编程思路:
同解法1。
⑵源程序:
main()
printf("s=%d\n",s);
}
10、从键盘输入一个百分制分数,将其转化为等级分输出。
解法1:
利用嵌套的if语句进行判断选择。
⑴编程思路:
①首先定义变量,score存储输入的百分制分数,ch存储转化后的等级分。
②用输入语句输入变量score的值。
③若score=90,则ch赋值为'A';否则,若score>=80,则ch赋值为'B';否则,若score>=70,则ch赋值为'C';否则,若score>=60,则ch赋值为'D';否则,若score>=0,则ch赋值为'E'。
④最后输出变量ch的值。
⑵源程序:
main()
注意:
①因为后面的判断依赖于前面的判断,故必须采用嵌套的if语句进行判断。
解法2:
利用平行的if语句进行判断选择。
⑴编程思路:
①首先定义变量,score存储输入的百分制分数,ch存储转化后的等级分。
②用输入语句输入变量score的值。
③若score=90,则ch赋值为'A';若score=80,则ch赋值为'B';若score=70,则ch赋值为'C';否则,若score=60,则ch赋值为'D';score=0则ch赋值为'E'。
④最后输出变量ch的值。
⑵源程序:
main()
注意:
①因为后面的判断不依赖于前面的判断,故可以采用平行的if语句进行判断。同时由于后面的判断条件与前面的判断条件相互排斥,故也可以采用嵌套的if语句进行判断。
解法3:
利用switch语句进行判断选择。
⑴编程思路:
①首先定义变量,整型变量g存储输入的百分制分数,ch存储转化后的等级分。
②用输入语句输入变量g的值。
③通过g除以10(整除),将一个百分制分数转化为一个到10之间的整数。而且同一个分数段将转化为同一个整数,如90到99均转化为9。
④利用switch语句根据表达式g/10的值,跳转到相应的分支执行,求出变量ch的值。
⑤最后输出变量ch的值。
⑵源程序:
main()
printf("Grade is %c\n",ch);
}
注意:
①当g=100时,跳转到case 10。但因此处无break语句,故继续向下执行case 9之后的语句。
解法4:
利用switch语句进行判断选择。
⑴编程思路:
①首先定义变量,实型变量g存储输入的百分制分数,ch存储转化后的等级分。
②用输入语句输入变量g的值。
③通过将实型变量g强制取整再除以10(整除),将一个百分制分数,转化为一个到10之间的整数。而且同一个分数段将转化为同一个整数,如90到99均转化为9。
④利用switch语句根据表达式(int)g/10的值,跳转到相应的分支执行,求出变量ch的值。
⑤最后输出变量ch的值。
⑵源程序:
main()
printf("Grade is %c\n",ch);
}
注意:
①因为此程序中g为实型变量,故必须将g强制取整之后再除以10,以保证相除的商为到10之间的整数。
11、已知方程ax2+bx+c=0的系数值(设a≠),求方程的根。
解:
⑴编程思路:
①首先定义变量,其中a,b,c存储方程的三个系数值,d,p,q存储中间结果,x1,x2存储方程的两个根。
②用输入语句输入变量a,b,c的值。
③若b2-4ac>=0,则根据求根公式求得两个实根x1,x2的值,并输出x1,x2的值。否则,分别求得两个共轭复根的实部和虚部,并输出两个共轭复根。
⑵源程序:
#include
main()
else
}
注意:
①当b2-4ac2-4ac求绝对值(取负),然后再求平方根。