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

📄 练习(四).txt

📁 谭浩强的C语言题集
💻 TXT
📖 第 1 页 / 共 3 页
字号:
					min=a[i][j]; row=i; col=j;
				}
		printf("min=%d,row=%d,col=%d\n",min,row,col);
90、若有以下输入(<CR>代表回车),则下面程序的运行结果是________。
	52<CR>
	void main()
	{
		int a[8]={6,12,18,42,44,52,67,94};
		int low=0,mid,high=7,found,x;
		found=0;
		scanf("%d",&x);
		while((low<=high)&&(found==0))
		{
			mid=(low+high)/2;
			if(x>a[mid]) low=mid+1;
			else if(x<a[mid]) high=mid-1;
			else { found=1; break;}
		}
		if(found==1) printf("Search Successful! The index is: %d\n",mid);
		else printf("Can't search!\n");
	}
91、下面程序的运行结果是________。
	void main()
	{
		int a[9]={0,6,12,18,42,44,52,67,94};
		int x=52,i,n=9,m;
		i=n/2+1;
		m=n/2;
		while(m!=0)
		{
			if(x<a[i])
			{
				i=i-m/2-1; m=m/2;
			}
			else if(x>a[i])
			{
				i=i+m/2+1; m=m/2;
			}
			else break;
		}
		printf("The index is: %d",i);
	}
92、下面程序用“顺序查找法”查找数组a中是否存在某一关键字。请填空。
	void main()
	{
		int a[8]={25,57,48,37,12,92,86,33};
		int i,x;
		scanf("%d",&x);
		for(i=0;i<8;i++)
			if(x==a[i])
			{
				printf("Found! The index is: %d\n",--i);________;
			}
		if(________)
			printf("Can't found!");
	}
93、下面程序用“快速顺序查找法”查找数组a中是否存在某一关键字。请填空。
	void main()
	{
		int a[9]={25,57,48,37,12,92,86,33};
		int i,x;
		scanf("%d",&x);
		________;i=0;
		while(a[i]!=x) i++;
		if(________) printf("Found! The index is: %d\n",i);
		else printf("Can't found!\n");
	}
94、下面程序用插入法对数组a进行降序排序。请填空。
	void main()
	{
		int a[5]={4,7,2,5,1};
		int i,j,m;
		for(i=1;i<5;i++)
		{
			m=a[i];
			j=________;
			while(j>=0&&m>a[j])
			{
				________;
				j--;
			}
			________=m;
		}
		for(i=0;i<5;i++)
			printf("%d",a[i]);
		printf("\n");
	}
95、下面程序用“两路合并法”把两个已按升序排列的数组合并成一个升序数组。请填空。
	void main()
	{
		int a[3]={5,9,19};
		int b[5]={12,24,26,37,48};
		int c[10],i=0,j=0,k=0;
		while(i<3&&j<5)
			if(________)
			{
				c[k]=b[j]; k++; j++;
			}
			else
			{
				c[i]=a[i]; k++; i++;
			}
		while(________)
		{
			c[k]=a[i];i++;k++;
		}
		while(________)
		{
			c[k]=b[j];k++;j++;
		}
		for(i=0;i<k;i++)
			printf("%3d",c[i]);
	}
96、下面程序的运行结果是________。
	void main()
	{
		int a[6][6],i,j;
		for(i=1;i<6;i++)
			for(j=1;j<6;j++)
				a[i][j]=(i/j)*(j/i);
		for(i=1;i<6;i++)
		{
			for(j=1;j<6;j++)
				printf("%2d",a[i][j]);
			printf("\n");
		}
	}
97、若有以下输入(<CR>代表回车),则下面程序的运行结果是________。
	3245<CR>
	8<CR>
	void main()
	{
		int i=0,base,n,j,old,num[20];
		printf("Enter data that will be converted \n");
		scanf("%d",&n);
		old=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",old,base);
		for(j=i;j>=i;j--)
			printf("%5d",num[j]);
	}
98、若有以下输入(<CR>代表回车),则下面程序的运行结果是________。
	7 4 8 9 1 5<CR>
	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=4;j>=0;j--)
				a[j+1]=a[j];
			a[0]=k;
			for(m=0;m<6;m++)
				printf("%d",a[m]);
			printf("\n");
		}
	}
99、下面程序的运行结果是________。
	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) continue;
			s+=a[i];
			k++;
		}
		if(k!=0)
		{
			ave=s/k;
			printf("The number is: %d, The average is: %f\n",k,ave);
		}
	}
100、若有以下输入(<CR>代表回车换行符),则下面程序的运行结果是________。
	3 1 2 3 2 2 2 1 1 3 0<CR>
	void main()
	{
		int a[4],x,i;
		for(i=1;i<=3;i++) a[i]=0;
		scanf("%d",&x);
		while(x>0){ a[x]+=1; scanf("%d",&x);}
		for(i=1;i<=3;i++) printf("a[%2d]=%4d\n",i,a[i]);
	}
101、若有以下输入(<CR>代表回车换行符),则下面程序的运行结果是________。
	5<CR>
	9 7 5 3 1<CR>
	5<CR>
	#define M 10
	void main()
	{
		int a[M],x,i,n;
		printf("Enter n(n<10):"); scanf("%d",&n);
		for(i=1;i<=n;i++) scanf("%d",a+i);
		printf("Enter x:"); scanf("%d",&x);
		a[0]=x; i=n;
		while(x>a[i]) {a[i+1]=a[i]; i--;}
		a[i+1]=x;
		n++;
		for(i=1;i<=n;i++) printf("%3d",a[i]);
		printf("\n");
	}
102、下面程序的运行结果是________。
	#define SIZE 30
	void main()
	{
		float a[SIZE],b[SIZE/5],sum;
		int i,k;
		for(k=2,i=0;i<SIZE;i++)
		{
			a[i]=k; k+=2;
		}
		sum=0;
		for(k=0,i=0;i<SIZE;i++)
		{
			sum+=a[i];
			if((i+1)%5==5)
			{
				b[i]=sum/5;
				sum=0;
				k++;
			}
		}
		printf("The result is: \n");
		for(i=0;i<SIZE/5;i++) printf("%5.2f",b[i]);
		printf("\n");
	}
103、下面程序的功能是求出矩阵x的上三角元素之积。其中矩阵x的行、列数和元素值均由键盘输入。请填空。
	#define M 10
	void main()
	{
		int x[M][M];
		int n,i,j;
		long s=1;
		printf("Enter a integer(<=10): \n");
		scanf("%d",&n);
		printf("Enter %d data on each line for the array x\n",n);
		for(________)
			for(j=0;j<n;j++)
				scanf("%d",&x[i][j]);
		for(i=0;i<n;i++)
			for(________)
				________
		printf("%ld\n",s);
	}
104、若有以下输入(<CR>代表回车换行符),则下面程序的运行结果是________。
	4<CR>
	1 2 3 4<CR>
	1 2 3 4<CR>
	1 2 3 4<CR>
	1 2 3 4<CR>
	#define M 10
	void main()
	{
		int x[M][N];
		int n,i,j;
		long s=1;
		printf("Enter a integer(<10): \n");
		scanf("%d",&n);
		printf("Enter %d data on each line for the array x\n",n);
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
				scanf("%d",&x[i][j]);
		for(i=0;i<n;i++)
			for(j=i;j<n;j++)
				s*=x[i][j];
		printf("The result=%ld\n",s);
	}
105、字符串"ab\n\\012\\\""的长度是________.
106、下面程序段的运行结果是________。
	char ch]="600";
	int a,s=0;
	for(a=0;ch[a]>='0'&&ch[a]<='9';a++)
		s=10*s+ch[a]-'0';
	printf("%d",s);
107、下面程序段将输出computer,请填空。
	char c[]="It's a computer";
	for(i=0;________;i++)
	{
		________;
		printf("%c",c[i]);
	}
108、下面程序段的运行结果是________。
	char x[]="the teacher";
	i=0;
	while(x[++i]!='\0')
		if(x[i-1]=='t') printf("%c",x[i]);
109、下面程序的功能是在一个字符数组中查找一个指定的字符,若数组中含有该字符则输出该字符在数组中第一次出现的位置(下标值);否则输出-1。请填空。
	#include<stdio.h>
	#include<string.h>
	void main()
	{
		char c='a',t[50];
		int n,k,j;
		gets(t);
		n=________;
		for(k=0;k<n;k++)
			if(________) {j=k; break;}
			else j=-i;
			printf("%d",j);
	}
110、下面程序的功能是在三个字符串中找出最小的。请填空。
	#include<stdio.h>
	#include<string.h>
	void main()
	{
		char s[20],str[3][20];
		int i;
		for(i=0;i<3;i++) gets(str[i]);
		strcpy(s,________);
		if(strcmp(str[2],s)<0) strcpy(s,str[2]);
		printf("%s\n",________);
	}
111、下面程序的功能是从键盘输入一个大写英文字母,要求按字母的顺序打印出3个相邻的字母,指定的字母在中间。若指定的字母为Z,则打印YZA;若为A则打印ZAB。请填空。
	#include<stdio.h>
	void main()
	{
		char a[3],c;
		int i;
		c=getchar();
		a[1]=c;
		if(c=='Z') {a[2]='A';________;}
		else if(c=='A'){a[0]='Z';________;}
		else {a[0]=c-1;a[2]=c+1;}
		for(i=0;i<3;i++) putchar(a[i]);
	}
112、下面程序的功能是将字符数组a[6]={'a','b','c','d','e','f'}变为a[6]={'f','a','b','c','d','e'}。请填空。
	#include<stdio.h>
	void main()
	{
		char t,a[6]={'a','b','c','d','e','f'};
		int i;
		________;
		for(i=5;i>0;i--)
			________;
		a[0]=t;
		for(i=0;i<=5;i++) printf("%c",a[i]);
113、下面程序的功能是将字符串a中下标值为偶数的元素由小到大排序,其它元素不变。请填空。
	#include<stdio.h>
	void main()
	{
		char a[]="labchmfye",t;
		int i,j;
		for(i=0;i<7;i+=2)
			for(j=i+2;j<9;________)
				if(________)
				{
					t=a[i]; a[i]=a[j]; a[j]=t; j++;
				}
		puts(a); printf("\n");
	}
114、下面程序的功能是在任意的字符串a中将与字符c相等的所有元素的下标值分别存放在整型数组b中。请填空。
	#include<stdio.h>
	void main()
	{
		char a[80];
		int i,b[80],k=0;
		gets(a);
		for(i=0;a[i]!='\0';i++)
			if(_________) {b[i]=i;________;}
		for(i=0;i<k;i++) printf("%3d",b[i]);
	}
115、有十个字符串。下面程序的功能是在每个字符串中,找出最大字符按一一对应的顺序放入一维数组a中,即第i个字符串中的最大字符放入a[i]中,输出每个字符串中的最大字符。请填空。
	#include<stdio.h>
	void main()
	{
		char s[10][20];
		int a[10],i,j;
		for(i=0;i<10;i++) gets(s[i]);
		for(i=0;i<10;i++)
		{
			________;
			for(j=1; s[i][j]!='\0'; j++)
				if(a[i]<s[i][j]) ________;
		}
		for(i=0;i<10;i++) printf(" %d %c",i,a[i]);
	}
116、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i;
		char a[]="Time",b[]="Tom";
		for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
			if(a[i]==b[i])
				if(a[i]>='a'&&a[i]<='z') printf("%c",a[i]-32);
				else printf("%c",a[i]+32);
			else printf("*");
	}
117、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		char a[2][6]={"Sun","Moon"};
		int i,j,len[2];
		for(i=0;i<2;i++)
		{
			for(j=0;j<6;j++)
				if(a[i][j]=='\0')
				{
					len[i]=j; break;
				}
			printf("%6s: %d\n",a[i],len[i]);
		}
	}
118、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i,r;
		char s1[80]="bus";
		char s2[80]="book";
		for(i=r=0;s1[i]!='\0'&&s2[i]!='\0';i++)
			if(s1[i]==s2[i]) i++;
			else {r=s1[i]-s2[i]; break;}
		printf("%d",r);
	}
119、下面程序的运行结果是________。
	#include<stdio.h>
	#define LEN 4
	void main()
	{
		int j,c;
		static char n[2][LEN+1]={"8980","9198"};
		for(j=LEN-1;j>=0;j--)
		{
			c=n[0][j]+n[1][j]-2*'0';
			n[0][j]=c%10+'0';
		}
		for(j=0;j<=1;j++) puts(n[j]);
120、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i=5;
		char c[6]="abcd";
		do{ c[i]=c[i-1];}while(--i>0);
		puts(c);
	}
121、当运行以下程序时,从键盘输入AabD<CR>(<CR>表示回车),则下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		char s[80];
		int i=0;
		gets(s);
		while(s[i]!='\0')
		{
			if(s[i]<='z'&&s[i]>='a')
				s[i]='z'+'a'-s[i];
			i++;
		}
		puts(s);
	}
122、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		char s[]="ABCCDA";
		int k; char c;
		for(k=1;(c=s[k]!='\0';k++)
		{
			switch(c)
			{
				case 'A': putchar('%'); continue;
				case 'B': ++k; break;
				default: putchar('*');
				case 'C': putchar('&'); continue;
			}
			putchar('#');
		}
	}
123、下面程序的运行结果是________。
	#include<stdio.h>
	void main()
	{
		int i=0;
		char a[]="abm", b[]="aqid", c[10];
		while(a[i]!='\0'&&b[i]!='\0')
		{
			if(a[i]>=b[i]) c[i]=a[i]-32;
			else c[i]=b[i]-32;
			++i;
		}
		c[i]='\0';
		puts(c);
	}
124、当运行以下程序时,从键盘输入:BOOK<CR>
				   CUT<CR>
				   GAME<CR>
				   PAGE<CR>
    (<CR>表示回车),则下面程序的运行结果是________。
	#include<stdio.h>
	#include<string.h>
	void main()
	{
		int i;
		char str[10],temp[10]="Control";
		for(i=0;i<4;i++)
		{
			gets(str);
			if(strcmp(temp,str)<0) strcpy(temp,str);
		}
		puts(temp);
	}
125、当运行以下程序时,从键盘输入girl<CR>
				 boy<CR>
    (<CR>表示回车),则下面程序的运行结果是________。
	#include<stdio.h>
	#include<string.h>
	void main()
	{
		char a[2][80],t;
		int i,j,m,n,l,max;
		for(i=0;i<=1;i++) gets(a[i]);
		t=a[0][0];
		for(i=0;i<=1;i++)
		{
			l=strlen(a[i]);
			for(j=0;j<=1;j++)
				if(a[i][j]>t) {max=a[i][j]; m=i; n=j;}
		}
		printf("%c %d %d\n",max,m,n)
	}
三、编程题
126、从键盘输入若干整数(数据个数应少于50),其值在0至4的范围内,用-1作为输入结束的标志。统计每个整数的个数。试编程。
127、若有说明:int a[2][3]={{1,2,3},{4,5,6}}; 现要将a的行和列的元素互换后存到另一个二维数组b中。试编程。
128、定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。
129、通过赋初值按行顺序给2×3的二维数组赋予2、4、6、...等偶数,然后按列的顺序输出该数组。试编程。
130、通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试编程。
131、下面是一个5×5阶的螺旋方阵。试编程打印出此形式的n×n (n<10) 阶的方阵(顺序针方向旋进)。
	1   2   3   4   5
	16  17  18  19  6
	15  24  25  20  7
	14  23  22  21  8
	13  12  11  10  9
132、数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3个元素的格式输出数组b。试编程。
133、从键盘输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。若该字符不在a中,则打印出**。试编程。
134、从键盘输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串a中;如果b的长度小于5,则把b的所有元素都连接到a中。试编程。
135、从键盘输入一个字符串a,并在a串中的最大元素后边插入字符串b(b[]="ab")。试编程。

⌨️ 快捷键说明

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