程序设计例题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算两个整数的和。
#include
#include"mysum.h"
int main()
{
int sum(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=sum(a,b);
printf("sum=%d\n",c);
return 0;
}
mysum
int sum(int x,int y)
{
int z;
z=x+y;
return z;
}
2.显示不同数据类型变量所占的字节数。
#include
int main()
{
printf("the bytes of the variale are:\n");
printf("int:%dbytes\n",sizeof(char));
printf("short:%dbyte\n",sizeof(short));
printf("long:%dbyte\n",sizeof(long));
printf("float:%dbyte\n",sizeof(float));
printf("long double:%dbyte\n",sizeof(long double));
return 0;
}
3.输入一个半径值,分别计算圆的周长、面积、体积。
要求使用符号常量定义圆周率。
#include
#define PI 3.14159265
int main()
{
double r,p,a,v;
printf("input radius:");
scanf("%lf",&r);
p=2*PI*r;
a=PI*r*r;
v=3.0/4*PI*r*r*r;
printf("p=%f\na=%f\nv=%f\n",p,a,v);
return 0;
}
4.整型变量的定义实例。
#include
int main()
{
int a,b,c,d;
unsigned u;
a=12;b=24;u=10;
c=a+u;d=b+u;
printf("%d,%d\n",c,d);
return 0;
}
5.变量的初始化。
#include
int main()
{
int a=3,b=-4,c=9,sum;
sum=a+b+c;
printf("\nsum=%d\n",sum);
a=16;b=56;c=-98;
sum=a+b+c;
printf("\nsum=%d\n",sum);
return 0;
}
6.整形数据的溢出实例。
#include
int main()
{
int a,b;
a=2147483647;b=a+1;
printf("\na=%d,a+1=%d\n",a,b);
a=-2147483648;b=a-1;
printf("\na=%d,a-1=%d\n",a,b);
return 0;
}
7.转义字符的使用。
#include
int main()
{
int a,b,c;
a=5;b=6;c=7;
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
return 0;
}
输出结果为:
5
6 7
5 7
8.字符变量的使用。
#include
int main()
{
char c1='a';
char c2='\x61';
char c3='\141';
char c4=97;
char c5=0x61;
char c6=0141;
printf("\nc1=%c,c2=%d,c3=%d,c4=%c,c5=%c,c6=%c\n",c1,c2,c3,c4,c5,c6);
printf("\nc1=%c,c2=%c,c3=%c,c4=%c,c5=%c,c6=%c\n",c1,c2,c3,c4,c5,c6);
return 0;
}
输出的结果为:
c1=a,c2=97,c3=97,c4=a,c5=a,c6=a
c1=a,c2=a,c3=a,c4=a,c5=a,c6=a
9.大、小写字母的转换。
#include
int main()
{
char c1,c2;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
printf("\n%5c%5c\n",c1,c2);
printf(" %d %d\n");
return 0;
}
10.分析程序输出的结果。
#include
int main()
{
int x=25;
int *p;
p=&x;
printf("x=%d,p=%u\n",x,p);
printf("*p=%d,&x=%u\n",*p,&x);
return 0;
}
输出的结果为:
x=25,p=1244996
*p=25,&x=1244996
11.假设今天是星期三20天后是星期几?
#include
int main()
{
int day,n;
printf("please input the day well be passd:\n");
scanf("%d",&n);
day=(n%7+3)%7;
printf("%d\n",day);
return 0;
}
12.输出两个整数的最大值。
#include
int main()
{
int a,b,max;
printf("please input a and b:\n");
scanf("%d,%d",&a,&b);
if(a>b)
max=a;
else
max=b;
printf("max
=%d\n",max);
return 0;
}
13.复合赋值运算符的使用。
#include
int main()
{
int a=3,b=2,c=4,d=8,x;
a+=b*c;
b-=c/b;
printf("%d,%d,%d\n",a,b,c*=2*(a-b));
d%=a;
printf("x=%d\n",x=a+b+c+d);
return 0;
}
14.逗号表达式的使用。
#include
int main()
{
int a,x;
x=(a=3,6*3);
printf("%d,%d\n",a,x);
x=a=3,6*a;
printf("%d,%d\n",a,x);
return 0;
}
15.利用条件表达式输出三个数的最值。
#include
int main()
{
float a,b,c,max;
printf("please input a,b and c:\n");
scanf("%f,%f,%f",&a,&b,&c);
max=a>b?a>c?a:c:b>c?b:c;
printf("max=%f\n",max);
return 0;
}
16.强制类型转换举例。
#include
int main()
{
int x=5,y=2;
float f1,f2;
f1=x/y;
f2=(float)x/y;
printf("%f,%f\n",f1,f2);
return 0;
}
17.输入三角形的三边长求三角形的面积
面积公式area=s*(s-a)*(s-b)*(s-c)的开平方。
#include
#include
int main()
{
double a,b,c,d,e;
printf("请输入三角形的三边长a,b,c:\n");
scanf("%lf,%lf,%lf",&a,&b,&c);
d=1.0/2*(a+b+c);
e=pow(d*(d-a)*(d-b)*(d-c),1.0/2);
printf("%f\n",e);
return 0;
}
18.将字符“C”、“h”、“i”组成的字符串加密后输出
(将每位字符ASCII值加6后变成其他字符的值)
#include
int main()
{
char c1,c2,c3;
c1='C';c2='h';c3='i';
printf("源码是:%c%c%c\n",c1,c2,c3);
c1+=6;c2+=6;c3+=6;
printf("密码是: %c%c%c\n",c1,c2,c3);
return 0;
}
19.将一个字符用两种形式输出;
#include
int main()
{
char c1;
scanf("%c",&c1);
c1=c1-32;
printf("%c,%d\n",c1,c1);
return 0;
}
20.中奖号码随机产生程序。
#include
#include
#include
int main()
{
int q1,q2,q3,q4,q5,q6,q7;
srand(time(NULL));
q1=1+(int)rand()%33;
q2=1+(int)rand()%33;
q3=1+(int)rand()%33;
q4=1+(int)rand()%33;
q5=1+(int)rand()%33;
q6=1+(int)rand()%33;
q7=1+(int)rand()%16;
printf("本期中奖号码:%02d,%02d,%02d,%02d,%02d,%02d,%02d\n",q1,q2,q3,q4,q5,q6,q7);
return 0;
}
21.求一个数的绝对值。
#include
int main()
{
int a;
printf("enter an integer:");
scanf("%d",&a);
if(a>=0)
a=a;
else
a=-a;
printf("%d\n",a);
return 0;
}
22.输入两个数,按从小到大的顺序输出这两个数;
#include
int main()
{
int a,b,t;
printf("enter an number:");
scanf("%d",&a);
printf("enter the other number:");
scanf("%d",&b);
if(a{
t=a;
a=b;
b=t;
}
printf("%d,%d\n",a,b);
return 0;
}
23.输入一个十进制正整数,判断其是否是7的倍数,
若是输出“Yes!”否则输出“No!”。
#include
int main()
{
int a;
printf("enter an number:");
scanf("%d",&a);
if(a%7==0)
printf("Yes!\n");
else
printf("No!\n");
return 0;
}
24.根据收入,计算纳税金额。其中收入高于20000元的纳税金额分两部分,
20000以下部
分按2%收取,高于20000部分按2.5%收取。
#include
#define LOWRATE 0.02
#define HIGHRATE 0.25
#define COUNT 20000
int main()
{
double taxable,taxes;
printf("enter taxable income:");
scanf("%lf",&taxable);
if(taxable<=COUNT)
taxes=taxable*LOWRATE;
else
taxes=LOWRATE*COUNT+HIGHRATE*(taxable-COUNT);
printf("%.3f\n",taxes);
return 0;
}
25.分段函数的求解。
x (x<1)
F(x)={ 2*x (x>=1&&x<5)
x+1 (x>=5)
#include
int main()
{
float x,y;
printf("enter x:");
scanf("%f",&x);
if(x<1)
y=x;
else if(x>=1&&x<5)
y=2*x+1;
else
y=x+1;
printf("%.3f\n",y);
return 0;
}
26.求一元二次方程a*x*x+b*x+c=0的解(a!=0)。
#include
#include
int main()
{
float a,b,c,deta,x1,x2,p,q;
printf("enter a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
deta=b*b-4*a*c;
if(fabs(deta)<=1e-6)
printf("x1=x2=%7.2f\n",-b/(2*a));
else
{
if(deta>1e-6)
{
x1=(-b+sqrt(deta))/(2.0*a);
x2=(-b-sqrt(deta))/(2.0*a);
printf("x1=%7.2f,x2=%7.2f\n",x1,x2);
}
else
{
p=-b/(2*a);
q=sqrt(fabs(deta))/(2*a);
printf("x1=%7.2f+%7.2fi\n",p,q);
printf("x2=%7.2f-%7.2fi\n",p,q);
}
}
return 0;
}
第四章,选择结构
27.从键盘输入一个字符,如果它是大写字母,则把它转化为小写字母;
否则直接输出。
#include
#include
int main()
{
char ch;
printf("enter an character:");
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
printf("ch=%c\n",ch);
return 0;
}
28成绩等级与分数范围有如下关系:A:80~100 B:70~79 C:60~69
D:0~59,根据成绩等级输出成绩范围。
#include"stdio.h"
int main()
{
char grade;
printf("please input grade:");
scanf("%c",&grade);
switch(grade)
{
case'A':printf("scor:80~100\n");break;
case'B':printf("scor:70~79\n");break;
case'C':printf("scor:60~69\n");break;
case'D':printf("scor:0~59\n");break;
default:printf("scor:data error!\n");
}
}
29.输入2005年的一个月份,输出这个月份的天数。
#include"stdio.h"
int main()
{
int month,days;
printf("plese in put the month munber:");
scanf("%d",&month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days=31;break;
case 4:
case 9:
case 11:days=30;break;
case 2:days=28;break;
default:days==0;
}
if(days==0)
printf("input error!\n");
else
printf("2005 year %d month has %d days\n",month,days);
}
30.由公元号判断某一年是否为闰年。
闰年判断条件:能被4整除但不能被400整除时闰年;
或者公元号能被100整除又能被400整除是闰年
#include"stdio.h"
int main()
{
int year;
printf("plese in put the year munber:");
scanf("%d",&year);
if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))
printf("%d年是闰年!\n",year);
else
printf("%d年不是闰年\n",year);
return 0;
}
31.求前100个自然数的和,
#include
int main()
{
int n=1,sum=0;
while(n<101)
{
sum+=n;
n++;
}
printf("sum=%d\n",sum);
return 0;
}
32.使用while求n!
#include
int main()
{
int n,i=1,sum=1;
printf("please input n:");
scanf("%d",&n);
while(i
sum*=i;
i++;
}
printf("%d!=%d\n",n,sum);
return 0;
}
33.编写程序输出所有的水仙花数;
#include
int main()
{
int a,b,c,d;
for(a=100;a<1000;a++)
{
b=a%10;
c=a/10%10;
d=a/100;
if(a==b*b*b+c*c*c+d*d*d)
printf("%d\n",a);
}
printf("\n");
return 0;
}
34.编写程序,实现对用户输入口令的校检。
用户输入的口令如果与预设口令不一致,
则需要重新输入,直到与预设口令一致为止。
#include
int main()
{
char c;
do
{
c=getchar();
}
while(c!='A');
printf("校检成功\n");
return 0;
}
35.计算s=1-1/3+1/5-1/7+....的近似直到最后一项的
绝对值小于0.00000001
#include
#include
int main()
{
double n,d,pi;
int sign=1;
d=1.0;pi=0.0;n=1.0;
do
{
pi=pi+d;
n=n+2;
sign=-sign;
d=sign/n;
}
while(fabs(d)>=1.0e-6);
pi=4.0*pi;
printf("pi=%10.7f\n",pi);
return 0;
}
36.打印九九乘法口诀表。
#include
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%3d*%2d=%2d",j,i,j*i);
printf("\n");
}
return 0;
}
37.输入若干学生的成绩,求平均值。
#include
int main()
{
int i,n,score;
float sum=0,aver;
printf("请输入学生的个数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("请输入学生的成绩:");
scanf("%d",&score);
if(score<0||score>100)
{
printf("输入成绩有误,请重新输入!\n");
i--;
continue;
}
sum+=score;
}
aver=sum/n;
printf("aver=%.2f\n",aver);
return 0;
}
38.判断m是否为素数。
#include
#include
int main()
{
int i,m,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)printf("%d is a prime number\n",m);
else printf("%d is not a prime number\n ",m);
return 0;
}
39.从键盘上输入两个正整数m和n,求它们的最大公约数和最小公倍数。
#include
int main()
{
int k,m,n,max,z;
printf("input m and n:\n");
scanf("%d",&m);
scanf("%d",&n);
for(k=1;k<=(m
z=m*n/max;
printf("m和n的最大公约数是:%d\n最小公倍数为:%d\n",max,z);
return 0;
}
40.编写程序,输出如下所示图形。
D D D D D D D
C C C C C
B B B
A
#include
int main()
{
int i,j,k;
for(i=0;i<4;i++)
{
for(j=0;jprintf(" ");
for(k=0;k<=6-2*i;k++)
printf("%3c",'D'-i);
printf("\n");
}
return 0;
}
4
1.编写程序输出下列图形
*******
* ***** *
** *** **
*** * ***
**** ****
*** * ***
** *** **
* ***** *
*******
#include
int main()
{
int i,j,k,count=0;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(i==j||i+j==8)
printf(" ");
else
printf("*");
count++;
if(count%9==0)
printf("\n");
}
}
return 0;
}
42.使用双重循环输出下列图形
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
#include
int main()
{
int i,j;
for(i=1;i<6;i++)
{
for(j=1;j<=i;j++)
printf("%2d",j);
printf("\n");
}
return 0;
}
43.一个函数简单应用的例子。
#include
int main()
{
void p_star();
void p_message();
p_star();
p_message();
p_star();
return 0;
}
void p_star()
{
printf("******************\n");
}
void p_message()
{
printf(" Good morning!\n");
}
44.在屏幕上显示计算结果时,有时会因为显示的速度太快,还没看
清楚结果,屏幕上的内容就已经滚出屏幕。为了解决这个问题,可以让
显示屏每显示一定的行数后就自动暂停,待用户看清楚屏幕后按键盘上
的任意键,屏幕则继续显示以后的结果。
#include
#include
void pause(void)
{
getchar();
}
int main()
{
int j=0,i;
for(i=1;i<101;i++)
{
printf("%d\n",i);
if(++j==20)
{
j=0;
pause();
}
}
return 0;
}
45.输入半径求圆的周长,面积,球体的体积和表面积
#include
#define PI 3.14
int main()
{
float r,l,s1,s2,v;
printf("请输入半径r:");
scanf("%f",&r);
l=2*PI*r;
s1=PI*r*r;
s2=4*PI*r*r;
v=PI*r*r*r*4.0/3;
printf("圆的周长为%f面积为:%f\n",l,s1);
printf("球的面积为:%f体积为:%f\n",s2,v);
return 0;
}
46.执行以下程序段后,输出的结果是(0 )。
#include
int main()
{
int y=10;
do {y--;}
while (--y);
printf("%d\n",y--);
return 0;
}
47.计算前50项的和1/(n*(n+1)*(n+2))
#include
#define N 51
int main()
{
double sum=0,array[N];
for(int i=1;i
array[i]=1.0/(i*(i+1)*(i+2));
sum+=array[i];
}
printf("%f\n",sum);
return 0;
}
48.计算200到5000之间的能被2,3,5同时整除的数的和
#include
int main()
{
int sum=0;
for(int i=200;i<=5000;i++)
if(i%2==0&&i%3==0&&i%5==0)
{
sum+=i;
}
printf("%d\n",sum);
return 0;
}
49.计算前9项的和n/(n!*(n+1)!)
#include
int main()
{
int flag=1;
double sum=0;
for(int i=1;i<=9;i++)
{
flag*=i;
sum+=1.0*i/(flag*flag*(i+1));
}
printf("%f\n",sum);
return 0;
}
50.输出前n项和,当其第一次出现数的绝对值大于500时求和并终止
;(-1)^n*n*(n+1)*(n+2)
#include
#in
clude
int main()
{
int flag=1,i=1,sum=0;
while(fabs(sum)<=500)
{
flag*=-1;
sum+=flag*i*(i+1)*(i+2);
i++;
}
if(sum<0)
printf("%d\n",-sum);
else
printf("%d\n",sum);
return 0;
}
51.编写程序,输出所有的水仙花数。水仙花数是指一个三位数,
其各位数字的立方和等于其本身。
#include
int main()
{
int a,b,c,d;
for(a=100;a<1000;a++)
{
b=a%10;
c=a/10%10;
d=a/100;
if((b*b*b+c*c*c+d*d*d)==a)
printf("%d\n",a);
}
return 0;
}
52.用公式PI/4=1-1/3+1/5-1/7+...求PI的近似值,直到最后意向的绝对值小于0.000001为止;
#include
#include
int main()
{
double a,b,pi;
int sign=1;
a=1.0;pi=0.0;b=1.0;
do
{
pi+=b;
a+=2;
sign=-sign;
b=sign/a;
}
while(fabs(b)>=1.0e-6);
pi=4.0*pi;
printf("pi=%.7f\n",pi);
return 0;
}
53.输入若干学生的成绩,求其平均值;
#include
int main()
{
int i,n,score;
float sum=0.0,aver;
printf("请输入学生的个数:\n");
scanf("%d23",&n);
for(i=1;i<=n;i++)
{
printf("请输入学生的成绩:");
scanf("%",&score);
if(score<0||score>100)
{
printf("输入学生的成绩有误,请重新输入:");
i--;
continue;
}
sum+=score;
}
aver=sum/n;
printf("%.2f\n",aver);
return 0;
}