C语言集中上机题目
- 格式:doc
- 大小:61.50 KB
- 文档页数:8
C语言集中上机题目第一次实验循环1 编程1.1 打印出以下图案** * ** * * * ** * * * * * ** * * * ** * **1.2编写程序实现输入整数n,输出如下所示由数字组成的菱形。
(图中n=5)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 112 思考题1.以下不是死循环的语句是。
A)for (y=1,x=9;x>++y ; x=i++) i=x ;B)for ( ; ; x++=i ) ;C)while (1) { x++ ; }D)for (i=10 ; ; i--) sum+=i ;2. 下面程序段的运行结果是。
x=y=0;while (x<15) y++,x+=++y ;printf(“%d,%d”,y,x);A)20,7 B)6,12 C)20,8 D)8,203. 以下for循环的执行次数是。
for (x=0,y=0; (y=123) && (x<4) ; x++) ;A)无限循环B)循环次数不定C)4次D)3次4.写出下面程序运行的结果。
main ( ){ int i,b,k=0 ;for (i=1; i<=5 ; i++) {b=i%2;while (b--==0) k++ ;}printf(“%d,%d”,k,b);}5. 写出下面程序运行的结果。
main ( ){ int a,b;for (a=1,b=1 ; a<=100 ; a++) {if (b>=20) break;if (b%3==1) { b+=3 ; continue ; }b-=5;}printf(“%d\n”,a);}6. 写出下面程序运行的结果。
main ( ){ int k=1,n=263 ;do { k*= n%10 ; n/=10 ; } while (n) ;printf(“%d\n”,k);}第二次实验数组1 编程1.1 打印以下图案:* * * * ** * * * ** * * * ** * * * ** * * * *1.2输入4×4的数组,编写程序实现:(1)求出对角线上各元素的和;(2)求出对角线上行、列下标均为偶数的各元素的积;(3)找出对角线上其值最大的元素和它在数组中的位置。
2 思考题1.下面程序的输出结果是。
main ( ){ char ch[7]=”12ab56”;int i,s=0;for (i=0;ch[i]>‟0‟&&ch[i]<=‟9‟;i+=2)s=10*s+ch[i]-…0‟;printf(“%d\n”,s);}A)1 B)1256 C)12ab56 D)ab 2.下面程序段的输出结果是。
char c[5]={…a‟,‟b‟,‟\0‟,‟c‟,‟\0‟}printf(“%s”,c);A)‟a‟‟b‟B)ab C)ab c D)abc 3.mian(){ int m[] [3]={1,4,7,2,5,8,3,6,9};int i, j, k=2;for(i=0;i<3;i++)printf(“%d”,m[k][i]);}A)456 B)258 C)369 D)7894. 当从键盘输入18并回车后,下面程序的运行结果是________.main(){int x,y,i,a[8],j,u,v;scanf("%d",&x);y=x;i=0;do{u=y/2;a[i]=y%2;i++;y=u;}while(y>=1)for(j=i-1;j>=0;j--)printf("%d",a[j]);5.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为______.(假设a[0][0]位于数组的第一个位置上。
)a)i*m+j b)j*m+i c)i*m+j-1 d)i*m+j+16. 当运行下面程序时,从键盘上输入7 4 8 9 1 5↙,则写出下面程序的运行结果。
main ( ){ int a[6],i,j,k,m;for (i=0 ; i<6 ; i++)scanf (“%d”,&a[i]);for (i=5 ; i>=0; i--) {k=a[5];for (j=4; j>=0; j--)a[j+1]=a[j] ;a[0]=k;for (m=0 ; m<6 ; m++)printf(“%d ”,a[m]);printf(“\n”);}}第三次实验函数1 编程1.1 写一函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。
如输入1990,应输出“1└┘9└┘9└┘0”。
1.2 用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串“483”。
n的位数不确定,可以是任意位数的整数。
2 思考题1.fun(int a,int b){ if(a>b) return(a);else return(b);}main(){ int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%\d\n”,r);}程序运行后的输出结果是A)3 B)6 C)8 D)122.以下不正确的说法是。
A)全局变量,静态变量的初值是在编译时指定的B)静态变量如果没有指定初值,则其初值为0C)局部变量如果没有指定初值,则其初值不确定D)函数中的静态变量在函数每次调用时,都会重新设置初值3.写出下面程序的运行结果。
# define MAX 10int a[MAX], i ;sub1 ( ){ for (i=0; i<MAX; i++) a[i]=i+i ;}sub2 ( ){ int a[MAX], i ,max ;max=5;for (i=0; i<MAX; i++) a[i]=i ;}sub3 (int a[ ]){ int i ;for (i=0; i<MAX; i++) printf(“%d ”,a[i]);printf(“\n”);}main ( ){ sub1( ); sub3(a); sub2( ); sub3(a);}4. 若输入的值是-125,写出下面程序的运行结果。
#include <math.h>fun (int n){ int k,r ;for (k=2; k<=sqrt(n); k++) {r = n % k ;while (!r) {printf(“%d”,k); n=n/k;if (n>1) printf(“*”);r = n % k ;}}if (n!=1) printf(“%d\n”,n);}main ( ){ int n ;scanf(“%d”,&n);printf(“%d=”,n);if (n<0) printf(“-”);n = fabs(n); fun(n);}5. 写出下面程序的运行结果。
int i=0;fun1 (int i){ i = (i%i)*(i*i)/(2*i)+4 ;printf(“i=%d\n”,i);return (i) ;}fun2(int i){ i = i<=2 ? 5 : 0 ;return (i) ;}main ( ){ int i = 5 ;fun2(i/2) ; printf(“i=%d\n”,i) ;fun2(i=i/2) ; printf(“i=%d\n”,i) ;fun2(i/2) ; printf(“i=%d\n”,i) ;fun1(i/2) ; printf(“i=%d\n”,i) ;}6. 写出下面程序的功能。
func (int n){ int i,j,k;i=n/100; j=n/10-i*10 ; k=n%10 ;if (i*100+j*10+k) == i*i*i+j*j*j+k*k*k) return n ;return 0;}main ( ){ int n,k ;for (n=100; n<1000 ; n++)if (k=func(n)) printf(“%d”,k) ;}第四次实验指针1 编程1.1 编一程序,输入月份号,输出该月的英文月名。
例如,输入“3”,则输出“March”,要求用指针数组处理。
1.2 有一字符串,包含n个字符。
写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
2 思考题1.若要对a进行自减运算,则a应有下面说明。
A)int p[3]; B)int k; C)char *a[3] D)int b[10];int *a=p; int *a=&k; int *a=b+1;2. 以下选项中,对指针变量p的不正确操作是。
A)int a[3], *p; B)int a[5], *p; C)int a[5]; D)int a[5] p=&a; p=a; int *p=a=100; int *p1,*p2=a;*p1=*p2; 3.下面程序段的输出是。
int a[ ]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k;for (k=01 k<4; k++) q[k]=&a[k*3];printf(“%d\n”,q[3][0]);A)8 B)16 C)20 D)输出不合法4.下面程序的运行结果是。
main ( ){ int x[5]={2,4,6,8,10}, *p, **pp ;p=x , pp = &p ;printf(“%d”,*(p++));printf(“%3d”,**pp);}A)4 4 B)2 4 C)2 2 D)4 65. 若有定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x ; 则能够正确表示数组元素x[1][2]的表达式是。
A)*((*p+1)[2]) B)(*p+1)+2C)*(*(p+5)) D)*(*(p+1)+2)6.写出下面程序的运行结果。
func(char *s,char a,int n){ int j;*s=a; j=n ;while (*s<s[j]) j-- ;return j;}main ( ){ char c[6] ;int i ;for (i=1; i<=5 ; i++) *(c+1)=‟A‟+i+1;printf(“%d\n”,fun(c,‟E‟,5));}第五次实验综合1 编程1.1 编写一个程序计算下式之和。