喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
 22  1/3  1  2  3  > 
     
标题: [闲谈] C程序开发经典实例之  
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
风云山庄大少爷


UID 62639
精华 2
积分 14352
帖子 7229
金钱 14212 喜悦币
威望 20
人脉 120
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
C程序开发经典实例之

【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:
main()
{
    int i, j, k;
    printf("\n");
    for(i=1; i<5; i++) /*以下为三重循环*/
        for(j=1; j<5; j++)
            for(k=1; k<5; k++)
            {
                if(i != k && i !=j && j != k) /* 确保i、j、k三位互不相同 */
                    printf("%d, %d, %d\n", i, j, k);
            }
}

【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
2.程序源代码:
main()
{
    long int i;
    int bonus1, bonus2, bonus4, bonus6, bonus10, bonus;
    scanf("%ld", &i);
    bonus1 = 100000 * 0.1;
    bonus2 = bonus1 + 100000 * 0.75;
    bonus4 = bonus2 + 200000 * 0.5;
    bonus6 = bonus4 + 200000 * 0.3;
    bonus10 = bonus6 + 400000 * 0.15;
    if(i <= 100000)
        bonus = i * 0.1;
    else if(i <= 200000)
        bonus = bonus1 + (i - 100000) * 0.075;
    else if(i <= 400000)
        bonus = bonus2 + (i - 200000) * 0.05;
    else if(i <= 600000)
        bonus = bonus4 + (i - 400000) * 0.03;
    else if(i <= 1000000)
        bonus = bonus6 + (i - 600000) * 0.015;
    else
        bonus = bonus10 + (i - 1000000) * 0.01;
    printf("bonus=%d", bonus);
}

【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
2.程序源代码:
#include <math.h>
/* 欢迎访问 C++Builder研究 - www.ccrun.com */
main()
{
    long int i, x, y, z;
    for(i=1; i<100000; i++)
    {
        x = sqrt(i + 100); /* x为加上100后开方后的结果 */
        y = sqrt(i + 268); /* y为再加上168后开方后的结果 */
        /* 如果一个数的平方根的平方等于该数,这说明此数是完全平方数 */
        if(x * x == i + 100 && y * y == i + 268)
            printf("\n%ld\n", i);
    }
}

【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
main()
{
    int day, month, year, sum, leap;
    printf("\nplease input year, month, day\n");
    scanf("%d, %d, %d", &year, &month, &day);
    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;
// 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=644&d=j2f8vx
    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("It is the %dth day.", sum);
}

【程序5】
题目:输入三个整数x, y, z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最? ?
2.程序源代码:
main()
{
    int x, y, z, t;
    scanf("%d%d%d", &x, &y, &z);
    if(x>y)
    {
        t = x; x = y; y = t;
    } /* 交换x, y的值 */
    if(x > z)
    {
        t = z; z = x; x = t;
    } /* 交换x, z的值 */
    if(y > z)
    {
        t = y; y = z; z = t;
    } /* 交换z, y的值 */
    printf("small to big: %d %d %d\n", x, y, z);
}

【程序6】
题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
2.程序源代码:
#include "stdio.h"
main()
{
    /* 63 63 72 75 6E 2E 63 6F 6D */
    printf("Hello C-world!\n");
    printf(" ****\n");
    printf(" *\n");
    printf(" * \n");
    printf(" ****\n");
}

【程序7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
1.程序分析:字符共有256个。不同字符,图形不一样。
2.程序源代码:
#include "stdio.h"
main()
{
    char a=176, b=219;
    printf("%c%c%c%c%c\n", b, a, a, a, b);
    printf("%c%c%c%c%c\n", a, b, a, b, a);
    printf("%c%c%c%c%c\n", a, a, b, a, a);
    printf("%c%c%c%c%c\n", a, b, a, b, a);
    printf("%c%c%c%c%c\n", b, a, a, a, b);
}

【程序8】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:
#include "stdio.h"
main()
{
    int i, j, result;
    printf("\n");
    for(i = 1; i < 10; i++)
    {
        for(j=1;j<10;j++)
        {
            result = i * j;
            printf("%d*%d=%-3d", i, j, result); /* -3d表示左对齐,占3位 */
        }
        printf("\n"); /* 每一行后换行 */
    }
}

【程序9】
题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:
#include "stdio.h"
/* 欢迎访问 C++Builder研究 - www.ccrun.com */
main()
{
    int i, j;
    for(i=0; i<8; i++)
    {
        for(j=0; j<8;j++)
            if((i + j) % 2 == 0)
                printf("%c%c", 219, 219);
            else
                printf(" ");
        printf("\n");
    }
}

【程序10】
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:
#include "stdio.h"
main()
{
    int i, j;
    printf("\1\1\n"); /* 输出两个笑脸 */
    for(i=1; i<11; i++)
    {
        for(j=1; j<=i; j++)
            printf("%c%c", 219, 219);
        printf("\n");
    }
}




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流)、饿踢Blog

寧可在嘗試中失敗,也不在保守中成功!

不為失敗找理由,只為成功找方法!
 
2008-3-31 08:50 AM#1
查看资料  访问主页  Blog  发短消息  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
风云山庄大少爷


UID 62639
精华 2
积分 14352
帖子 7229
金钱 14212 喜悦币
威望 20
人脉 120
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 招募技术合伙人
【程序11】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1, 1, 2, 3, 5, 8, 13, 21....
2.程序源代码:
main()
{
    long f1, f2;
    int i;
    f1 = f2 = 1;
    for(i = 1; i <= 20; i++)
    {
        printf("%12ld %12ld", f1, f2);
        if(i % 2 == 0)
            printf("\n"); /* 控制输出,每行四个 */
        f1 = f1 + f2; /* 前两个月加起来赋值给第三个月 */
        f2 = f1 + f2; /* 前两个月加起来赋值给第三个月 */
    }
}

【程序12】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
2.程序源代码:
#include "math.h"
/* 欢迎访问 C++Builder研究 - www.ccrun.com */
main()
{
    int m, i, k, h=0, leap=1;
    printf("\n");
    for(m = 101; m <= 200; m++)
    {
        k = sqrt(m + 1);
        for(i = 2; i <= k; i++)
        if(m % i == 0)
        {
            leap = 0; break;
        }
        if(leap)
        {
            printf("%-4d", m); h++;
            if(h%10==0)
                printf("\n");
        }
        leap=1;
    }
    printf("\nThe total is %d", h);
}

【程序13】
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
main()
{
    int i, j, k, n;
    printf("'water flower'number is:");
    for(n = 100; n < 1000; n++)
    {
        i = n / 100; /* 分解出百位 */
        j = n / 10 % 10; /* 分解出十位 */
        k = n % 10; /* 分解出个位 */
        if(i * 100 + j * 10 + k == i * i * i + j * j * j + k * k * k)
        {
            printf("%-5d", n);
        }
    }
    printf("\n");
}

【程序14】
题目:将一个正整数分解质因数。例如:输入90, 打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商, 作为新的正整数你n, 重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值, 重复执行第一步。
2.程序源代码:
/* zheng int is divided yinshu*/
main()
{
    int n, i;
    printf("\nplease input a number:\n");
    scanf("%d", &n);
    printf("%d=", n);
    for(i=2;i<=n;i++)
    {
        while(n != i)
        {
            if(n % i == 0)
            {
                printf("%d*", i);
                n = n / i;
            }
            else
                break;
        }
    }
    printf("%d", n);
}

【程序15】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
2.程序源代码:
main()
{
    int score;
    char grade;
    printf("please input a score\n");
    scanf("%d", &score);
    grade = score >= 90? 'A': (score>=60?'B':'C');
    printf("%d belongs to %c", score, grade);
}

【程序16】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
// 本文转自 C++Builder研究 - http://www.ccrun.com/article.asp?i=645&d=5vdqap
1.程序分析:利用辗除法。
2.程序源代码:
main()
{
    int a, b, num1, num2, temp;
    printf("please input two numbers:\n");
    scanf("%d, %d", &num1, &num2);
    if(num1 < num2)
    {
        temp = num1;
        num1 = num2;
        num2 = temp;
    }
    a = num1; b = num2;
    while(b != 0) /* 利用辗除法,直到b为0为止 */
    {
        temp = a % b;
        a = b;
        b = temp;
    }
    printf("gongyueshu:%d\n", a);
    printf("gongbeishu:%d\n", num1 * num2 / a);
}

【程序17】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句, 条件为输入的字符不为'\n'.
2.程序源代码:
#include "stdio.h"
/* 欢迎访问 C++Builder研究 - www.ccrun.com */
main()
{
    char c;
    int letters = 0, space = 0, digit = 0, others = 0;
    printf("please input some characters\n");
    while((c = getchar()) != '\n')
    {
        if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
            letters++;
        else if(c == ' ')
            space++;
        else if(c >= '0' && c <= '9')
            digit++;
        else
            others++;
    }
    printf("all in all:char=%d space=%d digit=%d others=%d\n", letters, space, digit, others);
}

【程序18】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
2.程序源代码:
main()
{
    int a, n, count = 1;
    long int sn = 0, tn = 0;
    printf("please input a and n\n");
    scanf("%d, %d", &a, &n);
    printf("a=%d, n=%d\n", a, n);
    while(count <= n)
    {
        tn = tn + a;
        sn = sn + tn;
        a = a * 10;
        ++count;
    }
    printf("a+aa+...=%ld\n", sn);
}

【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
1. 程序分析:请参照程序<--上页程序14.
2.程序源代码:
/* 63 63 72 75 6E 2E 63 6F 6D */
main()
{
    static int k[10];
    int i, j, n, s;
    for(j=2; j<1000; j++)
    {
        n = -1;
        s = j;
        for(i=1; i<j; i++)
        {
            if((j % i) == 0)
            {
                n++;
                s = s - i;
                k[n] = i;
            }
        }
        if(s == 0)
        {
            printf("%d is a wanshu", j);
            for(i=0; i<n; i++)
                printf("%d, ", k);
            printf("%d\n", k[n]);
        }
    }
}

【程序20】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
1.程序分析:见下面注释
2.程序源代码:
main()
{
    float sn = 100.0, hn = sn / 2;
    int n;
    for(n = 2; n <= 10; n++)
    {
        sn = sn + 2 * hn; /* 第n次落地时共经过的米数 */
        hn = hn / 2; /* 第n次反跳高度 */
    }
    printf("the total of road is %f\n", sn);
    printf("the tenth is %f meter\n", hn);
}




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流)、饿踢Blog

寧可在嘗試中失敗,也不在保守中成功!

不為失敗找理由,只為成功找方法!
 
2008-3-31 08:51 AM#2
查看资料  访问主页  Blog  发短消息  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
风云山庄大少爷


UID 62639
精华 2
积分 14352
帖子 7229
金钱 14212 喜悦币
威望 20
人脉 120
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 请改程序人员


<?php
【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
main
()
{
    
int dayx1x2;
    
day 9;
    
x2 1;
    while(
day>0)
    {
        
x1 = (x2 1) * 2/* 第一天的桃子数是第2天桃子数加1后的2倍 */
        
x2 x1;
        
day--;
    }
    
printf("the total is %dn"x1);
}

【程序22】
题目:两个乒乓球队进行比赛,各出三人。甲队为a
bc三人,乙队为xyz三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和xz比,请编程序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt
(这个数),如果能被整除,则表明此数不是素数,反之是素数。 
2.程序源代码:
main
()
{
    
char ijk/* i是a的对手,j是b的对手,k是c的对手 */
    
for(i='x'i<='z'i++)
        for(
j='x'j<='z'j++)
        {
            if(
!= j)
                for(
k='x'k<='z'k++)
                {
                    if(
!= && != k)
                    {
                        if(
!= 'x' && != 'x' && != 'z')
                            
printf("order is a--%ctb--%ctc--%cn"ijk);
                    }
                }
        }
}

【程序23】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
2.程序源代码:
/* 欢迎访问 C++Builder研究 - [url]www.ccrun.com[/url] */
main()
{
    
int ijk;
    for(
i=0i<=3i++)
    {
        for(
j=0j<=2-ij++)
            
printf(" ");
        for(
k=0k<=2*ik++)
            
printf("*");
        
printf("n");
    }
    for(
i=0i<=2i++)
    {
        for(
j=0j<=ij++)
            
printf(" ");
        for(
k=0k<=4-2*ik++)
            
printf("*");
        
printf("n");
    }
}

【程序24】
题目:有一分数序列:2
/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
2.程序源代码:
main
()
{
    
int ntnumber 20;
    
float a 210;
    for(
n=1n<=numbern++)
    {
        
b;
        
abt/* 这部分是程序的关键,请读者猜猜t的作用 */
    
}
    
printf("sum is %9.6fn"s);
}

【程序25】
题目:求1
+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
2.程序源代码:
/* 63 63 72 75 6E 2E 63 6F 6D */
main()
{
    
float n01;
    for(
n=1n<=20n++)
    {
        
*= n;
        
+= t;
    }
    
printf("1+2!+3!...+20!=%en"s);
// 本文转自 C++Builder研究 - [url]http://www.ccrun.com/article.asp?i=646&d=iwd380[/url]
}

【程序26】
题目:利用递归方法求5
!
1.程序分析:递归公式:fn
=fn_1*4!
2.程序源代码:
#include "stdio.h"
main()
{
    
int i;
    
int fact();
    for(
i=0i<5i++)
        
printf("40:%d!=%dn"ifact(i));
}
int fact(j)
int j;
{
    
int sum;
    if(
== 0)
        
sum 1;
    else
        
sum fact(1);
    return 
sum;
}

【程序27】
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{
    
int i 5;
    
void palin(int n);
    
printf("40:");
    
palin(i);
    
printf("n");
}
void palin(n)
int n;
{
    
char next;
    if(
n<=1)
    {
        
next getchar();
        
printf("n




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流)、饿踢Blog

寧可在嘗試中失敗,也不在保守中成功!

不為失敗找理由,只為成功找方法!
 
2008-3-31 08:52 AM#3
查看资料  访问主页  Blog  发短消息  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
风云山庄大少爷


UID 62639
精华 2
积分 14352
帖子 7229
金钱 14212 喜悦币
威望 20
人脉 120
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 中国稳网全能虚机30元起1G空间88元起送域名子目录送数据库


<?php
标题
:C 程序开发经典实例之四作者: 出处: 更新时间: 2006年03月09日
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
2.程序源代码:
void main
()
{
    
char letter;
    
printf("please input the first letter of somedayn");
    while((
letter getch()) != 'Y'/* 当所按字母为Y时才结束 */
    
{
        switch (
letter)
        {
        case 
'S':
            
printf("please input second lettern");
            if((
letter getch()) == 'a')
                
printf("saturdayn");
            else if ((
letter getch()) == 'u')
                
printf("sundayn");
            else 
printf("data errorn");
                break;
        case 
'F'printf("fridayn");break;
        case 
'M'printf("mondayn");break;
        case 
'T':
            
printf("please input second lettern");
            if((
letter getch()) == 'u')
                
printf("tuesdayn");
            else if ((
letter getch()) == 'h')
                
printf("thursdayn");
            else 
printf("data errorn");
                break;
        case 
'W'printf("wednesdayn"); break;
        default: 
printf("data errorn");
        }
    }
}

【程序32】
题目:Press any key to change color
, do you want to try itPlease hurry up!
1.程序分析: 
2.程序源代码:
#include <conio.h>
/* 欢迎访问 C++Builder研究 - [url]www.ccrun.com[/url] */
void main(void)
{
    
int color;
    for (
color 0color 8color++)
    {
        
textbackground(color);/*设置文本的背景颜色*/
        
cprintf("This is color %drn"color);
        
cprintf("Press any key to continuern");
        
getch(); /* 输入字符看不见 */
    
}
}

【程序33】
题目:学习gotoxy
()与clrscr()函数 
1.程序分析: 
2.程序源代码:
#include <conio.h>
void main(void)
{
    
clrscr(); /* 清屏函数 */
    
textbackground(2);
    
gotoxy(15); /* 定位函数 */
    
cprintf("Output at row 5 column 1n");
    
textbackground(3);
    
gotoxy(2010);
    
cprintf("Output at row 10 column 20n");
}

【程序34】
题目:练习函数调用
1. 程序分析:
2.程序源代码:
#include <conio.h>
void hello_world(void)
{
    
printf("Hello, world!n");
}
void three_hellos(void)
{
    
int counter;
    for(
counter=1counter<=3counter++)
        
hello_world(); /* 调用此函数 */
}
void main(void)
{
    
three_hellos(); /* 调用此函数 */
}

【程序35】
题目:文本颜色设置
1.程序分析:
2.程序源代码:
#include <conio.h>
void main(void)
/* 63 63 72 75 6E 2E 63 6F 6D */
{
    
int color;
    for(
color=1color<16color++)
    {
        
textcolor(color); /* 设置文本颜色 */
        
cprintf("This is color %drn"color);
    }
    
textcolor(128 15);
    
cprintf("This is blinkingrn");
}

【程序36】
题目:求100之内的素数 
1.程序分析:
2.程序源代码:
#include <conio.h>
#include "math.h"
#define N 101
main()
{
    
int ijlinea[N];
    for(
i=2i<100i++)
        for(
j=i+1j<100j++)
// 本文转自 C++Builder研究 - [url]http://www.ccrun.com/article.asp?i=647&d=582cld[/url]
        
{
            if(
a[i] != && a[j] != 0)
                if(
a[j] % a[i] == 0)
                    
a[j] = 0;
        }
    
printf("n");
    for(
i=2line=0i<100i++)
    {
        if(
a[i] != 0)
        {
            
printf("%5d"a[i]);
            
line++;
        }
        if(
line==10)
        {
            
printf("n");
            
line 0;
        }
    }
}

【程序37】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
2.程序源代码: 
#define N 10
main()
{
    
int ijmintema[N];
    
/* input data */
    
printf("please input ten num:n");
    for(
i=0i<10i++)
    {
        
printf("a[%d]="i);
        
scanf("%d", &a[i]);
    }
    
printf("n");
    for(
i=0i<10i++)
        
printf("%5d"a[i]);
    
printf("n");
    
/* sort ten num */
    
for(i=0i<10i++)
    {
        
min i;
        for(
j=i+1j<10j++)
            if(
a[min] > a[j])
                
min j;
        
tem a[i];
        
a[i] = a[min];
        
a[min] = tem;
    }
    
/*output data*/
    
printf("After sorted n");
    for(
i=0i<10i++)
        
printf("%5d"a[i]);
}

【程序38】
题目:求一个3
*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a
[i][i]累加后输出。
2.程序源代码:
/* 欢迎访问 C++Builder研究 - [url]www.ccrun.com[/url] */
main()
{
    
float a[3][3], sum 0;
    
int ij;
    
printf("please input rectangle element:n");
    for(
i=0i<3i++)
        for(
j=0j<3j++)
            
scanf("%f", &a[i][j]);
   for(
i=0i<3i++)
       
sum sum a[i][i];
   
printf("duijiaoxian he is %6.2f"sum);
}

【程序39】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
2.程序源代码:
main
()
{
    
int a[11] = {14691316192840100};
    
int temp1temp2numberendij;
    
printf("original array is:n");
    for(
i=0i<10i++)
        
printf("%5d"a[i]);
    
printf("n");
    
printf("insert a new number:");
    
scanf("%d", &number);
    
end a[9];
    if(
number end)
        
a[10] = number;
    else
    {
        for(
i=0i<10i++)
        {
            if(
a[i] > number)
            {
                
temp1 a[i];
                
a[i] = number;
                for(
j=i+1j<11j++)
                {
                    
temp2 a[j];
                    
a[j] = temp1;
                    
temp1 temp2;
                }
                break;
            }
        }
    }
    for(
i=0;i<11;i++)
        
printf("%6d"a[i]);
}

【程序40】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
2.程序源代码:
#define N 5
main()
{
    
int a[N] = {96541}, itemp;
    
printf("n original array:n");
    for(
i=0i<Ni++)
        
printf("%4d"a[i]);
    for(
i=0i<Ni++)
    {
        
temp a[i];
        
a[i] = a[N-i-1];
        
a[N-i-1] = temp;
    }
    
printf("n sorted array:n");
    for(
i=0i<Ni++)
        
printf("%4d"a[i]);
}
?>




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流)、饿踢Blog

寧可在嘗試中失敗,也不在保守中成功!

不為失敗找理由,只為成功找方法!
 
2008-3-31 08:52 AM#4
查看资料  访问主页  Blog  发短消息  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
风云山庄大少爷


UID 62639
精华 2
积分 14352
帖子 7229
金钱 14212 喜悦币
威望 20
人脉 120
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 我新做的网页互动联盟,请大家来注册帮助测试


<?php
【程序41】
题目:学习static定义静态变量的用法 
1.程序分析:
2.程序源代码:
#include "stdio.h"
varfunc()
{
    
int var = 0;
    static 
int static_var 0;
    
printf("40:var equal %d n", var);
    
printf("40:static var equal %d n"static_var);
    
printf("n");
    var++;
    
static_var++;
}
void main()
{
    
int i;
    for(
i=0i<3i++)
        
varfunc();
}

【程序42】
题目:学习使用auto定义变量的用法
1.程序分析: 
2.程序源代码:
#include "stdio.h"
main()
{
    
int inum;
    
num=2;
    for(
i=0i<3i++)
    {
        
printf("40: The num equal %d n"num);
        
num++;
    }
    for(
i=0i<3i++)
    {
        
auto int num=1;
        
printf("40: The internal block num equal %d n"num);
        
num++;
    }
}

【程序43】
/* 欢迎访问 C++Builder研究 - [url]www.ccrun.com[/url] */
题目:学习使用static的另一用法。 
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{
    
int inum;
    
num 2;
    for(
i=0i<3i++)
    {
        
printf("40: The num equal %d n"num);
        
num++;
    }
    for(
i=0i<3i++) 
    {
        static 
int num 1;
        
printf("40:The internal block num equal %dn"num);
        
num++;
    }
}

【程序44】
题目:学习使用external的用法。
1.程序分析:
2.程序源代码:
#include "stdio.h"
int abc;
void add()
{
    
int a;
    
3;
    
b;
}
void main()
{
    
4;
    
add();
    
printf("The value of c is equal to %dn"c);
}

【程序45】
题目:学习使用register定义变量的方法。
1.程序分析:
2.程序源代码:
/* 63 63 72 75 6E 2E 63 6F 6D */
void main()
{
    
register int i;
    
int tmp 0;
    for(
i=1i<=100i++)
    
tmp += i;
    
printf("The sum is %dn"tmp);
}

【程序46】
题目:宏
#define命令练习(1) 
1.程序分析:
2.程序源代码:
#include "stdio.h"
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
void main()
{
    
int num;
    
int again=1;
    
printf("40: Program will stop if input value less than 50.n");
    while(
again)
    {
        
printf("40:Please input number==>");
        
scanf("%d", &num);
        
printf("40:The square for this number is %d n"SQ(num));
        if(
num >= 50)
            
again TRUE;
        else
            
again FALSE;
    }
}

【程序47】
题目:宏
#define命令练习(2)
1.程