资源描述
C语言程序设计练习题--程序填空
〖第2题〗(练习题所在文件夹:30)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序的功能是用冒泡法对数组a 进行由小到大的
排序。
-------------------------------------------------------*/
void fun(int a[],int n)
{
int i,j,t;
/***********SPACE***********/
for (j=0; 【?】;j++)
/***********SPACE***********/
for (i=0; 【?】;i++)
/***********SPACE***********/
if(【?】)
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
main()
{
int i,a[10]={3,7,5,1,2,8,6,4,10,9};
/***********SPACE***********/
【?】;
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
答案:
1). j<=n-1 或 n-1>=j 或 j<=-1+n 或 -1+n>=j 或 j<n 或 n>j 或 j<n-1 或 j<=n-2 或 n-2>=j
2). i<n-j-1 或 n-j-1>i 或 i<n-1-j 或 n-1-j>i 或 i<=n-j-2 或 i<=n-2-j
3). a[i]>a[i+1] 或 a[i+1]<a[i]
4). fun(a,10)
〖第4题〗(练习题所在文件夹:628)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
函数fun的功能是:
求有5个元素的一维数组各元素的和。
-------------------------------------------------------*/
float fun(float a[ ])
{int i;
float s=a[0];
for(i=1;i<5;i++)
/***********SPACE***********/
s+=【?】[i];
/***********SPACE***********/
return 【?】;
}
void main()
{float sco[5],sum;
int i;
printf("\ninput 5 scores:\n");
for(i=0;i<5;i++)
/***********SPACE***********/
scanf("%f",【?】);
/***********SPACE***********/
sum=fun(【?】);
printf("sum score is %5.2f\n",sum);
}
答案:
1). a
2). s
3). &sco[i] 或 sco+i
4). sco 或 &sco[0]
〖第5题〗(练习题所在文件夹:5)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序是用选择法对10个整数按升序排列,程序中有4个空,
填空使程序完整。
-------------------------------------------------------*/
/***********SPACE***********/
【?】
main()
{
int i,j,k,t,a[N];
for(i=0;i<=N-1;i++)
scanf("%d",&a[i]);
for(i=0;i<N-1;i++)
{
/***********SPACE***********/
【?】
/***********SPACE***********/
for(j=i+1; 【?】;j++)
if(a[j]<a[k]) k=j;
/***********SPACE***********/
if(【?】){t=a[i];a[i]=a[k];a[k]=t;}
}
printf("output the sorted array:\n");
for(i=0;i<=N-1;i++)
printf("%5d",a[i]);
printf("\n");
}
答案:
1). #define N 10
2). k=i;
3). j<N 或 N>j 或 j<=N-1 或 N-1>=j 或 j<10 或 10>j 或 j<=9 或 9>=j
4). k!=i 或 j<=N-1 或 N-1>=j
〖第6题〗(练习题所在文件夹:17)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序的功能是将一个数组中的元素按逆序存放。
-------------------------------------------------------*/
#define N 7
main ()
{
static int a[N]={12,9,16,5,7,2,1},k,s;
printf("\n the origanal array:\n");
for (k=0;k<N;k++)
printf("%4d",a[k]);
/***********SPACE***********/
for (k=0;k<N/2; 【?】 )
{
s=a[k];
/***********SPACE***********/
【?】 ;
/***********SPACE***********/
【?】 ;
}
printf("\n the changed array:\n");
for (k=0;k<N;k++)
/***********SPACE***********/
【?】 ("%4d",a[k]);
}
答案:
1). k++ 或 k=k+1 或 k+=1 或 ++k
2). a[k]=a[N-k-1] 或 a[k]=a[N-1-k] 或 a[k]=a[6-k] 或 a*(a+k)=*(a+N-k-1] 或 *(a+k)=*(a+N-1-k] 或 a[k]=a[-1+N-k] 或 a[k]=a[-1-k+N] 或 a[k]=a[-k-1+N] 或 a[k]=a[-k+N-1] 或 *(a+k)=*(a+N-k-1) 或 a[6-k]=s
3). a[N-k-1]=s 或 a[N-1-k]=s 或 a[6-k]=s 或 a[N-k-1]=s 或 *(a+N-k-1)=s
4). printf
〖第7题〗(练习题所在文件夹:604)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:从键盘上输入20个元素的值存入一维数组m中,然后将下标
为(0、2、4、6、8、10……18)的元素值赋值给数组n,最
后输出数组n的内容。请填空
-------------------------------------------------------*/
main()
{
int m[20],n[10];
int a,b=0;
for(a=0;a<20;a++)
{
/***********SPACE***********/
scanf("%d",【?】);
/***********SPACE***********/
if(【?】)
{
n[b]=m[a];
/***********SPACE***********/
【?】
}
}
/***********SPACE***********/
for(a=0;【?】;a++)
printf("%d\t",n[a]);
}
答案:
1). &m[a]
2). a%2==0 或 a%2 或 a%2!=1
3). b++; 或 b+=1; 或 b=b+1; 或 b=1+b;
4). a<10 或 a<=9 或 a<b
〖第8题〗(练习题所在文件夹:3)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:下面的程序是求1!+3!+5!+……+n!的和,程序中有4个
空,填空使程序完整。
-------------------------------------------------------*/
main()
{
long int f,s;
int i,j,n;
/***********SPACE***********/
【?】
scanf("%d",&n);
/***********SPACE***********/
for(i=1;i<=n; 【?】)
{
f=1;
/***********SPACE***********/
for(j=1; 【?】;j++)
/***********SPACE***********/
【?】
s=s+f;
}
printf("n=%d,s=%ld\n",n,s);
}
答案:
1). s=0;
2). i+=2 或 i=i+2 或 i++,i++ 或 i=2+i
3). j<=i 或 i>=j 或 j<i+1 或 i+1>j
4). f=f*j; 或 f*=j;
〖第10题〗(练习题所在文件夹:28)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:下面函数为二分法查找key值。数组中元素已递增排序,
若找到key则返回对应的下标,否则返回-1。
-------------------------------------------------------*/
fun(int a[],int n,int key)
{
int low,high,mid;
low=0;
high=n-1;
/***********SPACE***********/
while(【?】)
{
mid=(low+high)/2;
/***********SPACE***********/
if(key<a[mid]) 【?】;
/***********SPACE***********/
else if(key>a[mid]) 【?】;
/***********SPACE***********/
else 【?】;
}
return -1;
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b,c;
b=4;
c=fun(a,10,b);
if(c==-1)printf("not found");
else printf("position %d\n",c);
}
答案:
1). low<=high 或 high>=low
2). high=mid-1
3). low=mid+1
4). return mid 或 return (mid)
〖第14题〗(练习题所在文件夹:611)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以每行5个数输出500以内能被7或17整除的偶数,并求出其和。
程序中有4个空,填空使程序完整。
-------------------------------------------------------*/
#include <stdio.h>
#include <conio.h>
main()
{
int i,n,sum;
clrscr();
n=0;
/***********SPACE***********/
【?】
/***********SPACE***********/
for(i=1; 【?】 ;i++)
/***********SPACE***********/
if(【?】)
if(i%2==0)
{sum=sum+i;
n++;
printf("%6d",i);
/***********SPACE***********/
if(【?】)printf("\n");
}
printf("\ntotal=%d",sum);
}
答案:
1). sum=0;
2). i<=500 或 500>=i 或 i<501 或 501>i 或 !(i>500)
3). i%7==0||i%17==0 或 i%17==0||i%7==0 或 (i%7==0)||(i%17==0) 或 (i%17==0)||(i%7==0) 或 i/7*7==i||i/17*17==i 或 (i/7*7==i)||(i/17*17==i)
4). n%5==0
或 n/5*5==n
〖第15题〗(练习题所在文件夹:11)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序的功能是产生并输出如下形式的方阵。
1 2 2 2 2 2 1
3 1 2 2 2 1 4
3 3 1 2 1 4 4
3 3 3 1 4 4 4
3 3 1 5 1 4 4
3 1 5 5 5 1 4
1 5 5 5 5 5 1
-------------------------------------------------------*/
main()
{
int a[7][7];
int i,j;
for (i=0;i<7;i++)
for (j=0;j<7;j++)
{
/***********SPACE***********/
if (【?】) a[i][j]=1;
/***********SPACE***********/
else if (i<j&&i+j<6) 【?】;
else if (i>j&&i+j<6) a[i][j]=3;
/***********SPACE***********/
else if (【?】) a[i][j]=4;
else a[i][j]=5;
}
for (i=0;i<7;i++)
{
for (j=0;j<7;j++)
printf("%4d",a[i][j]);
/***********SPACE***********/
【?】;
}
}
答案:
1). i==j||i+j==6
2). a[i][j]=2
3). i<j&&i+j>6 或 j>i&&i+j>6 或 i<j&&i+6<j 或 j>i&&i+6<j
4). printf("\n")
〖第17题〗(练习题所在文件夹:595)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:输出斐波那契(Fibonacci)数列(1,1,2,3,5,8,13……)的前20项。
-------------------------------------------------------*/
main()
{
/***********SPACE***********/
int f1,f2,f3,【?】;
f1=1;
/***********SPACE***********/
【?】;
printf("%8d%8d",f1,f2);
for(j=3;j<=20;j++)
{
/***********SPACE***********/
【?】;
printf("%8d",f3);
f1=f2;
/***********SPACE***********/
【?】;
}
}
答案:
1). j
2). f2=1
3). f3=f1+f2 或 f3=f2+f1
4). f2=f3
〖第18题〗(练习题所在文件夹:22)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序的功能是求一个二维数组中每行的最大值和每行
的和。
-------------------------------------------------------*/
#include "stdlib.h"
main()
{
int a[5][5],b[5],c[5],i,j,k,s=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=random(40)+20;
for(i=0;i<5;i++)
{
/***********SPACE***********/
k=a[i][0]; 【?】 ;
for(j=0;j<5;j++)
{
/***********SPACE***********/
if(k<a[i][j]) 【?】 ;
s=s+a[i][j];
}
b[i]=k;
/***********SPACE***********/
【?】 ;
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
/***********SPACE***********/
printf("%5d", 【?】 );
printf("%5d%5d",b[i],c[i]);
printf("\n");
}
}
答案:
1). s=0
2). k=a[i][j]
3). c[i]=s
4). a[i][j]
〖第20题〗(练习题所在文件夹:601)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:求 1-3+5-7+……-99+101 的值。请填空
-------------------------------------------------------*/
main()
{
/***********SPACE***********/
int i,j=1,【?】;
/***********SPACE***********/
for(i=1;i<=101;【?】)
{
/***********SPACE***********/
sum+=【?】;
j*=(-1);
}
printf("sum=%d",sum);
}
答案:
1). sum=0
2). i+=2 或 i=i+2 或 i=2+i
3). i*j 或 j*i
〖第21题〗(练习题所在文件夹:21)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序的功能是打印以下图形。
*****
*****
*****
*****
*****
-------------------------------------------------------*/
main ( )
{
char a[5][9]={" "};
int i,j;
for (i=0;i<5;i++)
/***********SPACE***********/
for(j=i; 【?】;j++)
a[i][j]='*';
/***********SPACE***********/
for(【?】;i<5;i++)
{
for(j=0;j<9;j++)
/***********SPACE***********/
printf("%c", 【?】 );
/***********SPACE***********/
【?】;
}
}
答案:
1). j<i+5 或 i+5>j 或 j<=i+4 或 i+4>=j
2). i=0
3). a[i][j]
4). printf("\n")
〖第23题〗(练习题所在文件夹:596)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
以下程序不借助任何中间变量把a、b的值进行交换,请填空。
---------------------------------------------------------*/
#include <stdio.h>
main()
{ int a,b;
printf("Input a,b");
scanf("%d,%d",&a,&b);
/***********SPACE***********/
a+=【?】;
/***********SPACE***********/
b=【?】;
/***********SPACE***********/
a-=【?】;
printf("a=%d,b=%d",a,b); }
答案:
1). b
2). a-b
3). b
〖第24题〗(练习题所在文件夹:592)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:产生15个[20,80]上的随机整数,用顺序法(比较法)按从
小到大排序后输出。
--------------------------------------------------------*/
#include "stdlib.h"
#define N 15
main()
{int i,j,k,a[N];
for(i=0;i<N;i++)
a[i]=random(61)+20;
for(i=0;i<N-1;i++)
/***********SPACE***********/
for(【?】;j<N;j++)
/***********SPACE***********/
if(【?】)
{k=a[i];
/***********SPACE***********/
【?】;
a[j]=k;
}
for(i=0;i<N;i++)
/***********SPACE***********/
printf("%5d",【?】);
printf("\n");
}
答案:
1). j=i+1 或 j=1+i 或 j=i
2). a[i]>a[j] 或 a[j]<a[i] 或 a[i]>=a[j] 或 a[j]<=a[i]
3). a[i]=a[j]
4). a[i]
〖第26题〗(练习题所在文件夹:438)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:求出二维数组中的最大元素值。
-------------------------------------------------------*/
#include "stdio.h"
void main()
{int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
/***********SPACE***********/
printf("max value is %d\n",【?】);
}
max_value(m,n,array)
/***********SPACE***********/
int m,n,【?】;
{int i,j,max;
max=array[0][0];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
/***********SPACE***********/
if(max<array[i][j])【?】;
return(max);
}
答案:
1). max_value(3,4,a)
2). array[][4] 或 array[3][4]
3). max=array[i][j]
〖第27题〗(练习题所在文件夹:631)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:以下程序用辗转相除法求两个数的最大公约数。
(辗转相除法:已知两个数M和N,假定M>N,则求M%N,
若余数r为0,则N即为是所求,若余数r不为0,
用N除 r,再求其余数……直到余数为0,
则除数就是最大公约数。)
-------------------------------------------------------*/
main( )
{
int x,y,t,r;
scanf("%d,%d",&x,&y);
/***********SPACE***********/
if(【?】)
/***********SPACE***********/
{ t=x; 【?】; y=t; }
while(x%y)
{
/***********SPACE***********/
r=【?】;
x=y;
/***********SPACE***********/
y=【?】;
}
printf("%d\n",y);
}
答案:
1). x<y 或 y>x
2). x=y
3). x%y
4). r
〖第28题〗(练习题所在文件夹:630)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:下面程序用0~9之间不同的3个数构成一个3位数,
统计出共有多少种方法。请填空,完善程序。
-------------------------------------------------------*/
#include<stdio.h>
main()
{
/***********SPACE***********/
int i,j,k,【?】;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
/***********SPACE***********/
if(【?】 )
continue;
else
for(k=0;k<=9;k++)
/***********SPACE***********/
if(【?】)count++;
printf("count=%d",count);
}
答案:
1). count=0
2). i==j 或 j==i
3). k!=i&&k!=j 或 (i!=k)&&(j!=k)
〖第29题〗(练习题所在文件夹:423)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:按字母表顺序输出26个大写英文字母。
-------------------------------------------------------*/
#include <stdio.h>
void main ()
{
char string[256];
int i;
/***********SPACE***********/
for (i = 0; i < 26; 【?】)
/***********SPACE***********/
string[i] = 【?】;
string[i] = '\0';
/***********SPACE***********/
printf ("the arrary contains %s\n",【?】);
}
答案:
1). i++ 或 ++i 或 i=i+1 或 i+=1 或 i=1+i
2). 'A' + i 或 i+'A' 或 65 + i 或 i+65
3). string
〖第30题〗(练习题所在文件夹:599)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:从键盘上输入若干个学生的成绩,统计计算出平均成绩,
并输出低于平均分的学生成绩,用输入负数结束输入。
---------------------------------------------------------*/
#include <stdio.h>
main( )
{
float x[1000],sum=0.0,ave,a;
int n=0,i;
printf("Enter mark:\n");scanf("%f",&a);
while(a>=0.0 && n<1000)
{
/***********SPACE***********/
sum+=【?】;
x[n]
展开阅读全文