学习一下 c语言上机复习 叶一片 2022-10-18 2024-07-08
3.1转换大小写 1 2 3 4 5 6 7 8 #include <stdio.h> int main () { char c1,c2; c1=getchar(); c2=c1+32 ; putchar (c2); return 0 ; }
1 2 3 4 5 6 7 8 9 #include <stdio.h> int main () { char c1,c2; c1=getchar(); c2=c1+32 ; putchar (c2); return 0 ; }
3.2存款利息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> #include <math.h> int main () { int n,b; double p1,p2,p3,p4,p5,r1,r2,r3,r4,r5,r,p; b=1000 ; r1=0.015 ;r2=0.021 ;r3=0.0275 ;r5=0.03 ;r=0.0035 ; p1=b*(1 +r1); p2=b*(1 +2 *r2)*(1 +3 *r3); p3=b*(1 +3 *r3)*(1 +2 *r2); p4=b*pow (1 +r1,5 ); p5=b*pow (1 +r/4 ,4 *5 ); printf ("p1=%f\n" ,p1); printf ("p2=%f\n" ,p2); printf ("p3=%f\n" ,p3); printf ("p4=%f\n" ,p4); printf ("p5=%f\n" ,p5); return 0 ; }
3.3还贷款 1 2 3 4 5 6 7 8 9 10 11 12 #include <stdio.h> #include <math.h> int main () { int d,p; float r,m; d=300000 ; p=6000 ; r=0.01 ; m=(log10 (p)-log10 (p-d*r))/log10 (1 +r); printf ("Ϊ%0.1f" ,m); return 0 ; }
4.1闰年 写一程序,判断某一年是否闰年 公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。 世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <stdio.h> #include <math.h> int main () { int year,leap; printf ("please enter a year:\n" ); scanf ("%d" ,&year); if (year%4 ==0 ){ if (year%100 ==0 ){ if (year%400 ==0 ) leap = 1 ; else leap = 0 ; }else leap = 1 ; }else leap = 0 ; if (leap){ printf ("%d is a leap year" ,year); }else { printf ("%d is not a leap year" ,year); } return 0 ; }
4.2求ax^2+bx+c的根 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <stdio.h> #include <math.h> int main () { int a,b,c; float t,x1,x2; printf ("请输入a,b,c三值: \n" ); scanf ("%d %d %d" ,&a,&b,&c); t=b*b-4 *a*c; if (a!=0 ){ if (t>0 ){ x1=(-b+sqrt (t))/(2 *a); x2=(-b-sqrt (t))/(2 *a); printf ("x1=%0.4f x2=%0.4f" ,x1,x2); }else if (t=0 ){ printf ("无实数根" ); }else { x1=(-b+sqrt (t))/(2 *a); printf ("x1=x2=%0.4f" ,x1); } }else { printf ("不是二元一次函数" ); } return 0 ; }
4.3折扣 运输越远,运费越低 距离 折扣 s<250 0% 250<=s<500 2% 500<=s<1000 5% 1000<=s<2000 8% 2000<=s<3000 10% 3000<=s 15% f=pw s*(1-d) f运费 p基本运费 w重量 s距离 d折扣
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <stdio.h> #include <math.h> int main () { int s,c; float p,w,d,f; printf ("please enter Price,Weight,and Distance:\n" ); scanf ("%f %f %d" ,&p,&w,&s); if (s<250 ){ f=p*w*s; }else if (s>=250 &&s<=500 ){ f=p*w*s*(1 -0.02 ); }else if (s>=500 &&s<=1000 ){ f=p*w*s*(1 -0.05 ); }else if (s>=1000 &&s<=2000 ){ f=p*w*s*(1 -0.08 ); }else if (s>=2000 &&s<=3000 ){ f=p*w*s*(1 -0.10 ); }else if (s>=3000 ){ f=p*w*s*(1 -0.15 ); } printf ("f=%0.2f" ,f); return 0 ; }
5.1水仙花 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> #include <math.h> int main () { int n,i,a,b,c; printf ("水仙花数有:" ) ; for (i=100 ;i<1000 ;i++){ a=i/100 ; b=i%10 ; c=i/10 -a*10 ; if (i==a*a*a+b*b*b+c*c*c){ printf ("%d " ,i); } } return 0 ; }
5.2完数 6 its factors are 1 2 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> int main () { for (int i=2 ;i<1000 ;i++){ int s=0 ; for (int j=1 ;j<i;j++){ if ((i%j)==0 ) s+=j; } if (i==s){ printf ("%d its factors are" ,i); for (int j=1 ;j<i;j++) if (i%j==0 ) printf (" %d" ,j); printf ("\n" ); } } return 0 ; }
完数 因子:整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因子。 整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。 需要注意的是,唯有被除数, 除数,商皆为整数,余数为零时,此关系才成立。因子是不包括自身的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include<stdio.h> int main() { int num, fator, sum; /* num表示要判断的数,fator表示因子,sum表示因子之和*/ for (num = 2; num <= 1000; num++){ //1是所有整数的因子,所以因子之和从1开始 sum = 1; for (fator = 2; fator <= num / 2; fator++) { /* 判断num能否被fator整除,能的话fator即为因子 因子不包括自身 */ if (num % fator == 0) { sum =sum + fator; } } // 判断此数是否等于因子之和 */ if (sum == num) { printf("%d its factors are 1, ", num); for (fator = 2; fator <= num / 2; fator++) { if (num % fator == 0) { printf("%d, ", fator); } } printf("\n"); } } return 0; }
5.3丑数 题目描述 所谓丑数,就是素因子中只含有 2、3、5的数字。 给出一个数字 N,请输出 N 以内所有丑数。特别的规定,1是第一个丑数。 输入:一个整数 N(1≤N≤1000) 输出:从小到达输出 N以内的所有丑数,包括 N,每行输出一个数字 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include<stdio.h> int main(){ int n,i; printf("enter a number:\n"); scanf("%d",&n); while(n!=1){ if(n%5==0){ n=n/5; }else if(n%2==0){ n=n/2; }else if(n%3==0){ n=n/3; }else break; } if(n==1){ printf("yes"); }else{ printf("no"); } return 0; }
6.1数组逆序排序 1 2 3 4 5 6 7 #include<stdio.h> int main() {int i,a[5]={8,6,5,4,1}; for(i=4;i>=0;i--) printf("%d ",a[i]); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 #include<stdio.h> int main(){ int a[5]={8,6,5,4,1}; int i,j,temp; for(i=0;i<5/2;i++){ temp=a[i]; a[i]=a[4-i]; a[4-i]=temp; } for(i=0;i<5;i++) printf("%d ",a[i]); return 0;
6.2杨辉三角 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include<stdio.h> int main(){ int i,j,a[10][10]; for(i=0;i<10;i++){ a[i][i]=1; // a[i][0]=1; //首尾都是1 } for(i=1;i<10;i++) //从第二列开始 for(j=1;j<i;j++) // a[i][j]=a[i-1][j-1]+a[i-1][j]; //等于前一行上面俩加起来 for(i=0;i<10;i++){ for(j=0;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); //循环一次换行一次 } return 0; }
6.3回文 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include<stdio.h> int main(){ int num,m,s,n; printf("enter:\n"); scanf("%d",&num); s=num; while(s!=0){ n=s%10; m=m*10+n; s=s/10; } if(num==m){ printf("yes"); }else{ printf("no"); } return 0; }
7.1字符串按反序排放 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include<stdio.h> #include<string.h> int main( ){ void inverse(char str[ ]); char str[100]; printf("input string:"); scanf("%s",str); inverse(str); printf("inverse string: %s\n",str); return 0; } void inverse(char str[]){ char t; int i,j; for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--){ t=str[i]; str[i]=str[j-1]; str[j-1]=t; } }
7.2字符串最长的单词 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include<stdio.h> #include<string.h> int main( ){ int alphabetic(char); int longest(char []); int i; char line[100]; printf("input one line:\n"); gets(line); printf("The longest word is :"); for (i=longest(line) ; alphabetic(line[i]);i++ ) printf("%c" ,line[i]); printf("\n"); return 0; } int alphabetic(char c){ if((c>='a' &&c<='z')||(c>='A'&&c<='Z')) return(1); else return(0); } int longest(char string[]){ int len=0,i,length=0,flag=1,place= 0,point; for (i=0;i<= strlen(string);i++ ) if (alphabetic( string[i])) if (flag){ point=i; flag=0; } else len++; else{ flag=1; if (len>= length){ length= len; place= point; len= 0; } } return(place); }
7.3气泡法排顺序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include<stdio.h> int main(){ int a[10]; int i,j,t; printf("enter:\n"); for(i=0;i<10;i++){ scanf("%d",&a[i]); } for(j=0;j<9;j++){ for(i=0;i<9-j;i++){ if(a[i]>a[i+1]){ t=a[i+1]; a[i+1]=a[i]; a[i]=t; } } } for(i=0;i<10;i++){ printf("%5d",a[i]); } return 0; }
7.4职工 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 #include <stdio.h> #include <string.h> #define N 10 int main ( ) { void input (int [ ],char name[ ][8 ]) ; void sort (int [ ],char name[ ][8 ]) ; void search (int ,int [ ],char name[ ][8 ]) ; int num[N], number,flag= 1 ,c; char name[N][8 ]; input( num , name) ; sort( num, name) ; while (flag== 1 ){ printf ("\ninput number to look for:" ); scanf ("%d" , &number); search( number , num , name) ; printf ("continue ot not(Y/N)?" ); getchar( ); c= getchar( ); if (c=='N' ||c=='n' ) flag=0 ; } return 0 ; } void input (int num[ ],char name[N][8 ]) { int i; for (i=0 ;i<N;i++){ printf ("input NO.: " ); scanf ("%d" , &num[i]); printf ("input name: " ); getchar( ); gets(name[i]); } } void sort (int num[ ],char name[N][8 ]) { int i,j, min, temp1; char temp2[8 ]; for (i=0 ;i<N-1 ;i++){ min= i; for (j=i;j<N;j++) if (num[ min]> num[j]) min=j; temp1= num[i]; strcpy ( temp2 ,name[i]); num[i]= num[ min]; strcpy (name[i] ,name[ min]); num[ min]= temp1; strcpy ( name[ min], temp2) ; } printf ("\n result:\n" ); for (i=0 ;i<N;i++) printf ("\n % 5d% 10s" , num[i] ,name[i]) ; } void search (int n, int num[ ],char name[N][8 ]) { int top, bott, mid,loca , sign; top= 0 ; bott=N- 1 ; loca= 0 ; sign=1 ; if ((n< num[0 ])||(n> num[N- 1 ])) loca=-1 ; while ((sign==1 ) && (top<= bott)){ mid= (bott+ top)/2 ; if (n== num[ mid]){ loca= mid; printf ("NO. %d,his name is %s. \n" ,n,name[loca]) ; sign=-1 ; } else if (n< num[ mid]) bott= mid- 1 ; else top= mid+1 ; } if (sign==1 || loca==-1 ) printf (" %d not been found. \n" ,n); }