1.分别输入长方形的长和宽,计算周长和面积。
#include<stdio.h>
int main()
{
int a,b,c,s;
printf("请输入长方形的长和宽:");
scanf("%d%d",&a,&b);
c=2*(a+b);
s=a*b;
printf("长方形的周长为%d\n面积为%d\n",c,s);
return 0;
}
2.根据从键盘输入的圆的半径,求圆的周长和面积。
#include<stdio.h>
#define PI 3.14
int main()
{
float r,c,s;
printf("请输入圆的半径:");
scanf("%f",&r);
c=2*PI*r;
s=PI*r*r;
printf("圆的周长为%5.2f\n面积为%5.2f\n",c,s);
return 0;
}
3.假如我国国民生产总值的年增长率为7%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为p=(1+r)^n。(r为年增长率n为年数,p为与现在相比的倍数)。
#include<stdio.h>
int main()
{
float r,p;
r=0.07;
p=(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r)*(1+r);
printf("p=%f\n",p);
return 0;
}
4.存款利息的计算。有1000元,想存五年,可按以下五种办法存:
(1)一次存五年期;
(2)先存两年期到期后将本息再存三期;
(3)先存三年期,到期后将本息再存两年期;
(4)先存一年期,到期后将本息再存一年期,连续存五次;
(5)存活期存款。活期利息每一季度结算一次。
2017年的银行存款利息如下:
一年期定期存款利息为1.5%;
二年期定期存款利息为2.1%;
年羁定期存款利息为2.75%;
年期定期存款利息为3%;
活期存款款利息为0.35%(活期存款每一季度结算一次利息)
如果r年利率,n为存款年数,则计算本息和的公式如下
一年期本息和p=1000*(1+r);
n年期本息和p=1000*(1+n*r);
存n次1年期的本息和p=1000*(1+r)^n
活期存款本息和:p=1000*(1+r/4)^4n。
说明:1000*(1+r/4)是一个季度的本息和
#include<stdio.h>
int main()
{
float r1,r2,r3,r4,r5,p1,p2,p3,p4,p5;
r1=0.0035;
r2=0.015;
r3=0.021;
r4=0.0275;
r5=0.03;
p1=1000*(1+r5*5);
p2=1000*(1+r3*2)*(1+r4*3);
p3=1000*(1+r4*3)*(1+r3*2);
p4=1000*(1+r2)*(1+r2)*(1+r2)*(1+r2)*(1+r2);
p5=1000*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4)*(1+r1/4);
printf("p1=%f\np2=%f\np3=%f\np4=%f\np5=%f\n",p1,p2,p3,p4,p5);
return 0;
}
5.从键盘上输入某学生5门课的成绩,计算出总成绩和平均成绩。
#include<stdio.h>
int main()
{
int a,b,c,d,e,sum,gpa;
printf("请输入该学生五门课的成绩:\n");
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
sum=a+b+c+d+e;
gpa=(a+b+c+d+e)/5;
printf("该学生的总成绩和平均成绩分别为:%d,%d",sum,gpa);
return 0;
}
6.输入一个三位数(整数),分别输出这个数的个位、十位、百位数字。
#include<stdio.h>
int main()
{
int a,b,c,d;
printf("请输入一个三位整数:");
scanf("%d",&a);
b=a%10;
c=a%100/10;
d=a/100;
printf("该整数的个位为%d,十位为%d,百位为%d\n",b,c,d);
return 0;
}
7.从键盘上输入一个小写字母,改用大写字母输出。
#include<stdio.h>
int main()
{
char c1,c2;
printf("请输入一个小写字母:");
scanf("%c",&c1);
c2=c1-32;
printf("%c\n",c2);
return 0;
}
8.从键盘上输入两个整数分别放到A和B中,输出“A=”和“B=”的值,交换两个变量的值,并输出。
#include<stdio.h>
int main()
{
int A,B,t=0;
printf("请输入两个整数:\n");
scanf("%d%d",&A,&B);
printf("%d\n",A);
printf("%d\n",B);
t=A;
A=B;
B=t;
printf("A=%d,B=%d\n",A,B);
return 0;
}
9.定义整型变量int a=12,long b=2269978;请将a的值正常整数输出,6位宽度、6位左对齐、6位高位补零输出;将b按8位输出;将a按十进制、八进制、十六进制、无符号数输出。
#include <stdio.h>
int main()
{
int a=12,b=2269978;
printf("%d\n%6d\n%-6d\n%06d\n",a,a,a,a);
printf("%8d\n",b);
return 0;
}
10.定义浮点数变量float x=1234.567;double y=1234.5678;完成下列输出操作:(1)请将x和y按照正常浮点数输出;(2)将x按总长度8位小数位3位; y按总长度10位小数位3位;(3)将x以科学计数法输出。
#include<stdio.h>
main()
{
float x=1234.567;
double y=1234.5678;
printf("x=%f,x=%8.3f,x=%e\n",x,x,x);
printf("y=%lf,y=%10.3lf\n",y,y);
printf("\n");
}
11.输入任意三个整数给变量a、b、c,求三个数中的最大值。
#include<stdio.h>
int main()
{
int a,b,c,max;
printf("请输入三个整数:\n");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(a>c)
max=a;
else
max=c;
if(b>c)
max=b;
else
max=c;
printf("三个数中最大值为%d",max);
return 0;
}
12.用if语句编程,输入一个数,输出这个数的绝对值。
#include<stdio.h>
int main()
{
int a,;
printf("请输入一个整数:\n");
scanf("%d",&a);
if(a>=0)
printf("%d\n",a);
if(a<0)
printf("%d\n",-a);
return 0;
}
13.用户输入密码,如果密码是123,则输出“恭喜你,登录成功!”,否则输出“很抱歉,登录失败!”。
#include<stdio.h>
int main()
{
char code;
printf("请输入密码:");
scanf("%d",&code);
if(code==123)
printf("恭喜你,登录成功",code);
if(code!=123)
printf("很抱歉,登录失败",code);
return 0;
}
14.根据上网用户输入的年龄,决定弹出信息,如年龄小于18则弹出“你太小了,还不能进网吧”否则弹出“ok,没问题祝你玩的愉快”。
#include<stdio.h>
int main()
{
char age;
printf("请输入你的年龄:");
scanf("%d",&age);
if(age<18)
printf("你太小了,还不能进网吧",age);
if(age>=18)
printf("OK,没问题祝你玩得愉快",age);
return 0;
}
15.根据用户输入的数,判断:
(1)是否能3整除,如能,输出能被3整除,如不能被3整除,则输出:不能被3整除
(2) 是否能5整除,如能,输出能被5整除,如不能被5整除,则输出:不能被5整除
(3)判断用户输出的数能否被3和5同时整除,如能,输出能被3和5整除。
#include<stdio.h>
int main()
{
int a;
printf("请输入一个整数:");
scanf("%d",&a);
if(a%3==0)
printf("能被3整除\n",a);
else
printf("不能被3整除\n",a);
if(a%5==0)
printf("能被5整除\n",a);
else
printf("不能被5整除\n",a);
if(a%3==0&&a%5==0)
printf("能被3和5整除\n",a);
return 0;
}
16.输入一个数,判断它是奇数还是偶数,如果是奇数则进一步判断它是否为5的倍数。
#include<stdio.h>
int main()
{
int a;
printf("请输入一个数:");
scanf("%d",&a);
if(a%2==0)
printf("该数是偶数\n",a);
if(a%2!=0)
{
printf("该数是奇数\n",a);
if(a%5==0)
printf("该数是5的倍数\n",a);
else
printf("该数不是5的倍数\n",a);
}
return 0;
}
17.从键盘输入字符,判断输入的字符属于大写、小写、数字和其他字符中的哪一种。
#include<stdio.h>
int main()
{
char ch;
ch=getchar();
putchar(ch);
if(65<=ch&&ch<=88)
printf("这是大写字母\n");
else
if(97<=ch&&ch<=121)
printf("这是小写字母\n");
else
if(48<=ch&&ch<=57)
printf("这是数字\n");
else
printf("这是其他字符\n");
return 0;
}
18.某超市有3种产品促销:产品1,2.5元;产品2,12.8元,10件以上9折;产品3,4.6元,20件以上8折。编程:输入客户购买的品种和数量,计算应付金额.。
#include<stdio.h>
int main()
{
int type,num,sum;
f[oat sum;
printf("请输入产品的类型:");
scanf("%d,&type);
switch(type)
{
case 1: printf("请输入产品的数量:");
scanf("%d",&num);
sum=2.5*num;
break;
case 2: printf("请输入产品的数量:");
scanf("%d",&num);
if(num>=10)
sum=12.8*num*0.9;
else
sum=12.8*num;
break;
case 3: printf("请输入产品的数量:");
scanf("%d",&num);
if(num>=20)
sum=4.6*num*0.8;
else
sum=4.6*num;
break;
}
default("输入的产品类型有误:\n");
}
printf("产品的类型%d,产品的数量:%d,总价%f\n",type,num,sum);
return 0;
}
19.从键盘输入三个数,按照从大到小的顺序输出。
#include<stdio.h>
int main()
{
float a,b,c,t;
scanf("%f%f%f",&a,&b,&c);
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a<c)
{
t=a;
a=c;
c=t;
}
if(b<c)
{
t=c;
c=b;
b=t;
}
printf("%5.2f,%5.2f,%5.2f\n",a,b,c);
return 0;
}
19.求s=1*2*…*n。
#include<stdio.h>
int main()
{
int n,i=1,sum=1;
printf("请输入一个数字:");
scanf("%d",&n);
while(i<=n)
{
sum=sum*i;
i=i+1;
}
printf("sum=%d\n",sum);
return 0;
}
20.求s=1+3+…+99。
#include<stdio.h>
int main()
{
int i=1,sum=0;
for(i=1;i<100;i++)
sum=sum+i;
printf("sum=%d\n",sum);
return 0;
}
21.统计输入的整数的个数(输入-1时结束,-1不计在内)。
#include<stdio.h>
int main()
{
int i=1,s1=1,sum=0;
while(i<=99)
{
sum=sum+i;
i=i+2;
}
printf("sum=%d\n",sum);
return 0;
}
22.编程求1!+2!+3!+……+10!的值。
#include<stdio.h>
int main()
{
int s1=1,i=1,sum=0;
while(i<=10)
{
s1=s1*i;
sum=sum+s1;
i=i+1;
}
printf("sum=%d\n",sum);
return 0;
}
23.打印出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其中各位数字的立方和等于该数本身。如:153=13+53+33。
#include<stdio.h>
int main()
{
int a=0,b=0,c=0,i=0;
for(i=100;i<1000;i++)
{
a=i/100;
b=(i%100)/10;
c=(i%100)%10;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("水仙花数有:%d\n",i); //水仙花数:daffodil number.
}
}
return 0;
}
24.把100~200之间不能被3整除的数输出,每行输出10个数。
#include<stdio.h>
int main()
{
int count=0;
for(int i=100;i<=200;i++)
if(i%3!=0)
{
printf("%d\t",i);
count++;
if(count%10==0)
printf("\n");
}
printf("\n");
return 0;
}
25.打印显示如下的10*10的数据阵列:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
#include<stdio.h>
int main()
{
int i,j,n=0;
for(i=1;i<=10;i++)
for(j=1;j<=10;j++,n++)
{
if(n%10==0)
printf("\n");
printf("%d\t",i*j);
}
printf("\n");
return 0;
}
26.打印九九乘法表。
#include<stdio.h>
int main()
{
int i,j,n;
for(i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
if(j<=i)
{
n=i*j;
printf("%d*%d=%d\t",i,j,n);
}
}
printf("\n");
}
return 0;
}
27.打印三角形
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
#include<stdio.h>
int main()
{
int k,i,j;
for(i=1;i<9;i++)
{
for(j=0;j<8-i;j++)
{
printf(" ");
}
for(k=1;k<=2*i-1;k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
28.用数组来处理求Fibonacci数列问题。
#include<stdio.h>
int main()
{
int i;
int f[20]={1,1}; //对最前面两个元素f[0]和f[1]赋初值1
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; //先后求出f[2]~f[19]的值
for(i=0;i<20;i++)
{
if(i%5==0)
printf("\n"); //控制每输出5个数后换行
printf("%12d",f[i]); //输出一个数
}
printf("\n");
return 0;
}
29.从键盘输入10个人的工资,统计出工资总和与平均,并打印输出每个人的工资(每行打印5个数)、工资总和、平均工资。
#include<stdio.h>
int main()
{
int i;
float a[10],sum=0,avg;
for(i=0;i<=9;i++)
{
printf("请输入第%d个人的薪水:",i+1);
scanf("%f",&a[i]);
sum=sum+a[i];
avg=sum/10.0;
}
for(i=0;i<=9;i++)
{
if(i%5==0)
printf("\n");
printf("%10.2f\t",a[i]);
if(i==9)
printf("\n");
}
printf("%5.2f\t",sum);
printf("%5.2f\n",avg);
return 0;
}
30.从键盘输入5个数,找出其中最大数。
#include<stdio.h>
int main()
{
int i,a[5],max;
printf("input 5 numbers:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<5;i++)
if(a[i]>max)
max=a[i];
printf("max=%d\n",max);
return 0;
}
31.用冒泡法对输入的10个数进行降序排序。
#include<stdio.h>
int main()
{
int a[10],i,j,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=0;i<10-j;i++)
{
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(i=0;i<10;i++)
printf("%-3d",a[i]);
}
32.用冒泡法对输入的10个数进行降序排序并存入数组中,然后输入一个数,查找该数是否在数组中存在。如果存在,则打印出该数在数组中对应的下标值。
#include <stdio.h>
int main()
{
int f[10],i,j,t,a;
printf("请任意输入10个整数\n");
for(i=0;i<10;i++)
scanf("%d",&f[i]);
for(j=0;j<10;j++)
{
for(i=0;i<10-j;i++)
{
if(f[i]>f[i+1])
{
t=f[i];
f[i]=f[i+1];
f[i+1]=t;
}
}
}
printf("顺序为:\n");
for(i=0;i<10;i++)
printf("%5d\n",f[i]);
printf("请输入你想查找的数\n");
scanf("%d",&t);
for(i=0;i<10;i++)
{
if(t==f[i])
{
printf("该数存在数组中,下标值为:%d\n",i);
a=1;
}
}
if(a!=1)
printf("该数不存在数组中\n");
return 0;
}
33.改进冒泡排序(减少交换次数)。
#include<stdio.h>
main()
{
int i,k,l,a[10];
for(i=0;i<=9;i++)
{
printf("请输入一个数:");
scanf("%d",&a[i]);
}
for(i=1;i<=9;i++)
{
for(k=1;k<=9-i;k++)
if(a[0]<a[k])
{
l=a[k];
a[k]=a[0];
a[0]=l;
}
if(a[0]>a[10-i])
{
l=a[10-i];
a[10-i]=a[0];
a[0]=l;
}
}
printf("\n\n\n请输入一个任意数:");
scanf("%d",&l);
k=0;
for(i=0;i<=9;i++)
{
if(l==a[i])
{
printf("这个数是该数组的第%d个数\n",i+1);
k=1;
}
}
if(k!=1)
printf("这个数不存在于这个数组\n");
}
34.从键盘输入10个数,按照从小到大排序,每行输出5个数。
#include<stdio.h>
int main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf("\n");
return 0;
}
35.找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
#include<stdio.h>
#define N 4
#define M 5
int main()
{
int i,j,k,a[N][M],max,maxj,flag;
printf("please input matrix:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{
max=a[i][0];
maxj=0;
for(j=0;j<M;j++)
if(a[i][j]>max)
{
max=a[i][j];
maxj=j;
}
flag=1;
for(k=0;k<N;k++)
if(max>a[k][maxj])
{
flag=0;
continue;
}
if(flag)
{
printf("a[%d][%d]=%d\n",i,maxj,max);
break;
}
}
if(!flag)
printf("It is not exist!\n");
return 0;
}
36.编一程序,将两个字符串连接起来,不要用strcat函数。
#include<stdio.h>
int main()
{
char s1[80],s2[40];
int i=0,j=0;
printf("input string1:");
scanf("%c",s1);
printf("input string2:");
scanf("%s",s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("\nThe new string is:%s\n",s1);
return 0;
}
37.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
#include<stdio.h>
int main()
{
int hcf(int,int);
int lcd(int,int,int);
int u,v,h,l;
scanf("%d%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=lcd(u,v,h);
printf("L.C.D=%d\n",l);
return 0;
}
int hcf(int u,int v)
{
int t,r;
if(v>u)
{
t=u;
u=v;
v=t;
}
while((r=u%v)!=0)
{
u=v;
v=r;
}
return(v);
}
int lcd(int u,int v,int h)
{
return(v*u/h);
}
38.求方程ax2+bx+c=0的根,用三个函数分别求当:b2-4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a,b,c的值。
#include<stdio.h>
#include<math.h>
float x1,x2,disc,p,q;
int main()
{
void greater_than_zero(float,float);
void equal_to_zero(float,float);
void smaller_than_zero(float,float);
float a,b,c;
printf("input a,b,c:");
scanf("%f%f%f",&a,&b,&c);
printf("equation:%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);
disc=b*b-4*a*c;
printf("root:\n");
if(disc>0)
{
greater_than_zero(a,b);
printf("x1=%f\t\tx2=%f\n",x1,x2);
}
else if(disc==0)
{
equal_to_zero(a,b);
printf("x1=%f\t\tx2=%f\n",x1,x2);
}
else
{
smaller_than_zero(a,b);
printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q);
}
return 0;
}
void greater_than_zero(float a,float b)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}
void equal_to_zero(float a,float b)
{
x1=x2=(-b)/(2*a);
}
void smaller_than_zero(float a,float b)
{
p=-b/(2*a);
q=sqrt(-disc)/(2*a);
}
39.写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
#include<stdio.h>
int main()
{
int prime(int);
int n;
printf("input an integer:");
scanf("%d",&n);
if(prime(n))
printf("%d is a prime.\n",n);
else
printf("%d is not a prime.\n",n);
return 0;
}
int prime(int n)
{
int flag=1,i;
for(i=2;i<n/2&&flag==1;i++)
if(n%i==0)
flag=0;
return(flag);
}
40.输入两个整数,按从大到小的顺序输出(采用指针)。
#include<stdio.h>
int main()
{
int *p1,*p2,*p,a,b;
printf("please enter two integer numbers:");
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
if(a<b)
{
p=p1;
p1=p2;
p2=p;
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
return 0;
}
41.输入三个整数a,b,c,按从大到小的顺序输出(采用指针)。
#include<stdio.h>
int main()
{
void exchange(int *q1,int *q2,int *q3);
int a,b,c,*p1,*p2,*p3;
printf("please enter three numbers:");
scanf("%d%d%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("The order is:%d,%d,%d\n",a,b,c);
return 0;
}
void exchange(int *q1,int *q2,int *q3)
{
void swap(int *pt1,int *pt2);
if(*q1<*q2)
swap(q1,q2);
if(*q1<*q3)
swap(q1,q3);
if(*q2<*q3)
swap(q2,q3);
}
void swap(int *pt1,int *pt2)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
42.有一个数组a,有10个元素,要求输出数组中的是个元素,分别使用下标法、数组名、指针法访问数组元组。
下表法:
#include<stdio.h>
int main()
{
int a[10];
int i;
printf("please enter 10 integer numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("%\n");
return 0;
}
数组名:#include<stdio.h>
int main()
{
int a[10];
int i;
printf("please enter 10 integer numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d",*(a+i));
printf("\n");
return 0;
}
指针法:#include<stdio.h>
int main()
{
int a[10];
int *p,i;
printf("please enter 10 integer numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(p=a;p<(a+10);p++)
printf("%d",*p);
printf("\n");
return 0;
}
43.使用指针,将字符串a复制到字符串b中,然后输出字符串b。
#include<stdio.h>
int main()
{
char a[]="I am a student.",b[20];
int i;
for(i=0;*(a+i)!='\0';i++)
*(b+i)=*(a+i);
*(b+i)='\0';
printf("string a is:%s\n",a);
printf("string b is:");
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
printf("\n");
return 0;
}