南昌大学 信工学院 C 语言程序设计 综合练习

发布时间:2024-11-07

南昌大学 信工学院 C 语言程序设计 综合练习

一、 简答题

1. 用N-S图表示判断素数的算法。

2. 阅读以下程序,写出程序的运行结果:

#include <stdio.h>

void main()

{

char c1,c2;

c1='a';

c2='b';

c1=c1-32;

c2=c2-32;

printf("%c %c",c1,c2);

}

程序运行结果为__A B__________________

3. 阅读以下程序,写出程序的运行结果:

main()

{

int c=5;

printf("%d,%d,%d\n",c+=c++,c+8,++c);

c=5;

printf("%d\n",(c+=c++,c+8,++c));

c=5;

printf("%d\n",c+=c++,c+8,++c);

}

程序运行结果为_:12,14,6

12

12_

4阅读以下程序,写出程序的运行结果:

main ( )

{

int day,x1,x2;

day=9;

x2=1;

while(day>0){

x1=(x2+1)*2;

x2=x1;

day--;

}

printf(“total=%d\n”,x1);

}

程序运行结果为____________________

4. 阅读以下程序,写出程序的运行结果:

#include <stdio.h>

void main()

{

int i;

int f[10]={1,1};

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

f[i]=f[i-2]+f[i-1];

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

{

if(i%5==0) printf("\n");

printf("%12d",f[i]);

南昌大学 信工学院 C 语言程序设计 综合练习

}

} 程序运行结果为____________________

5. 阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0: a++; break;

case 1: b++; break;

}

case 2: a++; b++; break;

case 3: a++; b++;

}

printf(“a=%d,b=%d\n”,a,b);

}

程序的运行结果是

6. 阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{ int a[ ]={1,2,3,4},y,*p=&a[3];

--p; y=*p; printf(“y=%d\n”,y);

}

程序的运行结果是

7. 阅读以下程序并写出其运行结果

#include <stdio.h>

void fun(int *s, int nl, int n2)

{ int i, j, t ;

i=nl; j=n2;

while(i<j) { t=s[i]; s[i]=s[j]; s[j]=t; i++; j--; }

}

main()

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

fun(a,0,3); fun(a,4,9); fun(a,0,9);

for(k=0;k<10;k++)printf(“%d”,a[k]); printf(“\n”);

}

程序运行的结果是

8. 阅读以下程序并写出其运行结果

#include <stdio.h>

int f(int x)

{ int y;

if(x==0||x==1) return (3);

y=x*x-f(x-2);

return y;

}

main()

{ int z;

z=f(3);

printf(“%d\n”,z);

}

程序的运行结果是

9. 阅读以下程序并写出其运行结果

#include <stdio.h>

#include <string.h>

typedef struct { char name[9]; char sex; float score[2];

void f( STU a)

} STU;

南昌大学 信工学院 C 语言程序设计 综合练习

{ STU b={“Zhao” , m ,85.0,90.0} ; int i;

strcpy(http://,http://);

a.sex=b.sex;

for(i=0;i<2;i++) a.score[i]=b.score[i];

}

main()

{ STU c={“Qian”, p ,95.0,92.0};

f(c);

printf(“%s,%c,%2.0f,%2.0f\n”,http://,c.sex,c.score[0],c.score[1]);

}

程序的运行结果是

10.阅读以下程序,写出程序的运行结果:

#include <stdio.h>

void main()

{

int i,j,row=0,colum=0,max;

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

max=a[0][0];

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

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

if (a[i][j]>max)

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%d,row=%d,colum=%d\n",max,row,colum);

}

程序运行结果为____________________

11.阅读以下程序,写出程序的运行结果:

#include <stdio.h>

#define PI 3.1415926

#define S(r) PI*r*r

void main()

{float a,area;

a=3.6;

area=S(a);

printf("r=%6.2f\narea=%6.2f\n",a,area);

}

程序运行结果为____________________

12.阅读以下程序,写出程序的运行结果:

#include <stdio.h>

void main()

{

void exchange(int *q1, int *q2, int *q3);

int a,b,c,*p1,*p2,*p3;

a = 22; b = 56; c = 128;

p1=&a;p2=&b;p3=&c;

exchange(p1,p2,p3);

printf("\n%d,%d,%d\n",a,b,c);

}

void exchange(int *q1, int *q2, int *q3)

{

void swap(int *pt1, int *pt2);

if(*q1<*q2) swap(q1,q2);

南昌大学 信工学院 C 语言程序设计 综合练习

if(*q1<*q3) swap(q1,q3);

if(*q2<*q3) swap(q2,q3);

}

void swap(int *pt1, int *pt2)

{

int temp;

temp=*pt1;

*pt1=*pt2;

*pt2=temp;

}

程序运行结果为____________________

13.阅读以下程序,写出程序的运行结果:

#include <stdio.h>

void main()

{

int fac(int n);

int i;

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

printf("%d!=%d\n",i,fac(i));

}

int fac(int n)

{

static int f=1;

f=f*n;

return(f);

}

程序运行结果为____________________

14.阅读以下程序,写出程序的运行结果:

#include <stdio.h>

void main()

{

int n;

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

{if (n%3==0)

continue;

printf("%d ",n);

}

}

程序运行结果为____________________

15.阅读以下程序并写出其运行结果

#include<stdio.h>

main()

{ int x[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}, *p[4], i ;

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

{ p[i]=&x[2*i+1] ;

printf(“%d ”,p[i][0]) ;

}

printf(“\n”);

}

程序的运行结果是

16.阅读以下程序并写出其运行结果

#include<stdio.h>

void fun(int x)

{ if(x/2>0) fun(x/2);

南昌大学 信工学院 C 语言程序设计 综合练习

printf(“%d ”,x);

}

main()

{ fun(3);

printf(“\n”);

}

程序的运行结果是

17.阅读以下程序并写出其运行结果

#define MAX(a,b) (a>b)?a:b

main()

{

int x, y;

x=25;

y=56;

printf("the result is: %d\n", MAX(x,y));

}

程序的运行结果是

18.阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{

int i, j;

i=1;

while(i<=5){

j=1;

while(j<=i){

printf("%5d", j);

j++;

}

printf("\n");

i++;

}

}

程序的运行结果是

19.阅读以下程序并写出其运行结果

#incude <stdio.h>

main()

{

int i, n3, n2, n1;

i=1;

while(i<=99){

n3=i/100;

n2=(i-n3*100)/10;

n1=i%10;

if((i%3==0)&&(n2==5||n1==5))

printf("%5d", i);

i++;

}

}

程序的运行结果是

20.阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{ int x=8;

for( ; x>0 ; x--)

{ if(x%3) { printf(“%d,”,x--); continue; }

printf(“%d,”,--x);

}

南昌大学 信工学院 C 语言程序设计 综合练习

}

程序的运行结果是

21.阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{ int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++) c[s[i]]++;

for(i=1;i<5;i++) printf(“%d”,c[i]);

printf(“\n”);

}

程序的运行结果是

22.阅读以下程序并写出其运行结果

#include <stdio.h>

#include <string.h>

void fun(char *s[ ],int n)

{ char *t;

int i,j;

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

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

if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]=s[j];s[j]=t;}

}

main()

{ char *ss[]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc” };

fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]);

}

程序的运行结果是

23.阅读以下程序并写出其运行结果

#include <stdio.h>

void fun(char *a, char *b)

{ while(*a== * ) a++;

while(*b=*a) {b++;a++;}

}

main()

{ char *s=”****a*b****”,t[80];

fun(s,t);

puts(t);

}

程序的运行结果是

24.阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{ FILE *fp;

int a[10]={1,2,3},i,n;

fp=fopen(“dl.dat”,”w”);

for(i=0;i<3;i++) fprintf(fp,”%d”,a[i]);

fprintf(fp,”\n”);

fclose(fp);

fp=fopen(“dl.dat”,”r”);

fscanf(fp,”%d”,&n);

fclose(fp);

printf(“%d\n”,n);

}

程序的运行结果是

25.阅读以下程序并写出其运行结果

#include<stdio.h>

南昌大学 信工学院 C 语言程序设计 综合练习

void swap( int *a, int *b )

{ int *t ;

t=a; a=b; b=t;

}

main()

{ int i=3,j=5,*p=&i,*q=&j;

swap(p,q); printf(“%d %d\n”,*p,*q);

}

程序的运行结果是

26.阅读以下程序并写出其运行结果

#include<stdio.h>

main()

{ int a[5]={2,4,6,8,10}, *p;

p=a; p++;

printf(“%d”,*p);

}

程序的运行结果是

27.阅读以下程序并写出其运行结果

#define LAB1 1

#define LAB2 2

main()

{

int temp;

#ifdef LAB1

temp=LAB1;

#else

temp=LAB2;

#endif

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

}

程序的运行结果是

28.阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{

int i, j;

char ch;

i=1;

while(i<=5){

j=1;

ch='a';

while(j<=i){

printf("%2c", ch);

ch=ch+1;

j++;

}

printf("\n");

i++;

}

}

程序的运行结果是

29.阅读以下程序并写出其运行结果

#include <stdio.h>

main()

{

南昌大学 信工学院 C 语言程序设计 综合练习

int a[21], i, j;

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

a[i]=i;

i=1;

while(i<20){

i++;

if(a[i]!=0){

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

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

a[i*j]=0;

} }

}程序的运行结果是

二、 阅读以下各段代码,在其中空白处填入合适的语句,使之成为一个正确的程序或函数。

1. 以下程序从名为 filea.dat 的文本文件中逐个读入字符并显示在屏幕上。请填空:

#include<stdio.h>

main()

{ FILE *fp;

char ch ;

fp=fopen( ) ;

ch=fgetc(fp) ;

whlie( !feof(fp) )

{ putchar(ch) ;

ch=fgetc(fp);

}

putchar( \n );

fclose(fp);

}

2. 下述程序用“碾转相除法”计算两个整数m和n的最大公约数。该方法的基本思想是计算m和n相除的

余数,如果余数为0则结束,此时的被除数就是最大公约数。否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填空使程序完整。

main ( ){

int m,n,w;

scanf(“%d,%d”,&m,&n);

while (n) {

w = ;

m = ;

n = ;

}

printf(“%d”,m);

}

3. 下面函数的功能是将一个整数字符串转换为一个整数,例如: "1234" 转换为1234,请填空使程序完整。

int chnum(char *p){

int num=0, k, len, j ;

len = strlen(p) ;

for ( ; ; p++) {

k = ;

j=(--len) ;

while ( ) k = k*10 ;

num = num + k ;

}

return (num);

南昌大学 信工学院 C 语言程序设计 综合练习

}

4. 下面程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用

outone函数输出此动态存储单元中的数据, 填空完成此程序。

#include "stdlib.h"

void getone(int **s);

void assone( int *);

void outone( int *);

void getone(int **s){

s = (__________)malloc(sizeof(int));

}

void assone(int *s){

scanf("%d",__________);

}

void outone (int *b){

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

}

main(){

int *p;

getone(&p);

assone(p);

outone(p);

}

5. 完成以下字符串拷贝函数(将*from串拷贝到*to串):

void copy_string(char *from, char *to)

{

for(; *from != '\0'; __________________;)

________________________;

to[i]='\0';

}

6. 以下程序从键盘输入10个整数到数组a, 然后依次输出10个数组元素

#include <stdio.h>

void main()

{

int *p,i,a[10];

p=a;

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

scanf("%d",p++);

printf("\n");

____________________;

for(__________________________)

printf("%d ",*p);

}

7. 所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,

因为153=13+53+33。完成以下程序使之可打印出100~1000内的全部”水仙花数“。

main ( )

{

int i,j,k,n;

printf(““水仙花数”是:”);

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

{

i= n/100;; /*取百位数*/

j=___________; /*取十位数*/

k=n%10; /*取个位数*/

if (_________________________)

南昌大学 信工学院 C 语言程序设计 综合练习

printf(“%4d”,n);

}

printf(“\n”);

}

8. 以下程序用来求两整数的绝对值和。请填空。

#include<stdio.h>

void main()

{ int x,y;

printf("Please input x,y:");

scanf("%d%d",&x,&y);

if (x<0) ____________ ;

if (_________) y=-y;

printf("\n|x|+|y|=%d\n",x+y);

}

9. 以下程序可计算1名学生10门课成绩的平均分,将缺省语句填上。

#include<stdio.h>

float average(float array[10])

{ int i;float aver,sum=array[0];

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

sum += ______________;

aver = sum / 10;;

return(aver);

}

void main()

{ float score[10],aver;

int i;

printf("\n input 10 scores:");

for(i=0;i<10;i++) scanf("%f",&score[i]);

aver= ___________ ;

printf("\n average score is %5.2f\n",aver);

}

10.以下程序中函数 fun 的功能是:统计 person 所指结构体数组中所有性别(sex)为 M 的记录的个数,存

入变量 n 中,并做为函数值返回。请填空:

#include<stdio.h>

#define N 3

typedef struct

{ int num ;

char nam[10] ;

char sex ;

} SS ;

int fun(SS person[])

{ int i, n=0 ;

for(i=0;i<N;i++) if(== M ) n++ ;

return n;

}

main()

{ SS W[N]={ {1,”AA”, F }, {2,”BB”, M }, {3,”CC”, M } };

int n;

n=fun(W);

printf(“n=%d\n”,n);

}

x yz yF(x,y,z) x yz y,请填空使程序完整。 11.以下程序的功能是计算函数

南昌大学 信工学院 C 语言程序设计 综合练习

# include <stdio.h>

;

main ( ) {

float x,y,z,f ;

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

f = fun ( );

f += fun ( );

printf(“f=%d”,f);

}

float fun(float a,float b){

return (a/b) ;

}

12.下面函数的功能使统计子串substr在母串str中出现的次数,请填空使程序完整。

int count(char *str, char *substr){

int i,j,k,num=0;

for ( i=0; ; i++)

for ( , k=0; substr[k] == str[j]; k++; j++)

if (substr [ ] == \0 ) {

num++ ; break ;

}

return (num) ;

}

13.已知如下公式:

1121231234 1 23353573579

下面程序的功能使根据上述公式输出满足精度要求的eps的 值,请填空使程序完整。

main ( ){

double s = 0.0, eps, t=1.0;

int n ;

scanf (“%lf”,&eps);

for (n=1 ; ; n++) {

s+=t ;

t= ;

}

;

}

三、 填空

1. C语言的数据类型有_______________、_________________、______________和_____________。

2. 根据数据组织形式,C语言中将文件分为___________________和_________________。

3. 在函数中未指定存储类别的局部变量,其隐含的存储类别是________。

4. 组成C程序的基本单位是________。

5. 若主调用函数为double型,被调用函数定义中没有函数类型说明,而return语句中的表达式为float型,

则被调用函数返回值的类型是________。

6. 设int a=5,b=2;float c=32.8;,表达式b*(int)c%a的值为______。

四、 编程题

1. 已有a,b 两个链表,每个链表中的结点包括学号、成绩。要求把2个链表合并,按学号升序排列。

2. 编写程序,将一个磁盘文件中的信息复制到另一个磁盘文件中。

3. 设当前路径下有一个名为"chang.txt"文件,编写程序将文件中所有的小写英文字母更改为大写字母。

4. 编写函数原型为:

void sort(int *, int )

的冒泡排序函数,要求将整型数组中的前n个元素按从小到大的次序排序。

5. 已知2001年1月1日是星期一,编程输出2001年1月起的yyyy年mm月的如下形式的月历表

南昌大学 信工学院 C 语言程序设计 综合练习

June 2010

sun mon tue wed thu fri sat

1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30

6. 编写程序模拟实现人员登录,即每从键盘接受用户名,就在文件"member.dat"中进行查找,若此用户名存

在则显示相应的信息。若文件中没有该用户名,则将该用户名存入文件"member.dat"中。当输入用户名按<.Enter>键或处理过程中出错时程序结束。

7. 编写函数原型为:

void sort(int *, int )

的选择排序函数,要求将整型数组中的前n个元素按从小到大的次序排序。

8. 编程打印出如下形式的乘法表

* 1 2 3 4 5 6 7 8 9

1 1

2 2 4

3 3 6 9

4 4 8 12 16

5 5 10 15 20 25

6 6 12 18 24 30 36

7 7 14 21 28 35 42 49

8 8 16 24 32 40 48 56 64

9 9 18 27 36 45 54 63 72 81

9. 从键盘输入20个任意整数,找出其中的最大值和最小值,并求出这20个整数的算术平均数。

10.从键盘输入如下矩阵,保存到一个二维数组a, 将其行列互换后保存到数组b中,再求出这2个矩阵的主

对角线上各项的和。

| 2 4 6 8 9 |

| 1 5 8 9 0 |

| 8 5 2 4 1 |

| 0 3 8 7 1 |

| 8 2 2 5 1 |

南昌大学 信工学院 C 语言程序设计 综合练习.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219