第一句子大全,网罗天下好句子,好文章尽在本站!

C语言程序设计复习题

时间:2016-05-10

C语言程序设计一、单项选择题若以下各题所有库函数都可以合法使用,且变量定义如下:int m=5, i=3,j=2,*p, a=8,b=0;int arr10={0,1,2,3,4,5,6,7,8,9}

友情提示:本文共有 870 个字,阅读大概需要 2 分钟。

C语言程序设计

一、单项选择题

若以下各题所有库函数都可以合法使用,且变量定义如下:

int m=5, i=3,j=2,*p, a=8,b=0;

int arr[10]={0,1,2,3,4,5,6,7,8,9},td[ ][3]={1,2,3,4,5,6};

float x=2.5,y=3.0;

double z=0; long n=1;

char c=’A’,ch[20]={’a’,’b’,’c’,’’,’d’,’’};

struct student

{ int num;

char name[20];

float score;

struct student *next;

}st1,st2,*ps;

FILE *fp;

1.若将3和10从键盘输入给变量a、x,输入语句为scanf(“a=%d,x=%f”,&a,&x);正确的键盘输入是(↙表回车):

A a=3,x=10↙ B 3,10↙ C 3 10↙ D 3,10.0↙

2. 以下不是死循环的语句是:

A for ( ; ;y+=i++);

B while(a) y+=i++ ;

C do{ y+=i++}while (a>0);

D for (b=0;(c=getchar()!=’n’);)b++;

3.若p=arr;正确的语句是:

A *p=arr[10]; B *p=arr[2*a];

C p=arr[5]; D p[i]=arr[0];

4.若ps=&st1;则下面描述正确的是:

A ps->num与st1->num等价。 B ps.num与st1.num等价。

C ps->num与num等价。 D ps->num与st1.num等价。

5.语句printf(“%d",aj);的输出结果是:

A 1 B 0 C 8 D都不对

6.表达式 j/i+a%i+x 的值是:

A 6 B 4.5 C 6.0 D 5.5

7.表达式 b||a+i&&iA 不确定 B 0.0 C 1 D 0

8.若执行语句 a=b+=3*j+(int)x;则b的值为:

A 1 B 8 C 0 D 8.5

9. 若执行语句 a=b>j ?++i : i++;则a与i的值分别为:

A 4 ,4 B 3 ,4 C 4 ,3 D 3 ,3

10.if (a8 aA x= B x=

1 a8 aC x= D x=

1 a≥b 1 a11.将字符串“Wan Ming”输入数组ch中,正确的是:

A、scanf(“%s”,ch) B、scanf(“%s”,&ch)

C、ch=“Wan Ming” D、gets(ch)

12. 执行语句printf(“%c”,td[1][0]+’A’)的结果是:

A、A B、B

C、D D、E

13.下列关于main()函数说法正确的是

A、 C语言程序总是从main()开始执行

B、 C语言程序可以没有main()函数

C、C语言程序可以包含多个main()函数,但必须在不同的模块中

D、C语言程序中main()函数不能有形式参数

14.下列关于函数说法正确的是

A、 C语言程序的函数内还可定义其他的函数

B、 C语言程序的函数内不可再定义其他的函数

C、 C语言程序的函数不能自己调用自己

D、 C语言程序中只有同一源文件中的函数才能有调用与被调用关系

15.若#define squ(x) x*x 执行语句printf(“result=%d”,squ(i+j));结果为:

A、result=36 B、36 C、result=11 D、11

16. 若#define squ(x) (x)*(x) 执行语句printf(“result=%d”,squ(i+j));结果为:

A、result=36 B、result=17 C、result=11 D、result=25

17.C语言对宏命令叙述正确的是

A、 宏替换占用运行时间

B、 编译程序对宏命令的处理是在对源程序中其它成分编译之前进行的

C、 宏命令的处理是在程序执行时进行的

D、 宏命令的处理是在程序连接时进行的

18. 若执行语句a- =a+=a*=10;a的值为:

A、0 B、-10 C、-100 D、100

19.若执行语句p=arr; printf(“%d”,*(p+i));输出结果为

A、0 B、2 C、3 D、1

20.若执行printf(“%s”,ch);结果为:

A、’abc’ B、abc C、abcd D、abcd

21.若对数组进行初始化:char carr[ ]={’s’,’t’,’u’,’d’,’e’,’n’,’t’},barr[ ]=”student”;则正确的是

A、carr与barr长度相同 B、carr比barr长

C、carr与barr相同 D、carr比barr短

22.若有说明语句int (*p)[N];则p是

A、N个指向整型变量的指针 B、可指向有N个整型元素的一维数组的指针

C、指向N个整型变量的函数指针 D、有N个指针元素的一维指针数组

23.若有说明语句int *f( );则函数f是

A、f是一个指向整型变量的数组指针 B、f返回一个整型数据

C、f是一个指向整型变量的函数指针 D、f 返回一个整型指针,指向函数本身

24.若函数f定义如下:void f(char *d, char *s)

{ while ( *d++=*s++);

}

函数f的功能是:

A、串比较 B、串复制 C、求串长D、串反向

25.表达式100+a+’a’+x*z的值的数据类型为

A、int B、float C、double D、char

26.若要动态申请一个double型内存单元,正确的语句是

A、pd=double malloc(sizeof(double)) B、pd=( * double)malloc(sizeof(double))

C、pd=double * malloc(sizeof(double)) D、pd=(double *)malloc(sizeof(double))

27.若要从键盘上输入67892到变量n中,正确的语句是

A、scanf(“%lf”,&n); B、scanf(“%ld ”,&n);

C、scanf(“%lf ”,n); D、scanf(“%d ”,&n);

28.判断字符变量c是否不为小写英文字母的正确表达式是

A、’a’<=c <=’z’ B、c>= ‘a’ && c<=’z’

C、’a’≤c ≤’z’ D、c<’a’ || c>’z’

29.下列每组表达式被执行后,结果完全等价的是

A、 !(b= =0)与 !(!b ) B、b=(a=4,4*5) 与 b=a=4,4*5

C、float(i/j) 与 float i/j D、00 && x<100

30.表达式(m&1)==(m%2)的值是

A、 0 B、无法确定

C、 1 D、以上都不对

31.数学式ln2x+asin(60°)的C语言表达式是

A、log(2*x)+a*sin(60) B、ln(2*x) +a*sin(60/180*3.14)

C、ln(2*x) +a*sin(60) D、log(2*x)+a*sin(3.14*60/180)

32. 要打开一个已经存在的非空文件file用于修改,则正确的语句是

A、fopen(“file”,”r+”) B、fopen(“file”,”w”)

C、fopen(“file”,”a+”) D、fopen(“file”,”r”)

33. 若打开文件时发生错误,则fopen()函数的返回值是

A、1 B、0 C、不确定 D、没有返回值

34. 调用函数fseek(fp,-25L,2),其操作结果是

A、 文件位置指针从文件开始处前移25字节

B、文件位置指针从文件结尾处后移25字节

C、文件位置指针从文件当前位置处前移25字节

D、文件位置指针从文件当前位置处后移25字节

35. 能正确表示a和b同时为正或同时为负的逻辑表达式是

A、 (a>=0||b>=0)&&(a<0||b<0)

B、 (a>=0&&b>=0)&&(a<0&&b<0)

C、 (a*b>0&&(a*b<=0)

D、 a*b>0

36. 若x=y=z=1;表达式(x--||++y)&&(z++)执行后,x,y,z的值分别为:

A. 0,1,1 B. 0,1,2 C. 0,2,1 D. 0,2,2

37.下列变量的初始化,不正确的是:

A. int x,y=5; B. float x=y=3.5;

C. char s[]=”a”; D. int a[][3]={{1},{},{0,9}};

38. 可以代替while(x!=0)中的条件x!=0的是:

A. x B. !x C. x==1 D. x!=1

39.有关函数参数,下列说法不正确的是:

A. 实参和形参是不同的变量; B. 实参可以将数据传给形参;

C. 形参可以将数据传给实参; D. 实参和形参必须个数相等,类型一致。

40.为避免嵌套的条件语句if-else的二义性,C语言规定else与if的配对原则是:

A. 同一行上的未配对if B. 缩排位置相同的未配对if

C. 它之前最近的未配对的if D. 它之后最近的未配对if

41.对于一个二维数组,以下几种方法中,不能正确表示i行j列元素的是:

A.td[i][j] B. *(td[i]+j) C. *(*(td+i)+j) D.*(td+i+j)

42.下面语句段不是死循环的是:

A. for(i=1;;i++) B. k=0;

s=s+i; do{ k++;

}while(k>0);

C. i=0; D. a=1;

while(1) while(a<10)

{ i++; { if(a>5) continue;

if(i==20) break; } a++; }

43.下列字符串中,可以用作变量名的是:

A. _out2 B. 12abc C. while D. stu&3

44. 表达式0A. 0和0 B. 0和1 C. 1和0 D. 1和1

45.下列常数中,符合C语法规则的是:

A. ‘’ B. .5e2 C. 018 D. e3

46.以下为合法的整型常量的是:

A. 027a B. 0.0 C. 0x4e3 D. 3×102

47.以下为合法的整型常量的是:

A. ‘3’ B. 281 C. 5af D. ‘101’

48.以下为合法的实型常量的是:

A. 1.5×102 B. 1e-5 C. 1e1.5 D. E+5

49.以下为合法的实型常量的是:

A. π B. .5 C. 025.3 D. 0

50.以下为合法的字符型常量的是:

A. "A" B. 64 C. '啊 ' D. 'n'

51. 以下为非法的字符型常量的是:

A. ‘ok’ B. ‘*’ C. ‘A’ D.‘111’

52. 以下为合法的变量定义的是:

A. #define N 10 B. int a=12,b,c; float x,y,a=1.5;

int a[3*N];

C. int m,f(x); D. char c,*pc=&c,n;

53.以下为非法的变量定义的是:

A. char 21cn; B. int k=0,*p=&k;

C. int a=b=c=21; D. static char[4]=”Good”;

54.以下是合法的表达式的是:

A. y=mn B. (x+y)++ C. x+y=8 D. putchar('A ')

55. 以下是非法的表达式的是:

A. a+=b*c B. i=0,k=k++ C. k==0 D. !a||m≤n &&7

56.下是非法赋值语句的是:

A.a+b=0 B. pc=&x

C. ps->name=”Tan Jing” D. static char[4]=’G’,’o’,’o’,’d’

二、程序理解题(指出程序执行的结果)

1. #include

main( )

{ int i,j,x=0;

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

{ x++;

for (j=0;j<3;j++) { if (j%2 ) continue;

x++;

}

x++;

}

printf(“x=%dn”,x);

}

2. #include

main( )

{ int k=0,j,x=0;

while (k<2)

{ ++x;

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

{ if (j%2 ) break;

x++;

}

k++; ++x;

}

printf(“x=%dn”,x);

}

3. #include

main()

{int a=2,b=7,c=5;

switch (a>0)

{case 1:switch (b<0)

{ case 1: printf(“$”);break;

case 2: printf(“!”); break;

}

case 0: switch (c= =5)

{ case 0: printf(“*”);break;

case 1:printf(“#”);break;

default: printf(“%”);

}

default: printf(“&”);

} printf(“n”);

}

4. main()

{ int i,sum=0;

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

{ sum+=i;

if (sum>10) break;

printf(“sum=%-5dn”,sum);

}

}

5. 若输入字符串program时,下列程序输出为:

#include

main()

{ char str[80];

void prochar(char *str,char ch);

scanf(“%s”,str);

prochar(str,’r’);

puts(str);

}

void prochar(char *str,char ch)

{ char *p;

for (p=str;*p!="";p++)

if (*p==ch){*str=*p;(*str)++;str++;}

*str="";

}

6. #include #include

main()

{ int i,j,temp, d[4][4]={{1,2,3,4},{5,6,7,8},{4,3,2,1},{1,2,3,4}};

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

for (j=0;jif (d[i][j]>d[j][i]) d[j][i]=d[i][j];

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

{ printf("n");

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

if (j>=i) printf("%6d",d[i][j] ) ;

else printf("%6c"," ") ;

}

}

7. #include

main()

{ int k;

printf("n");

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

switch(k%2)

{case 0: printf("#");break;

case 1: k+=2;printf("*");

defalt: printf("n");

}

}

8. int d=1;

fun(int p)

{ static int d=5;

d+=p;

printf("(f)%-4d",d);

return (d);

}

main()

{int a=3;

printf("n(m)%d",fun(a*fun(d)));

}

9. #include main()

{char a[2][6]={"sun","moon"};

int j,i,len[2];

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

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

if (a[i][j]=="")

{ len[i]=j;

break;

}

printf("%8s:%dn",a[i],len[i]);

}

10. int x=2,y=4;

f1(int x)

{ x++;y++;

printf(“f1:x=%d,y=%dn”,x,y);

}

f2(int *y)

{ x++;(*y)++;

printf(“f2:x=%d,y=%dn”,x,*y);

}

main()

{ int y=6;

f1(x);f2(&y);

printf(“main:x=%d,y=%d”,x,y);

}

三、程序填空题

1.从键盘输入两个整数,按由大到小输出,程序如下:

main( )

{ int a,b;

scanf(“%d,%d”,&a,&b);

if ( ) swap( );

printf(“%d,%d”,a,b);

}

void swap(int * x,int * y)

{

t= *x; ; *y=t;

}

2.输入任意多个十进制正整数,将其对应的二进制数的各位反序,形成新的十进制数输出。当输入0时程序结束。例如:输入13,13→1101→1011→11,输出11。

#include

main()

{ int x,y,m,t;

printf(“Enter a integer:”);

scanf(“%d”,&x);m=x;

while ( )

{ y=0;

do

{ t=x%2;

y=

x=x/2;

} while ( );

printf(“nOld integer is:%d,New integer is: %d”,m,y);

printf(“Enter a integer:”);

scanf(“%d”,&x);

}

}

3. 以下函数creatlist用来建立一个带头节点的单向链表,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回。读入时字符以#表示输入结束(#不存入链表)。

struct node

{char data;

struct node *next;

};

creatlist()

{struct node *head,*s,*r;char ch;

head=(struct node *)malloc(sizeof(struct node));

r=head;

ch=getchar();

while (ch!=’# ’)

{s=(struct node *)malloc(sizeof(struct node));

s->data=

r->next=s;

ch=getchar();

}

r->next=

}

4. 程序功能:输出10~100之间的全部素数,每行显示5个。

#include

main()

{ int i, j,

for(i=11; i<=100; i+=2)

{ for(j=2; ; j++)

if(i%j= =0) ;

if( j >= i ) {

counter++;

if( ) printf("n");

}

}

}

5. 求菲波那契数列第n项的值。n由键盘输入。菲波那契数列的第一、二项为1,以后各项为前两项之和。即:f1=f2=1,fn=fn-1+fn-2

#include

main()

{ int k,n,f1,f2,f;

scanf( ) ;

f1=f2=1;

if ( ) f=1 ;

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

{ f=f1+f2 ;

f1=f2;

;

}

printf("fibonacci number=%dn",f);

}

6.从键盘上输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。

#include

main()

{int data,temp,k;

static int a[9]={-10,2,4,8,10,15,25,50};

printf("nEnter a data:");

scanf("%d",&data);

;

for (k=8; ;k- -)

if (a[k] ;

a[k]=a[k-1];

a[k-1]=temp;

}

else ;

for (k=0; ;k++)

printf("%7d",a[k]);

}

7.求1!+2!+…+9!+20!,程序如下:

#include

main()

{float sum=0; int k;

for (k=1; ;k++)

sum+=jiecheng(k);

printf( ,sum);

}

float jiecheng(int n)

{ int j;

for (j=1; ; j++) t=t*j;

}

8. 从键盘上输入一个整数字符串,将其转换为一个整数,如输入“-1234”转换为-1234。

#include

#include

main()

{char s[6];

int n;

gets(s);

if (*s=="-") n= ;

else n=chnum(s);

printf("%dn",n);

}

int chnum(char *p)

{ int num=0,k,len,j;

len=strlen(p);

for (; ;p++)

{k= ;

j=(--len);

while (j-->0) ;

num=num+k;

}

;

}

9.以下程序从键盘输入10个不相同的数到数组a中,再输入一个数到x中,在a中查找与x值相同的元素所在的位置,填空完善该程序。

main()

{int a[11],x,i;

printf("Input 10 integers:n");

for(i=1; ;i++)

scanf("%d", );

printf("Input x:");

scanf("%d",&x);

*a=x;i=10;

while (x!=*(a+i))

if ( ) printf("%6d"s position is :%3dn",x,i);

else printf("%6d Not bee found !n",x);

}

10. 从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。 #include main()

{int i=0,c[52]={0},m=0;

char str[80];

printf("Input a string:");

scanf( ,str);

while (str[i])

{ if (str[i]>="A" && ) c[str[i]-"A"]++;

if (str[i]>="a" && str[i] <="z") ;

i++;

}

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

if (c[i]){ if (m%8==0) putchar("n");m++;

printf("%c:%-d ",i+"A",c[i]);

}

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

if (c[i+26]){if (m%8==0) putchar("n");m++;

printf("%c:%-d ", ,c[i+26]);

}

}

四、用波浪线标出错误,并在空白处改正(不要重写程序)

1. 从键盘上输入一个数,判断其是否为素数

#include

main()

{ int a,flag,k;

scanf(“%d”,a);flag=1;

for (k=2;kif (a/k=0) {break;flag=0;}

if (flag=0);

printf(“%d” is a prime number”,a);

}

2. 计算分段函数的值

2-x 0≤x<1

1+

x 1≤x<3

y= 2-0.5(x-3) 3≤x<6

x2 6≤x<10

#include

main()

{ float x,y;

printf("Input a data:");

scanf("%d",%x);

if (x<0 && x>=10 ) printf("Input error!n");

else { if (0≤x<1) y=2-x;

else if (x<3) y=1+1/2x;

else if (x<6) y=2-0.5*(x-3.0);

if (x<10) y=x2;

printf("x=%.2f,y=%.1fn",x,y);

}

}

3. 计算下列分段函数的值

x 64≤x<81

y= x+4 49≤x<64

-1 25≤x<49

0 其它

#include

main()

{int x; y ;

scanf(“%d”, x );

switch ( sqrt(x) )

{ case 8: y=fabs(x);break;

case 7: y=2/3x+4;break;

case 5,6:y=

+1 ;

default: y=0;

}

printf(“y=%.2f”,&y);

}

4. 将“computer”按逆序显示,程序如下

#include

main()

{char a[]=‘computer’;

void print(char *str)

print(&a);

}

void print(char *str)

{char *str ;

int count ;

if (*str!="")

{ while (*str){ str++;count++;}

str - -;

while(count- -){printf("%c", str);str++ ;}

}

}

5.求满足如下条件的最大自然数n.:12+22+32+…+n2≤1000

#include

main()

{int n=s=0;

while (s<=1000);

{ n++;

s+=s+n*n;

}

print("n=%d",n );

}_

五、编程题

1.从键盘上输入不超过50个非0数,计算这些数的平均值并输出,输出高于平均值的数。输入0时结束。

2.计算 1+++…+

3. 回文是从前向后读与从后向前读都是一样的句子。编写一函数判断字符串是否为回文。字符串(少于80字符)从主函数中输入。

4. 公鸡5元一只,母鸡3元一只,小鸡一元3只,100元买100鸡,求有多少中买法并输出所有可能的买法,。

5.求1000以内的完全数。一个整数如果正好等于它的因子之和(自身除外),则称该数是完全数。如6=1+2+3,所以6是完全数。

6.用下面的公式求π的近似值,要求最后一项的绝对值小于10-4为止。

公式为:π/4≈1-1/3+1/5-1/7+1/9-1/11+…

题型题量及分值

一、选择题:在每小题给出的四个选项中,只有一项是符合题目要求的,请把所选项前的字母填在题后的括号内。

二、阅读程序,写出执行结果。

三、程序填空题。

四、程序改错题。波浪线标出错误,在空白处改正(不得重写程序)。

五、编写程序。

参 考 答 案

一、单项选择题

1. A 2. D 3. D 4. D 5. B 6. B 7. D 8. B 9. B 10. A

11.D 12.D 13. A 14.B 15.C 16 .D 17.B 18. A 19.C 20.B

21. D 22. B 23 .C 24 B 25.C 26.D 27.B 28 D 29 A 30.C

31. D 32.A 33 . B 34. B 35. D 36.B 37.B 38.A 39.C 40.C

41.D 42. C 43. A 44.C 45.D 46.C 47.B 48.B 49.B 50.D

51. A 52. A 53.B 54. D 55. D 56.C

二、程序理解题(指出程序执行的结果)

1. x=8

2. 程序输出为:x=6

3. 程序输出为:#&

4. 程序输出为:

sum=1

sum=3

sum=6

sum=10

5.当键盘输入program.时,下列程序的输出: pogam

6. 程序输出为: 1 5 4 4

6 7 8

2 3

4

7. 程序输出为:

*

#*

#*

8. 程序输出为:

(f)6 (f)24

(m)24

9 . sun:3

moon:4

10. f1:x=3 ,y=5

f2:x=3 ,y=7

main:x=3 ,y=7

三、程序填空题

1.void swap(int * x,int * y); a2.x!=0 、 y+2*t 、 x!=0 、 m=x;

3. 以下函数creatlist用来建立一个带头节点的单向链表,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回。读入时字符以#表示输入结束(#不存入链表)。

struct node

{char data;

struct node *next;

};

struct node creatlist()

{struct node *head,*s,*r;char ch;

head=(struct node *)malloc(sizeof(struct node));

r=head;

ch=getchar();

while (ch!=’# ’)

{s=(struct node *)malloc(sizeof(struct node));

s->data= ch

r->next=s;

r=s;

ch=getchar();

}

r->next= NULL

return head;

}

4. 输出10~100之间的全部素数,每行显示5个。

#include

main()

{ int i, j, counter=0;

for(i=11; i<=100; i+=2)

{ for(j=2; j< i; j++)

if(i%j= =0) break;

if( j >= i ) { printf("%8d",i);

counter++;

if(counter%5= =0) printf("n");

}

}

}

5. 求菲波那契数列第n项的值。n由键盘输入。菲波那契数列的第一、二项为1,以后各项为前两项之和。即:f1=f2=1,fn=fn-1+fn-2

#include

main()

{ int k,n,f1,f2,f;

scanf("%d",&n) ;

f1=f2=1;

if (n<=2) f=1 ;

else for ( k=3;k<=n;k++)

{ f=f1+f2 ;

f1=f2;

f2=f;

}

printf("fibonacci number=%dn",f);

}

6.从键盘上输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。

#include

main()

{int data,temp,k;

static int a[9]={-10,2,4,8,10,15,25,50};

printf("nEnter a data:");

scanf("%d",&data);

a[8]=data;

for (k=8;k>0;k- -)

if (a[k] temp=a[k];

a[k]=a[k-1];

a[k-1]=temp;

}

else break;

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

printf("%7d",a[k]);

}

7.求1!+2!+…+9!+20!,程序如下:

#include

main()

{float sum; int k;

float jiecheng(int n);

sum=0;

for (k=1;k<=20;k++) sum+=jiecheng(k);

printf(“sum=%.1f”,sum);

}

float jiecheng(int n)

{ int j; float t=1;

for (j=1;j<=n; j++) t=t*j;

return t;

}

8. 从键盘上输入一个整数字符串,将其转换为一个整数,如输入“-1234”转换为-1234。

#include

#include

main()

{char s[6];

int n;

gets(s);

if (*s=="-") n=-chnum(s+1);

else n=chnum(s);

printf("%dn",n);

}

int chnum(char *p)

{ int num=0,k,len,j;

len=strlen(p);

for (;*p!="";p++)

{k=*p-"0";

j=(--len);

while (j-->0) k=k*10;

num=num+k;

}

return num;

}

9. 以下程序从键盘输入10个不相同的数到数组a中,再输入一个数到x中,在a中查找与x值相同的元素所在的位置,填空完善该程序。

main()

{int a[11],x,i;

printf("Input 10 integers:n");

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

scanf("%d",a+i);

printf("Input x:");

scanf("%d",&x);

*a=x; i=10;

while (x!=*(a+i))

i--;

if (i) printf("%6d"s position is :%3dn",x,i);

else printf("%6d Not bee found !n",x);

}

10. 从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。

#include main()

{int i=0,c[52]={0},m=0;

char str[80];

printf("Input a string:");

scanf("%s",str);

while (str[i])

{ if (str[i]>="A" && str[i] <="Z") c[str[i]-"A"]++;

if (str[i]>="a" && str[i] <="z") c[str[i]-"a"+26]++;

i++;

}

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

if (c[i]){ if (m%8==0) putchar("n");m++;

printf("%c:%-d ",i+"A",c[i]);

}

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

if (c[i+26]){if (m%8==0) putchar("n");m++;

printf("%c:%-d ",i+"a",c[i+26]);

}

}

四、用波浪线标出错误,并在空白处改正(不要重写程序)

1.从键盘上输入一个数,判断其是否为素数

#include

main()

{ int a,flag,k; 改为:

scanf(“%d”,a);flag=1; &a

for (k=2;k;k++) kif (a/k=0) {break;flag=0;} a%d==0 {flag=0;break;}

if (flag=0); (flag==1) 去掉;

printf(“%d” is a prime number”,a);

}

2.计算分段函数的值

2-x 0≤x<1

1+1/2x 1≤x<3

y= 2-0.5(x-3) 3≤x<6

x2 6≤x<10

#include

main() 改为:

{ float x,y;

printf("Input a data:");

scanf("%d",%x); “%f”,&x

if (x<0 && x>=10 ) printf("Input error!n"); ||

else { if (0≤x<1) y=2-x; x>=0 && x<1

else if (x<3) y=1+1/2x; y=1+1.0/2*x;

else if (x<6) y=2-0.5*(x-3.0);

if (x<10) y=x2; else if (x<10)y=x*x;

printf("x=%.2f,y=%.1fn",x,y);

}

}

3. 计算下列分段函数的值

x 64≤x<81

2/3x+4 49≤x<64

-1 25≤x<49

1 其它

改为: #include

main()

{int x; y ; float x,

scanf(“%f”, x ); &x

switch( sqrt(x) ) (int) sqrt(x)

{ case 8: y=fabs(x);break; y=x;

case 7: y=2/3x+4;break; 2.0/3*x+4;

case 5,6:y=

+1 ; case 5: case 6:y=sqrt(x)-1;break;

default: y=0;

}

printf(“y=%.2f”,&y); y

}

4. 将“computer”按逆序显示,程序如下

#include

main() 改为:

{char a[]=‘computer’; “computer”

void print(char *str);

print(&a); a

}

void print(char *str)

{char *str ; char *str

int count ; count=0;

if (*str!=) ‘’

{ while (str){ str++;count++;} *str

str - -;

while(count- -)

{printf("%s", *str);str++ ;} %c str--

}

}

5.求满足如下条件的最大自然数n.:12+22+32+…+n2≤1000

#include 去掉;

main()

{int n=s=0; n=0,s=0;

while (s<=1000);

{ n++;

s+=s+n*n; s=s+n*n;

}

print("n=%d",n ); printf

}

五、编程题

1. 从键盘上输入不超过50个非0数,计算这些数的平均值并输出,输出高于平均值的数。输入0时结束。

#include

main()

{ float data[50],ave,sum=0,x;

int i,n=0,count;

printf("Input data:");

scanf("%f",&x);

while (x!=0&&n<=50)

{ sum+=x;

data[n++]=x;

scanf("%f",&x);

}

ave=sum/n;

printf("average= %fn",ave);

for (count=0,i=0;iif (data[i]>=ave)

{ printf("%fn",data[i]);

count++;

if (count%8= =0) printf(“n”);

}

}

2.计算 1+++…+

#include

main()

{ int i,n,s;

float sum;

scanf("%d",&n);

s=0; sum=0.0;

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

{ s+= i;

sum+=1.0/s ;

}

printf("sum=%fn",sum);

}

3. 回文是从前向后读与从后向前读都是一样的句子。编写一函数判断字符串是否为回文。字符串(少于80字符)从主函数中输入。

#include

#include

int huiwen(char str[])

{ int i=0,j, flag=0;

j=strlen(str)-1;

while (iif (i>=j) flag=1;

return flag;

}

main()

{ char str[80];

printf("Enter string:"); gets(str);

if (huiwen(str)) printf("%s is a palindroman",str);

else printf("%s is not palindroman",str);

}

4. 公鸡5元一只,母鸡3元一只,小鸡一元3只,100元买100鸡,列出所有可能的买法。

main()

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

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

for (j=1;j<=33;j++)

{k=100-i-j;

if (i*5+j*3+k/3==100) && (k%3==0) /* ((i*15+j*9+k==300)) &&(k%3==0))*/

{printf("i=%5dj=%5dk=%5dn",i,j,k);m++;}

}

printf("m=%dn",m);

}_

5.求1000以内的完全数。一个整数如果正好等于它的因子之和(自身除外),则称该数是完全数。如6=1+2+3,所以6是完全数。

#include

main()

{int k, s=0,a;

for (a=1;a<=1000;a++)

{ for(k=1;k<=a/2;k++)

if (a%k= =0) s+=k;

if (s= =a) printf(“%-5d”,a);

}

}

6.用下面的公式求π的近似值,要求最后一项的绝对值小于10-4为止。

公式为:π/4≈1-1/3+1/5-1/7+1/9-1/11+…

#include

#include

main()

{ float pi,temp,n;

int s=1;

pi=0; n=1; temp=1;

while (fabs(temp) >= 1e-4)

{ temp=s/n;

pi+=temp;

n+=2;

s=-s;

}

pi=pi*4;

printf("pi = %.4fn",pi);

}

本文如果对你有帮助,请点赞收藏《C语言程序设计复习题》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
北京交通大学《C语言程序设计(专)》复习题A

北京交通大学《C语言程序设计(专)》复习题A

一、 单选题1. 若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A )。for (i=5;i;i--)for(j=0;j=10 or a=0|a=10 && a=10 || ad) x=1;}else x=2;printf(“%dn”,x);}参考答案:020. 补充完整以下程序,实现数组第一个元素和最后一个元素...

2023-01-11 #经典句子

程序语言的魅力

程序语言的魅力

C语言:C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。...

2008-02-20 #经典句子

海南专升本-《C语言程序设计》课程考试大纲

海南专升本-《C语言程序设计》课程考试大纲

海南奥赛专升本资料《C语言程序设计》课程考试大纲关于大纲的说明:1.考核目标:本大纲在考核目标:掌握程序设计的基本步骤和通用方法,提高通过编写程序解决实际问题的能力。其中:(1)基本要求:要求学生掌握C语言...

2014-09-25 #经典句子

新手上路?最全的C语言基础知识都在这了

新手上路?最全的C语言基础知识都在这了

C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言...

2014-09-23 #经典句子

NOIP信息化奥赛高级程序设计语言应该学它 正视现实 不要走错路

NOIP信息化奥赛高级程序设计语言应该学它 正视现实 不要走错路

...动力。根据相关报道,NOIP信息化奥赛要求掌握一门高级程序设计语言,分别为Pascal、C、/C++。那么我们应该选择学哪一门呢?这个,你不用再纠结了,别人已经替你做好了选择,因为到2022年将被全部取消Pascal,2022年将部分取消C...

2023-10-30 #经典句子

不同语言的程序员不要再相互鄙视了!

不同语言的程序员不要再相互鄙视了!

...,总认为自己是最牛的,其他人都是垃圾,不同的计算机语言之间也存在着鄙视链,今天就来盘点一下,这其中的一些事情,看看能否从中得出什么结论。 业界程序员鄙视链普遍存在这样一个鄙视链,低级语言鄙视高级语言...

2023-10-07 #经典句子

程序设计基础(C语言程序设计)最后附答案

程序设计基础(C语言程序设计)最后附答案

一、单选题(每题2分,共60分)1. C语言源程序扩展名是( )。A、c B、obj C、exe D、h2. 算法的空间复杂度是指( )。A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、...

2023-01-02 #经典句子

C语言陷阱与技巧第24节 做代码选择 不一定都要使用 if 判断的

C语言陷阱与技巧第24节 做代码选择 不一定都要使用 if 判断的

在C语言程序开发中,实现需求的解决方案往往不止一个。解决一个问题,程序员一般都能够设计出多个解决方案,并写出相应的C语言代码。可能有读者会觉得,解决问题的话,写出一种方法就可以了,给出多个方法没有意义,...

2013-10-30 #经典句子