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


    
    C语言程序设计精品课件试题

    目录

    (住CTRL键点击超链)



    单项选择题………………………第002页



    阅读程序题………………………第018页



    程序填空题………………………第039页



    编写程序题………………………第070页






    高级语言程序设计课程设计制作组
    2007年

    单项选择题
    导读:单项选择题求出四备选答案中选出符合题意答案类题检查C语言基概念掌握情况读者根学进度选做部分题完成题程中选出正确答案清楚正确选项错处加深概念理解掌握准问题应该通机实验检验

    11正确C语言标识符____
    A) int B) a_1_2 C) ab1exe D) _x

    12正确C语言标识符____
    A) #define B) _123 C) d D) \n

    13列四组字符串中作C语言程序标识符组
     A) print B) i\am C) Pxq D) str_l
     _3d one_half My>book Cpp
     oodb startit line# pow
     aBc 3pai Hisage while

    14面选项组中均C语言关键字组
    A) autoenuminclude B) switchtypedefcontinue
    C) signedunionscanf D) ifstructtype

    15列属C语言关键字 A) default B) register C) enum D) external

    16C语言程序main()函数开始执行函数写____
    A) 程序文件开始 B) 程序文件
    C) 调函数前面 D) 程序文件位置

    17列关C语言叙述错误____
    A) 写字母写字母意义相
    B) 类型变量表达式中
    C) 赋值表达式中等号()左边变量右边值类型
    D) 运算符号场合含义

    18C语言中错误int类型常数
    A) 32768 B) 0 C) 037 D) 0xAF

    19执行语句 printf(x1)屏幕显示____
    A) 1 B) 1 C) ffff D) ffff

    110已知 long i32768执行语句printf(di)屏幕显示____
    A) 1 B) 32768 C) 1 D) 32768

    111已知 long i65539执行语句printf(di)屏幕显示____
    A) 65539 B) 3 C) 3 D) 程序执行

    112C语言中整数8存中存储形式
    A) 1111 1111 1111 1000 B) 1000 0000 0000 1000
    C) 0000 0000 0000 1000 D) 1111 1111 1111 0111

    113C语言中字符型(char)数存中存储形式____
        A) 原码 B) 补码 C) 反码 D) ASCII码

    114字符g赋字符变量c正确表达式
    A) c\147 B) c\147 C) c'\147' D) c'0147'

    115列转义字符中错误____
    A) '\000' B) '\0014' C) '\x111' D) '\2'

    116空格符赋字符变量c正确赋值语句____
    A) c'\0' B) cNULL C) c0 D) c32

    117已知:char a'\70'变量a中
    A) 包含1字符 B) 包含2字符 C) 包含3字符 D) 说明非法

    118字符串\EOF\n\61\长度____
    A) 8 B) 9 C) 14 D) 非法字符串

    119字符串长度____
    A) 0 B) 1 C) 2 D) 非法字符串

    120已知:char aint bfloat cdouble d执行语句ca+b+c+d变量c数类型
    A) int B) char C) float D) double

    121温度华氏摄氏关系 C(F32)已知:float CF华氏求摄氏正确赋值表达式____
    A) C59(F32) B) C5*(F32)9
    C) C59*(F32) D) 三表达式正确

    122逗号表达式(a3*5a*4)a+15值____
    A) 15 B) 60 C) 30 D) 确定

    123果int a1b2c3d4条件表达式aA) 1 B) 2 C) 3 D) 4

    124求出s10值变量s类型应
    A) int B) unsiged C) long D) 三种类型均

    125已知int i10表达式200A) 0 B) 1 C) 19 D) 20


    126已知int x1y执行述语句变量x值____
    y++x>5&&++x<10A) 1 B) 2 C) 3 D) 4


    127判断字符变量c值数字字母时应采述表达式____
    A) c<48||c>57&&c<65||c>90&&c<97||c>122
    B) (c<48||c>57&&c<65||c>90&&c<97||c>122)
    C) c>48&&c<57||c>65&&c<90||c>97&&c<122
    D) (c>48&&c<57||c>65&&c<90||c>97&&c<122)

    128已知 int a[3][2]{321}表达式a[0][0]a[0][1]a[1][0]值____
    A) 0166667 B) 1 C) 0 D) 错误表达式

    129已知 int x1y1z1表达式(x++)+(y++)+(z++)值____
    A) 3 B) 4 C) 5 D) 表达式错误

    130十进制表示表达式12|012值____(位运算)
    A) 1 B) 0 C) 12 D) 14

    131已知程序段:
    int a3b4
    aa^b
    bb^a
    aa^b
    执行语句ab值分____
    A) a3b4 B) a4b3 C) a4b4 D) a3b3

    132位运算中操作数右移位结果相____
    A) 操作数2 B) 操作数2 C) 操作数16 D) 操作数16

    133已知 char a222执行语句aa&052变量a值____
    A) 222 B) 10 C) 244 D) 254

    134已知二进制数a00101101果想通整型变量ba做异运算变量a高4位取反低4位变二进制数b值应____
    A) 11110000 B) 00001111 C) 11111111 D) 00000000

    135已知 int a15执行语句aa<<2变量a值____
    A) 20 B) 40 C) 60 D) 80

    136已知int x5y5z5执行语句xy+zx值____
    A) 0 B) 1 C) 5 D) 6

    137语句scanf(xfyf&x&y)输入变量xy值(□代表空格)正确输入____A) 12524 B) 125□24 C) x125y24 D) x125□y24

    138列循环语句中语法错误____
    A) while(xy) 5 B) while(0)
    C) do 2while(xb) D) do x++ while(x10)

    139已知int x(1234)变量x值____A) 1 B) 2 C) 3 D) 4

    140表达式sizeof(double) ‗‗
    A) 函数调 B) double型表达式 C) int型表达式 D) 非法表达式

    141执行语句printf(2dprintf(1dscanf(d&x)))输出结果____
    A) 2111 B) 1121 C) 2411 D) 1124

    142已知:int xydouble z语句中错误函数调
    A) scanf (dlxle&x&y&z) B) scanf (2d*dlf&x&y&z)
    C) scanf (x*do&x&y) D) scanf (xo62f&x&y&z)

    143条件表达式(n)(c++)(c)中表达式(n)等价表达式____
    A) (n0) B) (n1) C) (n0) D) (n1)

    144已知int i1j0执行面语句j值____
    while(i)
    switch(i)
    { case 1 i+1j++break
    case 2 i+2j++break
    case 3 i+3j++break
    default ij++break
    }
    A) 1 B) 2 C) 3 D) 死循环

    145求取满足式 12+22+32+ …… +n2 ≤1000n正确语句____
    A) for(i1s0(ss+i*i)<1000ni++)
    B) for(i1s0(ss+i*i)<1000n++i)
    C) for(i1s0(ss+i*++i)<1000ni)
    D) for(i1s0(ss+i*i++)<1000ni)

    146面for语句
    for(x0y10(y>0)&&(x<4)x++y )
    A) 限循环 B) 循环次数定 C) 循环执行4次 D) 循环执行3次

    147已知int i1 执行语句while (i++<4) 变量i值____
    A) 3 B) 4 C) 5 D) 6
    148已知int x12y3执行述程序变量x值____
    do
    { xy
    }while(x>y)
    A) 1 B) 2 C) 3 D) 程序运行错误

    149已知 char a[][20]{Beijingshanghaitianjinchongqing}语句printf(ca[30])输出____
    A) <空格> B) n C) 定 D) 数组定义误

    150数组名作函数调时实参实际传递形参
    A) 数组首址 B) 数组第元素值
    C) 数组中全部元素值 D) 数组元素数

    151二维数组正确说明____
    A) int a[][]{123456} B) int a[2][]{123456}
    C) int a[][3]{123456} D) int a[23]{123456}

    152字符数组s赋值合法____
    A) char s[]Beijing
    B) char s[20]{beijing}
    C) char s[20]sBeijing
    D) char s[20]{'B''e''i''j''i''n''g'}

    153字符数组str赋初值str作字符串____
    A) char str[]shanghai
    B) char str[]{shanghai}
    C) char str[9]{'s''h''a''n''g''h''a''i'}
    D) char str[8]{ 's''h''a''n''g''h''a''i'}

    154函数形参说明错误____
    A) int a(float x[]int n) B) int a(float *xint n)
    C) int a(float x[10]int n) D) int a(float xint n)

    155果变量整程序运行期间存仅说明函数见变量存储类型应该说明____
    A) 静态变量 B) 动态变量 C) 外部变量 D) 部变量

    156C源程序文件中定义允许该源文件中函数变量该变量需存储类
    A) extern B) register C) auto D) static

    157C语言中函数数类型指____
    A) 函数返回值数类型 B) 函数形参数类型
    C) 调该函数时实参数类型 D) 意指定数类型
    158已知定义函数:
    fun1(a)
    { printf(\nda)
    }
    该函数数类型____
    A) 参数a类型相 B) void型
    C) 没返回值 D) 法确定

    159定义函数实现交换xy值结果正确返回够实现功____
    A) swapa(int xint y) B) swapb(int *xint *y)
    { int temp { int temp
    tempxxyytemp tempxxyytemp
    } }
    C) swapc(int *xint *y) D) swapd(int *xint *y)
    { int temp { int *temp
    temp*x*x*y*ytemp tempxxyytemp
    } }

    160求角正弦函数值方够实现功函数____
    A) sqofsina(x)
    float x
    { return(sin(x)*sin(x))
    }
    B) double sqofsinb(x)
    float x
    { return(sin((double)x)*sin((double)x))
    }
    C) double sqofsinc(x)
    { return(((sin(x)*sin(x))
    }
    D) sqofsind(x)
    float x
    { return(double(sin(x)*sin(x)))

    161函数数类型说明语句:
    double xyz(10)
    关语句解释面说法正确____
    A) z数组10元素
    B) z函数括号10实参值
    C) z变量括号10初值
    D) 语句中错误

    162已知函数定义:
    float fun1(int xint y)
    { float z
    z(float)xy
    return(z)
    }
    调函数中int a1b0正确调函数语句____
    A) printf(ffun1(ab)) B) printf(ffun1(&a&b))
    C) printf(ffun1(*a*b)) D) 调时发生错误


    163面函数功____
    a(s1s2)
    char s1[]s2[]
    { while(s2++s1++)
    }
    A) 字符串较 B) 字符串复制 C) 字符串连接 D) 字符串反

    164列结中错误
    A) C语言允许函数递调
    B) C语言中continue语句通改变程序结构省略
    C) 递程序非递算法实现
    D) C语言中允许函数中定义函数

    165已知:int a *y&a列函数调中错误
    A) scanf(d &a) B) scanf(d y)
    C) printf(d a) D) printf(d y)

    166说明语句int (*p)( )含义
    A) p指维数组指针变量
    B) p指针变量指整型数
    C) p指函数指针该函数返回值整型
    D)

    167设说明int (*p)[4]中标识符p
    A) 4指整型变量指针变量
    B) 指4整型变量函数指针
    C) 指具4整型元素维数组指针
    D) 具4指整型变量指针元素维指针数组

    168已知:char s[10] *ps列语句中错误语句
    A) ps+5 B) sp+s C) s[2]p[4] D) *ps[0]

    169已知:char s[100]int i引数组元素错误形式
    A) s[i+10] B) *(s+i) C) *(i+s) D) *((s++)+i)

    170已知:char s[6] *pss正确赋值语句
      A) s12345 B) *s12345 C) ps12345 D) *ps12345
    171已知:char a[3][10]{BeiJingShangHaiTianJin} *paa正确显示字符串ShangHai语句
    A) printf(sa+1) B) printf(s*(a+1))
    C) printf(s*a+1) D) printf(s&a[1][0])

    172已知:int a[4][3]{123456789101112}
    int (*ptr)[3]a*pa[0]
    够正确表示数组元素a[1][2]表达式
    A) *(*(a+1)+2) B) *(*(p+5)) C) (*ptr+1)+2 D) *((ptr+1)[2])

    173已知:int a[ ]{123456789101112}*pa值3表达式
    A) p+2*(p++) B) p+2*++p C) p+2*p++ D) p+2++*p

    174已知:int a[]{1234} y *pa执行语句y (*++p) 数组a元素值变______
    A) 0134 B) 1134 C) 1224 D) 1233
    变量y值____
    A) 1 B) 2 C) 3 D) 4

    175已知:int a[ ]{1357} y *p a变量y值3列语句正确____
    A) y++*p++ B) y++(*p++) C) y(++*p)++ D) y(*++p)++

    176已知:int x[ ]{ 1357911 }*ptrx够正确引数组元素语句
    A) x B) *(ptr) C) x[6] D) *(ptr)

    177函数功交换变量xy中值通正确调返回交换结果正确执行功函数
    A) funa (int *x int *y) B) funb (int x int y)
    { int *p { int t
    px*x*y*y*p txxyyt
    } }
    C) func (int *x int *y) D) func (int *x int *y)
    { *x*y*y*x { *x*x+*y*y*x*y*x*x*y
    } }

    178定义:
    struct sk
    { int a
    float b
    }data *p
    果 p&data结构变量data成员a正确引____
    A)(*)dataa B) (*p)a C) p>dataa D) pdataa

    179已知:
    struct st
    { int n
    struct st *next
    }
    static struct st a[3]{1&a[1]3&a[2]5&a[0]}*p
    果述语句显示2p赋值____
    printf(d++(p>next>n))
    A) p&a[0] B) p&a[1] C) p&a[2] D) p&a[3]

    180已知:
    struct person
    { char name[10]
    int age
    }class[10]{LiMing29ZhangHong21WangFang22}
    述表达式中值72____
    A) class[0]>age + class[1]>age+ class[2]>age
    B) class[1]name[5]
    C) person[1]name[5]
    D) clase>name[5]

    181已知:
    struct
    { int i
    char c
    float a
    }test
    sizeof(test)值
    A) 4 B) 5 C) 6 D) 7

    182已知:
    union
    { int i
    char c
    float a
    }test
    sizeof(test)值
    A) 4 B) 5 C) 6 D) 7

    183已知:
    union u_type
    { int i
    char ch
    float a
    }temp
    现执行tempi266printf(dtempch)结果
    A) 266 B) 256 C) 10 D) 1

    184程序段:
    struct dent
    { int n
    int *m
    }
    int a1b2c3
    struct dent s[3] { {101&a}{102&b}{103&c} }
    struct dent *ps
    表达式中值2
    A) (p++)>m B) *(p++)>m C) (*p)m D) *(++p)>m

    185说明语句结构变量pup中sex域正确引
    struct pupil
    { char name[20]
    int sex
    }pup*p
    p&pup
    A) ppupsex B) p>pupsex C) (*p)pupsex D) (*p)sex

    186结构变量stul中成员age非法引
    struct student
    { int age
    int num
    }stu1*p
    p&stu1
    A) stu1age B) studentage C) p>age D) (*p)age

    187定义语句:
    union data
    { int i
    char c
    float f
    }a
    int n
    语句正确 A) a5 B) a{2'a'12} C) printf(d\na) D) na

    188已知:
    struct sk
    { int a
    int age
    }date*p
    果指针p指data中成员a正确赋值语句____
    A) p (struct sk *)&dataa B) p (struct sk *)dataa
    C) p &dataa D) *p dataa

    189已知 enum week {sunmontuewedthufrisat}day正确赋值语句____
    A) sun0 C) sanday D) sunmon D) daysun


    190已知 enum color {redyellow2bluewhiteblack}ren执行述语句输出结果____
    printf(drenwhite)
    A) 0 B) 1 C) 3 D) 4


    191已知 enum name{zhao1qiansunli}man执行述程序段输出____
    man0
    switch(man)
    { case 0 printf(People\n)
    case 1 printf(Man\n)
    case 2 printf(Woman\n)
    default printf(Error\n)
    }
    A) People B) Man C) Woman D)Error


    192述关枚举类型名定义中正确____
    A) enem a{ onetwothree } B) enem a { one9two1three }
    C) enem a{onetwothree} D) enem a {onetwothree}


    193C语言中标准输入文件stdin指
        A) 键盘 B) 显示器 C) 鼠标 D) 硬盘


    194开已存非空文件file修改选择正确语句____
    A) fpfopen(file r) B) fpfopen(file a+)
    C) fpfopen(file w) D) fpfopen('file r+)


    195利执行文件关闭操作时fclose函数返回值
    A) 1 B) TRUE C) 0 D) 1


    196fscanf函数正确调形式
    A) fscanf (文件指针 格式字符串 输出列表)
    B) fscanf (格式字符串 输出列表 文件指针)
    C) fscanf (格式字符串 文件指针 输出列表)
    D) fscanf (文件指针 格式字符串 输入列表)


    197fgetc函数开文件方式必须
    A) 写 B) 追加 C) 读读写 D) 参考答案BC正确


    198已知宏定义
    #define N 3
    #define Y(n) ((N+1)*n)
    执行语句z2*(N+Y(5+1))变量z值____
    A) 42 B) 48 C) 52 D) 出错


    199已知宏定义 #define SQ(x) x*x执行语句printf(d10SQ(3))输出结果____
    A) 1 B) 3 C) 9 D) 10


    1100已知宏定义:
    #define PR printf
    #define NL \n
    #define D d
    #define D1 DNL
    程序中语句 PR(D1a)预处理展开____
    A) printf(d\na) B) printf(d\na)
    C) printf(d\na) D) 原语句错误


    单项选择题参考答案
    11答案 A
    注释:intC语言关键字
    12答案 B
    13答案:A
    14答案:B
    注释:include预处理命令scanf函数名typeC语言关键字
    15答案:D
    16答案:D
    17答案:A
    18答案:A
    注释:int型表示整数范围32768~32767
    19答案:D
    注释:整型常量1计算机中表示补码1111 1111 1111 1111十六进制显示数时左边1会解释符号位右边位转换十六进制数
    110答案:B
    注释:长整型数32768计算机表示1000 0000 0000 0000般整型进行输出时数恰32768补码
    111答案:C
    注释:长整型数65539计算机表示0001 0000 0000 0000 0011般整型进行输出时仅右侧16位二进制数转换十进制数
    112答案:A
    注释:C语言中int型负数采补码表示
    113答案:D
    114答案:C
    注释:变量c字符型字符常量赋值字符常量必须单引号括起B错误单引号双引号反斜线'\'表示转义字符A选项引号时反斜线错误C选项单引号出现反斜线表示面数字组成转义字符单引号允许括起字符D选项单引号出现4字符错误
    115答案:C
    116答案:D
    注释:空字符空格符两字符空格符ASCII码值32空字符ASCII值0
    117答案:A
    118答案:B
    119答案:A
    120答案:C
    121答案:B
    注释:单纯C语言语法说选项BC正确选项C中第运算两象整型常数结果整型数0运算结果0
    122答案:C
    123答案:A
    注释:条件表达式增加括号式变a124答案:C
    125答案:B
    126答案:B
    注释:通运算象决定逻辑运算&&结果时运算象做处理
    127答案:D
    128答案:B
    注释:数组元素存中行排列数组前3元素值分321表达式中然数组标写法似行3元素定义时3行2列致C语言引数组元素时根数组首址出标进行运算决定元素址题中表达式引数组前3元素
    129答案 A
    130答案:D
    131答案:B
    132答案:B
    133答案:B
    134答案:A
    135答案:C
    136答案:C
    137答案:C
    138答案:D
    139答案:D
    140答案:C
    141答案:D
    注释:scanf函数返回值输入数数printf函数返回值输出字符数
    142答案:D
    143答案:C
    注释:C语言中 常变量作逻辑表达式含义:变量值0时关系成立
    144答案:D
    注释:break语句仅跳出switch语句会跳出while循环死循环
    145答案:A
    146答案:C
    147答案:C
    148答案:D
    注释:数y0时程序发生溢出错误
    149答案:C
    150答案:A
    151答案:C
    152答案:C
    注释:答案C赋值号左侧数组s首址常量赋值号右侧字符串常量字符串常量赋址常量
    153答案:D
    注释:D选项缺少字符串结束标志
    154答案:C
    注释:处函数形参指针变量接受实参址数组
    155答案:A
    156答案:D
    注释:里首先明确基概念C语言中程序文件概念程序文件组成文件组成文件中包含函数函数构成C程序基单位
    变量作域变量存储类型autoregister类型变量作域说明变量前函数外部变量作域整程序外部变量作域跨越文件部静态变量(定义函数部static型变量)作域前函数外部静态变量(定义函数外面static型变量)作域前文件跨越文件中函数
    157答案:A
    158答案:A
    注释:参数a样数类型说明省略C语言规定种情况表示int型
    159答案:C
    注释:函数swapa值传递函数执行结果返回函数swapb中变量temp指针变量接受址量指针变量x赋值函数swap中然指针变量交换址指目标变量进行交换目标变量没行值交换
    160答案:B
    161答案:D
    162答案:D
    注释:调函数中b0执行fun1函数里法时发生溢出错误
    163答案:B
    164答案:C
    165答案:D
    注释:答案D中正确函数调应:printf(d *y)
    166答案:C
    注释:注意说明语句int (*p)[ ]区说明语句int (*p)[ ]说明指数组指针
    167答案:C
    注释:题干中*p括号括起p应解释指针标运算符[]说明指象4int型元素维数组果int (*p)()指函数指针int *p[4]根运算符优先级先考虑p[]运算符关系指针数组
    168答案:B
    注释:选项B两处错误数组名常量出现赋值左侧二指针变量整数做加作址常量数组名相加
    169答案:D
    注释:s作数组名址常量s++ss+1C语言允许常量进行赋值
    170答案:C
    171答案:C
    注释:a二维数组名a+1中11字节数组行10字节a+1第二字符串首址A选项正确C编译系统中二维数组名样理解(注意里仅理解):a指维数组(a+1)指a[1]*(a+1)取a[1]值保存第二字符串ShangHai首址选项B正确*a第字符串首址加1第字符串中第二字符址选项C输出beiJing选项D中&a[1][0]第二字符串第字符做取址运算该址字符串ShangHai首址注意二维数组说做次*[]运算结果址量做两次取数值
    172答案:A
    注释:p级指针选项B中进行两次*运算错误ptr指维数组指针指数组三元素样指针进行两次**运算取出址单元中存数C选项中*ptr表示数组第行首址该址维数组址+3表示加三指数类型长度(*ptr+1)+2数组中数值4址根分析选项Dptr进行两次址操作(*[])结果应数加1指数组第二行根面[]中2址增加两维数组长度指数组行做*运算数10a[3][0]
    173答案:A
    174答案:B B
    175答案:D
    176答案:B
    177答案:D
    注释:答案D种交换两变量值算法
    178答案:B
    179答案:C
    注释:Cp进行赋值p>nexta[0]址引成员n做前增1运算结果2
    180答案:B
    181答案:D
    182答案:A
    183答案:C
    注释:联合变量temp成员占存储单元长度4字节266二进制表示100001010存放存储单元低端两字节图:
    高字节

    0 0 0 0 0 0 0 1
    低字节 0 0 0 0 1 0 1 0
    引tempch进行输出取低第字节
    184答案:D
    注释:结构指针指结构数组0号元素表达式(p++)>m含义先取出m(变量a址)然指针p加1表达式*(p++)>m含义先取出m容(变量a值)然指针p加1表达式(*p)m含义取出m(变量a址)表达式*(++p)>m含义先指针p加1然取m容(变量b值)
    185答案:D
    186答案:B
    187答案:C
    188答案:A
    189答案:D
    190答案:D
    191答案:A
    192答案:B
    193答案:A
    194答案:D
    注释:函数fopen中第二参数开模式r模式读方式写文件a+模式读追加方式允许文件中读出数写入数均动加文件末尾w模式写方式允许户求数写入文件指定位置开文件首先文件容清空r+模式读写方式允许读文件允许户求数写入文件指定位置开文件会文件容清空题求修改文件容选择答案D
    195答案:C
    196答案:D
    197答案:C
    198答案:B
    注释:语句z2*(N+Y(5+1)引两宏定义C语言区分字母第二宏定义中N直接3换5+1换nz2*(3+(3+1)*5+1)结果48注意带参数宏直接文换例中n5+1换结果(N+1)*5+1(N+1)*(5+1)
    199答案:C
    注释:宏换结果printf(d103*3)
    1100答案:C



    二 阅读程序题
    导读:学会阅读程序初学者说重方面巩固学语法知识方面通阅读写程序开思路谓见识广读者通阅读理解程序出四备选参考答案中选择程序正确输出果选择误认真分析原概念方面错误程序逻辑理解加深语法规理解提高程序设计力程序设计语言开发程序工具学语言目编写程序解决实际问题特提倡通实际机检验备选答案增强动手力题基教材章节安排读者根学进度选择部分题

    21程序输出结果 main( )
    { float a
    a1100000000
    printf(ga)
    }
    A) 000000e+00 B) 00 C) 100000e07 D) 0


    22面程序输出结果____
    #include
    main( )
    { int x10
    { int x20
    printf (d x)
    }
    printf(d\n x)
    }
    A) 1020 B) 2010 C) 1010 D) 2020


    23程序输出结果____
    main()
    { unsigned int n
    int i521
    ni
    printf(nu\nn)
    }
    A) n521 B) n521 C) n65015 D) n102170103


    24程序输出结果 main( )
    { int x10 y10 printf(d d\n x―― ――y)
    }
    A) 10 10 B) 9 9 C) 9 10 D) 10 9


    25程序输出结果____
    main()
    { int n1
    printf(d d d\nnn++n)
    }
    A) 1 1 1 B) 1 0 1 C) 1 1 0 D) 1 2 1


    26程序输出结果____
    main()
    { int x0x02ffy0x0ff00
    printf(d\n(x&y)>>4|0x005f)
    }
    A) 127 B) 255 C) 128 D) 1


    27程序输出结果____
    main()
    { int a1
    char c'a'
    float f20
    printf(d\n((a0)f0&&c'A'))
    }
    A) 0 B) 1


    28面程序输出结果____
    main()
    { int a1ia+1
    do
    { a++
    }while( ~i++ > 3)
    printf(d\na)
    }
    A) 1 B) 2 C) 3 D) 4


    29面程序输出结果____
    main()
    { int a111
    aa^00
    printf(do\naa)
    }
    A) 111157 B) 00 C) 2024 D) 77


    210面程序输出结果____
    main()
    { char s[12] a book
    printf(4ss)
    }
    A) a book B) a book<四空格
    C) a bo D) 格式描述错误输出确定


    211面程序输出结果____
    main()
    { int ab
    scanf(2d3d&a&b)
    printf(ad bd\nab)
    }
    A) a12 b34 B) a123 b45 C) a12 b345 D) 语句右错误


    212程序段输出结果 int a10b50c30
    if(a>b)
    ab
    bc
    ca
    printf(ad bd cd\nabc)
    A) a10 b50 c10 B) a10 b30 c10
    C) a50 b30 c10 D) a50 b30 c50


    213程序输出结果 main()
    { int a0b1c0d20
    if(a) dd10
    else if(b)
    if(c) d15
    else d25
    printf(dd\nd)
    }
    A) d10 B) d15 C) d20 D) d25


    214面程序输出结果
    main()
    { int a1b0
    switch(a)
    { case 1 switch (b)
    { case 0 printf(**0**) break
    case 1 printf(**1**) break
    }
    case 2 printf(**2**) break
    }
    }
    A) **0** B) **0****2** C) **0****1****2** D) 语法错误


    215程序输出结果 main()
    { char *s12134211
    int v10v20v30v40k
    for(k0s[k]k++)
    switch(s[k])
    { case '1' v1++
    case '3' v3++
    case '2' v2++
    default v4++
    }
    printf(v1d v2d v3d v4d\nv1v2v3v4)
    }
    A) v14v22v31v41 B) v14v29v33v41
    C) v15v28v36v41 D) v14v27v35v48


    216面程序输出
    main()
    { int x1y0a0b0
    switch(x)
    { case 1 switch(y)
    { case 0 a++break
    case 1 b++break
    }
    case 2 a++b++break
    }
    printf(adbd\nab)
    }
    A) a2b1 B) a1b1 C) a1b0 D) a2b2


    217面程序输出____
    main()
    { int num0
    while(num<2)
    { num++
    printf(d\nnum)
    }
    }
    A) 1 B) 1 C) 1 D) 1
    2 2 2
    3 3
    4


    218面程序输出结果____
    main()
    { int a1b0
    do
    { switch(a)
    { case 1 b1break
    case 2 b2break
    default b0
    }
    ba+b
    }while(b)
    printf(adbdab)
    }
    A) 12 B) 21 C) 11 D) 22


    219键盘输入446755时面程序输出____
    #include
    main()
    { int c
    while((cgetchar())'\n')
    switch(c '2')
    { case 0
    case 1 putchar(c+4)
    case 2 putchar(c+4)break
    case 3 putchar(c+3)
    default putchar(c+2)break
    }
    printf(\n)
    }
    A) 888988 B) 668966 C) 88898787 D) 66898787


    220面程序输出结果____
    main()
    { int k0
    char c'A'
    do
    { switch(c++)
    { case 'A' k++break
    case 'B' k
    case 'C' k+2break
    case 'D' kk2contiue
    case 'E' kk+10break
    default kk3
    }
    k++
    }while(c<'C')
    printf(kd\nk)
    }
    A) k1 B) k2 C) k3 D) k4

    221面程序输出结果____
    main()
    { int xi
    for(i1i<100i++)
    { xi
    if(++x20)
    if(++x30)
    if(++x70)
    printf(d x)
    }
    }
    A) 39 81 B) 42 84 C) 26 68 D) 28 70


    222面程序输出结果____
    #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)
    }
    A) 20 B) 21 C) 22 D) 23


    223假定键盘输入3624<回车>面程序输出____
    #include
    main()
    { float xyz
    scanf(ff&x&y)
    zxy
    while(1)
    { if(fabs(z)>10)
    { xy
    yz
    zxy
    }
    else break
    }
    printf(f\ny)
    }
    A) 1500000 B) 1600000 C) 2000000 D) 2400000


    224面程序输出结果____
    main()
    { int ijx0
    for(i0i<2i++)
    { x++
    for(j0j<3j++)
    { if(j2)
    continue
    x++
    }
    x++
    }
    printf(xd\nx)
    }
    A) x4 B) x8 C) x6 D) x12


    225面程序输出结果____
    main()
    { int ijk10
    for(i0i<2i++)
    { k++
    { int k0
    for(j0j<3j++)
    { if(j2) continue
    k++
    }
    }
    k++
    }
    printf(kd\nk)
    }
    A) k4 B) k8 C) k14 D) k18


    226面程序输出结果____
    #include
    main( )
    { int n[3][3] i j
    for(i0i<3i++ )
    for(j0j<3j++ )
    n[i][j]i+j
    for(i0i<2i++ )
    for(j0j<2j++ )
    n[i+1][j+1]+n[i][j]
    printf(d\n n[i][j])
    }
    A) 14 B) 0 C) 6 D) 确定


    227面程序输出结果____
    #include
    main( )
    { int a[4][5]{1244593632784}
    int ijn
    n9
    in5
    jni*51
    printf(a[d][d]d\n ija[i][j])
    }
    A) 6 B) 3 C) 2 D) 确定


    228面程序输出结果____
    int m[3][3]{ {1} {2} {3} }
    int n[3][3]{ 1 2 3 }
    main( )
    { printf(d\n m[1][0]+n[0][0] ) * ① *
    printf(d\n m[0][1]+n[1][0] ) * ② *
    }
    ① A) 0 B) 1 C) 2 D) 3
    ② A) 0 B) 1 C) 2 D) 3


    229面程序输出结果____
    #include
    main( )
    { char s1[50]{some string *}s2[]{test}
    printf(s\n strcat(s1s2))
    }
    A) some string * B) test
    C) some stritest D) some string *test


    230面程序输出结果____
    #include
    f(char *s)
    { char *ps
    while(*p'\0')
    p++
    return(ps)
    }
    main()
    { printf(d\nf(ABCDEF))
    }
    A) 3 B) 6 C) 8 D) 0


    231面程序输出结果____
    #include
    #include
    main( )
    { char str[100] How do you do
    strcpy( str + strlen(str)2 es she)
    printf(s\n str)
    }
    A) How do you do B) es she C) How are you D) How does she


    232面程序输出结果____
    #include
    func(int aint b)
    { int c
    ca+b
    return(c)
    }
    main()
    { int x6y7z8r
    rfunc((xy++x+y)z)
    printf(d\nr)
    }
    A) 11 B) 20 C) 21 D) 31


    233面程序输出结果____
    #include
    void fun(int *s)
    { static int j0
    do
    { s[j]+s[j+1]
    }while(++j<2)
    }
    main()
    { int ka[10]{12345}
    for(k1k<3k++)
    fun(a)
    for(k0k<5k++)
    printf(da[k])
    }
    A) 35756 B) 23445 C) 35745 D) 12345


    234面程序输出结果____
    #include
    int k1
    main( )
    { int i4
    fun(i)
    printf (\nddik) * ① *
    }
    fun(int m)
    { m+kk+m
    { char k'B'
    printf(\ndk'A') * ② *
    }
    printf(\nddmk) * ③ *
    }
    ① A) 41 B) 56 C) 46 D) ABC参考答案
    ② A) 1 B) 59 C) 64 D) ABC参考答案
    ③ A) 566 B) 166 C) 56 D) ABC参考答案


    235面程序输出结果____
    #include
    fun(int n int *s)
    { int f1 f2
    if(n1||n2)
    *s1
    else
    { fun(n1 &f1)
    fun(n2 &f2)
    *sf1+f2
    }
    }
    main()
    { int x
    fun(6 &x)
    printf(d\n x)
    }
    A) 6 B) 7 C) 8 D) 9


    236面程序输出结果____
    int w3
    main()
    { int w10
    printf(d\nfun(5)*w)
    }
    fun(int k)
    { if(k0) return(w)
    return(fun(k1)*k)
    }
    A) 360 B) 3600 C) 1080 D) 1200


    237面程序输出结果____
    #include
    funa(int a)
    { int b0
    static int c3
    ac++b++
    return(a)
    }
    main()
    { int a2ik
    for(i0i<2i++)
    kfuna(a++)
    printf(d\nk)
    }
    A) 3 B) 0 C) 5 D) 4


    238面程序输出结果____
    #include
    void num()
    { extern int xy
    int a15b10
    xab
    ya+b
    }
    int xy
    main()
    { int a7b5
    xab
    ya+b
    num()
    printf(dd\nxy)
    }
    A) 122 B) 525 C) 112 D) 输出确定


    239面程序输出结果____
    main()
    { int a2i
    for(i0i<3i++)
    printf(4df(a))
    }
    f(int a)
    { int b0
    static int c3
    b++
    c++
    return(a+b+c)
    }
    A) 7 7 7 B) 7 10 13 C) 7 9 11 D) 7 8 9


    240面程序输出结果____
    #include
    try( )
    { static int x3
    x++
    return(x)
    }
    main( )
    { int i x
    for(i0 i<2 i++ )
    xtry( )
    printf(d\n x)
    }
    A) 3 B) 4 C) 5 D) 6
    241面程序输出结果____
    #include
    main( )
    { int x1
        void f1( ) f2( )
       f1( )
    f2(x)
    printf(d\n x)
    }
    void f1(void)
    { int x3
    printf(d x)
    }
    void f2( x )
    int x
    { printf(d ++x)
    }
    A) 1 1 1 B) 2 2 2 C) 3 3 3 D) 3 2 1


    242面程序输出结果____
    #include
    #define SUB(XY) (X)*Y
    main()
    { int a3b4
    printf(d\nSUB(a++b++))
    }
    A) 12 B) 15 C) 16 D) 20


    243面程序输出结果____
    main()
    { int a[]{123456}
    int *p
    pa
    printf(d *p)
    printf(d *(++p))
    printf(d *++p)
    printf(d *(p))
    p+3
    printf(d d *p*(a+3))
    }
    A) 1 2 3 3 5 4 B) 1 2 3 4 5 6 C) 1 2 2 3 4 5 D) 1 2 3 4 4 5


    244面程序输出结果____
    main()
    { int a[3][4]{123456789101112}
    int *pa
    p+6
    printf(d *p) * ① *
    printf(d *(*(a+6))) * ② *
    printf(d *(a[1]+2)) * ③ *
    printf(d*(&a[0][0]+6))* ④ *
    }
    A) 7 7 7 7 B) ②句语法错误 C) ③句语法错误 D) ④句语法错误


    245面程序输出结果____
    #define FMT X\n
    #include
    main( )
    { static int a[ ][4] { 123456789101112 }
    printf( FMT a[2][2]) * ① *
    printf( FMT *(*(a+1)+1) ) * ② *
    }
    ① A) 9 B) 11 C) A D) B
    ② A) 6 B) 7 C) 8 D) 前面三参考答案均错误


    246面程序输出结果____
    #include
    main ( )
    { int a[]{1 2 3 4 5}
    int x y *p
    p&a[0]
    x*(p+2)
    y*(p+4)
    printf(ddd\n *p x y)
    }
    A) 135 B) 123 C) 124 D) 145


    247面程序输出结果____
    void ive(xn)
    int x[]n
    { int t*p
    px+n1
    while(x{ t*x
    *x++*p
    *pt
    }
    return
    }
    main()
    { int ia[]{1234567890}
    ive(a10)
    for(i0i<10i++)
    printf(d a[i])
    printf(\n)
    }
    A) 1 2 3 4 5 6 7 8 9 0 B) 0 9 8 7 6 5 4 3 2 1
    C) 1 3 5 7 9 2 4 6 8 0 D) 0 8 6 4 2 9 7 5 3 1


    248面程序输出结果____
    #include stringh
    fun(char *wint n)
    { char t*s1*s2
    s1ws2w+n1
    while(s1{ t*s1++
    *s1*s2
    *s2t
    }
    }
    main()
    { static char *p1234567
    fun(pstrlen(p))
    printf(sp)
    }
    A) 7654321 B) 1717171 C) 7171717 D) 1711717


    249面程序输出结果____
    #include
    char *p abcdefghijklmnopq
    main( )
    { int i0
    while( *p++'e' )
    printf(c\n *p)
    }
    A) c B) d C) e D) f


    250面程序输出结果____
    #include
    f(int x int y)
    { return (yx)
    }
    main( )
    { int a5 b6 c
    int f() (*g)()f
    printf(d\n (*g)(ab) )
    }
    A) 1 B) 2 C) 3 D) 前面三参考答案均错误


    251面程序输出结果____
    #include
    main( )
    { int a1*p**pp
    pp&p
    p&a
    a++
    printf (ddd\n a*p **pp)
    }
    A) 211 B) 212 C) 222 D) 程序错误


    252面程序输出结果____
    main()
    { char *alpha[7]{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
    char **p
    int i
    palpha
    for(i0i<4i++)
    printf(c*(p[i]))
    printf(\n)
    }
    A) AEIM B) BFJN C) ABCD D) DHLP


    253面程序输出结果____
    #include
    char *pp[2][3]{ abc defgh ijkl mnopqr stuvw xyz}
    main ( )
    { printf(c\n***(pp+1)) * ① *
    printf(c\n**pp[0]) * ② *
    printf(c\n(*(*(pp+1)+1))[4]) * ③ *
    printf(c\n*(pp[1][2]+2)) * ④ *
    printf(s\n**(pp+1)) * ⑤ *
    }
    ① A) a B) d C) i D) m
    ② A) a B) d C) i D) m
    ③ A) h B) l C) q D) w
    ④ A) k B) o C) u D) z
    ⑤ A) ijkl B) mnopqr C) stuvw D) xyz


    254面程序输出结果____
    #include stdioh
    struct str1
    { char c[5]
    char *s
    }
    main( )
    { struct str1 s1[2]{ {ABCDEFGH}{IJKLMN} }
    struct str2
    { struct str1 sr
    int d
    }s2{OPQRST32767}
    struct str1 *p[2]
    p[0]&s1[0]
    p[1]&s1[1]
    printf(s++p[1]>s) * ① *
    printf(cs2src[2]) * ② *
    }
    ① A) LMN B) MN C) N D) IJK
    ② A) O B) P C) Q D) R


    255程序输出结果____
    struct st
    { int x*y
    }*p
    int s[]{10203040}
    struct st a[]{1&s[0]2&s[1]3&s[2]4&s[3]}
    main()
    { pa
    printf(d\n++(*(++p)>y))
    }
    A) 10 B) 11 C) 20 D) 21


    256程序输出结果____
    #include
    main()
    { union EXAMPLE
    { struct
    { int xy
    }in
    int ab
    }e
    ea1eb2
    einxea*eb
    einyea+eb
    printf(dd\neinxeiny)
    }
    A) 23 B) 44 C) 48 D) 88


    257面程序输出结果____
    #include
    main()
    { union
    { int i[2]
    long k
    char c[4]
    }r*s&r
    s>i[0]0x39
    s>i[1]0x38
    printf(c\ns>c[0])
    }
    A) 39 B) 9 C) 38 D) 8


    258面程序输出
    main ( )
    { printf(d\n EOF)
    }
    A) 1 B) 0 C) 1 D) 程序错误

                         阅读程序题参考答案
    21参考答案:D
    注释:程序中法运算两操作数均整型运算结果整型
    22参考答案:B
    注释:C语言允许程序块(分程序)中说明变量
    23参考答案:C
    注释:变量i中负号传送变量nn符号数已作负号处理
    24参考答案:D
    注释:变量x――操作缀形式变量x减1操作执行完 printf函数进行变量x值输出时候然保持原值10
    25参考答案:B
    注释:C语言执行printf()时函数中表达式表列处理序前先处理n 处理n++处理n表达式作处理单元说表达式中增减运算单独考虑
    26参考答案:A
    注释:变量x变量y做位结果0x0200右移4位0x00200x005f做位结果0x007f
    27参考答案:A
    注释:逗号表达式结果逗号分开表达式值题 c'A'值0逗号表达式值0
    28参考答案 B
    29参考答案 A
    210参考答案 C
    注释:输出格式描述mns中m输出总长度n实际字符数里m没出输出总长度实际输出字符数
    211参考答案 C
    212参考答案:B
    213参考答案:C
    214参考答案:B
    215参考答案:D
    216参考答案:A
    217参考答案 C
    218参考答案:A
    219参考答案 C
    注释:switch语句中case身仅起语句标号作会改变语句流程执行break语句退出前switch语句
    220参考答案 D
    注释:siwtch语句表达式中变量c缀增运算第次执行dowhile循环时执行case 'A'面语句

                                              
    221参考答案 D
    222参考答案 B
    223参考答案 B
    注释:fabs()浮点数绝值函数
    224参考答案 A
    225参考答案 C
    注释:C语言允许程序块(分程序)说明变量果程序块说明变量程序块外变量名块外说明变量块见题211进行较加深理解
    226参考答案 C
    227参考答案 B
    228参考答案: ① D ② A
    229参考答案:D
    230参考答案 B
    注释:输出结果字符串长度
    231参考答案 D
    注释:字符串拷贝函数strcpy()求两参数字符串首址题中第二参数字符串常量接受字符串第参量直接出字符数组名进行址运算结果str字符串长度132取整6第参数出址字符数组str首址加6原字符串中第二空格位置es she该处放入字符串str变How does she
    232参考答案 C
    注释:main函数调func函数时第实参逗号表达式值x+y结果变量xyz进行缀运算函数func参数值138
    233参考答案 C
    234参考答案 ① C ② A ③ C
    235参考答案 C
    236参考答案 B
    注释:函数fun进行递调实际进行运算5×4×3×2×1×3×10函数说明局部变量w屏蔽外部变量w函数中外部变量w见调printf函数时表达式fun(5)*w中w值10
    237参考答案 D
    注释:main函数三次调函数funafuna函数中静态变量c仅第次调时进行初始化次调时静态变量赋初值
    238参考答案 B
    注释:main函数num函数中说明变量ab部变量分说明函数效外部变量xy函数num说明num函数中引num函数中关键字extern说明变量xy外部变量通知计算机两变量fun函数外说明处定义两int型变量
    239参考答案 D
    注释:函数f中变量c静态变量仅第次调函数f时初始化3第二次调函数f时c值4第三次调函数f时c值5
    240参考答案 D

                   241参考答案 D
    注释:程序中三x分三函数中三x动变量三x分局部三函数三函数中x操作互影响
    242参考答案 A
    243参考答案 A
    注释:*(++p)*++p指针变量值前加1第次指a[1]第二次指a[2]a+3a[3]址
    244参考答案 C
    注释:②句没语法错误a+6指数组外aa[0]址a+1a[1]址a+2a[2]址显然数组a没a[6]分量③句错误a[1]址常量a[1][0]址址常量进行赋值运算
    245参考答案 ① D ② A
    注释:果FMT定义x\n输出16进制数写字母表示
    246参考答案 A
    注释:语句p&a[0]表示数组a中元素a[0]址赋指针变量pp指数组首元素a[0]指针变量&a[0]取数组首元素址指数组首址指针p+i(a+i)数组元素a[i]址*(p+i)(*(a+i))a[i]值
    247参考答案 B
    248参考答案 D
    249参考答案 D
    250参考答案 A
    注释:变量g指函数指针(*g)(ab)调指针g指函数
    251参考答案 C
    注释:p指针pp指指针指针
    252参考答案 A
    注释:指数组指针变量做标运算p[i]alpha[i]指字符串首址*p[i]取出字符串第字符
    253参考答案 ① D ② A ③ D ④ D ⑤ B
    注释:pp二维指针数组pp+1指数组第二维*(pp+1)第二维起始址**(pp+1)第二维第元素址***(pp+1)第二维第元素容①参考答案应选D*(pp+1)+1第二维第二元素址*(*(pp+1)+1)第二维第二元素(*(*(pp+1)+1))[4]第二维第二元素指字符串标4元素字符w③应选D
    254参考答案 ① B ② C
    255参考答案D
    256参考答案C
    注释:联合体成员取值次成员赋值
    257参考答案 B
    注释:整型数组i字符数组c存储空间i赋值等c赋值s>c[0]0x39输出9
    258参考答案:A
    注释:基概念EOFC语言头文件stdioh中定义户直接





    三程序填空题


    导读:程序填空题中已出程序干读者首先理解程序思路选择正确容填入空白处程序完成定功类题设计引导读者逐步掌握编程方法节题难度适中典型程序课堂已接触读者定独立完成样逐步提高编程力程序设计语言学中期读者程序设计已初步解编写程序知处入手时解答类题目避免盲目性提高学效率

    31面程序功第三变量实现两数调操作
    #include
    main()
    { int ab
    scanf(dd&a&b)
    printf(adbd\nab)
    a ①
    b ②
    a ③
    printf(adbd\nab)
    }


    32面程序功根似公式:π26≈ 112+122+132+ …… +1n2求π值
    #include
    double pi(long n)
    { double s00
    long i
    for(i1iss+ ①
    return( ② )
    }


    33面程序功求维数组中元素
    findmin(int *sint tint *k)
    { int p
    for(p0*kppif(s[p]
    }
    main()
    { int a[10]i*k&i
    for(i0i<10i++)
    scanf(d&a[i])
    findmin(a10k)
    printf(dd\n*ka[*k])
    }


    34面程序功计算13+57+ …… 99+101值
    main()
    { int it1s0
    for(i1i<101i+2)
    { ①
    ss+t

    }
    printf(d\ns)
    }


    35程序段:
    s10
    for(k1kss+10(k*(k+1))
    printf(f\ns)
    填空完成述程序述程序功完全相
    s00

    k0
    do
    { ss+d

    d10(k*(k+1))
    }while( ③ )
    printf(f\ns)


    36面程序功键盘输入干学生学成绩统计输出高成绩低成绩输入负数时结束输入
    main()
    { float xamaxamin
    scanf(f&x)
    amaxx
    aminx
    while( ① )
    { if(x>amax) amaxx
    if( ② ) aminx
    scanf(f&x)
    }
    printf(\namaxf\naminf\namaxamin)
    }


    37面程序功形参x值转换二进制数二进制数放维数组中返回二进制数低位放标0元素中
    fun(int xint b[])
    { int k0r
    do
    { rx ①
    b[k++]r
    x ②
    }while(x)
    }


    38面程序功输出1100间位数积位数数例数字26数位数字积12数字8
    main()
    { int nk1s0m
    for(n1n<100n++)
    { k1
    s0

    while( ② )
    { k*m10
    s+m10

    }
    if(k>s)
    printf(dn)
    }
    }


    39面程序功统计09间数字组成三位数数
    main()
    { int ijkcount0
    for(i1i<9i++)
    for(j0j<9j++)
    if( ① ) continue
    else for(k0k<9k++)
    if( ② ) count++
    printf(dcount)
    }


    310面程序功输出100位数63整数
    main()
    { int ij
    for(i0 ① i++)
    { ji*10+6
    if( ② ) countinue
    printf(dj)
    }
    }


    311面程序功辗转相法求两正整数mn公约数
    hcf(int mint n)
    { int r
    if(m{ rm

    nr
    }
    rmn
    while( ② )
    { mn
    nr
    rmn
    }

    }


    312面程序功泡法输入10浮点数进行排序排序10数分两行输出程序:
    #include
    main()
    { ①
    int ij
    printf(Input 10 numbers please\n)
    for(i0 ② i++ )
    scanf(f &a[i])
    printf(\n)
    for(i2 ③ i++ )
    for(j0 ④ j++ )
    if( ⑤ )
    { xa[j]

    a[j+1]x
    }
    printf(The sorted 10 numbers\n)
    for(i0 ⑦ i++ )
    { if( ⑧ )
    printf(\n)
    printf(f\ta[i])
    }
    printf(\n)
    }


    313面程序功读入20整数统计非负数数计算非负数
    #include stdioh
    main()
    { int ia[20]scount
    scount0
    for(i0i<20i++ )
    scanf(d ① )
    for(i0i<20i++)
    { if(a[i]<0)

    s+a[i]
    count++
    }
    printf(sd\t countd\nscount)
    }


    314面程序功删字符串s中空格
    #include
    main()
    { char *sBeijing ligong daxue
    int ij
    for(ij0s[i]'\0'i++)
    if(s[i] ' ') ①
    else ②
    s[j] '\0'
    printf(ss)
    }


    315面程序功字符串s中字符'c'删请选择填空
    #include
    main( )
    { char s[80]
    int ij
    gets(s)
    for(ij0s[i] '\0'i++ )
    if(s[i] 'c') ①
    s[j] '\0'
    puts(s)
    }

    316面程序功输出两字符串中应相等字符请选择填空
    #include
    char x[]programming
    char y[]Fortran
    main()
    { int i0
    while(x[i] '\0' && y[i] '\0')
    if(x[i]y[i])
    printf(c ① )
    else
    i++
    }


    317面程序功字符串s中字符升序规插数组a中 字符串a已排序
    #include
    main()
    { char a[20]cehiknqtw
    char s[]fbla
    int ikj
    for(k0s[k] '\0'k++ )
    { j0
    while(s[k]>a[j] && a[j] '\0' )
    j++
    for( ① )

    a[j]s[k]
    }
    puts(a)
    }


    318面程序功键盘输入两字符串进行较然输出两字符串中第相字符ASCII码差例:输入两字符串分abcdefgabceef输出1
    #include
    main()
    { char str1[100]str2[100]c
    int is
    printf(Enter string 1 ) gets(str1)
    printf(Enter string 2 ) gets(str2)
    i0
    while((str1[i] str2[i] && str1[i] ① ))
    i++
    s ②
    printf(d\n s)
    }


    319面函数expand字符串s复制字符串t时 中换行符制表符转换见转义字符表示'\n'表示换行符'\t'表示制表符
    expand(char s[]char t[])
    { int ij
    for(ij0s[i] '\0'i++ )
    switch (s[i])
    { case '\n' t[ ① ] ②
    t[j++] 'n'
    break
    case '\t' t[ ③ ] ④
    t[j++] 't'
    break
    default t[ ⑤ ] s[i]
    break
    }
    t[j] ⑥
    }


    320面函数index(char s[] char t[])检查字符串s中否包含字符串t包含返回ts中开始位置(标值)否送回1
    index(char s[] char t[])
    { int ijk
    for(i0s[i] '\0'i++ )
    { for(jik0 ① && s[j]t[k]j++k++)
    if( ② )
    return (i)
    }
    return(1)
    }
    n


    321面程序功计算S k
    k0
    long fun(int n)
    { int i
    long s
    for(i1i ① i++)
    s*i
    return( ② )
    }
    main()
    { int kn
    long s
    scanf(d&n)
    s ③
    for(k0ks+ ④
    printf(ld\ns)
    }


    322面程序功显示具n元素数组s中元素
    #define N 20
    main()
    { int ia[N]
    for(i0iscanf(d&a[i])
    printf(d\n ① )
    }
    fmax(int s[]int n)
    { int kp
    for(p0kppif(s[p]>s[k]) ②
    return(k)
    }


    323面程序功键盘输入n求满足述条件xy:
    nxny末3位数字相x≠yxyn均然数x+y
    #include
    pow3(int nint x)
    { int i last
    for(last1i1ilast ①
    return(last)
    }
    main()
    { int xnminflag1
    scanf(d &n)
    for(min2flagmin++)
    for(x1xif( ② && pow3(nx)pow3(nminx))
    { printf(xdyd\n x minx )

    }
    }


    324面程序递算法求a方根求方根迭代公式:

    #include
    double mysqrt( double a double x0 )
    { double x1 y
    x1 ①
    if( fabs(x1x0)>000001 )
    y mysqrt( ② )
    else y x1
    return( y )
    }
    main()
    { double x
    printf(Enter x )
    scanf(lf &x)
    printf(The sqrt of lflf\n x mysqrt( x 10) )
    }


    325程序计算学生年龄已知第位学生年龄10岁余学生年龄2岁求第5学生年龄
    #include
    age( int n )
    { int c
    if( n1 ) c10
    else c ①
    return(c)
    }
    main()
    { int n5
    printf(aged\n ② )
    }


    326面函数sum(int n)完成计算1~n累加
        sum(int n)
    { if(n<0)
    printf(data error\n)
    if(n1) ①
    else ②
    }


    327面函数求阶递调函数
    facto(int n)
    { if( n 1 ) ①
    else return( ② )
    }


    328组合问题组合基性质知:
    (1) C(mn)C(nmn)
    (2) C(mn+1)C(mn)+C(m1n)
    公式(2)递公式直满足C(1n)n止n<2*m时先公式(1) 进行简化填写程序中空白程序正确运行
    #includestdioh
    main()
    { int mn
    printf(Input mn)
    scanf(dd &m &n)
    printf(The combination numbeers is d\n combin(mn))
    }
    combin( int m int n)
    { int com
    if( n<2*m ) mnm
    if( m0 ) com1
    else if(m1) ①
    else ②
    return(com)
    }


    329列函数求字符串str长度
     int strlen( char *str )
    { if( ① ) return (0)
      else return ( ② )
    }


    330递实现输入32768整数逆序输出输入12345输出54321
    #includestdioh
    main()
    { int n
    printf(Input n )
    scanf(d ① )
    r(n)
    printf(\n)
    }
    r( int m )
    { printf(d ② )
    m ③
    if( ④ )

    }

                                               
    331输入n值输出高度n等边三角形例n4时图形:
    *
    ***
    *****
    *******
    #include
    void prt( char c int n )
    { if( n>0 )
    { printf( c c )

    }
    }
    main()
    { int i n
    scanf(d &n)
    for( i1 i{ ②

    printf(\n)
    }
    }


    332面函数实现N层嵌套方根计算

    double y(double x int n)
    { if( n0 )
    return(0)
    else return ( sqrt(x+( ① )) )
    }


    333函数revstr(s)字符串s置逆输入实参s字符串abcde 返回时 s 字符串edcba递程序:
    revstr( char *s )
    { char *ps c
    while(*p) p++

    if(s{ c*s
    *s*p

    revstr(s+1)

    }
    }
       非递实现revstr(s)函数:
    revstr (s)
    char *s
    { char *ps c
    while( *p ) p++

    while( s

    { c*s
    ⑤ *p
    *p c
    }
    }


    334面函数递调方法str中存放长度n字符串反转例原ABCDE反序EDCBA
    void invent(char *strint n)
    { char t
    t*str *str*(str+n1) *(str+n1)t if( n>2 ) invent ( ① n2)
    else ②
    }


    335键盘输入10整数程序降序完成排序
    #include
    int array[10]
    sort( int *p int *q )
    { int *max *s
    if( ① )
    return
    maxp for( sp+1 sif( *s > *max )
    ② swap( ③ )
    sort( ④ ) }
    swap( int *x int *y ) { int temp
    temp*x
    *x*y
    *ytemp
    }
    main()
    { int i printf(Enter data \n) for( i0 i<10 i++)
    scanf(d &array[i]) sort( ⑤ )
    printf(Output)
    for( i0 i<10 i++)
    printf(d array[i])
    }


    336面函数功整数存放数组中存放时逆序存放例:483存放成384
    #include
    void convert(char *a int n)
    { int i
    if((in10) 0 )
    convert( ① i )
    *a ②
    }
    char str[10]
    main()
    { int number
    scanf(d &number)
    convert( str number )
    puts(str)
    }


    337面程序功实现数组元素中值逆转
    #include
    main()
    { int in10a[10]{12345678910}
    invert(an1)
    for(i0i<10i++)
    printf(4da[i])
    printf(\n)
    }
    invert(int *sint num)
    { int *tk
    ts+num
    while( ① )
    { k*s
    *s*t
    *tk


    }
    }


    338面程序通指整型指针数组a[3][4] 容3行×4列格式输出请printf( )填入适参数通指针p数组元素求输出
    #include
    int a[3][4]{{1234}{5678}{9101112}} *pa
    main()
    { int ij
    for(i0i<3i++ )
    { for(j0j<4j++ )
    printf(4d ① )
    }
    }


    339面程序功:键盘输入行字符存入字符数组中然输出该字符串
    #include
    main ( )
    { char str[81] *sptr
    int i
    for(i0i<80i++ )
    { str[i]getchar( )
    if(str[i] '\n') break
    }
    str[i] ①
    sptrstr
    while( *sptr )
    putchar( *sptr ② )
    }


    340面函数功字符变量值插入已ASCII码值排序字符串中
    void fun(char *wchar xint *n)
    { int ip0
    while(x>w[p]) ①
    for(i*ni>pi) ②
    w[p]x
    ++*n
    }


    341面程序功键盘输入两字符串两字符串分排序然合合字符串ASCII码值排序删相字符
    #include
    strmerge(abc) * 已排序字符串ab合c *
    char *a*b*c
    { char t*w
    wc
    while( *a '\0' ① *b'\0' )
    { t ② *a++*b<*a *b++ ( ③ ) * *a*b者存入t *
    if( *w ④ '\0' ) *wt
    else if( t ⑤ *w) *++wt * *w相t存入w *
    }
    while( *a '\0' ) * ab中剩字符存入w *
    if( *a *w ) *++w*a++
    else a++
    while( *b '\0')
    if( *b *w ) *++w*b++
    else b++
    *++w ⑥
    }
    strsort( char *s ) * 字符串s中字符排序 *
    { int ijn
    char t*w

    for( n0*w '\0' ⑧ )
    w++
    for( i0ifor( ji+1jif( s[i]>s[j] )
    { ⑨ }
    }
    main( )
    { char s1[100]s2[100]s3[200]
    printf(\nPlease Input First String)
    scanf(ss1)
    printf(\nPlease Input Second String)
    scanf(ss2)
    strsort(s1)
    strsort(s2)
    ⑩ '\0'
    strmerge(s1s2s3)
    printf(\nResultss3)
    }


    342已知某数列前两项23继项根前面两项积列规生成:
    ① 积位数该积数列继项
    ② 积二位数该积十位数字位数字次作数列两继项
    面程序输出该数列前N项中函数sum(npa) 返回数列前N项生成前N项存入首指针pa数组中程序中规定输入N值必须2超定常数值MAXNUM
       例:输入N值10程序输出容:
    sum(10)44
    2 3 6 1 8 8 6 4 2 4
    #include stdioh
    #define MAXNUM 100
    int sum(n pa)
    int n *pa
    { int count total temp
    *pa 2
    ① 3
    total5
    count2
    while( count++{ temp *(pa1) * *pa
    if( temp<10 )
    { total + temp
    *(++pa) temp
    }
    else
    { ② temp10
    total + *pa
    if( count{ count ++ pa++
    ③ temp10
    total + *pa
    }
    }
    }

    }
    main()
    { int n *p *q num[MAXNUM]
    do
    { printf(Input N (2scanf(d &n)
    }while( ⑤ )
    printf(\nsum(d)d\n n sum(n num))
    for( pnum q ⑥ pprintf(4d *p)
    printf(\n)
    }


    343面程序功输入学生姓名成绩然输出
    #include
    struct stuinf
    { char name[20] * 学生姓名 *
    int score * 学生成绩 *
    } stu *p
    main ( )
    { p&stu
    printf(Enter name)
    gets( ① )
    printf(Enter score )
    scanf(d ② )
    printf(Output s d\n ③ ④ )
    }


    344面程序功学生姓名查询成绩排名均成绩查询时连续进行直输入0时结束
     #include
    #include
    #define NUM 4
     struct student
     { int rank
    char *name
    float score
    }
     ① stu[ ]{ 3liming893
     4zhanghua782
     1anli951
     2wangqi906
    }
    main()
    { char str[10]
     int i
     do
    { printf(Enter a name)
     scanf(sstr)
     for( i0i if( ② )
     { printf(Name 8s\nstu[i]name)
     printf(Rank 3d\nstu[i]rank)
     printf(Average 51f\nstu[i]score)
     ③
     }
     if( i>NUM ) printf(Not found\n)
     }while( strcmp(str0)0 )
    }


    345面程序功终端输入5年龄性姓名然输出
    #include stdioh
    struct man
    { char name[20]
    unsigned age
    char sex[7]
    }
    main ( )
    { struct man person[5]
    data_in(person5)
    data_out(person5)
    }
    data_in(struct man *p int n )
    { struct man *q ①
    for( p{ printf( agesexname )
    scanf(us &p>age p>sex)

    }
    }
    data_out( struct man *p int n )
    { struct man *q __③__
    for( pprintf(sus\n p>name p>age p>sex)
    }
             
    346输入N整数储存输入数应序号输入数序进行排列求:两整数相等时整数排列序输入先次序决定例:输入第3整数5第7整数5先输入整数5排输入整数5前面程序:
    #include stdioh
    #define N 10
    struct
    { int no
    int num
    } array[N]
    main( )
    { int ijnum
    for( i0i{ printf(enter No di)
    scanf(d&num)
    for( ① j>0&&array[j]num ② num ③ )
    array[j+1]array[j]
    array[ ④ ]numnum
    array[ ⑤ ]noi
    }
    for( i0iprintf(ddd\niarray[i]numarray[i]no)
    }


    347程序功:读入行字符(:ayz)输入时逆序建立链接式结点序列先输入位链表尾(图)然输入相反序输出释放全部结点



    #include
    main( )
    { struct node
    { char info
    struct node *link
    } *top*p
    char c
    topNULL
    while((c getchar( )) ① )
    { p(struct node *)malloc(sizeof(struct node))
    p>infoc
    p>linktop
    topp
    }
    while( top )
    { ②
    toptop>link
    putchar(p>info)
    free(p)
    }
    }


    348面函数指针p2指线性链表串接p1指链表末端假定p1指链表非空
    #define NULL 0
    struct link
    { float a
    struct link *next
    }
    concatenate ( p1p2 )
    struct list *p1*p2
    { if( p1>nextNULL )
    p1>nextp2
    else
    concatenate( ① p2)
    }


    349面程序功键盘输入字符串然反序输出输入字符串
    #include
    struct node
    { char data
    struct node *link
    }*head
    main()
    { char ch
    struct node *p
    head NULL
    while(( chgetchar())'\n' )
    { p (struct node *)malloc(sizeof(struct node))
    p>data ch
    p>link ①
    head ②
    }

    while( pNULL )
    { printf(c p>data)
    p p>link
    }
    }


    350面程序功键盘序输入整数直输入整数0时停止输入然反序输出整数
    #include
    struct data
    { int x
    struct data *link
    }*p
    input()
    { int num
    struct data *q
    printf(Enter data)
    scanf(d &num)
    if( num<0 )

    q ②
    q>x num
    q>link p
    pq

    }
    main()
    { printf(Enter data until data<0\n)
    pNULL
    input()
    printf(Output)
    while( ④ )
    { printf(d\n p>x)

    }
    }


    351面函数功创建带头结点链表头结点返回调函数链表储存学生学号成绩新产生结点总位链表尾部
    struct student
    { long num
    int score
    struct student *next
    }
    struct student *creat()
    { struct student *headNULL*tail
    long num int a
    tail ① malloc(LEN)
    do
    { scanf(ldd&num&a)
    if(num0)
    { if(headNULL) headtail
    else ②
    tail>numnum tail>scorea
    tail>next(struct student *)malloc(LEN)
    }
    else tail>nextNULL
    }while(num0)
    return( ③ )
    }


    352面create函数功建立带头结点单链表新产生结点总插入链表末尾单链表头指针作函数值返回
    #include
    #define LEN sizeof(struct student)
    struct student
    { long num
    int score
    struct student *next
    }
    struct student *creat()
    { struct student *headNULL*tail
    long num
    int a
    tail( ① )malloc(LEN)
    do
    { scanf(ldd&num&a)
    if(num0)
    { if(headNULL) headtail
    else tailtail>next
    tail>numnum
    tail>scorea
    tail>next( ② )malloc(LEN)
    }
    else tail>nextNULL
    }while(num0)

    }


    353面程序功统计文件中字符数
    #include
    main()
    { long num0
    ① *fp
    if((fpfopen(fnamedat r))NULL)
    { printf(Can't open the file )
    exit(0)
    }
    while( ② )
    { fgetc(fp)
    num++
    }
    printf(numd\nnum)
    fclose(fp)
    }


    354面程序功键盘输入文件( @ 作文件结束标志)复制名secondtxt新文件中
    #include
    FILE *fp
    main()
    { char ch
    if((fpfopen( ① ))NULL)
    exit(0)
    while((chgetchar())'@')
    fputc(chfp)

    }


    355面程序功磁盘文件复制文件中两文件名命令行中出(假定定文件名误)
    #include
    main(int argcchar *argv[])
    { FILE &f1*f2
    if(argc< ① )
    { printf(The command line error )
    exit(0)
    }
    f1fopen(argv[1] r)
    f2fopen(arhv[2] w)
    while( ② )
    fputs(fgetc(f1) ③ )


    }


    356面程序功根命令行参数分实现正整数累加阶例:果执行文件文件名sm执行该程序时输入:sm + 10实现10累加输入:sm 10实现求10阶
    #include
    #include
    main (int argcchar *argv[])
    { int n
    void sum()mult()
    void (*funcp)()
    natoi(argv[2])
    if(argc3 || n<0)
    dispform( )
    switch ( ① )
    { case '+' funcpsum
    break
    case '' funcpmult
    break
    default dispform( )
    }

    }
    void sum(int m)
    { int is0
    for(i1i
    printf(sumd\ns)
    }
    void mult(int m)
    { long int i s1
    for(i1is * i
    printf(mult ld\ns)
    }
    dispform( )
    { printf (usagesm n(+) (n>0)\n)
    exit (0)
    }


    357面程序功键盘输入字符串该字符串中写字母转换写字母输出文件testtxt中然该文件读出字符串显示出
    #include
    main()
    { char str[100]
    int i0
    FILE *fp
    if((fpfopen(testtxt ① ))NULL)
    { printf(Can't open the file\n)
    exit(0)
    }
    printf(Input a string\n)
    gets(str)
    while(str[i])
    { if(str[i]> 'a'&&str[i]< 'z')
    str[i] ②
    fputc(str[i]fp)
    i++
    }
    fclose(fp)
    fpfopen(testtxt ③ )
    fgets(strstrlen(str)+1fp)
    printf(s\nstr)
    fclose(fp)
    }


    358面程序功终端读入10整数二进制方式写入名bidat新文件中
    #include
    FILE *fp
    main()
    { int i j
    if(( fpfopen( ① wb )) NULL )
    exit (0)
    for( i0i<10i++ )
    { scanf(d &j )
    fwrite( ② sizeof(int) 1 ③ )
    }
    fclose( fp)
    }


    359字符流形式读入文件文件中检索出六种C语言关键字统计 输出种关键字文件中出现次数程序中规定:单词空格'\t' '\n'结束字符串
    #include
    #include
    FILE *cp
    char fname[20] buf[100]
    int num
    struct key
    { char word[10]
    int count
    }keyword[]{ if 0 char 0 int 0
    else 0 while 0 return 0}
    char *getword (FILE *fp)
    { int i0
    char c
    while((cgetc(fp)) EOF && (c' '||c'\t'||c'\n'))
    if( cEOF ) return (NULL)
    else buf[i++]c
    while((c ① && c ' ' && c '\t' && c '\n' )
    buf[i++] c
    buf[i] '\0'
    return(buf)
    }
    lookup(char *p)
    { int i
    char *q *s
    for(i0i{ q ②
    sp
    while( *s && (*s*q) )
    { ③
    }
    if( ④ )
    { keyword[i]count++
    break
    }
    }
    return
    }
    main()
    { int i
    char *word
    printf(Input file name)
    scanf(s fname)
    if((cpfopen(fname r)) NULL )
    { printf(File open error s\n fname)
    exit(0)
    }
    num sizeof(keyword) sizeof(struct key)
    while( ⑤ )
    lookup(word)
    fclose(cp)
    for(i0iprintf(keyword20scountd\nkeyword[i]wordkeyword[i]count)
    }


    360面程序功键盘接受姓名(例:输入ZHANG SAN)文件trydat中查找文件中已存入刚输入姓名显示提示信息文件中没刚输入姓名该姓名存入文件求:⑴磁盘文件trydat已存保留文件中原信息文件trydat存磁盘建立新文件⑵输入姓名空时(长度0)结束程序
    #include
    main()
    { FILE *fp
    int flag
    char name[30] data[30]
    if((fpfopen(trydat  ① ))NULL )
    { printf(Open file error\n)
    exit(0)
    }
    do
    { printf(Enter name)
    gets(name)
    if( strlen(name)0 )
         break
    strcat(name \n)
     ② 
    flag1
    while( flag && (fgets(data 30 fp) ③ ) )
    if( strcmp(data name) 0 )

    if( flag )
    fputs(name fp)
    else
    printf(\tData enter error \n)
    } while(  ⑤  )
    fclose(fp)
    }

    程序填空题参考答案
    31答案 ① a+b ② ab ③ ab
    32答案:① 10(float)(i*i) ② sqrt(6*s)
    33答案:① *kp
    34答案:① tt*i ② tt>011
    35答案:① d1 ② k++ ③ k36答案 ① x>0 ② x37答案 ① 2 ② 2
    38答案:① mn ② m>0 ③ mm10
    39答案:① ij ② ki&&kj
    310答案:① i<9 ② j30
    311答案:① mn ② r0 ③ return(n)
    312答案:① float a[10]x ② i<9 ③ i<8 ④ j<9i
    ⑤ a[j]>a[j+1] ⑥ a[j]a[j+1] ⑦ i<9 ⑧i50
    313答案:① &a[i] ② continue
    注释:①基概念scanf函数输入数组元素值输入元素值0时应跳面语句取数②填入continue
    314答案:① s[j++]s[i] ② s[j]s[i]
    315答案:① s[j++]s[i]
    316答案:① x[i++]
    317答案:① istrlen(a)i>ji ② a[i+1]a[i]
    318答案:① '\0' ② str1[i]str2[i]
    319答案:① j++ ② '\\' ③ j++ ④ '\\' ⑤ j++ ⑥ '\0'
    320答案:① t[k] '\0' ② t[k] '\0'

    321答案:① 322答案:① a[fmax(aN)] ② kp
    323答案:① last*n1000 ② xminx ③ flag0
    324答案:① (x0+ax0)2 ② ax1
    注释:根迭代公式①处应计算迭代值x1(x0+ax0)2求方根求迭代精度满足(fabs(x1x0)>000001)时继续迭代②处应填写ax1程序中调求绝值库函数fabs( )
    325答案:① 2+age(n1) ② age(5)
    注释:程序递算法首先建立问题递数学模型根原题描述写出递公式:
    age(n) 10 (n1)
    age(n) 2+age(n1) (n>1)
    程序递公式出:n含义第n位学生显然求第5位学生年龄②处应调函数age实参值应5①处应该函数递调根递公式应填写:2+age(n1)
    326答案:① return(1) ② return (sum(n1)+n)
    注释:常规编程方法问题采循环语句实现阅读程序没发现循环语句时应认原编程者非常规算法样常规算法需循环实现没循环程序肯定认定递算法
       问题求1~n累加公式写成递定义形式
          sum(n)1 n1时
    sum(n)sun(n1)+n n>1时
    根递定义容易完成程序
    327答案:① return(1) ② n*facto(n1)
    注释:熟悉求n算法般采循环语句实现程序中根没循环语句时应该想:采递算法实现首先写出求n递公式
          n1 n1时
    nn*(n1) n>1时
    根递定义容易完成程序
    328答案:① comn ② comcombin(n1m1) + combin(n1m)
    注释:题目说明中已出组合问题递定义需读者寻找递表达式程序中语句if (n<2*m) mnm完成题目中叙述公式(1)进行简化工作
    329答案:① *str'\0' ② 1+strlen(str+1)
    注释:求串长算法关键确定串结束标记'\0'位置根求串长方法递算法:指针str指字符串首字符
    果 前字符(*str) 串结束标记'\0'
    串长0
    否 串长 1+第字符外剩余字符串串长
    ①位置应填写*str'\0'判断前字符(*str)否串结束标记'\0'②位置应根面递算法进行递调应填写1+strlen(str+1)
    330答案:① &n ② m10 ③ m10 ④ m>0 ⑤ r(m)
    331答案:① prt(c n1) ② prt(' ' ni) ③ prt('*' i)
    注释:函数prt功输出n字符c
    332答案:① y(x n1)
    注释:显然递问题首先原数学函数定义形式进行变形推导出原函数等价递定义推导出原函数递定义
          y(xn)x n0时
    y(xn)sqrt(x+y(xn1)) n>0时
    333答案:① p ② *p'\0' ③ *pc ④ p ⑤ *s++
    注释:递算法中指针s指字符串首部反字符指针s指字符指针p 指字符串尾字符('\0')进行交换交换程中尚没交换字符串中间部分作整体进行递处理程序中首先执行c*s首字符存入时变量然执行*s*p尾字符存入串首执行revstr(s+1)递处理串中间部分时②处应填入*p'\0'存入串结束标记程序中关键③处完成存时变量c中字符存入串尾工作应填写*pc
    334答案:① str+1 ② return ①改 n2
    335答案:① p>q ② maxs ③ pmax
    ④ p+1q ⑤ &array[0] &array[9]
    注释:程序中排序部分采递算法函数sort两形参含义:指针p指针q间数进行排序语句for( sp+1 sq⑤处应填&array[0]&array[9]
    变量max指前值指针找新值时max中保存应该新值指针②处应填maxs
    调函数swap交换两变量值时候求实参变量址③处应填pmax值存入指针p指单元
    问题求排序通执行次函数sort值已放指针p指单元中遍排序时候指针p元素进行④处应填p+1q
    336答案:① a+1 ② n10+'0'
    337答案:① s338答案①*(p+4*i+j)
    注释:p级指针赋值保存二维数组a首址做加法运算加1时实际址增加指数类型长度C语言中维数组计算机中行存储题中通指针访问二维数组中数必须二维标转换维标
    339答案:① '\0' 0 ② ++
    注释:C语言中进行字符串处理时必须注意串结束标记'\0'进行串处理时基求①中填入'\0'putchar输出字符串必须改变指针运算里++运算
    340答案:① p++ ② w[i+1]w[i]
    341答案:① && ② *a<*b ③ *a++ *b++ ④
    ⑤ ⑥ '\0' ⑦ ws ⑧ n++
    ⑨ ts[i]s[i]s[j]s[j]t ⑩ s3[0]
    342答案:① *++pa ② *++pa ③ *pa
    ④ return(total) ⑤ n<2 || n>MAXNUM+1 ⑥ num+n
    343答案:① stuname ② &stuscore ③ p>name ④ p>score
    注释:结构中基概念
    344答案:① struct student ② strcmp(stu[i]namestr)0 ③ break
    注释:程序体二重循环层for循环完成查找学生工作①处进行结构数组说明初始化结构变量说明格式规定应该填写:strcut student②处if语句逻辑条件应查找指定学生输出学生情况应填写:strcmp(stu[i]namestr)0③处应控制退出层for循环选择break语句
    345答案:① p+n ② gets(p>name) ③ p+n
    注释:程序通函数完成结构数组输入输出操作函数data_indata_out十分相似通结构指针p结构指针q操作结构数组元素指针q两函数中作相①③填写容应该相for语句中循环终止条件pname)
    346答案:① ji1 ② > ③ j ④ j+1 ⑤ j+1
    注释:程序基思想:输入第i整数num数组array中已元素中倒序开始查找数组array中第j元素值num数组中元素j移动位置否应num插入前位置作元素j程序基设计思想插入排序
    程序中层for循环完成查找插入位置工作答案①②③密切关系统考虑样程序中答案④⑤密切关系统考虑
    347答案:① '\n' ② ptop
    348答案:① p1>next
    349答案:① head ② p ③ phead
    注释:程序键盘接受字符时建立起链表建立链表身已反序排列反序输出字符串时候实际需着链表第结点开始序操作
    350答案:① return ② (struct data *) malloc(sizeof(struct data))
    ③ input( ) ④ pNULL ⑤ pp>next
    351答案:① (struct student *) ② tailtail>next ③ head
    注释:①malloc函数作存开辟指定字节数存储空间存储空间址返回赋尾指针tail址void型应强制转换求结构指针类型
    ②新开辟结点存址存tail指已建立链表尾结点结构成员next新结点连入链表尾指针tail应指新结点
    352答案:① (struct student *) ② (struct list *) ③ return(head)
    353答案:① FILE ② feof(fp)
    注释:FILE 文件结构类型名feof()测试文件结束标志函数
    354答案:① secondtxt ② fclose(fp)
    355答案:① 3 ② feof(f1)feof(f1)0 ③ f2 ④ fclose(f2) ⑤ fclose(f1)
    注释:程序中带参数main函数中整型参数argc命令行中字符串数程序运行时输入字符串运行程序名文件1文件2argc应3字符串指针argv[0]指运行程序名字符串指针argv[1]指输入文件名字符串指针argv[2]指输出文件名述②处出循环条件输入文件否结束③处需填出输出文件名两处关闭两文件原关闭文件没序求惯开文件先关闭
    356答案:① *argv[1] ② (*funcp)(n) ③ s+i
    注释:程序执行时输入命令参数数(操作系统规定空格表示字符串分隔)系统赋函数形数argc输入命令参数字符串格式保存字符串首址分赋指针数组argv元素中argv[1]'+'''分表示累加阶程序根argv[1]指字符串容指函数指针变量funcp赋值②处求语句根指函数指针变量容相应函数实现调选择AB错误funcp调函数址*funcp实现函数调根运算符结合性(*funcp)表示取funcp目标*funcp(n)funcp先(n)结合funcp解释函数名显然错误
    357答案:① w ② 32 ③ r
    358答案:① bidat ② &j ③ fp
    359答案:① fgetc(fp))EOF ② &keyword[i]word[0]
    ③ s++ q++ ④ *s*q ⑤ (wordgetword(cp))NULL
    360答案:① a+ ② rewind(fp) ③ NULL ④ flag0 ⑤ ferror(fp)0

    四编写程序题参考答案
    导读:然题目基教材章节序排列类题目量排起便读者学掌握编程方法思路提高编程力

    41已知银行整存整取存款期限月息利率分:
    0315 期限年
    0330 期限二年
    月息利率 = 0345 期限三年
    0375 期限五年
    0420 期限八年
    求输入存钱金期限求期时银行利息金合计

    42输入年份year月month求该月少天判断否闰年C语言表达式:year40 && year1000 || year4000表达式成立(表达式值1)year闰年否表达式成立(值0)year年

    43编写简单计算器程序输入格式:data1 op data2中data1data2参加运算两数op运算符取值+*

    44输入n值输出图示矩形

    45输入n值输出图示行四边形

    46输入n值输出图示高n等腰三角形

    47输入n值输出图示高n等腰三角形

    48输入n值输出图示高底均n等腰梯形

    49输入n值输出图示高底均n等腰空心梯形

    410输入n值输出图示边长n空心正六边型

    411输入n值输出图示图形

    412输入n值输出图示图形

    413输入n值输出图示图形

    414输入n值输出图示图形

    415输入n值输出图示图形


    416输入n值输出图示图形(例n6时)


    417编写程序输出图示sin(x) 函数02π图形


    418编写程序屏幕输出*号围成空心圆

    419编写程序屏幕绘制图余弦曲线直线屏幕横x轴y轴 屏幕显示0~360度cos(x)曲线直线xf(y)45*(y1)+31迭加图形中cos图形*表示f(y)+表示两图形交点处f(y)图形符号

     
    420编写程序输出图示高度n图形

     
    421编写程序输出图示高度n图形

     

    422输入n值输出图示图形

     

    423输入n值输出图示n×n(n<10)阶螺旋方阵
    1 2 3 4 5
    16 17 18 19 6
    15 24 25 20 7
    14 23 22 21 8
    13 12 11 10 9
    图419 n5时螺旋方阵

    424输入n值输出图示回型方阵


    425输出图示数字金字塔


    426输入n值输出图示图形


    427输入顶行字符图形高输出图示图形


    428输入首字符高输出图示回型方阵
    A A A A A
    A B B B A
    A B C B A
    A B B B A
    A A A A A
    图 424 首字符'A'高5方阵

    429输入中心字符高输出图示回型方阵
    X X X X X
    X Y Y Y X
    X Y Z Y X
    X Y Y Y Y
    X X X X X
    图425 中心字符'Z'高5方阵

    430编写程序输出图示三角形式法九九表


    431编写程序输出图示三角法九九表


    432编写程序输入三角型三条边长求面积注意:合理边长输入输出数错误提示信息

    433编写程序求出555555约数中三位数少

    434编写程序计算列算式值:

    直某项A<0000001时止输出C值

    435键盘输入意字符列规进行分类计数
         第类 '0''1''2''3''4''5''6''7''8''9'
         第二类 '+''''*'''''''
         第三类 字符
    输入字符'\'时先计数然停止接收输入印计数结果

    436键盘输入行单词字符进行计数单词定义进行化简认单词包含空格制表符(\t)换行符字符序列例:a+b+c认1单词5字符组成:xy abc2单词6字符般[CTRL+D]作文件结束标记字符码值1输入[CTRL+D]时表示文件输入结束停止计数

    437编写程序计算x05时述级数似值误差某指定值epsilon(例:epsilon0000001):

     

    438编写程序计算式值:

     

    439编写程序计算列序列值:


    求项0001时者N20时尚未达精度求停止计算

    440已知求正弦sin(x)似值项式公式:


    编写程序求输入xε述公式计算sin(x)似值求计算误差定ε

    441键盘输入十整数插入法输入数序进行排序排序结果输出

    442输入正整数求相反序输出该数例输入12345输出位54321

    443编写程序读入整数NN非负数计算N2×N间整数N负数求2×NN间整数分利forwhile写出两程序

    444求解爱斯坦数学题条长阶梯步跨2阶剩余1阶步跨3阶剩2阶步跨5阶剩4阶步跨6阶剩5阶步跨7阶正阶剩请问条阶梯少阶

    445然数8余1商8余1第二次商8余7商a知然数17余4商17余15商a2倍编写程序求然数
    446编写程序二分法求元二次方程2x34x2+3x60(1010)区间根


    447中国古代科学家祖采正边形逼割圆法求出π值请编写程序采割圆法求出π值求精确数点第十位


    448ABCDE五某天夜里合伙捕鱼第二天凌晨时疲惫堪找方睡觉日三竿A第醒鱼分五份余条鱼扔掉走份B第二醒鱼分五份余条鱼扔掉走份CDE次醒样方法鱼编写程序求出合伙少捕少条鱼


    449辆卡车违犯交通规撞逃跑现场三目击事件没记住车号记车号特征甲说:牌前两位数字相乙说:牌两位数字相丙位数学家说:四位车号刚整数方请根线索求出车号


    450口袋中放12球中3红3白6黑次中取8球编写程序求出少种颜色搭配


    451100匹马驮100担货马匹驮3担中马匹驮2担马两匹驮1担试编写程序计算中马数目


    452编写程序输出元民币兑换成1分2分5分硬币兑换方法


    453显示200完全方数数(完全方数:A2+B2C2求ABC)


    454设N四位数9倍恰反序数(例:123反序数321)求N值


    455数数码倒新数原数反序数果数等反序数称称数求超1993二进制称数


    456编写程序求解式中字母代表数字
    PEAR
    - ARA
    ───────
    PEA


    457然数七进制表达式三位数然数九进制表示三位数两三位数数码序正相反求三位数


    458请验证2000哥德巴赫猜想4偶数均分解两素数


    459果正整数等数字立方称该数阿姆斯特朗数(称恋性数)40743+03+73阿姆斯特朗数编写程序求1000阿姆斯特朗数


    460意输入偶数请分解两素数

    461果整数A全部子(包括1包括A身)等B整数B全部子(包括1包括B身)等A整数AB称亲密数求3000全部亲密数
    462猜数游戏计算机想数请猜果猜结束游戏否计算机出提示告诉猜数太太直猜止计算机记录猜次数反映出猜数者猜水
    463编写程序求出1000少零
    464求矩阵 A[2*3] 转置矩阵 B[3*2]设矩阵 A :
    ┏ 1 2 3 ┓ ┏ 1 4 ┓
    A ┃ ┃ B ┃ 2 5 ┃
    ┗ 4 5 6 ┛ ┗ 3 6 ┛
    465十孩围成圈分糖果老师分第孩10块第二孩2块第三孩8块第四孩22块第五孩16块第六孩4块第七孩10块第八孩6块第九孩14 块第十孩20块然孩时手中糖分半右边孩糖块数奇数老师块问样次调整家手中糖块数样?少块糖?
    466输入5×5数组编写程序实现:
    (1)求出角线元素
    (2)求出角线行列标均偶数元素积
    (3)找出角线值元素数组中位置
    467编写程序字符形式输入十六进制数变换十进制整数输出
    468编写程序输入十进制整数变换二进制储存字符数组中
    469编写程序输出1000完数子谓完数指整数值等子例6子12361+2+36完数
    470数组A中N(0<N<100=整数进行连续编号输出元素编号求改变数组A中元素序相整数具相编号例数组:A(5347356) 输出: (3125134)
    471现超2000素数排成第行第二行数等右肩素数左肩素数差请编程求出:第二行数中否存样干连续整数恰1898?假存话种样情况?
    第行:2 3 5 7 11 13 17 1979 1987 1993     第二行: 1 2 2 4 2 4 8 6
    472123456789九数字分成三组数字次组三数许重复数字许组三数字重复求组中三位数组成完全方数
    473然数七进制表达式三位数然数九进制表示三位数两三位数数码序正相反求三位数
    474数组精确计算MN(0实现高精度计算结果商M存放N(N>1)元素维数组中数组元素存放位十进制数商第位存放第元素中商第二位存放第二元素中……次类推样数组表示计算结果
    475数组完成两超长(长度100)正整数加法
    实现高精度加法正整数M存放N(N>1)元素维数组中数组元素存放位十进制数位存放第元素中十位存放第二元素中……次类推样通数组中元素位加法实现超长正整数加法
    476数组完成两超长(长度100)正整数加法
    实现高精度加法正整数M存放N(N>1)元素维数组中数组元素存放位十进制数位存放第元素中十位存放第二元素中……次类推样通数组中元素位加法实现超长正整数加法
    477数组完成两超长(长度100)正整数法
    478马步遍历问题:已知国际象棋棋盘8*864格子设计程序棋子某位置开始跳马够棋盘格子走遍格子允许走次
    479八皇问题:
    8×8国际象棋盘八皇皇占格求棋盘放八皇时会出现相互攻击现象量皇行列角线问少种方法
    480编制计算函数yf(x)值程序中:
    x + 25 0< x <2
    y 2 15(x3)*(x3) 2< x <4
    x2 15 4< x <6
    481编写程序实现较两分数
    482求样三位数该三位数等位数字阶
            : abc a + b + c
    483已知两方三位数abcxyz中数码abcxyz未必axbycz三方二位数编写程序求三位数abcxyz取两方三位数nn1n高低分解abcn1高低分解xyz判断axbycz否均完全方数
    484找出二维数组中鞍点该位置元素该行值该列值二维数组没鞍点
    485数字123456填入2行3列表格中列右边数字左边数字行面数字面数字编写程序求出求种填写方法?
    486编写函数实现字符串str1字符串str2合合字符串ASCII码值进行排序相字符新字符串中出现次
    487已知计算xn阶勒德项式值公式:
    1 (n0)
    Pn(x) x (n1)
    ( (2n1)*x*Pn1(x)(n1)*Pn2(x))n (n>1)
    请编写递程序实现
    488编写函数采递方法实现输入字符串反序输出
    489编写函数采递方法屏幕显示杨辉三角形:
                   1
       1 1
       1 2 1
       1 3 3 1
       1 4 6 4 1
       1 5 10 10 5 1
       …… …… …… …… ……
    490编写函数采递方法整数转换二进制形式
    491设字母abc请编程递方法产生字母组成长度n字符串例输入n2输出:
    aa ab ac ba bb bc ca cb cc
    492数数码倒新数作原数反序数果数等反序数称称数编写程序采递算法求超1993二进制称数
    4931n(n<1000)然数中选出r数进行组合指定格式输出组合结果例:n5r3时10种组合运行程序面格式输出:
               123
                 4
                 5
                34
                 5
                45
               234
                 5
                45
               345
    请递算法实现
    494键盘输入十整数合排序法输入数序进行排序排序结果输出
    495编写程序读入符号结束长度20字节英文句子检查否回文(正读反读样考虑空格标点符号)例:
    读入句子:MADAM I'M ADAM 回文输出:YES
    读入句子:ABCDBA) 回文输出:NO
    496编写程序中包括函数函数功:长度N 字符串第K字符起删M字符组成长度NM新字符串(中NM<80K497编写函数通指针字符串反
    498编写函数insert(s1s2ch)实现字符串s1中指定字符ch位置处插入字符串s2
    499编写程序输入两行字符串连接串中全部空格移串首输出
    4100编写程序输入字符串分统计字符串中包含字符字符数量:输入字符串: abcedabcdcd
    输出:a2 b2 c3 d3 e1
    4101利结构:struct complx
    { int real
    int im
    }
    编写求两复数积函数cmult利该函数求列复数积:
    ⑴ (3+4i)×(5+6i) ⑵ (10+20i)×(30+40i


    4102编写成绩排序程序学生序号输入学生成绩分数高低序输出学生名次该名次分数相名次数学号名次学号输出行中行输出10学号


    4103编写程序实现输入时间屏幕显示秒时间显示格式HHMMSS程序需处理三种特殊情况:
    ⑴ 秒数加160秒数恢复0分钟数增加1
    ⑵ 分钟数加160分钟数恢复0时数增加1
    ⑶ 时数加124时数恢复0


    4104编写程序键盘输入3学生数存入文件student然文件中读出数显示屏幕


    4105编写程序键盘输入行字符串中写字母全部转换成写字母然输出磁盘文件test中保存


    4106编写程序读入磁盘C语言源程序文件test8c删程序中注释显示
    编写程序题参考答案
    41参考答案:
    #include
    main( )
    { int year
    float moneyratetotal * money金 rate月利率 total利合计*
    printf(Input money and year )
    scanf(fd &money &year) * 输入金存款年限 *
    if(year1) rate000315 * 根年限确定利率 *
    else if(year2) rate000330
    else if(year3) rate000345
    else if(year5) rate000375
    else if(year8) rate000420
    else rate00
    totalmoney + money * rate * 12 * year * 计算期利合计 *
    printf( Total 2f\n total)
    }
    42参考答案:
    #include
    main( )
    { int year month days
    printf(Enter year and month)
    scanf(dd &year &month)
    switch (month)
    { case 1 case 3 case 5 case 7 case 8 case 10 case 12
    days31 break * 处理月 *
    case 4 case 6 case 9 case 11
    days30 break * 处理月 *
    case 2 if(year40&&year1000 || year4000)
    days29 * 处理闰年月 *
    else days28 * 处理闰年月 *
    break
    default printf(Input error\n) * 月份错误 *
    days0
    }
    if( days0 )
    printf(d d is d days\n year month days)
    }
    43参考答案:
    #include
    main ( )
    { float data1 data2 * 定义两操作数变量 *
    char op * 操作符 *
    printf(Enter your expression)
    scanf(fcf &data1 &op &data2) * 输入表达式 *
    switch(op) * 根操作符分进行处理 *
    { case '+' * 处理加法 *
    printf(2f+2f2f\n data1 data2 data1+data2) break
    case '' * 处理减法 *
    printf(2f2f2f\n data1 data2 data1data2) break
    case '*' * 处理法 *
    printf(2f*2f2f\n data1 data2 data1*data2) break
    case '' * 处理法 *
    if( data20 ) * 数0 *
    printf(Division by zero\n)
    else
    printf(2f2f2f\n data1 data2 data1data2)
    break
    default * 输入运算符 *
    printf(Unknown operater\n)
    }
    }
    44分析:印图形两重循环实现
    图形重复n行采循环结构实现循环n次循环体部印行'*'号述思路表示:
    for(i1i印行'*'号
    行n'*'号采循环结构实现n次循环循环部格式输出语句印'*'号:
    for(j1jprintf(*)
    述思路实现印矩形
    参考答案:
    main()
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1jprintf(*)
    printf(\n)
    }
    }
    45分析:图形题区行先印空格然印n'*'号题第层循环体印'*'号循环前面增加循环印空格行空格数逐行减少第层循环控制变量i逐行增1固定值数减i实现空格数控制题中固定值变量n
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1jprintf( )
    for(j1jprintf(*)
    printf(\n)
    }
    }
    46分析:题题区行'*'数量逐行减少题控制空格数思路控制'*'号数请注意行'*'数奇数
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1jprintf( )
    for(j1j<2*i1j++)
    printf(*)
    printf(\n)
    }
    }
    47分析:题图形第3题图形垂直反转编程变换思路图形中第i行(1≤i≤n)需输出2ni字符中前面i1字符空格面字符'*'号思路编写出程序
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d &n)
    for( i1i{ for( j1j<2*nij++ ) * 重复输出图形行中字符 *
    if(jelse printf(*) * 输出面*号 *
    printf(\n)
    }
    }
    48分析:题第3题区仅行'*'数增加n1
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1jprintf( )
    for(j1j<2*i1+(n1)j++)
    printf(*)
    printf(\n)
    }
    }
    49分析:空心图形题基础印'*'号循环进行修改仅循环开始值(j1)循环结束值(j2*(i1)+n)时印'*'号位置印空格种思路行印空格'*'两循环合体考虑判断出需印'*'两位置第行行相应位置外余位置印空格
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1j<2*n+i3j++)
    if(jni+1 || j>ni+1 && (i1||in)) printf(*)
    else printf( )
    printf(*\n)
    }
    }
    410分析:图形理解两空心梯形反连接成利题思路进行输出
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1j<2*ni1j++)
    if(ji) printf(*)
    else printf( )
    printf(*\n)
    }
    for(i1i{ for(j1jif(jni) printf(*)
    else printf( )
    printf(*\n)
    }
    }
                                               
    411分析:题题区印'*'号位置编程时找出应印'*'号位置两循环变量ij行数n关系
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf (d &n)
    for(i1i{ for(j1j<2*nij++)
    if(jni+1 || j>ni+1 && i1) printf(*)
    else printf( )
    printf(*\n)
    }
    for(i1i{ for(j1j<3*(n1)ij++)
    if(ji+1 || j>i+1 && in1) printf(*)
    else printf( )
    printf(*\n)
    }
    }
    412参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1jif(jni+1 || i1 || in) printf(*)
    else printf( )
    printf(\n)
    }
    }
    413参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n )
    scanf(d &n)
    for(i1i{ for(j1jif(j1 || jni+1) printf(* )
    else printf( )
    printf(\n)
    }
    for(i1i{ for(j1jif(j1 || ji+1) printf(* )
    else printf( )
    printf(\n)
    }
    }
    414参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n )
    scanf(d&n)
    for(i1i{ for(j1jif(j1 || ji || jn) printf(*)
    else printf( )
    printf(\n)
    }
    }
    415参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n )
    scanf(d&n)
    for(i1i{ for(j1jif(j>ni) printf(*)
    else printf( )
    printf(\n)
    }
    for(i1i{ for(j1j<2*ni1j++)
    if(j>i) printf(*)
    else printf( )
    printf(\n)
    }
    }
    416参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n )
    scanf(d&n)
    for(i1i{ for(j1jif(jni+1) printf(*)
    else printf( )
    printf(*\n)
    }
    }
    417分析:首先图形进行设计坐标X轴Y轴分应屏幕列行正弦函数周期0~360度步长定义10度印时换行等函数变量增加10度屏幕列宽80函数值0应屏幕第40列sin(x)值1~1变换成列数0中心30~30应屏幕第10~70列设计程序时控制换行变量i10正弦函数X值调库函数sin()求出函数值30输出列宽屏幕第40列0点加40应屏幕显示点
    参考答案:
    #define PAI 314159
    #include
    main( )
    { double x
    int yiyy
    for(i1i<80i++) * 印图形第行 *
    if(i40) printf(*) * i控制印列位置 * else printf()
    printf(\n)
    for(x100x<3600x+10) * 10度360度 *
    { y 40+30*sin(x*PAI1800) * 计算应列 *
    yy 40>y 40 y * 行印字符总数 *
    for (i1i{ if(iy) printf(*) * i控制印列位置 *
    else if(i40) printf(|) * 印中心竖线 *
    else printf( )
    }
    printf(\n)
    }
    }
    418分析:首先设计屏幕图形果预计圆形屏幕印20行定义圆直径20半径10圆方程X2×Y2R2图形中心开始印边开始Y10变化10根方程求出X求X值根屏幕行宽进行必调整应印屏幕位置
    参考答案:
    #include
    main( )
    { double y
    int xm
    for(y10y>10y) * 圆半径10 *
    { m 25 * sqrt(100y*y) * 计算行y应列坐标m *
    for(x1x<30mx++)
    printf( ) * 输出圆左侧空白 *
    printf(*) * 输出圆左侧 *
    for(x<30+mx++)
    printf( ) * 输出圆空心部分 *
    printf(*\n) * 输出圆右侧 *
    }
    }
    419参考答案:
    #include
    #include
    main( )
    { double y
    int x m n yy
    for( yy0yy<20yy++)
    { y 01*yy
    m acos(1y)*10
    n 45 * (y1)+31
    for( x0x<62x++ )
    if( xm && xn ) printf(+)
    else if(xn) printf(+)
    else if(xm || x62m) printf(*)
    else printf( )
    printf(\n)
    }
    }
    420分析:编程关键两点控制输出行列方面容前面已叙述点输出数字行列关系题第行输出数字恰列数第二行起行数字均行增n
    参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n )
    scanf(d&n)
    for(i1i{ for(j1jprintf(4d(i1)*n+j)
    printf(\n)
    }
    }
               

    421分析:题关键找输出数字行列数关系审查图形中行中数字关系发现右边数字前面数字差逐次增1列数字然样关系编程关键转换找行左方第数字然利行列循环变量进行运算位置数字aij表示第i行第j列数字a111第i行第列数字推出第i+1行第列数字ai+11 ai1+i样第j列推出第j+1列数字aij+1 aij+i+j外j参考答案:
    main( )
    { int ijmnk1 * k第列元素值 *
    printf(Please enter m )
    scanf(d&m)
    for(i1i{ nk * n第i行中第1元素值 *
    for(j1j{ printf(3dn)
    n n+i+j * 计算行元素值 *
    }
    printf(\n)
    kk+i * 计算行中第1元素 *
    }
    }
    422参考答案:
    main( )
    { int ijn
    printf(\nPlease Enter n )
    scanf(d&n)
    for(i1i{ for(j1jif(jelse printf(3dji+1)
    printf(\n)
    }
    }
    423分析:方案解决问题开阔读者思路里出两参考答案中第二答案递方法
    方案:
    首先寻找数字输出数字行列关系
    圈四边边数字算边开始外圈边数字数n1边外边边少两数字
    数字行行输出分析行数字规律实际没数字三种规律:位角线间数字半图增半图减角线左侧列右侧左侧增加圈数字例数字39左侧22较数字39圈边4数字左侧22加圈16数字加139理角线右侧列减少圈数字数
    根分析两角线图形分四区域图示图中黑斜体字角线数字
    1 2 3 4 5 6 7
    24 25 26 27 28 29 8
    23 40 41 42 43 30 9
    22 39 48 49 44 31 10
    21 38 47 46 45 32 11
    20 37 36 35 34 33 12
    19 18 17 16 15 14 13
    叙述方便称四区域左右区设ij行列号n图形总行数满足区范围区:j>i jni+1 左区:ji j>ni+1
    现问题果知道行区域开始第位置数字然该区续数字利前面分析规律
    右区开始行第数字易求出4*(n1)i+1续行前数字差4*[n1(j1)*2]+1中方括号边数字数
    角线数字分区点角线相数字然相差圈数字数读者行分析计算公式
    右区开始第数字区结束时数字规律求出
    述程序变量s保存分区角线数字
    参考答案:
    main()
    { int ijknsmt
    printf(Please enter n)
    scanf(d&n)
    for(i1i{ s(i<(n+1)2) 13*(n(ni)*21)+1
    m(i<(n+1)2) ini+1 * m1外层圈数 *
    for(k1kfor(j1j{ if(j>ni+1 && jts(j(ni))+1
    if(j>i && jts+ji
    if(j>i && j>ni+1) * 右区 *
    t4*(n2*(nj+1))+1
    if(j{ if(j1) t4*(n1)i+2
    else t+4*(n2*j+1)+1
    }
    printf(4dt)
    }
    printf(\n)
    }
    }
    方案二:
    根题图形特点构造递算法边长N图形分两部分:第部分外层框架第二部分中间边长N2图形
    边长N正方型中元素行号i(1≤i≤N)列号j(1≤j≤N)第1行第1列元素表示a11(a111):
    外层框架数学模型描述:
    边: a1ja11+j1 (j≠1)
    右边: aiNa11+N+i2 (i≠1)
    边: ai1a11+4Ni3 (i≠1)
    左边: aNja11+3N2j (j≠1)
    层边长N2图形数学模型描述:
    左角元素:aiiai1i1+4(N2i1) (i>1)
    令:aijfun(ai1i1+4(N2i1):i<(N+1)2j<(N+1)2时minMIN(ij):
    a22 fun(a11 min min n)
    aijfun(a22 imin+1 jmin+1 n2*(min1) )
    根述原理分推导出ij取值范围时min取值根述递公式参考程序
    参考答案二
    #include
    #define MIN(xy) (x>y) (y) (x)
    fun ( int a11 int i int j int n)
    { int min a22
    if( ij && i<1 ) return(a11)
    else if( ij && i<(n+1)2) return( fun(a11i1i1n)+4*(n2*i+3))
    else if( i1 && j1) return( a11+j1 )
    else if( i1 && jn) return( a11+n+i2 )
    else if( i1 && j1 ) return ( a11+4*n3i )
    else if( in && j1 ) return ( a11+3*n2j )
    else
    { if(i>(n+1)2 && j>(n+1)2) min MIN(ni+1nj+1)
    else if(i<(n+1)2 && j>(n+1)2) min MIN(inj+1)
    else if(i>(n+1)2 && j<(n+1)2) min MIN(ni+1j)
    else min MIN(ij)
    a22 fun(a11minminn)
    return(fun(a22 imin+1 jmin+1 n2*(min1)))
    }
    }
    main()
    { int a111 i j n
    printf(Enter n)
    scanf(d &n)
    for(i1 i{ for(j1 jprintf(4d fun(a11ijn) )
    printf(\n)
    }
    }
    424分析:题关键找输出数字aij行列数ij关系图形分四区域图:
    3 3 3 3 3
    3 2 2 2 3
    3 2 1 2 3
    3 2 2 2 3
    3 3 3 3 3 (图n5)

    左区域i<(n+1)2j<(n+1)2时输出数字(n+1)2i+1(n+1)2j+1中者记max{(n+1)2i+1(n+1)2j+1}右区i<(n+1)2j>(n+1)2时 输出数字max{(n+1)2i+1jn2}左区i>(n+1)2j<(n+1)2时输出数字max{in2(n+1)2j+1}右区i>(n+1)2j>(n+1)2时输出数字max{in2jn2}
    参考答案:
    #define max(xy) ((x)>(y)(x)(y))
    main( )
    { int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1jif(i<(n+1)2)
    if(j<(n+1)2)
    printf(4dmax((n+1)2i+1(n+1)2j+1))
    else
    printf(4dmax((n+1)2i+1jn2))
    else if(j<(n+1)2)
    printf(4dmax(in2(n+1)2j+1))
    else
    printf(4dmax(in2jn2))
    printf(\n)
    }
    }
    425分析:前面已见称图形左右称图形垂直中心线数字恰行号行位图形垂直中心线左方数字逐渐增加右方逐渐减ji分区标志左方输出数字列数j右方数字i开始逐步减1
    参考答案:
    main()
    { int ij
    for(i1i<9i++)
    { for(j1j<9ij++) printf( )
    for(j1jfor(ji1j>1j) printf(2dj)
    printf(\n)
    }
    }
    426分析:类输出字符图形输出数字图形考虑似字符ASCII码整数字符码值变化程中应该注意应该判断码值否超出字符范围进行必处理保持程序简洁题没考虑问题题里问题进行处理
    参考答案:
    main( )
    { char c'Z'
    int ijn
    printf(\nPlease Enter n)
    scanf(d&n)
    for(i1i{ for(j1jif(jni+1) printf(cc)
    else printf( )
    printf(c\nc)
    }
    for(i1i{ for(j1j<2*(n1)ij++)
    if(ji+1) printf(cc)
    else printf( )
    printf(c\nc)
    }
    }
    427分析:题题相区输出时字符ASCII码值变化图形中间行时行两字符相程序考虑输入字符时设计循环保证输入英文字母字符变化进行处理程序中条件运算字符码值增加程中首先判断写写字符然判断字符码值否超出英文字母z(Z)果超出重新赋a(A)输出图象半部分时ASCII码值减少样思路进行判断判断字符写(条件语句第判断)时两值请读者行思考什值否?
    参考答案:
    main( )
    { char c
    int ijn
    do
    { printf(\nPlease Enter nchar)
    scanf(dc&n&c)
    }while(c<'A'||c>'Z'&&c<'a'||c>'z')
    for(i1i{ for(j1jif(jni+1) printf(cc)
    else printf( )
    printf(c\nc++)
    cc<'a'(c>'Z''A'c)(c>'z''a'c)
    }
    c2
    cc<'Z'(c<'A''Z'c)(c<'a' 'z'c)
    for(i1i{ for(j1j<2*(n1)ij++)
    if(ji+1) printf(cc)
    else printf( )
    printf(c\nc)
    cc<'Z'(c<'A''Z'c)(c<'a' 'z'c)
    }
    }
    428参考答案:
    #define max(xy) ((x)>(y)(x)(y))
    main( )
    { char c
    int ijn
    do
    { printf(\nPlease Enter nchar)
    scanf(dc&n&c)
    }while(c<'A'||c>'Z'&&c<'a'||c>'z')
    for(i1i{ for(j1jif(i<(n+1)2)
    if(j<(n+1)2)
    printf( ccmax((n+1)2i+1(n+1)2j+1)+(n+1)2)
    else
    printf( ccmax((n+1)2i+1jn2)+(n+1)2)
    else
    if(j<(n+1)2)
    printf( ccmax(in2(n+1)2j+1)+(n+1)2)
    else
    printf( ccmax(in2jn2)+(n+1)2)
    printf(\n)
    }
    }
    429参考答案:
    #define max(xy) ((x)>(y)(x)(y))
    main( )
    { char c
    int ijn
    do
    { printf(\nPlease Enter nchar)
    scanf(dc&n&c)
    }while(c<'A'||c>'Z'&&c<'a'||c>'z')
    for(i1i{ for(j1jif(i<(n+1)2)
    if(j<(n+1)2)
    printf( ccmax((n+1)2i+1(n+1)2j+1)+1)
    else
    printf( ccmax((n+1)2i+1jn2)+1)
    else
    if(j<(n+1)2)
    printf( ccmax(in2(n+1)2j+1)+1)
    else
    printf( ccmax(in2jn2)+1)
    printf(\n)
    }
    }
    430参考答案:
    #include
    main()
    { int i j
    for(i1i<10i++)
    printf(4di)
    printf(\n\n)
    for(i1i<10i++)
    { for(j1j<10j++)
    if(jelse printf( 4d i*j)
    printf(\n)
    }
    }

    431参考答案:
    #include
    main( )
    { int ij
    for(i1i<10i++)
    printf(4di)
    printf(\n\n)
    for(i1i<10i++)
    { for(j1j<10j++)
    if(j<10i) printf( )
    else printf( 4d (10i)*j)
    printf(\n)
    }
    }
    432参考答案:
    #include mathh
    main()
    { int flag0
    float abcs
    do
    { printf(Please enter a b c)
    scanf(fff&a&b&c)
    if(a>b+c || b>a+c || c>a+b)
    flag1
    }while(flag)
    s(a+b+c)2
    printf(Sfssqrt((sa)*(sb)*(sc)))
    }
    433参考答案:
    #include
    main( )
    { int j
    long n * 长整型变量免超出整数表示范围 *
    printf(Please input number)
    scanf(ld &n)
    for(j999j>100j)* 取值范围999100间j *
    if(nj 0 ) * 够整jj约数输出结果 *
    { printf(The max factor with 3 digits in ld is d\nnj)
    break * 控制退出循环 *
    }
    }
    434参考答案:
    #define E 0000001
    main()
    { float xy1s0
    printf(Please enter x)
    scanf(f&x)
    while(1y>E)
    { ss+1y
    yy*x
    }
    printf(Sf\ns)
    }
    435参考答案:
    #include
    main( )
    { int class1 class2 class3
    char ch
    class1class2class30 * 初始化分类计数器 *
    do
    { chgetch( )
    switch(ch)
    { case '0' case '1' case '2' case '3' case '4'
    case '5' case '6' case '7' case '8' case '9'
    class1++ break * 分类1计数 *
    case '+' case '' case '*' case '' case '' case ''
    class2++ break * 分类2计数 *
    default class3++ break * 分类3计数 *
    }
    }while (ch '\\') * 字符'\'C程序中转义符'\\' *
    printf(class1d class2d class3d\n class1 class2 class3)
    }
    436分析:程序关键样判断单词单词定义已知空格制表符换行符分隔开两字符间没空格制表符换行符认单词中两字符
    参考答案:
    #define EOF 1
    #define YES 1
    #define NO 0
    #include
    main( ) * 输入行字符单词进行计数统计 *
    { int c nl nc nw inword
    inwordNO * inwordNO 已处理字符空格\t\n *
    * inwordYES 已处理字符空格\t\n *
    nlncnw0 * 行字符字计数器置0 *
    while((cgetchar()) EOF)
    { ++nc * 进行字符计数 *
    if(c'\n' )
    ++nl * 进行行计数 *
    if(c'\t'||c'\n'||c' ')
    inwordNO* 果读入字符空格\t\n置inwordNO *
    else * 读入字符空格\t\n *
    if(inwordNO) * 果前字符空格\t\n *
    { inwordYES * 读入字符单词第字符*
    ++nw *置inwordYES进行单词计数 *
    }
    }
    printf(Linesd\nWordsd\nCharsd\nnlnwnc) * 输出结果 *
    }
    437参考答案:
    #define E 0000001
    #include mathh
    main()
    { int ik1
    float xyt1sr1
    printf(Please enter x)
    scanf(f&x)
    for(sxyxi2fabs(r)>Ei++)
    { tt*(i1)
    yy*x*x
    kk*(1)
    rk*yt(2*i1)
    ss+r
    }
    printf(Sf\ns)
    }
    438参考答案:
    main()
    { int i
    float s0
    for(i1i<100i++)
    ss+i
    for(i1i<50i++)
    ss+i*i
    for(i1i<10i++)
    ss+10i
    printf(Resultf\ns)
    }
    439参考答案:
    main()
    { int i
    float s1
    for(i1i<20 && 10i(i+1)>0001i++)
    ss+10i(i+1)
    printf(Resultf id\nsi)
    }
    440参考答案:
    #include
    main()
    { float xepssy0y0t
    int nj
    printf(Enter x & eps)
    scanf(ff &x &eps)
    ntj1
    sx
    do
    { y0y
    if(n20) yyst
    else yy+st
    s * x*x * 求x方 *
    t * (j+1)*(j+2) * 求n *
    j + 2
    n++
    }while( fabs(y0y) > eps ) * 控制误差 *
    printf(sin(f)f\nxsin(x)) * 输出标准sin(x)值 *
    printf(dsin(f)f\nnxy) * 输出计算似值 *
    }
                                             
    441参考答案:
    main( )
    { int ijnuma[10]
    for(i0i<10i++)
    { printf(Enter No d i+1)
    scanf(d&num)
    for(ji1j>0&&a[j]>numj)
    a[j+1]a[j]
    a[j+1]num
    }
    for(i0i<10i++)
    printf (Nodd\n i+1 a[i])
    }
    442参考答案:
    main()
    { int n
    printf(Please enter n)
    scanf(d&n)
    while(n>0)
    { printf(dn10)
    nn10
    }
    }
    443参考答案:
    main()
    { int in
    long s10s20
    printf(Please enter N)
    scanf(d&n)
    if(n>0)
    for(ini<2*ni++)
    s1s1+i
    else
    for(ini>2*ni)
    s1s1+i
    in
    if(i>0)
    while(i<2*n)
    s2s2+i++
    else
    while(i>2*n)
    s2s2+i
    printf(Result1ld result2ld\ns1s2)
    }
    444分析:题意阶梯数满足面组余式:
    x≡1 (mod2)
    x≡2 (mod3)
    x≡4 (mod5)
    x≡5 (mod6)
    x≡0 (mod7)
    参考答案:
    #include
    main()
    { int i1 * i设阶梯数 *
    while( ((i21)&&(i32)&&(i54)&&(i65)&&(i70)) )
    ++i * 满足组余式判 *
    printf(Staris_numberd\n i )
    }
    445参考答案:
    main( )
    { int ina
    for(i0 i++)
    { if(i81)
    { ni8
    if(n81)
    { nn8
    if(n87) an8
    }
    }
    if(i174)
    { ni17
    if(n1715) nn17
    }
    if(2*an)
    { printf(resultd\ni)
    break
    }
    }
    }
    446分析:二分法基原理函数实根函数曲线应根点x轴交点根附左右区间函数值符号应相反利原理逐步缩区间范围保持区间两端点处函数值符号相反逐步逼函数根
    参考答案:
    #include stdioh
    #include mathh
    main()
    { float x0 x1 x2 fx0 fx1 fx2
    do
    { printf(Enter x1x2)
    scanf(ff &x1 &x2)
    fx12*x1*x1*x14*x1*x1+3*x16 * 求出x1点函数值fx1 *
    fx22*x2*x2*x24*x2*x2+3*x26 * 求出x2点函数值fx2 *
    }while (fx1*fx2>0) * 保证指定范围根fx符号相反 *
    do
    { x0(x1+x2)2 * 取x1x2中点 *
    fx02*x0*x0*x04*x0*x0+3*x06 * 求出中点函数值fx0 *
    if((fx0*fx1)<0) * fx0fx1符号相反 *
    { x2x0 * x0点代x2点 *
    fx2fx0
    }
    else
    { x1x0 * 否x0点代x1点 *
    fx1fx0
    }
    }while(fabs((double)fx0)>1e5) * 判断x0点函数x轴 距离 *
    printf(x62f\n x0)
    }
    447分析:做圆接4边形圆心4边形顶点连接形成4三角形求出三角形面积(r22)现知道三角形面积两边长(均半径arbr)公式:Ss(sa)(sb)(sc)求出第三边c接4边形换接8边形原三角形分二c2三角形高面积求出三角形分二……三角形面积求出时接边形面积求出
    参考答案:
    main()
    { int n4
    double r10scrcp
    sr*r2
    do
    { crn*s
    p16*r*r*r*r64*s*s
    c(4*r*rsqrt(p))2
    csqrt(c)
    sc*r4
    n2*n
    }while(n*scr>10e10)
    printf(PAIlf\ncrrr)
    }
    448分析:根题意总计鱼进行五次均分配次分配时策略相扔掉条剩鱼正分五份然走份余四份假定鱼总数xx题目求进行五次分配:x15整余鱼4×(x1)÷ 5x满足述求x题目解
    参考答案:
    main( )
    { int nixflag1 * flag控制标记 *
    for(n6flagn++) * 采试探方法令试探值n逐步加 *
    { for(xni1flag && i<5i++) * 判断否 *
    if((x1)5 0) x4*(x1)5 * 求进行5次分配 *
    else flag0 * 分配置标记flag0退出分配程 *
    if(flag) break * 分配程正常找结果退出试探程 *
    else flag1 * 否继续试探数 *
    }
    printf(Total number of fish catched d\n n) * 输出结果 *
    }
    449分析:题目求造出前两位数相两位数相相互间整数然判断该整数否整数方
    参考答案:
    #include mathh
    main()
    { int ijkc
    for(i1i<9i++) * i车号前二位取值 *
    for(j0j<9j++) * j车号二位取值 *
    if( ij ) * 判断两位数字否相异 *
    { ki*1000+i*100+j*10+j * 计算出整数 *
    for( c31c*cif(c*ck)
    printf(Lorry_No is d \n k) * 印结果 *
    }
    }
    450分析:穷举法解决类问题设取红球数i白球数j取黑球数8ij 题意红球白球数取值范围0~3红球白球数确定条件黑球数取值应8ij<6
    参考答案:
    main( )
    { int ijcount0
    printf( RED BALL WHITE BALL BLACK BALL\n)
    printf(\n)
    for(i0i<3i++) * 循环控制变量i控制取红球数0~3 *
    for(j0j<3j++) * 循环控制变量j控制取白球数0~3 *
    if((8ij)<6)
    printf(2d d d d\n++count ij8ij)
    }

    451分析:题采穷举法
    参考答案:
    main()
    { int xyzj0
    for(x0 x<33 x++)
    for(y0 y<(1003*x)2 y++)
    { z100xy
    if( z20 && 3*x+2*y+z2100)
    printf(2dl2d m2d s2d\n++jxyz)
    }
    }
    452分析:题采穷举法
    参考答案:
    main( )
    { int f1f2f5count0
    for(f50f5<20f5++)
    for(f20f2<(100f5*5)2f2++)
    { f1100f5*5f2*2
    if(f5*5+f2*2+f1100)
    printf(No2d >> 5 4d 2 2d 1 2d\n++countf5f2f1)
    }
    }
    453分析:题采穷举法
    参考答案:
    main( )
    { long int ijkcount0
    for(i1i*i<200i++)
    for(j1j*j<200j++)
    for(k1k*k<200k++)
    if(i*i(j*j+k*k))
    { printf(\nA^2B^2+C^2 4ld4ld4ldijk)
    count++
    }
    printf(\ncountldcount)
    }
    454分析:题采穷举法设整数N千百十位ijkm取值均0~9满足关系式:(i*103+j*102+10k+m)*9(m*103+k*102+10j+i) ijkm构成N
    参考答案:
    #include
    main( )
    { int i
    for(i1002i<1111i++) * 穷举四位数值 *
    if(i10*1000+i1010*100+i10010*10+i1000i*9 )
    printf(The number satisfied states condition is d\n i)
    * 判断反序数否原整数9倍输出 *
    }
    455分析:题采穷举法
    参考答案:
    main()
    { int ijnka[16]{0}
    for(i1i<1993i++)
    { nik0
    while(n>0) * 十进制数转变二进制数 *
    { a[k++]n2
    nn2
    }
    for(j0jif(a[j]a[kj1]) break
    if(j>k)
    { printf( d i)
    for(j0jprintf(2da[j])
    printf(\n)
    }
    }
    }
    456分析:类似问题计算机算法角度说较简单采常见穷举法解决程序中采循环穷举字母代表数字然字母代表数字转换相应整数代入算式验证算式否成立解决问题
    参考答案:
    #include
    main( )
    { int pear
    for(p1p<9p++) * 19穷举字母p全部取值 *
    for(e0e<9e++) * 09穷举字母e全部取值 *
    if(pe)
    for(a1a<9a++) * 09穷举字母a全部取值 *
    if(ap && ae)
    for(r0r<9r++) * 09穷举字母r *
    if(rp && re && ra * 四字母互相 *
    && p*1000+e*100+a*10+r(a*100+r*10+a)
    p*100+e*10+a )
    { printf( PEAR dddd\n p e a r)
    printf( ARA ddd\n a r a)
    printf( \n)
    printf( PEA ddd\n p e a)
    }
    }
    457参考答案:
    main()
    { int inka[3]b[3]
    for(i248i<343i++)
    { for(nik0n>0n7)
    a[k++]n7
    for(nik0n>0n9)
    b[k++]n9
    if(k3)
    for(n0nif(a[n]b[kn1])
    break
    if(nk)
    printf(d\ni)
    }
    }
    458参考答案:
    main()
    { int ijkmerror
    for(i6i<2000i+2)
    { error1
    for(j2j{ for(k2kif(jk0) * j够数整素数 *
    break
    if(k>j) * j素数 *
    { mij
    for(k2kif(mk0)
    break
    if(k>m) * m素数输出结果 *
    { printf(4d 4d + 4d\nijm)
    error0
    break }
    }
    }
    if(error)
    printf(4d error)
    }
    }
    459分析:采穷举法次取1000数(设i)i位数字分解阿姆斯特朗数性质进行计算判断
    参考答案:
    #include
    main()
    { int itka[4]{0}
    printf (There are following Armstrong number smaller than 1000\n)
    for(i2i<1000i++) * 穷举判定数i取值范围1~1000 *
    { for(t0k1000k>10t++) * 截取整数i位(高位低位) *
    { a[t](ik)(k10)   * 分赋a[0]~a[3] *
    k 10
    }
    if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]+a[3]*a[3]*a[3]i)
    printf( d i) * 判断i否阿姆斯特朗数*
    * 满足条件输出 *
    }
    }
    460参考答案:
    main( )
    { int jknm
    printf(Please enter n)
    scanf(d&n)
    for(j2j{ for(k2kif(jk0) break * j够数整素数 *
    if(k>j) * j素数 *
    { mnj
    for(k2kif(mk0) break
    if(k>m) * m素数输出结果 *
    { printf(4d 4d + 4d\nnjm)
    break
    }
    }
    }
    }
                                               
    461分析:亲密数定义判断数a否亲密数计算出a全部子累加b计算b全部子累加nn等a判定ab亲密数计算数a子算法:a次i(i1~a2)进行模运算模运算结果等0i a子否结束a子计算
    参考答案:
    #include
    #include
    main( )
    { int a i m n
    printf(Friendlynumbers pair samller than 3000\n)
    for(a1a<3000a++) * 穷举3000全部整数 *
    { for(m0i1iif((ai))
    m+i * 计算m子子存n *
    for(n0i1iif((mi))
    n+i
    if(na && aprintf( 4d~4dam)
    }
    462参考答案:
    #include
    #include
    main( ) * 猜数程序 *
    { int magic * 计算机想数 *
    int guess * 猜数 *
    int counter
    magicrand( ) * 通调机函数意想数 *
    guessmagic1 * 初始化变量guess值 *
    counter0 * 计数器清零 *
    while(magic guess)
    { printf(guess the magic number)
    scanf(d &guess)       * 输入猜数 *
    counter++
    if(guess>magic)
    printf(**** Wrong **** too hight\n)
    else if(guessprintf(**** Wrong **** too low\n)
    }
    printf(**** Right ****\n)
    printf(guess counter is d\n counter)
    }
    463分析:直接计算阶结果显然超出整型数范围题关键减少计算中数规模注意计算程中出现0先行统计0数然0结果中移外结果仅保存位数位数会0数产生影响
    参考答案:
    main()
    { int in0
    long s1
    for(i1i<1000i++)
    { ss*i
    while(s100)
    { ss10
    n++
    }
    ss10
    }
    printf(ndsd\nns)
    }
    464参考答案:
    main()
    { int ijb[3][2]
    int a[2][3]{{123}{456}}
    for(i0i<1i++)
    for(j0j<2j++)
    b[j][i]a[i][j]
    for(i0i<2i++)
    { for(j0j<1j++)
    printf(d b[i][j])
    printf(\n)
    }
    }
    465参考答案:
    main()
    { int icount0a[11]{01028221641061420}
    while(1)
    { for(i1i<10i++)
    a[i1]a[i1]2+a[i]2
    a[10]a[10]2+a[0]
    for(i1i<10i++)
    if(a[i]21) a[i]++
    for(i1i<10i++)
    if(a[i]a[i+1]) break
    if(i10) break
    else
    { a[0]0
    count++
    }
    }
    printf(countd numberd\ncounta[1])
    }
    466参考答案:
    main()
    { int ijs10s21a[5][5]
    for(i0i<5i++)
    for(j0j<5j++)
    { printf(d d ij)
    scanf(d&a[i][j])
    }
    for(i0i<5i++)
    { for(j0j<5j++)
    printf(5da[i][j])
    printf(\n)
    }
    j0
    for(i0i<5i++)
    { s1s1+a[i][i]
    if(i20) s2s2*a[i][i]
    if(a[i][i]>a[j][j]) ji
    }
    printf(SUNd\nACCOMd\na[d]d\ns1s2ja[j][j])
    }
    467参考答案:
    #include stdioh
    main()
    { int in0a[4]{0}
    printf(Please enter a digit)
    for(i0i<4 && (a[i]getchar())'\n'i++)
    for(i0i<4i++)
    if(a[i]>48&&a[i]<57) a[i]a[i]48
    else if(a[i]>65&&a[i]<69) a[i]a[i]55
    else if(a[i]>97&&a[i]<102) a[i]a[i]87
    else printf(input Error)
    for(i0i<4i++)
    nn*16+a[i]
    printf(dn)
    }
    468参考答案:
    main()
    { int ink16a[16]{0}
    printf(Please enter a digit)
    scanf(d&n)
    while(n>0) * 十进制数转变二进制数 *
    { a[k]n2
    nn2
    }
    for(i0i<16i++)
    printf(2da[i])
    }
    469参考答案:
    #include
    main()
    { int ijmska[100]
    for(i1i<100i++ ) * 寻找1000完数 * { mis0k0
    while(m>0) * 寻找i子 *
    { for(j1jif(mj0)
    { ss+j
    mmj
    a[k++]j
    }
    if(j>m) break
    }
    if(s0&&is+m)
    { a[k++]m
    for(j0jprintf(4da[j])
    printf(4d\ni)
    }
    }
    }
    470参考答案:
    main()
    { int ijknm1r1a[2][100]{0} printf(Please enter n)
    scanf(d&n)
    for(i0i{ printf(a[d] i)
    scanf(d&a[0][i])
    }
    while(m{ for(i0i{ if(a[1][i]0) * 已登记数空 *
    continue
    ki
    for(jijif(a[1][j]0 && a[0][j]a[1][k]r++ * 记录名次r名次 *
    m++ * 登记数增1 *
    for(j0jif(a[1][j]0 && a[0][j]a[0][k])
    { a[1][j]a[1][k]
    m++
    }
    break
    }
    }
    for(i0iprintf(a[d]d d\nia[0][i]a[1][i])
    }

    471参考答案:
    #include
    main()
    { int ijk0m2sr0a[500] printf(4d m)
    for(i3i<2000i++ )
    { for(j2jif(ij0) break
    if(ji)
    { printf(4d i )
    a[k++]im
    mi
    }
    }
    for(i0i{ s0
    for(jij{ ss+a[j]
    if(s>1898) break
    }
    if(s1898)
    r++
    }
    printf(\nresultd\nr)
    }
    472分析:问题思路介绍种简单快速算法
    首先求出三位数中包含0某整数方三位数样三位数然满足条件三位数进行组合选出三三位数九数字没重复程序中寻找满足条件三位数程该三位数进行数字分解程结合起
    参考答案:
    #include
    main( )
    { int a[20]num[20][3]b[10] * a 存放满足条件三位数 *
    * num:满足条件三位数分解数字b 时工作 *
    int ijkmntflag
    printf(The 3 squares with 3 different digits each are\n)
    for(j0i11i<31i++) * 求出方数三位数 *
    if(i10 0) * 10倍数分解三位数 *
    { ki*i * 分解该三位数中数字 *
    num[j+1][0]k100 * 百位 *
    num[j+1][1]k1010 * 十位 *
    num[j+1][2]k10 * 位 *
    if((num[j+1][0]num[j+1][1] || num[j+1][0]num[j+1][2]
    || num[j+1][1]num[j+1][2]) )
    * 分解三位数字均相等 *
    a[++j]k * j计数器统计已找满足求三位数 *
    }
    for(i1i{ b[1]num[i][0] * 取第i数三位数字 *
    b[2]num[i][1]
    b[3]num[i][2]
    for(ti+1t{ b[4]num[t][0] * 取第t数三位数字 *
    b[5]num[t][1]
    b[6]num[t][2]
    for(flag0 m1flag&&m<3m++) * flag出现数字重复标记 *
    for(n4flag&&n<6n++) * 判断前两数数字否重复 *
    if(b[m]b[n]) flag1 * flag1数字重复 *
    if(flag)
    for(kt+1k{ b[7]num[k][0] * 取第k数三位数字 *
    b[8]num[k][1]
    b[9]num[k][2]
    * 判断前两数数字否第三数数字重复 *
    for(flag0m1flag&&m<6m++)
    for(n7flag&&n<9n++)
    if(b[m]b[n]) flag1
    if(flag) * 均重复印结果 *
    printf(d d d\na[i]a[t]a[k])
    }
    }
    }
    }
    473参考答案:
    main()
    { int inka[3]b[3]
    for(i248i<343i++)
    { for(nik0n>0n7)
    a[k++]n7
    for(nik0n>0n9)
    b[k++]n9
    if(k3)
    for(n0nif(a[n]b[kn1])
    break
    if(nk)
    printf(d\ni)
    }
    }
    474参考答案:
    #include
    int pos[101]div[101]
    main ()
    { int m n i j
    printf(Please input mn(<0scanf(dd &m&n)
    printf(dd0 m n)
    for(i1i<100i++)
    { pos[m]i
    m*10
    div[i]mn
    mmn
    if(m0)
    { for( j1jbreak
    }
    if(pos[m]0)
    { for( j1jprintf(\nloop startd enddpos[m] i)
    break
    }
    }
    printf(\n)
    }
    475参考答案:
    #include stdioh
    int a[20]b[20]
    main()
    { int t0*m*n*k*jzi0
    printf(Input number 1)
    do
    { a[++t]getchar()'0'
    }while(a[t]38)
    printf(Input number 2)
    do
    { b[++i]getchar()'0'
    }while(b[i]38)
    if(t>i)
    { ma+tnb+ijakbzi
    }
    else
    { mb+ina+tjbkazt
    }
    while(mj)
    { (*(n1))+(*(m)+*n)10
    *m(*m+*n)10
    if (nk+1 && *k1 ) break
    if (nk+1 && *k)
    { n+19*(n1)1
    }
    if (n>k+z && *(n1)1) break
    }
    while (*(j++)38) printf(d*(j1))
    printf(\n)
    }
    476参考答案:
    #include stdioh
    int a[20]b[20]
    main()
    { int t0*m*n*k*jzi0
    printf(Input number 1)
    do
    { a[++t]getchar()'0'
    }while(a[t]38)
    printf(Input number 2)
    do
    { b[++i]getchar()'0'
    }while(b[i]38)
    if(t>i)
    { ma+tnb+ijakbzi
    }
    else
    { mb+ina+tjbkazt
    }
    while(mj)
    { (*(n1))+(*(m)+*n)10
    *m(*m+*n)10
    if(nk+1 && *k1 ) break
    if(nk+1 && *k)
    { n+19*(n1)1
    }
    if(n>k+z && *(n1)1) break
    }
    while(*(j++)38) printf(d*(j1))
    printf(\n)
    }
    477参考答案:
    #include stdioh
    int a[20]b[20]c[40]
    main()
    { int t0*m*n*kfe0*ji0
    printf(Input number 1)
    do
    { a[++t]getchar()'0'
    }while(a[t]38)
    printf(Input number 2)
    do
    { b[++i]getchar()'0'
    }while(b[i]38)
    jc
    for(ma+t1m>a+1me++)
    { jc+e
    for(nb+i1n>b+1n)
    { f*j+*m * *n
    *(j++)f10
    *j+f10
    }
    }
    while(j>c) printf(d*(j))
    printf(\n)
    }
    478数组解决较复杂问题典型题目
    棋盘左图示图中箭头表示棋子[11]点跳[23]点面叙述方便IJ表示棋子起跳点行列号XY表示落子点行列号
    首先讨起跳点坐标求出落子点坐标
    某点起跳棋子八落子点例I3J5点起跳八落子点坐标[45][54][52][41][21][12][14][25]起落点行列坐标分开考虑起点行坐标分列八数相加八落子点行坐标:12211221八数存入数组b:
    b[]{12211221}
    落子点行坐标X起跳点行坐标关系:
    Xb[k]+I 1≤k≤8
    果式计算落子点X坐标值08表示落棋盘外应予舍弃
    理起落点间列坐标关系数组:
    d[]{21122112}
    讨落子点度数问题棋盘中某点说周围8方棋子点落子落子数称度数棋盘点度数图示
    根题意点落子次落子点度数应记0跳度数0点度数相应减1
    根述数组起跳点出发求出数落子点坐标跳棋时底确定落点中呢?确定原落度数少点果落子点中两点度数样度数少时取求出点落子点果改变数组bd中数存放序遇两度数少点先序改变整跳棋路径改变 2 3 4 4 4 4 3 2
    3 4 6 6 6 6 4 3
    4 6 8 8 8 8 6 4
    4 6 8 8 8 8 6 4
    4 6 8 8 8 8 6 4
    4 6 8 8 8 8 6 4
    3 4 6 6 6 6 4 3
    2 3 4 4 4 4 3 2
    面程序中起落子行列关系两维数组合二维数组提高程序读性标0数组元素
    参考程序:
    int base[9][3]{0 0 0 * 起跳点求落脚点基础系数数组 *
    0 1 2
    0 2 1
    0 21
    0 12
    012
    021
    02 1
    01 2 }
    main()
    { int a[9][9]object[9][9]
    int ijkpxymncont
    int minrm1rm2rm01
    for(cont1cont>0)
    { for(i0i<8i++) * 保存点度数数组 清零 *
    for(j0j<8j++)
    a[i][j]0
    rm1base[1][1] * 改变基础数组元素排列序 *
    rm2base[1][2]
    base[1][1]base[rm0][1]
    base[1][2]base[rm0][2]
    base[rm0][1] rm1
    base[rm0][2] rm2
    for(i1i<8i++)
    { for(j1j<8j++) * 计算点度数存入数组a *
    { for(p1p<8p++)
    { xi+base[p][1]
    yj+base[p][2]
    if(x>1&&x<8&&y>1&&y<8)
    a[x][y]++
    }
    printf( da[i][j]) * 输出度数表 *
    }
    printf(\n)
    }
    printf(Please Input start positionlinecolume\n)
    scanf(dd&i&j) * 输入起跳点坐标 *
    for(k1k<63k++) * 求棋盘63落步点 *
    { object[i][j]k * 跳步路径存入数组object *
    min10
    for(p1p<8p++) * 求前起跳点出发8落点 *
    { xi+base[p][1]
    yj+base[p][2]
    if(x>1&&x<8&&y>1&&y<8) * 求出落点棋盘 *
    if(a[x][y]0) * 点没落棋子 *
    { a[x][y] * [ij]点落棋子点度数减1 *
    if(min>a[x][y]) * 判断前点度数否 *
    { mina[x][y] * 保存度数点度数 *
    mx * 保存度数点坐标 *
    ny
    }
    }
    }
    a[i][j]0 * 落棋子[ij]点度数零 *
    im * 已求出度数点次搜寻起跳点 *
    jn
    }
    object[i][j] 64
    for(i1i<8++i) * 输出跳步结果路径 *
    { for(j1j<8j++)
    if(j8) printf(2dobject[i][j])
    else printf(2d object[i][j])
    printf(\n)
    if(i8) printf( \n) * 行输出8数 *
    }
    rm08 * 放基础数组第位元素循环变化 *
    rm0++ * 基础数组元素放第位 *
    printf(continue(1 or 0))
    scanf(d&cont)
    }
    }
    479分析:采试探法求解
    图示IJ表示行列坐标
    开始棋盘空第1皇先占第行I1先试探占第列J1位置行列斜线方放皇线划掉第2皇放J12位置试J3第2皇占[23]行列斜线方放皇第3皇放J1234位置试J5第4皇试位置[42]第5皇试位置[54]第6皇已没放位置(棋盘格子已占满)说明前面放位置
    退回前皇5释放原占位置[54]改试空位置[58]然前进第6皇时位置放退回第5皇已没位置选择进步退回第4皇释放位置[42]改试位置[47]前进第5皇进行试探继续直8皇选择合适位置印方案
    然第8皇开始改试空位置没改选空位置退回第7皇改试位置没空位置改继续退直外空位置选皇原占位置释放改占新位置然前进皇进行试探直8皇找合适位置求出解印输出新方案方法92方案
    参考答案:
    #define NUM 8
    int a[NUM+1]
    main()
    { int numberikflagnonfinish1count0
    i1
    a[1]1
    while(nonfinish)
    { while(nonfinish && i{ for(flag1k1flag && kif(a[k]a[i]) flag0
    for(k1flag && kif((a[i]a[k](ki)) || (a[i]a[k]+(ki))) flag0
    if( flag)
    { if(a[i]a[i1])
    { i
    if(i>1 && a[i]NUM) a[i]1
    else if(i1 && a[i]NUM) nonfinish0
    else a[i]++
    }
    else if(a[i]NUM) a[i]1
    else a[i]++
    }
    else if( ++iif(a[i1]NUM) a[i]1
    else a[i]a[i1]+1
    }
    if(nonfinish)
    { printf(\n2d++count)
    for(k1kprintf( da[k])
    if(a[NUM1]else a[NUM1]1
    iNUM1
    }
    }
    }
    480参考答案:
    double findy(float x)
    { if(x>0 && x<2)
    retuen(25x)
    else if(x>2 && x<4)
    return(215*(x3)*(x3)) else if(x>4 && x<6)
    return(x2015)
    }
    main()
    { float x
    printf(Please enter x)
    scanf(f&x)
    if(x>0 && x<6)
    printf(f(x)f\nfindy(x))
    else
    printf(x is out\n)
    }

    481注释:程序采模拟手工方式分数进行通分较分子
    参考答案:
    main( )
    { int i j k l m n
    printf(Input two FENSHU \n)
    scanf(dddd &i &j &k &l) * 输入两分数 *
    m zxgb(jl)j * i * 求出第分数通分分子 *
    n zxgb(jl)l * k * 求出第二分数通分分子 *
    if(m>n )
    printf(dd > dd\nijkl) * 较分子 *
    else if(mn)
    printf(dd dd\nijkl) * 输出较结果 *
    else printf(dd < dd\nijkl)
    }
    zxgb(ab)
    int ab
    { long int c
    int d
    if(afor( ca*b b0 ) * 辗转相法求ab公约数 *
    { db bab ad
    }
    return((int) ca) * 返回公倍数 *
    }
    482参考答案:
    main()
    { int a[5]itk
    for (i100i<1000i++)
    { for(t0k1000k>10t++)
    { a[t](ik)(k10)
    k10
    }
    if(f(a[0])+f(a[1])+f(a[2])i)
    printf(d i)
    }
    }
    f(m)
    int m
    { int i0t1
    while(++ireturn(t)
    }
    483分析:取两方三位数nn1n高低分解abcn1高低分解xyz判断axbycz否均完全方数
    参考答案:
    main( )
    { void f( )
    int ita[3]b[3]
    printf(The possible perfect squares combinations are\n)
    for(i11i<31i++) * 穷举方三位数取值范围 *
    for(t11t<31t++)
    { f(i*ia) * 分解方三位数位位数字分存入数组中 *
    f(t*tb)
    if(sqrt(a[0]*10+b[0])(int)sqrt(a[0]*10+b[0])
    && sqrt(a[1]*10+b[1])(int)sqrt(a[1]*10+b[1])
    && sqrt(a[2]*10+b[2])(int)sqrt(a[2]*10+b[2]))
    * 三新数均完全方数 *
    printf( d and d\ni*it*t) * 输出 *
    }
    }
    void f(ns) * 分解三位数n位数字数字 *
    int n *s * 高低次存入指针s指数组中 *
    { int k
    for(k1000k>10s++)
    { *s (nk)(k10)
    k 10
    }
    }
    484参考答案:
    main()
    { int ijlnmka[20][20]
    printf(Please enter nm)
    scanf(dd&n&m)
    for(i0ifor(j0j{ printf(a[d][d]ij)
    scanf(d&a[i][j])
    }
    for(i0i{ for(j0jprintf(6da[i][j])
    printf(\n)
    }
    for(i0i{ for(j0k0jif(a[i][j]>a[i][k]) kj * 找出该行值 *
    for(l0lif(a[l][k]if(l>n) * 没a[i][k]数循环变量l超值 *
    printf(Pointa[d][d]dika[i][k])
    }
    }
    485分析:题目求进行分析数字1定放第行第列格中数字6定放第二行第三列格中实现时维数组表示前三元素表示第行三元素表示第二行先根原题初始化数组根题目中填写数字求进行试探
    参考答案:
    #include
    int count * 计数器 *
    main( )
    { static int a[ ]{123456} * 初始化数组 *
    printf(The possible table satisfied above conditions are\n)
    for(a[1]a[0]+1a[1]<5++a[1]) * a[1]必须a[0] *
    for(a[2]a[1]+1a[2]<5++a[2]) * a[2]必须a[1] *
    for(a[3]a[0]+1a[3]<5++a[3]) * 第二行a[3]必须a[0] *
    for(a[4]a[1]>a[3]a[1]+1a[3]+1a[4]<5++a[4])
    * 第二行a[4]必须左侧a[3]边a[1] *
    if(jud1(a))
    print(a) * 果满足题意印结果 *
    }
    jud1(s) * 判断数组中数字否重复 *
    int s[ ]
    { int il
    for(l1l<4l++)
    for(il+1i<5++i)
    if(s[l]s[i])
    return(0) * 数组中数字重复返回0 *
    return(1)      * 数组中数字没重复返回1 *
    }
    print(u)
    int u[ ]
    { int k
    printf(\nNod ++count)
    for(k0k<6k++)
    if(k30) * 输出数组前三元素作第行 *
    printf(\n d u[k])
    else * 输出数组三元素作第二行 *
    printf(d u[k])
    }
    486参考答案:
    #include stringh
    strcmbn(abc) * 数组合函数:数组ab合 *
    char a[]b[]c[]
    { char tmp
    int ijkmn
    mstrlen(a)
    nstrlen(b)
    for(i0i{ for(ji+1kijif(a[j]tmpa[i] a[i]a[k] a[k]tmp
    }
    for(i0i{ for(ji+1kijif(b[j]tmpb[i] b[i]b[k] b[k]tmp
    }
    i0j0k0
    while(iif(a[i]>b[j])
    c[k++]b[j++] * a[i]b[j]中者存入c[k] *
    else
    { c[k++]a[i++]
    if(a[i1]b[j]) j++ * 果ab前元素相等删掉 *
    }
    while(iwhile(jc[k]'\0'
    }
    487参考答案:
    pxn(xn)
    float x
    int n
    { if(n0) return(1)
    else if(n1) return(x)
    else return(((2*n1)*x*pxn(xn1)(n1)*pxn(xn2))2)
    }
    488参考答案:
    #include stdioh
    strout(s)
    char *s
    { if(*s'\0')
    { strout(s+1) * 递调strout函数字符串首址前移字符 *
    putch(*s) * 输出字符串首址指字符 *
    }
    else return * 遇字符串结束标志结束递调 *
    }
    489参考答案:杨辉三角形中数正(x+y)N次方幂展开式中项系数题作程序设计中具代表性题目求解方法(维数组二维数组)前面出数组答案里出种递求解方法
       杨辉三角形特点出发总结出:
       ⑴ 第N行N+1值(设起始行第0行)
       ⑵ 第N行第J值: (N>2)
      J1JN+1时: 值1
    J1JN+1时: 值第N1行第J1值第N1行第J值
    特点提炼成数学公式表示:
    c(xy) 1 x1 xN+1
    c(xy) c(x1y1) + c(x1y)
    面出程序根递数学表达式编制
    参考答案:
    #include
    main( )
    { int ijn13
    printf(N)
    while( n>12 )
    scanf(d &n) * 输入值12 *
    for(i0i{ for(j0j<12ij++)
    printf( ) * 控制输出第i行前面空格 *
    for(j1jprintf(6d c(ij)) * 输出第i行第j值 *
    printf(\n)
    }
    }
    int c(xy) * 求杨辉三角形中第x行第y列值 *
    int x y
    { int z
    if((y1)||(yx+1))
    return(1) * x行第1第x+1列输出1 *
    else * 否值前行中第y1列第y列值 *
    z c(x1y1) + c(x1y)
    return(z)
    }
    490分析:整型数计算机中二进制形式存储题目仅学递程序编程
    参考答案:
    turn(nak)
    int na[ ]k
    { if(n>0)
    { a[k]n2
    turn(n2ak1)
    }
    else return
    }
    main()
    { int ina[16]{0}
    printf(\nPlease enter n)
    scanf(d&n)
    turn(na15)
    for(i0i<16i++)
    printf(da[i])
    }
                      
                                               
                                     
                                
    491分析:分析题目题目进行抽象:放回前提求全部m元素中取n元素排列根题目含义整数0~m1表示m元素生成n元素分两部分:第元素n1元素果n1m元素中取1种样m种取法直接循环完成n>1知道第元素定m种取法针第元素m种取法种1种面n1元素进行样(递)操作产生种新排列具体算法描述:
    fun(指第元素指针m元素中取n元素)
    { for ( i0 i{ 确定第元素选取方法:i
    if (n>1) fun(指元素指针m中取n1)
    else 完成种排列
    }
    }
    根算法分析出程序
    参考答案:
    #include
    int a[10]
    fun( int *p int m int n ) * m元素中取n存入数组p中 *
    { int i * 数0~m1表示m元素 *
    for( i0i{ *p i
    if( n > 1 ) fun( p+1 m n1)
    else print(p)
    }
    }
    print( int *p )
    { int *q
    for( qaqprintf(c 'a'+ *q)
    printf(\t)
    }
    main( )
    { int m n
    printf(\nEnter m n)
    scanf(dd &m &n)
    fun( a m n)
    }
    492参考答案:
    smmt ( char s[ ] ) * 指针s指字符串第字符 *
    { char *p
    ps
    while(*p'\0') p++
    p * 指针p指字符串字符 *
    if(ps) return(1) * 两指针指字符表示字符串称 *
    else
    { if(*s*p)
    return(0) * 两指针指字符等表示字符串称 *
    else
    { *p'\0'
    smmt(s+1) * 取掉首尾较字符继续较 *
    }
    }
    }
    493参考答案
    #include
    int n r flag * flag:标志0:表示起行 *
    main( )
    { int s
    printf(Enter NR)
    scanf(dd &n &r)
    printf(combinations\n)
    flag1
    combination (1r)
    }
    combination ( s j )
    int s j * s开始选j元素 *
    { int ik
    for( isi{ if( flag )
    for( k0kprintf(3d i)
    flag0
    if(j>1) combination ( i+1 j1 )
    else { putchar('\n') flag1 }
    }
    }
    494分析:题出参考答案指针函数递概念读者学完指针概念研究题放处便排序方法较
    合排序法排序步骤:第次数组中相邻2数两两排序第二遍44排序第三遍88排序 程序中合排序函数(mergesort)采递调例组数:4318145804926742911
    采合排序法程:
    未排序时 4 3 1 81 45 8 0 4 9 26 7 4 2 9 1 1
    第遍 3 4 1 81 8 45 0 4 9 26 4 7 2 9 1 1
    第二遍 1 3 4 81 0 4 8 45 9 4 7 26 1 1 2 9
    第三遍 0 1 3 4 4 8 45 81 9 1 1 2 4 7 9 26
    第四遍 9 1 0 1 1 2 3 4 4 4 7 8 9 26 45 81
    参考答案:
    #define N 16
    #include stdioh
    merge(abcm) * 数组合函数:长度m*
    int a[]b[]c[]m * 数组ab合c *
    { int i0j0k0
    while(iif(a[i]>b[j])
    c[k++]b[j++] * a[i]*b[j]中 *
    else c[k++]a[i++] * 者存入c[k] *
    while(iwhile(j}
    mergesort(wn) * 数组排序函数 长度n *
    int w[]n * 数组w排序 *
    { int itra[N]
    for(i1iif(in)
    { if(n>2) * 递调结束条件 *
    { mergesort (wn2) * 数组w分二递调 *
    mergesort (w+n2n2) * mergesort *
    merge( ww+n2ran2 ) * 排序两数组重新合 *
    for(i0iw[i]ra[i]
    } else if(*w>*(w+1))
    { t*w *w*(w+1) *(w+1)t
    } }
    else printf(Errorsize of array is not a power of 2n)
    }
    main( )
    { int i
    static int key[N]{4318145804926742911}
    mergesort(keyN)
    for(i0iprintf(d key[i])
    printf(\n)
    }
    495参考答案:
    #include stdioh
    main( )
    { char s[21]*p*q
    gets(s)
    ps
    qs
    while(*q'\0') q++
    q2
    while(pif(*p++ *q) * 指针pq时中间移动较称两字符 *
    { printf(NO\n)
    break
    }
    if(p>q)
    printf(YES\n)
    }
    496参考答案:
    strcut(smk)
    char s[ ]
    int mk
    { char *p
    int i
    ps+m * 指针p指删字符 *
    while((*p*(p+k))'\0') * p+k指前移字符 *
    p++
    }
    497参考答案:
    strchg(s)
    char *s
    { char c*p
    ps
    while(*p'\0') p++
    p
    while(s{ c*s
    *s++*p
    *pc
    }
    }
    498参考答案:
    insert(s1s2ch)
    char s1[]s2[]ch
    { char *p*q
    ps1
    while(*p++ch)
    while(*s2'\0')
    { qp
    while(*q'\0') q++
    while(q>p)
    *(q+1)*q
    *++q*s2++
    p++
    }
    }
    499参考答案:
    strcnb(s1s2)
    char s1[]s2[]
    { char *p
    int i1
    ps1
    while(*p'\0') p++
    while((*p++*s2++)'\0') * s2接s1面 *
    ps1
    while(*p'\0') * 扫描整字符串 *
    { if(*p' ') * 前字符空格进行移位 *
    { while(*(p+i)' ') i++ * 寻找前字符面第非空格 *
    if(*(p+i)'\0')
    { *p*(p+i) * 非空格移前字符处 *
    *(p+i)' ' * 移字符处换空格 *
    }
    else break * 寻找非空格时字符串尾移位程结束 *
    }
    p++
    }
    }
    4100参考答案:
    #include stdioh
    struct strnum
    { int i
    char ch
    }
    main( )
    { char c
    int i0k0
    struct strnum s[100]{0NULL}
    while((cgetchar())'\n')
    { for(i0s[i]i0i++)
    { if(cs[i]ch)
    { s[i]i++
    break
    }
    }
    if(s[i]i0)
    { s[k]chc
    s[k++]i1
    }
    }
    i0
    while(s[i]i>0)
    { printf(cd s[i]chs[i]i)
    i++
    }
    }
                                               
    4101分析:程序中函数cmult形式参数结构类型函数cmult返回值结构类型运行时实参zazb两结构变量实参形参结合时实参结构值传递形参结构函数计算完毕结果存结构变量w中main函数中cmult返回结构变量w值存入结构变量z中样通函数间结构变量传递函数返回结构型计算结果完成两复数相操作
    参考答案:
    #include stdioh
    struct complx
    { int real * real复数实部 *
    int im * im复数虚部 *
    }
    main( )
    { static struct complx za {34} * 说明结构静态变量初始化 *
    static struct complx zb {56}
    struct complx x y z
    struct complx cmult()* 说明函数cmult返回值类型结构complx型 *
    void cpr( )
    zcmult(za zb) * 结构变量调cmult函数返回值赋结构变量z *
    cpr (za zb z) * 结构变量调cpr函数输出计算结果 *
    xreal 10 xim 20
    yreal 30 yim 40 * 组数 *
    z cmult (x y)
    cpr (x y z)
    }
    struct complx cmult(za zb) * 计算复数za×zb函数返回值结构类型 *
    struct complx za zb * 形式参数结构类型 *
    { struct complx w
    wreal zareal * zbreal zaim * zbim
    wim zareal * zbim + zaim * zbreal
    return (w) * 返回计算结果返回值类型结构 *
    }
    void cpr (zazbz) * 输出复数za×zbz *
    struct complx za zb z * 形式参数结构类型 *
    { printf ((d+di)*(d+di) zareal zaim zbreal zbim)
    printf ((d+di)\n zreal zim)
    }
    4102参考答案
    #include stdioh
    struct student
    { int n
    int mk
    }
    main()
    { int ijkcount0no
    struct student stu[100]*s[100]*p
    printf(\nPlease enter mark(if mark<0 is end)\n)
    for(i0i<100i++)
    { printf(No04di+1)
    scanf(d&stu[i]mk)
    s[i]&stu[i]
    stu[i]ni+1
    if(stu[i]mk<0) break
    for(j0jfor(kj+1kif(s[j]>mkmk)
    { ps[j] s[j]s[k]s[k]p
    }
    }
    for(no1count1j0j{ if(s[j]>mk > s[j+1]>mk)
    { printf(\nNo3d4d4d nos[j]>mkcount)
    for(kjcount+1k{ printf(03d s[k]>n)
    if((k(jcount))100&&kj)
    printf(\n )
    }
    count1
    no++
    }
    else count++
    }
    }
    参考答案二:
    #include stdioh
    #define N 5
    struct student
    { int number
    int score
    int rank
    int no
    }stu[N]
    main( )
    { int i j k count rank score
    struct student temp
    for( i1 i{ printf(Enter No d i )
    scanf(dd &tempnumber &tempscore )
    for( ji1 j>0 j )
    if( stu[j1]score < tempscore )
    stu[j]stu[j1]
    else break
    stu[j]temp
    }
    stu[0]rank1
    count 1
    k 0
    for( i0 i{ score stu[i]score
    rank stu[i]rank
    if( stu[i+1]score stu[i]score )
    { stu[i+1]rank stu[i]rank
    count++
    }
    else
    { for( j0 jstu[k+j]no countj
    stu[i+1]rank stu[i]rank+1
    count 1
    k i+1
    }
    if( iN2 )
    for( j0 jstu[k+j]no countj
    }
    for( i0 i{ rank stu[i]rank
    count stu[i]no
    printf ( \n3d (3d)d rank stu[i]score count )
    for( k1 kif( (k1)3 0 )
    printf( d stu[i+k1]number )
    else printf ( \n d stu[i+k1]number )
    i+count1
    }
    }
    4103参考答案:
    #include stdioh
    struct time
    { int hour
    int minute
    int second
    }
    main()
    { struct time now
    printf(Please enter now time(HHMMSS)\n)
    scanf(ddd&nowhour&nowminute&nowsecond)
    nowsecond++
    if(nowsecond60)
    { nowsecond0
    nowminute++
    }
    if(nowminute60)
    { nowminute0
    nowhour++
    }
    if(nowhour24)
    nowhour0
    printf(\nNow is 02d02d02dnowhournowminutenowsecond)
    }
    4104参考答案:
    #include
    #define SIZE 3
    struct student * 定义结构 *
    { long num
    char name[10]
    int age
    char address[10]
    } stu[SIZE] out
    void fsave ( )
    { FILE *fp
    int i
    if((fpfopen(student wb)) NULL) * 二进制写方式开文件 *
    { printf(Cannot open file\n) * 开文件出错处理 *
    exit(1) * 出错返回停止运行 *
    }
    for(i0iif(fwrite(&stu[i]sizeof(struct student)1fp) 1 )
    printf(File write error\n) * 写程中出错处理 *
    fclose(fp) * 关闭文件 *
    }
    main()
    { FILE *fp
    int i
    for(i0i{ printf(Input student di+1)
    scanf(ldsds
    &stu[i]numstu[i]name&stu[i]agestu[i]address)
    }
    fsave() * 调函数保存学生信息 *
    fp fopen(studentrb) * 二进制读方式开数文件 *
    printf( No Name Age Address\n)
    while(fread(&outsizeof(out)1fp)) * 读数块方式读入信息 *
    printf (8ld 10s 4d 10s\n
    outnumoutnameoutageoutaddress)
    fclose(fp) * 关闭文件 *
    }
    4105参考答案:
    #include
    main( )
    { FILE *fp
    char str[100] filename[15]
    int i
    if((fpfopen(test w)) NULL)
    { printf(Cannot open the file\n)
    exit(0)
    }
    printf(Input a string)
    gets(str) * 读入行字符串 *
    for(i0str[i]&&i<100i++) * 处理该行中字符 *
    { if(str[i] > 'a' && str[i] < 'z') * 写字母 *
    str[i] 'a''A' * 写字母转换写字母 *
    fputc(str[i]fp) * 转换字符写入文件 *
    }
    fclose(fp) * 关闭文件 *
    fpfopen( test r) * 读方式开文文件 *
    fgets(str100fp) * 文件中读入行字符串 *
    printf(s\n str)
    fclose(fp)
    }
    4106参考答案:
    #include stdioh FILE *fp
    main( )
    { int c d
    if((fp fopen(d\\tc\\test8cr)) NULL)
    exit(0)
    while((cfgetc(fp)) EOF)
    if( c'' ) * 果字符注释起始字符'' *
    if((dfgetc(fp)) '*') * 判断字符否'*' *
    in_comment() * 调函数处理(删)注释 *
    else * 否原样输出读入两字符 *
    { putchar(c)
    putchar(d)
    }
    else
    if( c'\'' || c'\') * 判断否字符' * echo_quote(c) * 调函数处理字符'包含字符 * else putchar(c) } in_comment()
    { int c d
    cfgetc(fp)
    dfgetc(fp)
    while( c'*' || d'' )
    { * 连续两字符 * 继续处理注释 *
    c d
    d fgetc(fp)
    }
    }
    echo_quote (c)
    int c * c中存放定界符' *
    { int d
    putchar(c)
    while(( dfgetc(fp))c) * 读入字符判断否定界符c *
    { putchar(c) * 定界符c时继续循环 *
    if(d'\\') * 出现转义字符\ *
    putchar( fgetc(fp)) * 字符均原样输出 *
    }
    putchar(d)
    }
                                               
                  
    文档香网(httpswwwxiangdangnet)户传

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

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

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

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

    下载文档

    相关文档

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

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

    1年前   
    405    1

    C语言程序设计说课教案

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

    1年前   
    338    0

    C语言程序设计实验报告

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

    10年前   
    951    0

    C语言程序设计实验教案

     《高级语言程序设计》 实验指导书 实验一 顺序结构程序设计 一、实验目的及要求 1. 掌握C语言中使用最多的一种语句—...

    5年前   
    1468    0

    C语言程序设计形考任务

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

    4年前   
    1479    0

    《JAVA语言程序设计》试题及答案3

    《JAVA语言程序设计》试题及答案3《JA V A语言程序设计》试题及答案3一、单选题1、下列程序段执行后的结果是( )。String s = new String(“abcdefg“);fo...

    3年前   
    970    0

    2022年电大C++语言程序设计考试题库及答案

    一、单选题1. 在定义函数的格式类型修饰符 函数名 (形式参数表)函数体;中,函数体可以是( )。A、基本语句 B、复合语句C、空语句 D、语句序列2.A>B&&A<=B的值( ...

    2年前   
    602    0

    C语言试题库

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

    1年前   
    660    0

    c语言高级面试题

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

    2个月前   
    94    0

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

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

    2个月前   
    83    0

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

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

    2年前   
    391    0

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

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

    1年前   
    269    0

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

    论文和作业参考答案联系qq2019910207或咨询微信15927685953,为了准确获取需要资料请在付费前加qq或微信咨询,请认真核对是您需要的题目后再付费!形考任务 2一、 选择题(共 ...

    2个月前   
    85    0

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

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

    2个月前   
    88    0

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

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

    2个月前   
    106    0

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

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

    1年前   
    248    0

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

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

    2个月前   
    81    0

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

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

    12年前   
    739    0

    C++语言程序设计稿件管理数据系统

    XX大学 本科生课程设计(实践)任务书、设计报告 (C++语言程序设计) 题 目 稿件管理数据系统 学生姓名 指导教师 学 院 专业班级 学生学号 计...

    5年前   
    1634    0

    C#程序设计基础教程与实训习题答案

    附录Ⅰ 各章习题答案第1章 C#语言概述一、判断题1、√ 2、× 3、√ 4、× 5、√ 6、√ 7、× 8、×二、选择题1、C 2、B 3、C 4、...

    7个月前   
    201    0

    文档贡献者

    文***享

    贡献于2022-11-19

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

    该用户的其他文档