C语言程序设计上机及习题集

更新时间:2023-09-23 14:39:02 阅读量: IT计算机 文档下载

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

C语言试卷

C语言程序设计复习题

一、

选择题

(1) 设有 int x=11; 则表达式 (x++ * 1/3) 的值是

A) 3 B) 4 C) 11 D) 12 (2) 下列程序的输出结果是

A) 3 B) 3.2 C) 0 D) 3.07 main()

{ double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(\ }

(3) 下列程序执行后的输出结果是(小数点后只写一位)

A) 6 6 6.0 6.0 B) 6 6 6.7 6.7 C) 6 6 6.0 6.7 D) 6 6 6.7 6.0 main()

{ double d; float f; ling l; int i; i=f=1=d=20/3;

printf(\ }

(4) 下列变量定义中合法的是

A) short _a=1-.le-1; B) double b=1+5e2.5; C) long do=0xfdaL; D) float 2_and=1-e-3; (5) 设 int x=1, y=1; 表达式(!x||y--)的值是

A) 0 B) 1 C) 2 D) -1 (6) 与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是 A) if (x>0) y=1; B) if(x)

else if(x<0)y=-1; if(x>0)y=1; else y=0; else if(x<0)y=-1; else y=0; C) y=-1 D) y=0; if(x) if(x>=0) if(x>0)y=1; if(x>0)y=1; else if(x==0)y=0; else y=-1; else y=-1; (7) 以下循环体的执行次数是

A) 3 B) 2 C) 1 D) 0 main() { int i,j;

for(i=0,j=1; i<=j+1; i+=2, j--)printf(\ }

第1页(本试卷共25页)

C语言试卷

(8) 以下叙述正确的是

A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。

C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。 (9) 下列程序执行后的输出结果是

A) G B) H C) I D) J main()

{ int x='f'; printf(\(10) 执行下面的程序段后,变量k中的值为

A) 不定值 B) 33 C) 30 D) 10 int k=3, s[2]; s[0]=k; k=s[1]*10; (11) 若已定义:

int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i; 其中 0≤i≤9, 则对a数组元素不正确的引用上

A) a[p-a] B) *(&a[i]) C) p[i] D) a[10] (12) 下列程序执行后的输出结果是

A) 6 B) 7 C) 8 D) 9 void func(int *a,int b[]) { b[0]=*a+6; } main() { int a,b[5]; a=0; b[0]=3;

func(&a,b); printf(\ }

(13) 下列程序的运行结果是

A) a=%2,b=%5 B) a=2,b=5 C) a=d, b=d D) a=%d,b=%d #include main()

{ int a=2,c=5;

printf(\(14) 下列程序执行后的输出结果是

A) 3 B) 6 C) 9 D) 随机数 main()

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

for(i=p; i<9; i++) p[i]=i+1; printf(\ }

(15) 设有数组定义: char array [ ]=\则数组 array所占的空间为

第2页(本试卷共25页)

C语言试卷

A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 (16) 下列程序的输出结果是

A) 4 B) 6 C) 8 D) 10 int b=2;

int func(int *a) { b += *a; return(b);} main()

{ int a=2, res=2; res += func(&a); printf(\ }

(17) 在以下四组中,每组有两个分别运算的函数,运算结果相同的是 A) 4 B) 2 C) 2 D) 0 main()

{ int i, j, m=0, n=0; for(i=p; i<2; i++) for(j=0; j<2; j++) if(j>=i) m=1; n++; printf(\ }

(18) 下列程序的输出结果是

A) 5 B) 6 C) 7 D) 8 struct abc { int a, b, c; }; main()

{ struct abc s[2]={{1,2,3},{4,5,6}}; int t; t=s[0],a+s[1],b; printf(\ }

(19) 设 int b=2;表达式(b>>2)/(b>>1)的值是

A) 0 B) 2 C) 4 D) 8 (20) 在C程序中,可把整型数以二进制形式存放到文件中的函数是

A) fprintf函数 B) fread函数 C) fwrite函数 D) fputc函数 (21) 下列程序执行后的输出结果是

A) -32767 B) FFFE C) -1 D) -32768 main()

{ char x=0xFFFF; printf(\

(22) 若有定义: float w; int a, b; 则合法的switch语句是 A) switch(w) B) switch(a);

{ case 1.0: printf(\ case 2.0: printf(\ } }

第3页(本试卷共25页)

C语言试卷

C) switch(b) D) switch(a+b);

{ case 1: printf(\ default: printf(\ case 1+2: printf(\ } } (23) 以下程序段的执行结果是

A) a=12 y=12 B) a=12 y=12 a=14 y=16 a=16 y=28 a=16 y=20 a=18 y=24

C) a=12 y=12 D) a=12 y=12 a=14 y=26 a=14 y=44 int a, y; a=10; y=0; do

{ a+=2; y+=a;

printf(\ if(y>20) break; { while(a=14); . . .

(24) 若有以下调用语句,则不正确的fun函数的首部是

A) void fun(int m, int x[]) B) void fun(int s, int h[41]) C) void fun(int p, int *s) D) void fun(int n, int a) main() { ?

int a[50],n; ?

fun(n, &a[9]); ? }

(25) 语句printf(\的输出结果是 A) a\\bre\\'hi\\'y\\\\\\bou B) a\\bre\\'hi\\'y\\bou C) re'hi'you D) abre'hi'y\\bou (说明:'\\b'是退格符) (26) 请选出正确的程序段

A) int *p; B) int *s, k; scanf(\ ? ?

C) int *s, k; D) int *s, k; char *p, c; char *p, e;

第4页(本试卷共25页)

C语言试卷

s=&k; s=&k; p=&c; p=&c; *p='a'; s=p; ? *s=1; ?

(27) 已知指针p的指向如下图所示,则执行语句 *--p;后*p的值是 A) 30 B) 20 C) 19 D) 29

a[0] 10 a[1] 20 a[2] 30 a[3] 40 a[4] 50 (28) 设已有定义: char *st=\下列程序段中正确的是 A) char a[11], *p; strcpy(p=a+1,&st[4]); B) char a[11]; strcpy(++a, st); C) char a[11]; strcpy(a, st); D) char a[], *p; strcpy(p=&a[1],st+2); (29) 下列程序执行后的输出结果是

A) you&ne B) you C) me D) err mai()

{ char arr[2][4];

strcpy(arr,\ arr[0][3]='&'; printf(\ }

(30) 下列程序执行后的输出结果是

A) hello B) hel C) hlo D) hlm void func1(int i); void func2(int i); char st[]=\ void func1(int i) { printf(\ if(i<3){i+=2;func2(i);} }

void func2(int i) { printf(\ if(i<3){i+=2;func1(i);} } main()

{ int i=0; func1(i); printf(\

(31) 假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行: prg hello good<

回车>后,程序的输出结果是

A) hello good B) hg C) hel D) hellogood main()(int argc, char *argv[])

第5页(本试卷共25页)

C语言试卷

(7) 以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。

#include main()

{ char str[100],str2[100],c; int i,s;

printf(\ printf(\ i=0;

while((strl[i]==str2[i]&&(str1[i]!=【9】)) i++; s=【10】; printf(\ }

(8) 以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。

#include main()

{ FILE *fp;

char str[100]; int i=0; if((fp=fopen(\【11】))==NULL) { printf(\ printf(\ while (str[i])

{ if(str[i]>='a'&&str[i]<='z') str[i]=【12】; fputc(str[i],fp); i++; }

fclose(fp);

fp=fopen(\【13】); fgets(str,100,fp); printf(\ fclose(fp); }

(9) 以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。 #include. main()

{ char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C' ,'D','E','F'};

int c[64],d,i=0,base; long n;

第21页(本试卷共25页)

C语言试卷

printf(\ printf(\ do

{ c[i]=【14】;

i++; n=n/base; } while(n!=0);

printf(\ for(--i;i>=0;--i) { d=c[i];

printf(\【15】; } }

(10) 若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【16】

: . char a[10],b;

scanf(\ : .

(11) 下面程序的输出结果是 【17】

char b[]=\ABCD\ main()

{ char *chp;

for(chp=b; *chp: chp+=2) printf(\ printf(\

(12) 下面程序输出的结果是 【18】

#define MAX 3 int a [MAX]; main()

{ fun1( ); fun2( a ); printf(\ fun1( ) { int k, t=0;

for (k=0; k<MAX; K++,t++) a[k]=t+t; }

fun2(int b[]) { int k;

for(k=0; k<NAX; k++) printf(\ }

(13) 以下程序输出的是 【19】

main( )

{ int a[10]={19,23,44,17,37,28,49,36}, *p;

第22页(本试卷共25页)

C语言试卷

p=a;

printf(\ }

(14) 以下程序输出的是 【20】

main( )

{ int i=3, j=2; char *a=\DCBA\ printf(\ }

(15) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。

exchange(int *x, int *y) { int t;

t=*y; *y= 【21】 ; *x= 【22】 ; }

(16) 若以下定义和语句,则sizeof(a)的值是 【23】 ,而sizeof(b)的值是 【24】

struct { int day; char mouth; int year;} a, *b; b=&a;

(17) 以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指的存储单元中,请填空.

fun(int b[ ],int n, int *x) { int k, r=0;

for(k=0;k

(18) 变量root有如图所示有存储结构,其中sp是指向字符串的指针域,next 是指向该结构的指针域,data用

以存放整型数. 请填空 , 完成此结构的类型说明和变义

sp next data

量root的定

┌─┬─┬─┐

root│ │ │ │

└─┴─┴─┘

struct list { char *sp; 【27】 ; 【28】 ; }root;

(19) 下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空.

#include

第23页(本试卷共25页)

C语言试卷

FILE *fp; main() { int i,j;

if((fp=fopen( 【29】, \ for(i=0; i<10; i++) { scanf(\

fwrite(&j,sizeof(int),1, 【30】 ); }

fclose(fp); }

三.请用 C 语言的表达式表示下列代数式

1a?f2(1)4

db??t2?d

(2) x3sin550÷πd

(3)loge(a?a?x) (e=2.71828) (4) (5) (6)

1a?be(e=2.71828) 3(c?b)?d?ac?d

1sin50?4

第24页(本试卷共25页)

C语言试卷

(7) (8)

ea?b (e=2.71828)

loge(a?b3)

c?(9 )

a?db2

(10)

b?(a?c)?dc?3

四、编程题

编制一个函数:此函数能对一维数组内存放的10个学生成绩求平均成绩。(形参数组名为(1)

array)

(2) 编制一个函数:此函数能对一维数组内存放的10个学生成绩求平均成绩。(形参为指向具有10个元素数组的指针变量)

(3) 编写一个函数:统计出整数文件a:\\xc.dat中的数据个数。

(4) 编制一个完整的程序:从键盘输入字符串str1,将字符串str1复制到字符串str2,并统计字符串的长度。(用字符数组实现)

(5) 编制一个完整的程序:从键盘输入字符串str1,将字符串str1复制到字符串str2,并统计字符串的长度。(用字符指针实现)

(6) 编制一个完整的程序:从键盘输入10个整型数组元素,调用自定义函数void sort( int array[ ] , int n )对其进行由大到小排序,最后将排序结果输出到显示器终端,要求自定义函数sort( )中用冒泡法实现排序。

第25页(本试卷共25页)

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

Top