大学C语言期末考试练习题含答案


    学C语言期末考试练题(带详解答案)
    单项选择题
    1.( A )构成C语言程序基单位
    A函数 B程 C子程序 D子例程
    2.C语言程序 C 开始执行
    A) 程序中第条执行语句    B) 程序中第函数
       C) 程序中main函数          D) 包含文件中第函数
    3说法中正确( C )
    AC语言程序总第定义函数开始执行
    BC语言程序中调函数必须main( )函数中定义
    CC语言程序总main( )函数开始执行
    DC语言程序中main( )函数必须放程序开始部分
    4列关C语言说法错误( B )
    A) C程序工作程编辑编译连接运行
    B) C语言区分写
    C) C程序三种基结构序选择循环
    D) C程序main函数开始执行
    5列正确标识符(C )
    Aa1 Ba[i] Ca2_i Dint t
    5~8题相类型题
    考点:标识符命名规
    (1) 字母数字划线构成
    (2) 数字作标识符开头
    (3) 关键字作标识符
    选项A中 选项B中[]满足(1)选项D中int关键字满足(3)

    6.列C语言户标识符中合法( B )
    A)3ax B)x C)case D)e2 E)union
    选项A中标识符数字开头满足(2)选项CE均关键字满足(3)选项D中满足(1)

    7.列四组选项中正确C语言标识符( C )
    A) x B) a+b C) a123 D) 123
    选项A中 选项B中+满足(1)选项D中标识符数字开头满足(2)

    8列四组字符串中作C语言程序中标识符( A )
    Aprint _3d db8 aBc BI\am one_half startit 3pai
    Cstr_1 Cpp pow while DPxq My>book line# Hisage
    选项B中\ 选项D中>#满足(1)选项C中while关键字满足(3)
    9C语言中简单数类型包括(D )
    A整型实型逻辑型 B整型实型逻辑型字符型
    C整型字符型逻辑型 D整型实型字符型
    10C语言程序中表达式52结果 C
    A)25 B)2 C)1 D)3
    详见教材P52~53
    求余运算符该运算符整型数进行运算符号模数相521 5(2)1(5)21(5)(2)1

    求商运算符该运算符够整型字符浮点等类型数进行运算522
    11.果int a3b4条件表达式aA) 3 B) 4 C) 0 D) 1
    详见教材P97
    表达式1?表达式2:表达式3
    先计算表达式1
    表达式1成立 选择计算表达式2表达式2值作整表达式值
    表达式1成立选择计算表达式3表达式3值作整表达式值
    题中aa3b4a
    12.int x2y3z4 表达式x A)4 B)3 C)2 D)0 E)1
    13.C语言中关系表达式逻辑表达式值( B )
    A) 0 B) 01 C) 1 D) T’’F’
    14 面( D )表达式值4
       A) 113           B) 1103
       C) (float)113    D) (int)(1103+05)
    14~16题类型
    详见教材P54~56
    (1)相数类型元素进行数学运算(+*)结果保持原数类型
    (2)数类型元素进行数学运算先统数类型统标准低精度类型转换高精度数类型
    选项A113两整数113结果数类型应整数3666666数部分全部舍掉仅保留整数1133
    选项B110实数3整数首先统数类型整型数3转换30转换数类型统实型数选项B变11030结果数类型应实型数选项B 110 33666666
    选项C先整数11强制类型转换转换实型110选项C变1103计算程结果选项B
    选项D首先计算1103计算程结果选项B3666666计算3666666+0541666664166666强制类型转换整型数部分全部舍掉结果4

    15设整型变量 a2执行列语句浮点型变量b值05( B )
    Ab10a Bb(float)(1a)
    Cb1(float)a Db1(a*10)
    16 int n float f138执行n(int)f3n值(A)
    A1 B4 C4333333 D46
    (int)f表示f中值强制类型转换整型138数部分舍掉转换13然计算133结果1结果赋变量nn值1

    17 维数组a正确说明: D
    A) char a(10) B) int a[]
    C)int k=5a[k] D)char a[3]{a’’b’’c’}
    详见教材P143~144维数组定义初始化
    类型符 数组名 [常量表达式]
    类型符指数组中数组元素类型数组名符合标识符命名规常量表达式指数组长度(数组中包含元素数)值整数变量1开始计数
    选项A常量表达式放中括号 [ ]中
    选项B数组初始化(赋值)时候省略数组长度B中未a进行初始化
    选项C常量表达式变量
    18维数组a进行初始化语句 ( C )
    A int a[5](01234) B int a(5){}
    C int a[3]{012} D int a{5}{10*1}
    详见教材P145维数组定义初始化
    选项BD常量表达式放中括号 [ ]中
    选项A数组做干相数类型元素序集合集合形式初始化{ }初始化选项A()

    19C语言中维整型数组正确定义 D
    A)int a(10) B)int n10a[n]
    C)int na[n] D)#define N 10
    int a[N]
    20已知:int a[10] a数组元素正确引( D )
    Aa[10] Ba[35] Ca(5) Da[0]
    详见教材P144数组元素引
    数组名[标]
    引数组元素时[ ]中标逻辑址标整数变量0开始计数
    int a[10]表示定义包含10整型数数组a数组元素逻辑址标范围0~9a[0] 表示组中第1元素 a[1] 表示组中第2元素 a[2] 表示组中第3元素 a[9] 表示组中第10元素
    选项A超数组a逻辑址标范围
    选项B逻辑址标整数
    选项C逻辑址标放[ ]中


    21数组说明i10a[a[i]]元素数值(C )
    int a[12]{147102581136912}
    A10 B9 C6 D5
    先算a[a[i]]层a[i]i10a[i]a[10]
    a[10]应面数组中元素9 a[a[i]]a[9]
    a[9]应面数组中元素6 a[9]6


    22说明:int a[][3]{{123}{45}{67}} 数组a第维 ( B )
    A 2 B 3 C 4 D确定值
    5 7 D) 3 6 9
    二维数组维指二维数组行数题中行二维数组赋值层括号数组行
    23二维数组正确定义( C )
    详见教材P149~152二维数组定义初始化
    类型符 数组名 [常量表达式][常量表达式]
    二维数组做矩阵
    类型符指数组中数组元素类型数组名符合标识符命名规第常量表达式指数组行数第二常量表达式指数组列数常量表达式值整数变量1开始计数
    维数组初始化时省略数组长度
    二维数组初始化时省略行数省略列数
    选项AB省略列数
    选项D符合二维数组定义般形式行列常量表达式应该放[]中

       Aint a[ ] [ ]{123456} Bint a[2] [ ]{123456}
    Cint a[ ] [3]{123456} Dint a[23]{123456}
    24.已知int a[3][4]数组元素引正确__C___
    A)a[2][4] B)a[13] C)a[2][0] D)a(2)(1)
    详见教材P150数组元素引
    数组名[标] [标]
    引数组元素时[ ]中标逻辑址标整数变量0开始计数
    第[标]表示行逻辑址标第二[标]表示列逻辑址标
    题图示详见P149图67
    a行逻辑址范围0~2a列逻辑址范围0~3
    选项A列逻辑址标超范围
    选项BD引形式正确

    25C语言中函数返回值类型 A 决定
    A)函数定义时指定类型 B) return语句中表达式类型
    C) 调该函数时实参数类型 D) 形参数类型
    26 C语言中函数数类型指( A )
    A 函数返回值数类型 B 函数形参数类型
    C 调该函数时实参数类型 D意指定数类型
    27 函数调时说法正确( B )
     A函数调必须带回返回值
     B实际参数形式参数名
     C函数间数传递全局变量
     D调函数调函数总文件里
    28 C语言中表示静态存储类关键字 ( C )
    A) auto B) register C) static D) extern
    29.未指定存储类变量隐含存储类( A )
    A)auto B)static C)extern D)register
    30 说明语句:
    struct student
    { int num
    char name[ ]
    float score
    }stu
    面叙述正确 ( D )
    A struct结构体类型关键字
    B struct student 户定义结构体类型
    C num score结构体成员名
    D stu户定义结构体类型名
    31说明语句:
    struct date
    { int year
    int month
    int day
    }brithday
    面叙述正确__C___
    A) struct声明结构体类型时关键字
    B) struct date 户定义结构体类型名
    C) brithday户定义结构体类型名
    D) yearday 结构体成员名
    32 结构变量stul中成员age非法引 B
    struct student
    { int age
    int num
    }stu1*p
    p&stu1
    A) stu1age B) studentage C) p>age D) (*p)age
    33设定义:
    struck sk
    { int a
    float b
    }data
    int *p
    P指data中a域正确赋值语句 C
    A) p&a B) pdataa C) p&dataa D)*pdataa
    34设说明语句:
    typedef struct stu
    { int a
    float b
    } stutype
    面叙述中错误( D )
    Astruct结构类型关键字
    Bstruct stu户定义结构类型
    Cab结构成员名
    Dstutype户定义结构体变量名
    35. 语句int *p说明 C
    A)p指维数组指针
    B)p指函数指针该函数返回int型数
    C)p指int型数指针 指针定义教材P223
    D)p函数名该函数返回指int型数指针
    36.列正确定义( A )
    A int *p&ii Bint *pi
    C.int i*p&i Dint i*p
    选项A先定义整型指针变量p然变量i址赋p然时未定义变量i编译器法获变量i址(AC选项C先定义变量i存中i分配空间i存空间址确定然定义p时p赋i址C正确)
    37 说明:int n2*p&n*qp非法赋值语句 ( D )
    A)pq B)*p*q C)n*q D)pn
    pq整型指针变量二者里面仅存放整型变量址
    选项Aq中址址赋p
    选项B*p表示p指象n容整数*q表示q指象容定义q时初始化p中n址qp中存放n址*q表示q指象n容*p*q 相 nn
    选项Cn*q 等价nn
    选项Dp中存放址n中整数值赋p
    38.语句:int a[10] B 指针变量p正确定义初始化
    A)int p*a B)int *pa C)int p&a D)int *p&a
    选项Aa数组名指针变量名*标注数组名a
    选项Ca数组名数组名址需址符号定义指针变量p时应变量名前加*标明p指针变量
    选项Da数组名数组名址需址符号
    39说明语句int a[5]*pa数组元素正确引( C )
    Aa[p] Bp[a] C*(p+2) Dp+2
    首先定义整型数组aa长度5然定义指针变量p时p进行初始化数组a址赋p时p中存放数组a首址数组中第元素a[0]址
    数组元素标引(详见p144) 般形式 数组名[标] 中标逻辑址标0开始计数方括号中标变量表达式结果定整数
    选项Ap中存放址整数做数组元素标
    选项Ba数组名数组名址整数做数组元素标
    选项C(重点详见p231~234) p+2表示指数组中两元素址前p指a[0]p+2表示a[2]址*(p+2)表示a[2]容
    40 程序
    int a[10]{12345678910}*Pa
    数值9表达式 B
    A) *P+9 B) *(P+8) C) *P+9 D) P+8
    (重点详见p231~234)
    首先定义整型数组aa长度5然定义指针变量P时P进行初始化数组a址赋P时P中存放数组a首址数组中第元素a[0]址
    数组中9应a[8] 选项BP+8表示数组中8元素址a[8]址*(P+8)表示该址存放容a[8]值
    选项A*P表示P指象容时P指a[0] *Pa[0]值1 *P+91+910
    选项C*P表示P指象容时P指a[0] *Pa[0]值*P+9 *P *P+9 等价a[0]a[0]+9
    选项DP+8表示数组中8元素址a[8]址非a[8]中值
    41 C语言中 D 作字符串结束标志
    A)’\n’ B)’ ’ C) ’0’ D)’\0’
    42列数中属字符串常量( A )
    Aa B{ABC} Cabc\0’ Da’
    干字符构成字符串
    C语言中单引号标识字符双引号标识字符串
    选项BC分{}’’标识字符串
    选项D标识字符
    43已知char x[]hello y[]{'h''e''a''b''e'} 关两数组长度正确描述 B
    A)相 B)xy C)xy D)答案
    C语言中字符串面需结束标志位'\0'通常系统会动添加
    维数组初始化时采字符串形式(例题数组x)采字符集合形式(例题数组y)字符串形式初始化时数组x存储字符串中字符存储字符串结束标志位数组x长度6字符集合形式初始化时数组y仅存储集合中元素数组y长度5
    二 读程序
    基输入输出流程控制
    1
    #include
    main()
    { int a1b3c5
    if (ca+b)
    printf(yes\n)
    else
    printf(no\n)
    }
    运行结果:no

    详见教材p89 选择结构
    详见教材p91关系符号
    详见附录D p378符号优先级
    表示判断符号两边值否相等表示符号右边值赋左边变量
    题考点选择结构3种基形式第二种

    选择结构三种般形式中语句皆复合语句复合语句{ }括起复合语句中包括条语句时省略{ }题两printf操作没加{ }

    ca+b成立执行printf(yes\n)
    否(ca+b成立)执行printf(no\n)

    +优先级高先算a+b值4 表达式54成立执行printf(no\n)输出字符串no

    2
    #include
    main()
    { int a12 b 34 c56 min0
    mina
    if(min>b)
    minb
    if(min>c)
    minc
    printf(mind min)
    }
    运行结果: min34
    详见教材p89 选择结构
    题考点选择结构3种基形式第种
    包含两选择结构(两if语句)
    定义变量赋值 时a12 b 34 c56 min0
    a中值拷贝赋min覆盖min中0时min中值更新12
    min>b成立执行minb
    min>c成立执行minc
    输出min中值

    1234第if语句表达式成立执行minb 执行min中值更新34
    3456第二if语句表达式成立执行minc

    输出min中值34



    3
    #include
    main()
    { int x2y 1z5
    if(xif(y<0)
    z0
    else
    zz+1
    printf(d\nz)
    }
    运行结果:5
    遇选择结构首先明确条件表达式成立时执行操作题中第if语句复合语句没括号{ }说明复合语句中包含条语句进省略{ }层ifelse选择结构第二种基形式结构视条语句层ifelse作第if语句复合语句

    表达式x y<0执行z0
    否(y>0)执行zz+1
    输出z
    2>1表达式x输出z中值5

    4
    #include
    main()
    { float abct
    a3
    b7
    c1
    if(a>b)
    {taabbt}
    if(a>c)
    {taacct}
    if(b>c)
    {tbbcct}
    printf(52f52f52fabc)
    }
    运行结果:100 200 700

    详见教材p72数输出形式
    题包含3if语句if语句{ }省略{ }中包含条语句
    表达式a>b成立执行{taabbt}
    表达式a>c成立执行{taacct}
    表达式b>c成立执行{tbbcct}
    输出abc中值求输出数宽度5空格数部分保留2位数右齐

    37表达式a>b成立执行{taabbt}

    31表达式a>c成立执行{taabbt}第句a中3拷贝粘贴t中第二句c中1拷贝粘贴a中覆盖掉先前3第三句t中3拷贝c中覆盖掉c中先前1 执行完复合语句实现ac元素值互换a1c3t3

    7c中3b>c成立执行执行{tbbcct}程执行b3c7t7

    时输出abc中值100 200 700

    5.
    #include < stdio h >
    main ( )
    { float c30 d40
    if ( c>d ) c50
    else
    if ( cd ) c60
    else c70
    printf ( 1f\nc )
    }
    运行结果:70
    题ifelse语句嵌套第二ifelse作第ifelse语句else部分复合语句

    表达式c>d成立执行c50
    否(表达式c>d成立)
    表达式cd成立执行c60
    否执行c70
    输出c中值

    3040表达式c>d成立执行第二if…else…
    30等40表达式cd成立执行c7070赋c 覆盖掉c中30时c中值70
    输出时c中值

    6
    #include
    main()
    { int m
    scanf(d &m)
    if (m > 0)
    { if (m2 0) printf(d is a positive even\n m)
    else printf(d is a positive odd\n m) }
    else
    { if (m 2 0) printf(d is a negative even\n m)
    else printf(d is a negative odd\n m) }
    }
    键入-9运行结果 9 is a negative odd


    7
    #include
    main()
    { int num0
    while(num<2){ num++printf(d\nnum)}
    }
    运行结果:
    1
    2
    3

    详见教材p115循环结构
    循环条件num<2成立时候执行循环体{ num++printf(d\nnum)}中语句

    循环初值num0
    循环条件num<2成立
    第1次循环:执行num++num中值加1执行num1
    执行printf(d\nnum)屏幕输出num中值输出1换行

    时num中值1循环条件num<2成立
    第2循环:执行num++num中值加1执行num2
    执行printf(d\nnum)屏幕输出num中值输出2换行

    时num中值2循环条件num<2成立
    第3循环:执行num++num中值加1执行num3
    执行printf(d\nnum)屏幕输出num中值输出3换行
    时num中值3循环条件num<2成立结束循环

    8.
    #include
    main( )
    { int sum10n1
    while(n<3) {sumsumn n++ }
    printf(ddnsum)
    }
    运行结果:37

    循环条件n<3成立时候执行循环体{sumsumn n++ }中语句

    循环初值sum10n1
    循环条件n<3成立
    第1次循环:执行sumsumn1019
    执行n++n中值加1执行n2

    时n中值2sum中值9循环条件n<3成立继续执行循环
    第2次循环:执行sumsumn927
    执行n++n中值加1执行n3

    输出时nsum中值37需注意printf(ddnsum) 中求输出数彼间逗号间隔结果两数间定逗号




    9
    #include
    main()
    { int numc
    scanf(d&num)
    do {cnum10 printf(dc) }while((num10)>0)
    printf(\n)
    }
    键盘输入23运行结果:32
    详见教材p117循环结构p60复合赋值运算符
    do{ }while(表达式)
    先条件执行循环体判断循环条件注意while(表达式)分号

    定义整型变量numc
    num赋整型值
    执行{cnum10 printf(dc) }直循环条件(num10)>0成立
    输出换行

    已知num赋值23
    第1次执行循环体
    执行cnum1023103
    执行printf(dc)输出3
    判断循环条件 num10等价numnum10 num23102 20循环条件(num10)>0成立继续执行循环体执行完第1次循环时num2c3


    第2次执行循环体
    执行c2102
    执行printf(dc)输出2
    判断循环条件num21000等0循环条件(num10)>0成立结束循环

    10
    #include
    main()
    { int s0a5n
    scanf(d&n)
    do { s+1 aa2 }while(an)
    printf(dd\nsa)
    }
    输入值1运行结果: 21
    详见教材p117循环结构p60复合赋值运算符
    执行{ s+1 aa2 }直循环条件an成立

    已知n赋值1s0a5
    第1次执行循环体
    执行s+1等价ss+10+1
    执行aa2 a523
    判断循环条件3等1循环条件an成立继续执行循环体
    执行完第1次循环时s1a3
    第2次执行循环体
    执行s+1等价ss+11+12
    执行aa2 a321
    判断循环条件1等1循环条件an成立结束循环
    执行完第2次循环时s2a1

    输出时sa中值结果21

    11.
    #include stdioh
    main()
    {char c
    cgetchar()
    while(c'') {putchar(c) cgetchar() }
    }
    果键盘输入abcde?fgh(回车)
    运行结果:abcde

    12.
    #include
    main()
    { char c
    while((cgetchar())’’)
    { if(A’ else if(a’}
    输入ab*ABcd#CD时运行结果:ABABCDCD

    13
    #include
    main()
    { int x y 0
    for(x1x<10x++)
    { if(y>10)
    break
    yy+x
    }
    printf(d dyx)
    }
    运行结果:10 5
    详见教材p120 for语句
    详见教材p126~128 breakcontinue语句
    for( 表达式1表达式2表达式3)
    {

    }
    (1) 先求解表达式1
    (2) 求解表达式2值真执行循环体然执行 (3) 假结束循环转(5)
    (3) 求解表达式3
    (4) 转回面 (2)继续执行
    (5) 循环结束执行for语句面语句

    break 跳出循环体continue结束次循环(第i次循环)继续执行次循环(第i+1次循环)

    题 表达式1x1表达式2(循环条件)x<10表达式3x++
    初值x1y0循环条件(表达式2)x<10成立进入循环体

    第1次循环
    执行if语句010if语句条件表达式成立执行break
    执行yy+x y0+11
    转表达式3执行x++ xx+11+12循环条件x<10成立进入第2次循环

    第2次循环
    执行if语句110if语句条件表达式成立执行break
    执行yy+x y1+23
    转表达式3执行x++ xx+12+13循环条件x<10成立进入第3次循环

    第3次循环
    执行if语句310if语句条件表达式成立执行break
    执行yy+x y3+36
    转表达式3执行x++ xx+13+14循环条件x<10成立进入第4次循环

    第4次循环
    执行if语句610if语句条件表达式成立执行break
    执行yy+x y6+410
    转表达式3执行x++ xx+14+15循环条件x<10成立进入第5次循环

    第5次循环
    执行if语句10等10if语句条件表达式成立执行break跳出循环
    break跳出for语句条语句执行printf(d dyx)
    输出前yx结果10 5


    14
    #include
    main( )
    { char ch
    chgetchar( )
    switch(ch)
    { case A’ printf(c’A’)
    case B’ printf(c’B’) break
    default printf(s\nother)
    } }
    键盘输入字母A时运行结果:AB
    详见教材p103switch语句
    switch(表达式)
    { case 常量1 :语句1
    case 常量2 :语句2
    ┇ ┇ ┇
    case 常量n :语句n
    default 语句n+1
    }
    中表达式常量1…常量n整型字符型

    case相出执行程序入口起始位置找匹配常量处开始执行程序匹配常量直遇breakswitch结束

    题程:
    首先键盘接收字符’A’放变量ch中
    执行switch语句Switch面条件表达式ch表达式值字符’A’ 字符’A’次面 case中常量匹配
    第1case常量匹配语句开始执行程序(执行程中进行匹配)先执行printf(c’A’)屏幕输出A继续执行printf(c’B’)屏幕输出B继续执行break 时跳出switch语句


    15
    #include
    main( )
    { int a1b0
    scanf(d&a)
    switch(a)
    { case 1 b1break
    case 2 b2break
    default b10}
    printf(d b)
    }
    键盘输入5运行结果:10
    题程:
    首先scanf函数变量a赋值5
    执行switch语句switch面条件表达式a表达式值5 5次面 case中常量匹配没找匹配常量两case语句执行执行default面语句b1010赋变量b
    输出变量b结果10



    16
    #include
    main()_
    { char grade’C’
    switch(grade)
    {
    case A’ printf(90100\n)
    case B’ printf(8090\n)
    case C’ printf(7080\n)
    case D’ printf(6070\n) break
    case E’ printf(<60\n)
    default printf(error\n)
    }
    }
    运行结果:
    7080
    6070
    题程:
    首先键盘接收字符’C’放变量grade中
    执行switch语句switch面条件表达式grade表达式值字符’C’ 字符’C’次面 case中常量匹配
    第3case常量匹配语句开始执行程序(执行程中进行匹配)先执行printf(7080\n)屏幕输出7080换行继续执行printf(6070\n)屏幕输出6070换行继续执行break 时跳出switch语句


    17
    #include
    main()
    { int y9
    for(y>0y )
    if(y30)
    { printf(d y)
    }
    }
    运行结果:
    852

    详见教材p53增减符号
    题 表达式1省略表达式2(循环条件)y>0表达式3y
    初值y9循环条件(表达式2)y>0成立进入循环体

    第1次循环
    执行if语句930if语句条件表达式成立执行printf(d y)y先减1变8然输出屏幕输出8
    转表达式3执行y yy1817循环条件y>0成立进入第2次循环

    第2次循环
    执行if语句730if语句条件表达式成立执行printf(d y)
    转表达式3执行y yy1716循环条件y>0成立进入第3次循环

    第3次循环
    执行if语句630if语句条件表达式成立执行printf(d y)y先减1变5然输出屏幕输出5
    转表达式3执行y yy1514循环条件y>0成立进入第4次循环

    第4次循环
    执行if语句430if语句条件表达式成立执行printf(d y)
    转表达式3执行y y413循环条件y>0成立进入第5次循环

    第5次循环
    执行if语句330if语句条件表达式成立执行printf(d y)y先减1变2然输出屏幕输出2
    转表达式3执行y yy1211循环条件y>0成立进入第5次循环
    第6次循环
    执行if语句130if语句条件表达式成立执行printf(d y)
    转表达式3执行y y110循环条件y>0成立循环结束


    18
    #include
    main()
    { int isum0 i1
    do{ sumsum+i i++ }while(i<10)
    printf(dsum)
    }
    运行结果: 55




    19
    #include
    #define N 4
    main()
    { int i
    int x11x22
    printf(\n)
    for(i1i{ printf(4d4dx1x2)
    if(i20)
    printf(\n)
    x1x1+x2
    x2x2+x1
    }
    }
    运行结果:
    1 2 3 5
    8 13 21 34

    题 首先整型变量赋初值x11x22
    表达式1i1表达式2(循环条件)i循环变量初值i1循环条件(表达式2)i<4成立进入第1次循环

    第1次循环
    执行printf(4d4dx1x2)屏幕输出1 2
    执行if语句120if语句条件表达式成立执行printf(\n)
    执行x1x1+x21+23时x1中值已变3
    执行x2x2+x12+35
    转表达式3执行i++ i2循环条件i<4成立进入第2次循环
    第2次循环
    执行printf(4d4dx1x2)屏幕输出3 5
    执行if语句220if语句条件表达式成立执行printf(\n)换行
    执行x1x1+x23+58时x1中值已变8
    执行x2x2+x15+813
    转表达式3执行i++ i3循环条件i<4成立进入第3次循环
    第3次循环
    执行printf(4d4dx1x2)屏幕输出8 13
    执行if语句320if语句条件表达式成立执行printf(\n)
    执行x1x1+x28+1321时x1中值已变21
    执行x2x2+x121+1334
    转表达式3执行i++ i4循环条件i<4成立进入第4次循环
    第2次循环
    执行printf(4d4dx1x2)屏幕输出21 34
    执行if语句420if语句条件表达式成立执行printf(\n)换行
    执行x1x1+x221+3455时x1中值已变55
    执行x2x2+x134+5589
    转表达式3执行i++ i5循环条件i<4成立结束循环


    20
    #include
    main( )
    { int x y
    for(x30 y0 x>10 y<10 x y++)
    x2 y+2
    printf(xdyd\nxy)
    }
    运行结果:
    x0y12

    21
    #include
    #define N 4
    main( )
    { int ij
    for(i1i { for(j1j printf( )
    printf(*)
    printf(\n)
    }}
    运行结果:
    *
    *
    *
    *

    详见教材P41符号常量
    宏处理指令定义符号常量N4编译程中遇N视整数4

    外层for循环表达式1i1表达式2(循环条件)i层for循环表达式1j1表达式2(循环条件)j
    首先计算外层循环表达式1i1循环条件i<4成立进入外层for循环体

    外层for循环第1次 时i1
    层循环j1循环条件j 执行printf(*)
    执行printf(\n)换行
    外层循环体执行完计算外层循环表达式3i++时i2 循环条件i<4
    成立次进入外层for循环体

    外层for循环第2次 时i2
    层循环j1循环条件j第1次执行层循环体printf( )
    执行层循环表达式3j++2j
    执行printf(*)
    执行printf(\n)换行
    外层循环体执行完计算外层循环表达式3i++时i3 循环条件i<4
    成立进入外层for循环体

    外层for循环第3次 时i3
    层循环j1循环条件j第1次执行层循环体printf( )
    执行层循环表达式3j++2j第2次执行层循环体printf( )
    执行层循环表达式3j++3j 执行printf(*)
    执行printf(\n)换行
    外层循环体执行完计算外层循环表达式3i++时i4 循环条件i<4
    成立进入外层for循环体

    外层for循环第4次 时i4
    层循环j1循环条件j第1次执行层循环体printf( )
    执行层循环表达式3j++2j第2次执行层循环体printf( )
    执行层循环表达式3j++3j第3次执行层循环体printf( )
    执行层循环表达式3j++4j 执行printf(*)
    执行printf(\n)换行
    外层循环体执行完计算外层循环表达式3i++时i5 循环条件i<4
    成立跳出外层for循环体




    数组
    1
    #include
    main()
    { int i a[10]
    for(i9i>0i)
    a[i]10i
    printf(ddda[2]a[5]a[8])
    }
    运行结果:
    852

    详见p143146 例题61定懂

    首先定义整型变量i整型数组a a长度10a中包含10整型元素(整型变量)
    执行for循环语句
    初值i9 循环条件i>0成立执行循环体
    第1次循环
    执行a[i]10i 等价a[9]1091
    计算表达式3ii8循环条件i>0成立继续执行循环体
    第2次循环
    执行a[i]10i 等价a[8]1082
    计算表达式3ii7循环条件i>0成立继续执行循环体
    第3次循环
    执行a[i]10i 等价a[7]1073
    计算表达式3ii6循环条件i>0成立继续执行循环体
    第4次循环
    执行a[i]10i 等价a[6]1064
    计算表达式3ii5循环条件i>0成立继续执行循环体
    第5次循环
    执行a[i]10i 等价a[5]1055
    计算表达式3ii4循环条件i>0成立继续执行循环体
    第6次循环
    执行a[i]10i 等价a[4]1046
    计算表达式3ii3循环条件i>0成立继续执行循环体
    第7次循环
    执行a[i]10i 等价a[3]1037
    计算表达式3ii2循环条件i>0成立继续执行循环体
    第8次循环
    执行a[i]10i 等价a[2]1028
    计算表达式3ii1循环条件i>0成立继续执行循环体
    第9次循环
    执行a[i]10i 等价a[1]1019
    计算表达式3ii0循环条件i>0成立继续执行循环体
    第10次循环
    执行a[i]10i 等价a[0]10010
    计算表达式3ii1循环条件i>0成立跳出循环体

    2
    #include
    main()
    { int ia[6]
    for (i0 i<6 i++)
    a[i]i
    for (i5 i>0 i)
    printf(3da[i])
    }
    运行结果:
    5 4 3 2 1 0
    首先定义整型变量i整型数组a a长度6a中包含6整型元素(整型变量)
    执行第for循环语句
    初值i0 循环条件i<6成立执行循环体
    第1次循环
    执行a[i] i 等价a[0]0
    计算表达式3i++i1循环条件i<6成立继续执行循环体
    第2次循环
    执行a[i] i 等价a[1]1
    计算表达式3i++i2循环条件i<6成立继续执行循环体
    第3次循环
    执行a[i] i 等价a[2]2
    计算表达式3i++i3循环条件i<6成立继续执行循环体
    第4次循环
    执行a[i] i 等价a[3]3
    计算表达式3i++i4循环条件i<6成立继续执行循环体
    第5次循环
    执行a[i] i 等价a[4]4
    计算表达式3i++i5循环条件i<6成立继续执行循环体
    第6次循环
    执行a[i] i 等价a[5]5
    计算表达式3i++i6循环条件i<6成立结束循环

    执行第二for循环语句
    初值i5 循环条件i>0成立执行循环体
    第1次循环
    执行printf(3da[i]) 输出a[5]值
    计算表达式3ii4循环条件i>0成立继续执行循环体
    第2次循环
    执行printf(3da[i]) 输出a[4]值
    计算表达式3ii3循环条件i>0成立继续执行循环体
    第3次循环
    执行printf(3da[i]) 输出a[3]值
    计算表达式3ii2循环条件i>0成立继续执行循环体
    第4次循环
    执行printf(3da[i]) 输出a[2]值
    计算表达式3ii1循环条件i>0成立继续执行循环体
    第5次循环
    执行printf(3da[i]) 输出a[1]值
    计算表达式3ii0循环条件i>0成立继续执行循环体
    第6次循环
    执行printf(3da[i]) 输出a[0]值
    计算表达式3ii6循环条件i>0成立结束循环

    3
    #include
    main( )
    { int ika[10]p[3]
    k5
    for(i0i<10i++)
    a[i]i
    for(i0i<3i++)
    p[i]a[i*(i+1)]
    for(i0i<3i++)
    k+p[i]*2
    printf(d\nk)
    }
    运行结果:21
    首先定义整型变量ik整型数组a a长度10整型数组p p长度3
    k初值5
    第for循环语句数组a进行初始化
    执行完第for语句a[0]0a[1]1a[2]2a[3]3a[4]4a[5]5a[6]6a[7]7a[8]8a[9]9 (循环程略)

    第二for循环语句数组p进行初始化
    初值i0 循环条件i<3成立执行循环体
    第1次循环
    执行p[i]a[i*(i+1)] p[0]a[0*(0+1)]a[0]0
    计算表达式3i++i1循环条件i<3成立继续执行循环体
    第2次循环
    执行p[i]a[i*(i+1)] p[1]a[1*(1+1)]a[2]2
    计算表达式3i++i2循环条件i<3成立继续执行循环体
    第3次循环
    执行p[i]a[i*(i+1)] p[2]a[2*(2+1)]a[6]6
    计算表达式3i++i3循环条件i<3成立结束循环

    第三for循环语句
    初值i0 循环条件i<3成立执行循环体
    第1次循环
    执行k+p[i]*2 k5+p[0]*25+05
    计算表达式3i++i1循环条件i<3成立继续执行循环体
    第2次循环
    执行k+p[i]*2 k5+p[1]*25+2*29
    计算表达式3i++i2循环条件i<3成立继续执行循环体
    第1次循环
    执行k+p[i]*2 k9+p[2]*29+6*221
    计算表达式3i++i3循环条件i<3成立结束循环

    4
    #include
    int m[3][3]{{1}{2}{3}}
    int n[3][3]{12 3}
    main( )
    { printf(d m[1][0]+n[0][0])
    printf(d\nm[0][1]+n[1][0])
    }
    运行结果:
    30
    详见教材P149~152图67懂

    首先定义整型二维数组mm3行3列二维矩阵行形式初始化
    m[0][0]1 m[0][1]0 m[1][2]0
    m[1][0]2 m[1][1]0 m[2][2]0
    m[2][0]3 m[2][1]0 m[2][2]0

    定义整型二维数组nm3行3列二维矩阵
    n[0][0]1 n[0][1]2 n[1][2]3
    n[1][0]0 n[1][1]0 n[2][2]0
    n[2][0]0 n[2][1]0 n[2][2]0

    m[1][0]+n[0][0]2+13
    m[0][1]+n[1][0]0+00



    5
    #include
    main()
    { int i
    int x[3][3]{123456789}
    for (i1 i<3 i++)
    printf(d x[i][3i])
    }
    运行结果:
    6 8

    首先存储序数组x初始化
    x[0][0]1 x[0][1]2 x[0][2]3
    x[1][0]4 x[1][1]5 x[1][2]6
    x[2][0]7 x[2][1]8 x[2][2]9

    初值i1 循环条件i<3成立执行循环体
    第1次循环
    执行printf(d x[i][3i])印出x[i][3i]x[1][2]值
    计算表达式3i++i2循环条件i<3成立继续执行循环体
    第2次循环
    执行printf(d x[i][3i])印出x[i][3i]x[2][1]值
    计算表达式3i++i3循环条件i<3成立结束循环


    6
    #include
    main( )
    { int n[3][3] i j
    for(i0i<3i++ )
    {for(j0j<3j++ )
    {n[i][j]i+j
    printf(d n[i][j])
    }

    }
    }
    运行结果:
    0 1 2
    1 2 3
    2 3 4

    循环变量i0 循环条件 i<3成立执行循环体
    外层for第1次循环 相输出第1行
    层for循环j初值0循环条件j<3成立执行循环体
    层for第1次循环
    执行n[i][j]i+jn[0][0]0+00
    执行printf(d n[i][j])
    执行层循环表达式3j++j1j<3成立继续执行层循环体
    层for第2次循环
    执行n[i][j]i+jn[0][1]0+11
    执行printf(d n[i][j])
    执行层循环表达式3j++j2j<3成立继续执行层循环体
    层for第3次循环
    执行n[i][j]i+jn[0][2]0+22
    执行printf(d n[i][j])
    执行层循环表达式3j++j3j<3成立结束层循环
    执行printf(\n)
    执行外层for语句表达式3i++i1 i<3成立继续执行外层循环体
    外层for第2次循环 相输出第2行
    层for循环j初值0循环条件j<3成立执行循环体
    层for第1次循环
    执行n[i][j]i+jn[1][0]1+01
    执行printf(d n[i][j])
    执行层循环表达式3j++j1j<3成立继续执行层循环体
    层for第2次循环
    执行n[i][j]i+jn[1][1]1+12
    执行printf(d n[i][j])
    执行层循环表达式3j++j2j<3成立继续执行层循环体
    层for第3次循环
    执行n[i][j]i+jn[1][2]1+23
    执行printf(d n[i][j])
    执行层循环表达式3j++j3j<3成立结束层循环
    执行printf(\n)
    执行外层for语句表达式3i++i1 i<3成立继续执行外层循环体
    外层for第2次循环 相输出第3行
    层for循环j初值0循环条件j<3成立执行循环体
    层for第1次循环
    执行n[i][j]i+jn[2][0]2+01
    执行printf(d n[i][j])
    执行层循环表达式3j++j1j<3成立继续执行层循环体
    层for第2次循环
    执行n[i][j]i+jn[2][1]2+12
    执行printf(d n[i][j])
    执行层循环表达式3j++j2j<3成立继续执行层循环体
    层for第3次循环
    执行n[i][j]i+jn[2][2]2+23
    执行层循环表达式3j++j3j<3成立结束层循环
    执行printf(\n)
    执行外层for语句表达式3i++i3 i<3成立结束外层循环



    7.
    #include
    main()
    {
    char diamond[][5]{{_’’_’’*’}{_’*’’_’’*’}
    {*’’_’’_’_’*’}{_’’*’’_’’*’}{_’’_’’*’}}
    int ij
    for(i0i<5i++)
    {
    for(j0j<5j++)
    printf(cdiamond[i][j])
    printf(\n)
    }
    }注:_代表空格
    运行结果:
    *
    * *
    * *
    * *
    *
    8
    #include
    main( )
    { int i f[10]
    f[0]f[1]1
    for(i2i<10i++)
    f[i]f[i2]+f[i1]
    for(i0i<10i++)
    { if(i40)
    printf(\n)
    printf(d f[i])
    }
    }
    运行结果:
    1 1 2 3
    5 8 13 21
    34 55


    9.
    #include stdioh
    func(int b[ ])
    { int j
    for(j0j<4j++)
    b[j]j
    }
    main( )
    { int a[4] i
    func(a)
    for(i0 i<4 i++)
    printf(2da[i])
    }
    运行结果:
    0 1 2 3

    详见教材P194
    定义函数func
    函数头:未定义函数类型系统默认int型函数func形参整型数组名接收整型数组址
    函数体:定义整型变量j
    循环变量初值(表达式1)j0 循环条件(表达式2)j<4成立执行循环体
    第1次循环
    执行b[j]j b[0]0
    执行循环变量增(表达式3) j++j1j<4成立继续执行循环体
    第2次循环
    b[1]1
    j++j2j<4成立继续执行循环体
    第3次循环
    b[2]2
    j++j3j<4成立继续执行循环体
    第4次循环
    b[3]3
    j++j4j<4成立结束循环

    main函数:
    定义整型变量i数组a长度4
    func(a)表示调函数func数组名a作调实参(数组名C语言中表示数组存空间首址数组名作实参时形参实参公存储空间数组b操作数组a操作)



    10
    #include
    main()
    {float fun(float x[])
    float avea[3]{4524}
    avefun(a)
    printf(ave72fave)
    }
    float fun(float x[])
    {int j
    float aver1
    for (j0j<3j++)
    averx[j]*aver
    return(aver)
    }
    运行结果:
    ave 3600


    11
    #include
    main()
    {int a[2][3]{{123}{456}}
    int b[3][2]ij
    for(i0i<1i++)
    {for(j0j<2j++)
    b[j][i]a[i][j]
    }
    for(i0i<2i++)
    {for(j0j<1j++)
    printf(5db[i][j])
    }
    }
    运行结果:
    1 4 2 5 3 6

    12.
    #include
    f(int b[]int n)
    {int ir
    r1
    for (i0irr*b[i]
    return (r)
    }
    main()
    {int xa[]{123456789}
    xf(a3)
    printf(d\nx)
    }
    运行结果:
    24

    13
    #includestdioh
    main()
    {int jk
    static int x[4][4]y[4][4]
    for(j0j<4j++)
    for(kjk<4k++)
    x[j][k]j+k
    for(j0j<4j++)
    for(kjk<4k++)
    y[k][j]x[j][k]

    for(j0j<4j++)
    for(k0k<4k++)
    printf(dy[j][k])
    }
    运行结果:
    0000120023403456
    函数
    1
    #include
    int Sub(int a int b)
    {return (a b)}
    main()
    {int x y result 0
    scanf(dd &x&y )
    result Sub(xy )
    printf(result d\nresult)
    }
    键盘输入63运行结果:
    result 3

    2
    #include
    int min( int x int y )
    { int m
    if ( x> y ) m x
    else m y
    return(m)

     main() {
    int a3b5abmin
    abmin min(ab)
    printf(min is d abmin)
    }
    运行结果:
    min is 5

    3
    #include
    func(int x) {
    x10
    printf(d x)
    }
    main( )
    { int x20
    func(x)
    printf(d x)
    }
    运行结果:
    10 20

    main函数中调函数funcmain函数20作实参穿func转开始执行func


    main()应存 func()应存

    20 x
    20 x


    func()执行x10存中x变10


    10 x




    func()执行printf(d x) 输出func函数应存中x值输出10 func函数执行结束返回main函数

    main函数执行printf(d x)时输出main函数应存中x20



    4
    #include
    int m4
    int func(int xint y)
    { int m1
    return(x*ym)
    }
    main()
    {int a2b3
    printf(d\nm)
    printf(d\nfunc(ab)m)
    }
    运行结果:
    4
    1

    整型变量m函数外定义m全局变量作范围定义位置开始直整程序结束funcmain函数访问m

    程序首先执行main函数
    执行printf(d\nm) 输出m中值4换行
    执行printf(d\nfunc(ab)m)输出表达式func(ab)m值计算该表达式
    需调函数func时mainab中23值作实参传递funcxy
    程序开始转执行func函数时func中x2y3
    执行int m1 句定义局部变量m赋值1 m作域复合
    语句func函数体func函数体重限访问局部变量m
    执行return(x*ym) return(2*31) 返回整数5
    func函数返回main函数中调处
    main函数中func(ab)值5func(ab)m541注意main函数中访问m全局变量m时main函数法访问func中mfunc中m作域


    5
    #include
    int fun(int a int b)
    { if(a>b) return(a)
    else return(b)
    }
    main()
    { int x15 y8 r
    r fun(xy)
    printf(rd\n r)
    }
    运行结果:r15
    程序首先执行main函数
    执行r fun(xy)func(xy)值赋r计算该表达式需调函数func时mainxy中158值作实参传递funcab
    程序开始转执行func函数时func中a15b8
    执行if语句判断if面表达式a>b成立执行相应操作return(a)返回
    a值
    func函数返回main函数中调处
    main函数中func(xy)值1515赋r
    执行printf(rd\n r) 输出r15

    6
    #include
    int fac(int n)
    { int f1i
    for(i1i ff * i
    return(f)
    }
    main()
    { int js
    scanf(d&j)
    sfac(j)
    printf(dd\njs)
    }
    果键盘输入3 运行结果: 36

    程序首先执行main函数
    执行r fun(xy)func(xy)值赋r计算该表达式需调函数func时mainxy中158值作实参传递funcab
    程序开始转执行func函数时func中a15b8
    执行if语句判断if面表达式a>b成立执行相应操作return(a)返回
    a值
    func函数返回main函数中调处
    main函数中func(xy)值1515赋r
    执行printf(rd\n r) 输出r15

    7
    #include
    unsigned fun6(unsigned num)
    { unsigned k1
    do
    { k*num10
    num10
    }while(num)
    return k
    }
    main()
    { unsigned n26
    printf(d\nfun6(n))
    }
    运行结果:12

    程序首先执行main函数
    执行printf(d\nfun6(n)) 输出表达式func(6)值计算该表达式需调
    函数func时mainn中26作实参传递funcnum
    程序开始转执行func函数时func中num26
    执行dowhile语句
    第1次循环
    执行k*num10kk*(num10)1*(2610)6
    执行num10numnum1026102
    while面循环条件num时num2非0值表示循环条件成立
    继续执行循环体时k6
    第2次循环
    执行k*num10kk*(num10)6*(210)12
    执行num10numnum102100
    while面循环条件num时num0表示循环条件成立
    结束循环
    执行return k 返回main函数中调处
    执行main函数
    继续执行printf(d\nfun6(n)) 输出12

    8
    #include
    int max(int x int y)
    main()
    { int abc
    a7b8
    cmax(ab)
    printf(Max is dc)
    }
    max(int x int y)
    { int z
    zx>y x y
    return(z)
    }
    运行结果:
    Max is 8

    指针
    1
    # include < stdio h >
    main ( )
    { int x[ ] {10 20 30 40 50 }
    int *p
    px
    printf ( d *(p+2 ) )
    }
    运行结果:
    30
    首先定义整型数组xx长度5然定义指针变量pp进行初始化数组x址赋p时p中存放数组x首址数组中第元素x[0]址
    然执行printf语句输出表达式*(p+2)值p+2表示p前指位置起始第2元素址a[2]址*(p+2)表示该址存放容a[2]值30输出30

    2
    #include
    main( )
    { char s[]abcdefg
    char *p
    ps
    printf(chc\n*(p+5))
    }
    运行结果:
    chf
    首先定义字符型数组s字符串abcdefgs进行初始化 然定义字符型指针变量p p进行初始化数组s址赋p时p中存放数组s首址数组中第元素s[0]址
    然执行printf语句输出表达式*(p+5)值p+5表示p前指位置起始第5元素址a[5]址*(p+5)表示该址存放容a[5]值f 输出chf


    3
    #include
    main ( )
    { int a[]{1 2 3 4 5}
    int x y *p
    pa
    x*(p+2)
    printf(d:d \n *p x)
    }
    运行结果
    13
    首先定义整型数组aa进行初始化 然定义整型变量xy整型指针变量p 数组a址赋p时p中存放数组a首址数组中第元素a[0]址执行x*(p+2)p+2表示p前指位置起始第2元素址a[2]址*(p+2)表示该址存放容a[2]值3然3赋x
    然执行printf语句先输出表达式*p值时*p表示p指变量容a[0]值1输出号然输出x中值3

    4
    #include
    main()
    { int arr[ ]{30252015105} *parr
    p++
    printf(d\n*(p+3))
    }
    运行结果:10

    首先定义整型数组arrarr进行初始化 然定义整型指针变量p 数组arr址赋p时p中存放数组arr首址数组中第元素a[0]址
    执行p++pp+1p+1表示p前指位置起始第1元素址arr[1]址然arr[1]址赋p执行完语句p指arr[0]指arr[1]
    然执行printf语句输出表达式*(p+3)值p+3表示p前指位置起始(时p指arr[1])第3元素址arr[4]址*(p+3)表示该址存放容arr[4]值10 输出10

    5
    #include
    main( )
    { int a[ ]{1 2 3 4 5 6}
    int x y *p
    p &a[0]
    x *(p+2)
    y *(p+4)
    printf(*pd xd yd\n *p x y)
    }
    运行结果:
    *p1 x3 y5
    首先定义整型数组aa进行初始化 然定义整型变量xy整型指针变量p 数组元素a[0]址赋p
    执行x*(p+2)p+2表示p前指位置起始第2元素址a[2]址*(p+2)表示该址存放容a[2]值3然3赋x
    执行y *(p+4) p+4表示p前指位置起始第4元素址a[4]址*(p+4)表示该址存放容a[4]值5然5赋y
    执行printf语句先输出表达式*p值时*p表示p指变量容a[0]值1输x值3输出y值5


    6
    #include
    main( )
    { static char a[ ]Program *ptr
    for(ptra ptr putchar(*ptr)
    }
    运行结果:
    Porm
    首先定义字符型数组aa进行初始化 然定义字符型指针变量p
    执行for语句 ptra表达式1数字a址赋ptr表达式2(循环条件)ptr第1次执行循环体
    执行putchar(*ptr) 输出*ptr应字符时ptr指数组中第1元素
    a[0]*ptr表示a[0]中值’P’
    执行完循环体转执行表达式3ptr ptr+2ptr+2表示ptr前指位
    置起始第2元素址a[2]址然a[2]址赋ptra[2]
    址等价a+2循环条件ptr第2次执行循环体
    执行putchar(*ptr) 输出*ptr应字符时ptr指数组中第3元素
    a[2]*ptr表示a[2]中值’o’
    执行完循环体转执行表达式3ptr ptr+2ptr+2表示ptr前指位
    置起始第2元素址a[4]址然a[4]址赋ptra[4]
    址等价a+4循环条件ptr第3次执行循环体
    执行putchar(*ptr) 输出*ptr应字符时ptr指数组中第5元素
    a[4]*ptr表示a[4]中值’r’
    执行完循环体转执行表达式3ptr ptr+2ptr+2表示ptr前指位
    置起始第2元素址a[6]址然a[6]址赋ptra[6]址等价a+6循环条件ptr第4次执行循环体
    执行putchar(*ptr) 输出*ptr应字符时ptr指数组中第7元素
    a[6]*ptr表示a[6]中值’m’
    执行完循环体转执行表达式3ptr ptr+2ptr+2表示ptr前指位
    置起始第2元素址a[8]址然a[8]址赋ptra[6]址等价a+8循环条件ptr
    7
    #include
    char s[]ABCD
    main()
    { char *p
    for(pspprintf(c s\n*pp)
    }
    运行结果:
    A ABCD
    B BCD
    C CD
    D D

    首先定义字符型数组ss进行初始化 数组s全局变量效范围定义开始整程序结束

    执行main函数
    定义字符型指针p
    执行for语句 ps表达式1数字s首址赋p表达式2(循环条件)p第1次执行循环体
    执行printf(c s\n*pp)字符c形式输出*p应字符时p指
    数组中第1元素s[0]*p表示a[0]中值’A’ 然字
    符串s形式输出p中址首址整字符串输出ABCD
    执行完循环体转执行表达式3p p+1p+1表示p前指
    位置起始1元素址s[1]址然a[1]址赋p
    s[1]址等价s+1循环条件p第2次执行循环体
    执行printf(c s\n*pp)字符c形式输出*p应字符时p指
    数组中第2元素s[1]*p表示s[1]中值’B’ 然字
    符串s形式输出p中址首址整字符串时p指s[1]
    s[1]开始次输出面字符串输出BCD
    执行完循环体转执行表达式3p p+1p+1表示p前指
    位置起始1元素址s[2]址然a[2]址赋p
    s[2]址等价s+2循环条件p第3次执行循环体
    执行printf(c s\n*pp)字符c形式输出*p应字符时p指
    数组中第3元素s[2]*p表示s[2]中值’C’ 然字
    符串s形式输出p中址首址整字符串时p指s[2]
    s[2]开始次输出面字符串输出CD
    执行完循环体转执行表达式3p p+1p+1表示p前指
    位置起始1元素址s[2]址然s[2]址赋p
    s[2]址等价s+3循环条件p第4次执行循环体
    执行printf(c s\n*pp)字符c形式输出*p应字符时p指
    数组中第4元素s[3]*p表示s[3]中值’D’ 然字
    符串s形式输出p中址首址整字符串输出D
    执行完循环体转执行表达式3p p+1p+1表示p前指
    位置起始1元素址s[3]址然s[3]址赋p
    s[3]址等价s+4循环条件p


    结构体
    1
    #include
    struct st
    { int x
    int y
    } a[2]{5 7 2 9}
    main()
    {
    printf(d\na[0]y*a [1]x)
    }
    运行结果:
    14

    首先定义结构体stst中两整型成员xy
    然定义st类型数组aa长度2数组中含两st类型元素分a[0]a[1] a进行初始化题储存序进行初始化5赋a[0]中x(a[0]x5) 7赋a[0]中y(a[0]y7) 2赋a[1]中x(a[1]x2) 9赋a[1]中y(a[1]y9)
    执行main函数输出表达式a[0]y*a [1]x值7*2值


    5 a[0]x a[0]
    7 a[0]y
    2 a[1]x a[1]
    9 a[1]y

    2
    #include
    main( )
    {struct stu
    {int num
    char a[5]
    float score
    }m{1234wang895}
    printf(dsfmnummamscore)
    }
    运行结果:
    1234wang895

    3
    #include
    struct cmplx
    { int x
    int y
    } cnum[2]{1 3 2 7}
    main( )
    {
    printf(d\n cnum[0]y * cnum[1]x )
    }
    运行结果:6
    第题解法
    4
    #include
    struct abc
    { int a b c }
    main()
    { struct abc s[2]{{123}{456}}
    int t
    ts[0]a+s[1]b
    printf(d \nt)
    }
    运行结果:6

    第题解法
    三 程序填空
    1.输入字符判断该字符数字字母空格字符
    main( )
    { char ch
    chgetchar()
    if( ch>’a’&&ch<’z’|| ch>’A’&&ch<’Z’ )
    printf(It is an English character\n)
    else if( ch>’0’&&ch<’9’ )
    printf(It is a digit character\n)
    else if( ch ’ )
    printf(It is a space character\n)
    else
    printf(It is other character\n) }
    第1空:字符计算机中ASCII码形式存储输入字符ch中字符应ASCII码范围英文字母ASCII码范围参p377英文字母分写字母写字母处逻辑表达式表示ch中写字母者写字母表达式成立ch>97&&ch<122|| ch>65&&ch<90
    需注意题区间应表达式写作97
    第3空判断ch中否空格通ch中字符空格字符ASCII码判断判断表达式值否相等时关系符号赋值符号

    2.列程序功输入整数中统计零整数数零整数数输入0结束输入ij放统计数请填空完成程序
       void main()
    { int ni0j0
    printf(input a integer0 for end\n)
    scanf(d&n)
    while ( nn0 ) {
    if(n>0) i i+1
    else jj+1
    }
    printf(i4dj4d\nij)
    }
    题i记录零整数j记录零整数循环条件n(者n0)n0时执行循环体循环体中选择语句果n>0令i加1相令正整数数加1否(n<0)令j加1相令负整数数加1

    3.编程计算1+3+5+……+101值
    #include
    void main()
    { int i sum 0
    for (i 1 i<101 ii+2 )
    sum sum + i
    printf(sumd\n sum) }
    for语句般形式详见p120
    表达式1i 1循环变量赋初值循环1开始题1101终值101表达式2循环条件控制循环结束循环条件i<101表达式3循环变量增题
    4.编程计算1+3+5…+99值
    main()
    { int i sum 0
    i1
    while ( i<100 )
    { sum sum + i
    Ii+2 }
    printf(sumd\n sum)
    }
    5.键盘输入字符判断否英文字母
    #include
    void main()
    {char c
    printf(input a character)
    cgetchar()
    if(c> A’ &&c< Z’ || c>a’ &&c< z’) printf(Yes\n)
    else printf(No)
    }
    6 面程序功a数组中查找x值相元素位置请填空
       #include
    void main()
    { int a[10]ix
    printf(input 10 integers:)
        for(i0i<10i++)
    scanf(d&a[i])
    printf(input the number you want to find x:) 
    scanf(d &x )
    for(i0i<10i++)
    if( xa[i] )
    break
    if( i<10 )
    printf(the pos of x is:d\ni)
    else printf(can not find x\n)
    }
    7.程序读入20整数统计非负数数计算非负数
    #include
    main( )
    { int i a[20] s count
    scount0
    for(i0 i<20 i++)
    scanf(d &a[i] )
    for(i0 i<20 i++)
    { if( a[i]<0 ) continue
    s+a[i]
    count++
    }
    printf(sd\t countd\n s count)
    }

    8 输入正整数n (1
    #include
    int main(void){
    int i index k n temp
    * 定义1数组a10整型元素*
    printf(Enter n )

    printf(Enter d integers n)
    for(i 0 i < n i++)
    scanf(d &a[i])
    for(k 0 k < n1 k++){ * n数排序 *
    index k
    for( )
    if( ) index i

    }
    printf(After sorted )
    for(i 0 i < n i++) * 输出n数组元素值 *

    return 0}

    四 程序改错
    面程序划线处语法逻辑错误请找出改正符合题意执行结果
    1.求1234n
      main()
    { long int sum 定义变量语句错误常见考点两:(1)变量类型(2)定义存放运算结果变量时定赋初值般赋值0者循环初值
    int ni1
    scanf(dn) scanf语句错误常见考点两:(1)格式声明符号面欲赋值变量类型致题dn类型int致(详见p6978)(2)变量前面址符号&
    printf(\n)
    while(i{ sumsum*i sum赋初值处法计算sum*i
    i++
    }
    printf(sumdsum) printf语句错误常见考点1:格式声明符号面欲输出变量类型致题dsum类型long int致应改ld(详见p6978)

    }
    sum应初始化 加入sum1
    第四行改:scanf(d&n)
    第六行改:while(i第十行改:printf(sumldsum)

    2.求数组中值标
    main( )
    { int maxjm
    int a[5]
    for(j1j<5j++) j1循环变量j赋初值1时j作数字元素逻辑址标输出时候a[1]开始输出法输出a[0]应j赋初值0相应循环条件改j<5者j<4控制循环执行5次

    scanf(da) scanf语句错误常见考点两:(1)格式声明符号面欲赋值变量类型致题da类型int致(详见p6978)(2)变量前面址符号&

    maxa[0]
    for(j1j<5j++) 修改思路for语句
    if(max>a[j])
    { maxa[j]
    mj
    }
    printf(标:d\n值d j max) jfor语句循环变量for语句执行完j中值6非值标执行某次循环较程中时值标存m里
    }
    第四行改:for(j0j<5j++)
    第五行改:scanf(d&a[j])
    第七行改:for(j1j<5j++)
    第八行改:if(max第十三行改:printf(标:d\n值d mmax)



    3.函数求两数
    sum(xy) 函数定义般形式p173174
    { float z
    zx+y
    return return语句面返回0常量变量表达式值
    }
    main()
    { float ab
    int c 定义变量语句错误常见考点两:(1)变量类型(2)定义存放运算结果变量时定赋初值般赋值0者循环初值
    scanf(ff&a&b)
    csum(ab)
    printf(\nSum is fsum)
    }
    第行改:float sum(float x float y )
    第四行改:return(z)者return z
    第八行:float c
    第十行:printf(\nSum is fc)

    4. 程序读入20整数统计非负数数计算非负数
    #include stdioh
    main()
    {
    int i s count n20
    int a[n] 数组定义般形式详见p143 中常量表达式变量
    scount1
    for( i1 i<20 i ) for语句格式三表达式间分号分号省略
    scanf(d a[i] ) scanf语句错误常见考点两:(1)格式声明符号面欲赋值变量类型致题dn类型int致(详见p6978)(2)变量前面址符号&
    for(i0i<20i++)
    {
    if(a[i]<0)
    break breakcontinue区 p128 改错题中错误出现break语句通常break换continue反错误出现continue通常换break
    s +a[i]
    count++
    }
    printf(sf countf\n s count) printf语句错误常见考点1:格式声明符号面欲输出变量类型致
    }

    答案:int a[20]
    scount0
    for(i0i<20i)
    scanf(d&a[i])
    continue
    printf(sd countd\nscount)

    5 键盘输入整数x值输出y值
    main()
    { float xy
    scanf(d&x)
    y35+x
    printf(yd)
    }
    正确 int x float y
    printf(yfy)

    6 编程计算面分段函数 输入x 输出y

    main()
    { int xy
    printf(\n Input x\n)
    scanf(d x) 错误题scanf
    if(x<0)
    yx1
    else if(x>0||x<10) ||表示逻辑左边表达式成立者右边表达式成立时整表达式成立 &&表示逻辑左边表达式右边表达式时成立时整表达式成立处逻辑表达式表示x区间[010] 应改逻辑符号
    y2x1 C语言中号省略*表示法运算
    else
    y3x1 C语言中号省略*表示法运算
    printf(yd&y) printfscanfprintf面出变量名列表表达式列表需址符号
    }
    第处改:scanf(d& x)
    第二处改:x>0&&x<10
    第三处改:y2*x1
    第四处改:y3*x1
    第五处改:printf(ydy)


    7 求100~300间3整数
    main()
    { int n
    long sum 定义变量语句错误常见考点两:(1)变量类型(2)定义存放运算结果变量时定赋初值 般赋值0者循环初值
    for(n100n<300n++) for语句格式三表达式间分号分号省略
    {
    if(n30) 赋值符号右边值赋左边变量 关系符号判断两值否相等 改错中if面表达式中赋值符号常见考点
    sumsum*n
    }
    printf(ld sum)
    }
    第处改:long sum0
    第二处改:for(n100n<300n++)
    第三处改:if(n30)
    第四处改:sumsum+n
    8 求表达式值
    #include
    #include
    int fun(int x int y)
    main()
    { int ab float f
    scanf(ddab) 改错第1题中scanf错误相
    if(ab>0){ C语言中号省略*表示法运算
    fun(ab) 调带返回值函数应函数返回值保存变量里
    printf(The result isd\n &f) 第6题中printf错误相
    }
    else printf(error)}
    fun(x y) 定义函数般形式p173174
    { float result
    result sqrt(a+b)
    return return语句面返回0常量变量表达式值
    }
    第处改:if(a*b>0)
    第二处改:f fun(ab)
    第三处改:printf(The result isd\nf)
    第四处改:float fun(int x int y)
    第五处改:f fun(ab)
    第六处改:result sqrt(a*b)
    第七处改:return result
    五 编程题
    1输入2整数求两数方输出
    #include
    int main(void)
    { intt a bs
    printf(please input ab\n)
    scanf(dd&a&b)
    sa*a+b*b
    printf(the result is d\ns)
    return 0
    }
    2 输入圆半径rr>=0时计算输出圆面积周长否输出提示信息
    #include
    #define PI 314
    int main(void)
    { double r area girth
    printf(please input r\n)
    scanf(lf&r)
    if (r>0)
    { area PI*r*r
    girth 2*PI*r
    printf(the area is 2f\n area)
    printf(the girth is 2f\n girth)}
    else
    printf(Input error\n)
    return 0
    }
    3已知函数yf(x)编程实现输入x值输出y值
    2x+1 (x<0)
    y 0 (x0)
    2x1 (x>0)

    #include
    void main()
    { int xy
    scanf(d&x)
    if(x<0) y2*x+1
    else if(x>0) y2*x1
    else y0
    printf(dy)
    }
    4键盘输入百分制成绩score列原输出等级:score≥90等级A80≤score<90等级B70≤score<80等级C60≤score<70等级Dscore<60等级E
    #include
    void main(){
    int data
    char grade
    printf(Please enter the score)
    scanf(d &data)
    switch(data10)
    { case 10
    case 9 grade’A’ break
    case 8 grade’B’ break
    case 7 grade’C’ break
    case 6 grade’D’ break
    default grade’E’
    }
    printf(the grade is cgrade)
    }

    5 编程序月根月网时间计算网费计算方法:

    求输入月网时数显示该月总网费(6分)
    #include
    void main()
    { int hour
    float fee
    printf(please input hour\n)
    scanf(d&hour)
    if(hour<10)
    fee30
    else if(hour>10&&hour<50)
    fee3*hour
    else feehour*25
    printf(The total fee is ffee)
    }

    6 键盘输入10整数统计中正数负数零数屏幕输出
    #include
    void main( ) {
    int a ip0n0z0
    printf(please input number)
    for(i0i<10i++){
    scanf(d&a)
    if (a>0) p++
    else if (a<0) n++
    else z++
    }
    printf(正数:5d 负数:5d零:5d\npnz)
    }
    7编程序实现求110间数积输出
    #include
    void main( )
    { int i
    long sum1
    for(i1 i<10 ii+1)
    sumsum*i
    printf(the sum of odd is ldsum)
    }
    8 键盘输入10数求均值
    #include
    void main(){
    int aisum0
    float ave
    for(i0i<10i++){
    scanf(d&a)
    sum+a
    }
    ave(float)sum10
    printf(ave f\n ave)
    }
    9编程序实现求11000间奇数输出
    #include
    void main( )
    { int i sum0
    for(i1 i<1000 ii+2)
    sumsum+i
    printf(the sum of odd is dsum)
    }

    10分数序列:21325385138……编程求序列前20项
    #include
    void main(){
    int itn20
    float a2b1s0
    for(i1i{ss+ab
    ta
    aa+b
    bt
    }
    printf(sum62fs)
    }


    11.键盘输入两数求出值(求函数完成求值函数中调该函数)
    #include
    float max(float xfloat y)
    void main()
    { float abm
    scanf(ff&a&b)
    mmax(ab)
    printf(Max is f\nm)
    }
    float max(float xfloat y)
    {
    if (x>y)
    return x
    else
    return y
    }

    12 编写程序中定义函数判断整数否素数函数输入数输出否素数
    #include
    #include
    int IsPrimeNumber(int number)
    { int i
    if (number < 1)
    return 0
    for (i2 i { if ((number i) 0)
    return 0 }
    return 1}
    void main()
    { int n
    printf(Please input n)
    scanf(d&n)
    if(IsPrimeNumber(n))
    printf(\nd is a Prime Numbern)
    else printf(\nd is not a Prime Numbern)}


    13键盘输入n数存放数组中值第数交换输出交换n数
    #include
    int main(void){
    int iniIndextemp
    int a[10]
    printf(Enter n )
    scanf(d &n)
    printf(Enter d integers\n )
    for(i0i scanf(d &a[i])
    iIndex0
    for(i1i if(a[i] }
    tempa[0]a[0]a[iIndex]a[iIndex]temp
    for(i0i printf(5d a[i])
    printf(\n)
    return 0
    }


    第二种解法 利函数
    #include

    int comp(int arry[] int n)
    {
    int iindextemp
    printf(数组赋值:\n)
    for(i0i { scanf(d&arry[i])
    }
    for(i1index0i { if(arry[i] { indexi
    }
    }
    temparry[0]arry[0]arry[index]arry[index]temp
    for(i0i { printf(d arry[i])
    }
    return 0
    }
    main()
    { int n
    int a[10]
    printf(n赋值:\n)
    scanf(d&n)
    comp(an)}






    仅供参考
    文档香网(httpswwwxiangdangnet)户传

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

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

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

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

    下载文档

    相关文档

    C语言代码大全

     乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); pr...

    5年前   
    1761    0

    专升本C语言题及答案

    C语言精编100题一、单选题1. 由C语言编写的代码程序( )A. 可直接执行 B. 是一个源程序C. 经过编译即可执行 D. 经过编译解释才能执行2. 按照C语言规...

    3年前   
    1170    0

    (1小时学会C语言51单片机)C语言入门教程

    △Victor Hugo 维克多?雨果相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。...

    4年前   
    742    0

    电脑编程 所有C语言题库

    试卷编号:2203所属语言:C语言试卷方案:所有C语言题库试卷总分:1220分共有题型:1种一、程序填空 共122题 (共计1220分)第1题 (10.0分) 题号:558 ...

    4年前   
    955    0

    技能高考专题:C语言练习

    第1题 (20.0分) 题号:332 难度:难 第3章/*----------------------------------------------...

    3年前   
    623    0

    C语言上机题库WORD版

    C语言习题集3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。输入格式:B输出格式:26#include<stdio.h>int main...

    3年前   
    882    0

    c语言实验报告

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

    11年前   
    796    0

    C语言作业:学通讯录

    学生通讯录一、 语言和环境1. 实现语言:C语言。2. 环境要求:devC++。二、 实现功能开发一套学生通讯录C语言系统,具体实现如下功能:1. 打开系统显示欢迎界面,以及功能菜单,用户输入...

    3年前   
    723    0

    c语言高级面试题

    整个测试遵循以下的约定:u       假定在所有的程序中必须的头文件都已经被正确包含。考虑如下的数据类型:u       char 为1个字节u       int 为4个字节u      ...

    2个月前   
    100    0

    C语言试题库

    C 语言试题库 阅读说明*1 ————为题号A ————为答案-个C程序的执行是从 A)本程序的main函数开始,到main函数结束 B)本程序文件的第-个函数开始...

    1年前   
    662    0

    C语言知识点总结

    C语言最重要的知识点总体上必须清楚的: 1)程序结构是三种: 顺序结构 、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选...

    3年前   
    616    0

    C语言实验报告《指针》

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

    11年前   
    957    0

    C语言实验报告《数组》

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

    11年前   
    884    0

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

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

    1年前   
    409    1

    C语言综合实验2报告

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

    3年前   
    444    0

    C语言论文致谢

    C语言论文致谢  在硕士学位论文即将完成之际,我想向曾经给我帮助和支持的人们表示衷心的感谢。首先要感谢我的导师曹计昌教授,他在学习和科研方面给了我大量的指导,并为我们提供了良好的科研环境,让我...

    12年前   
    622    0

    C语言实验报告《函数》

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

    12年前   
    1361    0

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

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

    1年前   
    5471    0

    专升本C语言历年考试题及答案

    专升本C语言历年考试题及答案一、单项选择题1. ___D___是合法的用户自定义标识符。A、 b-b B、float C、<fr> ...

    3年前   
    1355    0

    C语言程序设计说课教案

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

    1年前   
    342    0

    文档贡献者

    文***品

    贡献于2020-11-15

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

    该用户的其他文档