《C语言笔试--程序填空题.doc》由会员分享,可在线阅读,更多相关《C语言笔试--程序填空题.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全省2级CC 语言机试程序填空题1下面的程序是完成从键盘上输入若干行长度不一的字符串把其存到一个文件名为ttt.txt的磁盘文件上去再从该文件中输出这些数据到屏幕上, 将其中的小写字母转换成大写字母。然而,该程序是一个不完整的程序,请在下划线空白处将其补充完整,以便得到正确答案,但不得增删原语句。 #include main( ) int i,flag;char str80,c;FILE *fp;if(fp=fopen(TTT,w)=NULL) printf(cant create filen); exit(0); for(flat=1;flag;) printf(请输入字符串n); gets
2、(str); fprintf(fp,%s,str); printf(是否继续输入?n); if(c=getchar()=N| (1) ) /n flag=0; getchar(); fseek(fp,0,0); while(fscanf(fp,%s,str)!=EOF) for(i=0;stri!=0;i+) if(stri=a&(stri=z) stri=(2) /stri-32; printf(%s,str); fclose(fp); tk56.c程序用于计算45的整型数组中最大元素所在行和列的位置。下面程序不完整,请将其补充完整,以便得到正确答案,注意:不得增行和删行,也不得修改程序的结
3、构。#include void main(void)int a45=4,8,9,10,12, 2,5,13,17,11, 81,76,34,57,33, 1,90,3,78,55;int max , max_row , max_col;int i,j;max=_; /a00max_row=0;max_col=0;for (i=0;i4;i+)for (j=0;j5;j+)if( _) /maxaij max=aij ; max_row = i ; max_col = j;printf(%d %d,max_row,max_col);tk57.c用来输出两整数M和N之间的所有素数(质数)。所谓一个
4、整数n为素数,是指n除了能被1和其本身n除尽外,不能被2到n-1中的任何整数除尽。如7为素数,而9不是素数。程序中,外循环变量i用于控制整数选择范围,内循环变量j用于判断某整数i是否为素数,若是,则输出该素数,且通过变量s来控制每行输出5个素数。#define M 4#define N 30main() int i, j, k, s=0; for(i=M; i= ; i+) / N for(j=2; j=i) printf(%5d, i); s=s+1; if(s%5 ) printf(n); printf(n);tk101.c中有整形数组a 。通过调用子程序inv(),对a 数组中的元素,反
5、向交换存储位置。请在括号 处补充完整程序,并删除 ,运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。void inv(int x,int n)int temp,i,j,m= ; / n/2-1for(i=0;i=m;i+)j=n-i-1;temp=xi; ; / xi=xjxj= ; / tempreturn;main()int a10=4,5,6,7,8,9,10,11,12,88;int i;printf(The original array:n);for(i=0;i10;i+)printf(%3d,ai);printf(n);inv(a,10);printf(The re
6、verse array:n);for(i=0;i10;i+)printf(%3d,ai);printf(n);tk57.c用来输出两整数M和N之间的所有素数(质数)。所谓一个整数n为素数,是指n除了能被1和其本身n除尽外,不能被2到n-1中的任何整数除尽。如7为素数,而9不是素数。程序中,外循环变量i用于控制整数选择范围,内循环变量j用于判断某整数i是否为素数,若是,则输出该素数,且通过变量s来控制每行输出5个素数。#define M 4#define N 30main() int i, j, k, s=0; for(i=M; i= _ ; i+) /N for(j=2; j=i) print
7、f(%5d, i); s=s+1; if( s%5=0 ) printf(n); printf(n);2.若一个整数x除了能被1和其本身x除尽外,不能被2到x-1中的任何整数除尽,则此数即为素数(或质数)。例如7是素数,而9不是素数。下面程序的功能是:将任意输入的一个大偶数n分解为两个素数之和,并给出各种分解方法。例如n=10时,分解后的结果为 10=3+7 和 10=5+5。请填空(替换掉下划线部分)。 程序中,函数check用来判断一个整数x是否是素数,若是,返回1,否则返回0 。 #include stdio.h main( ) int n, i; int check( int x );
8、 do printf( Input n: ); scanf( %d , &n ); while( n % 2 != 0 ); for( i=3; i= n/2 ; i+ ) if( check ( i ) & _ ) /check(n-i) printf( %d = %d + %d n , n, i, n-i ); int check ( int x ) int i; for( i=2; i x ; i+ ) if( _ ) return ( 0 ); /if(x%i=0) return ( 1 ); tk154.c中有整形数组a 。通过调用子程序inv(),对a 数组中的元素,反向交换存储位
9、置。请在括号 处补充完整程序,并删除 ,运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。void inv(int x,int n)int temp,i,j,m= ; / n/2-1for(i=0;i=m;i+)j=n-i-1;temp=xi; ; / xi=xjxj= ; / tempreturn;main()int a10=4,5,6,7,8,9,10,11,12,88;int i;printf(The original array:n);for(i=0;i10;i+)printf(%3d,ai);printf(n);inv(a,10);printf(The reverse
10、array:n);for(i=0;i10;i+)printf(%3d,ai);printf(n);tk155.c的功能是:假设a数组中的数据巳按由小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩一个,然后以每行4个数据的格式输出a数组。请填空。# define M 10main() int aM,i,j,n; for(i=0;i=0) if(*(a+i)=*(a+i-1) for(j=_;j=n;j+) / i *(a+j-1)=*(_); / a+j _; / n- i-; for(i=1;i=n+1;i+) printf(%4d,*(a+i-1); if(i%4=0) printf
11、(n); printf(n); tk163.c中有整形数组a 。通过调用子程序inv(),对a 数组中的元素,反向交换存储位置。请在括号 处补充完整程序,并删除 ,运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。void inv(int x,int n)int temp,i,j,m= ; / n/2for(i=0;i=m;i+)j=n-i-1;temp=xi; ; / xi=xjxj= ; / xj=tempreturn;main()int a10=4,5,6,7,8,9,10,11,12,88;int i;printf(The original array:n);for(i=
12、0;i10;i+)printf(%3d,ai);printf(n);inv(a,10);printf(The reverse array:n);for(i=0;i10;i+)printf(%3d,ai);printf(n);tk165.c 程序首先定义了一个结构体变量(包括年、月、日),然后从键盘上输入任意的一天(包括年月日),最后计算该日在当年中是第几天,此时当然要考虑闰年问题。 现在程序是一个不完整的程序,请你在下划线空白处将其补充完整,以便得到正确的答案,但不得增删原来的语句。struct datetype int year; int month; int day;date;main()
13、 int i,day_sum; static int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31; printf(请输入年、月、日:n); scanf(%d,%d,%d,&date.year, &date.month, &date.day); day_sum=0; for(i=1;i2 day_sum+=1; printf(%d月%d日是%d年的第%d天n,date.month,date.day,date.year,day_sum); tk166.c程序中,函数fun的功能是:将s所指字符串中下标为偶数的字符删除,s中剩余的字符形成的新串 放
14、在t所指的数组中。 例如,当s所指字符串中的内容为“ABCDEFGHIJK”, 在t所指数组中的内容应是“BDFHJ”。 #include #include #include void fun(char *s, char t) int i, j, n; n=strlen(s); for(i=0, j=0; in; i+) if( _ ) /i%2!=0 tj=si; j+; tj= _ ;/tj=0 main() char s80, t80; clrscr(); printf(n Please enter string s: ); scanf(%s, s); fun(s, t); printf
15、(n The result is: %sn, t); tk227.c 求出以下分数序列的前n项之和。 1/2,2/3,3/5,5/8,8/13,13/21,. 例如,若n的值为:5,则应输出:3.#include main()int n,i; double sum,mole,deno,temp; printf(Input n:); scanf(%d,&n); _; /sum=0; mole=1;deno=2; for(i=0;in;i+) sum=sum+mole/deno; _; /temp=mole+deno; mole=deno; deno=temp; printf(The result
16、:%fn,sum);tk228.c的功能是:假设a数组中的数据巳按由小到大的顺序存放,以下程序可把a数组中相同的数据删得只剩一个,然后以每行4个数据的格式输出a数组。请填空。# define M 10main() int aM,i,j,n; for(i=0;i=0) if(*(a+i)=*(a+i-1) for(j=_;j=n;j+) /i *(a+j-1)=*(_); / a+j _; / n-; i-; for(i=1;i=n+1;i+) printf(%4d,*(a+i-1); if(i%4=0) printf(n); printf(n); tk234.c中函数fun的功能是:将a所指字
17、符串中字符的倒序,和b所指字符串中的倒序, 按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为abcdefg, b所指字符串中的内容为1234时,则c所指数组中的内容应该为g4f3e2d1cba;而当a所指字符串中的内容为1234,b所指字符串中的内容为abcdefg时,则c所指数组中的内容应该为4g3f2e1dcba。请将函数fun补充完整,使它能得出正确的结果。不得增行或删行,也不得更改程序的结构!#include #include #include void myswap( char *s )char *sp, *st, ch;sp =
18、 s;st = s + strlen(s) - 1;while ( sp = st ) ch = *sp; *sp = *st; *st = ch; sp+; st-; void fun( char *a, char *b, char *c )char s1100, s2100 , *sa, *sb;strcpy( s1,a );strcpy( s2, b );myswap ( s1 );myswap( s2 );sa = s1 ; sb = s2 ;while (_ ) /(*sa|*sb) if ( *sa ) *c = *sa; c+; sa+; if ( *sb ) *c = *sb;
19、 c+; sb+; _; /*c=0main()char s1100, s2100, t200;clrscr();printf(nEnter s1 string : );scanf(%s,s1);printf(nEnter s2 string : );scanf(%s,s2);fun( s1, s2, t );printf(nThe result is : %sn, t );tk273.c中函数fun的功能是:将字符串s1中出现在字符串s2中的字符删除。例如:s1为abcaa63akdfk。调用fun(s1,s2)后,s1为bc63df。请将函数fun补充完整,使它能得出正确的结果。 注意:不
20、得增行或删行!main() char s1300=abcaa63akdfk,s2300=ayk5; fun(s1,s2); printf(%sn,s1); fun(char *s1, char *s2) char *p1=s1,*p2; while (*s1) p2=s2; while (*p2&( !=*p2) p2+; /*p1 if (*p2=0) *p1+=*s1; s1+; *p1= ; / 0 本程序通过调用函数invert()将数组a中的元素头尾倒置过来。例如:若倒置前数组a中原来的元素为1,3,5,2,4和6,则头尾倒置后数组a的元素变为6,4,2,5,3和1。假设数组a的初值
21、就是1,3,5,2,4,6这六个数,在程序运行时输入。请将源程序补充完整,要求得到正确的结果。注意在答题过程中不得对源程序增行或删行,也不得更改程序的结构。#include #define N 6void invert(s,i,j)int *s,i,j; int t; if(ij) t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; invert(s,_(1)_,j-1); / i+1 main() int aN,i; for(i=0;iN;i+)scanf(%d,a+i); _(2)_ ; /invert(a,0,N-1) for(i=0;iN;i+)printf(%d ,
22、ai); printf(n); tk305.c程序中,函数fun的功能是:将s所指字符串中下标为偶数的字符删除,s中剩余的字符形成的新串 放在t所指的数组中。 例如,当s所指字符串中的内容为“ABCDEFGHIJK”, 在t所指数组中的内容应是“BDFHJ”。 #include #include #include void fun(char *s, char t) int i, j, n; n=strlen(s); for(i=0, j=0; in; i+) if( _ ) / n%i!=0 tj=si; j+; tj= _ ; /tj=0; main() char s80, t80; clr
23、scr(); printf(n Please enter string s: ); scanf(%s, s); fun(s, t); printf(n The result is: %sn, t); tk393.c程序中有整形数组a 。通过调用函数inputdata90,给a 数组元素输入数据;通过调用函数process(),实现去掉数组中一个最大数值和一个最小数值的元素,返回其余元素的平均值。请在括号 处补充完整程序,并删除 ,运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。float process(int *);void inputdata(int *);inputdat
24、a(a);printf(Score:%fn,process(a);float process(int *p)int i,maxindex,minindex;float aver=0;maxindex=minindex=0;for(i=1;i10;i+)if(*(p+maxindex)*(p+i)minindex=i;*(p+maxindex)=0,*(p+minindex)=0;for(i=0;i10;i+)aver=aver+*(p+i);return ; /aver/(i-2);void inputdata(int *k) int i; for(i=0;i10;i+) scanf(%d,k
25、+i);tk394.c程序中fun的功能是查询字符c在字符串str中是否存在。例如,若输入字符串为“string”而c为t, 则输出t。请将函数fun补充完整,使它能得出正确的结果。不得增行或删行,也不得更改程序的结构。#include stdio.h#include string.h#include conio.hvoid fun(char *str , char c) while(*str&*str!=c) ( 1 ); /str+ if (*str=c) str0=c; str1=( 2 ); /0 printf(n the result is %s n,str);void main()
26、 char s100,c; clrscr(); printf(n please enter a string:n); gets(s); printf(n please input a character:); c=getche(); fun(s,c);tk397.c程序是计算100到1000间有多少个数其各位数字之和是5,请填空完成该程序.实现上述要求。不得增加行或删除行,也不得更改程序结构。#include main()int i,s,k,count=0;for(i=100;i1000;i+)s=0;k=i;while (_) / k!=0s=s+k%10;k=_; / k=k/10if (
27、s!=5) _; / continueelse count+; printf(%d,count);tk404.c找出xx10中最大的5个数,并按降序存入数组yy5中,要求不得改变数组xx10。程序采用以下算法:1、kk数组的元素数值作为同下标xx数组元素的入选标记,初始化为零;2、通过五次循环,每次找到一个最大的数;3、上次循环已入选的大数,对应的kk数组元素赋值为1,下次不参加比较;请在括号 处补充完整程序,并删除 ,运行测试,实现上述要求。不得增加行或删除行,也不得更改程序结构。#includemain()int i,j,p;int kk10=0;float max,yy5;float x
28、x10=31.6,0.3,0,-1.4,3,-2,21.3,-21,12.7,11.4;for(i=0;i5;i+) j=0; while(kkj!=0) j+; max=xxj; /删除 for(j=1;j10;j+)if(kkj=0&max ) /xxj max=xxj; p=j; kkp=1; yyi=max; for(i=0;i5;i+)printf(%5.2f ,yyi); printf(n);tk405.c求a数组中的所有素数的和,函数fun用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。请将程序补充完整,使它能得出正确的结果。不得增行或删行,也不得更改程序的结
29、构#include main() int i,a10,*p=a,sum=0; printf(Enter 10 num:n); for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+) if(fun(*(p+ _ ) = = 1) / i printf(%d,*(a+i); sum+=*(a+i); printf(nThe sum=%dn,sum); fun(x)int x; int i; for(i=2;i=x/2;i+) if(x%i = = 0) return (0); _; / return (1)tk22.c是打印出杨辉三角形,在空白处将程序补充完整,运行得出正确结果。 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1.#define N 11main( ) int I,j,aNN;for (I=1; IN; I+) aII=1; (1) for (I=3;IN; I+) for ( (2) ) aIj=aI-1j-1+aI-1j; for (I=1;IN;I+) for (j=1;j=I;j+) printf(%6d,aIj); printf(n); printf(n); .
限制150内