内容发布更新时间 : 2024/11/6 0:38:22星期一 下面是文章的全部内容请认真阅读。
int i,j;
for(i=1;i<=4;i++) //图上半部分 {
for(j=1;j<=8-2*i;j++)
putchar(' ');
for(j=1;j<=2*i-1;j++) printf(\ putchar('\\n'); }
for(i=3;i>=0;i--) //图下半部分 {
for(j=1;j<=8-2*i;j++)
putchar(' ');
for(j=1;j<=2*i-1;j++) printf(\ putchar('\\n'); } }
21.输入正整数a、b,输出a、b之间所有素数之和。
解:#include
int i,j,a,b,sum=0;
printf(“请输入a b (a≤b)\\n”); scanf(“%d%d”,&a,&b);
for(i=a;i<=b;i++) {
for(j=2;j<=i/2;j++)
if(i%j==0)break; // 此时可判定i不是素数 if(j>i/2&&i!=1)
sum+=i;// 满足此条件表示除1和自身外,其它数均不能整除i
}
printf(“%d至%d之间的素数和=%d\\n”,a,b,sum); }
或
解:#include
int i,j,a,b,sum=0,flag; printf(“请输入a b (a≤b)\\n”); scanf(“%d%d”,&a,&b);
for(i=a;i<=b;i++)
{ flag=1; // 要判别当前i是否素数,先将标志变量赋值为1
25
for(j=2;j<=i/2;j++) if(i%j==0){
flag=0;break; }// 此时可判定i不是素数,退出循环 if(flag==1&&i!=1)
sum+=i;//满足此条件表示除1和自身外,其它数均不能整除i }
printf(“%d至%d之间的素数和=%d\\n”,a,b,sum); }
*22.当x为–2,–1.5,–1,?,1.5,2时,求函数f(x)=x2–3.14x–6的解所取的最大值、最小值。
解:#include
double x,y,max,min;
max=min=(-2)*(-2)-3.14*(-2)-6;
//f(-2)作为max、min的初始值
for(x=-1.5;x<=2;x+=0.5) {
y=x*x-3.14159*x-6;
if(y>max) max=y;
else if(y } printf(\ } *23.当n取值在–39~40范围内时,判断表达式n2+n+41的值是否都是素数。 解:#include #include int i,j,y,count=0; for(i=-39;i<=40;i++) { y=i*i+i+41; for(j=2;j<=sqrt(y);j++) if(y%j==0) { printf(\当i为%d时,y=%d,结论不成立!\\n\ count++; break; } } if (count!=0) printf(\共有%d个i值,使结论不成立!\\n\ else printf(\结论成立,都是素数!\\n\ } 26 *24.用区间对分法求x2+xsinx–5=0在区间[0,5]内的一个实根(设ε=10–5)。 【说明】 在[a,b]区间连续的函数f(x),若满足条件f(a)·f(b)<0,则必有a<ξ (2)若|f(c)|<ε或|b-a|<ε,则输出c作为近似解,并终止程序执行。 (3)如果f(a)·f(c)<0,则b=c;否则a=c,再次执行第(1)步。 解:#include #include float a,b,c; a=0; b=5; //初始化区间a、b值 do { c=(a+b)/2; //计算a、b区间的中值 if((a*a+a*sin(a)-5)*(c*c+c*sin(c)-5)<0 ) b=c; //以c代替区间b值 else a=c; //以c代替区间a值 }while(fabs(c*c+c*sin(c)-5)>=1e-5&&fabs(b-a)>=1e-5); printf(\} 习 题 5 一、单项选择题 1.下列叙述中,正确的叙述项是( )。 A.定义函数时,必须要有形参 B.函数中可以没有return语句,也可以有多条return语句 C.函数f可以用f(f(x))形式调用,这种调用形式是递归调用 D.函数必须有返回值 2.下列叙述中,不正确的叙述项是( )。 A.函数调用时,形参变量只有在被调用时才被创建(分配存储单元) 错误!未指定书签。B.函数调用时,实参可以是常量、变量或表达式 C.定义变量时,省略对变量的存储类别定义,则变量是自动型变量 D.语句return(a,b);则函数可以返回两个值 3.传值调用的特点是( )。 A.实参传给形参变量的数据是地址 B.在函数中形参变量值改变后,不改变实参变量的值 C.在函数中形参变量值改变后,实参变量的值随之也改变 D.实参必须是变量 4.如果在函数中定义一个变量,有关该变量作用域正确的是( )。 A.只在该函数中有效 B.在该文件中有效 C.在本程序中有效 D.为非法变量 5.根据下面函数print的定义,选出调用函数print(5378)的值是( )。 void print(long n) { 27 if (n==0) return ; else{ print(n/10); printf(\ return ; } } A.5 3 7 8 B.8 7 3 5 C.3 5 7 8 D.8 7 5 3 *6.根据下面函数f,选出f(f(3))的值是( )。 int f(int x) { static int k=0; x=x+k; k--; return x; } A.5 B.3 C.2 解:(1)B (2)D (3)B (4)A (5)A 二、写出下列程序的输出结果 *1. #include int f1(int,int),f11(int); void f2(int); void main() { int i,j; for(i=0;i<5;i++) { f2((5-i)*3); for(j=0;j<=i;j++) printf(\ putchar('\\n'); } } int f1(int m,int n) { return f11(m)/f11(n)/f11(m-n); } int f11(int k) { if(k<=1) return 1; return k*f11(k-1); } void f2(int n) { for(int i=1;i<=n;i++) putchar(' '); } 解: 1 1 1 1 2 1 28 D.4 (6)C 1 3 3 1 1 4 6 4 1 *2. #include if(m%n==0) return n; else return f(n,m%n); } void main() { printf(\ } 解:24 3. #include void fun(int a,int b,int c,int add,int mult) { add=a+b+c; mult=a*b*c; printf(\} void main() { int x,y; x=y=0; fun(9,12,-4,x,y); printf(\ } 解:add=17 mult=-432 add=0 mult=0 4. #include void fun(int a,int b,int c,) { add=a+b+c; mult=a*b*c; printf(\} void main() { fun(9,12,-4); printf(\ } 解:add=17 mult=-432 add=17 mult=-432 5. #include void main() { int i; void fun(); 29