1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
程序源代码: #include
int main(){
}
int i, j , k ; printf ("\n"); for (i =1; i
2题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
程序源代码:
#include int main(){
int day, month , year , sum , leap ;
printf("\n请输入年、月、日,格式为:年, 月, 日(2015,12,10)\n");
scanf("%d,%d,%d",&year ,&month ,&day ); // 格式为:2015,12,10
switch (month ) // 先计算某月以前月份的总天数
{
case 1:sum =0; break ;
case 2:sum =31; break ;
case 3:sum =59; break ;
case 4:sum =90; break ;
case 5:sum =120; break ;
case 6:sum =151; break ;
case 7:sum =181; break ;
case 8:sum =212; break ;
case 9:sum =243; break ;
case 10
:sum =273; break ;
case 11:sum =304; break ;
case 12:sum =334; break ;
default :printf ("data error"); break ;
}
sum=sum +day ; // 再加上某天的天数
if (year %400==0||(year %4==0&&year %100!=0)) {// 判断是不是闰年
leap=1;
} else {
leap=0;
}
if (leap ==1&&month >2) { // *如果是闰年且月份大于2, 总天数应该加一天
sum++;
}
printf(" 这是这一年的第 %d 天。" , sum );
printf("\n");}
以上实例输出结果为:
3题目:输入三个整数x,y,z ,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x 上,先将x 与y 进行比较,如果x>y则将x 与y 的值进行交换,然后再用x 与z 进行比较,如果x>z则将x 与z 的值进行交换,这样能使x 最小。
程序源代码:
#include
int main(){
int x, y , z , t ;
printf("\n请输入三个数字:\n");
scanf("%d%d%d",&x ,&y ,&z );
if (x >y ) { /*交换x,y 的值*/
t=x ; x =y ; y =t ;
}
if (x >z ) { /*交换x,z 的值*/
t=z ; z =x ; x =t ;
}
if (y >z ) { /*交换z,y 的值*/
t=y ; y =z ; z =t ;
4题目:用*号输出字母C 的图案。
程序分析:可先用'*'号在纸上写出字母C ,再分行输出。
程序源代码: #include "stdio.h"
int main()
{ printf(" 用 * 号输出字母 C!\n");
printf(" ****\n");
printf(" *\n");
printf(" * \n");
printf(" ****\n");
}
5题目:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i 控制行,j 控制列。
程序源代码 #includeint main(){
int i, j , result ;
printf("\n");
for (i =1; i
{
for (j =1; j
{
result=i *j ;
printf("%d*%d=%-3d", i , j , result ); /*-3d表示左对齐,占3位*/
}
printf("\n"); /*每一行后换行*/
}
}
6题目:要求输出国际象棋棋盘。
程序分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用i 控制行,j 来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 #include
int main(){
int i, j ;
for (i =0; i
{
for (j =0; j
if ((i +j )%2==0)
printf("%c%c", 219, 219);
else printf(" ");
printf("\n");
}
return 0;}
7题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可) 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... ,即下个月是上两个月之和(从第三个月开始)。 程序源代码:
#include
int main(){
int f1=1, f2=1, i ;
for (i =1; i
20; i ++)
{
printf("%12d%12d", f1, f2);
if (i %2==0) printf("\n");
f1=f1+f2;
f2=f1+f2;
}
return 0;}
8题目:判断101到200之间的素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数) ,如果能被整除, 则表明此数不是素数,反之是素数。
int i, j ;
int count=0;
for (i =101; i
{
for (j =2; j
{
// 如果j 能被i 整出在跳出循环
if (i %j ==0)
break ;
}
// 判断循环是否提前跳出,如果j=i )
{
count++;
printf("%d ", i );
// 换行,用count 计数,每五个数换行
if (count % 5 == 0)
printf("\n");
}
}
return 0;}
9题目:打印出所有的" 水仙花数" ,所谓" 水仙花数" 是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个" 水仙花数" ,因为153=1的三次方+5的三次方+3的三次方。 程序分析:利用for 循环控制100-999个数,每个数分解出个位,十位,百位。
#include
int main()
{
int i,x,y,z; for(i=100;i
} } x=i%10; y=i/10%10; z=i/100%10; if(i==(x*x*x+y*y*y+z*z*z)) printf("%d\n",i); return 0;
10题目:将一个正整数分解质因数。例如:输入90, 打印出90=2*3*3*5。
程序分析:对n 进行分解质因数,应先找到一个最小的质数k ,然后按下述步骤完成: ∙ (1)如果这个质数恰等于(小于的时候,继续执行循环)n ,则说明分解质因数的过
程已经结束,另外 打印出即可。
∙ (2)但n 能被k 整除,则应打印出k 的值,并用n 除以k 的商, 作为新的正整数n.
重复执行第二步。
∙ (3)如果n 不能被k 整除,则用k+1作为k 的值, 重复执行第一步。 #includeint main(){
int n, i ;
printf(" 请输入整数:" );
scanf("%d",&n );
printf("%d=", n );
for (i =2; i
{
while (n %i ==0)
{
printf("%d", i );
n/=i ;
if (n !=1) printf("*"); }
}
printf("\n");
return 0;}
1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
程序源代码: #include
int main(){
}
int i, j , k ; printf ("\n"); for (i =1; i
2题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
程序源代码:
#include int main(){
int day, month , year , sum , leap ;
printf("\n请输入年、月、日,格式为:年, 月, 日(2015,12,10)\n");
scanf("%d,%d,%d",&year ,&month ,&day ); // 格式为:2015,12,10
switch (month ) // 先计算某月以前月份的总天数
{
case 1:sum =0; break ;
case 2:sum =31; break ;
case 3:sum =59; break ;
case 4:sum =90; break ;
case 5:sum =120; break ;
case 6:sum =151; break ;
case 7:sum =181; break ;
case 8:sum =212; break ;
case 9:sum =243; break ;
case 10
:sum =273; break ;
case 11:sum =304; break ;
case 12:sum =334; break ;
default :printf ("data error"); break ;
}
sum=sum +day ; // 再加上某天的天数
if (year %400==0||(year %4==0&&year %100!=0)) {// 判断是不是闰年
leap=1;
} else {
leap=0;
}
if (leap ==1&&month >2) { // *如果是闰年且月份大于2, 总天数应该加一天
sum++;
}
printf(" 这是这一年的第 %d 天。" , sum );
printf("\n");}
以上实例输出结果为:
3题目:输入三个整数x,y,z ,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x 上,先将x 与y 进行比较,如果x>y则将x 与y 的值进行交换,然后再用x 与z 进行比较,如果x>z则将x 与z 的值进行交换,这样能使x 最小。
程序源代码:
#include
int main(){
int x, y , z , t ;
printf("\n请输入三个数字:\n");
scanf("%d%d%d",&x ,&y ,&z );
if (x >y ) { /*交换x,y 的值*/
t=x ; x =y ; y =t ;
}
if (x >z ) { /*交换x,z 的值*/
t=z ; z =x ; x =t ;
}
if (y >z ) { /*交换z,y 的值*/
t=y ; y =z ; z =t ;
4题目:用*号输出字母C 的图案。
程序分析:可先用'*'号在纸上写出字母C ,再分行输出。
程序源代码: #include "stdio.h"
int main()
{ printf(" 用 * 号输出字母 C!\n");
printf(" ****\n");
printf(" *\n");
printf(" * \n");
printf(" ****\n");
}
5题目:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i 控制行,j 控制列。
程序源代码 #includeint main(){
int i, j , result ;
printf("\n");
for (i =1; i
{
for (j =1; j
{
result=i *j ;
printf("%d*%d=%-3d", i , j , result ); /*-3d表示左对齐,占3位*/
}
printf("\n"); /*每一行后换行*/
}
}
6题目:要求输出国际象棋棋盘。
程序分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用i 控制行,j 来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 #include
int main(){
int i, j ;
for (i =0; i
{
for (j =0; j
if ((i +j )%2==0)
printf("%c%c", 219, 219);
else printf(" ");
printf("\n");
}
return 0;}
7题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可) 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... ,即下个月是上两个月之和(从第三个月开始)。 程序源代码:
#include
int main(){
int f1=1, f2=1, i ;
for (i =1; i
20; i ++)
{
printf("%12d%12d", f1, f2);
if (i %2==0) printf("\n");
f1=f1+f2;
f2=f1+f2;
}
return 0;}
8题目:判断101到200之间的素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数) ,如果能被整除, 则表明此数不是素数,反之是素数。
int i, j ;
int count=0;
for (i =101; i
{
for (j =2; j
{
// 如果j 能被i 整出在跳出循环
if (i %j ==0)
break ;
}
// 判断循环是否提前跳出,如果j=i )
{
count++;
printf("%d ", i );
// 换行,用count 计数,每五个数换行
if (count % 5 == 0)
printf("\n");
}
}
return 0;}
9题目:打印出所有的" 水仙花数" ,所谓" 水仙花数" 是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个" 水仙花数" ,因为153=1的三次方+5的三次方+3的三次方。 程序分析:利用for 循环控制100-999个数,每个数分解出个位,十位,百位。
#include
int main()
{
int i,x,y,z; for(i=100;i
} } x=i%10; y=i/10%10; z=i/100%10; if(i==(x*x*x+y*y*y+z*z*z)) printf("%d\n",i); return 0;
10题目:将一个正整数分解质因数。例如:输入90, 打印出90=2*3*3*5。
程序分析:对n 进行分解质因数,应先找到一个最小的质数k ,然后按下述步骤完成: ∙ (1)如果这个质数恰等于(小于的时候,继续执行循环)n ,则说明分解质因数的过
程已经结束,另外 打印出即可。
∙ (2)但n 能被k 整除,则应打印出k 的值,并用n 除以k 的商, 作为新的正整数n.
重复执行第二步。
∙ (3)如果n 不能被k 整除,则用k+1作为k 的值, 重复执行第一步。 #includeint main(){
int n, i ;
printf(" 请输入整数:" );
scanf("%d",&n );
printf("%d=", n );
for (i =2; i
{
while (n %i ==0)
{
printf("%d", i );
n/=i ;
if (n !=1) printf("*"); }
}
printf("\n");
return 0;}