用C语言编写程序,求1+1(1+2)+1(1+2+3)+... +1(1+2+...+n)?

用C语言编写程序,求1+1(1+2)+1(1+2+3)+... +1(1+2+...+n)?,第1张

一、单选题(每题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(表达式10表达式3) B、for(表达式11表达式3)

C、语法错误 D、仅执行循环一次

6. 有以下程序段

int k=0,a=1,b=2,c=3k=a<b ? b:ak=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=1980month=3day=3

B、li.year=1980li.month=3il.day=3

C、birthday.year=1980birthday.month=3birthday.day=3

D、li.birthday.year=1980li.birthday.month=3li.birthday.day=3

18. 有以下程序

#include

#define PT 3.5

#define S(x) PT*x*x

main()

{ int a=1, b=2printf("%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=0i<10i++)

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=xi<yi++)

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=kB、pk[0]=&k[1][2]

C、pk=k[0]D、pk[1]=k

30. 程序段char *s="abcde"s+=2printf("%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=0i<100i++)

text[i]='\0'

for(i=0(ch=getchar())!='#'i++)

text[i]=ch

for(i=0,j=0text[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 = 10000j <4j++, 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=0i<=ni++)

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分)

import time

获取开始时间

start = time.time()

执行1+1运算100次

for i in range(100): a = 1 + 1

获取结束时间

end = time.time()

计算两个时间差

print("1+1运算100次程序的运行时间为:", end - start)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/11063185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存