1、一. 程序分析,写出运行结果(30分)1试题程序#include typedef structint x;int *y;A;main( )A *p;int dt = 10, 20, 30, 40;A a = 40, &dt0, 50, &dt1, 60, &dt2, 70, &dt3;p = a;printf(%d, , +p-x );printf(%d, , (+p)-x );printf(%dn, +(*p-y);/*答案:41, 50, 21*/2试题程序#include void fun( )int i;char b10;FILE *fp;fp = fopen( file.dat, r
2、 );for( i = 0; i 9; i+ )bi = fgetc( fp );printf(%c, bi - a + A );fclose( fp );printf( n );main( )char a10 = abcdefghi;int i;FILE *fp;fp = fopen( file.dat, w );for( i = 0; i 9; i+ )fputc( ai, fp );fclose( fp );fun( );/*答案:ABCDEFGHI*/3试题程序#include void mmx( int t )int *M, *m, *p, *q;q = t + 10;M = m =
3、 t;for( p = t + 1; p *M )M = p;else if( *p *m )m = p;*p = t0;t0 = *m;*m = *p;*p = t9;t9 = *M;*M = *p;main( )int i;int a10 = 23, 12, 45, 56, 1, 78, 43, 58, 90, 13 ;mmx( a );for( i = 0; i 10; i+ )printf(%d, , ai );/*答案:1, 12, 45, 56, 23, 78, 43, 58, 13, 90, *找最大/最小,最小的和第一个位置对换,最大的和最后一个对换。*/ 4试题程序#incl
4、ude #define SIZE30float aSIZE;void fun1( float s )int i, k;for( k = 2, i = 0; i SIZE; i+ )si = k;k += 2;void fun2( float b, float w )float sum = 0.0;int k, i;for( k = 0, i = 0; i SIZE; i+ )sum += bi;if( ( i + 1 ) % 5 = 0 )wk = sum / 5;sum = 0.0;k+;main( )float sum;int i;float wSIZE;fun1( a );fun2( a
5、, w );for( i = 0; i SIZE / 5; i+ )printf(%.1f, , wi );/* *答案:6.0, 16.0, 26.0, 36.0, 46.0*/5试题程序#include main( )int i, j, f10;f0 = f1 = 1;for( i = 2; i 10; i+ )fi = fi-2 + fi-1;for( i = 0; i 10; i+ )if( i%4 = 0 )printf(n%3d , fi);for( j = 0; j fi; j+ )printf(# );/* * 答案: * 1 # * 5 # * 34 # * */6试题程序#
6、include main( )int x = 18;int y, i, a8, j, u, v;y = x;i = 0;dou = y/2;ai = y % 2;i+;y = u;while( y = 1 );for( j = i-1; j = 0; j- )printf(%d, aj );printf(Yes);/* *答案:10010Yes * */7试题程序#include int i = 0;int workover( int i )i = ( i % i ) * ( (i*i)/(2*i) + 4);printf(i = %dn, i );return i;int reset( in
7、t i )i = i = 2 ? 5:0;return i;main( )int i = 5;reset( i / 2 );printf(i=%dn, i );reset( i = i /2 );printf(i=%dn, i );reset( i/2 );printf(i=%dn, i );workover( i );printf(i=%dn, i );/* *答案: *i = 5 *i = 2 *i = 2 *i = 0 *i = 2 */8试题程序说明下列程序的功能, 请写出程序的输出#include #include int fun( char *p )int num = 0, k;f
8、or( ; *p; p+ )k = *p - 0;num = num * 10 + k;return num;main( )char s6 = -2345;int n;n = ( *s = - ) ? -fun( s + 1 ):fun( s );printf(%d, n );/* *答案: -23459试题程序#include main( )char s = ABCCDA;int k;char c;for( k = 1; c = sk; k+ )switch( c )case A:putchar(%);continue;case B:+k;break;default:putchar( * )
9、;case C:putchar( & );continue;putchar(#);/*答案:#&*&% */二. 程序填空(30分)1. 以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)int fun(int xN)int i,k=0;for(i=0;iN;i+)if(xi return xk;答案:if(xi xk)k = i;2. 以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。(设M,. N已定义)int fun(int aNM)int i,j,row=0,col=0;for(i=0;iN;i+
10、)for(j=0;jmain()int a10,*p,s;for(p=a;p-a10;p+)scanf(”d”,p);for(p=a,s=a;p-a*s)s=p;5. 以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。includestdiohmain() char a51,2,3,4,5,i;fp=fopen(”f txt”,”w”);for(i=0;i5;i+)fputc(ai,fp);fclose(fp);答案:FILE *fp;6. 以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#include “std
11、io.h” main() int x=256;printf(%d-%d-%dn, );答案:x%10,x/10%10,x/1007. 以下程序用以删除字符串所有的空格,请填空。试题程序: #include “stdio.h” main() char s100=Our teacher teach C language!;int i,j;for(i=j=0;si!=0;i+) sj= 0printf(“%sn”,s);答案:if(si!= ) sj=si;j+;8. 函数fun功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a的十位和个位数依次放在c的个位和百位上,b的
12、十位和个位数依次放在c的十位和千位上。例如,当a45, b=12调用该函数后,c2514。请填空。试题程序:#includevoid fun(int a,int b,long *c)void main()int a,b;long c;printf(printf a,b:);scanf(%d%d,&a,&b); printf(a=%d b=%dn,a,b); fun(a,b,&c); printf(The result is:%dnn,c);答案:#includevoid fun(int a,int b,long *c)int a1,a2,b1,b2;a1=a%10;a2=a/10;b1=b%1
13、0;b2=b/10;*c=a2+a1*100+b2*10+b1*1000;9. 函数fun的功能是:通过某种方式实现两个变量值的交换。例如变量a中的值原为10, b中的值原为20程序运行后a中的值为20, b中的值为10。请填空。试题程序:#includeInt fun(int *x, int y) void main()int a,b; printf(Enter a, b:); scanf(%d%d,&a,&b);printf(a%d b%dnn,a,b); b=fun(&a,b); printf(a%d b%dnn,a,b);答案:int fun(int *x, int y) int t;
14、t=*x;*x=y;y=t;return t;三. 编写程序(40分)1. (7分)编程实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:(1)能同时被3,5,7整除;(2)能被其中两数(要指出哪两个)整除;(3)能被其中一个数(要指出哪一个)整除;(4)不能被3,5,7任何一个整除。2. (8分)每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买苹果总个数达到不超过100这个最大值。编程求平均每天花多少钱?3. (12分)定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。4.
15、(13分)从键盘输入一个字符串,然后按照下面要求得到一个新字符串。新串是在原串中,每相邻两个字符之间插入一个空格,如原串为abcdef,则新串为a b c d e f。然后,将新串逆序(不允许使用辅助数组),最后将得到的字符串输出。要求在函数insert中完成新串的产生;在函数inverse中完成新串的逆序;并在主函数中完成所有相应的输入和输出。1. #include void main()int x;scanf(%d,&x);if(x%3=0)&(x%5=0)&(x%7=0)printf(%d能同时被3,5,7整除n,x);else if (x%3=0)&(x%5=0)printf(%d能被
16、3和5整除n,x);else if (x%3=0)&(x%7=0)printf(%d能被3和7整除n,x);else if (x%7=0)&(x%5=0)printf(%d能被7和5整除n,x);else if (x%3=0)printf(%d能被3整除n,x);else if (x%5=0)printf(%d能被5整除n,x);else if (x%7=0)printf(%d能被7整除n,x);elseprintf(%d不能被3,5,7任何一个整除n,x);2. #includevoid main()int day=0,buy=2;float sum=0.0,ave;dosum=sum+0.
17、8*buy;day+;buy=buy*2;while(sum=100);ave=sum/day;printf(%f,ave);3. #include#define SIZE 30void main()float bSIZE/5,sum;int aSIZE,i,j,k;for(k=2,i=0;iSIZE;i+)ai=k;k=k+2;sum=0.0;for(k=0,i=0;iSIZE;i+)sum=sum+ai;j=i+1;if(j%5=0)bk=sum/5;sum=0;k+;printf(The result is:n);for(i=0;iSIZE/5;i+)printf(%f ,bi);pri
18、ntf(n);4. #include#includevoid insert(char *p)int i;for(i=strlen(p);i0;i-)*(p+2*i)=*(p+i);*(p+2*i-1)= ;void inverse(char *p1)int n,i,k;n=strlen(p1);for(i=0;in/2;i+)k=*(p1+i); *(p1+i)=*(p1+n-i-1); *(p1+n-i-1)=k;void main() char str80;printf(请输入一个字符串n);gets(str);insert(str);puts(str);inverse(str);printf(新的字符串是:n);puts(str);