C语言考试题库之填空题
━━━━━━━━━━━━━━━━━━
一、程序填空 ? 共130題?
━━━━━━━━━━━━━━━━━━
第1題 (9.0分) ?題號:441
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從低位開始取出長整型變量s中奇數位上的數,依次構成一
? ? ? 個新數放在t中。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>?
void fun (long s, long *t)
{
? long sl=10;
? s /= 10;
? /***********SPACE***********/
? *t = s 【?】 10;
? while(s>0)
? {?
? ? /***********SPACE***********/
? ? s = 【?】;
? ? /***********SPACE***********/
? ? *t = s%10*sl【?】;
? ? /***********SPACE***********/
? ? sl = sl 【?】10;
? }
}
main()
{ long s, t;
clrscr();
printf("\nPlease enter s:"); scanf("%ld", &s);
fun(s, &t);
printf("The result is: %ld\n", t);
}
答案:
? ?1). %
? ?2). s/100
? ?3). + *t
? ?4). *
第2題 (9.0分) ?題號:439
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:1982年我國第三次人口普查,結果全國人口為10.3億,假
? ? ? 如人口增長率為5%。編寫一個程序求在公元多少年總人口
? ? ? 翻了一番。
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
? double p1=10.3,p2,r=0.05;
? int n=1;
? /***********SPACE***********/
? p2=p1*【?】; ?
? /***********SPACE***********/
? while(p2<=【?】)?
? {
? ? n++;
? ? /***********SPACE***********/
? ? p2=p2*【?】; ?
? }
? /***********SPACE***********/
? n=【?】; ?
? printf("%d年人口總數翻了一番,即為%g億人\n",n,p2);
}
答案:
? ?1). (1+r) 或 (r+1)
? ?2). 2*p1 或 p1*2
? ?3). (1+r) 或 (r+1)
? ?4). n+1982 或 1982+n
第3題 (9.0分) ?題號:407
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數
? ? ? 據(包括學生號,姓名,三門課成績),計算出平均成績,
? ? ? 設原有的數據和計算出的平均分數存放在磁盤文件"stud"
? ? ? 中。
-------------------------------------------------------*/
#include "stdio.h"
struct student
{
? char num[6];
? char name[8];
? int score[3];
? float avr;
} stu[5];
main()
{
? int i,j,sum;
? FILE *fp;
? /*input*/
? for(i=0;i<5;i++)
? {
? ? printf("\n please input No. %d score:\n",i);
? ? printf("stuNo:");
? ? scanf("%s",stu[i].num);
? ? printf("name:");
? ? scanf("%s",stu[i].name);
? ? sum=0;
? ? /***********SPACE***********/
? ? for(j=0;【?】;j++)
? ? {?
? ? ? printf("score %d.",j+1);
? ? ? scanf("%d",&stu[i].score[j]);
? ? ? /***********SPACE***********/
? ? ? sum+=stu[i].【?】;
? ? }
? ? stu[i].avr=sum/3.0;
? }
? fp=fopen("stud","w");
? /***********SPACE***********/
? for(i=0;i<5;【?】)
? /***********SPACE***********/
? ? if(fwrite(&stu[i],sizeof(【?】),1,fp)!=1)
? ? ? printf("file write error\n");
? ? fclose(fp);
}
答案:
? ?1). j<3 或 3>j
? ?2). score[j]
? ?3). i++ 或 ++i 或 i=i+1
? ?4). struct student
第4題 (9.0分) ?題號:408
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入兩個整數,求他們的按位與。
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
? int x,y,z=0,a,b,k=1;
? scanf("%d,%d",&x,&y);
? while(x>0&&y>0)
? {
? ? a=x%2;
? ? /***********SPACE***********/
? ? x=【?】;
? ? b=y%2;
? ? y=y/2;
? ? /***********SPACE***********/
? ? z=z+【?】;
? ? k=k*2;
? }
? /***********SPACE***********/
? 【?】("z=%d\n",z);
}
答案:
? ?1). x/2
? ?2). a*b*k 或 a * b * k
? ?3). printf
第5題 (9.0分) ?題號:477
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:編寫程序,輸出 1000 以內的所有完數及其因子。
說明:所謂完數是指一個整數的值等于它的因子之和。
例如“ 6 的因子是 1 、 2 、 3 ,而 6=1+2+3 ,故 6 是
? ? ? 一個完數。
-------------------------------------------------------*/
#include <stdio.h>?
main()?
{
? int i,j,m,s,k,a[100] ;
? for(i=1 ; i<=1000 ; i++ )
? {
? ? m=i ; s=0 ; k=0 ;
? ? for(j=1 ; j<m ; j++)
? ? ? /***********SPACE***********/
? ? ? if(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? {
? ? ? ? s=s+j ;
? ? ? ? /***********SPACE***********/
? ? ? ? 【?】=j ; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? }?
? ? if(s!=0&&s==m)
? ? {
? ? ? /***********SPACE***********/
? ? ? for(j=0 ; 【?】 ; j++) ? ? ? ? ? ? ? ?
? ? ? ? printf("%4d",a[j]) ;
? ? ? printf(" =%4d\n",i) ;
? ? }?
? }
}?
答案:
? ?1). m%j == 0
? ?2). a[k++]
? ?3). j<k 或 k>j
第6題 (9.0分) ?題號:10
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸出由字符w構造成的形如W的圖形。
w ? ? ? ?ww ? ? ? ?w
?w ? ? ?w ?w ? ? ?w
? w ? ?w ? ?w ? ?w
? ?w ?w ? ? ?w ?w
? ? ww ? ? ? ?ww
-------------------------------------------------------*/
void draw(int n)
{?
? int i,j,k,r,m;
? /***********SPACE***********/
? for(i=1; 【?】;i++)
? {
? ? for(j=1;j<=2;j++)
? ? {
? ? ? for(r=1;r<i;r++)printf(" ");
? ? ? ? printf("w");
? ? ? ? /***********SPACE***********/
? ? ? ? for(k=1; 【?】 ;k++)printf(" ");
? ? ? ? ? ?printf("w");
? ? ? ? ? ?for(m=1;m<i;m++)printf(" ");
? ? }
? ? /***********SPACE***********/
? ? 【?】;
? }
}
#include <conio.h>
main()
{
? int n;
? clrscr();
? printf("input a number:");
? /***********SPACE***********/
? 【?】;
? draw(n);
}
答案:
? ?1). i<=n 或 n>=i
? ?2). k<= 2 * n - 2 * i 或 ?2 * n - 2 * i >=k
? ?3). printf("\n")
? ?4). scanf("%d",&n)
第7題 (9.0分) ?題號:397
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙
? ? ? 隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比
? ? ? 賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出
? ? ? 三隊賽手的名單。
-------------------------------------------------------*/
main()
{
? char i,j,k;/*i是a的對手,j是b的對手,k是c的對手*/
? for(i='x';i<='z';i++)
? ? for(j='x';j<='z';j++)
? ? {
? ? ? /***********SPACE***********/
? ? ? if(【?】)
? ? ? ? /***********SPACE***********/
? ? ? ? for(k='x';【?】;k++)
? ? ? ? {
? ? ? ? ? /***********SPACE***********/
? ? ? ? ? if(【?】)
? ? ? ? ? {
? ? ? ? ? ? /***********SPACE***********/
? ? ? ? ? ? if(i!='x'&&k!=【?】)
? ? ? ? ? ? ? ?printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);
? ? ? ? ? }
? ? ? ? }
? ? }
}
答案:
? ?1). i!=j 或 i != j
? ?2). k<='z' 或 'z'>=k
? ?3). i!=k&&j!=k 或 i != k && j != k
? ?4). 'z'
第8題 (9.0分) ?題號:470
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從兩個數組中分別提取任意元素x[i],y[j],問|x[i]-y[j]|
? ? ? 的最小值是多少 ?
-------------------------------------------------------*/
#include <limits.h>
/***********SPACE***********/
#define ?min(x, y) ? ? (【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
int ?min_distance(int x[], int y[], int m, int n)
{
? int ?minimum = INT_MAX;?
? int ?index_x = 0, index_y = 0;
? while (index_x < m && index_y < n)
? ? /***********SPACE***********/
? ? if (【?】)?
? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? minimum = min(minimum, x[index_x]-y[index_y]);
? ? ? index_y++;
? ? }
? ? else?
? ? {
? ? ? minimum = min(minimum, y[index_y]-x[index_x]);
? ? ? /***********SPACE***********/
? ? ?【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? }
? return minimum;
}
#include ?<stdio.h>
void main(void)
{
? ? ?int ?x[] = { 1, 3, 7, 11, 18};
? ? ?int ?m ? = sizeof(x)/sizeof(int);
? ? ?int ?y[] = { 4, 5, 8, 13, 22};
? ? ?int ?n ? = sizeof(y)/sizeof(int);
? ? ?int ?i, min_distance(int [], int [], int, int);
? ? ?printf("\nCompute Minimum Distance Between Two Sorted Arrays");
? ? ?printf("\n==================================================");
? ? ?printf("\n\nGiven Array #1 :");
? ? ?for (i = 0; i < m; i++)
? ? ? ? ? printf("%5d", x[i]);
? ? ?printf("\n\nGiven Array #2 :");
? ? ?for (i = 0; i < n; i++)
? ? ? ? ? printf("%5d", y[i]);
? ? ?printf("\n\nMinimum Distance = %d", min_distance(x, y, m, n));
}
答案:
? ?1). x<y?x:y 或 y>x?x:y
? ?2). x[index_x] >= y[index_y] 或 y[index_y]<=x[index_x]
? ?3). index_x++ 或 index_x=index_x+1 或 ++index_x
第9題 (9.0分) ?題號:30
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入字符串,再輸入一個字符,將字符串中與輸入字符相
? ? ? 同的字符刪除。
-------------------------------------------------------*/
#include "stdio.h"
void fun(char a[],char c)
{
? int i,j;
? /***********SPACE***********/
? for(i=j=0; 【?】;i++)
? ? if(a[i]!=c) a[j++]=a[i];
? /***********SPACE***********/
? 【?】;
}
main()
{
? char a[20],cc;
? gets(a);
? /***********SPACE***********/
? 【?】;
? /***********SPACE***********/
? 【?】;
? puts(a);
}
答案:
? ?1). a[i] != '\0' 或 a[i] 或 a[i]!=NULL
? ?2). a[j]='\0' 或 a[j]=NULL 或 a[j]=0
? ?3). cc=getchar() 或 scanf("%c",&cc)
? ?4). fun(a,cc)
第10題 (9.0分) ?題號:467
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入一個整數n,打印自然數1-n的全排列方案。
-------------------------------------------------------*/
#include ?<stdio.h>
#include ?<stdlib.h>
#define ? MAXSIZE ? 20
#define ? ROTATE(p)?
{
? int ?i, temp; ? ? ? ? ? ? ?\
? temp = perm[p]; ? ? ? ? ? ?\
? for (i = p-1; i >= 0; i--) \
? perm[i+1] = perm[i]; ? ? ? \
? perm[0] = temp; ? ? ? ? ? ?\
}
void main(void)
{
? int ?perm[MAXSIZE];
? int ?position;
? int ?n;
? int ?i;
? char line[100];
? printf("\nPermutation by Rotation Method");
? printf("\n==============================");
? printf("\n\nNumber of Elements --> ");
? gets(line);
? n = atoi(line);
? for (i = 0; i < n; i++) ?
? ? perm[i] = i + 1;
? position = n - 1; ? ? ? ? ??
? /***********SPACE***********/
? while (【?】)?
? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? printf("\n"); ? ? ??
? ? for (i = 0; i < n; i++)
? ? ? /***********SPACE***********/
? ? ? printf("%d ", 【?】); ? ? ? ? ? ? ? ? ? ? ? ?
? ? /***********SPACE***********/
? ? position = 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ROTATE(position); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? while (perm[position]==position+1 && position!=0)?
? ? {
? ? ? position--; ? ?
? ? ? ROTATE(position);?
? ? }
? }
}
答案:
? ?1). position != 0
? ?2). perm[i]
? ?3). n - 1 或 n -1
第11題 (9.0分) ?題號:395
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入3個數a,b,c,按從小到大的順序輸出。
-------------------------------------------------------*/
main()
{
? void swap(int *p1, int *p2);
? int n1,n2,n3;
? int *pointer1,*pointer2,*pointer3;
? printf("please input 3 number:n1,n2,n3:");
? scanf("%d,%d,%d",&n1,&n2,&n3);
? pointer1=&n1;
? pointer2=&n2;
? pointer3=&n3;
? /***********SPACE***********/
? if(【?】) swap(pointer1,pointer2);
? /***********SPACE***********/
? if(【?】) swap(pointer1,pointer3);
? /***********SPACE***********/
? if(【?】) swap(pointer2,pointer3);
? printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
}
/***********SPACE***********/
void swap(【?】)
int *p1,*p2;
{
? int p;
? p=*p1;*p1=*p2;*p2=p;
}
答案:
? ?1). n1>n2 或 n2<n1 或 *pointer1>*pointer2 或 *pointer2<*pointer1
? ?2). n1>n3 或 n3<n1 或 *pointer1>*pointer3 或 *pointer3<*pointer1
? ?3). n2>n3 或 n3<n2 或 *pointer2>*pointer3 或 *pointer3<*pointer2
? ?4). p1,p2
第12題 (9.0分) ?題號:443
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元
? ? ? 時,獎金可提10%;利潤高于10萬元,低于20萬元時,低于
? ? ? 10萬元的部分按10%提成,高于10萬元的部分,可可提成7.5%
? ? ? ;20萬到40萬之間時,高于20萬元的部分,可提成5%;40萬
? ? ? 到60萬之間時高于40萬元的部分,可提成3%;60萬到100萬
? ? ? 之間時,高于60萬元的部分,可提成1.5%,高于100萬元時,
? ? ? 超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求
? ? ? 應發放獎金總數?
-------------------------------------------------------*/
main()
{
? long int i;
? int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
? scanf("%ld",&i);
? bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
? bonus4=bonus2+200000*0.5;
? bonus6=bonus4+200000*0.3;
? bonus10=bonus6+400000*0.15;
? if(i<=100000)
? ? bonus=i*0.1;
? /***********SPACE***********/
? else if(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? bonus=bonus1+(i-100000)*0.075;
? /***********SPACE***********/
? else if(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? bonus=bonus2+(i-200000)*0.05;
? /***********SPACE***********/
? else if(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? bonus=bonus4+(i-400000)*0.03;
? else if(i<=1000000)
? ? bonus=bonus6+(i-600000)*0.015;
? else
? ? bonus=bonus10+(i-1000000)*0.01;
? /***********SPACE***********/
? 【?】("bonus=%d",bonus);
}
答案:
? ?1). i<=200000?? ? 或 200000>=i
? ?2). i<=600000 或 600000>=i
? ?3). i<=1000000 或 1000000>=i
? ?4). printf
第13題 (9.0分) ?題號:473
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸出1到100之間每位數的乘積大于每位數的和的數。
例如:數字26,數位上數字的乘積12大于數字之和8。
-------------------------------------------------------*/
main()
{
? int n,k=1,s=0,m;
? for(n=1;n<=100;n++)
? {
? ? k=1;
? ? s=0;
? ? /***********SPACE***********/
? ?【?】 ; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? /***********SPACE***********/
? ? while( 【?】 ) ? ? ? ? ? ? ? ? ? ? ? ?
? ? {
? ? ? k*=m%10;
? ? ? s+=m%10;
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? } ?
? ? if(k>s)
? ? ? printf("%d ",n);
? }
}
答案:
? ?1). m=n
? ?2). m>0 或 0<m
? ?3). m=m/10 或 m/=10
第14題 (9.0分) ?題號:442
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:將長整型數中每一位上為奇數的數依次取出,構成一個新數
? ? ? 放在t中。高位仍在高位,低位仍在低位。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>?
void fun (long s, long *t)
{?
? int d;
? long sl=1;
? /***********SPACE***********/
?【?】 = 0;
? while ( s > 0)
? {
? ? /***********SPACE***********/
? ? d = 【?】;
? ? if(d%2)
? ? { ??
? ? ? /***********SPACE***********/
? ? ? *t = 【?】 + *t;
? ? ? /***********SPACE***********/
? ? ? sl 【?】 10;
? ? }
? ? s /= 10;
? }
}
main()
{
? long s, t;
? clrscr();
? printf("\nPlease enter s:"); scanf("%ld", &s);
? fun(s, &t);
? printf("The result is: %ld\n", t);
}
答案:
? ?1). *t
? ?2). s%10
? ?3). d * sl 或 sl * d
? ?4). *= 或 =s*
第15題 (9.0分) ?題號:433
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:將字母轉換成密碼,轉換規則是將當前字母變成其后的第
? ? ? 四個字母,但W變成A、X變成B、Y變成C、Z變成D。小寫字
? ? ? 母的轉換規則同樣。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
? char c;
? /***********SPACE***********/
? while((c=【?】)!='\n')
? {
? ? /***********SPACE***********/
? ? if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))【?】;
? ? /***********SPACE***********/
? ? if((c>'Z'【?】c<='Z'+4)||c>'z') c-=26;
? ? printf("%c",c);
? }
}
答案:
? ?1). getchar()
? ?2). c+=4 或 c=c+4 或 c=4+c
? ?3). &&
第16題 (9.0分) ?題號:419
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:seek()函數:判斷是否有不合格成績;形參:1個,指
? ? ? 向由3個int型元素組成的1維數組的行指針變量返回值:
? ? ? (1)有不合格成績,則返回指向本行首列的一個(列)指針; ?
? ? ? (2)沒有有不合格成績,返回值為指向下一行的一個
? ? ? ? ?(列)指針?
-------------------------------------------------------*/
int ?*seek( int ?(*pnt_row)[3] )
{
? int i=0, *pnt_col; ? ? ? ? ? ??
? /***********SPACE***********/
? 【?】=*(pnt_row+1);
? for(; i<3; i++)
? ? if(*(*pnt_row+i)<60) ? ? ? ?
? ? {
? ? ? pnt_col=*pnt_row; ? ? ??
? ? ? break; /*退出循環*/
? ? }
? ? /***********SPACE***********/
? return(【?】);
}
main()
{
? static int grade[3][3]={{55,65,75},{65,75,85},{75,80,90}};
? int i,j,*pointer; ? ? ? ? ? ??
? for(i=0; i<3; i++) ? ? ? ? ? ??
? {
? ? /***********SPACE***********/
? ? pointer=seek(【?】);
? ? if(pointer==*(grade+i)) ? ??
? ? {?
? ? ? ?printf("No.%d grade list: ", i+1);
? ? ? ?for(j=0; j<3; j++)?
? ? ? ? ?/***********SPACE***********/?
? ? ? ? ?printf("%d ?",*(【?】));
? ? ? ?printf("\n");
? ? }
? }
}
答案:
? ?1). pnt_col
? ?2). pnt_col
? ?3). grade+i 或 i+grade
? ?4). pointer+j 或 j+pointer
第17題 (9.0分) ?題號:466
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用二分法求方程2X^3+4X^2+3X-6=0在(-10,10)之間的根
? ? ? ,其中 X^n代表X的n次方。
-------------------------------------------------------*/
# include <math.h>
main()
{
? float x0,x1,x2,fx0,fx1,fx2;
? do
? {
? ? printf("Enter x1&x2:");
? ? scanf("%f,%f",&x1,&x2);
? ? fx1=x1*((2*x1-4)*x1+3)-6;
? ? fx2=x2*((2*x2-4)*x2+3)-6;
? /***********SPACE***********/?
? }while (fx1*fx2【?】); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? do
? {
? ? x0=(x1+x2)/2;
? ? fx0=x0*((2*x0-4)*x0+3)-6;
? ? /***********SPACE***********/
? ? if(fx0*fx1【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? {
? ? ? x2=x0;
? ? ? fx2=fx0;
? ? }
? ? else
? ? {
? ? ? x1=x0;
? ? ? fx1=fx0;
? ? }
? }
? /***********SPACE***********/
? while(【?】>=1e-5); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? printf("x=%6.2f\n",x0);
}
答案:
? ?1). >0
? ?2). <0
? ?3). fabs(fx0)
第18題 (9.0分) ?題號:459
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:在歌星大獎賽中,有10個評委為參賽的選手打分,分數為
? ? ? 1~100分。選手最后得分為:去掉一個最高分和一個最低分
? ? ? 后其余8個分數的平均值。請編寫一個程序實現。
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
? int score,i,max,min,sum;
? max=-32768; ? ? ? ? ? ? ? ? ?
? min=32767; ? ? ? ? ? ? ? ? ??
? sum=0;
? for(i=1;i<=10;i++)
? {
? ? printf("Input number %d=",i);
? ? /***********SPACE***********/
? ? scanf("%d",【?】); ? ? ? ? ? ? ? ? ? ? ? ?
? ? sum+=score;
? ? /***********SPACE***********/
? ? if(【?】) max=score; ? ? ? ? ? ? ? ? ? ? ? ?
? ? /***********SPACE***********/
? ? if(【?】) ?min=score; ? ? ? ? ? ? ? ? ? ? ? ?
? }
? printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);
? /***********SPACE***********/
? printf("Average score:%d\n",【?】); ? ? ? ? ? ? ? ?
}
答案:
? ?1). &score
? ?2). score>max 或 max<score
? ?3). score<min 或 min>score
? ?4). (sum-max-min)/8 或 (sum -max - min )/8
第19題 (9.0分) ?題號:25
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:以下程序的功能如(圖1)。
-------------------------------------------------------*/
??
/***********SPACE***********/
?【?】
main()
{
? float x,f;
? scanf("%f",&x);
? /***********SPACE***********/
? if(x<0) 【?】;
? /***********SPACE***********/
? else if(【?】)
? ? f=2*x+1;
? else ?
? ? f=sin(x)+5;
? /***********SPACE***********/
? printf("x=%f,y=%f\n", ?【?】);
}
答案:
? ?1). #include "math.h" 或 #include <math.h>
? ?2). f=fabs( x + 1 )
? ?3). x<=5 或 5>=x 或 x<6 或 6>x 或 x>=0&&x<=5 或 0<=x&&x<=5 或 x>=0&&5>=x 或 0<=x&&5>=x 或 !(x>5)
? ?4). x,f
第20題 (9.0分) ?題號:478
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:如果整數A的全部因子(包括1,不包括A本身)之和等
? ? ? 于B;且整數B的全部因子 ( 包括1,不包括B本身 )?
? ? ? 之和等于A,則將整數A和B稱為親密數。求 3000 以內
? ? ? 的全部親密數。
-------------------------------------------------------*/
#include <stdio.h>
#include <stdio.h>?
main( )?
{
? int a, i, b, n ;
? printf("Friendly-numbers pair samller than 3000:\n") ;
? for(a=1 ; a<3000 ; a++)
? {
? ? for(b=0,i=1 ; i<=a/2 ; i++ )
? ? /***********SPACE***********/
? ? if(!(a%i)) 【?】 ; ? ? ? ? ? ? ? ?
? ? for(n=0,i=1 ; i<=b/2 ; i++)
? ? ? /***********SPACE***********/
? ? ? if(!(b%i)) 【?】 ; ? ? ? ? ? ? ? ?
? ? /***********SPACE***********/
? ? if(【?】 && a<b) ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? printf("%4d~%4d\n",a,b) ;
? }
}
答案:
? ?1). b+=i 或 b=b+i
? ?2). n+=i 或 n=n+i
? ?3). n == a
第21題 (9.0分) ?題號:13
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:產生并輸出楊輝三角的前七行。
1
1 ? ? 1
1 ? ? 2 ? ? 1
1 ? ? 3 ? ? 3 ? ? 1
1 ? ? 4 ? ? 6 ? ? 4 ? ? 1
1 ? ? 5 ? ?10 ? ?10 ? ? 5 ? ? 1
1 ? ? 6 ? ?15 ? ?20 ? ?15 ? ? 6 ? ? 1
-------------------------------------------------------*/
main ( )
{
? int a[7][7];
? int i,j,k;
? for (i=0;i<7;i++)
? {
? ? ?a[i][0]=1;?
? ? ?/***********SPACE***********/ ? ?
? ? ?【?】;
? }
? for (i=2;i<7;i++)
? ? /***********SPACE***********/
? ? for (j=1;j<【?】;j++)
? ? ? /***********SPACE***********/
? ? ? a[i][j]= 【?】;
? for (i=0;i<7;i++)
? {
? ? ?/***********SPACE***********/
? ? ?for (j=0; 【?】;j++)
? ? ? ?printf("%6d",a[i][j]);
? ? ? ?printf("\n");
? ?}
}
答案:
? ?1). a[i][i]=1
? ?2). i
? ?3). a[i-1][j]+a[i-1][j-1] 或 a[i-1][j-1]+a[i-1][j]
? ?4). j<=i 或 i>=j 或 j<i+1 或 i+1>j 或 j-1<i 或 i>j-1
第22題 (9.0分) ?題號:28
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:將十進制數轉換成十六進制數。
-------------------------------------------------------*/
#include "stdio.h"
#include "string.h"
main ()
{
? int a,i;
? char s[20];
? printf("input a integer:\n");
? scanf("%d",&a);
? c10_16(s,a);
? /***********SPACE***********/
? for(【?】;i>=0;i--)
? ? printf("%c",s[i]);
? printf("\n");
}
c10_16(char p[],int b)
{
? int j,i=0;
? /***********SPACE***********/
? while (【?】)
? {
? ? j=b%16;
? ? if(j>=0&&j<=9)?
? ? ? /***********SPACE***********/
? ? ? 【?】;
? ? else p[i]=j+55;
? ? ? b=b/16;
? ? i++;
? }
? /***********SPACE***********/
? 【?】;
}
答案:
? ?1). i=strlen(s)-1 或 i=-1+strlen(s)
? ?2). b>0 或 0<b 或 b!=0 或 0!=b 或 b
? ?3). p[i]= j + '0' 或 p[i]= j + 48 或 *(p+i)= j + '0' 或 *(p+i)= j + 48
? ?4). p[i]='\0' 或 p[i]=0 或 p[i]=NULL 或 *(p+i)='\0' 或 *(p+i)=0 或 *(p+i)=NULL
第23題 (9.0分) ?題號:18
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:將一個數組中的元素按逆序存放。
-------------------------------------------------------*/
#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+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
第24題 (9.0分) ?題號:406
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從鍵盤輸入一個字符串,將小寫字母全部轉換成大寫字母,
? ? ? 然后輸出到一個磁盤文件“test”中保存。輸入的字符串
? ? ? 以!結束。
-------------------------------------------------------*/
#include "stdio.h"
#include <string.h>
main()
{
? FILE *fp;
? char str[100];
? int i=0;
? /***********SPACE***********/
? if((fp=fopen("test",【?】))==NULL)
? {
? ? printf("cannot open the file\n");
? ? exit(0);
? }
? printf("please input a string:\n");
? /***********SPACE***********/
? gets(【?】);
? while(str[i]!='!')
? /***********SPACE***********/
? {
? ? if(str[i]>='a'&&【?】)
? ? ? str[i]=str[i]-32;
? ? fputc(str[i],fp);
? ? i++;
? }
? /***********SPACE***********/
? fclose(【?】);
? fp=fopen("test","r");
? fgets(str,strlen(str)+1,fp);
? printf("%s\n",str);
? fclose(fp);
}
答案:
? ?1). "w"
? ?2). str
? ?3). str[i]<='z' 或 'z'>=str[i]
? ?4). fp
第25題 (9.0分) ?題號:449
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:算式:?2*7?=3848中缺少一個十位數和一個個位數。編
? ? ? 程求出使該算式成立時的這兩個數,并輸出正確的算式。
-------------------------------------------------------*/
main()
{
? int x,y;
? /***********SPACE***********/
? for(x=1;【?】;x++)
? ? /***********SPACE***********/
? ? for(【?】;y<10;y++)
? ? ? /***********SPACE***********/
? ? ? if(【?】==3848)
? ? ? {
? ? ? ? /***********SPACE***********/
? ? ? ? printf("%d*%d=3848\n",【?】);
? ? ? ? exit(0);
? ? ? }
}
答案:
? ?1). x<10 或 10>x 或 x<=9 或 9>=x
? ?2). y=0
? ?3). (10*x+2)*(70+y) 或 ( 10 * x + 2 ) * ( 70 + y )
? ?4). 10*x+2,70+y 或 10 * x + 2 , 70 + y
第26題 (9.0分) ?題號:451
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:編程求任意給兩個日期(Y0年M0月DO日和Y1年M1月D1日)
? ? ? 相差的天數。
-------------------------------------------------------*/
main()
{
? int y1,m1,d1,y2,m2,d2,n,i;
? printf("y1,m1,d1=");
? scanf("%d,%d,%d",&y1,&m1,&d1);
? /***********SPACE***********/
? if(m1<1||m1>12||d1<1||d1>【?】) exit(0);
? printf("y2,m2,d2=");scanf("%d,%d,%d",&y2,&m2,&d2);
? /***********SPACE***********/
? if(m2<1||m2>12||d2<1||d2>【?】) exit(0);
? if(y1>y2||y1==y2&&m1>m2||y1==y2&&m1==m2&&d1>d2)
? {
? ? n=y1;
? ? y1=y2;
? ? y2=n;
? ? n=m1;
? ? m1=m2;
? ? m2=n;
? ? n=d1;
? ? d1=d2;
? ? d2=n;
? }
? else
? {
? ? /***********SPACE***********/
? ? n=yend(y1,m1,d1)+【?】;
? ? /***********SPACE***********/
? ? for(i=【?】;i<y2;i++) n+=365+f(i);
? }
? printf("%d.%d.%d--->%d.%d.%d:n=%d\n",y1,m1,d1,y2,m2,d2,n);
}
int f(int y)
{
? return(y%4==0&&y%100!=0||y%400==0);
}
int mday(int y,int m)
{
? return(31-((m==4)+(m==6)+(m==9)+(m==11))-(3-f(y))*(m==2));
}
int yday(int y,int m,int d)
{
? return(d+31*((m>1)+(m>3)+(m>5)+(m>7)+(m>8)+(m>10))+30*((m>4)+(m>6)+(m>9)+(m>11))+(28+f(y))*(m>2));
}
int yend(int y,int m,int d)
{
? return(365+f(y)-yday(y,m,d));
}
答案:
? ?1). mday(y1,m1)
? ?2). mday(y2,m2)
? ?3). yday(y2,m2,d2)
? ?4). y1+1 或 1+y1
第27題 (9.0分) ?題號:16
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:產生10個[30,90]區間上的隨機整數,然后對其用選擇法
? ? ? 進行由小到大的排序。
-------------------------------------------------------*/
#include "stdlib.h"
main()
{
? /***********SPACE***********/
? 【?】;
? ?int i,j,k;
? ?int a[10];
? ?for(i=0;i<10;i++)
? ? ?a[i]=random(61)+30;
? ?for(i=0;i<9;i++)
? ?{
? ? ? /***********SPACE***********/
? ? ? 【?】;
? ? ? for(j=i+1;j<10;j++)
? ? ? ? /***********SPACE***********/
? ? ? if(【?】) k=j;
? ? ? if(k!=i)?
? ? ? {
? ? ? ? ? ?t=a[k];
? ? ? ? ? ?a[k]=a[i];
? ? ? ? ? ?a[i]=t;
? ? ? }
? ?}?
? ?/***********SPACE***********/
? ?for(【?】 )
? ? ?printf("%5d",a[i]);
? ?printf("\n");
}
答案:
? ?1). int t
? ?2). k=i
? ?3). a[k]>a[j] 或 a[j]<a[k]
? ?4). i=0;i<10;i++ 或 i=0;10>i;i++ 或 i=0;i<=9;i+=1 或 i=0;9>=i;i++ 或 i=0;i<10;i+=1 或 i=0;10>i;i+=1 或 i=0;i<=9;i++ 或 i=0;9>=i;i+=1 或 i=0;i<10;++i 或 i=0;10>i;++i 或 i=0;9>=i;++i 或 i=0;i<=9;++i
第28題 (9.0分) ?題號:21
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:將一個字符串中的前N個字符復制到一個字符數組中去,
? ? ? 不許使用strcpy函數。
-------------------------------------------------------*/
main ( )
{
? char str1[80],str2[80];
? int i,n;
? /***********SPACE***********/
? gets(【?】);
? scanf("%d",&n);
? /***********SPACE***********/
? for (i=0; 【?】 ;i++)
? /***********SPACE***********/
? ? 【?】;
? /***********SPACE***********/
? 【?】;
? printf("%s\n",str2);
}
答案:
? ?1). str1
? ?2). i<n 或 n>i 或 i<=n-1 或 n-1>=i
? ?3). str2[i]=str1[i] 或 *(str2+i)=*(str1+i) 或 *(str2+i)=str1[i] 或 str2[i]=*(str1+i)
? ?4). str2[n]='\0' 或 str2[i]='\0' 或 str2[n]=0 或 str2[i]=0 或 *(str2+n)='\0' 或 *(str2+i)='\0' 或 *(str+n)=0 或 *(str2+i)=0
第29題 (9.0分) ?題號:403
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸出9*9口訣。
-------------------------------------------------------*/
main()
{
? int i,j,result;
? printf("\n");
? /***********SPACE***********/
? for (i=1;【?】;i++)
? {?
? ? /***********SPACE***********/
? ? for(j=1;j<10;【?】)
? ? {
? ? ? result=i*j;
? ? ? /***********SPACE***********/
? ? ? printf("%d*%d=%-3d",i,j,【?】);
? ? }
? printf("\n");
? }
}
答案:
? ?1). i<10 或 10>i
? ?2). j++ 或 ++j 或 j=j+1
? ?3). result
第30題 (9.0分) ?題號:462
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:把字符串中所有的字母改寫成該字母的下一個字母,最后
? ? ? 一個字母z改寫成字母a。大字母仍為大寫字母,小寫字母
? ? ? 仍為小寫字母,其它的字符不變。
例如:原有的字符串為:“Mn.123xyZ”,調用該函數后,串中的
? ? ? 內容為:“No.123yzA”。
-------------------------------------------------------*/
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#define ? N ? 81
main( )
{ ??
? char ? a[N],*s;
? printf ( "Enter a string : ?" );
? gets ( a );
? printf ( "The original string is : ?" );
? puts( a );
? /***********SPACE***********/
? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? while(*s)
? {
? ? if(*s=='z')
? ? ? *s='a';
? ? else if(*s=='Z')
? ? ? *s='A';
? ? else if(isalpha(*s))?
? ? /***********SPACE***********/ ? ??
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? }
? printf ( "The string after modified : ?");
? puts ( a );
}
答案:
? ?1). s=a
? ?2). *s+=1 或 *s=*s+1 或 (*s)++ 或 ++(*s)
? ?3). s++ 或 s=s+1 或 ++s 或 s= s + 1
第31題 (9.0分) ?題號:415
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:數組名作為函數參數,求平均成績。
-------------------------------------------------------*/
float aver(float a[ ]) ? ? ? ? ? ? /*定義求平均值函數,形參為一浮點型數組名*/
{
? int i;
? float av,s=a[0];
? for(i=1;i<5;i++)
? /***********SPACE***********/
? s+=【?】[i];
? av=s/5;
? /***********SPACE***********/
? return 【?】;
}
void main()
{
? float sco[5],av;
? int i;
? printf("\ninput 5 scores:\n");
? for(i=0;i<5;i++)
? /***********SPACE***********/
? ? scanf("%f",【?】);
? /***********SPACE***********/
? av=aver(【?】);
? printf("average score is %5.2f\n",av);
? getch();
}
答案:
? ?1). a
? ?2). av 或 (av)
? ?3). &sco[i] 或 sco+i
? ?4). sco
第32題 (9.0分) ?題號:488
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:有一組基數值(正整數),輸入一個正整數(小于100),
? ? ? 問:如果該數由基數值相加構成(每個基數可以重復使用)
? ? ? ,那么最少可能利用的基數是多少個。
-------------------------------------------------------*/
#include ?<stdio.h>
#include ?<stdlib.h>
#define ? MAXSIZE ? 100
#define ? min(a,b) ?((a) <= (b) ? (a) : (b))
void ?main(void)
{
? int ?num[MAXSIZE+1];
? int ?base[] = { 1, 3, 4 };
? int ?k= sizeof(base)/sizeof(int);
? int ?n;
? int ?i, j, MIN;
? char line[100];
? printf("\n============================");
? printf("\n\nBase Values : ");
? for (i = 0; i < k; i++)
? ? printf("%d ", base[i]);
? printf("\n\nYour input please --> ");
? gets(line);
? n = atoi(line);
? num[0] = 0;
? num[1] = 1;
? for (i = 2; i <= n; i++)?
? {
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? for (j = 0; j < k; j++)
? ? ? if (i >= base[j])
? ? ? ? MIN = min(num[i-base[j]]+1, MIN); ? ? ? ?
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? }
? /***********SPACE***********/
? printf("\n\nMinimum = %d", 【?】); ? ? ? ? ? ? ? ? ? ? ? ?
}
答案:
? ?1). MIN = n
? ?2). num[i] = MIN
? ?3). num[n]
第33題 (9.0分) ?題號:396
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入數組,最大的與最后一個元素交換,最小的與第一個元
? ? ? 素交換,輸出數組。
-------------------------------------------------------*/
main()
{
? int number[10];
? input(number);
? max_min(number);
? output(number);
}
input(number)
int number[10];
{
? int i;
? /***********SPACE***********/
? for(i=0;【?】;i++)
? ? scanf("%d,",&number[i]);
? ? scanf("%d",&number[9]);
}
max_min(array)
int array[10];
{
? int *max,*min,k,l;
? int *p,*arr_end;
? arr_end=array+10;
? max=min=array;
? for(p=array+1;p<arr_end;p++)
? ? if(*p>*max)?
? ? ? max=p;
? else if(*p<*min)?
? ? /***********SPACE***********/
? ? 【?】;
? k=*max;
? l=*min;
? *p=array[0];
? array[0]=l;
? /***********SPACE***********/
? 【?】;
? *p=array[9];
? /***********SPACE***********/
? 【?】;
? k=*p;
? return;
}
output(array)
int array[10];
{
? int *p;
? for(p=array;p<array+9;p++)
? printf("%d,",*p);
? printf("%d\n",array[9]);
}
答案:
? ?1). i<9 或 9>i
? ?2). min=p
? ?3). l=*p
? ?4). array[9]=k
第34題 (9.0分) ?題號:480
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸出Fibonacci數列的前15項,要求每行輸出5項。
? ? ? Fibonacci數列:1,1,2,3,5,8,13...........
-------------------------------------------------------*/
#include <stdio.h>
main()
{
? /***********SPACE***********/
? int 【?】[14],i; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? fib[0]=1;fib[1]=1;
? for (i=2;i<15;i++)
? ? /***********SPACE***********/
? ? fib[i]=【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? for(i=0;i<15;i++)
? {
? ? printf("%d\t",fib[i]);
? ? /***********SPACE***********/
? ? if ( 【?】 ) printf("\n"); ? ? ? ? ? ? ? ? ? ? ? ?
? }
}
答案:
? ?1). fib
? ?2). fib[i-2]+fib[i-1] 或 fib[i-2] + fib[i-1]
? ?3). i%5 == 4
第35題 (9.0分) ?題號:5
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:將一個字符串中下標為m的字符開始的全部字符復制成為另
? ? ? 一個字符串。
-------------------------------------------------------*/
#include<stdio.h>
void strcopy(char *str1,char *str2,int m)
{?
? ?char *p1,*p2;?
? ?/***********SPACE***********/
? ?【?】; ?
? ?p2=str2;
? ?while(*p1)
? ?/***********SPACE***********/
? ?【?】;?
? ?/***********SPACE***********/
? ?【?】;
}
main()
{
? ?int i,m;
? ?char str1[80],str2[80];
? ?gets(str1);?
? ?scanf("%d",&m);
? ?/***********SPACE***********/
? ?【?】;?
? ?puts(str1);puts(str2);
}
答案:
? ?1). p1= str1 + m
? ?2). *p2++=*p1++ 或 *(p2++)=*(p1++) 或 *p2=*p1,p2++,p1++ 或 *p2=*p1++,p2++ 或 *p2++=*p1,p1++
? ?3). *p2='\0' 或 *p2=0 或 *p2=NULL
? ?4). strcopy(str1,str2,m)
第36題 (9.0分) ?題號:414
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:通過函數的遞歸調用計算階乘。
-------------------------------------------------------*/
long power(int n)
{
? long f;
? if(n>1)
? ? /***********SPACE***********/
? ? f=【?】;
? else ?
? ? ?f=1;
? return(f);
}
main()
{
? int n;
? long y;
? printf("input a inteager number:\n");
? /***********SPACE***********/
? scanf("%d",【?】);
? y=power(n);
? /***********SPACE***********/
? printf("%d!=%ld\n",n,【?】);
? getch();
}
答案:
? ?1). power(n-1)*n 或 power( n - 1 ) * n 或 n*power(n-1)
? ?2). &n
? ?3). power(n) 或 y
第37題 (9.0分) ?題號:431
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:計算圓周率的近似值。
-------------------------------------------------------*/
#include <stdio.h>
#include <math.h>
main()
{
? int s;
? /***********SPACE***********/
? float n,【?】;
? double t;
? t=1;pi=0;n=1;s=1;
? /***********SPACE***********/
? while(【?】>=2e-6)
? {
? ? pi+=t;n+=2;s=-s;t=s/n;
? }
? /***********SPACE***********/
? pi*=【?】;
? printf("pi=%.6f\n",pi);
}
答案:
? ?1). pi
? ?2). fabs(t)
? ?3). 4
第38題 (9.0分) ?題號:409
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入數組,最大的與第一個元素交換,最小的與最后一個
? ? ? 元素交換,輸出數組。
-------------------------------------------------------*/
main()
{
? int number[10];
? input(number);
? max_min(number);
? output(number);
}
input(number)
int number[10];
{
? int i;
? /***********SPACE***********/
? for(i=0;i<9;【?】)
? scanf("%d,",&number[i]);
? scanf("%d",&number[9]);
}
/***********SPACE***********/
max_min(【?】)
int array[10];
{
? int *max,*min,k,l;
? int *p,*arr_end;
? /***********SPACE***********/
? arr_end=【?】;
? max=min=array;
? for(p=array+1;p<arr_end;p++)
? ? if(*p>*max) max=p;
? /***********SPACE***********/
? ? else if(【?】) min=p;
? k=*max;
? l=*min;?
? *p=array[0];array[0]=l;l=*p;
? *p=array[9];array[9]=k;k=*p;
? return;
}
output(array)
int array[10];
{
? int *p;
? for(p=array;p<array+9;p++)
? printf("%d,",*p);
? printf("%d\n",array[9]);
}
答案:
? ?1). i++ 或 i=i+1 或 ++i
? ?2). array
? ?3). array+10 或 10+array
? ?4). *p<*min 或 *min>*p
第39題 (9.0分) ?題號:486
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:刪除字符串中的數字字符。
例如:輸入字符串:48CTYP9E6,則輸出:CTYPE。
-------------------------------------------------------*/
#include <stdio.h>
/***********SPACE***********/
void ?fun (【?】) ? ? ? ? ? ? ? ? ? ? ? ?
{
? char *p=s;
? while(*p)
? ? if((*p>='0')&&(*p<='9')) p++; ? ? ? ?
? ? ? /***********SPACE***********/
? ? else *s++=【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}
main( )
{
? char item[100] ;
? printf("\nEnter a string: ");
? gets(item); fun(item);
? printf("\nThe string:\"%s\"\n",item);
}
答案:
? ?1). char *s 或 char s[]
? ?2). *p++
? ?3). *s='\0' 或 *s=0
第40題 (9.0分) ?題號:474
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:讀入一行字符(如:a、...y、z),按輸入時的逆序建立一個
? ? ? 鏈接式的結點序列,即先輸入的位于鏈表尾,然后再按輸入
? ? ? 的相反順序輸出,并釋放全部結點。
-------------------------------------------------------*/
#include <stdio.h>
main( )
{?
? struct node
? {
? ? char info;
? ? struct node *link;
? } *top,*p;
? char c;
? top=NULL;
? /***********SPACE***********/
? while((c= 【?】) != '\n' ?) ? ? ? ? ? ? ? ?
? {
? ? p=(struct node *)malloc(sizeof(struct node));
? ? p->info=c;
? ? p->link=top;
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? }
? while( top )
? {
? ? p=top;
? ? /***********SPACE***********/?
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? putchar(p->info);
? ? free(p);
? }
}
答案:
? ?1). getchar( )
? ?2). top=p
? ?3). top=top->link
第41題 (9.0分) ?題號:475
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:下面create函數的功能是建立一個帶頭結點的單向鏈表,
? ? ? 新產生的結點總是插入在鏈表的末尾。輸入0代表結束,單
? ? ? 向鏈表的頭指針作為函數值返回。
-------------------------------------------------------*/
#include <stdio.h>
#define LEN sizeof(struct student)
struct student
{
? long num;
? struct student *next;
};
struct student *creat()
{
? struct student *head=NULL,*tail;
? long num;
? int a;
? /***********SPACE***********/
? tail=(【?】)malloc(LEN); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? printf("please input date\n");
? do
? {
? ? scanf("%ld",&num);
? ? /***********SPACE***********/
? ? if(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? {
? ? ? /***********SPACE***********/
? ? ? if(【?】)?
? ? ? ? head=tail; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? else?
? ? ? ? tail=tail->next;
? ? ? tail->num=num;
? ? ? tail->next=(struct list *)malloc(LEN);
? ? }
? ? else?
? ? ? tail->next=NULL;
? ?}while(num!=0);
? return(head) ;
}
main()
{
? struct student *p;
? p=creat();
? printf("you input ?is\n");
? while(p)
? {
? ? printf("%d\n",p->num);
? ? p=p->next;
? }
}
答案:
? ?1). struct student *
? ?2). num!=0 或 0!=num
? ?3). head == NULL
第42題 (9.0分) ?題號:468
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能: 對一數組進行逐步累加求和,prefix代表從前向后累加值,
? ? ? suffix代表從后向前累加值,問在此過程中prefix與suffix
? ? ? 有幾次值相同?
-------------------------------------------------------*/
int ?head_tail(int ?x[], int n)
{
? int ?prefix ? ? = 0, suffix ? ? = 0;
? int ?prefix_idx = 0, suffix_idx = n-1;
? int ?count = 0;
? while (suffix_idx >= 0 && prefix_idx <= n-1)
? ? /***********SPACE***********/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? if ( 【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? prefix += x[prefix_idx++];
? ? else if (prefix > suffix)?
? ? ? /***********SPACE***********/
? ? ? suffix += x[【?】]; ? ? ? ? ? ? ? ?
? ? else?
? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? prefix += x[prefix_idx++];?
? ? ? suffix += x[suffix_idx--];?
? ? }
? return count;
}
#include ?<stdio.h>
void main(void)
{
? int ?x[] = { 3, 6, 2, 1, 4, 5, 2};
? int ?n ? = sizeof(x)/sizeof(int);
? int ?i;
? printf("\nHead Sum == Tail Sum Counting Program");
? printf("\n=====================================\n");
? printf("\nGiven Array :");
? for (i = 0; i < n; i++)
? ? printf("%5d", x[i]);
? printf("\n\nThere are %d equal Prefix-Suffix sum pairs.",head_tail(x, n));
}
答案:
? ?1). prefix < suffix 或 suffix>prefix
? ?2). suffix_idx-- 或 suffix_idx= suffix_indx -1 或 --suffix_idx
? ?3). count++ 或 count=count+1
第43題 (9.0分) ?題號:484
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:識別輸入的字符串,每個單詞輸出一行
-------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void main()
{
? int c;
? int inspace;
? /***********SPACE***********/
? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? while((c = getchar()) != '\n')
? {
? ? if(c == ' ' || c == '\t' || c == '\n')
? ? {
? ? ? /***********SPACE***********/
? ? ? if(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? {
? ? ? ? inspace = 1;
? ? ? ? putchar('\n');
? ? ? }
? ? }
? ? else
? ? {
? ? ? inspace = 0;
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? }
? }
}
答案:
? ?1). inspace = 0
? ?2). inspace == 0
? ?3). putchar(c)
第44題 (9.0分) ?題號:440
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:先將在字符串s中的字符按正序存放到t串中,然后把s中的
? ? ? 字符按逆序連接到t串的后面。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
#include <string.h>?
void fun (char *s, char *t)
{?
? int i, sl;
? /***********SPACE***********/
? sl = 【?】; ?
? for(i=0; i<sl; i++)
? ? t[i] = s[i];
? for (i=0; i<sl; i++)
? ? /***********SPACE***********/
? ? t[sl+i] = 【?】;?
? /***********SPACE***********/
? t[sl+i]=【?】;?
}
main()
{
? char s[100], t[100];
? clrscr();
? /***********SPACE***********/
? printf("\nPlease enter string s:"); 【?】("%s",s);
? fun(s, t);
? printf("The result is: %s\n", t);
}
答案:
? ?1). strlen(s)
? ?2). s[sl-i-1] 或 s[ sl -i -1 ]
? ?3). '\0' 或 0
? ?4). scanf
第45題 (9.0分) ?題號:425
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:當輸入“2,5”的時候輸出為“2 5 5”
-------------------------------------------------------*/
#include <stdio.h>
#define max 100
main()
{
? int f[max],i,j,k,m;
? scanf("%d,%d",&k,&m);
? /***********SPACE***********/
? for(i=0;i<=【?】;i++)f[i]=0;
? ? /***********SPACE***********/
? ? f[【?】]=1;
? for(i=k;i<=m;i++)
? ? /***********SPACE***********/
? ? for(j=i-k;j<=i-1;j++)f[i]【?】f[j];
? ? ? printf("%d%10d%10d\n",k,m,f[m]);
}
答案:
? ?1). m
? ?2). k-1 或 k -1
? ?3). += 或 =1+
第46題 (9.0分) ?題號:444
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用指向指針的指針的方法對n個字符串排序并輸出。
---------------------------------------------------------*/
#include "string.h"
#define N 100
void sort();
main()
{
? int i,n;
? char **p,*str[N],name[N][20];
? printf("n=");scanf("%d",&n);
? /***********SPACE***********/
? if(n<2【?】n>N) exit(0);
? for(i=0;i<n;i++)str[i]=name[i];
? printf("Input %d strings:\n",n);
? for(i=0;i<n;i++)
? {
? ? printf("name[%d]=",i);
? ? /***********SPACE***********/
? ? scanf("%s",【?】);
? }
? printf("String arry:\n");
? for(i=0;i<n;i++)
? {
? ? p=str+i;
? ? printf("%s\n",*p);
? }
? p=str;
? sort(p,n);
? printf("String sort:\n");
? for(i=0;i<n;i++)
? {
? ? p=str+i;
? ? printf("%s\n",*p);
? }
? getch();
}
/***********SPACE***********/
void sort(char 【?】,int n)
{
? int i,j;
? char *s;
? for(i=0;i<n-1;i++)
? ? for(j=i+1;j<n;j++)
? ? ? if(strcmp(p[i],p[j])>0)
? ? ? {
? ? ? ? s=p[i];
? ? ? ? /***********SPACE***********/
? ? ? ? 【?】;
? ? ? ? p[j]=s;
? ? ? }
}
答案:
? ?1). ||
? ?2). str[i]
? ?3). **p
? ?4). p[i]=p[j]
第47題 (9.0分) ?題號:32
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:計算并輸出500以內最大的10個能被13或17整除的自然數之和。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
/***********SPACE***********/
int fun(【?】 )
{
? int m=0, ?mc=0, j, n;
? /***********SPACE***********/
? while (k >= 2 && 【?】)?
? {
? /***********SPACE***********/
? ? if (k%13 == 0 || 【?】)
? ? {
? ? ? ?m=m+k;
? ? ? ?mc++;?
? ? }
? ? k--;
? }
? /***********SPACE***********/
? 【?】;
}
main ( )
{?
? clrscr( );
? printf("%d\n", fun (500));
}
答案:
? ?1). int ?k
? ?2). mc < 10 或 10 > mc 或 mc <= 9 或 9 >= mc
? ?3). k%17 ?== ?0 或 !(k%17) 或 k/17*17 == k
? ?4). return m 或 return (m)
第48題 (9.0分) ?題號:456
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:利用指向結構的指針編寫求某年、某月、某日是第
? ? ? 幾天的程序,其中年、月、日和年天數用結構表示。
-------------------------------------------------------*/
main()
{
/***********SPACE***********/
?【?】 date
?{
? ? int y,m,d,n;
? /***********SPACE***********/
? }【?】;
?
? int k,f,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
? printf("date:y,m,d=");
? scanf("%d,%d,%d",&x.y,&x.m,&x.d);
? f=x.y%4==0&&x.y%100!=0||x.y%400==0;
? /***********SPACE***********/
? a[1]+=【?】;
? if(x.m<1||x.m>12||x.d<1||x.d>a[x.m-1]) exit(0);
? for(x.n=x.d,k=0;k<x.m-1;k++)x.n+=a[k];
? ? /***********SPACE***********/
? ? printf("n=%d\n",【?】);
}
答案:
? ?1). struct
? ?2). x
? ?3). f
? ?4). x.n
第49題 (9.0分) ?題號:420
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:計算某日是當年的第幾天。
-------------------------------------------------------*/
#include <stdio.h>
struct?
{
? int year;
? int month;
? int day;
}data; ? ?/* 定義一個結構并聲明對象為data */
void main()
{
? int days;
? printf("請輸入日期(年,月,日):");
? scanf("%d, %d, %d", &data.year, &data.month, &data.day);
? switch(data.month)
? {
? ? case 1:days = data.day;
? ? ? ? ? ?break;
? ? /***********SPACE***********/
? ? case 2:days = data.day+【?】;
? ? ? ? ? ?break;
? ? case 3:days = data.day+59;
? ? ? ? ? ?break;
? ? case 4:days = data.day+90;
? ? ? ? ? ?break;
? ?/***********SPACE***********/
? ? case 5:days = data.day+【?】;
? ? ? ? ? ?break;
? ? case 6:days = data.day+151;
? ? ? ? ? ?break;
? ? case 7:days = data.day+181;
? ? ? ? ? ?break;
? ? case 8:days = data.day+212;
? ? ? ? ? ?break;
? ? case 9:days = data.day+243;
? ? ? ? ? ?break;
? ?case 10:days = data.day+273;
? ? ? ? ? ?break;
? ?case 11:days = data.day+304;
? ? ? ? ? ?break;
? ?case 12:days = data.day+334;
? ? ? ? ? ?break;
? }
? /***********SPACE***********/
? if(data.year%4==0&&data.year%100!=0【?】data.year%400==0)
? ? if(data.month>=3)
? ? ? /***********SPACE***********/
? ? ? days =【?】;
? printf("%d月%d日是%d年的第%d天.\n", data.month, data.day, data.year, days);
}
答案:
? ?1). 31
? ?2). 120
? ?3). ||
? ?4). days + 1 或 1+days 或 ++days
第50題 (9.0分) ?題號:458
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用等分法在有序的循環數組中,找到最小元素的位置。
-------------------------------------------------------*/
int ?cyclic_min(int ?x[], int n)
{
? int ?left ?= 0;
? int ?right = n - 1;
? int ?mid;
? /***********SPACE***********/
? while (【?】)?
? { ? ? ? ? ? ? ? ? ? ? ? ?
? ? mid = (left + right)/2;
? ? if (x[mid] < x[right])
? ? ? /***********SPACE***********/
? ? ? ?【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? ? else
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? }
? return left;
}
#include ?<stdio.h>
void ?main(void)
{
? ? ?int ?x[] = { 20, 23, 28, 35, 39, 40, 42, 8, 10, 15, 17, 19};
? ? ?int ?n ? = sizeof(x)/sizeof(int);
? ? ?int ?loc, i;
? ? ?printf("\nFind Cyclic Minimum");
? ? ?printf("\n===================");
? ? ?printf("\n\nGiven Array Sorted in Cyclic Fashion :\n");
? ? ?for (i = 0; i < n; i++)
? ? ? ? ? printf("%3d", x[i]);
? ? ?loc = cyclic_min(x, n);
? ? ?printf("\n\nMinimum is located at x[%d] = %d", loc, x[loc]);
}
答案:
? ?1). left < right 或 right>left
? ?2). right = mid
? ?3). left ?= mid + 1 或 left ?= 1+mid
第51題 (9.0分) ?題號:469
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用遞歸法將一個整數n轉換成字符串,例如輸入483,應輸出
? ? ? 對應的字符串"483"。n的位數不確定,可以是任意位數的整
? ? ? 數。
-------------------------------------------------------*/
#include <stdio.h>
void convert(int n)
{
? int i;
? /***********SPACE***********/
? if((【?】)!=0) ? ? ? ? ? ? ? ? ? ? ? ?
? ? convert(i);
? /***********SPACE***********/
? putchar(n%10+【?】); ? ? ? ? ? ? ? ?
}
main()
{
? int number;
? printf("\nInput an integer:");
? scanf("%d",&number);
? printf("Output:");
? if(number<0)
? {
? ? putchar('-');
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? }
? convert(number);
}
答案:
? ?1). i=n/10
? ?2). '0'
? ?3). number=-number
第52題 (9.0分) ?題號:481
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:一個自然數被 8 除余 1 ,所得的商被 8 除也余 1 ,再
? ? ? 將第二次的商被8 除后余7 ,最后得到一個商為a。又知這
? ? ? 個自然數被17除余4 ,所得的商被17除余15,最后得到一
? ? ? 個商是a的2倍。編寫程序求這個自然數。
-------------------------------------------------------*/
main( )?
{
? int i,n,a ;
? i=0 ;
? while(1)
? {
? ? if(i%8==1)?
? ? {?
? ? ? n=i/8 ;
? ? ? if(n%8==1)
? ? ? {
? ? ? ? n=n/8 ;
? ? ? ? /***********SPACE***********/
? ? ? ? if(n%8==7) 【?】 ; ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? }?
? ? }?
? ? if(i%17==4)?
? ? {
? ? ? n=i/17 ;
? ? ? if(n%17==15) n=n/17 ;
? ? }?
? ? if(2*a==n)?
? ? {?
? ? ? printf("result=%d\n",i) ;
? ? ? /***********SPACE***********/
? ? ? 【?】 ; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? }?
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? }?
}?
答案:
? ?1). a=n/8
? ?2). break
? ?3). i++ 或 ++i 或 i=i+1
第53題 (9.0分) ?題號:450
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:一個40磅重的板碎成4塊,每塊正好是一個整數磅,且用這
? ? ? 4塊當砝碼能稱出1~40磅的整數重量的物體。編程求這4塊
? ? ? 的各自重量。
-------------------------------------------------------*/
main()
{
? int i,j,k,l,p,t1,t2,t3,t4;
? for(i=1;i<38;i++)
? ? /***********SPACE***********/
? ? for(【?】;j<38-i;j++)
? ? ? /***********SPACE***********/
? ? ? for(k=j;k<【?】;k++)
? ? ? {
? ? ? ? l=40-i-j-k;
? ? ? ? for(p=1;p<40;p++)
? ? ? ? {
? ? ? ? ? for(t1=-1;t1<2;t1++)
? ? ? ? ? ? for(t2=-1;t2<2;t2++)
? ? ? ? ? ? ? for(t3=-1;t3<2;t3++)
? ? ? ? ? ? ? ? for(t4=-1;t4<2;t4++)
? ? ? ? ? ? ? ? ? /***********SPACE***********/
? ? ? ? ? ? ? ? ? if(【?】==p) goto next;
? ? ? ? ? break;
? ? ? ? ? /***********SPACE***********/
? ? ? ? ? next:if(p==【?】)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? printf("%d,%d,%d,%d\n",i,j,k,l);
? ? ? ? ? ? ? ? ? exit(0);
? ? ? ? ? ? ? ?}
? ? ? }
? }
? printf("error.");
}
答案:
? ?1). j=i
? ?2). 39-i-j 或 39 -i -j
? ?3). i*t1+j*t2+k*t3+l*t4 或 i * t1 + j * t2 + k * t3 + l * t4
? ?4). 39
第54題 (9.0分) ?題號:27
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:統計一個字符串中的字母、數字、空格和其它字符的個數。
-------------------------------------------------------*/
#include "stdio.h"
main ()
{
? char s1[80];int a[4]={0};
? int k;
? /***********SPACE***********/
? 【?】;
? gets(s1);
? /***********SPACE***********/
? 【?】;
? puts(s1);
? for(k=0;k<4;k++)
? ? printf("%4d",a[k]);
}
void fun(char s[],int b[])
{
? int i;
? for (i=0;s[i]!='\0';i++)
? if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')?
? ? b[0]++;
? /***********SPACE***********/
? else if (【?】)?
? ? b[1]++;
? /***********SPACE***********/
? else if (【?】 )?
? ? b[2]++;
? else
? ? b[3]++;
}
答案:
? ?1). void fun(char s[],int b[])
? ?2). fun(s1,a)
? ?3). '0'<=s[i] && s[i]<='9' 或 s[i]>='0' && s[i]<='9' 或 '0'<=s[i] && '9'>=s[i] 或 s[i]>='0' && '9'>=s[i] 或 48<=s[i] && s[i]<=57 或 s[i]>=48 && s[i]<=57 或 48<=s[i] && 57>=s[i] 或 s[i]>=48 && 57>=s[i] 或 !( x < 48 || x > 57 ) 或 !( x < '0' || x > '9' )
? ?4). s[i] == ' ' 或 s[i] == 32
第55題 (9.0分) ?題號:457
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:功能:定義一個結構變量(包括年、月、日)計算給定日
? ? ? 期是該年的第幾天。
-------------------------------------------------------*/
main()
{
/***********SPACE***********/
? 【?】 date
? {
? ? ?int y,m,d;
? }da;
??
? int f,n,p,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
? printf("y,m,d=");
? scanf("%d,%d,%d",&da.y,&da.m,&da.d);
? /***********SPACE***********/
? f=da.y%4==0&&da.y%100【?】0||da.y%400==0;
? /***********SPACE***********/
? if(da.m<1【?】da.d>12) exit(0);
? a[11]+=f;
? if(da.d<1||da.d>a[da.m-1]) exit(0);
? /***********SPACE***********/
? for(n=【?】,p=1;p<da.m;p++)n+=a[p-1];
? ? printf("n=%d\n",n);
}
答案:
? ?1). struct
? ?2). !=
? ?3). ||
? ?4). da.d
第56題 (9.0分) ?題號:404
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從鍵盤上輸入兩個復數的實部與虛部,求出并輸出它們的
? ? ? 和、差、積、商。
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
? float a,b,c,d,e,f;
? printf("輸入第一個復數的實部與虛部:");
? scanf("%f, %f",&a,&b);
? printf("輸入第二個復數的實部與虛部:");
? scanf("%f, %f",&c,&d);
? /***********SPACE***********/
? 【?】;
? f=b+d;
? printf("相加后復數:實部:%f,虛部:%f\n",e,f);
? e=a*c-b*d;
? /***********SPACE***********/
? 【?】;
? printf("相乘后復數:實部:%f,虛部:%f\n",e,f);
? e=(a*c+b*d)/(c*c+d*d);
? /***********SPACE***********/
? 【?】;
? printf("相除后復數:實部:%f,虛部:%f\n",e,f);
}
答案:
? ?1). e=a+c 或 e=c+a
? ?2). f=a*d+b*c 或 f= a*d + b*c 或 f= a * d + b * c
? ?3). f=(b*c-a*d)/(c*c+d*d) 或 f=(b*c-a*d) / (c*c+d*d) 或 f=( b * c - a * d ) / ( c * c + d * d )
第57題 (9.0分) ?題號:9
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:以下程序的功能如(圖1)。
-------------------------------------------------------*/
#include <math.h>
main()
{?
? int f;
? /***********SPACE***********/
?【?】;
? float t,pi;
? t=1;pi=t;f=1;n=1.0;
? /***********SPACE***********/
? while(【?】 )
? {
? ? n=n+2;
? ? /***********SPACE***********/
? ? 【?】;
? ? t=f/n;
? ? pi=pi+t;
? }
? /***********SPACE***********/
? 【?】;
? ?printf("pi=%10.6f\n",pi);
}
答案:
? ?1). float n 或 duoble n
? ?2). fabs(t)>=1e-6 或 fabs(t)>=0.000001 或 1e-6<=fabs(t) 或 0.000001<=fabs(t)
? ?3). f=-f 或 f=-1*f 或 f=f*(-1) 或 f=f*-1 或 f=(-1)*f
? ?4). pi= pi * 4 或 pi*=4
第58題 (9.0分) ?題號:490
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:利用函數計算連續的數組元素累加和的最大值。如果最大
? ? ? 值是負數則返回0;
-------------------------------------------------------*/
/***********SPACE***********/
int ?max_sum( 【?】, int n) ? ? ? ? ? ? ? ? ? ? ? ?
{
? int ?max_ending_here = 0;
? int ?max_so_far ? ? ?= 0;
? int ?i;
? for (i = 0; i < n; i++)?
? {
? ? if (max_ending_here + x[i] < 0)
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? else
? ? ? max_ending_here += x[i];
? ? if (max_ending_here > max_so_far)
? ? ? max_so_far = max_ending_here;
? }
? /***********SPACE***********/
? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}
#include ?<stdio.h>
void main(void)
{
? int ?x[] = { 2, -3, 1, -1, 3, -2, -3, 3};
? int ?n ? = sizeof(x)/sizeof(int);
? int ?i;
? printf("\nMaximum Consecutive Elements Sum Program");
? printf("\n========================================");
? printf("\n\nGiven Array :");
? for (i = 0; i < n; i++)
? ? printf("%4d", x[i]);
? printf("\n\nMaximum Sum is %d", max_sum(x, n));
}
答案:
? ?1). int x[]
? ?2). max_ending_here = 0
? ?3). return max_so_far
第59題 (9.0分) ?題號:452
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從鍵盤輸入若干行字符,輸入后把他們存儲到一磁盤文件
? ? ? 中。在從該文件中讀出這些數據,將其中的小寫字母轉換
? ? ? 成大寫字母后在屏幕上輸出。
-------------------------------------------------------*/
#include "stdio.h"
#define N 100
main()
{
? FILE *fp;
? char c,*p,s[N][20];
? int i,n;
? printf("n=");scanf("%d",&n);
? /***********SPACE***********/
? if(n<1【?】n>N) exit(0);
? printf("Input%d string:\n",n);
? for(i=0;i<n;i++)?
? ? scanf("%s",s[i]);
? /***********SPACE***********/
? fp=fopen("text",【?】);
? for(i=0;i<n;i++)
? {
? ? p=s[i];
? ? /***********SPACE***********/
? ? while(*p!='\0')
? ? ? if(!ferror(fp)) fputc(【?】,fp);
? }
? fclose(fp);
? printf("\n");
? /***********SPACE***********/
? fp=fopen("text",【?】);
? while((c=fgetc(fp))!=EOF)
? {
? ? if(c>'a'&&c<='z')c-+32;
? ? putchar(c);
? }
? printf("\n");
? fclose(fp);
}
答案:
? ?1). ||
? ?2). "w"
? ?3). *p++
? ?4). "r"
第60題 (9.0分) ?題號:20
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:求兩個非負整數的最大公約數和最小公倍數。
-------------------------------------------------------*/
main()
{
? int m,n,r,p,gcd,lcm;
? scanf("%d%d",&m,&n);
? if(m<n) {p=m,m=n;n=p;}
? p=m*n;
? r=m%n;
? /***********SPACE***********/
? while(【?】 )
? {
? /***********SPACE***********/
? ? m=n;n=r; 【?】;
? ?}
? ?/***********SPACE***********/
? ?gcd=【?】;?
? ?lcm=p/gcd;
? ?/***********SPACE***********/
? ?printf("gcd=%d,lcm=%d\n", 【?】);
}
答案:
? ?1). r != 0 或 r
? ?2). r=m%n 或 r=m-m/n*n
? ?3). n
? ?4). gcd,lcm 或 n,lcm
第61題 (9.0分) ?題號:487
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入一個整數,計算它可能是哪兩個整數的平方和,并打印
? ? ?結果數據。
? ? ?如:34是5和3或3和5的平方和。
-------------------------------------------------------*/
#include ?<stdio.h> ? ? ? ? ? /* for I/O functions ? ? ? ?*/
#include ?<stdlib.h> ? ? ? ? ?/* for atoi() ? ? ? ? ? ? ? */
#include ?<math.h> ? ? ? ? ? ?/* for sqrt() ? ? ? ? ? ? ? */
void ?main(void)
{
? int ?given; ? ? ? ? ? ? ?/* the given number ? ? ? ? */
? int ?row, column; ? ? ? ?/* row and column indicators*/
? int ?count; ? ? ? ? ? ? ?/* number of solutions ? ? ?*/
? char line[100];
? printf("\nRepresenting a Given Number as the Sum of Two Squares");
? printf("\n=====================================================\n");
? printf("\nAn Integer Please ---> ");
? gets(line);
? given = atoi(line);
? printf("\nCount ? ? ?X ? ? ?Y");
? printf("\n----- ?----- ?-----");
? row ? ?= 1; ? ? ? ? ? ? ?/* starts from far enough ? */
? column = (int) (sqrt((double) given) + 0.5);
? count ?= 0; ? ? ? ? ? ? ?/* so solution yet ? ? ? ? ?*/
? while (row <= given && column > 0) ?/* scan down... ?*/
? ? if (row*row + column*column == given)?
? ? {
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? printf("\n%5d%7d%7d", count, row, column);
? ? ? row++;
? ? ? column--;
? ? }
? ? else if (row*row + column*column > given)
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? else
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? if (count == 0)
? ? printf("\n\nSorry, NO ANSWER found.");
? else
? ? printf("\n\nThere are %d possible answers.",count);
}
答案:
? ?1). count++ 或 ++count 或 count=count++1
? ?2). column-- 或 --column 或 column=column-1
? ?3). row++ 或 ++row 或 row= row + 1
第62題 (9.0分) ?題號:455
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:要求輸出結果為3。
-------------------------------------------------------*/
#include <stdio.h>
main()?
{
? /***********SPACE***********/
? int m=1,n=1,【?】;
? s=akm(m,n);
? printf("%d",s);?
}?
/***********SPACE***********/
akm(【?】,int n)
{?
? if(m==0)?
? ? /***********SPACE***********/
? ?【?】 n+1;
? else if(m!=0&&n==0)?
? ? akm(m-1,1);?
? else if(m!=0&&n!=0)?
? ? akm(m-1,akm(m,n-1));?
}
答案:
? ?1). s
? ?2). int m
? ?3). return
第63題 (9.0分) ?題號:8
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:以每行5個數來輸出300以內能被7或17整除的偶數,并求出
? ? ? 其和。
-------------------------------------------------------*/
#include <stdio.h>
#include <conio.h>
main()
{
? int i,n,sum;
? sum=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). n=0
? ?2). i<=300 或 i<300 或 300>=i 或 300>i
? ?3). ?i%7 == 0 || i%17 == 0 或 !(i%7)||!(i%17) 或 !(i%17)||!(i%7) 或 !(i%7&&i%17)
? ?4). ?n%5 == 0 或 !(n%5) 或 n/5*5==n
第64題 (9.0分) ?題號:34
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:以下程序的功能如(圖1)。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
/***********SPACE***********/
float fun(【?】, int n)?
{?
? /***********SPACE***********/
? 【?】; ?
? float xa=0, s;?
? for (j=0; j<n; j++ )
? ? xa += x[j]/n;
? /***********SPACE***********/
? 【?】;
? ?for (j=0; j<n; j++ )
? ? ?s += (x[j]-xa)*(x[j]-xa)/n;
? /***********SPACE***********/
? 【?】;?
}
main ( )
{?
? float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092,196.596,196.579, 196.763};
? clrscr( );
? printf("%f\n", fun (x, 8));
}?
答案:
? ?1). float x[] 或 float *x
? ?2). int j
? ?3). s = 0 或 s = 0.0
? ?4). return s 或 return(s)
第65題 (9.0分) ?題號:482
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:找出三個增序數組中值相同的數。
-------------------------------------------------------*/
#define ?FOUND ? ? ? 1
#define ?NOT_FOUND ? 0
int ?search(int x[], int y[], int z[],?
? ? ? ? ? ? int X, int Y, int Z,
? ? ? ? ? ? int *XX, int *YY, int *ZZ)
{
? *XX = *YY = *ZZ = 0;
? while (*XX < X && *YY < Y && *ZZ < Z)?
? if(x[*XX] < y[*YY])
? ? (*XX)++;
? else if (y[*YY] < z[*ZZ])
? ? (*YY)++;
? /***********SPACE***********/
? else if (【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? (*ZZ)++;
? else
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? return NOT_FOUND;
}
#include ?<stdio.h>
void main(void)
{
? int ?x[] = { 1, 3, 5, ?7, ?9, 11, 13, 15, 17, 19};
? int ?y[] = { 2, 4, 9, 10, 12, 14, 16, 18, 20, 21};
? int ?z[] = { 1, 2, 3, ?4, ?5, ?6, ?7, ?8, ?9, 10};
? int ?X ? = sizeof(x)/sizeof(int);
? int ?Y ? = sizeof(y)/sizeof(int);
? int ?Z ? = sizeof(z)/sizeof(int);
? int ?XX, YY, ZZ;
? printf("\nSearch for a Common Element from Three Arrays");
? printf("\n=============================================");
? printf("\n\nFirst Array :\n");
? for (XX = 0; XX < X; XX++)
? ? printf("%3d", x[XX]);
? printf("\n\nSecond Array :\n");
? for (YY = 0; YY < Y; YY++)
? ? printf("%3d", y[YY]);
? printf("\n\nThird Array :\n");
? for (ZZ = 0; ZZ < Z; ZZ++)
? ? printf("%3d", z[ZZ]);
? /***********SPACE***********/
? if (search(x, y, z, X, Y, Z, 【?】) > 0) ? ? ? ? ? ? ? ?
? ? printf("\n\n%d is common to x[%d], y[%d] and z[%d]",
? ? x[XX], XX, YY, ZZ);
? else
? ? printf("\n\nNO COMMON ELEMENT FOUND.");
}
答案:
? ?1). z[*ZZ] < x[*XX] 或 x[*XX]>z[*ZZ]
? ?2). return FOUND 或 return 1
? ?3). &XX, &YY, &ZZ
第66題 (9.0分) ?題號:476
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:不用第三個變量,實現兩個數的對調操作。
-------------------------------------------------------*/
#include <stdio.h>
main()
{?
? int a,b;
? scanf("%d %d",&a,&b);
? printf("a=%d,b=%d\n",a,b);
? /***********SPACE***********/
? a= 【?】 ; ? ? ? ? ? ? ? ? ? ? ? ?
? /***********SPACE***********/
? b= 【?】 ; ? ? ? ? ? ? ? ? ? ? ? ?
? /***********SPACE***********/
? a= 【?】 ; ? ? ? ? ? ? ? ? ? ? ? ?
? printf("a=%d,b=%d\n",a,b);
}?
答案:
? ?1). a + b
? ?2). a-b 或 a -b
? ?3). a-b 或 a -b
第67題 (9.0分) ?題號:435
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:找出數組中最大值和此元素的下標,數組元素的值由鍵盤
? ? ? 輸入。
-------------------------------------------------------*/
#include "stdio.h"
void main()
{
? int a[10],*p,*s,i;
? for(i=0;i<10;i++)
? ? /***********SPACE***********/
? ? scanf("%d", 【?】);
? /***********SPACE***********/
? for(p=a,s=a;【?】<10;p++)
? ? /***********SPACE***********/
? ? if(*p【?】*s) s=p;
? ? ? /***********SPACE***********/
? printf("max=%d,index=%d\n",【?】,s-a);
}
答案:
? ?1). a + i 或 &a[i]
? ?2). p-a 或 -a+p
? ?3). >
? ?4). *s
第68題 (9.0分) ?題號:411
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:有n個人圍成一圈,順序排號。從第一個人開始報數(從1
? ? ? 到3報數),凡報到3的人退出圈子,問最后留下的是原來
? ? ? 第幾號的那位。
-------------------------------------------------------*/
#define nmax 50
main()
{
? int i,k,m,n,num[nmax],*p;
? printf("please input the total of numbers:");
? scanf("%d",&n);
? p=num;
? /***********SPACE***********/
? for(i=0;【?】;i++)
? ?/***********SPACE***********/
? *(p+i)=【?】;
? i=0;
? k=0;
? m=0;
? while(m<n-1)
? {
? ? /***********SPACE***********/
? ? if(【?】!=0) k++;
? ? if(k==3)
? ? {
? ? ? *(p+i)=0;
? ? ? k=0;
? ? ? m++;
? ? }
? ? i++;
? ? if(i==n) i=0;
? }
? /***********SPACE***********/
? while(【?】) p++;
? printf("%d is left\n",*p);
}
答案:
? ?1). i<n 或 n>i
? ?2). i+1 或 i + 1
? ?3). *(p+i) 或 *( p + i )
? ?4). *p==0 或 *p == 0
第69題 (9.0分) ?題號:479
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:十個小孩圍成一圈分糖果,老師分給第一個小孩 10 塊,第二
? ? ?個小孩 2 塊,第三個小孩 8 塊,第四個小孩 22 塊,第五個
? ? ?小孩16 塊,第六個小孩 4塊,第七個小孩 10 塊,第八個小孩
? ? ?6 塊,第九個小孩 14 塊,第十個小孩20 塊。然后所有的小孩
? ? ?同時將自己手中的糖分一半給左邊的小孩;糖塊數為奇數的人
? ? ?可向老師要一塊。問經過這樣幾次調整后大家手中的糖的塊數
? ? ?都一樣?每人各有多少塊糖?
?-------------------------------------------------------*/
main()
{?
? int i,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20} ;
? /***********SPACE***********/
? while(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? {?
? ? for(i=1 ; i<=10 ; i++)
? ? a[i-1]=a[i-1]/2+a[i]/2 ;
? ? a[10]=a[10]/2+a[0] ;
? ? for(i=1 ; i<=10 ; i++)
? ? ? /***********SPACE***********/
? ? ? if(【?】) a[i]++ ; ? ? ? ? ? ? ? ? ? ? ? ?
? ? for(i=1 ; i<10 ; i++)
? ? ? /***********SPACE***********/
? ? ? if(a[i]!=a[i+1]) 【?】; ? ? ? ? ? ? ? ?
? ? if(i==10)?
? ? ? break ;
? ? else?
? ? {
? ? ? a[0]=0 ;
? ? ? count++ ;
? ? }?
? }?
? printf("count=%d number=%d\n",count,a[1]) ;
}
答案:
? ?1). 1
? ?2). a[i]%2 == 1
? ?3). break
第70題 (9.0分) ?題號:401
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入某年某月某日,判斷這一天是這一年的第幾天?
-------------------------------------------------------*/
main()
{
? int day,month,year,sum,leap;
? printf("\nplease input year,month,day\n");
? scanf("%d,%d,%d",&year,&month,&day);
? switch(month)
? {
? ? case 1:sum=0;break;
? ? case 2:sum=31;break;
? ? case 3:sum=59;break;
? ? /***********SPACE***********/
? ? case 4:【?】;break;
? ? case 5:sum=120;break;
? ? case 6:sum=151;break;
? ? case 7:sum=181;break;
? ? case 8:sum=212;break;
? ? case 9:sum=243;break;
? ? case 10:sum=273;break;
? ? case 11:sum=304;break;
? ? case 12:sum=334;break;
? ? default:printf("data error");break;
? }
? /***********SPACE***********/
?【?】;
? /***********SPACE***********/
? if(year%400==0||(【?】)
? ? leap=1;
? else
? ? leap=0;
? /***********SPACE***********/
? if(【?】)
? ? sum++;
? printf("It is the %dth day.",sum);
}
答案:
? ?1). sum=90
? ?2). sum=sum+day 或 sum= sum + day
? ?3). year%4==0&&year%100!=0) 或 year%4 == 0 && year%100 != 0
? ?4). leap==1&&month>2 或 leap == 1 && month>2 或 leap == 1 && 2<month
第71題 (9.0分) ?題號:428
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入一個學生的生日(年:y0、月:m0、日:d0),并輸
? ? ? 入當前日期(年:y1、月:m1、日:d1)。求出該學生的
? ? ? 年齡(實足年齡)。
-------------------------------------------------------*/
#include <stdio.h>
main()
{int age,y0,y1,m0,m1,d0,d1;
?printf("輸入生日日期(年,月,日)");
/***********SPACE***********/
?【?】("%d,%d,%d",&y0,&m0,&d0);
?printf("輸入當前日期(年,月,日)");
?scanf("%d,%d,%d",&y1,&m1,&d1);
?age=y1-y0;
/***********SPACE***********/
?if(m0【?】m1)age--;
/***********SPACE***********/
?if((m0【?】m1)&&(d0>d1))age--;
?printf("age=%3d",age);
}
答案:
? ?1). scanf
? ?2). >
? ?3). ==
第72題 (9.0分) ?題號:464
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入一奇數n,打印由1->n*n構成的魔方矩陣。魔方矩陣的
? ? ? 行列及對角線的和都相等。
? ? ? 魔方矩陣:8 1 6
? ? ? ? ? ? ? ? 3 5 7
? ? ? ? ? ? ? ? 4 9 2
-------------------------------------------------------*/
#include ?<stdio.h>
#include ?<stdlib.h>
#define ? MAXSIZE ? 20
void main(void)
{
? int ?matrix[MAXSIZE][MAXSIZE];?
? int ?count; ? ? ? ? ? ? ? ? ? ?
? int ?row; ? ? ? ? ? ? ? ? ? ? ?
? int ?column; ? ? ? ? ? ? ? ? ??
? int ?n; ? ? ? ? ? ? ? ? ? ?
? char line[100];
? printf("\nOdd n Magic Square Generator");
? printf("\n================================");
? printf("\n\nn Please --> ");
? gets(line);
? n = atoi(line);
? if (n > MAXSIZE)
? ? printf("\n*** ERROR *** ?n should be <= %d", MAXSIZE);
? else if (n % 2 == 0)
? ? printf("\n*** ERROR *** ?n must be an odd integer");
? else?
? {
? ? row ? ?= 0; ? ? ? ??
? ? column = n/2; ??
? ? for (count = 1; count <= n*n; count++)?
? ? {
? ? ? matrix[row][column] = count;?
? ? ? /***********SPACE***********/
? ? ? if (【?】 == 0) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? row++; ? ?
? ? ? else?
? ? ? { ? ? ? ??
? ? ? ? /***********SPACE***********/
? ? ? ? row= (row == 【?】) ? n - 1 : row - 1; ? ? ? ? ? ? ? ?
? ? ? ? /***********SPACE***********/
? ? ? ? column = (column == 【?】) ? 0 : column + 1; ? ? ? ?
? ? ? }
? ? }
? ? printf("\n\nMagic Square of n %d :\n\n", n);
? ? for (row = 0; row < n; row++)?
? ? {
? ? ? for (column = 0; column < n; column++)
? ? ? ? printf("%4d", matrix[row][column]);
? ? ? printf("\n");
? ? }
? }
}
答案:
? ?1). count % n
? ?2). 0
? ?3). n-1 或 n -1
第73題 (9.0分) ?題號:421
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入學生成績并顯示。
-------------------------------------------------------*/
# include <stdio.h>
struct student
{
? char number[6];
? char name[6];
? int ?score[3];
} stu[2];
void output(struct student stu[2]);
void main()
{
? int i, j;
? /***********SPACE***********/
? for(i=0; i<2; 【?】)
? {
? ? printf("請輸入學生%d的成績:\n", i+1);
? ? printf("學號:");
? ? /***********SPACE***********/
? ? scanf("%s", 【?】.number);
? ? printf("姓名:");
? ? scanf("%s", stu[i].name);
? ? for(j=0; j<3; j++)
? ? {
? ? ? printf("成績 %d. ?", j+1);
? ? ? /***********SPACE***********/
? ? ? scanf("%d", 【?】.score[j]);
? ? }
? ? printf("\n");
? }
? output(stu);
}
void output(struct student stu[2])
{
? int i, j;
? printf("學號 ?姓名 ?成績1 ?成績2 ?成績3\n");
? for(i=0; i<2; i++)
? {
? /***********SPACE***********/
? 【?】("%-6s%-6s", stu[i].number, stu[i].name);
? for(j=0; j<3; j++)
? ? printf("%-8d", stu[i].score[j]);
? ? printf("\n");
? }
}
答案:
? ?1). i++ 或 ++i 或 i=i+1
? ?2). &stu[i]
? ?3). &stu[i]
? ?4). printf
第74題 (9.0分) ?題號:463
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入一正整數n、打印1-n能夠組成的所有自然數集合
? ? ?(包含空集)。
-------------------------------------------------------*/
#include ?<stdio.h>
#include ?<stdlib.h>
#define ? MAXSIZE ? ? ?20
#define ? LOOP ? ? ? ? ?1
void main(void)
{
? int ?set[MAXSIZE];
? int ?n, i;
? int ?position;
? char line[100];
? printf("\nAll Possible Subsets Generation by Lexical Order");
? printf("\n================================================");
? printf("\n\nNumber of Elements in the Set --> ");
? gets(line);
? n = atoi(line);
? printf("\n{}");
? position ? ? ?= 0;
? set[position] = 1;
? while (LOOP)?
? {
? ? /***********SPACE***********/
? ? printf("\n{%d", 【?】); ? ? ? ? ? ? ? ? ? ? ? ?
? ? for (i = 1; i <= position; i++)
? ? ? printf(",%d", set[i]);
? ? printf("}");
? ? if (set[position] < n)?
? ? {
? ? ? /***********SPACE***********/
? ? ? set[【?】] = set[position] + 1; ? ? ? ?
? ? ? position++;
? ? }
? ? else if (position != 0)
? ? ? set[--position]++;
? ? else
? ? /***********SPACE***********/
? ? ? 【?】;
? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}
答案:
? ?1). set[0]
? ?2). position+1
? ?3). break
第75題 (9.0分) ?題號:426
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:百馬百擔問題:有100匹馬,馱100擔貨,大馬馱三擔,中
? ? ? 馬馱2擔,兩匹小馬馱一擔,求大、中、小馬各多少匹?
-------------------------------------------------------*/
#include <stdio.h>
main()
{
? int hb,hm,hl,n=0;
? /***********SPACE***********/
? for(hb=0;hb<=100;hb+=【?】)
? ? /***********SPACE***********/
? ? for(hm=0;hm<=100-hb;hm+=【?】)
? ? {
? ? ? /***********SPACE***********/
? ? ? hl=100-hb-【?】;
? ? ? /***********SPACE***********/
? ? ? if(hb/3+hm/2+2*【?】==100)
? ? ? {
? ? ? ? n++;
? ? ? ? printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);
? ? ? }
? ? }
? printf("n=%d\n",n);
? getch();
}
答案:
? ?1). 3
? ?2). 2
? ?3). hm
? ?4). hl
第76題 (9.0分) ?題號:432
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:計算平均成績并統計90分以上人數。
-------------------------------------------------------*/
main()
{
? int n,m;float grade,average;
? /***********SPACE***********/
? average=n=m=【?】;
? while(1)
? {
? ? /***********SPACE***********/
? ?【?】("%f",&grade);
? ? if(grade<0) break;
? ? n++;
? ? average+=grade;
? ? /***********SPACE***********/
? ? if(grade<90)【?】;
? ? m++;
? }
? if(n) printf("%.2f%d\n",average/n,m);
}
答案:
? ?1). 0
? ?2). scanf
? ?3). continue
第77題 (9.0分) ?題號:19
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:是將兩個字符串連接為一個字符串,不許使用庫函數strcat。
-------------------------------------------------------*/
#include "stdio.h"
#include "string.h"
main ( )
{
? char str1[80],str2[40];
? int i,j,k;
? gets(str1);gets(str2);
? puts(str1);puts(str2);
? /***********SPACE***********/
? 【?】;
? puts(str1);
}
JOIN(s1,s2)
char s1[80],s2[40];
{
? int i,j;
? /***********SPACE***********/
? 【?】;
? /***********SPACE***********/
? for (i=0; 【?】'\0';i++)
? ? ?s1[i+j]=s2[i];
? /***********SPACE***********/
? s1[i+j]= 【?】 ?;
}
答案:
? ?1). JOIN(str1,str2)
? ?2). j=strlen(s1) 或 for(j=0;s1[j]!='10';j++); 或 for(j=0;s1[j];j++);
? ?3). s2[i]!= 或 *(s2 + i)!=
? ?4). '\0' 或 NULL 或 0
第78題 (9.0分) ?題號:483
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:對數組 A 中的N( 0 <N<100)個整數從小到大進行連續編
? ? ? 號,輸出各個元素的編號。要求不能改變數組A中元素的
? ? ? 順序,且相同的整數要具有相同的編號。
例如:數組是: A=(5,3,4,7,3,5,6)
? ? ? 則輸出為:(3,1,2,5,1,3,4)
-------------------------------------------------------*/
main()?
{
? int i,j,k,n,m=1,r=1,a[2][100]={0} ;
? printf("Please enter n:") ;
? scanf("%d",&n) ;
? for(i=0 ; i<n ; i++)
? {
? ? printf("a[%d]= ",i) ;
? ? scanf("%d",&a[0][i]) ;
? }?
? /***********SPACE***********/
? while(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? {
? ? for(i=0 ; i<n ; i++)
? ? ? if(a[1][i]==0)
? ? ? ? /***********SPACE***********/ ? ? ? ?
? ? ? ? 【?】 ; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? k=i ;
? ? for(j=i ; j<n ; j++)
? ? /***********SPACE***********/
? ? if(a[1][j]==0 && a[0][j]<a[0][k]) 【?】 ; ? ? ? ??
? ? a[1][k]=r++ ;
? ? m++ ;
? ? for(j=0 ; j<n ; j++)
? ? ? if(a[1][j]==0 && a[0][j]==a[0][k])?
? ? ? {
? ? ? ? a[1][j]=a[1][k] ;
? ? ? ? m++ ;
? ? ? }?
? }
? for(i=0 ; i<n ; i++)
? ? printf("a[%d]=%d, %d\n",i,a[0][i],a[1][i]) ;
}?
答案:
? ?1). m<n 或 n>m
? ?2). break
? ?3). k=j
第79題 (9.0分) ?題號:465
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入顏色字符串包含b、w、r,分別代表BLUE,WHITE,RED
顏色。重新整理字符串,變為bbb....www...rrr形式。
如:輸入: bwwrbbrr
? ? ? 整理后輸出:bbbwwrrr
-------------------------------------------------------*/
#include ?<string.h> ? ? ? ? ? ? ? ? ? ? ?
#define ? BLUE ? ?'b'
#define ? WHITE ? 'w'
#define ? RED ? ? 'r'
#define ? SWAP(x, y) ?{ ?char temp; ? ? ? ? ? ?\
? ? ? ? ? ? ? ? ? ? ? ? ?temp ? ? = color[x]; ?\
? ? ? ? ? ? ? ? ? ? ? ? ?color[x] = color[y]; ?\
? ? ? ? ? ? ? ? ? ? ? ? ?color[y] = temp; ? ? ?\
? ? ? ? ? ? ? ? ? ? ? }
void ?dutch_flag(char color[])
{
? int ?white = 0;
? int ?blue ?= 0;
? int ?red ? = strlen(color) - 1;
? while (white <= red) ? ??
? ? if (color[white] == WHITE)?
? ? ? white++; ? ? ??
? ? else if (color[white] == BLUE)
? ? {
? ? ? /***********SPACE***********/
? ? ? SWAP(【?】); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? blue++, white++;?
? ? }
? ? else?
? ? { ? ? ? ? ? ? ?
? ? ? /***********SPACE***********/
? ? ? while (【?】 && color[red] == RED) ? ? ? ?
? ? ? red--; ? ?
? ? ? /***********SPACE***********/
? ? ? SWAP(【?】); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? red--; ? ? ? ?
? ? }
}
#include ?<stdio.h>
#define ? MAXSIZE ?100
void main(void)
{
? char ?flag[MAXSIZE];
? printf("\nDutch National Flag Problem");
? printf("\n===========================");
? printf("\n\nInput a String of Color Tokens (b, w and r)\n");
? gets(flag);
? dutch_flag(flag);
? printf("\nRearranged Flag is :");
? printf("\n%s", flag);
}
答案:
? ?1). blue, white
? ?2). white<red 或 red>white
? ?3). red, white
第80題 (9.0分) ?題號:445
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:編程求任意給定的n個數中的奇數的連乘積,偶數的平方和
? ? ? 以及0的個數,n通過scanf()函數輸入。
-------------------------------------------------------*/
main()
{
? int r=1,s=0,t=0,n,a,i;
? printf("n=");scanf("%d",&n);
? for(i=1;i<=n;i++)
? {
? ? printf("a=");
? ? /***********SPACE***********/
? ? scanf("%d",【?】);
? ? /***********SPACE***********/
? ? if(【?】!=0)
? ? ? /***********SPACE***********/
? ? ? 【?】=a;
? ? else if(a!=0)
? ? ? /***********SPACE***********/
? ? ? s+=【?】;
? ? else
? ? ? t++;
? }
? printf("r=%d,s=%d,t=%d\n",r,s,t);
}
答案:
? ?1). &a
? ?2). a%2
? ?3). r*
? ?4). a*a
第81題 (9.0分) ?題號:14
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸出100到1000之間的各位數字之和能被15整除的所有數,
? ? ? 輸出時每10個一行。
-------------------------------------------------------*/
main()
{
? int m,n,k,i=0;
? for(m=100;m<=1000;m++)
? {
? ? /***********SPACE***********/
? ? 【?】;
? ? n=m;
? ? do
? ? {
? ? ?/***********SPACE***********/
? ? ? ?k=k+【?】 ;
? ? ? ?n=n/10;
? ? ?}
? ? ?/***********SPACE***********/
? ? ?【?】;
? ? ?if (k%15==0)
? ? ?{
? ? ? ? printf("%5d",m);i++;
? ? ? ? /***********SPACE***********/
? ? ? ? if(i%10==0) 【?】;
? ? ? }
? ?}
}
答案:
? ?1). k=0
? ?2). n%10 或 n-n/10*10 或 n-10*(n/10)
? ?3). while(n>0) 或 while(0<n) 或 while(n!=0) 或 while(0!=n)
? ?4). printf("\n")
第82題 (9.0分) ?題號:7
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從鍵盤上輸入一個字符串, 將該字符串升序排列后輸出到
? ? ? 文件test.txt中,然后從該文件讀出字符串并顯示出來。
-------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{?
? ?FILE ?*fp;
? ?char t,str[100],str1[100]; ? ?int n,i,j;
? ?if((fp=fopen("test.txt","w"))==NULL)
? ?{?
? ? ? ?printf("can't open this file.\n");
? ? ? ?exit(0);
? ?}
? ?printf("input a string:\n"); gets(str);
? ?/***********SPACE***********/
? ?【?】;
? ?/***********SPACE***********/
? ?for(i=0; 【?】 ;i++)
? ? ?for(j=0;j<n-i-1;j++)
? ? ?/***********SPACE***********/
? ? ?if(【?】)
? ? ?{
? ? ? ? t=str[j];
? ? ? ? str[j]=str[j+1];
? ? ? ? str[j+1]=t;?
? ? ? }
? ?/***********SPACE***********/
? 【?】;?
? ?fclose(fp);
? ?fp=fopen("test.txt","r");
? ?fgets(str1,100,fp);
? ?printf("%s\n",str1);
? ?fclose(fp); ? ?
}
答案:
? ?1). n=strlen(str) 或 for(n=0;str[n]!='\0';n++) 或 for(n=0;str[n];n++) 或 for(n=0;str[n]!=0;n++)
? ?2). i<n 或 n>i 或 i<-1+n 或 i<n-1 或 n-1>i 或 -1+n>i 或 i<=n-1 或 n-1>=i 或 -1+n>=i
? ?3). str[j]>str[ j + 1 ] 或 str[ j + 1 ]<str[j] 或 str[j+1]<str[j] 或 str[j+1]<=str[j]
? ?4). fputs(str,fp) 或 fprintf(fp,"%s\n",str) 或 fprintf(fp,"%s",str)
第83題 (9.0分) ?題號:416
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:計算個人與各科平均成績及全班平均成績,并在屏幕上顯
? ? ? 示出來。
-------------------------------------------------------*/
#define M 5 ? /*定義符號常量 人數為5*/
#define N 4 ? /*定義符號常量 課程為4*/
#include "stdio.h"
main()
{
? int i,j;
? void aver(float sco[M+1][N+1]);
? static float score[M+1][N+1]={{78,85,83,65}, {88,91,89,93}, {72,65,54,75},{86,88,75,60},{69,60,50,72}};
? aver(score); ? ? ? ? ? ? ?
? clrscr();
? printf("學生編號 ?課程1 ? 課程2 ? 課程3 ? 課程4 ? 個人平均\n");
? for(i=0;i<M;i++)
? {
? ? printf("學生%d\t",i+1);
? ? /***********SPACE***********/
? ? for(j=0;j<【?】;j++)
? ? ? printf("%6.1f\t",score[i][j]);
? ? printf("\n");
? }
? for(j=0;j<8*(N+2);j++)
? ? printf("-"); ? ?
? printf("\n課程平均");
? for(j=0;j<N+1;j++) ?
? ? printf("%6.1f\t",score[i][j]);
? printf("\n");
? getch();
}
void aver(float sco[][N+1]) ? ? ? ? ??
{
? int i,j;
? /***********SPACE***********/
? for(i=0;i<【?】;i++)
? {
? ? for(j=0;j<N;j++)
? ? {
? ? ? sco[i][N] += sco[i][j];
? ? ? sco[M][j] += sco[i][j]; ? ?
? ? ? sco[M][N] += sco[i][j]; ??
? ? }
? ? /***********SPACE***********/
? ? sco[i][N] 【?】 N;
? }
? for(j=0;j<N;j++) ?
? /***********SPACE***********/
? ? sco[M][【?】] /= M;?
? sco[M][N]=sco[M][N]/M/N; ??
}
答案:
? ?1). N+1 或 1+N 或 5
? ?2). M 或 5
? ?3). /=
? ?4). j
第84題 (9.0分) ?題號:472
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:現有兩組有序數組(增序),x[i]、y[j]代表數組x、y的
? ? ? 任一元素,問滿足x[i]>y[i]的元素對有多少個?
-------------------------------------------------------*/
int ?dominance_count(int f[], int g[], int m, int n)
{
? int ?index_f, index_g;
? int ?count;
? count = index_f = index_g = 0;
? while (index_f < m && index_g < n)
? ? if (f[index_f] <= g[index_g])
? ? ? index_f++;
? ? else
? ? {
? ? ? index_g++;
? ? ? /***********SPACE***********/
? ? ? count += 【?】;
? ? } ? ? ? ? ? ? ? ? ? ? ? ?
? /***********SPACE***********/
?【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}
#include <stdio.h>
void main(void)
{
? int ?x[] = { ?1, ?6, ?8 ?};
? int ?nx ?= sizeof(x)/sizeof(int);
? int ?y[] = { ?4, ?5, ?7 ?};
? int ?ny ?= sizeof(y)/sizeof(int);
? int ?dominance_count(int [], int [], int, int), i;
? printf("\nDominance Count of two Increasing Arrays\n");
? printf("\n ?# ? Array 1 ? Array 2");
? printf("\n -- ? ------- ? -------");
? for (i = 0; i < nx; i++)
? ? printf("\n%3d%10d%10d", i, x[i], y[i]);
? printf("\n\nThere are %d Dominance Pairs.",?
?/***********SPACE***********/
?【?】); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}
答案:
? ?1). m - index_f 或 m ?- index_f
? ?2). return count
? ?3). dominance_count(x, y, nx, ny)
第85題 (9.0分) ?題號:400
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用結構體調用的方法編程。要求輸入A,B,C,D,E,F五
? ? ? 個元素的數值,并按從大到小的順序輸出。
-------------------------------------------------------*/
#define N sizeof tbl/sizeof tbl[0] ?/*取得數組有多少個元素*/
int A,B,C,D,E,F;
struct ele
{
? char vn;
? /***********SPACE***********/
? int 【?】; ?
}tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D},{'E',&E},{'F',&F}},t;
main()
{
? int k,j,m;
? /***********SPACE***********/
? for(k=0;k<【?】;k++)
? {
? ? printf("Enter data for %c\n",tbl[k].vn);
? ? scanf("%d",tbl[k].vp);
? }
? m=N-1;
? while(m>0)
? {
? ? for(k=j=0;j<m;j++)
? ? ? /***********SPACE***********/
? ? ? if(*tbl[j].vp<【?】)?
? ? ? {
? ? ? ? t=tbl[j];
? ? ? ? tbl[j]=tbl[j+1];
? ? ? ? tbl[j+1]=t;
? ? ? ? k=j;
? ? ? }
? ? /***********SPACE***********/
? ? 【?】;?
? }
? for(k=0;k<N;k++)
? ? printf("%c(%d)",tbl[k].vn,*tbl[k].vp);
? printf("\n");
? getch();
}
答案:
? ?1). *vp
? ?2). N
? ?3). *tbl[j+1].vp 或 *tbl[ j + 1 ].vp
? ?4). m=k
第86題 (9.0分) ?題號:417
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:利用全局變量計算長方體的體積及三個面的面積。
-------------------------------------------------------*/
int s1,s2,s3;
int vs(int a,int b,int c)
{
? int v;
? /***********SPACE***********/
? v=【?】;
? s1=a*b;
? /***********SPACE***********/ ?
? s2=【?】;
? s3=a*c;
? return ?v;
}
main()
{
? int v,l,w,h;
? clrscr();
? printf("\ninput length,width and height: ");
? /***********SPACE***********/
? scanf("%d%d%d",【?】,&w,&h);
? /***********SPACE***********/
? v=【?】;
? printf("v=%d ? ?s1=%d ? ?s2=%d ? ?s3=%d\n",v,s1,s2,s3);
? getch();
}
答案:
? ?1). a*b*c 或 a * b * c
? ?2). b*c 或 b * c
? ?3). &l
? ?4). vs(l,w,h) 或 vs( l , w , h )
第87題 (9.0分) ?題號:405
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:要求輸出結果為:
? ? ? A,B
? ? ? 65,66
-------------------------------------------------------*/
#include<stdio.h>
void main()
{
? /***********SPACE***********/
? char a,【?】;
? /***********SPACE***********/
? a=【?】;
? b='b';
? a=a-32;
? /***********SPACE***********/
? b=b-【?】;
? printf("%c, %c\n%d,%d\n",a,b,a,b);
}
答案:
? ?1). b
? ?2). 'a' 或 97
? ?3). 32
第88題 (9.0分) ?題號:430
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:計算一元二次方程的根。
-------------------------------------------------------*/
#include <stdio.h>
/***********SPACE***********/
#include 【?】
main()
{
? float a,b,c,disc,x1,x2,realpart,imagpart;
? scanf("%f%f%f",&a,&b,&c);
? printf("the equation");
? /***********SPACE***********/
? if(【?】<=1e-6)
? ? printf("is not quadratic\n");
? else
? ? disc=b*b-4*a*c;
? if(fabs(disc)<=1e-6)
? ? printf("has two equal roots:%-8.4f\n",-b/(2*a));
? /***********SPACE***********/
? else if(【?】)
? {
? ? x1=(-b+sqrt(disc))/(2*a);
? ? x2=(-b-sqrt(disc))/(2*a);
? ? printf("has distinct real roots:%8.4f and %.4f\n",x1,x2);
? }
? else
? {
? ? realpart=-b/(2*a);
? ? imagpart=sqrt(-disc)/(2*a);
? ? printf("has complex roots:\n");
? ? printf("%8.4f=%.4fi\n",realpart,imagpart);
? ? printf("%8.4f-%.4fi\n",realpart,imagpart);
? }
}
答案:
? ?1). <math.h>
? ?2). fabs(a)
? ?3). fabs(disc) ?> 1e-6 或 1e-6 <fabs(disc)
第89題 (9.0分) ?題號:437
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:建立一個如下的二維數組,并按以下格式輸出。
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
-------------------------------------------------------*/
#include "stdio.h"
void main()
{
?int a[5][5]={0},*p[5],i,j;
?for(i=0;i<5;i++)
?/***********SPACE***********/
? ? p[i]=【?】;
?for(i=0;i<5;i++)
?{
? ? /***********SPACE***********/
? ? *(【?】+i)=1;
? ? /***********SPACE***********/
? ? *(p[i]+5-(【?】))=1;
? }
? for(i=0;i<5;i++)
? {
? ? for(j=0;j<5;j++)printf("%2d",p[i][j]);
? ? ? /***********SPACE***********/
? ? ? 【?】;
? }
}
答案:
? ?1). &a[i][0]
? ?2). p[i]
? ?3). i+1 或 1+i
? ?4). putchar('\n');
第90題 (9.0分) ?題號:3
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:已定義一個含有30個元素的數組s,函數fun1的功能是按
? ? ? 順序分別賦予各元素從2開始的偶數,函數fun2則按順序
? ? ? 每五個元素求一個平均值, 并將該值存放在數組w中。
-------------------------------------------------------*/
float s[30],w[6];
fun1(float s[])
{
? int k,i;
? for(k=2,i=0;i<30;i++)
? {
? ? ?/***********SPACE***********/
? ? ?【?】 ;
? ? ?k+=2;
? }
}
fun2(float s[],float w[])
{
? float sum=0.0;
? int k,i;
? for(k=0,i=0;i<30;i++)
? {
? ? ?sum+=s[i];
? ? ?/***********SPACE***********/
? ? ?【?】;
? ? ?{?
? ? ? ? w[k]=sum/5;
? ? ? ? /***********SPACE***********/
? ? ? ? 【?】 ;
? ? ? ? k++;
? ? ?}
? }
}
main()
{
? ?int i;
? ?fun1(s);
? ?/***********SPACE***********/
? ?【?】;
? ?for(i=0;i<30;i++)
? ?{
? ? ?if(i%5==0) printf("\n");
? ? ? ?printf("%8.2f",s[i]);
? ?}
? ?printf("\n");
? ?for(i=0;i<6;i++)
? ?printf("%8.2f",w[i]);
}
答案:
? ?1). s[i]=k 或 s[i]=(i+1)*2
? ?2). if( ( i + 1 )%5 == 0 ) 或 if( ( i + 1 )/5*5 ==i+1)
? ?3). sum=0 或 sum=0.0
? ?4). fun2(s,w)
第91題 (9.0分) ?題號:402
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸入三個整數x,y,z,請把這三個數由小到大輸出。
-------------------------------------------------------*/
main()
{
? int x,y,z,t;
? scanf("%d%d%d",&x,&y,&z);
? /***********SPACE***********/
? if (x>y){【?】}
? /***********SPACE***********/
? if(x>z){【?】}
? /***********SPACE***********/
? if(y>z){【?】}
? printf("small to big: %d %d %d\n",x,y,z);
}
答案:
? ?1). t=x;x=y;y=t;
? ?2). t=z;z=x;x=t;
? ?3). t=y;y=z;z=t;
第92題 (9.0分) ?題號:410
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:有n個整數,使其前面各數順序向后移m個位置,最后m個數
? ? ? 變成最前面的m個數
-------------------------------------------------------*/
main()
{
? int number[20],n,m,i;
? printf("the total numbers is:");
? scanf("%d",&n);
? printf("back m:");
? scanf("%d",&m);
? for(i=0;i<n-1;i++)
? ? scanf("%d,",&number[i]);
? scanf("%d",&number[n-1]);
? /***********SPACE***********/
? move(【?】);
? for(i=0;i<n-1;i++)
? ? printf("%d,",number[i]);
? printf("%d",number[n-1]);
}
/***********SPACE***********/
move(【?】)
int n,m,array[20];
{
? int *p,array_end;
? /***********SPACE***********/
? array_end=*(【?】);
? for(p=array+n-1;p>array;p--)
? ? /***********SPACE***********/
? ? *p=*(【?】);
? *array=array_end;
? m--;
? if(m>0) move(array,n,m);
}
答案:
? ?1). number,n,m
? ?2). array,n,m
? ?3). array+n-1 或 array + n -1
? ?4). p-1 或 p -1
第93題 (9.0分) ?題號:427
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:百雞問題:100元買100只雞,公雞一只5元錢,母雞一只3
? ? ? 元錢,小雞一元錢三只,求100元錢能買公雞、母雞、小雞
? ? ? 各多少只?
-------------------------------------------------------*/
#include <stdio.h>
main()
{
? int cocks,hens,chicks;
? cocks=0;
? while(cocks<=19)
? {
? /***********SPACE***********/
? ?【?】=0;
? ? /***********SPACE***********/
? ? while(hens<=【?】)
? ? {
? ? ? chicks=100.0-cocks-hens;
? ? ? if(5.0*cocks+3.0*hens+chicks/3.0==100.0)
? ? ? ? ?printf("%d,%d,%d\n",cocks,hens,chicks);
? ? ? /***********SPACE***********/
? ? ?【?】;
? ? }
? ? /***********SPACE***********/
? ? 【?】;
? }?
}
答案:
? ?1). hens
? ?2). 33
? ?3). hens++ 或 ++hens 或 hens=hens+1
? ?4). cocks++ 或 ++cocks 或 cocks=cocks+1 或 cocks= cocks + 1
第94題 (9.0分) ?題號:454
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:三角形的面積為:area=sqrt(s*(s-a)*(s-b)*(s-c)).其中
? ? ? ,s=(a+b+c)/2,a、b、c為三角形三條邊的長。定義兩個帶
? ? ? 參數的宏,一個用來求s,另一個用來求area。編寫程序,
? ? ? 在程序中用帶參數的宏求面積area。
-------------------------------------------------------*/
#include "math.h"
/***********SPACE***********/
#【?】 S(x,y,z)(x+y+z)/2
#define AREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z))
main()
{
? float a,b,c,s,area;
? printf("a,b,c=");
? /***********SPACE***********/
? scanf("%f,%f,%f",&a,【?】,&c);
? if(a+b>c&&b+c>a&&c+a>b)
? {
? ? /***********SPACE***********/
? ? s=【?】;
? ? /***********SPACE***********/
? ? area=【?】;
? ? printf("area=%f\n",area);
? }
}
答案:
? ?1). define
? ?2). &b
? ?3). S(a,b,c)
? ?4). AREA(s,a,b,c)
第95題 (9.0分) ?題號:436
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸出兩個整數中大的那個數,兩個整數由鍵盤輸入。
-------------------------------------------------------*/
#include "stdio.h"
void main()
{
? int a,b,*p1,*p2;
? /***********SPACE***********/
? p1=【?】malloc(sizeof(int));
? p2=(int*)malloc(sizeof(int));
? /***********SPACE***********/
? scanf("%d%d",【?】,p2);
? if(*p2>*p1) *p1=*p2;
? free(p2);
? /***********SPACE***********/
? printf("max=%d\n",【?】);
}
答案:
? ?1). (int *)
? ?2). p1
? ?3). *p1
第96題 (9.0分) ?題號:29
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:下面函數為二分法查找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;
? if(key<a[mid])?
? ? /***********SPACE***********/
? ? 【?】;
? else if(key>a[mid])?
? /***********SPACE***********/
? 【?】;
? else ?
? ? /***********SPACE***********/
? ? 【?】;
? }
? 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)
第97題 (9.0分) ?題號:423
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:考查字符串數組的應用。輸出26個英文字母。
-------------------------------------------------------*/
#include <stdio.h>
void main (void)
{
? 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
? ?2). 'A' + i 或 i+'A' 或 65 + i 或 i+65
? ?3). string
第98題 (9.0分) ?題號:485
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能: 統計子字符串substr在字符串str中出現的次數。
例如:若字符串為"aaas lkaaas",子字符串為"as",則應輸出2。
? ? ? 若字符串為"asasasa",子字符串為"asa",則應輸出3
-------------------------------------------------------*/
#include <stdio.h>
fun (char *substr,char *str)
{ ?
? int i,j,k,num=0;
? for(i=0; str[i]; i++)
? ? for(j=i,k=0;substr[k]==str[j];k++,j++)
? ? ? /***********SPACE***********/
? ? ? if(substr[【?】]=='\0') ? ? ? ? ? ? ? ?
? ? ? {
? ? ? ? num++;
? ? ? ? /***********SPACE***********/
? ? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? }
? return num;
}
main()
{
? char str[80],substr[80];
? printf("Input a string:") ;
? gets(str);
? printf("Input a substring:") ;
? gets(substr);
? /***********SPACE***********/
? printf("%d\n",【?】); ? ? ? ?
}
答案:
? ?1). k + 1
? ?2). break
? ?3). fun(substr,str)
第99題 (9.0分) ?題號:33
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:以下程序的功能如(圖1)。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
/***********SPACE***********/
double ?f(【?】)
{ ?
? /***********SPACE***********/
? 【?】;?
? /***********SPACE***********/
? if (【?】)
? ? y=2.0*x*x+3.0*x+4.0;
? else
? ? y=-2.0*x*x+3.0*x-4.0;
/***********SPACE***********/
?【?】;
}
main ( )
{ ?
? clrscr( );
? printf("%f\n", f(f(-1.0)+f(5.0)));
}
答案:
? ?1). float x 或 double x
? ?2). double y
? ?3). x<=2 或 2>=x
? ?4). return y 或 return (y)
第100題 (9.0分) ?題號:434
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:要求輸出如下結果:
? ? ? b=-1 ?a=65535
? ? ? a=65534
? ? ? a=30 b=6 c=5
? ? ? 按要求在空中填入合適的變量完善程序。
-------------------------------------------------------*/
main()
{
? /***********SPACE***********/
? int b=-1,【?】;unsigned a;
? /***********SPACE***********/
? a=【?】;
? printf("b=%d a=%u\n",b,a);
? /***********SPACE***********/
? 【?】+=b;
? printf("a=%u\n",a);
? /***********SPACE***********/
? b=(a=30)/【?】;
? printf("a=%d b=%d c=%d\n",a,b,c);
}
答案:
? ?1). c
? ?2). b
? ?3). a
? ?4). (c=5)
第101題 (9.0分) ?題號:418
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用函數調用方式,實現字符串的復制。
-------------------------------------------------------*/
void string_copy(char *str_from, char *str_to)
{
? int i=0;
? /***********SPACE***********/
? for(; (*(【?】)=*(str_from+i))!='\0'; i++) ;
}
main()
{
? static char array_str1[20]="I am a teacher.";
? char array_str2[20];
? /***********SPACE***********/
? 【?】(array_str1, array_str2);
? /***********SPACE***********/
? 【?】("array_str2=%s\n",array_str2);
}
答案:
? ?1). str_to+i 或 i+str_to
? ?2). string_copy
? ?3). printf
第102題 (9.0分) ?題號:35
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:計算并輸出high以內最大的10個素數之和,high由主函數傳
? ? ? 給fun函數,若high的值為100,則函數的值為732。
-------------------------------------------------------*/
#include <conio.h>
#include <stdio.h>
#include <math.h>
int fun( int ?high )
{?
? int sum = 0, ?n=0, ?j, ?yes;
? /***********SPACE***********/
? while ((high >= 2) && (【?】))
? { ?
? ? yes = 1;
? ? for (j=2; j<=high/2; j++ )
? ? ? /***********SPACE***********/
? ? ? if (【?】)
? ? ? {
? ? ? ? yes=0;
? ? ? ? break;
? ? ? }
? ? ? if (yes)
? ? ? {
? ? ? ? sum +=high;?
? ? ? ? n++;?
? ? ? }
? ? ?high--;
? }
? /***********SPACE***********/
? 【?】;
}
main ( )
{ ?
? ?clrscr( );
? ?printf("%d\n", fun (100));
}
答案:
? ?1). n<10 或 10>n
? ?2). high%j == 0 或 !(high%j)
? ?3). return ?sum 或 return ?(sum)
第103題 (9.0分) ?題號:4
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:下面的程序是求1!+3!+5!+……+n!的和。
-------------------------------------------------------*/
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++
? ?3). j<=i 或 i>=j 或 j<i+1 或 i+1>j
? ?4). f= f * j?
第104題 (9.0分) ?題號:22
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:打印以下圖形。
*****
?*****
? *****
? ?*****
? ? *****
-------------------------------------------------------*/
?
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")
第105題 (9.0分) ?題號:23
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:求一個二維數組中每行的最大值和每行的和。
-------------------------------------------------------*/
#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]
第106題 (9.0分) ?題號:17
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:刪除字符串中的指定字符,字符串和要刪除的字符均由鍵盤
? ? ? 輸入。
-------------------------------------------------------*/
#include "stdio.h"
main()
{
? char str[80],ch;
? int i,k=0;
? /***********SPACE***********/
? gets(【?】);
? ch=getchar();
? /***********SPACE***********/
? for(i=0;【?】;i++)
? ? if(str[i]!=ch)?
? ? {
? ? ? ?/***********SPACE***********/
? ? ? ?【?】;
? ? ? ? k++;
? ? }
? /***********SPACE***********/
? 【?】;
? puts(str);
?}
答案:
? ?1). str
? ?2). str[i]!='\0' 或 str[i]!=NULL 或 str[i]!=0 或 str[i]
? ?3). str[k]=str[i] 或 *(str+k)=*(str+i) 或 str[k]=*(str+i) 或 *(str+k)=str[i]
? ?4). str[k]='\0' 或 *(str+k)='\0' 或 str[k]=NULL 或 str[k]=0 或 *(str+k)=0 或 *(str+k)=NULL
第107題 (9.0分) ?題號:31
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用冒泡法對數組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
? ?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)
第108題 (9.0分) ?題號:489
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:h_sequence 是一組由0和1組成的數列,它定義如下:
? ? ? <h-seq> = 0
? ? ? <h-seq> = 1 <h-seq> <h-seq>
? ? ? 利用函數檢測輸入的字符串是否是h_sequence數列
-------------------------------------------------------*/
#include ?<string.h>
#define ? YES ? ? 1
#define ? NO ? ? ?0
int ?h_sequence(char x[])
{
? /***********SPACE***********/
? int ?length = 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? int ?count;
? int ?i;
? for (count = 1, i = 0; count != 0 && i < length; i++)
? ? switch (x[i])?
? ? {
? ? ? case '0':count--;
? ? ? ? ? ? ? ?break;
? ? ? case '1':count++;
? ? ? ? ? ? ? ?break;
? ? ? default:return NO;
? ? }
? /***********SPACE***********/
? return 【?】&& i >= length; ? ? ? ? ? ? ? ? ? ? ? ?
}
#include ?<stdio.h>
void ?main(void)
{
? char ?line[100];
? printf("\n\nInput a string of 0 and 1 --> ");
? gets(line);
? /***********SPACE***********/
? if (【?】 == YES) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? printf("\n*** Input is a H sequence ***");
? else
? ?printf("\n*** Input is NOT a H sequence ***");
}
答案:
? ?1). strlen(x)
? ?2). count == 0
? ?3). h_sequence(line)
第109題 (9.0分) ?題號:448
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:已知X、Y、Z分別表示0~9中不同的數字,編程求出使算式
? ? ? XXXX+YYYY+ZZZZ=YXXXZ成立時X、Y、Z的值,并要求打印該
? ? ? 算式。
-------------------------------------------------------*/
main()
{
? int x,y,z;
? /***********SPACE***********/
? for(x=0;【?】;x++)
? ? for(y=0;y<10;y++)
? ? {
? ? ? if(y==x) continue;
? ? ? for(z=0;z<10;z++)
? ? ? {
? ? ? /***********SPACE***********/
? ? ? if(z==x【?】z==y) continue;
? ? ? /***********SPACE***********/
? ? ? if(1111*(x+y+z)==【?】+1110*x+z)
? ? ? {
? ? ? ? printf("x=%d,y=%d,z=%d\n",x,y,z);
? ? ? ? /***********SPACE***********/
? ? ? ? printf("%d+%d+%d=%d\n",1111*x,1111*y,1111*z,【?】);
? ? ? ? exit(0);
? ? ? }
? ? }
? }
}
答案:
? ?1). x<10 或 10>x
? ?2). ||
? ?3). 10000*y 或 y*10000
? ?4). 10000*y+1110*x+z 或 10000 * y + 1110 * x + z
第110題 (9.0分) ?題號:471
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:給出一個正整數,找到一組連續的數,使之累加和等于給
? ? ? 定的正整數。輸出存在多少組這樣連續的數,及每組的左
? ? ? 右邊界。
例如:15=1+2+3+4+5
? ? ? 15=4+5+6
? ? ? 15=7+8
? ? ? 所以結果有3組值分別是1->5, 4->6, 7->8
-------------------------------------------------------*/
#include ?<stdio.h>
#include ?<stdlib.h>
void main(void)
{
? long ?left, right;
? long ?sum;
? long ?GIVEN;
? int ? count = 0;
? char ?line[100];
? printf("\nConsecutive sum to a fixed given number");
? printf("\n=======================================\n");
? printf("\nYour number (> 0) please ---> ");
? gets(line);
? GIVEN = atol(line);
? for (sum = 0, right = 1; sum < GIVEN; sum += right, right++)
? ? ;
? for (left = 1, right--; left <= GIVEN/2; )
? ? if (sum > GIVEN)
? ? {
? ? ? sum -= left;
? ? ? /***********SPACE***********/
? ? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? }
? ? else?
? ? {
? ? ? ?if (sum == GIVEN)?
? ? ? ?{
? ? ? ? ?printf("\n%ld = sum from %ld to %ld",?
? ? ? ? ?GIVEN, left, right);
? ? ? ? ?/***********SPACE***********/
? ? ? ? ?【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ?}
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? sum += right;
? }
? if (count > 0)
? ? printf("\n\nThere are %d solutions in total.", count);
? else
? ? printf("\n\nSorry, there is NO solution at all.");
}
答案:
? ?1). left++ 或 left=left+1 或 ++left
? ?2). count++ 或 count=count++ 或 ++count 或 count=count+1
? ?3). right++ 或 right=right++ 或 ++right 或 right=right+1
第111題 (9.0分) ?題號:413
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用circle畫圓形。
-------------------------------------------------------*/
#include "graphics.h"
main()
{
? int driver,mode,i;
? float j=1,k=1;
? driver=VGA;mode=VGAHI;
? /***********SPACE***********/
? initgraph(【?】,&mode,"");
? setbkcolor(YELLOW);
? /***********SPACE***********/
? for(i=0;i<=25;【?】)
? {
? ? setcolor(8);
? ? circle(310,250,k);
? ? /***********SPACE***********/
? ? k=【?】;
? ? j=j+0.3;
? }
}?
答案:
? ?1). &driver
? ?2). k+j 或 j+k
? ?3). i++ 或 ++i 或 i=i+1
第112題 (9.0分) ?題號:446
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:編程求某年第n天的日期。用數組表示月天數。
-------------------------------------------------------*/
main()
{
? int y,m,f,n;
? int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
? printf("y,n=");
? scanf("%d,%d",&y,&n);
? /***********SPACE***********/
? f=y%4==0&&y%100!=0【?】y%400==0;
? /***********SPACE***********/
? a[1]【?】f;
? if(n<1||n>365+f)
? {
? ? printf("error!\n");exit(0);
? }
? /***********SPACE***********/
? for(m=1;m【?】a[m-1];n-=a[m-1],m++);
? ? printf("y=%d,m=%d,d=%d\n",y,m,n);
}
答案:
? ?1). ||
? ?2). += 或 =a+
? ?3). >
第113題 (9.0分) ?題號: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]
第114題 (9.0分) ?題號:12
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:產生并輸出如下形式的方陣。
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")
第115題 (9.0分) ?題號:24
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:對任一整數N(N≠0),它都可以分解成1(或-1)和一些質數(素
? ? ? 數)因子的形式。
例如:當N=150時,可分解成1×2×3×5×5;
? ? ? 當N=-150時,可分解為-1×2×3×5×5。
? ? ? 下邊程序能實現這種分解過程。當N=150,輸出以下分解結
? ? ? 果:N= ?1* ?2* ? 3* ? 5* ? 5
-------------------------------------------------------*/
main()
{?
? int n,i,j,r;
? scanf("%d",&n);
? if (n==0)
? {?
? ? printf ("data error \n");
? ? exit(0);
? }
? /***********SPACE***********/
? else if (【?】)?
? ? printf("n=1");
? else
? {?
? ? printf("n=-1");
? ? n=-n;
? }
? /***********SPACE***********/
? for(【?】;i<=n;i++) ? ? ? ? ??
? { ?
? ? /***********SPACE***********/
? ? 【?】 ?; ? ? ? ? ? ? ? ? ?
? ? while(r==0)
? ? {?
? ? ? printf("*%d",i);
? ? ? /***********SPACE***********/
? ? ? 【?】 ; ? ? ? ? ? ? ? ? ?
? ? ? r=n%i;
? ? }
? }
? printf("\n");
}
答案:
? ?1). n>0 或 0<n
? ?2). i=2
? ?3). r=n%i
? ?4). n=n/i 或 n/=i
第116題 (9.0分) ?題號:26
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:刪除一個字符串中的所有數字字符。
-------------------------------------------------------*/
#include "stdio.h"
void delnum(char *s)
{
? int i,j;
? /***********SPACE***********/
? for(i=0,j=0; 【?】'\0' ;i++)
? /***********SPACE***********/
? if(s[i]<'0'【?】 s[i]>'9')
? {
? ? /***********SPACE***********/
? ? 【?】;
? ? j++;
? }
? s[j]='\0';
}
main ()
{
? char *item;
? printf("\n input a string:\n");
? gets(item);
? /***********SPACE***********/
? 【?】;
? printf("\n%s",item);
}
答案:
? ?1). s[i]!= 或 *(s+i)!= 或 *(i+s)!=
? ?2). ||
? ?3). s[j]=s[i] 或 *(s+j)=*(s+i) 或 s[j]=*(s+i) 或 *(s+j)=s[i]
? ?4). delnum(item)
第117題 (9.0分) ?題號:11
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:求100-999之間的水仙花數
說明:水仙花數是指一個三位數的各位數字的立方和是這個數本身。
例如:153=1^3+5^3+3^3)。
-------------------------------------------------------*/
int fun(int n)
{ int i,j,k,m;
? m=n;
? /***********SPACE***********/
?【?】;
? for(i=1;i<4;i++)
? {?
? ? ?/***********SPACE***********/
? ? ?【?】;
? ? ?m=(m-j)/10;?
? ? ?k=k+j*j*j;?
? }
? if(k==n)?
? ? /***********SPACE***********/
? ? 【?】;
? else?
? ? return(0);}
main()
{ ?
? int i;
? for(i=100;i<1000;i++)
? ? /***********SPACE***********/
? if(【?】==1)
? ? printf("%d is ok!\n" ,i);
}
答案:
? ?1). k=0
? ?2). j=m%10 或 j=m-m/10*10 或 j=m-10*(m/10)
? ?3). return(1)
? ?4). fun(i)
第118題 (9.0分) ?題號:424
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:輸出結果為:
* * * * *
?* * * * *
? * * * * *
? ?* * * * *?
-------------------------------------------------------*/
main()
{
? /***********SPACE***********/
? static char 【?】={'*','*','*','*','*'};
? int i,j,k;
? char space=' ';
? for(i=0;i<5;i++)
? {
? ? printf("\n");
? ? /***********SPACE***********/
? ? for(j=1;j<=3*i;j++)
? ? ? printf("%1c",【?】);
? ? /***********SPACE***********/
? ? for(k=0;k<【?】;k++)
? ? ? printf("%3c",a[k]);
? }
? printf("\n");;
}
答案:
? ?1). a[5] 或 a[]
? ?2). space 或 ' '
? ?3). 5 或 =4
第119題 (9.0分) ?題號:460
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:有一整數數組x(正序排列),判斷是否有數組元素x[i]=i
? ? ? 的情況發生。
-------------------------------------------------------*/
int ?index_search(int x[], int n)
{
? int ?first = 0;
? int ?last ?= n-1;
? int ?middle, index;
? index = -1;
? while (first <= last)?
? {
? ? middle = (first + last) / 2;
? ? /***********SPACE***********/
? ? if (【?】)?
? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? index = middle;
? ? ? break;
? ? }
? ? /***********SPACE***********/
? ? else if (【?】) ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? last = middle - 1;
? ? else?
? ? ? first = middle + 1;
? }
? return index;
}
#include ?<stdio.h>
void main(void)
{
? int ?x[] = { -1, 0, 1, 3, 5, 7, 9, 10};
? int ?n ? = sizeof(x)/sizeof(int);
? int ?answer, i;
? printf("\nIndex Search Program");
? printf("\n====================");
? printf("\n\nGiven Array :");
? for (i = 0; i < n; i++)
? ? printf("%5d", x[i]);
? /***********SPACE***********/
? 【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? if (answer >= 0)
? ? printf("\n\nYES, x[%d] = %d has been found.", answer, answer);
? else
? ? printf("\n\nNO, there is no element with x[i] = i");
}
答案:
? ?1). x[middle] == middle
? ?2). x[middle] > middle 或 middle<x[middle]
? ?3). answer = index_search(x, n)
第120題 (9.0分) ?題號:429
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從讀入的整數數據中,統計大于零的整數個數和小于零的
? ? ? 整數個數。用輸入零來結束輸入,程序中用變量i統計大于
? ? ? 零的整數個數,用變量j統計小于零的整數個數。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
? int k,n,i,j;
? printf("Enter INT number,with 0 to end\n");
? i=j=0;
? scanf("%d",&n);
? while(n!=0)
?{
? ?/***********SPACE***********/
? ?if(n>0)i=【?】;
? ?/***********SPACE***********/
? ?if(n<0)j=【?】;
? ?/***********SPACE***********/
? ?scanf("%d",【?】);
?}
? printf("i=%4d\n",i,j);
}
答案:
? ?1). i + 1
? ?2). j + 1
? ?3). &n
第121題 (9.0分) ?題號:394
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:用條件編譯方法實現以下功能。輸入一行電報文字,可以任
? ? ? 選兩種方式輸出,一種為原文輸出;另一種將字母變成下
? ? ? 一個字母(如a變成b,C變成D,其他字符不變)輸出。
-------------------------------------------------------*/
#define CHANGE
main()
{
? /***********SPACE***********/
? char str[80],【?】=str;
? int k;
? printf("Input string:");
? /***********SPACE***********/
? gets【?】;
? printf("Output string:");
? #ifdef CHANGE
? ? for(;*s!='\0';s++)
? ? {
? ? ? if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
? ? ? {?
? ? ? ? (*s)++;
? ? ? ? if(*s>'Z'&&*s<'Z'+2)?
? ? ? ? /***********SPACE***********/
? ? ? ? ? 【?】;
? ? ? ? if(*s>'z')
? ? ? ? /***********SPACE***********/
? ? ? ? ? *s=【?】;
? ? ? ?}
? ? ?}
? ? ?printf("%s\n",str);
? #else
? ? printf("%s\n",str);
? #endif
}
答案:
? ?1). *s
? ?2). (str) 或 (s)
? ?3). *s='A'
? ?4). 'a'
第122題 (9.0分) ?題號:6
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:以下程序是用選擇法對10個整數按升序排序。
-------------------------------------------------------*/
/***********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
? ?4). ?k != i?
第123題 (9.0分) ?題號:92
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:將s所指字符串的正序和反序進行連接,形成一個新串放在t
? ? ? 所指的數組中。
例如:當s串為"ABCD"時,則t串的內容應為"ABCDDCBA"。?
-------------------------------------------------------*/
#include ?<conio.h>
#include ?<stdio.h>
#include ?<string.h>
void fun (char ?*s, char ?*t)
{
? int ? i, d;
? /***********SPACE***********/
? d = 【?】;
? /***********SPACE***********/
? for (i = 0; i<d; 【?】) ?
? ? t[i] = s[i];
? for (i = 0; i<d; i++) ?
? ? /***********SPACE***********/
? ? t[【?】] = s[d-1-i];
? /***********SPACE***********/
? t[【?】] ='\0';
}
main()
{
? char ?s[100], t[100];
? clrscr();
? printf("\nPlease enter string S:"); scanf("%s", s);
? fun(s, t);
? printf("\nThe result is: %s\n", t);
}
答案:
? ?1). strlen(s)
? ?2). i++ 或 i=i+1 或 i+=1 或 ++i
? ?3). d+i 或 i+d
? ?4). 2*d 或 d*2 或 i+d 或 d+i
第124題 (9.0分) ?題號:422
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:文件操作。
-------------------------------------------------------*/
# include <stdio.h>
# include <stdlib.h>
void main()
{
? /* 定義一個文件指針fp */
? /***********SPACE***********/
? 【?】 *fp;
? char ch, filename[10];
? printf("Please input the name of file: ");
? scanf("%s", filename); ?/* 輸入字符串并賦給變量filename */
? /* 以讀的使用方式打開文件filename */
? /***********SPACE***********/
? if((fp=fopen(filename, "【?】")) == NULL)
? {
? ? printf("Cannot open the file.\n");
? ? exit(0); ?/* 正常跳出程序 */
? }
? /* 關閉文件 */
? /***********SPACE***********/
?【?】;
}
答案:
? ?1). FILE
? ?2). r
? ?3). fclose(fp)
第125題 (9.0分) ?題號:15
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:分別求出一批非零整數中的偶數、奇數的平均值,用零作
? ? ? 為終止標記。
-------------------------------------------------------*/
main()
{
? int x,i=0,j=0;
? float s1=0,s2=0,av1,av2;
? scanf("%d",&x);
? /***********SPACE***********/
? while(【?】)
? {
? ? ?if(x%2==0) {s1=s1+x;i++;}
? ? ?/***********SPACE***********/
? ? ?【?】
? ? ?{
? ? ? ? s2=s2+x;
? ? ? ? j++;
? ? ?}
? ? ?/***********SPACE***********/
? ? ?【?】;
? ?}
? ?if(i!=0)?
? ? ? av1=s1/i;
? ?else?
? ? ? ?av1=0;
? ?if(j!=0)?
? ? ?/***********SPACE***********/
? ? ?【?】 ;
? ?else?
? ? ?av2=0;
? ?printf("oushujunzhi:%7.2f,jishujunzhi:%7.2f\n",av1,av2);
}
答案:
? ?1). x != 0 或 x
? ?2). else 或 else ?if(x%2==1) 或 else ?if(x%2!=0) 或 if(x%2)
? ?3). scanf("%d",&x)
? ?4). av2=s2/j
第126題 (9.0分) ?題號:398
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:打印出如下圖案(菱形)
? ?*
? ***
?*****
*******
?*****
? ***
? ?*
-------------------------------------------------------*/
#include <stdio.h>
main()
{
? int i,j,k;
? /***********SPACE***********/
? for(i=0;【?】;i++)?
? {
? ? for(j=0;j<=4-i;j++)
? ? ? printf(" ");
? ? /***********SPACE***********/
? ? for(k=1;k<=【?】;k++)
? ? ? printf("*");
? ? printf("\n");
? }
? /***********SPACE***********/
? for(【?】;j<3;j++)
? {
? ? for(k=0;k<j+3;k++)
? ? ? printf(" ");
? ? for(k=0;k<5-2*j;k++)
? ? ? printf("*");
? ? ?printf("\n");
? }
}
答案:
? ?1). i<=3 或 i<4 或 3>=i 或 4>i
? ?2). 2*i+1 或 i*2+1 或 1+2*i 或 1+i*2
? ?3). j=0
第127題 (9.0分) ?題號:447
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:已知一個數列,它的頭兩項分別是0和1,從第三項開始以
? ? ? 后的每項都是其前兩項之和。編程打印此數,直到某項的
? ? ? 值超過200為止。
-------------------------------------------------------*/
main()
{
? int i,f1=0,f2=1;
? /***********SPACE***********/
? for(【?】;;i++)
? {
? ? printf("5%d",f1);
? ? /***********SPACE***********/
? ? if(f1>【?】) break;
? ? printf("5%d",f2);
? ? if(f2>200) break;
? ? if(i%2==0) printf("\n");
? ? f1+=f2;
? ? /***********SPACE***********/
? ? f2+=【?】;
? }
? printf("\n");
}
答案:
? ?1). i=1
? ?2). 200
? ?3). f1
第128題 (9.0分) ?題號:461
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:從鍵盤輸入一個字符串,將小寫字母全部轉換成大寫字母,
? ? ? 然后輸出到一個磁盤文件“test”中保存。輸入的字符串
? ? ? 以!結束。
-------------------------------------------------------*/?
#include "stdio.h"
main()
{
? FILE *fp;
? char str[100],filename[10];
? int i=0;
? if((fp=fopen("test","w"))==NULL)
? {
? ? printf("cannot open the file\n");
? ? exit(0);
? }
? printf("please input a string:\n");
? gets(str);
? /***********SPACE***********/
? while(【?】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? {
? ? if(str[i]>='a'&&str[i]<='z')
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? fputc(str[i],fp);
? ? i++;
? }
? fclose(fp);
? /***********SPACE***********/
? fp=fopen("test",【?】); ? ? ? ? ? ? ? ? ? ? ? ?
? fgets(str,strlen(str)+1,fp);
? printf("%s\n",str);
? fclose(fp);
}
答案:
? ?1). str[i] != '!'
? ?2). str[i]=str[i]-32 或 str[i]= str[i] -32
? ?3). "r" 或 "wr" 或 "wr+"
第129題 (9.0分) ?題號:625
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:有一整數數組x(正序排列),判斷是否有數組元素x[i]=i
? ? ? 的情況發生。
-------------------------------------------------------*/
int ?index_search(int x[], int n)
{
? int ?first = 0;
? int ?last ?= n-1;
? int ?middle, index;
? index = -1;
? while (first <= last)?
? {
? ? middle = (first + last) / 2;
? ? /***********SPACE***********/
? ? if (【?】)?
? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? index = middle;
? ? ? break;
? ? }
? ? /***********SPACE***********/
? ? else if (【?】) ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? last = middle - 1;
? ? else?
? ? ? first = middle + 1;
? }
? return index;
}
#include ?<stdio.h>
void main(void)
{
? int ?x[] = { -1, 0, 1, 3, 5, 7, 9, 10};
? int ?n ? = sizeof(x)/sizeof(int);
? int ?answer, i;
? printf("\nIndex Search Program");
? printf("\n====================");
? printf("\n\nGiven Array :");
? for (i = 0; i < n; i++)
? ? printf("%5d", x[i]);
? ? /***********SPACE***********/
? ? 【?】; ? ? ? ? ? ? ? ? ? ? ? ?
? ? if (answer >= 0)
? ? ? printf("\n\nYES, x[%d] = %d has been found.", answer, answer);
? ? else
? ? ? printf("\n\nNO, there is no element with x[i] = i");
}
答案:
? ?1). x[middle] == middle
? ?2). x[middle] > middle 或 middle<x[middle]
? ?3). answer = index_search(x, n)
第130題 (9.0分) ?題號:412
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:寫一個函數,求一個字符串的長度,在main函數中輸入字
? ? ? 符串,并輸出其長度。
-------------------------------------------------------*/
#include <stdio.h>
main()
{
? int length(char *p);
? int len;
? char str[20];
? printf("please input a string:\n");
? scanf("%s",str);
? /***********SPACE***********/
? len=length(【?】);
? printf("the string has %d characters.",len);
}
/***********SPACE***********/
【?】(p)
char *p;
{
? int n;
? n=0;
? while(*p!='\0')
? {
? ? /***********SPACE***********/
? ? 【?】;
? ? /***********SPACE***********/
? ? 【?】;
? }
? return n;
}
答案:
? ?1). str
? ?2). length 或 int length
? ?3). n++ 或 ++n 或 n=n+1 或 n+=1
? ?4). p++ 或 ++p 或 p=p+1 或 p+=1
?
總結
以上是生活随笔為你收集整理的C语言考试题库之填空题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python websockets 网络
- 下一篇: [golang] 导入 go-sqlit