C、C++编程入口,常见的编程题
1.设计一个从5个数中取最小数和最大数的程序。
2.#include<stdio.h>
3.int min(int a[],int i);
4.int max(int a[],int i);
5.int main()
6.{
7. int a[5];
8. printf("输入五个数:\n");
9. for(int i=0;i<5;i++)
10. {
11. scanf("%2d",&a[i]);
12. }
13. printf("最小值是:");
14. min(a,5);
15. printf("最大值是:");
16. max(a,5);
17. return 0;
18.}
19.int min(int a[],int i)
20.{
21. int min=a[0] ;
22. for(i=0;i<5;i++)
23. {
24. // scanf("%2d",a[i]);
25. if(a[i]<min)
26. min=a[i];
27. }
28. printf("%2d",min);
29. printf("\n");
30. return min;
31.}
32.int max(int a[],int i)
33.{
34. int max=a[0];
35. for(i=0;i<5;i++)
36. {
37. //scanf("00000%d ",a[i]);
38. if(a[i]>max)
39. max=a[i];
40. }
41. printf("%2d",max);
42. printf("\n");
43. return max;
44.}
2.输入某年某月某日,判断这一天是这一年的第几天?
3.#include <stdio.h>
4.int leap(int x);
5.int main()
6.{
7. int i,year,mon,day,days=0;
8. int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
9. printf("分别输入年、月、日:");
10. scanf("%4d%2d%2d",&year,&mon,&day);
11. for(i=0;i<=mon;i++)
12. {
13. days=days+a[i];
14. }
15.if(leap(year))
16. {
17. days=days+1;
18.}
19.printf("%4d年%2d月%2d日式这年的第%d天",year,mon,day,days);
20.printf("\n");
21.return 0;
22.}
23.int leap(int x)
24.{
25. if(x%4==0&&x%100!=0)
26. return 1;
27. else
28. return 0;
29.}
3.求1!+2!+3!+…+20!。
4.#include<stdio.h>
5.int fact(int n);
6.
7.int main()
8.{
9. int s=fact(20);
10. printf("1!+2!+3!+…+20!=%d",s);
11. printf("\n");
12. return 0;
13.
14.}
15.int fact(int n)
16.{
17. int sum=1;
18. for(int i=2;i<=n;i++)
19. {
20. for(int n=i-1;n>=1;n--)
21. {sum=sum+i*(i-n);}
22. }
23.if(n<=0)
24.{
25. printf("error");
26.}
27. printf("%d",sum);
28. return sum;
29.}
3.求1!+2!+3!+…+20!。
4.#include<stdio.h>
5.int fact(int n);
6.
7.int main()
8.{
9. int s=fact(20);
10. printf("1!+2!+3!+…+20!=%d",s);
11. printf("\n");
12. return 0;
13.
14.}
15.int fact(int n)
16.{
17. int sum=1;
18. for(int i=2;i<=n;i++)
19. {
20. for(int n=i-1;n>=1;n--)
21. {sum=sum+i*(i-n);}
22. }
23.if(n<=0)
24.{
25. printf("error");
26.}
27. printf("%d",sum);
28. return sum;
29.}
30.
4.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等
于该数本身。
#include <stdio.h>
int main()
{
int n,i,j,k;
for(n=100;n<1000;n++)
{
i=n/100;//百位
j=(n%100)/10;//十位
k=n%10;//个位
if(n==i*i*i+j*j*j+k*k*k)
printf("水仙花数有:%d\n",n);
}
return 0;
}
5.求数列a0,a1,a2,a3,…,a20。已知:
a0=0,a1=1,a2=1
a3= a0+2a1+a2
a4= a1+2a2+a3
……
#include <stdio.h>
int main()
{
int a[20];
a[0]=0,a[1]=1,a[2]=1;
for(int n=3;n<=20;n++)
{
a[n]=a[n-3]+2*a[n-2]+a[n-1];
}
for(n=3;n<=20;n++)
{
printf("a[%d]=%d\n",n,a[n]);
}
return 0;
}
6.要将一张100元的大钞票,换成等值的10元、5元、2元、1元的小钞票。要求每次换成40张小钞票,每种至少一张。编程找出所有可能的换法。
7.#include <stdio.h>
8.int main()
9.{
10. int a=100,j,k,m,n;//10元、5元、2元、1元的小钞票分别为j、k、m、n张
11. a=j+k+m+n=40;
12. if(j>=1 && k>=1 &&m>=1 && n>=1)
13. printf("10元的%d张",(100-(5*k)-(2*m)-n)/10);
14. printf("5元的%d张",(100-(10*j)-n)/5);
15. printf("1元的%d张",(100-(10*j)-(5*k)));
16.return 0;
17.}
7.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编写一程序找出6~10000之内的所有完数,并按下面的格式输出:6=1+2+3
8.#include <stdio.h>
9.int WanShu(int n);
10.int main()
11.{
12.WanShu(1000);
13.return 0;
14.}
15.int WanShu(int m)
16.{
17.int i,j,s;
18.for(m=6;m<10000;m++)
19.{
20.s=0;
21./* 求出m的所有因子之和s */
22.for(i=1;i<m;i++)
23.if(m%i==0) s=s+i;
24./* 若m和s相等,按题中所示格式输出 */
25.if(m==s)
26.{
27.printf("%5d=",m);
28.for(j=1;j<m;j++)
29.if(m%j==0) printf("%d+",j);
30.printf("\b \n");
31.}
32.}
33. return 0;
34.}