min=a;
}
ave=ave/10.0;
printf("max=%d\nmin=%d\nave=%f\n",max,min,ave);
return0;
}
【程序5】
题目:
编写程序,求解一元二次方程ax2+bx+c=0的根,要求考虑a=0,及方程有实数根与复数根的情况。
#includevstdio.h>
#includevmath.h>intmain()
doublea,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
if(a==0)
{x1=x2=-c/b;
printf("realroots:
\nx1=%7.2f\nx2=%7.2f\n",x1,x2);
else
disc=b*b-4*a*c;
if(disc<0)
printf("Thisequationhasn'trealroots\n");
else
{p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("realroots:
\nx1=%7.2f\nx2=%7.2f\n",x1,x2);
return0;
}
【程序6】
题目:
输入任意学生的百分制成绩,要求输出成绩等级‘A'‘B'、‘C'‘D'、‘E'90分以
上为‘A,80-89分为‘B',70-79F分为‘C,60-69分为‘D,60分以下为‘E。
#includeintmain()
intx;
scanf("%d",&x);
printf("Yourscore:
");
if(x>=90&&x<=100)printf('A');
elseif(x>=80&&x<=89)printf('B');
elseif(x>=70&&x<=79)elseif(x>=60&&x<=69)printf('D');
elseprintf('E');
return0;
}
【程序7】
题目:
输入一行字符,分别统计其中的英文字符,空格,数字字符和其他字符的个数是多少?
#includeintmain(){charc[81];
intn1=0,n2=0,n3=0,n4=0,i;
printf("输入一串字符\n");
gets(c);
for(i=0;c[i]!
='\0';i++)
if(c[i]>='a'&&c[i]<='z')
n1++;
elseif(c[i]>='0'&&c[i]<='9')
n2++;
elseif(c[i]=='')
n3++;
elsen4++;
printf("英文字符数=%d数字字符数=%d空格数=%d其他字符数=%d",n1,n2,n3,n4);
return0;
【程序8】
题目:
输入某年某月某日,判断这一天是这一年的第几天?
程序分析:
以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天;如果是闰年且输入月份大于3时需考虑多加一天。
#includevstdio.h>
intmain()
{inta,b,c;
printf("输入某年某月某日\n");
scanf("%d%d%d",&a,&b,&c);
switch(b-1)
{
case11:
c=c+30;
case10:
c=c+31;
case9:
c=c+30;
case8:
c=c+31;
case7:
c=c+31;
case6:
c=c+30;
case5:
c=c+31;
case4:
c=c+30;
case3:
c=c+31;
case2:
;
case1:
c=c+31;
}
if(a%4==0&&a%100!
=0||a%400==0)
c=c+29;
elsec=c+28;
printf("是%£|年的第%cR",a,c);
return0;
}
【程序9】
题目:
古典问题有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个
月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
请写出前30个数。
程序分析:
兔子的规律为Fibonacci序列
1,1,2,3,5,8,13,21....
找出其规律,即可解决问题。
#include
intmain()
{
intf1=1,f2=1,f3;
inti;
printf("%d\n%d\n",f1,f2);
for(i=1;i<=30;i++)
{
f3=f1+f2;
printf("%ld\n",f3);
f1=f2;
f2=f3;
}
return0;
}
【程序10】
题目:
判断101-200之间有多少个素数,并输出所有素数。
程序分析:
判断素数的方法:
用一个数分别去除2到此数的平方根整值,如果能被整除,
则表明此数不是素数,反之是素数。
#includevstdio.h>
#include
intmain()
{
intn,r,i,a=0,w;
for(n=101;*=200;n++)
{
for(i=2,w=0;iv=sqrt(n);i++)
{
if(n%i==0)
w=1;
}
if(w==0)
{printf("%d\n",n);
a=a+1;
}}
printf("%d",a);
return0;
}
【程序11】
“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和
153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三
题目:
打印出所有的等于该数本身。
例如:
次方。
循环控制100-999个数,每个数分解出个位,十位,百位。
程序分析:
利用for
#includevstdio.h>
intmain()
{inti,a,b,c;
for(i=100;i<=999;i++)
{a=i/100;
b=i%100/10;
c=i%100%10;
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\n",i);
}
return0;
}
【程序12】
题目:
输入两整数,求他们的最大公约数和最小公倍数。
程序分析:
最小公倍数等于两整数之乘积除以最大公约数#includevstdio.h>
intmain()
{intn,m,r,temp,p;
printf("输入两个整数\n");
scanf("%d%d",&n,&m);
if(nvm)
{temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{
r=n%m;
n=m;m=r;
printf("它们的最大公约数为:
%d",n);
printf("它们的最小公倍数为:
%d",p/n);
return0;
}
【程序13】
题目:
求1+2!
+3!
+...+20!
的和
#includevstdio.h>
intmain()
{floats=0,t=1;
intn;
for(n=1;*=20;n++)
{t=t*n;
s=s+t;
}
printf("1!
+2!
+....+20!
=%.0lf\n",s);
return0;
}
【程序14】
题目:
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
判断第二个字母。
程序分析:
用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第
二个字母。
#include
intmain()
{charch;
ch=getchar();
switch(ch)
{case'm':
printf("todayisMonday.");break;
case't':
ch=getchar();
if(ch=='u')printf("todayisTuesday.");
elseif(ch=='h')printf("todayisThursday.");break;
case'w':
printf("todayisWednesday.");break;
casefprintf("todayisFriday.");break;
case's':
ch=getchar();if(ch=='a')printf("todayisSaturday.");
elseif(ch=='u')printf("todayisSunday.");break;
default:
printf("error");}
return0;
【程序15】
题目:
八进制转换为十进制(或十六进制转换成十进制)。
8进制
#includevstdio.h>
intmain()
{inti,s,a;
charc[20];
printf("输入一个8进制数:
");
gets(c);s=0;
for(i=0;c[i]!
='\0';i++)
{a=c[i]-48;/*将字符转换成对应数字*/
s=s*8+a;
}
printf(”十进制数:
%d\n",s);
return0;
}
16进制
#include
intmain()
{inti,s,a,w=0;
charc[20];
printf("输入一个16进制数:
");
gets(c);
s=0;
for(i=0;c[i]!
='\0';i++)
{if(c[i]>='0'&&c[i]<='9')a=c[i]-48;
elseif(c[i]>='A'&&c[i]<='E')a=c[i]-55;
else{w=1;break;};
s=s*16+a;
}
if(w==0)printf("十进制数:
%d\n",s);
elseprintf("error\n");
return0;
}
【程序16】
题目:
企业发放的奖金根据利润提成。
利润低于或等于10万元时,奖金可提10%利润高于
10万元,低于20万元时,低于10万元的部分按10%g成,
\l7\l7\l7\l7
1234
咼于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%
40万到60万之间时高于40万元的部分,可提成3%
60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100
万元的部分按1%g成,
从键盘输入当月利润,求应发放奖金总数?
#includevstdio.h>
intmain()
{doublea,b;
printf("当月利润\n");
scanf("%lf",&a);
if(a<=100000)
b=0.1*a;
elseif(a>200000&&a<=400000)b=100000*0.1+100000*0.075+(a-200000)*0.05;
elseif(a>400000&&a<=600000)b=100000*0.175+200000*0.05+(b-400000)*0.03;
elseif(a>600000&&a<=1000000)b=100000*0.275+200000*0.03+(b-600000)*0.015;
elseif(a>1000000)
b=100000*0.1+(a-100000)*0.075;
elseif(a>100000&&a<=200000)
b=100000*0.281+400000*0.015+(b-1000000)*0.01;
printf("奖金为%.5lf元",b);
return0;
}
【程序17】
输出1000以内的完数(一个数恰好等于其因子之和)。
#include
intmain()
{inti,a,j;
for(i=1;i<=1000;i++)
{a=0;
for(j=1;j<=i/2;j++)
if(i%j==0)a=a+j;
if(a==i)printf("%5d",i);
}
return0;
}
(二)关于数组及函数的程序:
【程序18】
题目:
将一个数组中的元素逆序输出。
#include
intmain()
{inta[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=9;i>=0;i--)
printf("%5d",a[i]);
return0;
}
【程序19】
题目:
写一个函数,将一个3*3的整型矩阵转置。
#include
intmain()
{voidzz(intx[3][3]);
inta[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
zz(a);
return0;
}
voidzz(intx[3][3]){inti,j,y[3][3];for(i=0;iv3;i++)for(j=0;j<3;j++)y[i][j]=x[j][i];for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%5d",y[i][j]);printf("\n");}
}
题目:
输入6行6列的矩阵a,然后
1)输出矩阵a
2).将对角线(指矩阵的左上角到右下角的对角线)之外的上三角的每个元素加1,下三
角中的每个元素减1,形成新的矩阵并输出。
3).找出新矩阵a中绝对值最大的元素及其所在的行、列位置并输出。
#include
intmain()
{
inta[6][6],i,j,max,row,colum;
for(i=0;iv6;i++)
输入*/
for(j=0;j<6;j++)
scanf("%d",&a[i][j]);/*
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
printf("%5d",a[i][j]);
printf("\n");
}/*输出*/
max=a[0][0];
for(i=0;i<6;i++)
for(j=0;j<6;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;}/*求最大值,行,列*/
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
return0;
}
【程序21】
输出杨辉三角形。
15101051
#includevstdio.h>
#defineN10
intmain()
{inti,j,a[N][N];
for(i=0;i{a[i][i]=1;
a[i][0]=1;
}
for(i=2;ifor(j=1;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
return0;
}
【程序22】
已有一个排好序的数组{136,7,9},要求输入一个数后,按原来的规律将它插入数组中。
#includevstdio.h>
intmain()
{inta[6]={1,3,6,7,9};inti,j,x,t;
printf("insertdata:
");
scanf("%d",&x);
for(i=0;i<5;i++)
if(xfor(j=5;j>i;j--)a[j]=a[j-1];
a[j]=x;
printf("Nowarraya:
\n");
for(i=0;i<6;i++)
printf("%4d",a[i]);
printf("\n");
return0;
【程序23】
题目:
有15个数按照值的升序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,则输出“无此数”。
已知15个数用赋
初值的方法在程序中给出。
要找的数用scanf函数输入。
#include
intmain()
{inta[15]={1,3,6,7,9,12,14,15,17,19,20,22,23,34,45};
inti=0,j=14,x,k;
printf("finddata:
");scanf("%d",&x);
k=(i+j)/2;
while(x!
=a[k]||i!
=j)
{if(xelsei=k+1;
k=(i+j)/2;}
if(i==j)printf("无此数\n");
elseprintf("NO%5d\n",k);
return0;
}
【程序24】
编写一个程序将两个字符串连接起来,不用strcat函数。
#include
intmain()
{chars1[80],s2[40];
inti,j;
printf("inputstring1:
");
scanf("%s",s1);
printf("inputstring2:
");
scanf("%s",s2);
for(i=0;s1[i]!
='\0';i++)
for(j=0;s2[j]!
='\0';i++,j++)
s1[i]='\0';
printf("\nThenewstringis:
%s\n",s1);
return0;
【程序25】
题目:
设全班有40名同学,计算全班数学成绩的平均分,并统计低于平均分的人数。
#defineN40
main()
intclass[N];
floatsum,ave;
intnumber,i;
sum=0;
number=0;
printf("pleaseenterstudentscore");
for(i=0;iscanf("%d",&class[i]);
sum+=class[i];
ave=sum/N;
for(i=0;iif(class[i]number++;
printf("thenumberoflowedaveis%d",number);
【程序26】
题目:
写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
intmain()
{intlength(charp[20]);
intlen;
charstr[20];
pnntf("pleaseinputastring:
\n");
gets(str);
len=length(str);
printf("thestringhas%dcharacters.",©n);
return0;
intlength(charp[20])
{inti;
for(i=0;p[i]!
='\0';i++)
{}
returni;
【程序27】题目:
输入三个整数,按由小到大的顺序输出。
?
#include
?
intmain()
?
{voidswap(int*p1,int*p2);
intn1,n2,n3;
int*p1,*p2,*p3;
printf("inputthreeintegern1,n2,n3:
");
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3
?
if(n1>n2)swap(p1,p2);
if(n