仅作参考,请指正
一、编程题
1、学分绩计算
#include <stdio.h> int main() { printf("Input math1, English and math2:"); int math1, English,math2; scanf("%d,%d,%d",&math1,&English,&math2); double score =(math1 * 5 + English * 1.5 + math2 * 3.5) / 10; printf("Final score = %.2f ",score); return 0; }
2、一尺之捶,日取其半
#include <stdio.h> #include <math.h> int main() { printf("Input length and days:"); float length; int days; scanf("%f,%d",&length,&days); printf("length=%.5f ",length*pow(0.5,days)); return 0; }
3、网购打折商品V1.0
#include <stdio.h> int main() { printf("Input payment p:"); float payment,price; scanf( "%f",&payment); price = payment*(1-0.08); printf("price = %.1f ",price); return 0; }
4、计算时间差V1.0
#include <stdio.h> //#include <math.h> #include <stdlib.h> int main() { int h1,h2,m1,m2,r; printf("Input time one(hour, minute):"); scanf("%d,%d",&h1,&m1); printf("Input time two(hour, minute):"); scanf("%d,%d",&h2,&m2); r = abs((h1*60+m1) - (h2*60+m2)); printf("%d hour %d minute ", r/60,r%60); return 0; }
5、分数比较
#include <stdio.h> #include <math.h> int main() { printf("Input a/b, c/d:"); int a,b,c,d; scanf("%d/%d,%d/%d",&a,&b,&c,&d); double e = (double)a/b-(double)c/d; if(fabs(e)<=1e-6){ printf("%d/%d=%d/%d ",a,b,c,d); } else if(e>1e-6){ printf("%d/%d>%d/%d ",a,b,c,d); } else{ printf("%d/%d<%d/%d ",a,b,c,d); } return 0; }
6、存款利率计算器v2.0
#include <stdio.h> #include <math.h> int main() { printf("Input rate, year, capital:"); int year; double rate,capital; scanf("%lf,%d,%lf",&rate,&year,&capital); printf("Compound interest (Y/N)?" ); char ch; scanf(" %c",&ch); if(ch=='Y'||ch=='y'){ printf("deposit = %.4f ",capital*pow((1+rate),year)); } else{ printf("deposit = %.4f ",capital* (1 + rate * year)); } return 0; }
7、存款利率计算器v3.0
#include <stdio.h> #include <math.h> int main() { //1. printf("Input capital, year:"); double capital,rate,deposit; int year; scanf( "%lf,%d",&capital,&year); //2. int flag = 0; if( year == 1){ rate = 0.0225; } else if(year == 2){ rate = 0.0243; } else if(year == 3){ rate = 0.0270; } else if(year == 5){ rate = 0.0288; } else if(year == 8){ rate = 0.0300; } else{ flag = 1; } //3. printf("Compound interest (Y/N)?"); char ch; scanf(" %c",&ch); if(ch=='Y'||ch=='y'){ deposit = capital*pow((1+rate),year); } else{ deposit = capital* (1 + rate * year); } //4. if(flag){ printf( "Error year! "); } else{ printf("rate = %.4f, deposit = %.4f ",rate,deposit); } return 0; }
8、博弈论之Best Response
#include <stdio.h> #include <math.h> int main() { printf("Input percent of A and B:"); double aPercent,bPercent; scanf("%lf%lf",&aPercent,&bPercent); double complete = 10*aPercent+6*bPercent; double standard = 8*aPercent+10*bPercent; printf("compete = %.4f standard = %.4f ",complete,standard); if(complete-standard>1e-6){ printf("The Best Response is compete!"); } else{ printf("The Best Response is standard!"); } return 0; }
9、马克思手稿中的趣味数学题
#include<stdio.h> int main() { int men,women,baby; printf("Man Women Children "); //! for(men=0;men<=10;men++)//men+women+baby=30 3men+2women+baby=50 { women=20-2*men; baby=30-men-women; if(3*men+2*women+baby==50) { //printf("Man Women Children "); // printf("%3d%8d%8d ",men,women,baby); //break; } } return 0; //! }
10、猜神童年龄
#include <stdio.h> int tenBit(int n,int *a); int main() { for(int x=10;x<=22;++x) { int a[10]={0}; int boo = tenBit(x*x*x,a)&&tenBit(x*x*x*x,a); if(boo){ printf("age=%d ",x); break; } } return 0; } int tenBit(int n,int *a){ while(n) { if(++a[n%10]>1) return 0; n/=10; } return 1; }
11、闰年相关的问题v3.0——计算有多少闰年
#include <stdio.h> #include <stdlib.h> int main() { int count=0,birthYear,thisYear; printf("Input your birth year:"); scanf("%d",&birthYear); printf("Input this year:"); scanf("%d",&thisYear); for(int i=birthYear;i<=thisYear;++i){ if(i%4==0&&i%100!=0||i%400==0){ printf("%d ",i); count++; } } printf("count=%d ",count); return 0; }
12、闰年相关的问题v4.0——计算心跳数
#include <stdio.h> #include <stdlib.h> int main() { int birthYear,thisYear,cnt=0; printf("Input your birth year:"); scanf("%d",&birthYear); printf("Input this year:"); scanf("%d",&thisYear); int year = thisYear-birthYear; for(int i=birthYear;i<thisYear;++i){ if(i%4==0&&i%100!=0||i%400==0){ cnt++; } } printf("The heart beats in your life: %lu",(year*365+cnt)*24*60*75); return 0; }
13、计算阶乘的和v2.0
#include <stdio.h> long Fact(int n); int main() { for(int m=100;m<=999;++m) { int a = m/100; int b = m/10%10; int c = m%10; if(m==Fact(a)+Fact(b)+Fact(c)){ printf("%d ",m); } } return 0; } long Fact(int n){ int result = 1; for(int i = 1;i<=n; ++i){ result *= i; } return result; }
14、计算最大的三位约数
#include <stdio.h> int Func(int n); int main() { printf("Input n:"); int n; scanf("%d",&n); if(n<1000||n>1000000){ printf("Input error! "); } else{ printf("%d ",Func(n)); } return 0; } int Func(int n){ for(int i=999; i>=100; --i){ if(n%i==0) return i; } return 1; }
15、孔融分梨
#include <stdio.h> int Gcd(int a, int b); int main() { printf("Input m,n:"); int m, n, x; scanf("%d,%d", &m, &n); x = Gcd(m,n); //if ( m<1 || n>10000) if(-1 == x) { printf("Input error! "); } else { printf("%d/%d ", m/x,n/x); } return 0; } int Gcd(int a, int b) { int r; //if (a<=0 || b<=0){ if ( a<1 || b>10000){ return -1; } do{ r = a % b; a = b; b = r; }while (r!=0); return a; }
16、素数求和
#include <stdio.h> #include <math.h> int IsPrime(int x); int main() { printf("Input n:"); int n; scanf("%d",&n); int sum =0; while(n>=2){ if(IsPrime(n)){ sum += n; } n--; } printf("sum=%d ",sum); return 0; } int IsPrime(int x){ for(int i=2;i <= sqrt(x);++i){ if(x%i==0){ return 0; } } return 1; }
17、n层嵌套平方根的计算
#include <stdio.h> #include <stdlib.h> #include <math.h> double Y(double x, int n) { if (n == 0){ return 0; } else{ return (sqrt(x +Y(x,n-1))); } } int main() { printf("Please input x and n:"); double x; int n; scanf("%lf,%d",&x,&n); printf("Result=%.2f ",Y(x,n)); return 0; }
18、递归法求和
#include <stdio.h> #include <stdlib.h> #include <math.h> int sum(int n){ if(n==1){ return 1; } else{ return n+sum(n-1); } } int main() { printf("Please input n:"); int n; scanf("%d",&n); if(n<1){ printf("data error! "); } else{ printf("sum=%d ",sum(n)); } return 0; }
19、猴子吃桃程序_扩展3
#include <stdio.h> #include <stdlib.h> #include <math.h> int Monkey(int n, int x); int main() { printf("Input days n:"); int n; scanf("%d",&n); int x = 1; printf("x=%d ",Monkey(n,x)); return 0; } int Monkey(int n, int x){ if(n==1){ return x; } else{ return Monkey(n-1,2*(x+1)); } }
20、网购打折商品V2.0
#include <stdio.h> #include <stdlib.h> #include <math.h> float Price(float payment); int main() { printf("Input payment:"); float payment; scanf("%f",&payment); printf("price = %.1f ",Price(payment)); return 0; } float Price(float payment){ float rate; int c = payment/100; if(c<1){ rate = 0.0; } else if(c<2&&c>=1){ rate = 0.05; } else if(c<5&&c>=2){ rate = 0.08; } else if(c<10&&c>=5){ rate = 0.1; } else{ rate = 0.15; } return payment - payment * rate; }
21、摘苹果
#include <stdio.h> int GetApple(int a[], int height, int n); int main() { int a[10]={0}; for(int i=0;i<10;++i){ scanf("%d",&a[i]); } int height; scanf("%d",&height); height += 30; int n = 10; int cnt = GetApple(a,height,n); printf("%d",cnt); return 0; } int GetApple(int a[], int height, int n){ int cnt = 0; for(int i=0;i<n;++i){ if(a[i]<=height){ cnt++; } } return cnt; }
22、好数对
#include <stdio.h> int main() { int a[1000] = {0}; int n; scanf("%d",&n); for(int i=0;i<n;++i){ scanf("%d",&a[i]); } int count = 0; for(int i=0;i<n-1;++i) for(int j=i+1;j<n;++j) for(int k=0; k<n; ++k) if(a[k] == a[i]+a[j]) count++; printf("%d",count); return 0; }
23、组合三位数
#include<stdio.h> int f(int array[],int a) { while(a) { array[a%10]++; if(array[a%10]>1) { return 0; } a/=10; } return 1; } int main() { int num1=0,num2=0,num3=0; for(int i=102;num1=i,num2=i*2,num3=i*3,i*=3,i<987;i=num1+1) { int array[10]={0}; if(f(array,num1)&&f(array,num2)&&f(array,num3)) { printf("%d,%d,%d ",num1,num2,num3); } } return 0; }
24、求100以内的最大素数
#include<stdio.h> #include<math.h> int isPrime(int n){ int k=(int)sqrt(n); for(int i=2;i<=k;i++){ if(n%i==0){ return 0; } } return 1; } int main() { printf("Input n(n<=500):"); int n; scanf("%d",&n); int count = 0,sum = 0; for(int i=n;i>1&&count!=10;--i){ if(isPrime(i)){ printf("%6d",i); count++; sum+=i; } } printf(" sum=%d ",sum); return 0; }
25、重复数字检查
#include <stdio.h> int CountRepeatNum(int count[], int n); int main() { printf("Input n: "); long int n; scanf("%ld",&n); int num[10]={0}; if(CountRepeatNum(num,n)){ printf("Repeated digit! "); } else{ printf("No repeated digit! "); } return 0; } int CountRepeatNum(int count[], int n) { while(n) { if(++count[n%10]>1){ return 1; } n/=10; } return 0; }
26、教授的课
#include <stdio.h> #define N 32 int IsCancel(int a[], int n, int k); int main() { printf("Input n,k: "); int n,k; scanf("%d,%d",&n,&k); int array[N]={0}; for(int i=0;i<n;++i){ scanf("%d",&array[i]); } if(IsCancel(array,n,k)){ printf("YES"); } else{ printf("NO"); } return 0; } int IsCancel(int a[], int n, int k){ int cnt=0; for(int i=0;i<n;++i){ if(a[i]<=0){ cnt++; } } if(cnt<k){ return 1; } return 0; }
27、寻找鞍点
#include <stdio.h> #define N 32 void FindSaddlePoint(int a[][N], int m, int n); int main() { printf( "Input m,n: "); int m,n; scanf("%d,%d",&m,&n); printf( "Input matrix: " ); int array[N][N]={0}; for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ scanf("%d",&array[i][j]); } } FindSaddlePoint(array,m,n); return 0; } void FindSaddlePoint(int a[][N], int m, int n) { int find = 0; for(int i=0;i<m;++i) { int rowPos=i,columnPos=0,flag = 1; for(int j=1;j<n;++j) { if(a[i][j]>a[rowPos][columnPos]){ rowPos = i; columnPos = j; } } for(int k=0;k<m;++k){ if(a[k][columnPos]<a[rowPos][columnPos]){ flag = 0; break; } } if(flag){ printf("a[%d][%d] is %d ",rowPos,columnPos,a[rowPos][columnPos]); find = 1; } } if(!find){ printf("No saddle point! "); } }
28、计算三位阶乘和数
#include <stdio.h> int main() { int array[10]={0}; int result = 1; array[0]=1; for(int i=1;i<10;++i){ result *= i; array[i] = result; } for(int j=100;j<=999;++j){ int a = j/100,b=j/10%10,c=j%10; if(j==array[a]+array[b]+array[c]){ printf("%ld ",j); } } return 0; }
29、数字字符串转换为整型数
#include<stdio.h> int Myatoi(char str[]); int main(void) { printf("Input a string:"); char a[10] = ""; scanf("%7s",a); printf("%d ",Myatoi(a)); return 0; } int Myatoi(char str[]){ int sum = 0; for(char *p = str; *p!='