论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C程序设计入门(实例讲解)-02

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:44:37

                                        一、程序设计初步

(一)题4.输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n
(一)题5.编制统计营业员一天的营业额的程序
(一)题6.翻译输入的字符序列





(一)题4.输入n,计算s=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n
解:
    算式是以下形式的n项和:
    1+(1+2)+(1+2+3)+...+(1+2+3+...+n)
    设i-1项的值是p,则i项的值是p+i。初始时,s为0,p也为0,顺序地将整数i=1,2,3,...n累计到变量p,并每次将新的p 值累计到变量s,则最后s就是算式的结果。
算法如下:
s=1+2+1+2+3+1+2+3+4+...+1+2+3+...+n
{
    输入n;
    为变量p和s设定初值0;
    for(i=1;i<=n;i++)
    {
        将i累计到p;
        将p累计到s;
    }
    输出s;
}
其中变量p和s设定初值可写在for的控制结构中,将i累计到p和将p累计到s可写成C语言的语句:
    s+=p+=i.
程序代码如下:
#include<stdio.h>
void main()
{
    int i,s,p,n;
    printf("Enter n!\n");
    scanf("%d",&n);
    for(s=p=0,i=1;i<=n;i++)
        s+=p+=i;            /*将i累计到p,并将p 累计到s*/
    printf("S= %d\n",s);
}

------------------------------------------------

(一)题5.编制统计营业员一天的营业额的程序
解:
    设程序采用一个循环实现,每次循环输入一笔交易金额并累计营业额。由于营业员一天完成的交易次数是不确定的,为此以最后附加输入一笔0或负数交易额作为交易金额已全部输入结束的标志。
有以下统计营业员一天营业额的算法:
统计营业员一天营业额
{
    营业额清0;
    输入第一笔交易额;
    while(交易额>0.0)
    {
        累计营业额;
        输入下一笔交易额;
    }
    输出营业额;
}
记一笔交易额为变量sale,营业额为sigma。
程序代码如下:
#include<stdio.h>
void main()
{
    float sale,sigma;
    sigma=0.0;
    printf("Enter sale data.\n");
    scanf("%f",&sale);
    while(sale>0.0)
    {
        sigma+=sale;
        printf("Enter next sale data(<=0 to finish).\n");
        scanf("%f",&sale);
    }
    printf("Sigma of sale is %.2f\n",sigma);
}

-----------------------------------------

(一)题6.输入字符序列,字符序列以非凡字符“#”结束。程序从前向后依次读入字符,并翻译出新的字符输出。翻译的规则是:假如当前读入的字符是数字符,假如该字符的面值为n,则它的后一个字符(包括数字符)需重复输出n+1次假如当前读入的字符不是数字符,则输出该字符。输出时,以上述一次翻译为一组,不同组间输出用一个空白字符隔开。翻译直至当前读入的字符为字符'#',结束翻译和输出。
解:
    程序从前向后依次读入字符,并翻译输出新的字符输出是一个循环过程,当前读入的字符分数字字符和非数字字符两类。假如当前读入的字符是数字符n,翻译规则要求它的后一个输入字符需重复输出n+1次;假如当前读入的字符不是数字符,则输出该字符。
算法如下:
字符列翻译
{
    读入当前字符;
    while(当前字符!='#')
    {
        if(当前字符是数字符)
        {
            由当前字符算出后继字符重复输出的次数;
            输入后继字符;
            按计算所得次数重复输出后继字符;
        }
        else
            输出当前字符
        输出一个空白符;
        输入下一个当前字符;
    }
    输出字符'#'和换行符
}

假定读入的当前字符存于变量ch,若该字符是数字符,则其面值为ch-'0',即当前字符的ASCII码减去字符'0'的ASCII码。所以后继字符重复输出的次数为ch-'0'+1。字符ch是数字符,可有条件表达式(ch>='0'&&ch<='9')为非零确定,即当前字符的ASCII码大于等于字符'0'的ASCII码,且小于等于字符'9'的ASCII码。
对应该算法的程序如下:
#include<stdio.h>
void main()
{
    char ch,nch;        /*当前字符和后继字符*/
    int count;            /*后继字符重复输出的次数*/
    int k;            /*工作变量*/
    printf("Enter string.\n");
    scanf("%c",&ch);             /*读入当前字符*/
    while(ch!='#')              /*当前字符不等于字符'#',重复*/
    {
        if(ch>='0'&&ch<='9')    /*当前字符是数字符*/
        {
            count=ch-'0'+1;    /*后继字符重复输出的次数*/
            scanf("%c",&nch);    /*输入后继字符*/
            for(k=0;k<count;k++)    /*重复输出后继字符count次*/
                printf("%c",nch);
        }
        else
            printf("%c",ch);        /*输出当前字符*/
        printf(" ");            /*输出一个空白符*/
        scanf("%c",&ch);        /*输入下一个当前字符*/
    }
    printf("#\n");            /*输出字符'#'和换行符*/
}

   
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058