⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 练习(四).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
		a[7]=a[j]; puts(a);
	}
   (A) mogninr
   (B) mo
   (C) morning
   (D) mornin
二、填空题
53、在C语言中,二维数组的定义方式为:类型说明符 数组名________ ________;
54、在C语言中,二维数组元素在内存中的存放顺序是________。
55、若有定义:double x[3][5]; 则x数组中行下标的下限为________,列下标的上限为________。
56、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:________。
57、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}}; 则初始化后,a[1][2]得到的初值是________,a[2][1]得到的初值是_________。
58、若有以下输入(<CR>代表回车符),则下面程序的运行结果是________。
	7 10 5 4 6 7 9 8 3 2 4 6 12 2 -1<CR>
	void main()
	{
		int b[51],x,i,j=0,n=0;
		scanf("%d",&x);
		while(x>-1){b[++n]=x; scanf("%d",&x);}
		for(i=1;i<=n;i++)
			if(b[i]%2==0)b[++j]=b[i];
		for(i=1;i<=j;i++) printf("%3d",b[i]); printf("\n");
	}
59、下面程序以每行4个数据的形式输出a数组,请填空。
	#define N 20
	void main()
	{
		int a[N],i;
		for(i=0;i<N;i++) scanf("%d",________);
		for(i=0;i<N;i++)
		{
			if(________) _________
				printf("%3d",a[i]);
		}
		printf("\n");
	}
60、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。请填空。
	void main()
	{
		int a[2][3]={{1,2,3},{4,5,6}};
		int b[3][2],i,j;
		printf("array a:\n");
		for(i=0;i<=1;i++)
		{
			for(j=0;_________;j++)
			{
				printf("%5d",a[i][j]);
				________;
			}
			printf("\n");
		}
		printf("array b:\n");
		for(i=0;________;i++)
		{
			for(j=0;j<=1;j++)
				printf("%5d",b[i][j]);
			printf("\n");
		}
	}
61、下面程序的运行结果是________。
	void main()
	{
		int a[2][3]={{1,2,3},{4,5,6}};
		int b[3][2],i,j;
		printf("array a:\n");
		for(i=0;i<=1;i++)
		{
			for(j=0;j<=2;j++)
			{
				printf("%5d",a[i][j]);
				b[j][i]=a[i][j];
			}
			printf("\n");
		}
		printf("array b:\n");
		for(i=0;i<=2;i++)
		{
			for(j=0;j<=1;j++)
				printf("%5d",b[i][j]);
			printf("\n");
		}
	}
62、下面程序可求出矩阵a的两条对角线上的元素之和。请填空。
	void main()
	{
		int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;
		for(i=0;i<3;i++)
			for(j=0;j<3;j++)
				if(i==j) sum1=sum1+a[i][j];
		for(i=0;i<3;i++)
			for(________;________;j--)
				if((i+j)==2) sum2=sum2+a[i][j];
		printf("sum1=%d,sum2=%d\n",sum1,sum2);
	}
63、下面程序的运行结果是________。
	void main()
	{
		int a[5][5],i,j,n=1;
		for(i=0;i<5;i++)
			for(j=0;j<5;j++)
				a[i][j]=n++;
		printf("The result is: \n");
		for(i=0;i<5;i++)
		{
			for(j=0;j<=i;j++)
				printf("%4d",a[i][j]);
			printf("\n");
		}
	}
64、下面程序可求出矩阵a的主对角线上的元素之和。请填空。
	void main()
	{
		int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
		for(i=0;i<3;i++)
			for(j=0;j<3;j++)
				if(________) sum=sum+________;
		printf("sum=%d\n",sum);
	}
65、以下程序可求出所有的水仙花数。(提示:所谓水仙花数是指一个三位正整数,其各位数字的立方之和等于该正整数。例如:407=4×4×4+0×0×0+7×7×7,故407是一个水仙花数。)请填空。
	void main()
	{
		int x,y,z,a[8],m,i=0;
		printf("The special numbers are (in the arange of 1000): \n";
		for(________; m++)
		{
			x=m/100;
			y=________;
			z=m%10;
			if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)
			{
				________;
				i++;
			}
		for(x=0;x<i;x++)
			printf("%6d",a[x]);
	}
66、下面程序的功能是生成并打印某数列的前20项,该数列第1,2项分别为0和1,以后每个奇数编号的项是前两项之和,偶数编号的项是前两项差的绝对值。生成的20个数存在一维数组x中,并按每行4项的形式输出。请填空。
	void main()
	{
		int x[21],i,j;
		x[1]=0;x[2]=1;
		i=3;
		do{
			x[i]=________;
			x[i+1]=________;
			i=________;
		}while(i<=20);
		for(i=1;i<=20;i++)
		{
			printf("%5d",x[i]);
			if(i%4==0)
				printf("\n");
		}
	}
67、若有以下输入(<CR>代表回车换行符),则下面程序的运行结果是________。
	1 4 2 3 3 4 1 2 3 3 2 2 2 3 3 1 1 1 4 1 1 1 -1<CR>

	#define M 50
	void main()
	{
		int a[M],c[5],i,n=0,x;
		printf("Enter 0 or 1 or 2 or 3 or 4,to end with -1\n");
		scnaf("%d",&x);
		while(x!=-1)
		{
			if(x>=0&&x<=4) {a[n]=x;n++;}
			scanf("%d",&x);
		}
		for(i=0;i<5;i++) c[i]=0;
		for(i=0;i<n;i++) c[a[i]]++;
		printf("The result is: \n");
		for(i=1;i<=4;i++) printf("%d: %d\n",i,c[i];
		printf("\n");
	}
68、下面程序的运行结果是________。
	void main()
	{
		int i,j,a[2][3]={{2,4,6},{8,10,12}};
		printf("The original array is: \n");
		for(i=0;i<2;i++)
		{
			for(j=0;j<3;j++)
				printf("%4d",a[i][j]);
			printf("\n");
		}
		printf("\nthe result is: \n");
		for(i=0;i<3;i++)
		{
			for(j=0;j<2;j++)
				printf("%4d",a[j][i]);
			printf("\n");
		}
	}
69、设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。
	void main()
	{
		int a[10],b[10],i;
		for(i=0;i<10;i++)
			scanf("%d",&a[i]);
		for(________;i<10;i++)
			________
		for(i=1;i<10;i++)
		{
			printf("%3d",b[i]);
			if(________==0) printf("\n");
		}
	}
70、下面程序将十进制整数转换成n进制。请填空。
	void main()
	{
		int i=0,base,n,j,num[20];
		printf("Enter data that will be converted\n");
		scanf("%d",&n)
		printf("Enter base\n");
		scanf("%d",&base);
		do{
			i++;
			num[i]=n________base;
			n=n________base;
		}while(n!=0);
		printf("The data %d has been converted into the %d--base data: \n",n,base);
		for(________)
			printf("            %d",num[j]);
	}
71、下面程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。请填空。
	void main()
	{
		int a[5],max,min,i,j,k;
		for(i=0;i<5;i++)
			scanf("%d",&a[i]);
		min=a[0];
		for(i=1;i<5;i++)
			if(a[i]<min) {min=a[i];________;}
		max=a[0];
		for(i=1;i<5;i++)
			if(a[i]>max) {max=a[i];________;}
		________
		printf("\nThe position of min is: %3d\n",k);
		printf("The position of max is: %3d\n",j);
		for(i=0;i<5;i++)
			printf("%5d",a[i]);
	}
72、下面程序的运行结果是________。
	void main()
	{
		int i,f[10];
		f[0]=f[1]=1;
		for(i=2;i<10;i++) f[i]=f[i-2]+f[i-1];
		for(i=0;i<10;i++) { if(i%4==0) printf("\n"); printf("%3d",f[i]);}
	}
73、下面程序的运行结果是________。
	void main()
	{
		int a[10]={1,2,2,3,4,3,4,5,1,5};
		int n=0,i,j,c,k;
		for(i=0;i<10-n;i++)
		{
			c=a[i];
			for(j=i+1;j<10-n;j++)
				if(a[j]==c)
				{
					for(k=j;k<10-n;k++)
						a[k]=a[k+1];
					n++;
				}
		}
		for(i=0;i<(10-n);i++)
			printf("%d",a[i]);
		printf("\n");
	}
74、下面程序的功能是给一维数组a输入任意6个整数,假设为:7 4 8 9 1 5 然后建立一个具有以下内容的方阵并打印。请填空。
	5 7 4 8 9 1
	1 5 7 4 8 9
	9 1 5 7 4 8
	8 9 1 5 7 4
	4 8 9 1 5 7
	7 4 8 9 1 5
	void 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>=0;j--)
				a[j+1]=a[j];
			________;
			for(m=0;m<6;m++)
				printf("%d",a[m]);
			printf("\n");
		}
	}
75、下面程序的功能是输出以下9*9阶方阵。请填空。
	1 1 1 1 1 1 1 1 1 
	1 2 2 2 2 2 2 2 1
	1 2 3 3 3 3 3 2 1
	1 2 3 4 4 4 3 2 1
	1 2 3 4 5 4 3 2 1
	1 2 3 4 4 4 3 2 1
	1 2 3 3 3 3 3 2 1
	1 2 2 2 2 2 2 2 1
	1 1 1 1 1 1 1 1 1
	void main()
	{
		int a[10][10],n,I,j,m;
		scanf("%d",&n);
		if(n%2==0) m=n/2;
		else ________;
		for(i=0;i<m;i++)
			for(j=i;j<n-i;j++)
			{
				a[i][j]=i+1;
				a[________][j]=i+1;
				a[j][i]=i+1;
				a[j][________]=i+1;
			}
		for(i=0;j<n;j++)
		{
			for(j=0;j<n;j++)
				printf("%d",a[i][j]);
			printf("\n");
		}
	}
76、当从键盘输入18并回车后,下面程序的运行结果是________。
	void 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]);
	}
77、下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组b中,并按矩阵形式输出a和b。请填空。
	例如:array a:		array b:
	      4  5  6		6  4  5
	      1  2  3		3  1  2
	void main()
	{
		int a[2][3]={4,5,6,1,2,3},b[2][3];
		int i,j;
		printf("array a:\n");
		for(i=0;i<=1;i++)
		{
			for(j=0;j<3;j++)
			{
				printf("%5d",a[i][j]);
				________;
			}
			printf("\n");
		}
		for(________;i++) b[i][0]=a[i][2];
		printf("array b: \n");
		for(i=0;i<2;i++)
		{
			for(j=0;j<3;j++)
				printf("%5d",b[i][j]);
			________;
		}
	}
78、下面程序的功能是统计年龄在16-31岁之间的学生人数。请填空。
	void main()
	{
		int a[30],n,age,i;
		for(i=0;i<30;i++) a[i]=0;
		printf("Enter the number of the students(<30)\n");
		scnaf("%d",&n);
		printf("Enter the age of each student: \n");
		for(i=0;i<n;i++)
		{
			scanf("%d",&age);________;
		}
		printf("the result is \n");
		printf(" age  number\n");
		for(________i++)
			printf("%3d  %6d\n",i,a[i-16]);
	}
79、下面程序的功能是检查一个二维数组是否对称(即:对所有i和j都有a[i][j]=a[j][i])。请填空。
	void main()
	{
		int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
		int i,j,found=0;
		for(j=0;j<4;j++)
			for(________;i<4;i++)
				if(a[j][i]!=a[i][j])
				{
					________; break;
				}
		if(found) printf("No");
		else printf("Yes");
	}
80、下面程序中的数组a包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。请填空。
	void main()
	{
		int a[10],b[10],i;
		for(i=0;________;i++)
			scanf("%d",&a[i]);
		for(i=1;________;i++)
			b[i]=a[i]-a[i-1];
		for(i=1;i<10;i++)
		{
			printf("%3d",b[i]);
			if(________) printf("\n");
		}
	}
81、下面程序的运行结果是________。
	void main()
	{
		int i=1,n=3,j,k=3;
		int a[5]={1,4,5};
		while(i<=n&&k>a[i]) i++;
		for(j=n-1;j>=i;j--)
			a[j+1]=a[j];
		a[i]=k;
		for(i=0;i<=n;i++)
			printf("%3d",a[i]);
	}
82、下面程序的运行结果是________。
	void main()
	{
		int num_list[]={6,7,8,9},k,j,b,u=0,m=4,w;
		w=m-1;
		while(u<=w)
		{
			j=num_list[u];
			k=2; b=1;
			while(k<=j/2&&b)
				b=j%++k;
			if(b) printf("%d\n",num_list[u++]);
			else
			{
				num_list[u]=num_list[w];
				num_list[w--]=j;
			}
		}
	}
83、设数组a中的元素均为正整数,以下程序是求a中偶数的个数和偶数的平均值。请填空。
	void main()
	{
		int a[10]={1,2,3,4,5,6,7,8,9,10};
		int k,s,i;
		float ave;
		for(k=s=i=0;i<10;i++)
		{
			if(a[i]%2!=0) ________;
			s+=________;
			k++;
		}
		if(k!=0) {ave=s/k; printf("%d,%f\n",k,ave);}
	}
84、以下程序是求矩阵a,b的和,结果存入矩阵c中并按矩阵形式输出。请填空。
	void main()
	{
		int a[3][4]={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};
		int b[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};
		int i,j,c[3][4];
		for(i=0;i<3;i++)
			for(j=0;j<4;j++)
				c[i][j]=________;
		for(i=0;i<3;i++)
		{
			for(j=0;j<4;j++)
				printf("%3d",c[i][j]);
				________;
		}
	}
85、以下程序是求矩阵a,b的乘积,结果存入矩阵c中并按矩阵形式输出。请天空。
	void main()
	{
		int a[3][2]={2,-1,-4,0,3,1};
		int b[2][2]={7,-9,-8,10};
		int i,j,k,s,c[3][2];
		for(i=0;i<3;i++)
			for(j=0;j<2;j++)
			{
				for(________; k<2; k++)
					s+=________;
				c[i][j]=s;
			}
		for(i=0;i<3;i++)
		{
			for(j=0;j<2;j++)
				printf("%6d",c[i][j]);
			________
		}
	}
86、已知以下矩阵:
	┏    ┓   ┏                      ┓    ┏   ┓
	┃ Y1 ┃   ┃ 1    -0.2   0     0  ┃ 	 ┃ 1 ┃
	┃ Y2 ┃ = ┃-0.8   1    -0.2  -0.2┃ × ┃ 1 ┃
	┃ Y3 ┃   ┃ 0    -0.8   1    -0.2┃	 ┃ 1 ┃
	┃ Y4 ┃   ┃ 0    -0.8  -0.8   1  ┃	 ┃ 1 ┃
	┗    ┛   ┗                      ┛    ┗   ┛
    下面程序的功能是求出Y1,Y2,Y3,Y4的值。请填空。
	void main()
	{
		float a[4][4]={ {1,-0.2,0,0},
				{-0.8,1,-0.2,-0.2},
				{0,-0.8,1,-0.2},
				{0,-0.8,-0.8,1} };
		float x[4]={1,1,1,1},y[4];
		int i,j,k;
		for(i=0;i<4;i++)
		{
			y[i]=0;
			for(j=0;j<4;j++)
				________
		}
		for(k=0;k<4;k++)
			printf("\nY[%d]=%-6.2f",k+1,________);
	}
87、以下程序的功能是求数值num中小于零的数据之和。请填空。
	void main()
	{
		int num[20]={10,20,1,-20,203,-21,2,-2,-2,11,-21,22,12,-2,-234,-90,22,90,-45,20};
		int sum=0,i;
		for(i=0;i<=19;i++)
		{
			if(________)
				sum=________;
		}
		printf("sum=%6d",sum);
	}
88、以下程序的功能是________。
	void main()
	{
		int num[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};
		int sum=0,1;
		for(i=0;i<10;i++)
		{
			if(num[i]>0)
				sum=num[i]+sum;
		}
		printf("sum=%6d",sum);
	}
89、下面程序的运行结果是________。
	void main()
	{
		int i,j,row,col,min;
		int a[3][4]={{1,2,3,4},{9,8,7,6},{-1,-2,0,5}};
		min=a[0][0];
		for(i=0;i<3;i++)
			for(j=0;j<4;j++)
				if(a[i][j]<min)
				{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -