C语言试题资料答案

更新时间:2023-10-01 06:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言试题

一、基础知识填空题

1、一个C程序由若干函数构成,其中有且只能有一个 主 函数。

2、C语言中的基本数据类型有整形、字符型、 实型 和 枚举类型 。 3、若变量a是数字字符,将其转换成相应的数值用什么语句 a=a+48 。

4、C语言中的数据类型有基本类型、 构造类型 和 指针 以及 空类型 。 5、若变量a是小写字母,将其转换成相应的大写字母用什么语句 a=a-65 。 6、将数学表达式y?sin(ax)?ln(a?x)?eax写成y=sin(a*x)+ln(a+x)+exp(a*x) 。 7、若有定义union st{

char name[20]; float score; int age;};

则sizeof (union st ) 为 20 。(在TC环境下) 8、有定义int td[10]={0,1,2,3,4,5,6,7,8,9}, *p, i=4; 若执行语句:

p=td;

printf(“%d”, *(p+i));

输出结果是 4 。

1. 在C语言中,关键字都用( 大写 ){大写或小写};C语言是通过有且仅有一个

( 主函数 )。

2. C语言中构造类型数据有哪三种:( 数组 )、( 结构体 )、( 公用体 )。 3. 若k=sizeof(int),I=sizeof(float),则k=( 2 ),I=( 4 )。

4. 符号?&&?是( 逻辑与 )运算符,&a是指( 取a的地址 )。 5. 能表述20

t=(x=0)&&(y=0); 则t=( 0 ),x=( 0 ),y=( 1 )。 7. 若有以下程序片段: char str[] = “ab\\\\\\n\\0””;

printf(“%d”,strlen(str)); 则输出结果是( 6 )。 如果缺省函数的类型,编译器默认它为______int________类型。

3.当函数的类型和返回值的类型不一致是,则以____ 函数________类型为准。 5.已知x=3,y=2,循环while(x == y){x--; continue; } 执行 0 次。 6. 若有定义union student

C

语言表达式为

{

char name[20]; float score; };

则sizeof (union student ) 为 20 。

二、单选题

下面哪个是合法的变量名: A 。

(A)f_max (B)typedef (C)tr?ue (D)5ac 2、下列常数中哪个是不符合C语法规定的 B (A)?\\? (B)?\\101? (C)0x1e (D)1.e5 3、C语言程序是由 C 组成的。

(A).子程序 (B) .过程 (C) .函数 (D)主程序和子程序 4、C源程序中不能表示整形常数的数制是 A

(A)二进制 (B) 八进制 (C) 十进制 (D)十六进 当定义一个共用体变量时系统分配给它的内存是( A )。 A. 各成员所需内存的总和

B. 成员中占内存量最大者所需的容量 C. 结构中第一个成员所需内存量 D. 结构中最后一个成员所需内存量

判断char类型的变量cl是否为数字字符的正确表达式为( B )

A.(cl>=0)&&(c1<=9) B .(c1>='0')&&(c1<=’9’) C.'0'<=c1<=’9' D .(c1>='0')||(cl<='9’) 10. 设有如下枚举类型定义:

enum language{Basic,Assembly,Ada=100,COBOL,Fortran};

请问枚举变量Assembly的值是( A )。 若枚举类型定义中没有指定元素的值,则整型常量值

从0开始依次递增,

(A)1 (B)0 (C)101 (D)99 执行语句for(i=0;i<1O;i++);后,变量i的值为( A )

A. 1O B . 9 C . O D . 1 15.下列语句的循环次数为( A ) int x=5;

while(x){x--;break;}

A. 1; B .5 C .6 D .无限次 4、若对两个数组a和b进行初始化

char a[]=〞abc〞;char b[]={‘a’,’b’,’c’};

则下列叙述正确的是 D 。

(A)a与b数组完全相同 (B) a与b数组长度相同 (C) a与b数组都存放字符串 (D) 数组a比数组b长度长

5、使下列程序段输出”123,456,78”由键盘输入数据,正确的输入是 C 。 int i,j,k;

scanf(“%d,=%d”,&i,&j,&k); printf(“%d,%d,%d\n”,i,j,k);

A.12345678 B .123,456,78 C .123,45678 D .123,*45678 6、下列语句中,合法的定义是 C 。

(A)int a[]=\ (类型不匹配) (B) int a[5]={0,1,2,3,4,5};(个数有6个) (C)char *s=\

(D) char a[20];a=”string”;(a是地址)

7、有以下程序

int a[3][4],*p=a[0]; 则以下 D 不是对a数组中第i行,第j列元素值的正确引用。

(A) a[i][j] (B) *(*(a+i)+j) (C) *(p+(i*4+j)) (D)*(a+i)+j

三、程序阅读填空题

1、

#include “stdio.h” void main() { int x,y,z;

__ void fun(int i, int j, int k)__________; x=4;y=12;z=6;

___ fun(x, y, z)_________;

printf(“%x=%d;y=%d;z=%d\\n”,x,y,z); }

void fun(int i, int j, int k) { int t;

t=(i+j+k)/2;

printf(“t=%d\\n”,t); }

2、这道题没题目,不知道题目的目的是干什么 #include “stdio.h” #include “string.h” void count(char a[ ]) {

int sun1=0,sum2=0,sum3=0; int i;

for(i=0;a[i]!=?\\0?;i++)

if(a[i]>=?a?&&a[i]<=?z?||a[i]>=?A?&&a[i]<=?Z?) sum1++;

else if(______________________) ____________________;

else _____________________;

printf(“sum1=%d,sum2=%d,sum3=%d\\n”,sum1,sum2,sum3); }

void main() {

char string[81];

printf(“input string:\\n”); _________________; count(string); }

10、下列程序的功能是将字符串s中所有的空格字符删去,请在______处填空。

main()

{ char *s = “Our teacher teaches C language” ; int i , j ;

for ( i=j=0 ; s[i] !=?\\0? ; i++ )

if ( s[i] != ? ? ) s[j++] = s[i]; ___s[j]=?\\0?_____ ; printf (“%s\\n”,s); }

4. 从键盘中输入一个数,将其插入到一个升序数组中,保持数组任然按升序排列,将程序

补充完整。 void main()

{ int data,temp,k;

static int a[9]={-10,2,4,8,10,15,25,50}; printf(“\\nEnter a data:”); scanf(“%d”,&data);

_____a[8]=data____________; for(k=8;___k>0_________;k--) if(a[k]

{______temp=a[k]_________; a[k]=a[k-1]; a[k-1]=temp; }

else _____ a[8]=data ____________; for(k=0;____k<9__________;k++) printf(“}”,a[k]); } 下面程序运行的结果是_______________。//这道题讲过,一个变量在那个大括号内定义就在这括号内有效 static int x=5; void main () { void f1(); void f2();

int x=10; f1(); f2();

printf(“x(1)=%d\\n”,x); } void f1() { x+=20;

printf(“x(2)=%d,”,x); } void f2() { int x=100;

printf(“x(3)=%d,”,x); } 1.求

,请将程序补充完整: ?n!(函数mm用来求阶乘)

110void main()

{ long s=0,i,mm(int k); for(i=1;i<11;i++)

s=s+mm(i); printf(“%ld”,s); }

long mm(int k) { long t=1,j;

for(j=1;j<=k;j++)

t*=j ; return t ; }

程序实现给数组a赋值,并通过指针的方式输出数组a的值,请将程序补充完整。 void main() { int a[6],i;

__int *p___________; for(i=0;i<6;i++)

scanf(“%d”,_____a[i]__________); p=a;

for(i=0;i<6;i++)

printf(“=”,_____a[i]或者*(p+i)_________); printf(“\\n”);

四.编程题

1.从键盘输入一个正整数n,求n!

2.输出100——999内的所有水仙花数。水仙花数是指3位数的各位数字的立方和等于这个位数本身。例如,153=1*1*1+5*5*5+3*3*3

3.一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出

1—5000中的所有完数。

4. 有定义int a[10]={10,2,4,1,3,7,9,5,6,8};请用选择排序法将数组a中的元素按升序排列,并输出排序后的结果

5. 从键盘输入两个整数m和n,编程求m和n的最大公约数以及最小公倍数。

6. 请编写函数 sum(a,n), 求 sn=a+aa+aaa+....+aa...aa(n个a) 的值,并在主函数中调用该函数。其中 a 是一个数字. 例如, 若a=2, n=5时: Sn=2+22+222+2222+22222, 其值应为24690. 根据下列已完成的部分, 完成未完成部分(注: 在函数 sum 中不能定义新的变量, 可不用已定义的某些变量). long sum(int a, int n) { long sn, tn; int count; ..........; return(sn); }

7.编程求一个学生n门课程的平均成绩。 8.求10以内的素数

9. 编写程序实现:求x的y次方。

10、输入任意一个3位数,将其各位数字反序输出(例如:输入123,输出321)。 11、 定义函数int f(char *x) 判断x所指的字符串是否为回文,若是则函数返回1,否

返回0。

说明:回文是指一个字符串顺序输出和逆序输出相同。例如:“abcddcba”就是一个回文。 课本:

1、 printf格式字符%d,%u,%f,%s,%c 2、带参数的宏定义及宏嵌套

3、数组元数的地址计算,数组元素的引用方式 4、C语言的基本类型

5、字符串函数(求长度、连接、比较等) 6、函数的反回值

7、不同类型的数据据相运算 8、结构体变量的存储空间的分配 9、指针的含义及间接引用 10、实参是传值与传地址

11、函数printf 和scanf 的使用 12、复合赋值 实验指导书:

P26-28、上机题1、7 P29-31、上机题2、3、7 P33-36、上机题3、9 P38、上机题3

P45、上机题7 实验二:第3,6题 实验三:第10题 实验四:第3题 实验五:第8题

本文来源:https://www.bwwdw.com/article/0zvd.html

Top