#include<stdio.h>
int main(){
int n,price=95;printf("请输入衣服件数\n");scanf("%d",&n);
float count = n * price;if(count >=300){printf("满三百元,打八五折\n");
count *=0.85;printf("需要支付:%.2f元", count);}else{printf("需要支付:%.2f元", count);}return0;}
习题1-6 三角形
输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的三个边长。
如果可以则输出yes,如果不能,则输出no。
如果根本无法构成三角形,则输出not a triangle。
#include<stdio.h>
int main(){
int a,b,c;printf("请输入三边长度\n");scanf("%d%d%d",&a,&b,&c);if((a + b > c)&&(a + c > b)&&(b + c > a)){//可构成三角形if((a*a + b * b == c * c)||(a*a + c * c == b * b)||(b*b + c * c == a * a)){printf("yes\n");//可构成直角三角形}else{printf("no\n");//不能构成直角三角形}}else{printf("no a triangle\n");//不能构成三角形}return0;}
#include <stdio.h>
int main(){
int a;printf("请输入年份\n");scanf("%d",&a);if((a %4==0&& a %100!=0)||(a %400==0)){printf("yes\n");}else{printf("no\n");}return0;}
第二章 循环结构程序设计
习题2-1 水仙花数
publicclassMain{publicstaticvoidmain(String[] args){for(int i =0; i <10; i++){for(int j =0; j <10; j++){for(int k =0; k <10; k++){if(i*100+j*10+k!=0&& i*i*i+j*j*j+k*k*k==i*100+j*10+k ){
System.out.println(i*100+j*10+k);}}}}}}
习题2-2 韩信点兵
import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){
Scanner sc=newScanner(System.in);while(sc.hasNext()){
int count=1;//计数
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();for(int i =10; i <=100; i++){if(i%3==a && i%5==b && i%7==c){//满足条件,输出答案
System.out.println("Case "+ count+++": "+i);break;}elseif(i==100){//循环到100还未找到答案时,输出No answer
System.out.println("Case "+ count+++": "+"No answer");}else{//其他情况跳过continue;}}}}}
import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){
Scanner sc=newScanner(System.in);
int count=1;//计数while(sc.hasNext()){
int n=sc.nextInt();
int m=sc.nextInt();if(n==0&& m==0){break;}
double sum=0;for(int i = n; i <= m; i++){
double cur=1.0/i/i;//陷阱!如果是1.0/(i*i),当i很大时会溢出
sum+=cur;}
System.out.print("Case "+ count+++": ");
System.out.printf("%.5f\n",sum);}}}
习题2-5 分数化小数
import java.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){
Scanner sc=newScanner(System.in);
int count=1;//计数while(sc.hasNext()){
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();if(b==0){
System.out.println("Case "+count+++": / by zero");continue;}
int[] ans=newint[c+2];//c+2位数,最后一位拿来进位for(int i =0; i < c+2; i++){
ans[i]=a/b;//每一位
a=a%b*10;//取余,模拟除法计算}if(ans[c+1]>4){
ans[c]++;}
System.out.printf("Case "+count+++": "+ans[0]+".");for(int i =1; i < ans.length-1; i++){
System.out.print(ans[i]);}}}}
习题2-6 排列
publicclassMain{publicstaticvoidmain(String[] args){
Scanner sc=newScanner(System.in);
int count=1;//计数
int j,k;
int flag=1;for(int i =123; i <333; i++){//数组用来判断1-9数字是否出现过
int[] a=newint[10];
int sum=0;
j=i*2;
k=i*3;//如果一个数出现,就在数组该数字处置为1
a[i/100]=1;
a[i/10%10]=1;
a[i%10]=1;
a[j/100]=1;
a[j/10%10]=1;
a[j%10]=1;
a[k/100]=1;
a[k/10%10]=1;
a[k%10]=1;if(a[0]==1){//出现数字0不考虑continue;}for(int l =1; l < a.length; l++){if(a[l]==1){
sum++;}}if(sum==9){//当且仅当sum为9时,所有数字都出现过
System.out.println(i+" "+j+" "+k);}else{continue;}}}}