C语言程序设计实验教案


    








    高级语言程序设计

    实验指导书





    实验 序结构程序设计
    实验目求
    1 掌握C语言中种语句——赋值语句方法
    2 掌握种类型数输入输出方法正确种格式转换符
    二实验学时
    4学时
    三实验务
    1程序处错面指定形式输入数输出数时请该程序做相应修改
    #include
    void main ( )
    { double abcsv
    printf(input abc\n)
    scanf(dddabc)
    sa*b
    va*b*c
    printf(d d dabc)
    printf(sf\nsvd\nv)
    }
    程序执行时屏幕显示求输入形式:
    input abc10 20 30 à处10 20 30户输入数
    a1000000 b2000000c3000000 à处求输出格式
    s2000000v6000000
    相关知识:① 检查程序错误时应注意点:
    a)时程序中错误会引发系列错误信息工作中应种情况迷惑改正错误应时源程序重新进行编译
    b)果修改错误时增删行行里错误更正前面错误时增删字符导致系统错误定位准时应该重新编译
    c)系统出警告信息般说明程序中问题系统发现疑情况警告信息样逐仔细分析非明确认定问题否绝简单认错误予理睬实际警告程序中确实严重隐含错误
    d) 连接中发现新错误需仔细检查修改程序连接时发现错误般函数名外部变量名字写错者函数外部变量没定义引起系统连接错误动定位提供关名字信息等类问题助编辑器字符串查找命令进行定位
    ② 正确调scanf函数printf函数构成输入输出语句
    2程序
    #include
    void main()
    { char c1c2
    int n1n2
    c1getchar()
    c2getchar()
    n1c1'0'n2 n1*10+(c2'0')
    printf(d\nn2)
    }
    程序运行时输入:12<回车>执行输出结果什?
    相关知识:①getchar()函数输入两字符分赋变量c1c2
    ②n1c1'0'相n1'1' '0'字符1ASCII码值0n1中值1c2'0'相'2' '0'
    ③字符串转换位数算法
    3程序
    #include
    void main()
    { int ij
    int xy
    scanf(idjd&i&j)
    scanf(dd&x&y)
    printf(idjd\nij)
    printf(4d4d\nxy)
    }
    求i赋值10j赋值20应该样键盘输入数字?
    相关知识:①调scanf()函数时格式串中包含格式描述符外字符时求输入数时应位置输入完全匹配字符
    ②scanf()函数包含格式描述符时跳格键Tab空格回车分隔数
    ③调printf ()函数时格式串中包含格式描述符外字符时输出数时应位置输出完全匹配字符d类格式符位置输出应输出项值输出时注意插入适非格式符便区分输出结果
    4 计算定期存款利
    设银行定期存款年利率rate225已知存款期n年存款金capital元试编程计算n年利deposit求定期存款年利率rate存款期n存款金capital均键盘输入
    四实验重点难点
    1 符数输入输出函数
    2 格式输入输出函数
    五操作点
    Alt+R进入Run菜单 中Run:运行ProjectProject name项指定文件名前编辑区文件果次编译源代码未做修改 直接运行断点(没断点运行结束)否先进行编译连接运行 热键Ctrl+F9User screen:显示程序运行时屏幕显示结果热键Alt+F5
    六注意事项
    1 输入输出数类型格式说明符致
    2 输入变量时忘记址符号

    实验二 逻辑结构程序设计
    实验目求
    1 解C语言表示逻辑量方法(0代表假非代表真 )
    2 学会正确逻辑运算符逻辑表达
    3 熟练掌握if语句switch语句
    4 学调试程序
    二实验学时
    6学时
    三实验务
    1 源程序中包含错误调试列程序具功:输入abc三整数求值
    # include stdioh
    void main( )
               { int abc
                 scanf(dddabc)
                 if((a>b)&&(a>c))
                   if(b                 printf(mind\nb)
                   else
                     printf(mind\nc)
                 if((a               printf(mind\na)
                }
    次运行程序输入213程序输出min2单步执行方法马发现变量abc值原程序求输入数分隔符空格(允许回车键)改正输入数分隔方式程序没输出单步执行方法监视程序执行程发现程序中条件设计误改正程序:
        # include stdioh
    void main()
        { int abc
          scanf(ddd&a&b&c)
          if((a         printf(mind\na)
          else if((b         printf(mind\nb)
          else if((c         printf(mind\nc)
          else
             printf(No find minimum\n)
         }
    述程序三数中仅值时称值进行设计外注意程序书写格式定采缩进格式层次(分支)语句左起空格样效提高程序读性
    相关知识:①类似a2参考题编写C程序求abcd四数中者
    编程点拨:
    ①定义变量开始令变量maxa
    ②if(max3输入4整数求序输出正确结果修改程序序输出
    相关知识:①输入函数scanf()②简单排序算法③通中间变量t交换ab值方法:ta ab bt
    4根函数关系输入x值计算出相应y值


    x取值时
    #include
    #include
    void main()
    { float xy
    scanf(f&x)
    if ( )
    y
    else if( )
    y
    else
    printf(xfyfxy)
    }
    相关知识点:if语句嵌套数学函数调方式
    5模仿第4题写程序实现函数:

    scanf函数输入x值求y值运行程序输入x值(分x<11≤x<10x≥10三种情况)检查输出y值否正确
    相关知识:①if嵌套实现分段函数②较运算符正确③算术运算符*正确
    6阅读分析程序功
    #include
    void main( )
    { int choice
    int value
    printf(Convert\n) * 显示菜单 *
    printf( 1decimal to hexadecimal\n )
    printf( 2hexadecimal to decimal\n )
    printf( 3decimal to octal\n )
    printf( 4octal to decimal\n)
    printf(enter your choice )
    scanf(d&choice)
    switch (choice)
    { case 1 * 选中1时处理 *
    printf(enter decimal value)
    scanf(d&value)
    printf(d in hexadecimal isx\nvaluevalue)
    break
    case 2 * 选中2时处理 *
    printf(enter hexadecimal value)
    scanf(x&value)
    printf(x in decimal isd\nvaluevalue)
    break
    case 3 * 选中3时处理 *
    printf(enter decimal value)
    scanf(d&value)
    printf(d in octal iso\nvaluevalue)
    break
    case 4 * 选中4时处理 *
    printf(enter octal value)
    scanf(o&value)
    printf(o in decimal isd\nvaluevalue)
    break
    }
    }
    相关知识:①switch语句实现菜单方法②数制转换方法
    7 模仿第6题求输入数字1~7转换成文字星期数字转换例输入5时程序应该输出Friday
    ① 编辑调试运行该程序然输入4输出结果什?什样结果?
    ② 该程序错误?修改?
    相关知识:①switch语句正确②breakswitch语句中作
    四实验重点难点
    1 表达式
    2 选择型程序设计语句
    3 逻辑表达式
    五操作点
    Alt+C进入Compile菜单 Build all:重新编译项目里文件 进行装配生成EXE文件该命令作时检查 
    六注意事项
    1 误作关系运算符等
    2 没注意写字母写字母代表标识符
    3 复合语句中层括号时常出现括号配现象

    实验三 循环控制

    实验目求
    1 熟悉掌握语句语句语句实现循环方法
    2 掌握程序设计中循环方法实现常算法(穷举迭代递推等)
    二实验学时
    6学时
    三实验务
    1 面程序求1+…+100填空实现该功
    #include
    void main()
    {
    int si
    s0 * 第5行 *
    for( )
    ss+i
    printf(1++100d\ns)
    }
    思考:(1)第5行掉?作什?
    (2)for语句while语句改写该程序实现样功
    2 较列两程序(验证)
    #include
    void main()
    { int insum0
    scanf(d&i)
    ni
    while(i<10)
    { sum+i
    i++
    }
    printf(d++10dnsum)
    }
    #include
    void main()
    { int insum0
    scanf(d&i)
    ni
    do
    { sum+i
    i++
    } while(i<10)
    printf(d++10dnsum)
    }

    分运行两题输入7两程序结果分少?输入12两程序结果分少?较什会样区?
    3 预面程序输入12345分析输出结果少?机验证
    #include
    void main( )
    { long data
    scanf(ld&data)
    while(data)
    { printf(lddata10)
    datadata10
    }
    }
    4 面程序实现求Fibonacci数列前n数(验证调试)

    运行程序写出运行结果采单步踪技术运行该程序观察变量变化
    #include
    void main( )
    { long int f1 f2
    int in
    printf(Input n) * 第5行 *
    scanf(d&n) * 第6行 *
    f1f21
    for(i1i{ printf(ld\tld\nf1f2) * 第9行 *
    f1f1+f2
    f2f2+f1
    }
    }
    思考:(1)f1f2两变量什定义long int 型?
    (2)第5行第6行相互作会种方式实现输入?
    (3)注意第9行输出ld中1字母L写形式数字1
    5 预面程序写出预结果机验证(验证)
    #include
    void main( )
    { int ijx
    for(i0x0i<2i++)
    { x++
    for(j0j<3j++)
    { if(j2) continue
    x++
    }
    x++
    }
    printf(xd\n x)
    }
    思考句话概括if(j2)语句作
    相关知识:嵌套for循环执行程continue语句作
    6面程序输入批考试分数1作结束标志输入100分提示重新输入然计算高分低分均分请调试检查程序中错误改正
    #include
    void main( )
    { int mark
    int n0 sum0
    int max100 min0
    for ( )
    { scanf(d &mark)
    if ( mark > 100 )
    { printf( Mark > 100 Please reinput \n )
    break
    }
    if ( mark1)
    break
    n ++
    sumsum + mark
    if( mark > max )
    max mark
    if( mark < min )
    min mark
    }
    sumsum n
    printf(max d min d aver d \n max min sum)
    }
    提示:该程序错误面出某错误说明求批数中值时已知批数值值作值初始值求值时情况相反已知批数值值作值初始值例中求批分数高分高分初始值应该设0然程序循环中逐渐升高直求出高分例中求批分数低分低分初始值设100然程序循环中逐渐降低直求出值实现输入100分提示重新输入功语句错实现1作结束标志功语句错
    思考:(1)批数数?输入数结束?程序中行实现结束求写出该语句
    (2)程序中语句实现输入100分提示重新输入求写出该语句
    (3)写出您测试数运行结果注意输入数序列中应1
    7编程:输入201~90整数分类统计1~3031~6061~90数少?
    编程点拨:
    (1) count1计1~30数count2计31~60数count3计61~90数
    (2) for循环20次实现该程序功:输入整数x判断该数范围x1~30count1加1x31~60count2加1x61~90count3加1
    (3) 输出统计结果
    #include
    void main( )
    { int count10count20count30
    int ix
    printf(Please input 20 numbers)
    for(i0i<20i++)
    { scanf(d&x)
    ……… *补充完成程序*
    }
    * 输出统计结果 *
    ……………
    }
    补充完成该程序
    8编程:素数1身外然数整然数键盘输入数判断该数素数?
    编程点拨:
    a) 输入数x
    b) for循环2~x12~x1数x数整x说明x素数否x素数
    c) 判断结果输出
    #include
    void main( )
    { int i x
    printf(Enter one natural integer )
    scanf(d &x)
    for(i2i……………
    }
    思考:实需判断2~间整数否整x判断x否素数时修改程序?
    9编程:显示水仙花数谓水仙花数指3位数位数字立方等该数字身例
    153水仙花数15313+53+33 两种解题思路选择中编程实现:
    (1) 利三重循环三数通定运算符连接成3位数然判断否水仙花数
    for(i1i<9i++)
    for(j0j<9j++)
    for(k0k<9k++)
    注意水仙花三位数百位i1开始0开始十位j数位k0开始
    (2) 利循环100~999范围3位数逐位分离进行判断
    for(i100i<999i++)
    { ai100
    b(ia*100)10
    ci10
    ………
    }
    *
    ***
    *****
    *******
    *********
    10编程:输出列图形




    分析:星号构成5行5列三角形图形行星号数量:13579考虑两点行星号生成规二行第星号字符输出位置行星号行号关2*i+1中i行号行输出位置行少空格样实现:for(j1j<40ij++) printf(c ’)中i行号
    四实验重点难点
    1 循环语句
    2 循环嵌套
    3 breakcontinue语句
    五操作点
    Run菜单中Go to cursor:调试程序时 选择该项程序运行光标行光标行必须条执行语句 否提示错误热键F4Trace into:执行条调户定义子函数时 Trace into项 执行长条踪该子函数部执行 热键F7
    六注意事项
    1 应该花括号复合语句忘记加花括号
    2 该加分号方加分号
    3 引数组元素时误圆括号
    4 引数组元素超界
    5 二维维数组定义引方式
    6 误数组名代表整数组
    7 混淆字符数组字符指针区

    实验四 数组
    实验目求
    1 掌握维数组二维数组定义赋值输入输出方法
    2 掌握字符数组字符串函数
    3 掌握数组关算法(特排序算法)
    二实验学时
    6学时
    三实验务
    1调试列程序具功:输入10整数行3数输出整数输出10整数均值写出调试程
    #inclue
    #define N 10
    void main( )
    { int ia[N]av
    for(i0i      scanf(da[i])
         for(i0i        { printf(da[i])
               if(i30)
                 printf(\n)
             }
          for(i0iNi++)
             av+a[i]
          printf(avf\nav)
      }
    面出程序完全运行运行结果完全错误调试时请注意数组元素输入问题输出格式问题等请前面实验掌握调试工具判断程序中错误改正
    相关知识:①数组元素值输入②求求均值相关变量初始化问题③输出格式符正确④数组元素格式化输出
    2面程序输入5数然求输出结果
    #include
    void main( )
    {int i a[5] sum 0
    scanf(ddddd a )
    for (i 0 i < 4 i ++)
    sum + a[i]
    printf(sum d \n sum)
    }
    该程序中错误?修改?写出正确运行结果
    相关知识:数组元素输入输出逐元素操作数组名作整体操作
    33行4列距阵现求编程求出中元素值行号列号面程序初始说明输出语句示请补充完成该程序
    #include
    void main( )
    { int i j row colum max
    static int a[3][4] {{1234} {9876} {101052}}
    ……
    printf( Max d Row d Colum d \n max row colum)
    }
    编程点拨:
    ① 初始化rowcolummax
    ② for循环双重循环逐行元素值max值进行较较结果果元素值max值改变max值时改变rowcolum值
    ③输出maxrowcolum值
    相关知识:①二维数组定义初始化②二重循环二维数组元素访问③求值时相关变量初值设定
    4数组中已存互相10整数键盘输入整数输出该值相数组元素标
    编程点拨:输入查找变量x值循环输入数数组元素逐进行较找提前退出循环根循环正常结束提前结束判断否找x
    部分源代码:
    #include
    void main( )
    { int i x a[10]{12345678910}
    *输入x变量值 *
    for ( i0 i<10 i++ ) printf(4da[i])
    printf(\n)
    * 循环查找x相等元素 *
    if ( ) printf(d\ni) * 输出查找结 输出标值 *
    else printf(Not found d\nx)
    }
    5编写程序意输入10整数数列先整数序进行排序然输入整数插入数列中数列保持序
    编程点拨:
    ①定义数组时开辟存储单元
    ②找合适插入位置
    20 18 16 14 12 10 8 6 4 2































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































    a
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

    10
    k
    15
    找合适插入位置j3
    j3



    j0 a[j] ≥k 20 ≥15 j++
    j1 a[j] ≥k 18 ≥15 j++
    j2 a[j] ≥k 16 ≥15 j++
    j3 a[j] ≥k 14 ≥15 结束循环



    while( a[j]>k && j<10 ) j++


    找k元素时退出循环

    ③右移动插入点元素先a[9]移a[10]a[8]移a[9]…a[i]移a[i+1]直a[j]移a[j+1]:ij停止移动元素
    for(i9i>ji ) a[i+1]a[i]

    20 18 16 14 12 10 8 6 4 2
    a
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

    10
    k
    15
    ④插入
    部分源代码:
    #include
    #define N 11
    void main()
    { int ija[N]
    printf(Please input 10 numbers)
    for (i0 i scanf(d&a[i]) *乱序输入10整数*
    ……
    }
    相关知识:①较排序法选择排序法泡排序法②数元素插入
    6输入十互相整数存数组中找出元素删
    编程点拨:
    求值元素标:必max记住值k记住值元素标删值:值开始面元素次前移位置
    2 8 16 14 1 10 8 16 4 20 6
    a
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

    10

    部分源代码:
    k0
    if ( a[k]k0
    for ( i1 i<10 i++ )
    if ( a[k] ki
    k1 执行
    if ( a[k]k2 执行
    if ( a[k]k3 执行


    相关知识:①删数组元素概念②移动数组元素算法③求值位置算法
    7 程序功:键盘输入干学生成绩统计计算出均成绩输出低均分学生成绩输入负数结束输入请填空:
    #include
    void main( )
    { float x[1000] sum00 ave a
    int n0 i
    printf (Enter mark \n)
    scanf(f &a)
    while (a>00 && n<1000)
    { sum+
    x[n]
    n++
    scanf(f &a)
    }
    ave
    printf (Output \n)
    printf (ave f\n ave)
    for (i0 i if ( ) printf(f\n x[i])
    }
    8 综合编程题:印杨辉三角形
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    编程点拨:
    杨辉三角形特点:
    半三角形确定值
    第列角线元素值1
    元素值均前行列元素前行前列元素
    9调试列程序具功:意输入两字符串(:abc 123china)存放ab两数组中然较短字符串放a数组较长字符串放b数组输出
    #include
    #include
    void main()
    { char a[10]b[10]
    int cdkch
    scanf(s&a)
    scanf(s&b)
    printf(asbs\nab)
    cstrlen(a)
    dstrlen(b)
    if(c>d)
    for(k0k { cha[k]a[k]b[k]b[k]ch}
    printf(as\na)
    printf(bs\nb)
    }
    相关知识:程序中strlen()库函数功求字符串长度原型保存头文件stringh中调试时注意库函数调方法字符串输入方法通错误提示发现程序中错误
    10阅读面程序然回答面问题
    #include
    #include
    void main( )
    { char s1[80] s2[40]
    int i 0 j 0
    printf( \n Please input string1)
    scanf(s s1)
    printf( \n Please input string2)
    scanf(s s2)
    while (s1[i] '\0' )
    i++
    while (s2[j] '\0' )
    s1[i++]s2[j ++]
    s1[i] '\0'
    printf(\n New string s s1)
    }
    编辑运行该程序然分输入 Country side请问:
    ① 程序执行结果什?
    ② 该程序功什? 
    相关知识:① 串结束符’\0’② 编写库函数
    11填空完成面程序功键盘输入两字符串进行较然输出两字符串中第相字符ASCII码差例:输入两字符串分abcdefgabceef输出1程序:
    #include
    void main ( )
    { char str1[100]str2[100]
    int is
    printf(\n Input string 1\n)gets(str1)
    printf(\n Input string 2\n)gets(str2)
    i (1)
    while((str1[i]str2[i])&&(str1[i] (2) ))
    i++
    s (3)
    printf(d\ns)
    }
    12填空完成面程序功统计终端输入字符中写字母数#号作输入结束标志程序:
    #include
    #include
    void main ( )
    { int num[26]i char c
    for (i0i<26i++) num[i]0
    while ( (1) '#') * 统计终端输入写字母数*
    if (isupper(c)) num[c65] (2)
    for (i0i<26i++) * 输出写字母该字母数*
    if (num[i])printf(cd\ni (3) num[i])
    }

    13编写程序输入干字符串求出字符串长度印长字符串容stop作输入字符串
    相关知识:
    ① 字符数组输入输出两种方法:
    ² 逐字符输入输出格式符c输入输出字符时输入输出函数中输入输出项数组元素名字符数组名
    ² 整字符串次输入输出s格式符意思输出字符串(string)时输入输出函数中输入输出项字符数组名数组元素名写成面样:printf(sc[0])
    ② gets()函数scanf()函数输入字符串区puts()函数printf()函数输出字符串区
    ③ 求字符串长度函数strlen()字符串较函数strcmp()
    ④ 二维数组处理字符串
    14编写程序输入字符串s1s2插入位置f字符串s1中指定位置f处插入字符串s2:输入BEIJING123位置3输出:BEI123JING123
    四实验重点难点
    1 维数组
    2 二维数组维数组
    3 字符数组
    五操作点
    Run菜单中Go to cursor:调试程序时 选择该项程序运行光标行光标行必须条执行语句 否提示错误热键F4Trace into:执行条调户定义子函数时 Trace into项 执行长条踪该子函数部执行 热键F7
    六注意事项
    1 应该花括号复合语句忘记加花括号
    2 该加分号方加分号
    3 引数组元素时误圆括号
    4 引数组元素超界
    5 二维维数组定义引方式
    6 误数组名代表整数组
    7 混淆字符数组字符指针区


    实验五 函数编译预处理
    实验目求
    1 掌握函数定义方法
    2 掌握函数实参形参应关系值传递方式
    3 掌握函数嵌调递调方法
    4 掌握全局变量局部变量动态变量静态变量概念方法
    5 学文件程序编译运行
    二实验学时
    4学时
    三实验务
    1 阅读面程序通调试该程序熟悉函数调方法单步踪键F7F8
    #include
    void main()
    { void fun(int i int j int k)
    int xyz
    xyz6
    fun(xyz)
    printf(xdydzd\nxyz)
    }
    void fun(int i int j int k)
    { int t
    t(i+j+k)*2
    printf(td\nt)
    }
    2 阅读面程序注意调试时F11F10区注意函数调程中形参实参关系
    #include
    void main()
    { int x10y20
    void swap (int int)
    printf((1)in main xdyd\nxy)
    swap(xy)
    printf((4)in main xdyd\nxy)
    }
    void swap (int mint n)
    { int temp
    printf((2)in main mdnd\nmn)
    tempmmnntemp
    printf((3)in main mdnd\nmn)
    }
    户定义函数swap()中形式参数mn应改成xy实参变量名F7踪程序运行什变化
    相关知识:形参具建完撤特点函数定义时函数名面圆括号参数称形参函数调时函数名面圆括号参数称实参实参调函数中进行定义时仅指明类型系统分配存储单元形参定义时仅仅指明类型存中分配存储单元调时分配时存储单元函数执行结束返回调函数时该存储单元立撤销
    3 面程序实现求素数请填空完成该程序机运行测试
    #include
    #include
    void main()
    { int m
    * 申明求素数函数 *
    printf(Please input a data m)
    scanf(d&m)
    * 调求素数函数 *
    }
    void prime(int n)
    { int ik
    ksqrt(n)
    for(i2iif (ni0) break
    if(i>k+1)
    printf(This is a prime number)
    else printf(This isn’t a prime number)
    }
    4 面程序功键盘输入干数求出值请填空完成该程序
    #include
    void main( )
    { int i
    int s[10] max
    * Findmax()函数申明 *

    printf(Input 10 number \n)
    * 输入10数s数组中 *

    * 调Findmax函数 *

    for (i0i<10 i++)
    printf(4d s[i])
    printf(\nthe max is d max)
    }
    int Findmax( int x[ ] int n )
    { int maxi
    maxx[0]
    for ( i1 i if(max maxx[i]
    return max
    }
    相关知识:练形参数组函数申明调格式复数组输入方法
    5 面程序功键盘输入干数升序排序请调试检查该程序中错误程序:
    #include
    void main( )
    { int i k
    float s[100] j
    printf( Input number \n)
    for (i0 scanf(f&j) i++)
    s[i]j
    sort(s i)
    for (k0 k printf( f s[k])
    printf(\n)
    }
    void sort( int x[n] int n )
    { int i j tempmin
    for ( i0 i { mini
    for(ji+1j if ( x[j] < x[min])
    minj
    if(mini)
    { tempx[i]
    x[i]x[min]
    x[min]temp
    }
    }
    }
    错误提示:形参实参数类型致般形参数组说明时指定数组长度仅出类型数组名方括号户定义函数sort()没申明
    注意:for (i 0 scanf(f&j) i++)行中for语句第二表达式形式处scanf()函数出错结束输出循环请读者查教材面附录什时候scanf()函数返回0时结束循环
    6 编写程序实现函数输入mn述公式计算输出值

    提示:定义求阶层函数然函数中调三次求
    7 阅读递程序功什?机调试
    #include
    void main( )
    { int m k
    void dtoo( int n int r )
    printf(Pleae input the decimal number)
    scanf(d&m)
    printf( \nPlease input a number in (2816))
    scanf(d&k)
    dtoo(mk)
    }
    void dtoo( int n int r )
    { if(n>r) dtoo(nrr)
    printf(dnr)
    }
    8预面程序写出预结果机验证写出分析
    变量作范围
    # define LOW 10
    # define HIGH 5
    # define CHANGE 2
    int i LOW
    #include
    void main( )
    { int workover ( int i ) reset ( int i )
    int i HIGH
    reset ( i 2)
    printf( i d \n i )
    reset ( i i 2)
    printf( i d \n i )
    reset ( i 2)
    printf( i d \n i )
    workover ( i )
    printf( i d \n i )
    }
    int workover ( int i )
    { i ( i i ) * (( i * i ) ( 2 * i ) + 4)
    printf( i d \n i )
    return ( i )
    }
    int reset ( int i )
    { i i < CHANGE HIGH LOW
    return ( i )
    }
    相关知识:变量写走main()函数中reset(i2)reset(ii2)第reseti没赋值该函数调结束保持原值第二reseti赋值函数调结束前值没全局变量:函数外面定义变量效范围整源程序结尾局部变量:函数部定义变量函数头部定义形参效范围定义函数局部变量具建完撤特点函数定义变量名互干扰果源程序中局部变量全局变量名局部变量优先
    9机调试面程序观察静态局部变量调程中变化
    #include
    void main( )
    { int i
    int f(int)
    for ( i 1 i < 5 i ++)
    printf( (d) d\n if(i))
    printf( \n)
    }
    int f ( int n)
    { static int j 1
    j j * n
    return( j )
    }
    相关知识:静态局部变量果希函数调结束然保留函数中定义局部变量值该局部变量定义静态局部变量(称局部静态变量)静态局部变量具样特点:①全局寿命:静态局部变量数存储静态存储区存储单元中函数调结束值消失直整应程序执行结束存储空间收回②局部见性:作域定义函数部值函数调结束消失函数然访问进入函数值见
    ③初始化特点:定义该局部变量时赋初值赋初值编译程中进行赋值次没赋初值默认初值0(数值型)空字符(字符型)
    10预面程序分析程序运行前宏NUM值机运行较预结果实际结果
    #include stdioh
    #define N 2
    #define M N+1
    #define NUM (M+1)*M2
    main()
    { int in0
    for (i1 i { n++ printf (d\nn) }
    printf(\n)
    }
    11分析面程序运行结果机验证
    #define POWER(x) ((x)*(x))
    #define MAX(xy) (x)>(y)(x)(y)
    #define PR printf
    #include
    void main()
    { int abcdx
    a5b10x200
    cPOWER(a+b)
    xxPOWER(a+b)
    dMAX(a+6b)
    PR( cdddxd \n cdx)
    }
    12编写:输入10学生3门课成绩分函数求
    (1) 学生均分
    (2) 门课均分
    (3) 学生均分降序排列输出学生信息
    (4) 统计格学生输出相应信息
    (5) 编写菜单函数菜单容包括4部分
    分析:题求完成操作录入数求均分排序统计操作分函数实现先分析表示数数结构结构表示学生成绩:
    课程1
    课程2
    课程3
    均分
    68
    74
    50





    10学生3门课程成绩登记二维数组中score[10][4]中列保存均分学生学号单独记录学生序号二维表行号表示面出菜单参考程序功函数学生编写
    #include
    #define N 10
    #define M 4
    void main()
    { int score[N][M]
    char choice'1'
    void input(int [][]intint)
    void aver_stu(int [][]intint)
    void aver_cour(int [][]intint)
    void orde_aver(int [][]intint)
    void failed(int [][]intint)
    input(scoreNM)
    *显示菜单*
    while(choice'0')
    { clrscr()
    printf( the Score Processing System \n)
    printf(1print each student's average\n)
    printf(2print each course's average\n)
    printf(3Order the students by student's average decreasingly \n)
    printf(4print the failed student \n)
    printf(0Exit the system \n)
    printf(\n)
    printf(Please choise (04) \n)
    choicegetchar()
    switch(choice)
    {case '1'
    aver_stu(scoreNM) break
    case '2'
    aver_cour(scoreNM) break
    case '3'
    orde_aver(scoreNM) break
    case '4'
    failed(scoreNM) break
    case '0'
    exit(0)
    default
    printf(Choice ErrorPlease select again(04))
    }
    }
    }

    四实验重点难点
    1 函数定义
    2 函数参数返回值
    3 函数调
    4 数组作函数参数
    5 局部变量全局变量
    6 变量存储类
    五操作点
    Alt+D选择Debug菜单 该菜单查错 包括容
    1 Evaluate
    1) Expression计算结果表达式
    2) Result显示表达式计算结果
    3) New value赋新值
    2 Call stack:该项接触Turbo C debuger 时检查堆栈情况
    3 Find function运行Turbo C debugger时显示规定函数
    4 Refresh display果编辑窗口偶然户窗口重写恢复编辑窗口容
    六注意事项
    1 调函数调语句定义调前没说明
    2 误认形参值改变会影响实参值
    3 函数实参形参类型致

    实验六 指针
    实验目求
    1 通实验进步掌握指针概念会定义指针变量
    2 正确数组指针指数组指针变量
    3 正确字符串指针指字符串指针变量
    4 正确指函数指针变量
    5 解指指针指针概念方法
    二实验学时
    4学时
    三实验务
    编程序机调试运行程序(求指针处理)
    1机验证程序运行结果
    #include
    void main()
    { int ij*pi*pj
    pi&i
    pj&j
    i5
    j7
    printf(\nd\td\td\tdijpipj)
    printf(\nd\td\td\td&i*&i&j*&j)
    }
    运行结果 :
    5 7 34 32
    34 5 32 7
    相关知识:指针值指针指变量值区VC环境运行结果中负数值
    2机验证程序运行结果
    #include
    void main()
    { int ia[]{123}*p
    pa*数组a首址赋指针p*
    for (i0i<3i++)
    printf(dddd\na[i]p[i]*(p+i)*(a+i))
    }
    运行结果:
    1111
    2222
    3333
    相关知识:①指针指数组方法②指针表示数组元素方法③数组元素种表示方法
    3调试列程序具功:指针法输入12数然行4数输出写出调试程
    #include
    void main()
    { int ja[12]*pa
    for(j0j<12j++)
    scanf(dp++)
    pa
    for(j1j<12j++)
    { printf(4d*p++)
    if(j4 0)
    printf(\n)
    }
    }   
    相关知识:①调试时指针变量指目标变量②区分指针值指针指变量值③通指针操作数组元素
    4调试列程序具功:意输入2数调两函数分求:   ⑴ 2数    ⑵ 2数交换值
    #include
    void main( )
    { int abc*p&c
    void sum(int int int *)
    void swap(int * int * )
    scanf(dd&a&b)
    sum(abp)
    swap(&a&b)
    printf(sumd\nc)
    printf(adbd\nab)
    }
    void sum(int aint bint *c)
    { *ca+b
    }
    void swap(int *aint *b)
    { int *t
    ta
    ab
    bt
    }
    相关知识:①调试程序时注意参数传递数值址②指针作参数③利指针返回值

    5面程序键盘输入整数然求出中值填写空缺部分
    #include
    int table[10]
    void lookup(int *tint *aint n)
    { int k
    *at[0]
    for(k1k if( ) *at[k]
    }
    void main()
    { int kmin*p&min
    for (k0k<10k++)
    scanf(dtable+k)
    lookup( 10)
    printf(mind\nmin)
    }
    相关知识:①数组名加址偏移量表示数组元素址方法②数组名作函数参数③指针变量作函数参数

    6程序建立示二维数组格式输出请应组选择项中选择正确填入
    1 0 0 0 1
    0 1 0 1 0
    0 0 1 0 0
    0 1 0 1 0
    1 0 0 0 1
    #include
    void main()
    { int a[5][5]{0}*p[5]ij
    for(i0i<5i++)
    p[i] (1)
    for(i0i<5i++)
    { *(p[i]+ (2) )1
    *(p[i]+5 (3) )1
    }
    for(i0i<5i++)
    { for(j0j<5j++)
    printf(2dp[i][j])
    (4)
    }
    }
    (1) A&a[i][0] B&a[i][1] C&p[i] D&a[0][i]
    (2) A0 B1 Ci D(i+1)
    (3) A0 B1 Ci D(i+1)
    (4) Aputchar(\n) B putchar('\n') C putchar(\n) Dprintf('\n')
    相关知识:①二维数组指针②数组指针概念
    7综合编程题:已知整型数组a[5]元素值4681012指针求该数组元素积
    四实验重点难点
    1 指针定义引
    2 指针变量
    3 指针数组
    4 指针函数
    五操作点
    Alt+B进入Breakwatch菜单 该菜单容:
    1 Add watch: 监视窗口插入监视表达式
    2 Delete watch:监视窗口中删前监视表达式
    3 Edit watch:监视窗口中编辑监视表达式
    4 Remove all :watches监视窗口中删监视表达式
    5 Toggle breakpoint:光标行设置清断点
    6 Clear all breakpoints:清断点
    7 View next breakpoint:光标移动断点处
    六注意事项
    1 类型指针混
    2 混淆数组指针变量区

    实验七 结构体体
    实验目求
    1 掌握结构体类型变量定义
    2 掌握结构体类型数组概念
    3 掌握链表概念初步学会链表进行操作
    4 掌握体概念
    二实验学时
    2学时
    三实验务
    编程序然机调试运行
    1 编写input()output()函数输入输出5学生数记录
    程序源代码:
    #define N 5
    struct student
    { char num[6]
     char name[8]
     int score[4]
    } stu[N]
    input(stu)
    struct student stu[]
    { int ij
     for(i0i { printf(\n please input d of d\ni+1N)
      printf(num )
      scanf(sstu[i]num)
      printf(name )
      scanf(sstu[i]name)
       for(j0j<3j++)
       { printf(score dj+1)
        scanf(d&stu[i]score[j])
       }
      printf(\n)
     }
    }
    print(stu)
    struct student stu[]
    { int ij
    printf(\nNo Name Sco1 Sco2 Sco3\n)
    for(i0i{ printf(6s10sstu[i]numstu[i]name)
     for(j0j<3j++)
      printf(8dstu[i]score[j])
     printf(\n)
    }
    }
    main()
    {
     input()
     print()
    }
    运行结果:

    2 5学生学生数包括学号姓名3门课成绩键盘输入5学生数求印出3门课总均成绩高分学生数(包括学号姓名3门课成绩均分数)
    程序源代码:
    #define N 5
    struct student
    { char num[ 6 ]
     char name[ 8 ]
     int score[ 4 ]
    float avr
    } stu[N]
    main()
    { int ijmaxmaxisum
    float average
     
    for(i0i { printf(\n please input d of d\ni+1N)
      printf(num )
      scanf(sstu[i]num)
      printf(name )
      scanf(sstu[i]name)
       for(j0j<3j++)
       { printf(score dj+1)
        scanf(d&stu[i]score[j])
       }
      printf(\n)
      }
    average0
    max0
    maxi0
    for( i0 i  {
    sum 0
    for( j0 j<3 j++ )
      sum+stu[ i ]score[ j ]
    stu[ i ]avrsum 30
    average+ stu[ i ]avr
    if( sum > max ) { maxsum maxii }
    }
    averageN
    printf(\nNo Name Sco1 Sco2 Sco3 average\n) *print*
    for(i0 i{ printf(8s10sstu[ i ]num stu[ i ]name)
     for( j0 j<3 j++ )
      printf (8d stu[ i ]score[ j ])
     printf ( 62f \n stu[ i ]avr)
    }
    printf (average is 52f\naverage)
    printf (The best student is s total score is dstu[maxi]namemax)
    }
    四实验重点难点
    结构体变量定义引结构体变量指针
    五操作点
    结构体名(struct)标识种新数类型结构体类型注意区分结构体类型基数类型复合数类型结构体成员变量普通变量定义样结构体变量
    六注意事项
    混淆结构体类型结构体变量区

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 10 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    C语言程序设计实验报告

    C语言程序设计实验报告  实验名称 计算出1000以内10个最大素数之和   实验目的   1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语...

    10年前   
    948    0

    C语言程序设计说课教案

    《C语言程序设计》说课教案从以下方面说明:一、 课程性质、地位二、 教学对象分析及要求三、 课程体系四、 课程的重点、难点及突破五、 教学方法与教学手段六、 学生考核七、 教学计划一、 课程性...

    1年前   
    337    0

    铜陵学院C语言程序设计实验报告

    《C语言程序设计》 实验报告第二学期班 级 学 号姓 名指导教师实验一 Visual C++ 6.0编程环境与C语言程序的调试过程一、实验学时2 学时。二、...

    1年前   
    246    0

    C语言实验报告《逻辑结构程序设计》

    C语言实验报告《逻辑结构程序设计》  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:_____...

    12年前   
    738    0

    国开电大《C语言程序设计》答案

    形考1在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(  )。选择一项:A. main 正确恭喜你,答对啦!!B. MAIN C. name D. function .题目2正确...

    1年前   
    405    1

    C语言程序设计习题试题集

    《C语言程序设计》精品课件试题目录(按住CTRL键点击超链)单项选择题………………………第002页阅读程序题………………………第018页程序填空题………………………第039页编写程序题…………...

    1年前   
    5411    0

    C语言程序设计形考任务

    假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,则不正确的语句为( )。选择一项: a. struct ...

    4年前   
    1478    0

    《高级语言程序设计》实验报告

    1.掌握在Visual C++6.0环境下C程序的建立、编辑、编译和执行过程。2.掌握C程序的最基本框架结构,完成简单程序的编制与运行。3.了解基本输入输出函数scanf()、printf ()...

    2年前   
    436    0

    《高级语言程序设计》实验报告

    设计一种用单链表存储多项式的结构(每个结点存储一项的系数和指数,类型都为int)并编写一个产生多项式链表的函数和一个实现两个多项式相加和相乘的函数。

    5年前   
    3505    0

    c语言实验报告

    c语言实验报告  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________    成...

    11年前   
    790    0

    C语言实验报告《指针》

    C语言实验报告《指针》  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________ ...

    11年前   
    949    0

    C语言实验报告《数组》

    C语言实验报告《数组》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________  ...

    11年前   
    879    0

    C语言实验报告《综合实验》

    C语言实验报告《综合实验》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________...

    10年前   
    865    0

    C语言综合实验2报告

    实验报告实验名称 小型学生信息管理系统 实验项目 编写一学生信息管理系统,用来管理学生基本信息及成绩信息专业班级 姓名 学号 指导教师 成...

    3年前   
    440    0

    C语言实验报告《函数》

    C语言实验报告《函数》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________  ...

    12年前   
    1353    0

    c语言综合性实验总结

    华北科技学院计算机学院综合性实验实 验 报 告 课程名称 程序设计语言(C) 实验学期 2011 至 2012 学年 第 二 学期学生所在学...

    4年前   
    592    0

    国开电大《C语言程序设计》形考任务3

    论文和作业参考答案联系qq2019910207或咨询微信15927685953,为了准确获取需要资料请在付费前加qq或微信咨询,请认真核对是您需要的题目后再付费!形考任务三题目1在下面的函数声...

    2个月前   
    82    0

    俄罗斯方块C语言程序设计报告

    C语言课程设计报告俄罗斯方块程序设计报告一、 问题描述俄罗斯方块(Tetris, 俄文:Тетрис)是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方...

    1年前   
    267    0

    浅析C语言程序设计实践教学环节研究

    浅析C语言程序设计实践教学环节研究摘要:本文将以《C语言程序设计》课程为例,讲述如何将实践知识贯穿于线上教学,实现实践教学环节的线上教学智能化运行及管理。关键词:百万扩招;线上教学;C语言;实...

    2年前   
    389    0

    国开电大《C语言程序设计》形考任务4

    论文和作业参考答案联系qq2019910207或咨询微信15927685953,为了准确获取需要资料请在付费前加qq或微信咨询,请认真核对是您需要的题目后再付费!形考任务四题目1假定有“str...

    2个月前   
    85    0

    文档贡献者

    文***品

    贡献于2019-06-22

    下载需要 10 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!

    该用户的其他文档