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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)