C语言程序设计填空题及答案复习用

C语言程序设计填空题及答案复习用
C语言程序设计填空题及答案复习用

C语言程序设计填空题及答案复习用

公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。【】下面程序的功能是不

用第三个变量,实现两个

数的对调操作。

#include <>

main()

{ int a,b;

scanf("%d%d",&a,&b);

printf("a=%d,b=%d\n",a

,b);

a= ①;

b= ②;

a= ③;

printf("a=%d,b=%d\n",a

,b);

}

【】下面程序的功能是根

据近似公式:π2/6≈

1/12+1/22+1/32+ ……

+1/n2,求π值。

#include <>

double pi(long n)

{ double s=;

long i;

for(i=1;i<=n;i++)

s=s+ ①;

return( ② );

}

【】下面的程序的功能是

求一维数组中的最小元

素。

findmin(int *s,int

t,int *k)

{ int p;

for(p=0,*k=p;p

if(s[p]

①;

}

main()

{ int a[10],i,*k=&i;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

findmin(a,10,k);

printf("%d,%d\n",*k,a[

*k]);

}

【】下面程序的功能是计

算1-3+5-7+ …… -

99+101的值。

main()

{ int i,t=1,s=0;

for(i=1;i<=101;i+=2)

{ ①;

s=s+t;

②;

}

printf("%d\n",s);

}

【】有以下程序段:

s=;

for(k=1;k<=n;k++)

s=s+(k*(k+1));

printf("%f\n",s);

填空完成下述程序,使之与上述程序的功能完全相同。

s=;

①;

k=0;

do

{ s=s+d;

②;

d=(k*(k+1));

}while( ③ );

printf("%f\n",s);

【】下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入

为负数时结束输入。

main()

{ float x,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while( ① )

{ if(x>amax) amax=x;

if( ② ) amin=x;

scanf("%f",&x);

}

printf("\namax=%f\nami

n=%f\n",amax,amin);

}

【】下面程序的功能是将

形参x的值转换为二进制

数,所得的二进制数放在

一个一维数组中返回,二

进制数的最低位放在下标

为0的元素中。

fun(int x,int b[])

{ int k=0,r;

do

{ r=x% ①;

b[k++]=r;

x/= ②;

}while(x);

}

【】下面程序的功能是输

出1到100之间每位数的

乘积大于每位数的和的

数。例如数字26,数位

上数字的乘积12大于数

字之和8。

main()

{ int n,k=1,s=0,m;

for(n=1;n<=100;n++)

{ k=1;

s=0;

①;

while( ② )

{ k*=m%10;

s+=m%10;

③;

}

if(k>s)

printf("%d",n);

}

}

【】下面程序的功能是统

计用0至9之间的不同的

数字组成的三位数的个数。

main()

{ int i,j,k,count=0;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

if( ① ) continue;

else for(k=0;k<=9;k++)

if( ② ) count++;

printf("%d",count);

}

【】下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。

main()

{ int i,j;

for(i=0;①;i++)

{ j=i*10+6;

if( ② ) countinue;

printf("%d",j);

}

} 【】下面程序的功能是用

辗转相除法求两个正整数

m和n的最大公约数。

hcf(int m,int n)

{ int r;

if(m

{ r=m;

①;

n=r;

}

r=m%n;

while( ② )

{ m=n;

n=r;

r=m%n;

}

③;

}

【】下面程序的功能是使

用冒泡法对输入的10个

浮点数从小到大进行排

序。排好序的10个数分

两行输出。程序如下:

#include <>

main()

{ ①;

int i,j;

printf("Input 10

numbers please\n");

for(i=0;②;i++ )

scanf("%f", &a[i]);

printf("\n");

for(i=2;③;i++ )

for(j=0;④;j++ )

if( ⑤ )

{ x=a[j];

⑥;

a[j+1]=x;

}

printf("The sorted 10

numbers;\n");

for(i=0;⑦;i++ )

{ if( ⑧ )

printf("\n");

printf("%f\t",a[i]);

}

printf("\n");

}

【】下面程序的功能是读

入20个整数,统计非负

数个数,并计算非负数之和。

#include ""

main()

{ int

i,a[20],s,count;

s=count=0;

for(i=0;i<20;i++ )

scanf("%d", ① );

for(i=0;i<20;i++)

{ if(a[i]<0)

②;

s+=a[i];

count++;

}

printf("s=%d\t

count=%d\n",s,count);

}

【】下面程序的功能是删除字符串s中的空格。

#include <>

main()

{ char *s="Beijing ligong daxue";

int i,j;for(i=j=0;

s[i]!='\0';i++)

if(s[i]!= ' ') ①;

else ②;

s[j]= '\0';

printf("%s",s);

}

【】下面程序的功能是将

字符串s中所有的字符

'c'删除。请选择填空。

#include<>

main( )

{ char s[80];

int i,j;

gets(s);

for(i=j=0;s[i]!=

'\0';i++ )

if(s[i]!= 'c') ①;

s[j]= '\0';

puts(s);

}

【】下面程序的功能是输

出两个字符串中对应相等

的字符。请选择填空。

#include <>

char

x[]="programming";

char y[]="Fortran";

main()

{ int i=0;

while(x[i]!= '\0' &&

y[i]!= '\0')

if(x[i]==y[i])

printf("%c", ① );

else

i++;

}

【】下面程序的功能是将

字符串s中的每个字符按

升序的规则插到数组a中,

字符串a已排好序。

#include <>

main()

{ char

a[20]="cehiknqtw";

char s[]="fbla";

int i,k,j;

for(k=0;s[k]!= '\0';

k++ )

{ j=0;

while(s[k]>=a[j] &&

a[j]!= '\0' )

j++;

for( ① )

②;

a[j]=s[k];

}

puts(a);

}

【】下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为"abcdefg"和"abceef",

则输出为-1。

#include <>

main()

{ char

str1[100],str2[100],c

int i,s;

printf("Enter string 1: "); gets(str1);

printf("Enter string 2: "); gets(str2);

i=0;while((str1[i] ==

str2[i] && str1[i]!=

① ))

i++;

s= ②;

printf("%d\n", s);

}

【】下面的函数expand

在将字符串s复制到字符

串t时,将其中的换行

符和制表符转换为可见的

转义字符表示,即用'\n'

表示换行符,用'\t'表示

制表符。

expand(char s[],char

t[])

{ int i,j;

for(i=j=0;s[i]!=

'\0';i++ )

switch (s[i])

{ case '\n': t[ ① ] =

②;

t[j++] = 'n';

break;

case '\t': t[ ③ ] =

④;

t[j++] = 't';

break;

default: t[ ⑤ ] =

s[i];

break;

}

t[j] = ⑥;

}

【】下面的函数

index(char s[], char

t[])检查字符串s中是否

包含字符串t,若包含,

则返回t在s中的开始位

置(下标值),否则送回

-1。

index(char s[], char

t[])

{ int i,j,k;

for(i=0;s[i]!= '\0';

i++ )

{ for(j=i,k=0;① &&

s[j]==t[k];

j++,k++) ;

if( ② )

return (i);

}

return(-1);

}

n

【】下面程序的功能是计算S= k! 。

k=0

long fun(int n)

{ int i;

long s;

for(i=1;i ①;i++)

s*=i;

return( ② );

}

main()

{ int k,n;

long s;

scanf("%d",&n);

s= ③;

for(k=0;k<=n;k++)

s+= ④;

printf("%ld\n",s);

}

【】下面程序的功能是显示具有n个元素的数组s 中的最大元素。

#define N 20

main() { int i,a[N];

for(i=0;i

scanf("%d",&a[i]);

printf("%d\n", ① );

}

fmax(int s[],int n)

{ int k,p;

for(p=0,k=p;p

if(s[p]>s[k]) ②;

return(k);

}

【】下面程序的功能是由

键盘输入n,求满足下述

条件的x、y:

nx和ny的末3位数字相

同,且x≠y,x、y、n均

为自然数,并使x+y为最

小。

#include <>

pow3(int n,int x)

{ int i, last;

for(last=1,i=1;i<=x;

i++ )

last= ①;

return(last);

}

main()

{ int x,n,min,flag=1;

scanf("%d", &n);

for(min=2;flag;min++)

for(x=1;x

flag;x++ )

if( ② &&

pow3(n,x)==pow3(n,min-

x))

{ printf("x=%d,y=%d\n",

x, min-x );

③;

}

}

【】下面的程序是用递归

算法求a的平方根。求平

方根的迭代公式如下:

#include <>

double mysqrt( double

a, double x0 )

{ double x1, y;

x1 = ①;

if( fabs(x1-x0)> )

y = mysqrt( ② );

else y = x1;

return( y );

}

main()

{ double x;

printf("Enter x: ");scanf("%lf", &x);

printf("The sqrt

of %lf=%lf\n", x, mysqrt( x, );

}

【】以下程序是计算学生的年龄。已知第一位最小的学生年龄为10岁,其余学生的年龄一个比一个大2岁,求第5个学生的年龄。

#include <>

age( int n )

{ int c;

if( n==1 ) c=10;

else c= ①;

return(c);

}

main()

{ int n=5;printf("age:%d\n",

② );

}

【】下面的函数sum(int

n)完成计算1~n的累加

和。

sum(int n)

{ if(n<=0)

printf("data

error\n");

if(n==1) ①;

else ②;

}

【】下面的函数是一个求

阶乘的递归调用函数。

facto(int n)

{ if( n == 1 ) ①;

else return( ② );

}

【】组合问题,由组合的

基本性质可知:

(1) C(m,n)=C(n-m,n)

(2)

C(m,n+1)=C(m,n)+C(m-

1,n)

公式(2)是一个递归公

式,一直到满足

C(1,n)=n为止。当n<2*m

时,可先用公式(1) 进行

简化,填写程序中的空

白,使程序可以正确运

行。

#include""

main()

{ int m,n;

printf("Input m,n=");

scanf("%d%d", &m,

&n);

printf("The

combination numbeers

is %d\n",

combin(m,n));

}

combin( int m, int n)

{ int com;

if( n<2*m ) m=n-m;

if( m==0 ) com=1;

else if(m==1) ①;

else ②;

return(com);

}

【】下列函数是求一个字

符串str的长度。

?????? int

strlen( char *str )

??????{ if( ① ) return (0);

?? ???? else return ( ② );

}

【】用递归实现将输入小于32768的整数按逆序输出。如输入12345,则输出54321。

#include""

main()

{ int n;

printf("Input n : ");scanf("%d", ① );

r(n);

printf("\n");

}

r( int m )

{ printf("%d", ② );m = ③;

if( ④ )

⑤;

}【】输入n值,输出高度

为n的等边三角形。例如

当n=4时的图形如下:

*

***

*****

*******

#include <>

void prt( char c, int

n )

{ if( n>0 )

{ printf( "%c", c );

①;

}

}

main()

{ int i, n;

scanf("%d", &n);

for( i=1; i<=n; i++ )

{ ②;

③;

printf("\n");

}

}

【】下面的函数实现N层

嵌套平方根的计算。

double y(double x, int

n)

{ if( n==0 )

return(0);

else return

( sqrt(x+( ① )) );

}

【】函数revstr(s)将字

符串s置逆,如输入的实

参s为字符串"abcde",

则返回时 s 为字符串

"edcba"。递归程序如

下:

revstr( char *s )

{ char *p=s, c;

while(*p) p++;

①;

if(s

{ c=*s;

*s=*p;

②;

revstr(s+1);

③;

}

}

如下是由非递归实现的revstr(s)函数:

revstr (s)

char *s;

{ char *p=s, c;

while( *p ) p++;

④;

while( s

{ c=*s;

⑤ = *p;

*p-- = c;

}

}

【】下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是"ABCDE",反序为"EDCBA"。

void invent(char

*str,int n)

{ char t;

t=*str; *str=*(str+n-1); *(str+n-1)=t;

if( n>2 ) invent

( ①,n-2);else ②;

}

【】从键盘上输入10个

整数,程序按降序完成从

大到小的排序。

#include <>

int array[10];

sort( int *p, int *q )

{ int *max, *s;

if( ① )

return;

max=p; for( s=p+1;

s<=q; s++)

if( *s > *max )

②; swap( ③ );

sort( ④ ); }

swap( int *x, int *y )

{ int temp;

temp=*x;

*x=*y;

*y=temp;

}

main()

{ int i;

printf("Enter

data :\n");

for( i=0; i<10; i++)

scanf("%d",

&array[i]);

sort( ⑤ );

printf("Output:");

for( i=0; i<10; i++)

printf("%d ",

array[i]);

}

【】下面函数的功能是将

一个整数存放到一个数组

中。存放时按逆序存放。

例如:483存放成

"384"。

#include <>

void convert(char *a,

int n)

{ int i;

if((i=n/10) !=0 )

convert( ① , i );

*a = ②;

}

char str[10]= " ";

main()

{ int number;

scanf("%d", &number);

convert( str,

number );

puts(str);

}

【】下面程序的功能是实现数组元素中值的逆转。

#include <>

main()

{ int

i,n=10,a[10]={1,2,3,4, 5,6,7,8,9,10};

invert(a,n-1);

for(i=0;i<10;i++)

printf("%4d",a[i]);

printf("\n");

}

invert(int *s,int num)

{ int *t,k;

t=s+num;

while( ① )

{ k=*s;

*s=*t;

*t=k;

②;

③;}

}

【】下面程序通过指向整

型的指针将数组a[3][4]

的内容按3行×4列的格

式输出,请给printf( )

填入适当的参数,使之通

过指针p将数组元素按要

求输出。

#include <>

int

a[3][4]={{1,2,3,4},{5,

6,7,8},{9,10,11,12}},

*p=a;

main()

{ int i,j;

for(i=0;i<3;i++ )

{ for(j=0;j<4;j++ )

printf("%4d ", ① );

}

}

【】下面程序的功能是:

从键盘上输入一行字符,

存入一个字符数组中,然

后输出该字符串。

#include <>

main ( )

{ char str[81],

*sptr;

int i;

for(i=0;i<80;i++ )

{ str[i]=getchar( );

if(str[i]== '\n')

break;

}

str[i]= ①;

sptr=str;

while( *sptr )

putchar( *sptr ② );

}

【】下面函数的功能是将

字符变量的值插入已经按

ASCII码值从小到大排好

序的字符串中。

void fun(char *w,char

x,int *n)

{ int i,p=0;

while(x>w[p]) ①;

for(i=*n;i>=p;i--)

②;

w[p]=x;

++*n;

}

【】下面程序的功能是从

键盘上输入两个字符串,

对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符。

#include <>

strmerge(a,b,c) /* 将已排好序的字符串a、b合并到c */

char *a,*b,*c;

{ char t,*w;

w=c;

while( *a!= '\0' ①

*b!='\0' )

{ t= ② *a++:*b<*a

*b++ : ( ③ ); /* 将*a、*b的小者存入t */

if( *w ④ '\0' )

*w=t;

else if( t ⑤ *w)

*++w=t; /* 将与*w不

相同的t存入w */

}

while( *a != '\0' ) /* 以下将a或b中剩下的字符存入w */

if( *a != *w )

*++w=*a++;

else a++;

while( *b != '\0') if( *b != *w )

*++w=*b++;

else b++;

*++w = ⑥;

}

strsort( char *s ) /*

将字符串s中的字符排序

*/

{ int i,j,n;

char t,*w;

⑦;

for( n=0;*w != '\0';

⑧ )

w++;

for( i=0;i

for( j=i+1;j

if( s[i]>s[j] )

{ ⑨ }

}

main( )

{ char s1[100],

s2[100],s3[200];

printf("\nPlease Input

First String:");

scanf("%s",s1);

printf("\nPlease Input

Second String:");

scanf("%s",s2);

strsort(s1);

strsort(s2);

⑩ = '\0';

strmerge(s1,s2,s3);

printf("\nResult:%s",

s3);

}

【】已知某数列前两项为

2和3,其后继项根据前

面最后两项的乘积,按下

列规则生成:

①若乘积为一位数,则

该乘积即为数列的后继

项;

②若乘积为二位数,则

该乘积的十位上的数字和

个位上的数字依次作为数

列的两个后继项。

下面的程序输出该数列的

前N项及它们的和,其

中,函数sum(n,pa) 返

回数列的前N项和,并将

生成的前N项存入首指针

为pa的数组中,程序中

规定输入的N值必须大于

2,且不超过给定的常数

值MAXNUM。

例如:若输入N的值为10,则程序输出如下内容:

sum(10)=44

2 3 6 1 8 8 6 4 2 4

#include ""

#define MAXNUM 100

int sum(n, pa)

int n, *pa;

{ int count, total, temp;

*pa = 2;

① =3;

total=5;

count=2;

while( count++

{ temp = *(pa-1) * *pa;

if( temp<10 )

{ total += temp;

*(++pa) = temp;

}

else

{ ② = temp/10;

total += *pa;if( count

{ count ++; pa++;

③ = temp%10;

total += *pa;

}

}

}

④;

}

main()

{ int n, *p, *q,

num[MAXNUM];

do

{ printf("Input N=

(2

MAXNUM+1);

scanf("%d", &n);

}while( ⑤ );

printf("\nsum(%d)=%d\n

", n, sum(n, num));

for( p=num, q = ⑥;

p

printf("%4d", *p);

printf("\n");

}

【】下面程序的功能是输

入学生的姓名和成绩,然

后输出。

#include <>

struct stuinf

{ char name[20]; /*

学生姓名 */

int score; /* 学生成

绩 */

} stu, *p;

main ( )

{ p=&stu;

printf("Enter

name:");

gets( ① );

printf("Enter score:

");

scanf("%d",② );

printf("Output: %s, %d

\n",③,④ );

}

【】下面程序的功能是按

学生的姓名查询其成绩排

名和平均成绩。查询时可

连续进行,直到输入0时

才结束。

?? #include <>

#include <>

#define NUM 4

? struct student

? { int rank;

char *name;

float score;????????};

???????? ①

stu[ ]={ 3,"liming",,

???????? 4,"zhanghua",,

???????? 1,"anli",,???????? 2,"wangqi",};????????main()

????????{ char

str[10];???????? int i;???????? do

{ printf("Enter a name");

???????? scanf("%s",str);

???????? for( i=0;

i

{ printf("Name :%8s\n"

,stu[i].name);

????????

printf("Rank :%3d\n",

stu[i].rank);

????????

printf("Average :%5.1f

\n",stu[i].score);???????? ③;???????? }

???????? if( i>=NUM )

printf("Not

found\n");

???????? }while( strcm

p(str,"0")!=0 );????????}

#in

clu

de

""

str

uct

man

{ c

har

nam

e[2

0]

uns

ign

ed

age

cha

r

sex

[7];

};

mai n ( )

{ s tru ct man per son [5];

dat a_i n(p ers on, 5);

dat a_o ut( per son ,5);

}

dat a_i n(s tru ct man *p, int

n )

{ s

tru

ct

man

*q

=

for

(

p

p++

)

{ p

rin

tf(

"ag

e:s

ex:

nam

e"

);

sca

nf(

"%u

%s",

&p-

>ag

e,

p-

>se

x)

}

}

dat

a_o

ut(

str

uct

man

*p,

int

n )

{ s

tru

ct

man

*q

=

__

__

for

(

p

p++

)

pri

ntf

("%

s;

%u

;%

s\n

",

p-

>na

me,

p-

>ag

e,

p-

>se

x)

}

【】输入N个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序进行排列。要求:当两个整数相等时,整数的排列顺序由输入的先后次序决定。例如:输入的第3个整数为5,第7个整数也为5,则将先输入的整数5排在后输入的整数5的前面。程序如下:

#include ""

#define N 10

struct

{ int no;

int num;

} array[N];

main( )

{ int i,j,num;for( i=0;i

{ printf("enter

No. %d:",i);

scanf("%d",&num);

for( ①;

j>=0&&array[j].num ②

num;③ )

array[j+1]=array[j];

array[ ④ ].num=num;

array[ ⑤ ].no=i;

}

for( i=0;i

printf("%d=%d,%d\n",

i,array[i].num,

array[i].no);

}

【】以下程序的功能是:

读入一行字符(如:

a、...y、z),按输入时

的逆序建立一个链接式的

结点序列,即先输入的位

于链表尾(如下图),然

后再按输入的相反顺序输

出,并释放全部结点。

#include <>

main( )

{ struct node

{ char info;

struct node *link;

} *top,*p;

char c;

top=NULL;

while((c= getchar( ))

① )

{ p=(struct node

*)malloc(sizeof(struct

node));

p->info=c;

p->link=top;

top=p;

}

while( top )

{ ②;

top=top->link;

putchar(p->info);

free(p);

}

}

【】下面函数将指针p2

所指向的线性链表,串接

到p1所指向的链表的末

端。假定p1所指向的链

表非空。

#define NULL 0

struct link

{ float a;

struct link *next;

};

concatenate ( p1,p2 )

struct list *p1,*p2;

{ if( p1->next==NULL )

p1->next=p2;

else

concatenate( ①,

p2);

}

【】下面程序的功能是从键盘输入一个字符串,然后反序输出输入的字符串。

#include <>

struct node

{ char data;

struct node *link;

}*head;

main()

{ char ch;

struct node *p;head = NULL;

while(( ch=getchar())!

='\n' )

{ p = (struct node

*)malloc(sizeof(struct

node));

p->data = ch;

p->link = ①;

head = ②;

}

③;

while( p!=NULL )

{ printf("%c ", p-

>data);

p = p->link;

}

}

【】下面程序的功能是从

键盘上顺序输入整数,直

到输入的整数小于0时才

停止输入。然后反序输出

这些整数。

#include <>

struct data

{ int x;

struct data *link;

}*p;

input()

{ int num;

struct data *q;

printf("Enter

data:");

scanf("%d", &num);

if( num<0 )

①;

q = ②;

q->x = num;

q->link = p;

p=q;

③;

}

main()

{ printf("Enter data

until data<0:\n");

p=NULL;

input();

printf("Output:");

while( ④ )

{ printf("%d\n", p-

>x);

⑤;

}

}

【】下面函数的功能是创建一个带有头结点的链表,将头结点返回给主调函数。链表用于储存学生的学号和成绩。新产生的结点总是位于链表的尾部。

struct student

{ long num;

int score;

struct student *next;

};

struct student *creat()

{ struct student

*head=NULL,*tail;

long num; int a;

tail= ① malloc(LEN);

do

{ scanf("%ld,%d",&num, &a);

if(num!=0)

{ if(head==NULL)

head=tail;

else ②;tail->num=num; tail-

>score=a;

tail->next=(struct

student

*)malloc(LEN);

}

else tail->next=NULL;

}while(num!=0);

return( ③ );

}

【】下面create函数的

功能是建立一个带头结点

的单向链表,新产生的结

点总是插入在链表的末

尾。单向链表的头指针作

为函数值返回。

#include <>

#define LEN

sizeof(struct student)

struct student

{ long num;

int score;

struct student *next;

};

struct student *creat()

{ struct student

*head=NULL,*tail;

long num;

int a;

tail=( ① )malloc(LEN)

do

{ scanf("%ld,%d",&num,

&a);

if(num!=0)

{ if(head==NULL)

head=tail;

else tail=tail->next;

tail->num=num;

tail->score=a;

tail-

>next=( ② )malloc(LEN

);

}

else tail->next=NULL;

}while(num!=0);

③;

}

【】下面程序的功能是统

计文件中的字符的个数。

#include <>

main()

{ long num=0;

① *fp;

if((fp=fopen("", "r"))==NULL)

{ printf("Can't open the file! ");

exit(0);

}

while( ② )

{ fgetc(fp);

num++;

}

printf("num=%d\n",num);

fclose(fp);

}

【】下面程序的功能是把从键盘输入的文件(用 @ 作为文件结束标志)复制到一个名为的新文件中。

#include <>

FILE *fp;

main()

{ char ch;

if((fp=fopen( ① ))==N ULL)

exit(0);while((ch=getchar())!=

'@')

fputc(ch,fp);

②;

}

【】下面程序的功能是将

磁盘上的一个文件复制到

另一个文件中,两个文件

名在命令行中给出(假定

给定的文件名无误)。

#include <>

main(int argc,char

*argv[])

{ FILE &f1,*f2;

if(argc< ① )

{ printf("The command

line error! ");

exit(0);

}

f1=fopen(argv[1],

"r");

f2=fopen(arhv[2],

"w");

while( ② )

fputs(fgetc(f1),

③ );

④;

⑤;

}

【】下面程序的功能是根

据命令行参数分别实现一

个正整数的累加或阶乘。

例如:如果可执行文件的

文件名是sm,则执行该

程序时输入:"sm +

10",可以实现10的累

加;输入:"sm - 10",

可以实现求10的阶乘。

#include <>

#include <>

main (int argc,char

*argv[])

{ int n;

void sum(),mult();

void (*funcp)();

n=atoi(argv[2]);

if(argc!=3 || n<=0)

dispform( );

switch ( ① )

{ case '+':

funcp=sum;

break;

case '-': funcp=mult;

break;

default: dispform( );

}

②;

}

void sum(int m)

{ int i,s=0;

for(i=1;i

③;

printf("sum=%d\n",s);

}

void mult(int m)

{ long int i, s=1;

for(i=1;i<=m;i++ )

s *= i;

printf("mult= %ld\n";s);

}

dispform( )

{ printf ("usage:sm

n(+/!) (n>0)\n");

exit (0);

}

【】下面程序的功能是键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文

件中,然后从该文件读出

字符串并显示出来。

#include <>

main()

{ char str[100];

int i=0;

FILE *fp;

if((fp=fopen("",

① ))==NULL)

{ printf("Can't open

the file.\n");

exit(0);

}

printf("Input a

string:\n");

gets(str);

while(str[i])

{ if(str[i]>=

'a'&&str[i]<= 'z')

str[i]= ②;

fputc(str[i],fp);

i++;

}

fclose(fp);

fp=fopen("", ③ );

fgets(str,strlen(str)+

1,fp);

printf("%s\n",str);

fclose(fp);

}

【】下面程序的功能是将

从终端上读入的10个整

数以二进制方式写入名为

""的新文件中。

#include <>

FILE *fp;

main()

{ int i, j;

if(( fp=fopen( ① ,

"wb" )) == NULL )

exit (0);

for( i=0;i<10;i++ )

{ scanf("%d", &j );

fwrite( ② ,

sizeof(int), 1, ③ );

}

fclose( fp);

}

【】以字符流形式读入一

个文件,从文件中检索出

六种C语言的关键字,并

统计、输出每种关键字

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C语言程序设计模拟试题1(附答案)

《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 x = 9; while (x > 7)

C语言常见复习题(选择填空)及参考答案

C语言常见复习题及参考答案 一、选择题 1.下述标识符中,()是合法的用户标识符。 A.A#C B.getch C.void D.ab* 2.在C语言中,字符型数据在内存中是以()形式存放的。 A.原码 B.BCD码 C.反码 D.ASCII码 3.以下选项中不合法的用户标识符是()。 A.abc.c B.file C.Main D.PRONTF 4.以下选项中不合法的用户标识符是()。 A.123 B.printf C.Anbsp; D.Dim 5.可以在C语言程序中用做用户标识符的一组标识符是()。 A.void B.as-b3 C.for D.2c define -123 -abc Do WORD If cas SIG 6.在以下各组标识符中,合法的用户标识符是(1)、(2)、(3)。 (1)A.001 B.table_1 C.0_t D.k% Int t*.1 W10 point (2)A.Fast_ B.void C.pbl D. Fast+Big abs fabs beep (3)A.xy_ B.longdouble C.*p D.CHAR 变量1 signed history Float 7.()是构成C语言的基本单位。 A.函数 B.过程 C.子程序 D.子例程 8.若有说明:char s1='\067';char s2="1";char s3='1';则s1中(1),s2中(2),s3中(3)。

(1).A.包含3个字符 B.包含2个字符 C.包含1个字符 D.无定值,说明不合法 (2).A.包含1个字符 B.包含2个字符 C.包含3个字符 D.无定值,说明不合法 (3).A.包含1个字符 B.包含2个字符 C.包含3个字符 D.无定值,说明不合法 9.若x为int型变量,则执行以下语句后,x的值为 x=6; x+=x-=x*x A.36 B.-60 C.60 D.-24 10.在C语言中,char 型数据在内存中是以()形式存储的。 A.原码 B.补码 C.ASCII码 D.反码 11.以下运算符中优先级最低的算符为(),优先级最高的为()。 A.&& B.& C.|= D.|| E.?: F.!= 12.若有运算符>、*=、<<、%、sizeof,则它们按优先级(由低至高)的正确排列顺序为 A.*= << > % sizeof B.<< *= > % sizeof C.*= > << sizeof % D.*= > << % sizeof 13.若有以下类型说明语句 char w; int x; float y; double z; 则表达式w*x+z-y 的结果是()类型。 A.float B.char C.int D.double 14.若w,x,y,z 均为int 型变量,则执行下面的语句后, w=(1), x=(2), y=(3), z=(4)。 w=5; x=4; y=w++*w++*w++; z=--x*=--x*--x;

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言题库(填空题部分)

二、填空题 1、C语言中对文件读写之前必须先打开文件,文件的打开是通过调用________函数来实现。 答案: 1:fopen#fopen()#fopen() 知识点:知识点/基本理论/C11文件/C11_2文件函数 2、C语言中文件操作结束节后,必须关闭文件。而且关闭文件是通过调用__________函数来实现。 答案: 1:fclose#fclose()#fclose() 知识点:知识点/基本理论/C11文件/C11_2文件函数 3、字符串函数________用于从指定的磁盘文件中读出一个字符串。 答案: 1:fgets#fgets() 知识点:知识点/基本理论/C11文件/C11_2文件函数 4、字符串函数___________用于把一个字符串写入指定的磁盘文件中。 答案: 1:fputs#fputs() 知识点:知识点/基本理论/C11文件/C11_2文件函数 5、字符读写函数____________是用于从磁盘文件中读出一个字符。 答案: 1:fgetc#fgetc()#getc#getc() 知识点:知识点/基本理论/C11文件/C11_2文件函数 6、字符读写函数____________是用于把一个字符写入磁盘文件。 答案: 1:fputc#fputc()#putc#putc() 知识点:知识点/基本理论/C11文件/C11_2文件函数 7、共用体类型变量的定义关键字是________。 答案: 1:union 知识点:知识点/基本理论/C10共用体与枚举类型 8、定义枚举类型时采用的关键字是__________。 答案: 1:enum 知识点:知识点/基本理论/C10共用体与枚举类型 9、在C语言中,从参数的形式看,函数可以分为两类:无参函数和____________函数。 答案: 1:有参 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 10、在C语言中,函数的返回值是由___________语句传递的。 答案: 1:return#return() 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 11、在C语言中,按函数在程序中出现的位置可分为以下三种调用方式:函数语句、函数表达式和函数 __________。 答案: 1:参数 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 12、在C语言中,在调用一个函数的过程中又出现__________或间接地调用该函数本身,这一现象称为函数的递归调用。 答案: 1:直接 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 13、在C语言中,若确实不要求返回函数值,则应将函数定义为___________类型。 答案: 1:void 知识点:知识点/基本理论/C6函数与编译预处理/C62函数分类、调用及返回值T 14、在C语言中,假使X为基本整型变量,如果我们采用printf("格式控制",X)格式输出X,那么"格式控制"具体表示为"__"。

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。

#include main() { printf("******\n"); printf(" *****\n"); printf(" ****\n"); printf(" ***\n"); printf(" **\n"); printf(" *\n"); } 【解答】运行结果为:****** ***** **** *** ** * 思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

C语言程序设计 复习题库

一、填空 1. break 语句通常用于switch // 循环中。 2. C 语言对数组下标的引用一般从0 开始。 3. C 语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 4. C 标准库函数中,字符串的处理函数包含在string.h 头文件中,数学函数包含在 math.h 头文件中。 5. C 程序的运行需要经过编译和链接两步进行。 6. C 程序中用/**/ 括起来的内容是程序的注释语句。 7. C 语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数 名和函数参数。 8. C 语言提供的三种逻辑运算符是& ,// ,!。 9. C 语言源程序经过编译后,生成文件的后缀名是.c 。 10. C 语言源程序经过连接后,生成文件的后缀名是.exe 。 11. C 语言中,关系表达式和逻辑表达式的值是1//0 。 12. C 语言中的标识符只能由三种字符组成,他们是字母,数字,下划线。 13. C 语言中的每条基本语句以;作为结束符,每条复合语句以} 作为结束符。 14. C 语言中函数返回值的类型是由函数类型决定的。 15. C 源程序的基本单位是函数。 16. int a = 2, b = 3; 表达式 a > b ? a ++ : ++ b 的值为 4 。 17. int x=1,y=1,z=1; x+=y+=z; 则表达式xb>c 的值是0 。 19. 定义一个指针p,它指向一个有 6 个整型元素的一维数组,定义语句为int *p=a[6] ; 。 20. 定义一个指针数组p ,它有 4 个元素,每个指针指向一个整型数据,定义语句为int *p[4]; 。 21. 赋值语句是由= 加上一个分号构成。 22. 构成数组的各个元素必须具有相同的类型。 23. 关系表达式x+y>5 的相反表达式为x+y !>5 。 24. 函数strlen("1234\0xy") 的值为:9 。 25. 函数的形参在未被调用前不分配空间,函数形参的数据类型要和实参相同。 26. 函数体用{ 开始,用} 结束。 27. 结构化设计中的三种基本结构是顺序,选择,循环。

C语言程序设计模拟试题A附答案

《C语言程序设计》模拟试卷A 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的就是(D)。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被瞧作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的就是(C)。 A) MAIN B) _HJ C) 2ong D) LINE1 3、以下能正确定义一维数组的就是(C)。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 4、执行下列程序段后输出的结果就是(C)。 x = 9; while (x > 7) { printf(“*”); x- -; } A) **** B) *** C) ** D) * 5、设char str1[10] = “ABCDE”, str2[10] = “xyz”; 则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果就是(D)。 解析: strcpy(str1,str2); 后,str1[] 里就是"XYZ", Z 后面有字符串结束符 strcpy(str1,str2); 执行后,函数返回的就是str1, 因为str1[] 里就是新值"XYZ", 而 strlen(strcpy(str1,str2)) 就就是strlen(str1的新值),所以得3。 strlen 统计到字符串结束符以前,即,不计入字符串结束符。 A) 9 B) 8 C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的就是(A)。

C语言填空题

1、在考生目录下,给定程序FILL1、C的功能就是: 计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该就是:20。 若输入:202,则输出应该就是:0。 程序有两个空(1)、(2)需要补充完整。并将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更 改程序的结构! #include #include main( ) {long int num,k; /************found************/ _____(1)_______ k=1; clrscr() ; printf("\Please enter a number:") ; scanf("%ld",&num) ; do { k*=num%10 ; /************found************/ _____(2)______ num=num/10 ; } while(num) ; printf("\n%ld\n",k) ; } 2、在考生目录下,给定程序FILL1、C的功能就是:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字 符串转换成一个十进制数。 例如:从键盘上输入2345,则程序运行的结果应当为: n=2345。 程序有两个空(1)、(2)需要补充完整。请将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更 改程序的结构! #include "stdio、h" main() { char s[10]; int i; long int n=0; clrscr(); /**************found************/ ___(1)___; scanf("%s",s); /**************found************/ for(i=0;___(2)___;s[i] != ‘\0’ ;i++) n=n*10+s[i]-'0'; printf("n=%ld\n",n);

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言填空题以及答案

1. 一条简单语句是以________字符作为结束符的,一条复合语句是分别以 ________字符和________字符作为开始符和结束符的。 2. 任何一个C++程序至少且只能包含一个________函数,且程序总是从这个函数开始执行,不论这个函数的位置如何。一个函数定义由________和________两部分组成。 3. C++头文件和源程序文件的扩展名分别为________和________。 4. cout与操作符_______配合使用才能显示输出,cin与操作符_____配合使用才能实现输入。 5. 数据类型int,char,bool,float,double, int * 等的类型长度分别为________、________、________、________、________和________。 6. 数值常量46、0173和0x62对应的十进制值分别为________、________和________。 7. 字符串”It\’s\40a\40C++programe!”中包含有__________个字符。 8. 若x=5,y=10,则计算y*=++x表达式后,x和y的值分别为________和 ________。 9. 若x=25,则计算y=x--表达式后,x和y的值分别为________和________。 10. 假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为________和________。 11. 假定x=64,y=88,则x<<2和y>>2的值分别为________和________。 12. 假定x是一个逻辑量,则x&&true的值与________的值相同,x||false的值也与________的值相同。 13. 假定x是一个逻辑量,则x&&!x和x||!x的值分别为________和________。 14. 假定x=10,则表达式x<=10?20:30的值为________。 15. 表达式sqrt(81)和pow(6,3)的值分别为______________和 ______________。 16. 数学算式(1+x)sin48°和axbex+1对应的算术表达式分别为________和 ________。 17. 逻辑表达式:a>=x||b>2*y+10的相反式为:________。 18. 在嵌套的if语句中,每个else关键字与它前面最接近的________关键字相配套。 19. 在for语句中,假定循环体被执行次数为n,则<表达式1>共被计算________次,<表达式2>共被计算________次,<表达式3>共被计算________次。20. 执行for和while循环时,每次是先进行________的判断,然后再执行 ________,执行do循环时则相反。

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

C语言程序设计模拟试题2(附答案)

《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是___1.000000___ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是__17______。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() {

float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( X>0&&X<=100 ) { if (x>amax) amax=x; else if (x

_k++ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是_-3 -4 0 4 4 3___ ____。 #inclued main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是____6_____ ________。 #include main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)

c语言程序填空题完整

三、程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ① ; b= ② ; a= ③ ; printf("a=%d,b=%d\n",a,b); }

【3.2】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include double pi(long n) { double s=0.0; long i; for(i=1;i<=n;i++) s=s+ ① ; return( ② ); } 【3.3】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序设计考试题库

一、判断题 1、所谓常量,就是在程序运行过程中其值可以改变的量。() 2、一个C程序可以由多个源程序文件构成,但其中只能有一个main()函数。() 3、在C语言中do-while 语句和for循环均是先执行循环体语句,再判断表达式。() 4、在函数调用中将变量的地址作为实参传递给对应形参时,实现的是单向的值传递。() 5、C语言中所有字符串都是以‘\0’结束的。() 6、do-while构成的循环语句中的循环体最少执行1次。() 7、数组名在C语言中表示的是数组的首地址。() 8、使用gets()函数输入字符串时可以在字符串中输入空格。() 9、算术运算符中‘/’的优先级高于‘%’。() 10、char a[5];该语句表明数组a中的第五个元素为a[5]。() 11、C语言源程序文件的扩展名均为.c。() 12、char a[5];数组a中有a[1]、a[2]、a[3]、a[4]、a[5]共5个元素。() 13、C语言程序区分大小写,字符常量必须定义为大写。() 14、若int i=10,j=2;则执行i*=j+8;后i的值为28。() 15、若int x=100,y=200;则语句printf("%d",(x,y));输出结果为100。() 16、c语言中的标识符只能由字母,数字和下划线三种字符组成。() 17、函数getchar()的作用是:输出一个字符。() 18、一个C语言程序总是从第一个函数开始执行。() 19、在c语言中,char型数据在内存中是以ASCII码形式存储的。() 20、在C语言中switch语句必须使用break语句。() 二、选择题 1、以下说法正确的是()。 A、C语言程序总是从第一个函数开始执行。 B、C语言程序中要调用的函数必须在main()函数中定义。 C、C语言程序总是从main()函数开始执行。

C语言填空题

1. 在考生目录下,给定程序FILL1.C的功能是: 计算正整数num的各位上的数字之积。 例如,若输入:252,则输出应该是:20。 若输入:202,则输出应该是:0。 程序有两个空(1)、(2)需要补充完整。并将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! #include #include main( ) {long int num,k; /************found************/ _____(1)_______ k=1; clrscr() ; printf("\Please enter a number:") ; scanf("%ld",&num) ; do { k*=num%10 ; /************found************/ _____(2)______ num=num/10 ; } while(num) ; printf("\n%ld\n",k) ; } 2. 在考生目录下,给定程序FILL1.C的功能是:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数。 例如:从键盘上输入2345,则程序运行的结果应当为:n=2345。 程序有两个空(1)、(2)需要补充完整。请将程序调试出所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! #include "stdio.h" main() { char s[10]; int i; long int n=0; clrscr();

/**************found************/ ___(1)___; scanf("%s",s); /**************found************/ for(i=0;___(2)___;s[i] != ‘\0’ ;i++) n=n*10+s[i]-'0'; printf("n=%ld\n",n); } 3. 在考生目录下,给定程序FILL1.C的功能是:输出Fabonacci数列:1,1,2,3,5,8,……的前20项的 项值,要求每行输出5个数。请填空。 程序有两个空(1)、(2)需要补充完整。请将程序调试出 所需的结果。 注意:不要随意改动程序,不得增行或删行,也不得更 改程序的结构! #include "stdio.h" main() { long int f[20]={1,1}; int i; clrscr(); /**************found************/ ___(1)___; printf("%8ld,%8ld",f[0],f[1]); for(i=2;i<20;i++) { f[i]=f[i-1]+f[i-2]; /**************found************/ if(___(2)i%5==0) printf("\n"); printf("%8ld",f[i]); } printf("\n"); } 4. 在考生目录下,给定程序FILL1.C的功能是:实现在N行M列的二维数组中,找出每一行上的最大值,且原数组值不变。 例如:如果二维数组元素的值为: 1 5 7 4 2 6 4 3 8 2 3 1 时,程序的运行结果应为: The max value in line 0 is 7 The max value in line 1 is 6

相关文档
最新文档