C语言程序设计300题_第1页
C语言程序设计300题_第2页
C语言程序设计300题_第3页
C语言程序设计300题_第4页
C语言程序设计300题_第5页
已阅读5页,还剩753页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、试卷编号:8152所属语言:turbo c试卷方案:333试卷总分:3000分共有题型:3种一、程序填空 共100题 (共计1000分)第1题 (10.0分) 题号:476/*-【程序填空】-功能:不用第三个变量,实现两个数的对调操作。-*/#include <stdio.h>main() int a,b; scanf("%d %d",&a,&b); printf("a=%d,b=%dn",a,b); /*space*/ a= 【a+b】 ; /*space*/ b= 【a-b】 ; /*space*/ a= 【a-b】 ;

2、printf("a=%d,b=%dn",a,b); 答案: 1). a + b 2). a-b 或 a -b 3). a-b 或 a -b第2题 (10.0分) 题号:440/*-【程序填空】-功能:先将在字符串s中的字符按正序存放到t串中,然后把s中的 字符按逆序连接到t串的后面。-*/#include <conio.h>#include <stdio.h>#include <string.h> void fun (char *s, char *t) int i, sl; /*space*/ sl = 【strlen(s)】; for(

3、i=0; i<sl; i+) ti = si; for (i=0; i<sl; i+) /*space*/ tsl+i = 【ssl-i-1】; /*space*/ tsl+i=【0】;/ 单引号不能打出来/main() char s100, t100; clrscr(); /*space*/ printf("nplease enter string s:"); 【scanf】("%s",s); fun(s, t); printf("the result is: %sn", t);答案: 1). strlen(s) 2).

4、 ssl-i-1 或 s sl -i -1 3). '0' 或 0 4). scanf第3题 (10.0分) 题号:22/*-【程序填空】-功能:打印以下图形。* * * * *-*/ main ( ) char a59=" " int i,j; for (i=0;i<5;i+) /*space*/ for(j=i; 【j<i+5】;j+) aij='*' /*space*/ for(【i=0】;i<5;i+) for(j=0;j<9;j+) /*space*/ printf("%c", 【a59】

5、 ); /*space*/ 【printf(“n”)】; 答案: 1). j< i + 5 或 i + 5 >j 或 j<= i + 4 或 i + 4 >j 2). i=0 3). aij 4). printf("n")第4题 (10.0分) 题号:434/*-【程序填空】-功能:要求输出如下结果: b=-1 a=65535 a=65534 a=30 b=6 c=5 按要求在空中填入合适的变量完善程序。-*/main() /*space*/ int b=-1,【?】;unsigned a; /*space*/ a=【?】; printf("

6、;b=%d a=%un",b,a); /*space*/ 【?】+=b; printf("a=%un",a); /*space*/ b=(a=30)/【?】; printf("a=%d b=%d c=%dn",a,b,c);答案: 1). c 2). b 3). a 4). (c=5)第5题 (10.0分) 题号:468/*-【程序填空】-功能: 对一数组进行逐步累加求和,prefix代表从前向后累加值, suffix代表从后向前累加值,问在此过程中prefix与suffix 有几次值相同?-*/int head_tail(int x, int

7、 n) int prefix = 0, suffix = 0; int prefix_idx = 0, suffix_idx = n-1; int count = 0; while (suffix_idx >= 0 && prefix_idx <= n-1) /*space*/ if ( 【?】) prefix += xprefix_idx+; else if (prefix > suffix) /*space*/ suffix += x【?】; else /*space*/ 【?】; prefix += xprefix_idx+; suffix += xsu

8、ffix_idx-; return count;#include <stdio.h>void main(void) int x = 3, 6, 2, 1, 4, 5, 2; int n = sizeof(x)/sizeof(int); int i; printf("nhead sum = tail sum counting program"); printf("n=n"); printf("ngiven array :"); for (i = 0; i < n; i+) printf("%5d",

9、 xi); printf("nnthere are %d equal prefix-suffix sum pairs.",head_tail(x, n);答案: 1). prefix < suffix 或 suffix>prefix 2). suffix_idx- 或 suffix_idx= suffix_indx -1 或 -suffix_idx 3). count+ 或 count=count+1第6题 (10.0分) 题号:15/*-【程序填空】-功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作 为终止标记。-*/main() int x,i=0,

10、j=0; float s1=0,s2=0,av1,av2; scanf("%d",&x); /*space*/ while(【x!=0】) if(x%2=0) s1=s1+x;i+; /*space*/ 【else】 s2=s2+x; j+; /*space*/ 【?】; if(i!=0) av1=s1/i; else av1=0; if(j!=0) /*space*/ 【scanf("%d",&x)】 ; else av2=0; printf("oushujunzhi:%7.2f,jishujunzhi:%7.2fn"

11、;,av1,av2);答案: 1). x != 0 或 x 2). else 或 else if(x%2=1) 或 else if(x%2!=0) 或 if(x%2) 3). scanf("%d",&x) 4). av2=s2/j第7题 (10.0分) 题号:455/*-【程序填空】-功能:要求输出结果为3。-*/#include <stdio.h>main() /*space*/ int m=1,n=1,【s】; s=akm(m,n); printf("%d",s); /*space*/akm(【int m】,int n) if(m

12、=0) /*space*/ 【return】 n+1; else if(m!=0&&n=0) akm(m-1,1); else if(m!=0&&n!=0) akm(m-1,akm(m,n-1); 答案: 1). s 2). int m 3). return第8题 (10.0分) 题号:12/*-【程序填空】-功能:产生并输出如下形式的方阵。1 2 2 2 2 2 13 1 2 2 2 1 43 3 1 2 1 4 43 3 3 1 4 4 43 3 1 5 1 4 43 1 5 5 5 1 41 5 5 5 5 5 1-*/main() int a77; in

13、t i,j; for (i=0;i<7;i+) for (j=0;j<7;j+) /*space*/ if (【?】) aij=1;/*space*/ else if (i<j&&i+j<6) 【?】; else if (i>j&&i+j<6) aij=3;/*space*/ else if (【?】) aij=4; else aij=5; for (i=0;i<7;i+) for (j=0;j<7;j+) printf("%4d",aij);/*space*/ 【?】; 答案: 1). i =

14、 j | i + j = 6 2). aij=2 3). i<j && i + j>6 或 j>i && i + j>6 或 i<j && i + 6<j 或 j>i && i + 6<j 4). printf("n")第9题 (10.0分) 题号:463/*-【程序填空】-功能:输入一正整数n、打印1-n能够组成的所有自然数集合 (包含空集)。-*/#include <stdio.h>#include <stdlib.h>#define

15、maxsize 20#define loop 1void main(void) int setmaxsize; int n, i; int position; char line100; printf("nall possible subsets generation by lexical order"); printf("n="); printf("nnnumber of elements in the set -> "); gets(line); n = atoi(line); printf("n");

16、position = 0; setposition = 1; while (loop) /*space*/ printf("n%d", 【?】); for (i = 1; i <= position; i+) printf(",%d", seti); printf(""); if (setposition < n) /*space*/ set【?】 = setposition + 1; position+; else if (position != 0) set-position+; else /*space*/ 【?】;

17、 答案: 1). set0 2). position+1 3). break第10题 (10.0分) 题号:477/*-【程序填空】-功能:编写程序,输出 1000 以内的所有完数及其因子。说明:所谓完数是指一个整数的值等于它的因子之和。例如“ 6 的因子是 1 、 2 、 3 ,而 6=1+2+3 ,故 6 是 一个完数。-*/#include <stdio.h> main() int i,j,m,s,k,a100 ; for(i=1 ; i<=1000 ; i+ ) m=i ; s=0 ; k=0 ; for(j=1 ; j<m ; j+) /*space*/ if

18、(【?】) s=s+j ; /*space*/ 【?】=j ; if(s!=0&&s=m) /*space*/ for(j=0 ; 【?】 ; j+) printf("%4d",aj) ; printf(" =%4dn",i) ; 答案: 1). m%j = 0 2). ak+ 3). j<k 或 k>j第11题 (10.0分) 题号:408/*-【程序填空】-功能:输入两个整数,求他们的按位与。-*/#include<stdio.h>void main() int x,y,z=0,a,b,k=1; scanf(&

19、quot;%d,%d",&x,&y); while(x>0&&y>0) a=x%2; /*space*/ x=【?】; b=y%2; y=y/2; /*space*/ z=z+【?】; k=k*2; /*space*/ 【?】("z=%dn",z);答案: 1). x/2 2). a*b*k 或 a * b * k 3). printf第12题 (10.0分) 题号:24/*-【程序填空】-功能:对任一整数n(n0),它都可以分解成1(或-1)和一些质数(素 数)因子的形式。例如:当n=150时,可分解成1×2

20、×3×5×5; 当n=-150时,可分解为-1×2×3×5×5。 下边程序能实现这种分解过程。当n=150,输出以下分解结 果:n= 1* 2* 3* 5* 5-*/main() int n,i,j,r; scanf("%d",&n); if (n=0) printf ("data error n"); exit(0); /*space*/ else if (【?】) printf("n=1"); else printf("n=-1");

21、 n=-n; /*space*/ for(【?】;i<=n;i+) /*space*/ 【?】 ; while(r=0) printf("*%d",i); /*space*/ 【?】 ; r=n%i; printf("n");答案: 1). n>0 或 0<n 2). i=2 3). r=n%i 4). n=n/i 或 n/=i第13题 (10.0分) 题号:17/*-【程序填空】-功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘 输入。-*/#include "stdio.h"main() char st

22、r80,ch; int i,k=0; /*space*/ gets(【?】); ch=getchar(); /*space*/ for(i=0;【?】;i+) if(stri!=ch) /*space*/ 【?】; k+; /*space*/ 【?】; puts(str); 答案: 1). str 2). stri!='0' 或 stri!=null 或 stri!=0 或 stri 3). strk=stri 或 *(str+k)=*(str+i) 或 strk=*(str+i) 或 *(str+k)=stri 4). strk='0' 或 *(str+k)=

23、'0' 或 strk=null 或 strk=0 或 *(str+k)=0 或 *(str+k)=null第14题 (10.0分) 题号:489/*-【程序填空】-功能:h_sequence 是一组由0和1组成的数列,它定义如下: <h-seq> = 0 <h-seq> = 1 <h-seq> <h-seq> 利用函数检测输入的字符串是否是h_sequence数列-*/#include <string.h>#define yes 1#define no 0int h_sequence(char x) /*space*/

24、 int length = 【?】; int count; int i; for (count = 1, i = 0; count != 0 && i < length; i+) switch (xi) case '0':count-; break; case '1':count+; break; default:return no; /*space*/ return 【?】&& i >= length; #include <stdio.h>void main(void) char line100; pri

25、ntf("nninput a string of 0 and 1 -> "); gets(line); /*space*/ if (【?】 = yes) printf("n* input is a h sequence *"); else printf("n* input is not a h sequence *");答案: 1). strlen(x) 2). count = 0 3). h_sequence(line)第15题 (10.0分) 题号:404/*-【程序填空】-功能:从键盘上输入两个复数的实部与虚部,求出并输出

26、它们的 和、差、积、商。-*/#include<stdio.h>void main() float a,b,c,d,e,f; printf("输入第一个复数的实部与虚部:"); scanf("%f, %f",&a,&b); printf("输入第二个复数的实部与虚部:"); scanf("%f, %f",&c,&d); /*space*/ 【?】; f=b+d; printf("相加后复数:实部:%f,虚部:%fn",e,f); e=a*c-b*d;

27、/*space*/ 【?】; printf("相乘后复数:实部:%f,虚部:%fn",e,f); e=(a*c+b*d)/(c*c+d*d); /*space*/ 【?】; printf("相除后复数:实部:%f,虚部:%fn",e,f);答案: 1). e=a+c 或 e=c+a 2). f=a*d+b*c 或 f= a*d + b*c 或 f= a * d + b * c 3). f=(b*c-a*d)/(c*c+d*d) 或 f=(b*c-a*d) / (c*c+d*d) 或 f=( b * c - a * d ) / ( c * c + d *

28、d )第16题 (10.0分) 题号:396/*-【程序填空】-功能:输入数组,最大的与最后一个元素交换,最小的与第一个元 素交换,输出数组。-*/main() int number10; input(number); max_min(number); output(number);input(number)int number10; int i; /*space*/ for(i=0;【?】;i+) scanf("%d,",&numberi); scanf("%d",&number9);max_min(array)int array10;

29、 int *max,*min,k,l; int *p,*arr_end; arr_end=array+10; max=min=array; for(p=array+1;p<arr_end;p+) if(*p>*max) max=p; else if(*p<*min) /*space*/ 【?】; k=*max; l=*min; *p=array0; array0=l; /*space*/ 【?】; *p=array9; /*space*/ 【?】; k=*p; return;output(array)int array10; int *p; for(p=array;p<

30、array+9;p+) printf("%d,",*p); printf("%dn",array9);答案: 1). i<9 或 9>i 2). min=p 3). l=*p 4). array9=k第17题 (10.0分) 题号:451/*-【程序填空】-功能:编程求任意给两个日期(y0年m0月do日和y1年m1月d1日) 相差的天数。-*/main() int y1,m1,d1,y2,m2,d2,n,i; printf("y1,m1,d1="); scanf("%d,%d,%d",&y1,&

31、amp;m1,&d1); /*space*/ if(m1<1|m1>12|d1<1|d1>【?】) exit(0); printf("y2,m2,d2=");scanf("%d,%d,%d",&y2,&m2,&d2); /*space*/ if(m2<1|m2>12|d2<1|d2>【?】) exit(0); if(y1>y2|y1=y2&&m1>m2|y1=y2&&m1=m2&&d1>d2) n=y1; y1

32、=y2; y2=n; n=m1; m1=m2; m2=n; n=d1; d1=d2; d2=n; else /*space*/ n=yend(y1,m1,d1)+【?】; /*space*/ for(i=【?】;i<y2;i+) n+=365+f(i); printf("%d.%d.%d->%d.%d.%d:n=%dn",y1,m1,d1,y2,m2,d2,n);int f(int y) return(y%4=0&&y%100!=0|y%400=0);int mday(int y,int m) return(31-(m=4)+(m=6)+(m=9

33、)+(m=11)-(3-f(y)*(m=2);int yday(int y,int m,int d) return(d+31*(m>1)+(m>3)+(m>5)+(m>7)+(m>8)+(m>10)+30*(m>4)+(m>6)+(m>9)+(m>11)+(28+f(y)*(m>2);int yend(int y,int m,int d) return(365+f(y)-yday(y,m,d);答案: 1). mday(y1,m1) 2). mday(y2,m2) 3). yday(y2,m2,d2) 4). y1+1 或 1+

34、y1第18题 (10.0分) 题号:21/*-【程序填空】-功能:将一个字符串中的前n个字符复制到一个字符数组中去, 不许使用strcpy函数。-*/main ( ) char str180,str280; int i,n; /*space*/ gets(【?】); scanf("%d",&n); /*space*/ for (i=0; 【?】 ;i+) /*space*/ 【?】; /*space*/ 【?】; printf("%sn",str2);答案: 1). str1 2). i<n 或 n>i 或 i<=n-1 或 n

35、-1>=i 3). str2i=str1i 或 *(str2+i)=*(str1+i) 或 *(str2+i)=str1i 或 str2i=*(str1+i) 4). str2n='0' 或 str2i='0' 或 str2n=0 或 str2i=0 或 *(str2+n)='0' 或 *(str2+i)='0' 或 *(str+n)=0 或 *(str2+i)=0第19题 (10.0分) 题号:438/*-【程序填空】-功能:求出二维数组中的最大元素值。-*/#include "stdio.h"void

36、 main() int a34=1,3,5,7,2,4,6,8,15,17,34,12; /*space*/ printf("max value is %dn",【?】);max_value(m,n,array)/*space*/int m,n,【?】; int i,j,max; max=array00; for(i=0;i<m;i+) for(j=0;j<n;j+) /*space*/ if(max<arrayij)【?】; return(max);答案: 1). max_value(3,4,a) 2). array4 或 array34 3). max=arrayij第20题 (10.0分) 题号:452/*-【程序填空】-功能:从键盘输入若干行字符,输入后把他们存储到一磁盘文件 中。在从该文件中读出这些数据,将其中的小写字母转换 成大写字母后在屏幕上输出。-*/#include "stdio.h"#define n 10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论