c语言习题解.docx
《c语言习题解.docx》由会员分享,可在线阅读,更多相关《c语言习题解.docx(17页珍藏版)》请在冰豆网上搜索。
c语言习题解
编写一个程序,输出当年当月的月历。
#include
main()
{intyear,month,leap=0,days,mfirst=0,one,i;
scanf("%d%d%d",&year,&month,&one);
if(year%4==0&&year%100!
=0||year%400==0) leap=1;
for(i=1;i<=month;i++)
{
switch(i){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
days=31;break;
case2:
if(leap==1) days=29;
else days=28;
break;
case4:
case6:
case9:
case11:
days=30;break;
}
mfirst+=days;
}
mfirst-=days;
mfirst=mfirst+one;
mfirst=mfirst%7;
printf("days=%d\n",days);
printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
for(i=1;i<=mfirst;i++)
{
printf("\t");
}
for(i=1;i<=days;i++)
{if(mfirst%7==0)printf("\n");
printf("%d\t",i);
mfirst++;
}
getch();
}
P596输入100个数,统计其中偶数的平均值
#include
main()
{
inti,j,sum=0,count=0;
for(i=1;i<=100;i++)
{
scanf("%d",&j);
if(j%2==0)
{
sum=sum+j;
count++;
}
}
printf("偶数的平均值是:
%f",sum*1.0/count);
getch();
}
输入一个正整数,输出这个整数的所有因子
#include
intmain(void)
{
inta,i;
printf("请输入一个正整数:
");
scanf("%d",&a);
if(a<=0)
{
printf("输入的数不是正数");
return1;
}
printf("%d的因子有:
\n",a);
for(i=1;i<=a;i++)
{
if(a%i==0)
{
printf("%d",i);
}
}
return0;
}
输入一行英文句子,输出到屏幕上,
并将每个单词的首字符改写成大写字母
#include
voidmain()
{
intword=0;
charc;
while((c=getchar())!
='\n')
if(c==''){word=0;putchar(c); }
elseif(word==0)
{word=1;
if(c>='a'&&c<='z') putchar(c-32);
elseputchar(c);
}
elseputchar(c);
}
输出100以内的所有素数,每行输出5个
#include"stdio.h"
main()
{
intm,i,count=0;
for(m=2;m<=100;m++)
{for(i=2;i<=m-1;i++)
if(m%i==0)break;
if(i==m)
{
printf("%5d",m);
count++;
if(count%5==0)printf("\n");
}
}
}
输入4个整数,输出最大最小值
#include
intmain(void)
{
intmax=-32768,min=32767;
inti,j;
printf("请输入4个整数:
");
for(i=1;i<=4;i++)
{
scanf("%d",&j);
if(j>max) max=j;
if(j }
printf("\n最大值是:
%d,最小值是:
%d",max,min);
return0;
}
水仙花数
解一:
#include"stdio.h"
main()
{
intb,s,g,n;
for(b=1;b<=9;b++)
for(s=0;s<=9;s++)
for(g=0;g<=9;g++)
{n=100*b+10*s+g;
if(n==b*b*b+s*s*s+g*g*g)printf("%d,",n);
}
}
解二:
#include"stdio.h"
main()
{
intb,s,g,n;
for(n=100;n<=999;n++)
{b=n/100;
s=n%100/10;
g=n%10;
if(n==b*b*b+s*s*s+g*g*g)printf("%d,",n);
}
}
输出1*2*3+2*3*4+....+99*100*101
#include
intmain(void)
{
longi,j,sum=0;
for(i=1;i<100;i++)
{
j=i*(i+1)*(i+2);
sum+=j;
}
printf("%ld",sum);
getch();
return0;
}
三色球红3白3黑6取8
#include
main()
{inti,j,k;
printf("red white black\n");
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
{k=8-i-j;
if(k>=0&&k<=6)printf("%d %d %d\n",i,j,k);
}
}
计算1-1/2+1/3-…+1/99-1/100+…
直至最后项的绝对值小于10-4为止。
#include
#include
main()
{floaty=0,temp,s=1;
inti=1;
do{temp=s/i;
y=y+temp;
i++;
s=-s;
}while(fabs(temp)>=1e-4);
printf("1-1/2+...+1/99-1/100=%f\n",y);
}
求解100的所有质因子
解一:
#include
main()
{intm,i,n,k;
scanf("%d",&m); /*m被求质因子的数*/
k=m/2; /*质因子在2到k之间*/
for(i=2;i<=k;i++) /*在2到k之间求质因子*/
if(m%i==0) /*判断i如果是因子*/
{for(n=2;n
if(i%n==0)break;
if(n==i) /*i是质因子*/
printf("%d ",i);
}
}
P1215.查找一个整数key
#include
#include
main()
{intnum[100],i,key,found=0;
randomize();
for(i=0;i<100;i++)
num[i]=random(100);
printf("inputlookfornumber:
");
scanf("%d",&key);
for(i=0;i<100;i++)
if(num[i]==key)
{printf("num[%d]=%d, ",i,num[i]);
found=1;
}
if(found==0)printf("notfound\n");
getch();
}
软件下载次数排序
#include
#include
main()
{intnum[101],count[101],i,j,k,temp;
randomize();
for(i=1;i<101;i++)
num[i]=i;
for(i=1;i<101;i++)
count[i]=random(100);
for(i=1;i<100;i++)
{k=i;
for(j=i+1;j<101;j++)
if(count[k] if(k!
=i)
{temp=count[i];count[i]=count[k];count[k]=temp;
temp=num[i];num[i]=num[k];num[k]=temp;
}
}
for(i=1;i<=10;i++)
printf("bian_hao:
%d,ci_shu:
%d,",num[i],count[i]);
printf("\n0_count:
");
for(i=1;i<101;i++)
if(count[i]==0)printf("%d,",num[i]);
getch();
}
统计单词数目
#include
voidmain()
{charstring[81];
inti,num=0,word=0;
charc;
gets(string);
for(i=0;(c=string[i])!
=‘\0’;i++)
if(c==‘’)word=0;
elseif(word==0)
{word=1;
num++;
}
printf(“Thereare%dwords.\n”,num);
}
排序:
输入n个值,选择排序,挑选出前m个数值,立即结束。
#include
#definenum100
main()
{inta[num],i,j,k,n,m,temp;
printf("n=?
(n<100),m=?
(m scanf("%d%d",&n,&m);
for(i=0;i scanf("%d",&a[i]);
for(i=0;i {k=i;
for(j=i+1;j if(a[j] temp=a[i];
a[i]=a[k];
a[k]=temp;
}
for(i=0;iprintf("%d, ",a[i]);
getch();
}
输出年、月、日。
#include
#include
main()
{chardate[11];
charmm[3];
intmonth,day,year;
printf("inputdate(mm/dd/yyyy)?
");
gets(date);
month=(date[0]-'0')*10+date[1]-'0';
day=(date[3]-'0')*10+date[4]-'0';
year=(date[6]-'0')*1000+(date[7]-'0')*100+(date[8]-'0')*10+date[9]-'0';
switch(month)
{case1:
strcpy(mm,"Jan");break;
case2:
strcpy(mm,"Feb");break;
case3:
strcpy(mm,"Mar");break;
case4:
strcpy(mm,"Apr");break;
case5:
strcpy(mm,"May");break;
case6:
strcpy(mm,"Jun");break;
case7:
strcpy(mm,"Jul");break;
case8:
strcpy(mm,"Aug");break;
case9:
strcpy(mm,"Sep");break;
case10:
strcpy(mm,"Oct");break;
case11:
strcpy(mm,"Nov");break;
case12:
strcpy(mm,"Dec");break;
}
printf("%s,%d,%d\n",mm,day,year);
getch();
}
输出1000以内的所有素数
解:
#include
intisPrime(intx)
{
inti;
for(i=2;i {
if(x%i==0)break;
}
if(i==x)
return1;
else
return0;
}
main()
{
inty,line=0;
for(y=1;y<=1000;y++)
{
if(isPrime(y))
{
printf("%5d",y);
line++;
if(line%8==0)printf("\n");
}
}
}
或:
intisPrime(intx)
{
inti;
for(i=2;i if(x%i==0)return0;
}
return1;
}
将给定字符串中的所有字母改成小写字母。
#include
#include
voidfunc(charstr[])
{
inti;
for(i=0;str[i]!
='\0';i++)
{
if(str[i]>='A'&&str[i]<='Z')
str[i]=str[i]+32;
}
}
main()
{
char str[100];
printf("pleaseinputastring:
");
gets(str);
func(str);
printf("%s",str);
}
求1*2+2*3+3*4+……+n*(n+1)
解:
#include
longfunc(intx)
{
longinti,sum=0;
for(i=1;i<=x;i++)
{
sum+=i*(i+1);
}
returnsum;
}
main()
{
intn;
printf("\npleaseinputn=");
scanf("%d",&n);
printf("\nTheresultis:
%ld",func(n));
}
三角函数
解:
#include
#include
main()
{
intn;
doublex,y;
printf("\n========MENU========");
printf("\nsin................1");
printf("\ncos................2");
printf("\npow................3");
printf("\nsqrt...............4");
printf("\nexit...............5");
printf("\nSelect:
");
scanf("%d",&n);
switch(n)
{case1:
printf("inputdoublex:
");
scanf("%lf",&x);
y=sin(x);break;
case2:
printf("inputdoublex:
");
scanf("%lf",&x);
y=cos(x);break;
case3:
printf("inputdoublex y:
");
scanf("%lf%lf",&x,&y);
y=pow(x,y);break;
case4:
printf("inputdoublex:
");
scanf("%lf",&x);
y=sqrt(x);break;
case5:
exit();
default:
printf("Error!
");
}
printf("y=%lf",y);
}
100名职工输出低于300
#include
#defineNUM5
structWorkerInfo{
charNumber[10];
charname[10];
floatwage;
};
voidmain()
{
structWorkerInfowi[NUM];
inti;
floatsum=0;
for(i=0;i {
printf("Pleaseinputthe%dwoker'sinformation:
",i+1);
scanf("%s",wi[i].Number); /*Number为数组名,不加&*/
scanf("%s",wi[i].name);
scanf("%f",&wi[i].wage);
sum+=wi[i].wage;
}
printf("\nTheaveragewageis:
%f\n",sum/NUM);
printf("Number name wage\n");
for(i=0;i {
if(wi[i].wage<300.00)
printf("%s,%s,%6f\n",wi[i].Number,wi[i].name,wi[i].wage);
}
}