浙江大学C语言总复习题--综合(5)

2018-12-15 17:34

}

main() { int m;

m=fun(head); ?T? head ?h? ?e? ?\\0? ?A? NULL printf(―m=%d\\n‖,m); }

30.若head是node类型的全程量,以head为头指针的链表各节点的值如下图所示 #include struct node { int num;

struct node *next; };

struct node *head; int fun(struct node *h) { int k=0;

struct node *p=h; while (p!=NULL) { k+=p->num; p = p->next;

if(p!=NULL) p = p->next; }

return (k); 4 3 5 6 7 NULL } head main() { int m;

m=fun(head);

printf(―m=%d\\n‖,m); }

五. 编程序

1. 设计函数strcmp(s1, s2)是字符串比较, 根据s1,s2大小分别返回负数(s1

0 (s1=s2),正数(s1>s2)。其中负数和正数为s1和s2中第一个不同的两个字母的差值。 2. 分别输出方阵中主对角线、副对角线上元素的和sum1和sum2(主对角线为从矩阵的 左上角至右下角的连线, 副对角线为从矩阵的右上角至左下角的连线)。

3. 读入 n(n<=10) 个整数并放入一个数组 r 中, 统计并输出比相邻元素小的数组元素的个数。

4.读入 n(n<=10) 个整数并放入一个数组 r 中, 再读入一个整数 x, 统计并输出 x 在数组 r 中出现的次数 count, 如果 count>0, 再输出 x 在 r 中所对应的最小下标(下标从0开始)。 5.读入 n(n<=10) 个整数并放入一个数组 r 中, 将其中的最小值(设唯一)与第一个元素交换, 输出该数组。 6.读入 n(n<=10) 个整数并放入一个数组 r 中, 将其中的最大值(设唯一)与最后一个元 素交换, 输出该数组。

7.统计当前目录下文本文件data.txt中字符 ‘$‘ 出现的次数。

8.统计当前目录下文本文件data.txt中小写字母(?a‘到‘z‘)出现的次数。 9.统计当前目录下文本文件data.txt中数字字符(?0‘到‘9‘)出现的次数。 10.将当前目录下文本文件data.txt中的内容,原样输出在屏幕上。

11.当前目录下文本文件data.txt中的内容,原样复制到当前目录下的文本文件res.txt。

20

12.从键盘输入n个字符,将它们写入当前目录下的文本文件res.txt。 13.sum=1+4+7+10+13??,输入正整数n,求sum的前n项和。 14.sum=2+4+6+8+10+??,输入正整数n,求sum的前n项和。 15.sum=1+3+5+7+9+??,输入正整数n,求sum的前n项和。 16.sum=2+5+8+11+14??,输入正整数n,求sum的前n项和。 17.输入正整数n,求1*2*3*…*n的值。

18.输入正实数x和正整数 n,x的值。

19.用选择排序法对 10 个整数从大到小排序。

20.输入正实数x、正整数m和n(m≥n)后,计算下列表达式的值并输出。

m

x

n(m-n)

x x

n

要求定义并调用函数mypow(x,n)计算x,函数返回值的类型为double。

21.输入一个正整数m,如果m是素数,输出“Yes”,否则,输出“No”。要求定义并调用函数 isprime (x)来判断x 是否为素数(素数:除了1和此数本身之外,不能被其它整数整除的自然数,1不是素数,2是素数)。 22.输入正整数m和n,如果m+n是质数,输出“Yes”,否则,输出“No”。要求定义并调用函数 myfun (x)来判断x 是否为质数(质数:除了1和此数本身之外,不能被其它整数整除的自然数)。 23.输入正整数m和n,计算m和n之间所有奇数的和,要求定义并调用函数 isodd(x)来判断x 是否为奇数。 24.输入正整数m和n(m≥n)后,计算下列表达式的值并输出。 m! n!(m-n)!

要求将计算阶乘的运算写成函数myfact(n),函数返回值的类型为float。

n

21

综合自测题1

一、单项选择题(每题1分,共20分) 1.高级语言编写的程序称为( )。 A.高级程序 B. 源程序 C. 目标程序 D. 编译程序 2.下列说法中错误的是( )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其它函数 C. 任何非主函数可以调用其它任何非主函数 D. 程序可以从任何非主函数开始执行

3. 在PC机中,?\\n?在内存占用的字节数是( )。 A. 1 B. 2 C. 3 D. 4 4.设a为5,执行下列语句后,b的值不为2的是( )。 A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3?2:2

5.设整型变量m,n,a,b,c,d均为1,执行“(m=a>b)&&(n=a>b)”后,m,n的值是( )。 A. 0,0 B. 0,1 C. 1,0 D. 1,1 6.设字符型变量a=3,b=6,计算表达式c=(a^b)<<3后c的二进制值是( )。 A. 00111000 B. 00000111 C. 00000001 D. 00011000

7. 设a=1234,b=12,c=34 执行“printf(“|==%-3d|\\n”,a,b,c); ”的输出是( )。 A.|1234?1234?| B.|123?1234?| C.|1234?12-34| D. |234?1234?| 8.下列语句中,错误的是( )。 A. while(x=y) 5; B. do x++ while(x==10); C. while(0); D. do 2; while (a==b); 9.若有以下说明,则数值为4的表达式是( )。 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=?a?,d,g; A. a[g-c] B. a[4] C. a[?d?-?c?] D. a[?d?-c] 10.设指针x指向的整型变量值为25,则printf(“%d\\n”,++*x);的输出是( )。 A.26 B.25 C.24 D.23 11. 若有以下定义,且0<=i<5,则对数组元素地址的正确表示是( )。

int a[]={1,2,3,4,5},*p=a,i; A.&(a+i) B.a++ C.&p D. &p[i] 12.设有定义“a=3,b,*p=&a”,则下列语句中使b不为3的语句是( )。 A.b=*&a; B.b=*p; C.b=a; D.b=*a;

13. 若有定义“int a[3][4],*p;”,则对数组元素a[i][j](0<=i<3,0<=j<4) 正确的引用是( A.p=a B.*(*(p+i)+j) C.*(p+i*4+j) D. *(*(a+i)+j) 14. 若有以下定义,则数值为4的表达式是( )。

int w[3][4]={{0,1},{2,4},{0,1},{0,1}},(*p)[4]=w; A.*w[1]+1 B.p++,*(p+1) C.w[2][2] D.p[1][1] 15.函数调用语句“f((e1,e2),(e3,e4,e5));”中参数个数是( )。 A. 5 B. 4 C. 2 D. 1

16.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是( ) A. return 这二个数 B. 形参用二个元素的数组 C. 形参用二个这种数据类型的指针 D. 用二个全局变量 17. 设有如下定义,则对data中的a成员的正确引用是( )。

struct sk {int a; float b; } data, *p=&data; A. (*p).data.a B. (*p).a C. p->data.a D. p.data.a

22

)。 18. 设有如下定义成的链表,则值为6的表达式是( )。

struct st { int n; struct st *next ; } a[3]={5,&a[1],7,&a[2],9,NULL},*p=&a; A. p++->n B. p->n++ C. (*p).n++ D. ++p->n 19. 状下列语句中,将c定义为文件型指针的是( )。 A. FILE c; B. FILE *c; C. file c; D. file *c; 20. 设有以下宏定义,则执行语句“z=2*(N+Y(5+1));”后,z的值为( )。 #define N 3

#define Y(n) ((N+1)*n) A.出错 B. 42 C. 48 D. 54 二、填充题(每空2分,共30分)

1. 数学式 对应的C表达式是 ⑴ 。 ⑵ 。

3. 若程序中使用了库函数toupper、strcpy,那么在预处理命令中必须写入的头文件名 为 ⑶ 。

4. student是结构体类型标识符,x是student类型变量,则计算x的字节数的表达式 为 ⑷ 。

5. 自定义函数fact的功能是计算k的阶乘,函数原型可以写作“float fact(int)”。按照以下各小题的要求写出相应的函数原型。

⑴ 自定义函数f1的功能是计算平面上任意两点之间的距离。

⑸ ⑵ 自定义函数swap的功能是交换调用函数中两个float类型实参变量的值。 ⑹ 6. 函数sort使用选择法将一维整型数组中各元素按值从大到小排序。 void sort( ⑺ )

{ int i,j,k,temp;

for(i=0; i

for(j=i+1; j

if( ⑻ ) k=j; temp=a[k]; ⑼ } }

7. 下列程序将当前目录下的文本文件a.txt复制到b.txt,要求将a.txt中每1个非英文字符后的第1个小写英文字母改为大写字母写到文件b.txt中,其它字符复制时不变。 #include #include #include void main()

{ ⑽ ; int flag=1; char ch;

if((f1=fopen(\

printf(\不能打开文件a.txt\\n\ }

23

2. ch是char类型变量,“仅当ch是大写英文字母时改变ch为对应小写字母”的C表达式是

if((f2=fopen(\

printf(\不能打开文件b.txt\\n\ }

while( ⑾ ) {

if( ⑿ && ch>='a' && ch<='z') fputc(ch-32,f2); else

⒀ ;

if(!isalpha(ch)) flag=1; else flag=0; }

fclose(f1); fclose(f2);

}

8.设有char *a=”ABCD”; ,则printf(“%s”,a)的输出是 ⒁ ;而printf(“%c”,*a)的输出是 ⒂ 。

三、程序分析题 (每题5分,共30分)

1. 阅读下列程序,当输入为:ab*ABí#CD$ 时,写出程序运行的输出结果。 main()

{ char c;

while( (c=getchar())!=?$?)

{ if(?A?<=c && c<=?Z?) putchar(c);

else if(?a?<=c && c<=?z?) putchar(c-32); } } 2.写出下列程序的输出结果: # include int f(int x)

{ static int y=1; x+=y; y++; return x; }

void main() { int k; k=f(3);

printf(\ }

3.写出下列程序的输出结果: # include # include void f(char *s1) { char c; if(*s1!='\\0'){ c=*s1;

strcpy(s1,s1+1); f(s1); putchar(c); }

24


浙江大学C语言总复习题--综合(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:微机原理与接口技术试题库(含答案)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: