1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include <stdio.h>
int main()
{
int sum1,b,c,d,e,sum2;
for(sum1=1000;sum1<10000;sum1++)
{
b=sum1%10;
c=sum1%100/10;
d=sum1/100%10;
e=sum1/1000;
if(b==c||c==d||d==e)
{
continue;
}
sum2=b*1000+c*100+d*10+e;
if(sum1==4*sum2)
{
printf("原四位数为%d",sum1);
}
else
{
continue;
}
}
return 0;
}

2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include <stdio.h>
int main()
{
long n,sum=0,m;
printf("请输入一串数字");
scanf("%ld",&n);
while(n>0)
{
m=n%10;
n=n/10;
sum+=m;
}
printf("%d ",sum);
switch(sum)
{
case 1:
printf("January\n");
break;
case 2:
printf("February\n");
break;
case 3:
printf("March\n");
break;
case 4:
printf("April\n");
break;
case 5:
printf("May\n");
break;
case 6:
printf("June\n");
break;
case 7:
printf("July\n");
break;
case 8:
printf("August\n");
break;
case 9:
printf("September\n");
break;
case 10:
printf("October\n");
break;
case 11:
printf("November\n");
break;
case 12:
printf("December\n");
break;
default:
printf("***\n");
}
return 0;
}

3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:2
输出样例:234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
#include <stdio.h>
int main()
{
int i,j,k,A,sum=0,a;
printf("请输入一个不大于6的正整数A\n");
scanf("%d",&A);
if(A>=1&&A<=6)
{
for(i=A;i<=A+3;i++)
{
for(j=A;j<=A+3;j++)
{
for(k=A;k<=A+3;k++)
{
if(i!=j&&i!=k&&j!=k)
{
sum=i*100+j*10+k;
a++;
printf("%4d",sum);
if(a%6==0)
{
printf("\n");
}
}
}
}
}
}
else
{
printf("error");
}
return 0;
}

综合小项目
自动出题器:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a,b,d,result,g=0,i,y,s,x,z,q=0,answer,l=0;
float accuracy1,accuracy2;
char c,m;
do{
for(i=1;i<=5;i++)
{
srand(time(NULL));
a=rand()%100+1;
b=rand()%100+1;
d=rand()%4+1;
switch(d)
{
case 1:c=‘+‘;
result=a+b;
break;
case 2:c=‘-‘;
result=a-b;
break;
case 3:c=‘*‘;
result=a*b;
break;
case 4:c=‘/‘;
s=a/b;
y=a%b;
break;
}
printf("%d%c%d=?\n",a,c,b);
printf("请输入答案");
if(c==‘/‘)
{
printf("请分别输出商和余数,用空格分开");
scanf("%d %d",&x,&z);
q++;
if(x==s&&z==y)
{
g++;
l++;
printf("答对了\n");
continue;
}
else
{
printf("答错了,正确的答案是商为%d,余数为%d\n",s,y);
continue;
}
}
scanf("%d",&answer);
q++;
if(answer==result)
{
g++;
l++;
printf("答对了\n");
}
else
{
printf("答错了,正确的答案是%d\n",result);
}
if(i==5)
{
accuracy1=l/5.0*100;
printf("本次一共做对了%d道题,正确率为%.2f%%\n",l,accuracy1);
printf("继续吗?Y or N\n");
scanf(" %c",&m);
}
}
l=0;
}while(m==121||m==89);
accuracy2=(float)g/q*100;
printf("一共做了%d道题,做对了%d道题,正确率%.2f%%\n!",q,g,accuracy2);
return 0;
}

附加题
有16根火柴,可以拼出多少个形如“A+B=C”的等式,A、B、C是用火柴棍拼出的整数,且为一位数,输出该等式形式。
注意: 1. 加号与等号各自需要两根火柴棍 2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. 16根火柴棍必须全部用上
用火柴棍拼数字0-9的拼法如图所示:

#include <stdio.h>
int main()
{
int A,B,C,a,b,c;
for(a=0;a<=9;a++)
for(b=0;b<=9;b++)
{
switch(a)
{
case 0:A=6;break;
case 1:A=2;break;
case 2:A=5;break;
case 3:A=5;break;
case 4:A=4;break;
case 5:A=5;break;
case 6:A=6;break;
case 7:A=3;break;
case 8:A=7;break;
case 9:A=6;break;
}
switch(b)
{
case 0:B=6;break;
case 1:B=2;break;
case 2:B=5;break;
case 3:B=5;break;
case 4:B=4;break;
case 5:B=5;break;
case 6:B=6;break;
case 7:B=3;break;
case 8:B=7;break;
case 9:B=6;break;
}
c=a+b;
switch(c)
{
case 0:C=6;break;
case 1:C=2;break;
case 2:C=5;break;
case 3:C=5;break;
case 4:C=4;break;
case 5:C=5;break;
case 6:C=6;break;
case 7:C=3;break;
case 8:C=7;break;
case 9:C=6;break;
}
if(A+B+C==12&&a!=b&&a+b==c)
{
printf("%d+%d=%d\n",a,b,c);
}
}
return 0;
}

实验总结:1.注意for语句的嵌套,注意大括号的位置,有时候程序问题往往就在大括号的位置。
2.注意使用switch语句的使用,变量的初值设定。
3..注意定义变量时,要注意分清定义的变量,避免混淆。
知识点总结:1.注意赋值和等于的区别。
2.循环嵌套时,外循环执行一次,内循环执行一回。
原文:http://www.cnblogs.com/a378/p/6050231.html