第一篇:VB编程题(循环部分总结题目
循环部分
1.求自然数1~100之间奇数之和。
2.求自然数1~100之间偶数之和。
3.编程计算从200到1000之间的所有4的倍数之和。
4.编程计算从300到1000之间的所有7的倍数之和。
5.编写程序在窗体上显示出:5/6+4/5+3/4+2/3+1/2
6.编写程序,通过InputBox函数从键盘上输入4个数,计算并在窗体上显示这4个数的和及平均值。
7.在窗体的单击事件过程中,编写程序计算1!+2!+3!+ „ +20!
8.有一个窗体,窗体中有一个文本框,名称为Text1,有一个按钮,试编写按钮的单击事件,实现计算1!+2!+3!+„+10!,将结果显示在文本框Text1中。(或参照 7 用教材:P86 [例4-21] 方法)
9.编写程序计算:s=1+1/2!+1/3!+„+1/n!,说明:在窗体中有一个文本框控件:Text1,用来接收n的值,有一个标签控件:Label1,用来显示S的值,试编写窗体的单击事件,实现计算与显示功能,只要求写出事件的主要代码,事件过程的起始语句和结束语句可略去。(或 参照7 用教材:P87 [例4-22] 方法)
10.编写程序,在窗体上输出由1、2、3、4、5这五个数字组成的所有可能的两位数,并统计它们的个数。
说明: 程序中红色标示的部分 控制 每行输出5个数
11.求s=a+aa+aaa+„+aaa„aaa(n个a),其中a和n的值由用户自己输入。例如,当a=3,n=4时,S=3+33+333+3333。
12.在窗体上输出下三角的九九乘法表。
13.编写程序,将26个字母逆序输出。
14.编写程序,将字符串“山高人为峰”按逆序“峰为人高山”输出。
15.设纸的厚度为0.5毫米,将纸对折,再对折„,求至少对折多少次,纸张的厚度能达到珠穆朗玛峰的高度8848米。
16.编写程序,求s的值,s=1×2×3+2×3×4+„+n×(n+1)×(n+2)的值。n由程序输入。
17.编写一个程序,用户连续输入N个值,直到输入非数值数据为止。最后输出其中最大的一个数。
18.编写程序,输入一个数,判定该数是否为素数,如果是素数,则输出“该数是素数”的信息,否则输出“该数不是素数”的信息。
第二篇:VB编程题及答案
1定义一个下标上界为10整型数组,并用随机函数为其赋值(值处于[0,100]之间),计算数组中所有偶数的和。Private Sub Command1_Click()Randomize Dim a%(10)Dim i%, s% For i = 0 To 10 a(i)= 101 * Rnd()Next For i = 0 To 10 If a(i)Mod 2 = 0 Then s = s + a(i)End If Next Print “所有偶数的和为”, s 2 设 S=35,C=0.3,编写程序,计算并输出下面级数的部分和。结果取小数点后面7位。C/1!-C^3/3!+C^5/5!-„ +(-1)^(S-1)*C^(2*S-1)/(2*S-1)!+ „
参考答案如下:
Private Sub Command1_Click()
Dim n As Integer
Dim x As Double
x = 0.3
Dim item As Double
Dim sum As Double
Dim fac As Double
For n = 1 To 35
fac = 1
Dim i As Integer
For i = 1 To 2 * n1)* x ^(2 * n1
If n Mod i = 0 Then
isprime = False
Exit Function
End If
Next
isprime = True End Function Private Sub Command1_Click()
Dim i As Integer
Dim sum As Long
For i = 1000 To 2000
If isprime(i)= True Then
sum = sum + i
End If
Next
Text1.Text = “sum=” & sum End Sub 'sum= 419684 13.编写一个函数,求某个数的阶乘。
调用该函数计算22!。
Public Function fact(ByVal n As Integer)As
Long
Dim i As Integer, f As Long
f = 1
For i = 1 To n
f = f * i
Next i
fact = f End Function Private Sub Command1_Click()
Dim m As Integer, i As Integer, s As Long
m = InputBox(“输入一个正整数:
”)
s = fact(m)
MsgBox(s)End Sub ‘479001600 14.编写子过程,计算并输出3000-4000之间的素数之和C与其中最小的素数MIN。
Private Sub Command1_Click()
Dim sum, i, min As Integer
min=0
For i = 3000 To 4000
Dim isprime As Boolean = True
Dim j As Integer
For j = 2 To i1)* n *(n + 1)
sum = sum + item
n = n + 2
Loop While Abs(sum)<= 100
MsgBox(sum)End Sub 'sum=-68 编写一个函数,其功能为求两个数的最大公约数。
Public Function
gcd(ByVal m As Integer, ByVal n As Integer)As Integer
Dim i As Integer If m > n Then Dim t As Integer t = m: m = n: n = t End If For i = m To 1 Step-1 If m Mod i = 0 And n Mod i = 0 Then gcd = i Exit Function
End If
Next End Function
20.用InputBox输入一个年份,判断该年份是否是平年,若是则输出“Yes”,否则输出“No”。
Dim year As Integer year = Val(InputBox(“"))If(year Mod 400 = 0)Or(year Mod 4 = 0 And year Mod 100<>0)
Then MsgBox(”No“)Else
MsgBox(”Yes“)
End If 输入两个整数m、n,编写程序使得
m>=n,并输出m、n的值。
Dim m, n As Integer
m = Val(InputBox(”“))n = Val(InputBox(”“))
If m < n Then Dim t As Integer t = m : m = n : n = t End If
MsgBox(”m=“ & m & ”;“ & ”n=“ & n)
22求下面级数前n项的和S,在求和
过程中,当某项(注意,该项参与求和)的绝对值小于0.0001 时求和终止。结果取 5 位小数。
1-1/3+1/5-1/7+1/9-1/11+ „ +(-1)^(n-1)*1/(2n-1)+ „
Private Sub Command1_Click()
Dim n As Integer
Dim item As Double
Dim sum As Double
i = Do While True
item =(-1)^(i1)
整数:”)sum = sum + item If Abs(item)< 0.0001 Then Exit Do Else i = i + 1 End If Loop
MsgBox(Format(sum, “0.0000”))
End Sub '
sum=0.78545 编写一个函数,其功能为判断一个3位正整数是否是“水仙花数”。(“水仙花数”是指各位数字的立方和与该数相等,如153=1^3+5^3+3^3,153就是水仙花数。)
Public Function Panduan(ByVal x As Integer)As Boolean
Dim a As Integer, b As Integer, c As Integer
a = x 100
b =(x Mod 100)10
c = x Mod 10
If x = a ^ 3 + b ^ 3 + c ^ 3 Then
Panduan = True
Else
Panduan = False
End If
End Function Private Sub Command1_Click()
Dim i As Integer
i = InputBox(“输入一个3位正
MsgBox(Panduan(i))End Sub 定义一个下标上界为10整型数组,并为其赋值(值处于[0,100]之间),计算数组中所有不小于60的数据的和。
Dim a(10), i, sum As Integer
For i = 0 To 10
a(i)= Int(Rnd()* 101)
Next
For i = 0 To 10
If a(i)〉=60 Then
sum = sum + a(i)
End If
Next
print sum
25.编写程序,求下面级数前n项的和s=1/1!-1/2!+1/3!-1/4!+....+(-1)^(n-1)*1/n!+.....。
'求和过程当某一项的绝对值小于0.0001时结束(注意,该项参与求和),计算并输出所求的s,要求结果保留6位小数。Private Sub Command1_Click()
Dim m As Double, n As Long, s As Double, f As Integer
s = 0: n =-1: m = 1: f = 1 Do While 1 / m >= 0.0001 m = m * f f = f + 1 n =-n
s = s + n / m Loop
s = Format(s, ”0.000000“)Print s End Sub
26输入一个四位数,分别输出它的个位数字,是十位数字,百位数字,千位数字。Private Sub Command1_Click()Dim a%, j%, k%, i%, m% a = InputBox(”请输入一个四位整数“)j = a 1000 k = a 100 Mod 10 i = a 10 Mod 10 m = a Mod 10 Print ”个位数字;“;m Print ”十位数字;“;i Print ”百位数字;“;k Print ”千位数字;“;j End Sub 6.计算sum=2!+4!+6!+...+10!Private Sub Command1_Click()Dim a%, i% Sum = 0 i = 1: a = 1 Do a = 2 * i If i Mod 2 = 0 Then Sum = Sum + a End If i = i + 1 Loop While i <= 10 Print Sum End Sub
27编写程序,计算并输出下面级数前n项(n=20)中奇数项的和。1*2*3-2*3*4+3*4*5-4*5*6+....+(-1)^(n-1)*n*(n+1)*(n+2)+...Private Sub Command1_Click()Dim s!, i% For i = 1 To 20 Step 2 s = s + i *(i + 1)*(i + 2)Next MsgBox(s)End Sub
28随机输出一个小写字母。Private Sub Command1_Click()Dim a As String Randomize
a = Chr(Int(97 + 26 * Rnd))MsgBox(a)End Sub、29编写程序,计算并输出下面级数前n项(n=50)中偶数项的和。s=1*2+2*3+3*4+4*5+....+n*(n+1)+.....Private Sub Command1_Click()Dim s!, i%
For i = 2 To 50 Step 2 s = s + i *(i + 1)Next
MsgBox(s)End Sub
30斐波那契数列是由计算某类动物繁殖增长量而提出的。数列的前两项是1、1,以后的每一项都是其相邻前两项的和。编写程序求:数列前30项和。
Private Sub Command1_Click()Dim a&, b&, c&, i%
a = 1: b = 1: c = 2: Sum = 0 For i = 1 To 28 c = a + b a = b b = c
Sum = Sum + c Next
MsgBox(Sum)End Sub
31输入三个数a、b、c,编写程序使得a<=b<=c,并输出a、b、c的值。Private Sub Command1_Click()Dim a%, b%, c%, t%
a = Val(InputBox(”请输入a的值!“))b = Val(InputBox(”请输入b的值!“))c = Val(InputBox(”请输入c的值!“))If a > b Then t = b b = a a = t End If
If a > c Then t = a a = c c = t End If If b > c Then t = b b = c c = t End If
Print a, b, c End Sub 32编写程序,设n=20,x=3.4,计算并输出S(n)的值,要求结果保留5位小数。S(n)=Inx/x+In2x/x^2+In3x/x^3+.....+In(n*x)/x^n+.....Private Sub Command1_Click()Dim x#, i% Dim S(20)As Double n = 20 x = 3.4 For i = 1 To 20 S(20)= S(20)+ Log(i * x)/(x ^ i)Next Print Format(S(20), ”0.00000“)End Sub
33输入任意三个数 找出其中最大的数 Private Sub Command1_Click()Dim a!, b!, c!, Max!a = Text1.Text b = Text2.Text c = Text3.Text Max = a If b > Max Then Max = b If c > Max Then Max = c Text4.Text = Max End Sub
输出1到100之间的素数 Print 1;2;a = 3 While a <= 100 i = 2
While i < a
If a Mod i = 0 Then
i = a
End If
i = i + 1
Wend
If i = a Then
Print a;
End If a = a + 1 Wend、34打印斐波那契数列20项 Private sub form_click()A=0 B=1
Text1.text=text1.text&str(A)&str(B)&chr(13)& Chr(10)For i=1 to 9 A=A+B B=A+B
Text1.text=text1.text&str(A)&str(B)&chr(13)& Chr(10)Next i
35判定素数
A=val(inputbox(“input a”))For i=2 to a
If(a mod i=0)then Exit for End if Next i
If i 36求sum 1+(1+2)+(1+2+3)………….n = Val(Text1.Text)sum = 0 For i = 1 To n sum1 = 0 For j = 1 To i sum1 = sum1 + j Next j sum = sum + sum1 Next i Text2.Text = sum 37求50名学生的平均成绩并统计高于平均分的人 Dim c(1 to 50)as integer Dim p!,n%,i% P=0 For i=1 to 50 C(i)=inputbox(“请输入第”&i&”位学生的成绩” P=p+c(i)Next i P=p/50 N=0 For i= 1 to 50 If c(i)>p then n=n+1 Next i Print “平均分=”;”高于平均分的人数=”;n 设C=0.3,编写程序,计算并输出下面级数的部分和。结果取小数点后面7位。C/1!-C^3/3!+C^5/5!-„ +(-1)^(S-1)*C^(2*S-1)/(2*S-1)!+ „ Dim n as integer Dim x as integer X=0.3 Dim item as double Dim sum as double Dim fact as double For n=1 to 35 Fact=1 Dim I as integer For I =1 to 2*n-1 Fact=fact*i Next Item =(-1)^(n-1)*x^(2*n-1)/fact Sum=sum+item Next Sum=int(sum*10000000+0,.5)/100000000 Magbox 39已知A、B为整数A和B的立方和为1000求所有的A、B。 Dim x ,y as integer For x=0 to10 For y=0 to10 If x^3+y^3=1000 then Msgbox(x=;y=) 定义一个下标上界为30的单精度数组,设置好其初值(值处于[20,90]),计算数组中所有元素的均值。Dim array(30)as single For i=0 Array(i)=20+int(rnd()*71)Next i Dim sum% For i=0 to 30 Sum=sum+array(i)Next i Print sum 31 End sum 41求下面级数前S项中奇数项的和sum。在求和过程中,以第一个奇数项的数值大于 10000 的项为末项。1!-2!+3!-4!+ „ +(-1)^(S-1)*S!+ „ Dim n as integer Dim item double Dim I as integer Dim sum as double Dim abs as double Do while true Item =1 For I =1 to n Item = item*1 Next i Sum=sum +item N=n+2 If abs(item)>10000 then Exit do Else N=n+2 End if Loop Msgbox(sum) 42计算sum=1/1!+1/2!+1/3!+....+1/10!Private Sub Command1_Click()Dim m As Integer, n As Long, s As Double n = 1 s = 0 For m = 1 To 10 n = n * m s = s + 1 / n Next Print s 42求从[j,s]区间内的素数及素数和(这里需要用到三个文本框和2个按钮)'Private Sub Command1_Click()Dim n%, i%, j%, s% Sum = 0 j = Val(Text1.Text())s = Val(Text2.Text())For n = j To s For i = 2 To n1 Then Sum = Sum + n: Print n Next n Text3.Text = Sum End Sub Private Sub Command2_Click()Cls Text1.Text = ”“ Text2.Text = ”“ Text3.Text = ”“ Text1.SetFocus End Sub 43某分段函数描述如下:(1)当x为偶数时,y的值为x的二分之一。(2)当x为奇数时,y的值为x的二倍。Private Sub Command1_Click()Dim x!, y!x = Val(InputBox(”请输入X的值!“)) If x Mod 2 = 0 Then y = x / 2 Else y = 2 * x MsgBox(y)End If End Sub 44随机输出一个小写字母。Private Sub Command1_Click()Dim a As String Randomize a = Chr(Int(97 + 26 * Rnd))MsgBox(a)End Sub、45编写程序,计算并输出下面级数前n项(n=50)中偶数项的和。s=1*2+2*3+3*4+4*5+....+n*(n+1)+.....Private Sub Command1_Click()Dim s!, i% For i = 2 To 50 Step 2 s = s + i *(i + 1)Next MsgBox(s)End Sub 46编写程序,设n=20,x=3.4,计算并输出S(n)的值,要求结果保留5位小数。S(n)=Inx/x+In2x/x^2+In3x/x^3+.....+In(n*x)/x^n+.....Private Sub Command1_Click()Dim x#, i% Dim S(20)As Double n = 20 x = 3.4 For i = 1 To 20 S(20)= S(20)+ Log(i * x)/(x ^ i)Next Print Format(S(20), ”0.00000“)End Sub 47设 S=35,C=0.3,编写程序,计算并输出下面级数的部分和。结果取小数点后面7位。C/1!-C^3/3!+C^5/5!-„ +(-1)^(S-1)*C^(2*S-1)/(2*S-1)!+ „ 参考答案如下: Private Sub Command1_Click() Dim n As Integer Dim x As Double x = 0.3 Dim item As Double Dim sum As Double Dim fac As Double For n = 1 To 35 fac = 1 Dim i As Integer For i = 1 To 2 * n1)* x ^(2 * n1 fac = fac * i Next item =(-1)^(n1)/ fac sum = sum + item Next sum = Int(sum * 10000000 + 0.5)/ 10000000 MsgBox(sum)End Sub ' sum = 0.479426 49编写子过程,计算并输出3000-4000之间的素数之和C与其中最小的素数MIN。 Private Sub Command1_Click() Dim sum, i, min As Integer min=0 For i = 3000 To 4000 Dim isprime As Boolean = True Dim j As Integer For j = 2 To ia(1))*(pa(3)))MsgBox(s)Else MsgBox(”不能构成三角形")End If End Sub 注:被中括号(“[”、“]”)括起来的都是可选参数! For Each...Next 语句: 语句格式 For Each Variant In Collection Or Array [Statement(s)] [Exit For] [Statement(s)] Next [Variant] 参数解释 Variant: 如果In后面是一个集合(Collection),Variant可以是任何数据类型的一个变量;如果In后面是一个数组(Array),Variant就只能是一个Variant变量。 Collection: 可以是任何一个对象集合。Array: 可以是任何一个数组(Type数组除外)。Statement(s): 可以是任何一句或多句语句。 Exit For: 可以强制退出循环体。For Each...Next 语句的作用 集合/数组里面有多少对象/多少维,For Each...Next 语句就会执行多少次Statement(s)。 Do...Loop 语句: 语句格式 Do [{While | Until} Condition] [Statement(s)] [Exit Do] [Statement(s)] Loop [{While | Until} Condition] 参数解释 While: 如果While在Do后面,那么循环体一开始就会检查Condition的值,如果Condition的值为False,就退出循环体;否则,执行Statement(s);如果While在Loop后面,则在执行完第一次Statement(s)时才检查Condition的值,如果Condition的值为False,就退出循环体;否则,继续循环。 Until: 如果Until在Do后面,那么循环体一开始就会检查Condition的值,如果Condition的值为True,就退出循环体;否则,执行Statement(s);如果Until在Loop后面,则在执行完第一次Statement(s)时才检查Condition的值,如果Condition的值为True,就退出循环体;否则,继续循环。 Condition: 可以是任何一个表达式。Statement(s): 可以是任何一句或多句语句。 Exit Do: 可以强制退出循环体。Do...Loop 语句的作用 重复循环Statement(s),直到Condition为True或False(在指定了While或Until的情况下)。 For...Next 语句: 语句格式 For Counter = Start To End [Step Step] [Statement(s)] [Exit For] [Statement(s)] Next [Counter] 参数解释 Counter: 可以是任何一个变量(但不能是Boolean或者是数组),用来做计数器。Start: Counter的初值。End: Counter的终值。 Step: Counter一次增加多少,默认为1。1次增加n: For...=...To...Step n;1次减n: For...=...To...Step-n。 Statement(s): 可以是任何一句或多句语句。 Exit For: 可以强制退出循环体。For...Next 语句的作用 重复执行((End-Counter)Step)次Statement(s)。 While...Wend 语句: 语句格式 While Condition [Statement(s)] Wend 参数解释 Condition: 可以是任何一个表达式。Statement(s): 可以是任何一句或多句语句。 While...Wend 语句的作用 重复执行语句,直到Condition不为True。 C作业汇总 1.short a,b=32767;/*short类型在内存中占2B*/ a=b+1;问:a的值是多少?并分析原因。 2.有一4位数整数,假设用abcd表示,请把这个4位数的每个数位用表达式表示出来。3.从键盘输入圆的半径r,计算并输出圆的面积s(要求:半径r定义为float型;圆周率定义为符号常量;面积s保留2位小数)#define PI 3.14159 #include 4.输入m>=3的正整数,判断m是否素数。画出算法流程图及NS图 5.有一函数: x1 x y2x1 1x10 3x-11 x10 写一段程序,输入x,输出y值。 要求x,y声明为float类型,y保留2位小数。#include if(x<1) y=x;else if(x<10) y=2*x-1; else y=3*x-11; } printf(“y=%.2fn”,y); x3x5x7x9,6.课后习题4.17(P159)利用泰勒级数sinxx计算sinx的3!5!7!9!值。要求最后一项的绝对值小于10,并统计出此时累加了多少项。#include /*记录每个项数*/ int n=1,count=0;/*count记录累加了多少项*/ printf(“请输入x值(弧度):n”);scanf(“%f”,&x); term=x/n;while(fabs(term)>1e-5) /* while循环*/ { sinx+=term; count++; n+=2; term=-term*x*x/((n-1)*n);} /* do /*do while循环*/ { sinx+=term; count++; n+=2; term=-term*x*x/((n-1)*n);}while(fabs(term)>1e-5); */ printf(“sin(%.2f)=%.4fn”,x,sinx);printf(“一共累加了:%d项。n”,count);} 7.用牛顿迭代法求下面方程在1.5附近的根: 2x4x3x60 325 牛顿迭代公式: x1x0f(x0)f(x0) #include /*y1记录f(x0),y2记录f(x0)的导数*/ do { x0=x1; y1=2*x0*x0*x0-4*x0*x0+3*x0-6; y2=6*x0*x0-8*x0+3; x1=x0-y1/y2;}while(fabs(x1-x0)>1e-5); printf(“the root is:%.2fn”,x1);} 8.写一函数,输入一个16进制整数,输出相应的10进制数。例:从键盘输入2a,输出结果是42。 要求:若输入数据不合法,则输出提示信息。如输入了35g,输出“您输入的16进制数不合法!”。 #include printf(“请输入一个16进制数字:n”); while((c=getchar())!='n'){ if(c>='0' && c<='9') sum=sum*16+c-'0'; else if(c>='a' && c<='f') sum=sum*16+c-87; else if(c>='A' && c<='F') sum=sum*16+c-55; else { printf(“您输入的16进制不合法.n”); exit(0); } } printf(“相应的10进制数是:%dn”,sum);} 方法2:用字符串处理的方式 #include printf(“请输入一个16进制数字:n”);gets(str); for(i=0;str[i];i++){ if(str[i]>='0' && str[i]<='9') sum=sum*16+str[i]-'0'; else if(str[i]>='a' && str[i]<='f') sum=sum*16+str[i]-87; else if(str[i]>='A' && str[i]<='F') sum=sum*16+str[i]-55; else { printf(“您输入的16进制不合法.n”); exit(0); } } printf(“相应的10进制数是:%dn”,sum);} 方法3:用字符数组及指针处理的方式 #include { char str[20],*p=str;int sum=0; printf(“请输入一个16进制数字:n”);gets(p); while(*p){ if(*p>='0' && *p<='9') sum=sum*16+*p-'0'; else if(*p>='a' && *p<='f') sum=sum*16+*p-87; else if(*p>='A' && *p<='F') sum=sum*16+*p-55; else { printf(“您输入的16进制不合法.n”); exit(0); } p++;} printf(“相应的10进制数是:%dn”,sum);} 9.编写一个小函数,其功能是计算两个整数的平均值,该函数要在主函数中调用。 #include avg=average(x,y); printf(“%d,%d的平均值是:%.2fn”,x,y,avg);} float average(int x,int y) { return(x+y)/2.0;} 10.有N(N用宏定义为符号常量)个元素的一维整型数组,该数组中各元素值从键盘随机输入。然后,将这个整型数组中的值逆序存放。例如,原来5个元素的顺序为8、1、4、6、5,逆序之后各元素的值是5、6、4、1、8 #define N 5 #include printf(“输入%d个整数,用空格或回车分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“数组原来的值是:n”);for(i=0;i printf(“%dt”,a[i]); for(i=0;i t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;} printf(“n逆序之后数组的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n”);} 11.有N(N用宏定义为符号常量)个元素的一维整型数组,该数组中各元素值从键盘随机输入。然后,对该数组元素进行由小到大排序(要求,该功能用函数实现),输出数组中各元素值。最后,从键盘随机输入一个整数,并把该整数插入上述数组中(该功能用函数实现),使得插入该整数后的数组仍然有序,输出数组中各元素的值。#define N 5 #include int i,x;void sort(int array[],int n);void insert(int array[],int n,int x); printf(“输入%d个整数,用空格或回车分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); sort(a,N); /*调用sort对数组进行排序*/ printf(“n升序排序之后数组的值是:n”);for(i=0;i printf(“%d ”,a[i]); printf(“n输入一个x值插入到数组中:n”);scanf(“%d”,&x); insert(a,N,x); printf(“n插入%d之后数组的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”);} void sort(int array[],int n)/*用选择法对数组array升序排序*/ { int i,j,t,min; for(i=0;i min=i; for(j=i+1;j if(array[j] min=j; if(min!=i) { t=array[i]; array[i]=array[min]; array[min]=t; } } } void insert(int array[],int n,int x){ int i,pos; for(i=0;i pos=i; for(i=n-1;i>=pos;i--) array[i+1]=array[i]; array[pos]=x;} 12.有一整型数组,N(N用宏定义为符号常量)个元素,该数组中各元素值从键盘随机输入。从键盘随机输入一个整数x,删除该数组中值与x相同的所有元素(该功能用函数实现),输出数组中各元素的值。#define N 5 #include printf(“输入%d个整数,用空格或回车分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); printf(“数组原来的值是:n”);for(i=0;i printf(“%dt”,a[i]); printf(“n请输入要删除的值x:n”);scanf(“%d”,&x); n=delet(a,N,x); /*n值是删除与x相同的元素后,数组剩余元素的个数。*/ printf(“删除%d之后数组的值是:n”,x);for(i=0;i printf(“%d ”,a[i]); printf(“n”); } int delet(int a[],int n,int x){ int i,j; for(i=0,j=0;i if(a[i]!=x) a[j++]=a[i]; return j;} 13.从键盘随机输入一字符串,将所有ASCII值为偶数的字符输出。例如:输入abc123,输出结果是b2(因为b的ASCII值是98,2的ASCII值是50,其他字符的ASCII值都是奇数) #include printf(“输入字符串:n”);gets(str); printf(“ASCII码是偶数的字符有:”);for(i=0;str[i];i++) if(str[i]%2==0)putchar(str[i]); printf(“n”);} 14.从键盘输入两个字符串s1,s2,把s2连接到s1的末尾。不能用strcat函数 #include printf(“输入两个字符串,输入回车键结束:n”);gets(str1);gets(str2); mystrcat(str1,str2); printf(“连接在一起的字符串是:n”);puts(str1); } void mystrcat(char *p1,char *p2){ while(*p1)p1++;while(*p2) *p1++=*p2++;*p1=' ';} 15.从键盘输入一个字符串,把其中最长的单词输出。单词定义为连续的一串英文字母。如输入I am a student.输出结果为student #include { char str[80];int i,start,len=0,lenthest=0,lenstart=0;int word=0; printf(“input a string:n”);gets(str); for(i=0;str[i];i++){ if(str[i]>='a' && str[i]<='z' || str[i]>='A'&&str[i]<='Z') if(!word) { word=1; start=i; } else { len++; } else if(word) { word=0; } } if(len>lenthest){ lenthest=len;lenstart=start;} len=0; printf(“the lenthest word is:n”);for(i=lenstart;i<=lenstart+lenthest;i++) putchar(str[i]); printf(“n”);} 16.有一整型数组,N(N用宏定义为符号常量)个元素,该数组中各元素值从键盘随机输入。编写函数calculate,计算出所有元素的最大值、最小值、平均值,结果在主函数中输出。#define N 5 #include printf(“输入%d个整数,用空格或回车分隔:n”,N);for(i=0;i scanf(“%d”,&a[i]); calculate(a,&max,&min,&avg); printf(“数组中所有元素的最大值、最小值、平均值分别是:n”);printf(“最大值max=%d,n”,max);if(word)if(len>lenthest){ lenthest=len; lenstart=start;} printf(“最小值min=%d,n”,min);printf(“平均值avg=%.2f,n”,avg); } void calculate(int a[],int *pmax,int *pmin,float *pavg){ int i;int sum; *pmax=*pmin=sum=a[0]; for(i=1;i if(a[i]>*pmax) *pmax=a[i]; if(a[i]<*pmin) *pmin=a[i]; sum=sum+a[i];} *pavg=(float)sum/N;} 大家必须掌握每种类型的1-3题。 题号考点要求 48、将两个两位数的整数合并成一个整数 65、两个正整数合并成一个整数 71、两个正整数合并成一个整数 77、两个正整数合并成一个整数 81、两个正整数合并成一个整数 84、两个正整数合并成一个整数 87、两个正整数合并成一个整数 91、两个正整数合并成一个整数 8、s=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+.....+n) 9、p=m!/(n!*(m-n)!) 26、连加 68、s=1+1/1!+1/2!+1/3!+........70、s=1/(1*2)+1/(2*3)+...+1/(n*(n+1)) 76、s=1+0.5*x+(0.5*(0.5-1)*x*x/2!+......86、连加 90、连加 92、连加 93、连加 97、连加 100、连加 (2、) 类似素数或者闰年算法 2、求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。 58、求n以内同时能被3与7整除的所有自然数之和的平方根s3、求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 27、求出1到m之间能被7或11整除的整数,放在数组中,通过n返回这些数的个数 63、求n的所有因子(不包括1与自身) 98、计算n以内能被5或9整除的所有自然数的倒数之和 15、w是大于10的无符号整数,若w是n(n>=2)位的整数,则函数求出w的后n-1位的数作为函数值返回。 24、将数字字符串转化为一个整数 16、对变量中的值保留两位小数,对第三位四舍五入 (3、) 1、一维数组中,将低于平均分的人数作为函数值返回,低于平均分的分数放在below所指的数组中。 82、计算一维数组中n门课程的平均分 96、一维数组中每相邻元素之平均值的平方根之和 28、找出一维数组中最大的值和它所在的下标,两者通过形参返回 7、求出数组的最大元素在数组中下标并存放在k所指的存贮单元中。 43、从num个字符串中找出最长的一个字符串,并通过形参指针传回 39、移动数组中的内容,前p个数移动到数组后面 40、移动数组中的内容,前m个字符移动到后面 5、将大于整数m且紧靠m的k个素数存入xx所指的数组中。 20、求出小于变量m的所有素数并放在一个数组中 51、将大于1小于m的非素数存入xx所指数组中,个数通过形参返回 99、计算3到n之间所有素数的平方根之和 29、将字符串中下标为奇数位置上的字母转化为大写 47、字符串中所有下标为奇数的字母转为大写 31、将字符串中除了下标为偶数、同时ASCII码也为偶数的字符外,其余的全都删除;串中剩余字符放在t字符串中 32、除了下标为奇数、同时ASCII码也为奇数的字符外,其余的全都删除;串中剩余字符放在t字符串中 49、将字符串中下标为偶数且ASCII码为奇数的字符删除 19、从字符串中删除指定字符 64、将字符串中ASCII值为奇数的字符删除,剩余字符放在t所指字符串中 72、将字符串中下标为偶数的字符删除 78、字符串中ASCII为偶数的字符删除 35、删除字符串中所有空格 6、删除一个字符串中指定下标的字符。 60、删去一维有序数组中所有相同的数,使之只剩一个 33、删除字符串中尾部*号,使不超过n个 36、把字符串中的前导*号全部移到字符串尾部 45、删除字符串中前导和尾部的*号 56、字符串中,除了尾部*号外,字符串中其余*号全部删除 73、删除字符串中除了前导和尾部*号外的所有*号 83、字符串中尾部*号删除 88、字符串中除了前导*外,删除其余*号 94、字符串中,前导*号全部删除 95、字符串中前导*号不得多于n个 66、删除字符串中所有*号 (4、) 17、字符串内容逆置 23、判断字符串是否为回文 25、比较两个字符串的长度(不能用strlen) 52、实现两个字符串连接 59、将字符串数组中的字符串依次合并到一个字符串中 21、字符串中字符按降序排列(选择法排序) 4、统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。 38、求出字符串中指定字符的个数 44、统计长度为2的字符串在另一个字符串出现的次数 62、统计一行字符串中单词个数 11、二维数组构成矩阵,使数组左下半三角元素中的值全部置成042、二维数组,将右上半角元素中的值乘以m80、二维数组中左下半三角中元素中的值乘以312、求出数组周边元素的平均值 14、求出二维数组周边元素之和 18、矩阵行列互换 53、矩阵B=A+A130、求出二维数组中最大元素的值,此值返回给调用函数 55、M行N列的二维数组中的数据,按行的顺序依次放到一维数组中 41、将二维数组中的字符,按列的顺序依次放到一个字符串中 75、二维数组中数按列的顺序放到一维数组中 13、求出二维数组每列中最小元素,并依次放在pp所指一维数组中 37、结构体数组(学号、8门成绩、平均成绩),求出每个学生的平均成绩 34、把结构体数组(学号、成绩)中分数最高的学生放到h数组中,函数返回人数 74、把结构体数组(学号、成绩)中分数最低的学生数据放在h所指数组中 50、结构体数组(学号、成绩),找出成绩最高的学生记录,通过形参返回 54、结构体数组(学号、成绩),低于平均分的学生数据放在b所指数组中 89、结构体数组(学号、成绩),高于等于平均分的学生人数通过形参返回 57、结构体数组(学号、姓名),把指定范围内的学生数据放在所指数组中 67、结构体数组(学号、成绩)返回指定学号的学生数据(查找) 46、结构体数组(学号、成绩),按分数降序排列(选择法排序) 22、链表结构中,找出数值最大的结点,并由函数值返回 85、链表中,求出平均成绩 10、迭代法求方程的实根 61、统计各年龄段人数(建议采用if else) 69、递归函数第三篇:VB循环语句
第四篇:编程题总结
第五篇:编程题总结