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条件表达式a
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
注释:条件表达式增加括号式变a
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 { c*s { c*s
*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
*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(i1i
return( ② )
}
33面程序功求维数组中元素
findmin(int *sint tint *k)
{ int p
for(p0*kpp①
}
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(k1k
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
①
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(k0k
printf(ld\ns)
}
322面程序功显示具n元素数组s中元素
#define N 20
main()
{ int ia[N]
for(i0i
printf(d\n ① )
}
fmax(int s[]int n)
{ int kp
for(p0kpp
return(k)
}
323面程序功键盘输入n求满足述条件xy:
nxny末3位数字相x≠yxyn均然数x+y
#include
pow3(int nint x)
{ int i last
for(last1i1i
return(last)
}
main()
{ int xnminflag1
scanf(d &n)
for(min2flagmin++)
for(x1x
{ 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
*s*p
②
revstr(s+1)
③
}
}
非递实现revstr(s)函数:
revstr (s)
char *s
{ char *ps c
while( *p ) p++
④
while( 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( i0i
{ ⑨ }
}
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++
if( temp<10 )
{ total + temp
*(++pa) temp
}
else
{ ② temp10
total + *pa
if( count
③ temp10
total + *pa
}
}
}
④
}
main()
{ int n *p *q num[MAXNUM]
do
{ printf(Input N (2
}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
{ 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
scanf(us &p>age p>sex)
②
}
}
data_out( struct man *p int n )
{ struct man *q __③__
for( p
}
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
scanf(d&num)
for( ① j>0&&array[j]num ② num ③ )
array[j+1]array[j]
array[ ④ ]numnum
array[ ⑤ ]noi
}
for( i0i
}
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(i1i
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
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(i0i
}
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++ ③ k
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答案:①
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答案:① s
注释: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
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<80K
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(j1j
述思路实现印矩形
参考答案:
main()
{ int ijn
printf(\nPlease Enter n)
scanf(d&n)
for(i1i
printf(\n)
}
}
45分析:图形题区行先印空格然印n'*'号题第层循环体印'*'号循环前面增加循环印空格行空格数逐行减少第层循环控制变量i逐行增1固定值数减i实现空格数控制题中固定值变量n
参考答案:
main( )
{ int ijn
printf(\nPlease Enter n)
scanf(d&n)
for(i1i
for(j1j
printf(\n)
}
}
46分析:题题区行'*'数量逐行减少题控制空格数思路控制'*'号数请注意行'*'数奇数
参考答案:
main( )
{ int ijn
printf(\nPlease Enter n)
scanf(d&n)
for(i1i
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
if(j
printf(\n)
}
}
48分析:题第3题区仅行'*'数增加n1
参考答案:
main( )
{ int ijn
printf(\nPlease Enter n)
scanf(d&n)
for(i1i
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
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
if(ji) printf(*)
else printf( )
printf(*\n)
}
for(i1i
else printf( )
printf(*\n)
}
}
411分析:题题区印'*'号位置编程时找出应印'*'号位置两循环变量ij行数n关系
参考答案:
main( )
{ int ijn
printf(\nPlease Enter n)
scanf (d &n)
for(i1i
if(jni+1 || j>ni+1 && i1) printf(*)
else printf( )
printf(*\n)
}
for(i1i
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
else printf( )
printf(\n)
}
}
413参考答案:
main( )
{ int ijn
printf(\nPlease Enter n )
scanf(d &n)
for(i1i
else printf( )
printf(\n)
}
for(i1i
else printf( )
printf(\n)
}
}
414参考答案:
main( )
{ int ijn
printf(\nPlease Enter n )
scanf(d&n)
for(i1i
else printf( )
printf(\n)
}
}
415参考答案:
main( )
{ int ijn
printf(\nPlease Enter n )
scanf(d&n)
for(i1i
else printf( )
printf(\n)
}
for(i1i
if(j>i) printf(*)
else printf( )
printf(\n)
}
}
416参考答案:
main( )
{ int ijn
printf(\nPlease Enter n )
scanf(d&n)
for(i1i
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
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
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
for(j1j
n n+i+j * 计算行元素值 *
}
printf(\n)
kk+i * 计算行中第1元素 *
}
}
422参考答案:
main( )
{ int ijn
printf(\nPlease Enter n )
scanf(d&n)
for(i1i
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 j
现问题果知道行区域开始第位置数字然该区续数字利前面分析规律
右区开始行第数字易求出4*(n1)i+1续行前数字差4*[n1(j1)*2]+1中方括号边数字数
角线数字分区点角线相数字然相差圈数字数读者行分析计算公式
右区开始第数字区结束时数字规律求出
述程序变量s保存分区角线数字
参考答案:
main()
{ int ijknsmt
printf(Please enter n)
scanf(d&n)
for(i1i
m(i<(n+1)2) ini+1 * m1外层圈数 *
for(k1k
if(j>i && j
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
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
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(j1j
printf(\n)
}
}
426分析:类输出字符图形输出数字图形考虑似字符ASCII码整数字符码值变化程中应该注意应该判断码值否超出字符范围进行必处理保持程序简洁题没考虑问题题里问题进行处理
参考答案:
main( )
{ char c'Z'
int ijn
printf(\nPlease Enter n)
scanf(d&n)
for(i1i
else printf( )
printf(c\nc)
}
for(i1i
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
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
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
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
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*c
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(j0j
if(j>k)
{ printf( d i)
for(j0j
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(n0n
break
if(nk)
printf(d\ni)
}
}
458参考答案:
main()
{ int ijkmerror
for(i6i<2000i+2)
{ error1
for(j2j
break
if(k>j) * j素数 *
{ mij
for(k2k
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
if(k>j) * j素数 *
{ mnj
for(k2k
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(m0i1i
m+i * 计算m子子存n *
for(n0i1i
n+i
if(na && a
}
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(guess
}
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(j1j
{ ss+j
mmj
a[k++]j
}
if(j>m) break
}
if(s0&&is+m)
{ a[k++]m
for(j0j
printf(4d\ni)
}
}
}
470参考答案:
main()
{ int ijknm1r1a[2][100]{0} printf(Please enter n)
scanf(d&n)
for(i0i
scanf(d&a[0][i])
}
while(m
continue
ki
for(jij
m++ * 登记数增1 *
for(j0j
{ a[1][j]a[1][k]
m++
}
break
}
}
for(i0i
}
471参考答案:
#include
main()
{ int ijk0m2sr0a[500] printf(4d m)
for(i3i<2000i++ )
{ for(j2j
if(ji)
{ printf(4d i )
a[k++]im
mi
}
}
for(i0i
for(jij
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[2]num[i][1]
b[3]num[i][2]
for(ti+1t
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[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(n0n
break
if(nk)
printf(d\ni)
}
}
474参考答案:
#include
int pos[101]div[101]
main ()
{ int m n i j
printf(Please input mn(<0
printf(dd0 m n)
for(i1i<100i++)
{ pos[m]i
m*10
div[i]mn
mmn
if(m0)
{ for( j1j
}
if(pos[m]0)
{ for( j1j
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(k1flag && k
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( ++i
else a[i]a[i1]+1
}
if(nonfinish)
{ printf(\n2d++count)
for(k1k
if(a[NUM1]
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(++i
}
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(i0i
scanf(d&a[i][j])
}
for(i0i
printf(\n)
}
for(i0i
for(l0l
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(i0i