1请阅读下面的程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int try(int x) {
static int a = 5;
int b = 2;
a += x + b; w++; return a + w; }
答案:
运行结果:try(0)=16 try(1)=22 try(2)=29
3.请阅读下面的程序,并写出它的运行结果。 #include <stdio.h> int ex( ); int x = 1; main( ) {
1.请阅读下面的程序,并写出它的基本功能和运行结果。
#include <stdio.h> #include <ctype.h> void modify(char[ ]); main( ) {
char str[ ] = "one world,one dream";
puts(str); modify(str); puts(str); } void modify(char av_str[ ]) { int i;
sum+=i*(i+1); return sum; } main() { int n; printf("\nplease input n="); scanf("%d",&n); printf("\nThe result is: %ld",func(n)); }
9.A
n m
表示从
m
个元素中抽取
n
个元素的排列的个数。它的计算公式为:A
(1)
使 t=1;
(2)
使 k=1;
(3)
使 t*k,乘积仍放在 t 中,可表示为 t*k → t;
(4)
使 k 的值加 1,即 k +1 → k ;
(5)
如果 k 不大于 n,返回步骤(3);否则算法结束。最后得到 t 的值就是 n!。
答案:
#include <stdio.h> long fact(int n); main( ) { int n=5,m=7;
printf("please input a string:"); gets(str); func(str);
printf("%s",str); }
8.请编写一个函数,其功能为:对于给定的整数 n(n>1),返回下列公式的计算结果: 1× 2+2×3+3×4+...+n×(n+1)
问题分析:计算上式的值,是一个逐步累加的过程,用一个循环就可以实现。程序流程图如 下:
1335
2n −1 2n +1
答案:
double calculate( int n ) {
int i
double result = 1.0;
for (i=1; i<=n; i++) result = result * 2*i/(2*i-1) * 2*i/(2*i+1) ;
return result; }
题目要求设计一个函数 isPrime( int x ),用于判断给定的数 x 是否为素数。很显然函数 要有返回值,当 x 为素数时返回 1,否则返回 0。按照素数的定义,我们可以从正整数 2 开 始,直到 x-1,看一下这些数中是否存在 x 的因数,如果存在则说明 x 是素数,否则 2 不是 素数。使用 for 循环可以实现这个功能。
时,sum(n)=n+ sum(n-1);当 n 为 1 时,sum(n)=1。由此,不难写出计算 1+2+3+…+n 的递归 函数。
答案:
#include <stdio.h> int sum(int n); main( ) { int n;
printf("Input n:"); scanf("%d",&n); printf("%d\n", sum(n)); }
printf("%ld\n", fact(m)/fact(m-n)); }
long fact(int n) { int k;
long t=1; for(k=1;k<=n;k++)
t=t*k; return t; }
10.请编写一个计算 1+2+3+…+n 的递归函数以及调用它的完整程序。 问题分析:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的 递归调用。对于这个题目,假设 sum(n)表示 1+2+3+…+n 的值,我们可以这样想:当 n>=2
int sum(int n) {
if(n==1) return 1;
return n+sum(n-1); }
答案:
#include<stdio.h> #include<ctype.h> void func(char str[ ]) { int i;
for(i=0;str[i]!='\0';i++){ if(str[i]>='A'&&str[i]<='Z') str[i]= str[i]+32;
} } main() { char str[100];
inຫໍສະໝຸດ Baidu x = 0;
while (x++<5) { x++; printf("%d", x);
} x += 2; ex( ); printf(“%d”, x); }
int ex( ) {
x +=2; }
答案:
运行结果:2469
4.这个函数的功能是:计算 2 × 2 × 4 × 4 × ⋅⋅⋅× 2n × 2n 的结果。请填空完成。
} }
6.请编写一个程序,输出 1000 以内的所有素数。要求: (1)设计一个函数 isPrime( int x ),专门用于判断某个给定数值是否为素数; (2)将计算出来的所有素数按照每行 8 个的格式输出。
问题分析:一个数,如果只有 1 和它本身两个因数,这样的数叫做素数(或质数)。 例如 2,3,5,7 是质数,而 4,6,8,9 则不是,后者称为合成数或合数。从这个观 点可将整数分为两种,一种叫质数,一种叫合成数。1 不是质数,也不是合数。
开始
输入 n
sum=0
i=1
N i<=n
Y sum+=i*(i+1)
i=i+1
输出 sum
结束 我们可以定义一个函数,完成计算 1× 2+2×3+3×4+...+n×(n+1)的功能,在主函数调用这 个函数。 答案: #include<stdio.h> long func(int x) { long int i,sum=0; for(i=1;i<=x;i++)
n m
=
m! (m − n)!
请编写一个程序,对于给定的
m、n,计算
A
n m
的值。要求:设计一个函数,专门用于
计算 n!。
问题分析:题目要求设计一个函数,专门用于计算 n!,而 n!= 1*2*3*…*n。可以设两
个变量,一个变量代表被乘数,一个变量代表乘数,将每一步骤的乘积放在被乘数变量中。
今设 t 代表被乘数,k 代表乘数。算法步骤如下:
for(y=2; y<=1000; y++) {
if(isPrime(y)){
printf("%5d",y);
line++;
if(line%8==0)
printf("\n");
}
}
}
7.请编写一个函数,其功能为:将给定字符串中的所有字母改写成小写字母。 问题分析:题目有一层暗含的意思:给定的字符串不一定都是字母,可能有其它字符。 另外,要求将所有的字母改成小写字母,其实就是将所有的大写字母改成小写字母,小写字 母不用动。所以我们必须判断字符是否是大写字母,若是,则转换成小写字母。 我们知道,小写字母的 ASCII 码比与它对应的大写字母 ASCII 码大 32。C 语言允许字 符数据与整数直接进行算术运算,将大写字母转换成小写字母,只将该字符加上 32。
2.请阅读下面的程序,并写出它的运行结果。 #include <stdio.h> int try(int ); int w = 3; main( ) {
int i, k;
k = 1; for(i = 0; i < 3; i++)
printf("try(%d)=%d\n", i, try(i+k)+w); }
for (i=0; av_str[i]!='\0'; i++) { if (i==0 || !isalpha(av_str[i-1]) ) av_str[i] = toupper(av_str[i]);
} }
答案:
基本功能:把字符串中的每个单词的第 1 个字母转换为大写 运行结果:One World,One Dream
题目还要求将计算出来的所有素数按照每行 8 个的格式输出,我们可以定义一个变量 line(初始值为 0),用于记录素数的个数。从 2 到 1000 的每个数调用 isPrime,判断该数 是否为素数,若为素数,则使 line 的值加 1;如果 line%8==0,就换行。
答案:
#include<stdio.h>
5.这个函数的功能是:采用选择排序的方法,将 n 个整数按照从小到大的顺序重新排 列。请填空完成。
答案:
void select_sort( int value[ ], int n ) {
int i, j, index, temp;
for (i=0; i<n-1; i++){ index = i; for (j=i+1; j<n; j++) if ( value[index]>value[j] ) index = j; if (index != i) { temp = value[index]; value[index] = value[j]; value[j] = temp; }
int isPrime(int x)
{ int i;
for(i=2; i<x; i++) {
if(x%i==0) return 0; /*如果不是素数返回 0*/
} return 1;
/*如果是素数返回 1*/
}
main() { int y, line=0;
/*y 代表被判断的数,line 代表素数个数*/
static int a = 5;
int b = 2;
a += x + b; w++; return a + w; }
答案:
运行结果:try(0)=16 try(1)=22 try(2)=29
3.请阅读下面的程序,并写出它的运行结果。 #include <stdio.h> int ex( ); int x = 1; main( ) {
1.请阅读下面的程序,并写出它的基本功能和运行结果。
#include <stdio.h> #include <ctype.h> void modify(char[ ]); main( ) {
char str[ ] = "one world,one dream";
puts(str); modify(str); puts(str); } void modify(char av_str[ ]) { int i;
sum+=i*(i+1); return sum; } main() { int n; printf("\nplease input n="); scanf("%d",&n); printf("\nThe result is: %ld",func(n)); }
9.A
n m
表示从
m
个元素中抽取
n
个元素的排列的个数。它的计算公式为:A
(1)
使 t=1;
(2)
使 k=1;
(3)
使 t*k,乘积仍放在 t 中,可表示为 t*k → t;
(4)
使 k 的值加 1,即 k +1 → k ;
(5)
如果 k 不大于 n,返回步骤(3);否则算法结束。最后得到 t 的值就是 n!。
答案:
#include <stdio.h> long fact(int n); main( ) { int n=5,m=7;
printf("please input a string:"); gets(str); func(str);
printf("%s",str); }
8.请编写一个函数,其功能为:对于给定的整数 n(n>1),返回下列公式的计算结果: 1× 2+2×3+3×4+...+n×(n+1)
问题分析:计算上式的值,是一个逐步累加的过程,用一个循环就可以实现。程序流程图如 下:
1335
2n −1 2n +1
答案:
double calculate( int n ) {
int i
double result = 1.0;
for (i=1; i<=n; i++) result = result * 2*i/(2*i-1) * 2*i/(2*i+1) ;
return result; }
题目要求设计一个函数 isPrime( int x ),用于判断给定的数 x 是否为素数。很显然函数 要有返回值,当 x 为素数时返回 1,否则返回 0。按照素数的定义,我们可以从正整数 2 开 始,直到 x-1,看一下这些数中是否存在 x 的因数,如果存在则说明 x 是素数,否则 2 不是 素数。使用 for 循环可以实现这个功能。
时,sum(n)=n+ sum(n-1);当 n 为 1 时,sum(n)=1。由此,不难写出计算 1+2+3+…+n 的递归 函数。
答案:
#include <stdio.h> int sum(int n); main( ) { int n;
printf("Input n:"); scanf("%d",&n); printf("%d\n", sum(n)); }
printf("%ld\n", fact(m)/fact(m-n)); }
long fact(int n) { int k;
long t=1; for(k=1;k<=n;k++)
t=t*k; return t; }
10.请编写一个计算 1+2+3+…+n 的递归函数以及调用它的完整程序。 问题分析:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的 递归调用。对于这个题目,假设 sum(n)表示 1+2+3+…+n 的值,我们可以这样想:当 n>=2
int sum(int n) {
if(n==1) return 1;
return n+sum(n-1); }
答案:
#include<stdio.h> #include<ctype.h> void func(char str[ ]) { int i;
for(i=0;str[i]!='\0';i++){ if(str[i]>='A'&&str[i]<='Z') str[i]= str[i]+32;
} } main() { char str[100];
inຫໍສະໝຸດ Baidu x = 0;
while (x++<5) { x++; printf("%d", x);
} x += 2; ex( ); printf(“%d”, x); }
int ex( ) {
x +=2; }
答案:
运行结果:2469
4.这个函数的功能是:计算 2 × 2 × 4 × 4 × ⋅⋅⋅× 2n × 2n 的结果。请填空完成。
} }
6.请编写一个程序,输出 1000 以内的所有素数。要求: (1)设计一个函数 isPrime( int x ),专门用于判断某个给定数值是否为素数; (2)将计算出来的所有素数按照每行 8 个的格式输出。
问题分析:一个数,如果只有 1 和它本身两个因数,这样的数叫做素数(或质数)。 例如 2,3,5,7 是质数,而 4,6,8,9 则不是,后者称为合成数或合数。从这个观 点可将整数分为两种,一种叫质数,一种叫合成数。1 不是质数,也不是合数。
开始
输入 n
sum=0
i=1
N i<=n
Y sum+=i*(i+1)
i=i+1
输出 sum
结束 我们可以定义一个函数,完成计算 1× 2+2×3+3×4+...+n×(n+1)的功能,在主函数调用这 个函数。 答案: #include<stdio.h> long func(int x) { long int i,sum=0; for(i=1;i<=x;i++)
n m
=
m! (m − n)!
请编写一个程序,对于给定的
m、n,计算
A
n m
的值。要求:设计一个函数,专门用于
计算 n!。
问题分析:题目要求设计一个函数,专门用于计算 n!,而 n!= 1*2*3*…*n。可以设两
个变量,一个变量代表被乘数,一个变量代表乘数,将每一步骤的乘积放在被乘数变量中。
今设 t 代表被乘数,k 代表乘数。算法步骤如下:
for(y=2; y<=1000; y++) {
if(isPrime(y)){
printf("%5d",y);
line++;
if(line%8==0)
printf("\n");
}
}
}
7.请编写一个函数,其功能为:将给定字符串中的所有字母改写成小写字母。 问题分析:题目有一层暗含的意思:给定的字符串不一定都是字母,可能有其它字符。 另外,要求将所有的字母改成小写字母,其实就是将所有的大写字母改成小写字母,小写字 母不用动。所以我们必须判断字符是否是大写字母,若是,则转换成小写字母。 我们知道,小写字母的 ASCII 码比与它对应的大写字母 ASCII 码大 32。C 语言允许字 符数据与整数直接进行算术运算,将大写字母转换成小写字母,只将该字符加上 32。
2.请阅读下面的程序,并写出它的运行结果。 #include <stdio.h> int try(int ); int w = 3; main( ) {
int i, k;
k = 1; for(i = 0; i < 3; i++)
printf("try(%d)=%d\n", i, try(i+k)+w); }
for (i=0; av_str[i]!='\0'; i++) { if (i==0 || !isalpha(av_str[i-1]) ) av_str[i] = toupper(av_str[i]);
} }
答案:
基本功能:把字符串中的每个单词的第 1 个字母转换为大写 运行结果:One World,One Dream
题目还要求将计算出来的所有素数按照每行 8 个的格式输出,我们可以定义一个变量 line(初始值为 0),用于记录素数的个数。从 2 到 1000 的每个数调用 isPrime,判断该数 是否为素数,若为素数,则使 line 的值加 1;如果 line%8==0,就换行。
答案:
#include<stdio.h>
5.这个函数的功能是:采用选择排序的方法,将 n 个整数按照从小到大的顺序重新排 列。请填空完成。
答案:
void select_sort( int value[ ], int n ) {
int i, j, index, temp;
for (i=0; i<n-1; i++){ index = i; for (j=i+1; j<n; j++) if ( value[index]>value[j] ) index = j; if (index != i) { temp = value[index]; value[index] = value[j]; value[j] = temp; }
int isPrime(int x)
{ int i;
for(i=2; i<x; i++) {
if(x%i==0) return 0; /*如果不是素数返回 0*/
} return 1;
/*如果是素数返回 1*/
}
main() { int y, line=0;
/*y 代表被判断的数,line 代表素数个数*/