c语言上机复习

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);
// putchar('\n');
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; //p=本息和 n=年份 r=年利率 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=pws*(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);
}