用C语言编写程序,求1+1/(1+2)+1/(1+2+3)+... +1/(1+2+...+n)?
2021-11-29
展开全部
一、单选题(每题2分,共60分)
1. C语言源程序扩展名是( )。
A、c B、obj C、exe D、h
2. 算法的空间复杂度是指( )。
A、算法在执行过程中所需要的计算机存储空间
B、算法所处理的数据量
C、算法程序中的语句或指令条数
D、算法在执行过程中所需要的临时工作单元数
3. 系统的标准输入文件是指( )。
A、显示器 B、硬盘 C、键盘 D、软盘
4. 判断char型变量ch是否为大写字母的正确表达式是( )。
A、’A’ <=ch<=’Z’
B、(ch>=’A’)||(ch<=’Z’)
C、(ch>=’A’)&&(ch<=’Z’)
D、(’A’=ch)
5. 对for(表达式1;;表达式3),可理解为( )。
A、for(表达式1;0;表达式3) B、for(表达式1;1;表达式3)
C、语法错误 D、仅执行循环一次
6. 有以下程序段
int k=0,a=1,b=2,c=3; k=a<b ? b:a; k=k>c ? c:k;
执行该程序段后,k的值是( )。
A、3 B、2 C、1 D、0
7. 以下描述中正确的是( )。
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while循环由do开始,用while结束,在while(表达式) 后面不能写分号
C、在do-while循环体中,是先执行一次循环,再进行判断
D、do-while循环中,根据情况可以省略while
8. C源程序中不能表示的数制是( )。
A、二进制 B、八进制 C、十进制 D、十六进制
9. 关于C语言的数据类型,下列说法不正确的是( )。
A、C语言包含基本数据类型 B、C语言包含指针类型
C、C语言包含字符串类型 D、C语言包含结构体类型
10. C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符( )。
A、必须为字母 B、必须为下划线
C、必须为字母或下划线 D、可以是字母,数字和下划线中任一字符
11. 下面有关C程序书写风格的说法中,错误的是( )。
A、每一对{}上下对齐 B、每一行的C语句尽可能长度一致
C、每一对{}内的语句左对齐 D、不同语句段采用缩进格式以示区别
12. 下列四组选项中,正确的C语言标识符是( )。
A、%x B、a+b C、a123 D、123
13. 计算机能直接执行的程序是( )。
A、源程序 B、目标程序 C、汇编程序 D、可执行程序
14. break语句不能出现在( )语句中
A、switch B、for C、while D、if…else
15. 以下关于简单程序设计的步骤和顺序的说法中正确的是( )。
A、确定算法后,整理并写出文档,最后进行编码和上机调试
B、首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C、先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D、先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
16. 执行下面的程序段后,变量k中的值为( )。
int k=3, s[2];
s[0]=k;
k=s[0]*10;
A、不定值 B、33 C、30 D、10
17. 已知对学生记录的描述为:
struct teacher
{
int sex;
char name[20];
int age;
struct{
int year,month,day;
}birthday;
};
struct teacher li;
设变量li中的“生日”是“1980年3月3日”,对“birthday”正确赋值的程序是( )。
A、year=1980;month=3;day=3;
B、li.year=1980;li.month=3;il.day=3;
C、birthday.year=1980;birthday.month=3;birthday.day=3;
D、li.birthday.year=1980;li.birthday.month=3;li.birthday.day=3;
18. 有以下程序
#include
#define PT 3.5;
#define S(x) PT*x*x;
main()
{ int a=1, b=2; printf("%4.1f\n",S(a+b));}
程序运行后输出的结果是( )。
A、14.0 B、31.5
C、7.5 D、程序有错无输出结果
19. 下列命令或语句中,正确的是( )。
A、#define MYNAME=”ABC”
B、#include stdio.h
C、for(i=0;i<10;i++);
D、struct int stu{int name};
20. 已知枚举类型定义语句为:
enum Token{ NAME,NUMBER,PLUS=5,MINUS,PRINT=10};
则下列叙述中错误的是( )。
A、枚举常量MINUS的值为6 B、枚举常量PRINT的值为10
C、枚举常量NUMBER的值为1 D、枚举常量NAME的值为1
21. 设有以下说明语句:
typedef struct
int n;
char ch[8];
} PER;
则下面叙述中正确的是( )。
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名
22. 以下函数的功能是:求x的y次方,请填空( )。
#include<stdio.h></stdio.h>
void main( )
{ int i,x,y;
double z;
scanf("%d %d",&x,&y);
for(i=1,z=x;i<y;i++)
z=z*______ ;
printf("x^y=%e\n",z);
}
A、i++ B、x++ C、x D、i
23. 若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是( )。
A、#define N 10
int a[N];
B、#define n 5
int a [2*n];
C、int a[5+5];
D、int n=10,a[n];
24. 若有以下语句
typedef struct S
{int g ; char h;} T;
以下叙述中正确的是 ( )。
A、可用S 定义结构体变量 B、可用T 定义结构体变量
C、S 是struct 类型的变量 D、T 是struct S 类型的变量
25. 若有定义语句:char s[10]="1234567\0\0";,则 strlen(s)的值是( )。
A、7 B、8 C、9 D、10
26. 若有定义:int a[5], *p=a;,则对a数组元素的正确引用是( )。
A、*&a[5] B、a + 2
C、*(p + 5) D、*(a +2)
27. 若有以下函数首部
int fun(double x[10], int *n)
则下面针对此函数的函数声明语句中正确的是 ( )。
A、int fun(double x, int *n);
B、int fun(double , int );
C、int fun(double *x, int n);
D、int fun(double *, int *);
28. 若有定义:int a[2][3];则对a数组的第i行第j列元素地址的正确引用是( )。
A、*(a[i]+j) B、(a+i)
C、*(a+j) D、a[i]+j
29. 若有定义语句:int k[2][3],*pk[3];,则以下语句中正确的是( )。
A、pk=k; B、pk[0]=&k[1][2];
C、pk=k[0]; D、pk[1]=k;
30. 程序段char *s="abcde"; s+=2; printf("%d",s);的运行结果是( )。
A、cde B、字符'c'
C、字符'c'的地址 D、无确定的输出结果
二、是非题(每题1分,共10分)
1. 一维数组在定义时进行初始化,也必须指名数组大小。( )
2. C语言中的字符常量可以像整数一样在程序中参与运算。( )
3. break;语句执行时退出到包含该break;语句的所有循环外。( )
4. 有参的宏,其参数参与运算,宏替换要先完成参数的计算,然后再执行替换。( )
5. 在C程序中,数据只能用二进制的形式进行存放。( )
6. 指针可以加上或减去一个整数。( )
7. 在switch语句中必须使用default。( )
8. C语言的特点是简洁,编译程序小、效率高。( )
9. 字符数组中的字符串可以直接进行比较。( )
10. C程序通过编译之后会产生一个扩展名为exe的可执行程序。( )
三、问答题(每题10分,共30分)
1. 请写出实现选择结构的三种语句。写出关键字,表达式和语句用“表达式”和“语句i”(i=1,2,…)。
2. 请将以下程序中的数组改写成指针形式,并将用户输入的字符串按照单词进行分割后再输出。提示:单词是指用空格、\t或\n分割的部分,同时用二维数组来储存单词。#include<stdio.h>
char text[100],ch;
int i,j;
for(i=0;i<100;i++)
text[i]='\0';
for(i=0;(ch=getchar())!='#';i++)
text[i]=ch;
for(i=0,j=0;text[i]!='\0';i++)
if(text[i]==' '||text[i]=='\t'||text[i]=='\n')
printf(" ");
else
printf("%c",text[i]);
3. 阅读以下程序,并写出900和1250的罗马表示及运算步骤。
int n,i,j,k;
char *roman[4][10]={"","I","II","III","IV","V","VI","VII","VIII","IX",
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC",
"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM",
"","M","MM","MMM"};
scanf("%d", &n);
printf("%d = ", n);
for(j = 0, i = 10000; j < 4; j++, i/=10)
k = (n%i) / (i/10);
printf("%s", roman[3-j][k]);
printf("\n");
三、问答题(每题10分,共30分)
答案:
单分支if选择结构,一般格式为:
if ( 表达式 )
{ 语句;}(2分)
双分支if-else选择结构,一般格式为:
{ 语句1;}
{ 语句2;}(3分)
多分支 switch选择结构,一般格式为:
switch( 表达式 )
case 常量表达式1: [语句序列1;] [break;]
case 常量表达式2: [语句序列2;] [break;]
……
case 常量表达式n: [语句序列n;] [break;]
default: 语句序列n+1;
}(5分)
#include<stdio.h>
char text[100],words[100][20], *t=text,(*w)[20]=words; (2分)
int i,j=0,n=0;
for(i=0;(*(t+i)=getchar())!='#';i++);(2分)
for(i=0;*(t+i)!='#';i++)
if(*(t+i)!=' '&&*(t+i)!='\t'&&*(t+i)!='\n')
*(*(w+n)+j++)=*(t+i); (2分)
n++;
j=0; (2分)
for(i=0;i<=n;i++)
printf("%s ",*(w+i)); (2分)
k=(900%10000)/(10000/10)=0 j=0 roman[3][0]---(空) (1分)
k=(900%1000)/(1000/10)=9 j=1 roman[2][9]---CM (1分)
k=(900%100)/(100/10)=0 j=2 roman[1][0]---(空) (1分)
k=(900%10)/(10/10)=0 j=3 roman[0][0]---(空) (1分)
故900的罗马数字表示为CM (1分)
k=(1250%10000)/(10000/10)=1 j=0 roman[3][1]---M (1分)
k=(1250%1000)/(1000/10)=2 j=1 roman[2][2]---CC (1分)
k=(1250%100)/(100/10)=5 j=2 roman[1][5]---L (1分)
k=(1250%10)/(10/10)=0 j=3 roman[0][0]---(空) (1分)
故1250的罗马数字表示为MCCL (1分)
1. C语言源程序扩展名是( )。
A、c B、obj C、exe D、h
2. 算法的空间复杂度是指( )。
A、算法在执行过程中所需要的计算机存储空间
B、算法所处理的数据量
C、算法程序中的语句或指令条数
D、算法在执行过程中所需要的临时工作单元数
3. 系统的标准输入文件是指( )。
A、显示器 B、硬盘 C、键盘 D、软盘
4. 判断char型变量ch是否为大写字母的正确表达式是( )。
A、’A’ <=ch<=’Z’
B、(ch>=’A’)||(ch<=’Z’)
C、(ch>=’A’)&&(ch<=’Z’)
D、(’A’=ch)
5. 对for(表达式1;;表达式3),可理解为( )。
A、for(表达式1;0;表达式3) B、for(表达式1;1;表达式3)
C、语法错误 D、仅执行循环一次
6. 有以下程序段
int k=0,a=1,b=2,c=3; k=a<b ? b:a; k=k>c ? c:k;
执行该程序段后,k的值是( )。
A、3 B、2 C、1 D、0
7. 以下描述中正确的是( )。
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while循环由do开始,用while结束,在while(表达式) 后面不能写分号
C、在do-while循环体中,是先执行一次循环,再进行判断
D、do-while循环中,根据情况可以省略while
8. C源程序中不能表示的数制是( )。
A、二进制 B、八进制 C、十进制 D、十六进制
9. 关于C语言的数据类型,下列说法不正确的是( )。
A、C语言包含基本数据类型 B、C语言包含指针类型
C、C语言包含字符串类型 D、C语言包含结构体类型
10. C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符( )。
A、必须为字母 B、必须为下划线
C、必须为字母或下划线 D、可以是字母,数字和下划线中任一字符
11. 下面有关C程序书写风格的说法中,错误的是( )。
A、每一对{}上下对齐 B、每一行的C语句尽可能长度一致
C、每一对{}内的语句左对齐 D、不同语句段采用缩进格式以示区别
12. 下列四组选项中,正确的C语言标识符是( )。
A、%x B、a+b C、a123 D、123
13. 计算机能直接执行的程序是( )。
A、源程序 B、目标程序 C、汇编程序 D、可执行程序
14. break语句不能出现在( )语句中
A、switch B、for C、while D、if…else
15. 以下关于简单程序设计的步骤和顺序的说法中正确的是( )。
A、确定算法后,整理并写出文档,最后进行编码和上机调试
B、首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档
C、先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档
D、先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
16. 执行下面的程序段后,变量k中的值为( )。
int k=3, s[2];
s[0]=k;
k=s[0]*10;
A、不定值 B、33 C、30 D、10
17. 已知对学生记录的描述为:
struct teacher
{
int sex;
char name[20];
int age;
struct{
int year,month,day;
}birthday;
};
struct teacher li;
设变量li中的“生日”是“1980年3月3日”,对“birthday”正确赋值的程序是( )。
A、year=1980;month=3;day=3;
B、li.year=1980;li.month=3;il.day=3;
C、birthday.year=1980;birthday.month=3;birthday.day=3;
D、li.birthday.year=1980;li.birthday.month=3;li.birthday.day=3;
18. 有以下程序
#include
#define PT 3.5;
#define S(x) PT*x*x;
main()
{ int a=1, b=2; printf("%4.1f\n",S(a+b));}
程序运行后输出的结果是( )。
A、14.0 B、31.5
C、7.5 D、程序有错无输出结果
19. 下列命令或语句中,正确的是( )。
A、#define MYNAME=”ABC”
B、#include stdio.h
C、for(i=0;i<10;i++);
D、struct int stu{int name};
20. 已知枚举类型定义语句为:
enum Token{ NAME,NUMBER,PLUS=5,MINUS,PRINT=10};
则下列叙述中错误的是( )。
A、枚举常量MINUS的值为6 B、枚举常量PRINT的值为10
C、枚举常量NUMBER的值为1 D、枚举常量NAME的值为1
21. 设有以下说明语句:
typedef struct
int n;
char ch[8];
} PER;
则下面叙述中正确的是( )。
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名
22. 以下函数的功能是:求x的y次方,请填空( )。
#include<stdio.h></stdio.h>
void main( )
{ int i,x,y;
double z;
scanf("%d %d",&x,&y);
for(i=1,z=x;i<y;i++)
z=z*______ ;
printf("x^y=%e\n",z);
}
A、i++ B、x++ C、x D、i
23. 若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是( )。
A、#define N 10
int a[N];
B、#define n 5
int a [2*n];
C、int a[5+5];
D、int n=10,a[n];
24. 若有以下语句
typedef struct S
{int g ; char h;} T;
以下叙述中正确的是 ( )。
A、可用S 定义结构体变量 B、可用T 定义结构体变量
C、S 是struct 类型的变量 D、T 是struct S 类型的变量
25. 若有定义语句:char s[10]="1234567\0\0";,则 strlen(s)的值是( )。
A、7 B、8 C、9 D、10
26. 若有定义:int a[5], *p=a;,则对a数组元素的正确引用是( )。
A、*&a[5] B、a + 2
C、*(p + 5) D、*(a +2)
27. 若有以下函数首部
int fun(double x[10], int *n)
则下面针对此函数的函数声明语句中正确的是 ( )。
A、int fun(double x, int *n);
B、int fun(double , int );
C、int fun(double *x, int n);
D、int fun(double *, int *);
28. 若有定义:int a[2][3];则对a数组的第i行第j列元素地址的正确引用是( )。
A、*(a[i]+j) B、(a+i)
C、*(a+j) D、a[i]+j
29. 若有定义语句:int k[2][3],*pk[3];,则以下语句中正确的是( )。
A、pk=k; B、pk[0]=&k[1][2];
C、pk=k[0]; D、pk[1]=k;
30. 程序段char *s="abcde"; s+=2; printf("%d",s);的运行结果是( )。
A、cde B、字符'c'
C、字符'c'的地址 D、无确定的输出结果
二、是非题(每题1分,共10分)
1. 一维数组在定义时进行初始化,也必须指名数组大小。( )
2. C语言中的字符常量可以像整数一样在程序中参与运算。( )
3. break;语句执行时退出到包含该break;语句的所有循环外。( )
4. 有参的宏,其参数参与运算,宏替换要先完成参数的计算,然后再执行替换。( )
5. 在C程序中,数据只能用二进制的形式进行存放。( )
6. 指针可以加上或减去一个整数。( )
7. 在switch语句中必须使用default。( )
8. C语言的特点是简洁,编译程序小、效率高。( )
9. 字符数组中的字符串可以直接进行比较。( )
10. C程序通过编译之后会产生一个扩展名为exe的可执行程序。( )
三、问答题(每题10分,共30分)
1. 请写出实现选择结构的三种语句。写出关键字,表达式和语句用“表达式”和“语句i”(i=1,2,…)。
2. 请将以下程序中的数组改写成指针形式,并将用户输入的字符串按照单词进行分割后再输出。提示:单词是指用空格、\t或\n分割的部分,同时用二维数组来储存单词。#include<stdio.h>
char text[100],ch;
int i,j;
for(i=0;i<100;i++)
text[i]='\0';
for(i=0;(ch=getchar())!='#';i++)
text[i]=ch;
for(i=0,j=0;text[i]!='\0';i++)
if(text[i]==' '||text[i]=='\t'||text[i]=='\n')
printf(" ");
else
printf("%c",text[i]);
3. 阅读以下程序,并写出900和1250的罗马表示及运算步骤。
int n,i,j,k;
char *roman[4][10]={"","I","II","III","IV","V","VI","VII","VIII","IX",
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC",
"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM",
"","M","MM","MMM"};
scanf("%d", &n);
printf("%d = ", n);
for(j = 0, i = 10000; j < 4; j++, i/=10)
k = (n%i) / (i/10);
printf("%s", roman[3-j][k]);
printf("\n");
三、问答题(每题10分,共30分)
答案:
单分支if选择结构,一般格式为:
if ( 表达式 )
{ 语句;}(2分)
双分支if-else选择结构,一般格式为:
{ 语句1;}
{ 语句2;}(3分)
多分支 switch选择结构,一般格式为:
switch( 表达式 )
case 常量表达式1: [语句序列1;] [break;]
case 常量表达式2: [语句序列2;] [break;]
……
case 常量表达式n: [语句序列n;] [break;]
default: 语句序列n+1;
}(5分)
#include<stdio.h>
char text[100],words[100][20], *t=text,(*w)[20]=words; (2分)
int i,j=0,n=0;
for(i=0;(*(t+i)=getchar())!='#';i++);(2分)
for(i=0;*(t+i)!='#';i++)
if(*(t+i)!=' '&&*(t+i)!='\t'&&*(t+i)!='\n')
*(*(w+n)+j++)=*(t+i); (2分)
n++;
j=0; (2分)
for(i=0;i<=n;i++)
printf("%s ",*(w+i)); (2分)
k=(900%10000)/(10000/10)=0 j=0 roman[3][0]---(空) (1分)
k=(900%1000)/(1000/10)=9 j=1 roman[2][9]---CM (1分)
k=(900%100)/(100/10)=0 j=2 roman[1][0]---(空) (1分)
k=(900%10)/(10/10)=0 j=3 roman[0][0]---(空) (1分)
故900的罗马数字表示为CM (1分)
k=(1250%10000)/(10000/10)=1 j=0 roman[3][1]---M (1分)
k=(1250%1000)/(1000/10)=2 j=1 roman[2][2]---CC (1分)
k=(1250%100)/(100/10)=5 j=2 roman[1][5]---L (1分)
k=(1250%10)/(10/10)=0 j=3 roman[0][0]---(空) (1分)
故1250的罗马数字表示为MCCL (1分)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询