C语言程序设计A复习资料一

更新时间:2023-09-05 03:47:01 阅读量: 教育文库 文档下载

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

C语言程序设计A复习资料一

C语言程序设计A复习资料一

一、单选题

1. 由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。

A. cpp B. exe C. obj D. c

2. 设有两条语句为“int a=12; a+=a*a;”,则执行结束后,a的值为( )。

A. 12 B. 144 C. 156 D. 288

3. 带有随机函数调用的表达式rand()%20的值在( )区间内。

A. 1~19 B. 1~20 C. 0~19 D. 0~20

4. for循环语句“for(i=0; i<n; i+=2) S;”中循环体S语句被执行的次数为( )。

A. (n+1)/2 B. n/2+1 C. n/2-1 D. n-1

5. 在下列的字符数组定义中,存在语法错误的是( )。

A. char a[20]="abcdefg"; B. char a[]="x+y=55.";

C. char a[15]={'1','2'}; D. char a[10]='5';

6. 若有一个函数原型为“double *function()”,则它的返回值类型为( )。

A. 实数型 B. 实数指针型 C. 函数指针型 D. 数组型

7. 在C语言中,所有预处理命令都是以( )符号开头的。

A. * B. # C. & D. @

8. 假定整数指针p所指数据单元的值为30,p+1所指数据单元的值为40,则执行*p++后,p所指数据单元的值为( )。

A. 40 B. 30 C. 70 D. 10

9. 若要使p指向二维整型数组a[10][20],则p的类型为( )。

A. int * B. int ** C. int *[20] D. int(*)[20]

10. 表示文件结束符的符号常量为( )

A. eof B. Eof C. EOF D. feof

二、填空题

1.一个函数定义由________和函数体两部分组成。

2. 执行“printf("%c",'F'-2);”语句后得到的输出结果为________。

3.int类型的长度为________。

4. 表达式(float)25/4的值为________。

5.若x=5,y=10,则x<=y的逻辑值为________。

C语言程序设计A复习资料一

6. 作为语句标号使用的case和default只能用于________语句的定义体中。

7. 在程序中执行到________语句时,将结束所在函数的执行过程,返回到调用该函数的位置。

8. 假定二维数组的定义为“char a[M][N];”,则该数组所含元素的个数为________。

9. 存储字符'a'需要占用存储器的________个字节空间。

10. 用于存储一个长度为n的字符串的字符数组的长度至少为________。

11. 假定p所指对象的值为25,p+1所指对象的值为46,则执行表达式(*p)++后,p所指对象的值为________。

12. 假定p是一个指向整数对象的指针,则用________表示该整数对象。

13.假定一个结构类型的定义为“struct B{int a[5]; char* b;};”,则该类型的理论长度为________。

三、写出下列每个程序运行后的输出结果

1. #include<stdio.h>

void main() {

int i, s1=0, s2=0;

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

if(i%2) s1+=i;

else s2+=i;

printf("%d %d\n",s1,s2);

}

2. #include<stdio.h>

const int M=20;

void main()

{

int i=2;

while(1) {

if(i>M/2) break;

if(M%i==0) printf("%d ",i);

i++;

}

printf("\n");

}

C语言程序设计A复习资料一

3. #include<stdio.h>

int a[6]={4,5,6,15,20,12};

void main()

{

int i,s1,s2;

s1=s2=0;

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

switch(a[i]%2) {

case 0: s2+=a[i];break;

case 1: s1+=a[i];break;

}

}

printf("%d %d\n",s1,s2);

}

4. #include<stdio.h>

void main() {

int a[3][3]={{3,5,7},{9,11,13},{6,8,20}};

int i,*p=&a[0][0];

for(i=0;i<9;i++) {

if(*p>10) printf("%d ",*p);

p++;

}

printf("\n");

}

5. #include<stdio.h>

#include<string.h>

struct Worker { char name[15]; int age; float pay;};

void main() {

struct Worker x;

char *t="liouting";

int d=38; float f=400;

strcpy(http://www.77cn.com.cn,t);

x.age=d; x.pay=f;

x.age++; x.pay*=2;

printf("%s %d %6.2f\n",http://www.77cn.com.cn,x.age,x.pay);

C语言程序设计A复习资料一

}

四、写出下列每个函数的功能

1. #include<stdio.h>

int SA(int a, int b) {

if(a>b) return 1;

else if(a==b) return 0;

else return -1;

}

函数功能:

2. void Output(struct IntNode *f) //f为单链表的表头指针

{

if(!f) return;

while(f) {

printf("%d ",f->data);

f=f->next;

}

printf("\n");

}

假定struct IntNode的类型定义为:

struct IntNode { int data; struct IntNode* next;};

函数功能:

五、按题目要求编写程序或函数

6. 编写一个程序,计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。

6. 根据函数原型“int FF(int a[], int n)”,编写函数定义,计算并返回数组a[n]中所有元素之和。

参考答案

一、单选题

1. B 2. C 3. C 4. A 5. D

6. B 7. B 8. A 9. D 10. C

二、填空题

1. 函数头 2. D 3. 4 4. 6.25

5. 1 6. switch 或开关 或分情况

7. return 或返回 8. M*N

C语言程序设计A复习资料一

9. 1 10. n+1 11. 26 12. *p 13. 24

三、写出下列每个程序运行后的输出结果

评分标准:根据答案正确程度酌情给分。

1. 25 20

2. 2 4 5 10

3. 20 42

4. 11 13 20

5. liouting 39 800.00

四、写出下列每个函数的功能

评分标准:根据答案叙述的正确与完善程度酌情给分。

1. 比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a<b则返回-1。

2. 遍历并输出由f所指向的单链表中每个结点的值。

五、按题目要求编写程序或函数

评分标准:按程序或函数编写的正确与完整程度酌情给分。

1.

#include<stdio.h>

void main()

{

int i;

int p=1;

int s=1;

for(i=1;i<=10;i++) {p*=3; s+=p;}

printf("%d\n",s);

}

2. int FF(int a[], int n)

{

int i,sum=0;

for(i=0; i<n; i++) sum+=a[i];

return sum;

}

C语言程序设计A复习资料二

一、选择题

1. 由C语言源程序文件编译而成的目标文件的缺省扩展名为( )。

A. cpp B. exe C. obj D. C

2. C语言程序的基本模块为( )。

A. 表达式 B. 标识符 C. 语句 D. 函数

3. x>0 || y==5的相反表达式为( )。

A. x<=0 || y!=5 B. x<=0 && y!=5

C. x>0 || y!=5 D. x>0 && y==5

C语言程序设计A复习资料一

4. 枚举类型中的每个枚举常量的值都是一个( )。

A. 整数 B. 浮点数

C. 字符 D. 逻辑值

5. 循环语句“for(int i=0; i<n; i++) S;”中循环体S被执行的次数为( )。

A. 1 B. n-1 C. n D. n+1

6. 在下面的while循环语句中,其循环体被执行的次数为( )。

int i=0,s=0; while(s<20) {i++; s+=i;}

A. 4 B. 5 C. 6 D. 7

7. 若定义了函数 double *function(), 则返回值类型为( )。

A. 实数型 B. 实数指针型 C. 函数指针型 D. 数组型

8. 若用数组名作为函数调用的实参,传递给形参的是( )。

A. 数组的首地址 B. 数组中第一个元素的值

C. 数组中全部元素的值 D. 数组元素的个数

9. 假定a为一个整型数组名,则元素a[4]的地址比该数组的首地址大( )个字节。

A. 4 B. 8 C. 16 D. 32

10. 下列给字符数组赋初值时,正确的是( )。

A. char s1[]="abcdef"; B. char s2[4]="abcd";

C. char s3[2][3]={"abc","xyz"}; D. char s4[4][]={'a','x','s','t'};

A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s;

11. 要使p指向二维整型数组a[10][20],p应定义为( )。

A. int *p=a; B. int **p=a; C. int *p[20]=a; D. int(*p)[20]=a;

12. 标准输入设备的文件流标识符是( )。

A. stdin B. stdout C. stderr D. stdio

13. 若要以读/写操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为( )。

A. "r+" B. "ab+" C. "rb+" D. "wb+"

二、填空题

1. 单行或多行注释的开始标记符为__________。

2. 使用#include命令可以包含一个头文件,也可以包含一个______文件。

3. 执行“printf("%s%s%d","wei","rong",18);”语句后得到的输出结果为________。

4.执行“printf("%c",'A'+2);”语句后得到的输出结果为________。

5.short类型的大小为________个字节。

6. 十进制数3.26f的类型为________。

7. 假定y=10,则表达式++y*3的值为________。

8. 关系表达式(x==0)的等价表达式为________。

9.若x=5,y=10,则x!=y的逻辑值为________。

10. 在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。

11. 当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。

12. 假定二维数组的定义为“char a[M][N];”,则该数组所占存储空间的字节数为________。

13. 存储字符串"a"需要占用存储器的________个字节空间。

14. strlen函数用于计算一个字符串的________。

C语言程序设计A复习资料一

15.函数中的形参变量的初值由调用该函数时对应的________值决定。

16. 程序的编译是以__________为单位进行的。

17. 假定a是一个一维数组,则a[i]的指针访问方式为________。

18. 执行int *p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为________。

19. 假定要动态分配一个类型为struct Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句表达式为 ________________ =malloc(n*sizeof(struct Worker))。

20. 与结构成员访问表达式p->name等价的表达式是____________。

三、写出下列每个程序运行后的输出结果

1. #include<stdio.h>

void main() {

int i, s=0;

for(i=1;;i++) {

if(s>50) break;

if(i%2==0) s+=i;

}

printf("i,s=%d, %d\n",i,s);

}

2. #include<stdio.h>

void main() {

char ch='*';

int i, n=5;

while(1) {

for(i=0;i<n;i++) printf("%c",ch);

printf("\n");

if(--n==0) break;

}

}

3. #include<stdio.h>

void main()

{

int x=24,y=88;

int i=2,p=1;

do {

while(x%i==0 && y%i==0) {

p*=i; x/=i; y/=i;

}

i++;

}while(x>=i && y>=i);

printf("%d\n",p*x*y);

C语言程序设计A复习资料一

}

4. #include<stdio.h>

void main() {

int a[9]={36,25,48,24,55,40,18,66,20};

int i, b1, b2;

a[0]<=a[1]? (b1=a[0], b2=a[1]):(b1=a[1],b2=a[0]);

for(i=2; i<9; i++)

if(a[i]<b1) {b2=b1; b1=a[i];}

else if(a[i]<b2) b2=a[i];

printf("%d %d\n",b1,b2);

}

5. #include<stdio.h>

void main() {

int a=10, b=20;

printf("%d %d\n",a,b);

{ int b=a+25;

a*=4;

printf("%d %d\n",a,b);

}

printf("%d %d\n",a,b);

}

6. #include<stdio.h>

void SelectSort(int a[], int n)

{

int i,j,k,x;

for(i=1;i<n;i++) { //进行n-1次选择和交换

k=i-1;

for(j=i;j<n;j++)

if(a[j]<a[k]) k=j;

x=a[i-1]; a[i-1]=a[k]; a[k]=x;

}

}

void main()

{

int i;

int a[6]={20,15,32,47,36,28};

SelectSort(a,6);

for(i=0; i<6; i++) printf("%d ",a[i]);

printf("\n");

}

C语言程序设计A复习资料一

7. #include<stdio.h>

void LE(int* a, int* b) {

int x=*a;

*a=*b; *b=x;

}

void main() {

int x=15, y=26;

printf("%d %d\n",x,y);

LE(&x,&y);

printf("%d %d\n",x,y);

}

8. #include<stdio.h>

#include<string.h>

struct Worker {

char name[15]; //姓名

int age; //年龄

float pay; //工资

};

int Equal(struct Worker* r1, struct Worker* r2)

{

if(strcmp(r1->name, r2->name)==0) return 1;

else return 0;

}

void main() {

struct Worker a[4]={{"abc",25,420},{"defa",58,638},

{"ghin",49,560},{"jklt",36,375}};

struct Worker x={"defa"};

int i;

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

if(Equal(a+i,&x)) break;

if(i>=4) printf("没有查找所需要的记录!\n");

else printf("%s %d %6.2f\n",a[i].name,a[i].age,a[i].pay); }

四、写出下列每个函数的功能

1. int SE(int n) { //n为大于等于1的整数

int x,s=0;

printf("输入%d个整数: ",n);

scanf("%d",&x);

if(n==1) return x;

s=x;

while(--n) {scanf("%d",&x); s+=x;}

return s;

C语言程序设计A复习资料一

}

2. #include<stdio.h>

void WA(int a[], int n) {

int i,k,j,x;

for(i=0;i<n-1;i++) {

k=i;

for(j=i+1;j<n;j++)

if(a[j]>a[k]) k=j;

x=a[i]; a[i]=a[k]; a[k]=x;

}

}

3. #include<stdio.h>

int* LJ(int a[], int n) {

int i,k=0;

for(i=1;i<n;i++)

if(a[i]>a[k]) k=i;

return &a[k];

}

4. int Output(struct IntNode *f)

{

int sum=0;

if(!f) return -9999; //用返回特定值-9999表示空表

while(f) {

sum+=f->data;

f=f->next;

}

return sum;

}

假定struct IntNode的类型定义为:

struct IntNode {

int data; //结点值域

struct IntNode* next; //结点指针域

};

5. int wr4(FILE* fptr)

{

char ch;

int c=0;

fseek(fptr,0,SEEK_SET);

while(1) {

ch=fgetc(fptr);

C语言程序设计A复习资料一

if(ch!=EOF) c++;

else break;

}

return c;

}

五、根据下列每个题目要求编写程序

1. 编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。

210 2. 编写一个主函数,计算1+3+3+...+3的值并输出,假定分别用i,p,s作为循环变

量、累乘变量和累加变量的标识符。

3. 编写一个主函数,已知6≤a≤40,15≤b≤30,求出满足不定方程2a+5b=120的全部整数组解。如(13,20)就是其中的一组解。

参考答案

一、选择题

1. C 2. D 3. B 4. A 5. C

6. C 7. B 8. A 9. C 10. A

11. D 12. A 13. C

二、填空题

1. /* 2. 程序

3. weirong18 4. C

5. 2 6. float

7. 33 8. (!x)

9. 1 10. if

11. continue 12. M*N

13. 2 14. 长度

15. 实参 16. 程序文件

17. *(a+i) 18. *p

19. struct Worker* r 20. (*p).name

三、写出下列每个程序运行后的输出结果

1.

i,s=15, 56

2.

*****

****

***

**

*

3.

C语言程序设计A复习资料一

264

4.

18 20

5.

10 20

40 35

40 20

6.

15 20 28 32 36 47

7.

15 26

26 15

8.

defa 58 638.00

四、写出下列每个函数的功能

1. 求出从键盘上输入的n个整数之和并返回。

2. 采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。

3. 求出数组a中n个元素的最大值元素,返回该元素的地址

4. 对于以表头指针为f的链表,求出并返回所有结点中data域的值之和。

5. 求出一个以fptr为文件流的所对应文件的长度,即所存字符的个数。

五、根据下列每个题目要求编写程序

1. double fun()

{

double a[4][4];

double s=0;

int i,j;

printf("输入一个4*4的数值矩阵:\n");

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

for(j=0;j<4;j++) scanf("%lf",&a[i][j]);

for(i=0;i<4;i++) s+=a[i][i];

return s;

}

2. #include<stdio.h>

void main()

{

int i; //用i作为循环变量

C语言程序设计A复习资料一

int p=1; //用p作为累乘变量

int s=1; //用s作为累加循环变量

for(i=1;i<=10;i++) {p*=3; s+=p;}

printf("%d\n",s);

}

3. #include<stdio.h>

void main()

{

int a,b;

for(a=6;a<=40; a++)

for(b=15;b<=30;b++)

if(2*a+5*b==120) printf("(%d, %d)\n",a,b); }

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

Top