📄 练习(四).txt
字号:
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 + -