C语言程序设计期末复习题.doc 下载本文

内容发布更新时间 : 2024/5/18 4:58:31星期一 下面是文章的全部内容请认真阅读。

C语言程序设计期末复习题

阅读下列程序,掌握程序的输入、 输出、算法、使用的数据

}

main()

【程序1】

题目:将一个数组中的元素逆序输出。

#define N 5 {

int a, b; main()

{ int a[N]二{9,6,5,4,1 },i,temp; printf(\scanf(“ %d,%d\arrayAn%uMM,a[i]); for(i=0; i

printf(\M); for(i=0; i

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

【程序2】

题目:求一个N*N矩阵对角线元素之和

#define N 4 main()

{ int a[N][N], sum=0;

int i,j;

printf(nplease input rectangle element:\\nH); for(i=0;i

for(j=0;j

[j]);

for(i=0;i

【程序3】

下列程序运行后输岀结果是

void swap (int *pl, int *p2) { int temp; temp = *pl; *pl = *p2; *p2 = temp;

【程序5】

题目:用选择法对10个数进行从小到大的排 序

讦(a

printfC4a=%d,b=%d,'\\n,a,b); } 输入/^6, 4则输岀结果为 ______________________ =====================================^/ 【程序4】

题目:有一个已经按升序排好序的数组。现 输入一个数,要求按原来的规律将它插入数 组中。

main() {

int a[ll]={l ,4,6,9,13,16,19,28,40,100};

int temp 1, temp2, number, end, i, j; printf(\array is:\\n\

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

printf(H]H,a[i]); printf(u\\nH);

printf(\M); scanf(u%dn,&number); end=a[9];

if(number>end) a[10]=number; else

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

if(a[i] >number) /* 找到插入位置 */

{ for(j=10; j>i; j-) /*插入点后的元素后移*/

a[j]=a[j?l]; a[i]二number; break; }

for(i=0;i

程序源代码:

#define N 10 main()

{ int i, j, min, tem, a [NJ; /*input data*/

printf(\for(i=0;i

{ printf(\M,i);

scanf(”%cT,&a[i]);} /*sort ten num*/ for(i=0;i

for(j=i+l;jvN;j++)

if( a[min] > a[j]) min=j; tem=a[i]; a[i]=a[min]; a[min]=tem; }

/^output data*/

printf(uAfter sorted \\n\for(i=0;i

【程序6】

题目:读程序,给岀程序的运行结果。

#include \#define M 7 main()

{ int a[M]={ 1,2,3,4,5,6,7};

int i,j,t; i=0; j=M-l; while(i < j) { t= *(a+i); *(a+i)=*(a+j); *(a+j)二 t;

i++; j—; }

for(i=0;i

printf(n%dn,*(a+i)); 【程序7】

题目:设全班有40名同学,计算全班数学成平均分,并统计低于平均分的人数。

绩的

#define N 40 main()

{

int classfN]; float sum, ave; int number, i; sum=0; number=0;

printf(Hplease enter student score11); for (i=0 ; i

{

scanf(n%dH, &class[i]); sum += class[i];

}

ave= sum/N;

for (i=0; i

if (class[i]

【程序8】

题目:写一个函数,求一个字符串的长度, 在main函数中输入字符串,并输出其长度。 main() { intlen;

char str [20]; printf(Hplease input a string:\\nH); scanf(\len=length(str);

printf(Hthe string has %d characters/'Jen); }

int length(p) {char *p;

int n; n=0;

while俨p!二)

{ n++; P++;

return n; }

【程序9】

题目:从键盘输入一个字符串,将小写字母 全部转换成大写字母,然后输岀到一个磁盘 文件“test”中保存。输入的字符串以!结束。

i=0; /*从第一个人进行报数*/ k=0; /*记录报数

*/

count=0; /*记录出列的人数*/ while( count < n-1 ) /*n-l 人出列*/ {

if( num[i] !=0) k++; /*编号 i+1 在队列

中,进行报数*/

if( k==3 )/*如果报数为3,报数的人岀 列*/ {

#include \main()

{ FILE *fp;

char str[100];

int i=0; if((fp=fopen(,,test\;,w,,))==NULL) { printf(Mcannot open the file\\nn); exit(O); }

printf(\H); gets(str);

while(str[i]!-!')

{ if( str[i]>=,a, && str[i]<='z,) str[i]=str[i]-32;

fputc( strfi], fp);

i++; }

fclose( fp);

【程序10]

题目:有n个人围成一圈,顺序排号(编号 为n的人的下一个人编号为1 )。从第一个人 开始报数(从1到3报数),凡报到3的人退 岀圈子,问最后留下的是原来第几号的那位。 算法分析:输入人数n<50,用一个数组num 表示某一个编号的人是否仍在队列中,数组 的下标对应人的编号,数组中的值取0或人 的编号,num[i]=i+l表示编号为i+1的人仍在 队列中,num[i]=0表示编号为i+1的人不在队 列屮,num数组的初值为1。计数出列的人数, 当出列的人数二n时记录岀列人的编号即可。

num[i]=0; k=0; count++;

}

i++; /*计算下一个报数人的编号*/ if(i==n) i=0; /*如果报数人编号超过n, 则下一个编号是1 */

}

fbr(i=0; num[i]==0;i++);

/*求队列中最后一人*/

printf( %d is left\\n, num[i]);

HM

【程序111

廁读下列程序,写出程序的输出结果

int a, b, c, d;

void print_abcd(int b) { int a=5, c=5;

a++; b++; C++; d++;

printf(',2.a=%d,b=%d,c=%d,d=%d\\n\

}

#define nmax 50 main() {

int i, k, count, n, num[nmax]; printf(uplease input the total of numbers:1'); scanf(H%dH,&n);

for(i=0;i

main() { a=l; b=l; c=l; d=l;

printf(\print_abcd(b);

printf(H3.a=%d,b=%d,c=%d,d=%d\\n\