C考试题库程序设计_第1页
C考试题库程序设计_第2页
C考试题库程序设计_第3页
C考试题库程序设计_第4页
C考试题库程序设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计(老师)

题目:用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素)。

^include<stdlib.h>

ttinclude-stdio.h〃

ttdefineN3

intsum(inta[][N])

(

/**********Program**********/

/**********End**********/

)

main()

{inta[N][N],i,j;

clrscr();

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

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

{a[i][j]=random(10)+10;

printf(〃%3d〃,a[i][j]);

printf(〃\n〃);

printf(〃============\n〃);

printf(,zsum=%5d\n/z,sum(a));

yzj();

getchO;

yzjO

(

FILE*IN,*OUT;

intm,n;

inti[3][3];

into;

IN二fopen(〃in.dat〃,〃r〃);

if(IN=二NULL)

{printf("ReadFileError");

OUT=fopen("out.dat〃,〃w〃);

if(OUT=NULL)

{printf(z,WriteFileError");

i

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

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

fscanf(IN,〃%d〃,&i[m][n]);

o=sum(i);

fprintf(OUT,/z%d\n/z,o);

fclose(IN);

fclose(OUT);

I

答案:

inti,j,k=0;

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

for(j=N-l-i;j<N;j++)

k=k+a[i][j];

return(k);

1

题目:编写程序,实现矩阵(3行3歹U)的转置(即行列互换)

例如,输入下面的矩阵:

100200300

400500600

700800900

程序输出:

100400700

200500800

300600900

^include"stdio.h"

intfun(intarray[3][3])

(

/**********Prograiii**********/

/**********End**********/

main()

inti,j;

intarray[3][3]={{100,200,300},

{400,500,600),

(700,800,900)};

clrscr();

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

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

printf(/,%7d,/,arrayEi][j]);

printf(〃\n〃);

I

fun(array);

printf(''Convertedarray:\n,z);

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

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

printf("%7d”,array[i][j]);

printf('\n");

)

getch();

NONOO;

}

NONOO

{

inti,j,array[3][3];

FILE*rf,*wf;rf=fopen("in.dat","r");

wf=fopen("out.dat","w");for(i=0;i<3;i++)

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

fscanf(rf,"%d”,&array[i][j]);fun(array);

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

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

fprintf(wf,"%7d”,arrayLi][j]);fprintf(wf,"\n");

fclose(rf);

fclose(wf);

)

答案:

inti,j,t;

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

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

{t=array[i][j];

array[i][j]=array[j][i];

array[j]}

题目:请编写一个函数fun,函数的功能是:统计出若干个学生的平均成绩,最

分以及得最高分的人数。例如,输入

10名学生的成绩分别为92,87,68,

56,92,84,67,75,92,66,则输

出平均成绩为77.9,最高分为92,得

最高分的人数为3人。

ttinclude"stdio.h

floatMax=0;

intJ=0;

floatfun(floatarray[],intn)

(

/**********Prograiii**********/

/**********End**********/

)

main()

(

floata[10],ave;

inti=0;

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

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

ave=fun(a,10);

printf(〃ave=%f\n〃,ave);

printf(〃max=%f\n〃,Max);

printf("Total:%d\n',J);

yzj0;

)

yzj0

(

FILE*IN,*0UT;

floatiIN[10],iOUT;

intiCOUNT;

IN=fopen("8.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(,z8.out","w");

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

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

fscanf(IN,,z%fz,,&iIN[iCOUNT]);iOUT-fun(ilN,10);

fprintf(OUT,z,%f%f\n〃,iOUT,Max);

fclose(IN);

fclose(OUT);

i

答案:

inti;floatsum=0,ave;

Max=array[0];

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

{if(Max<array[i])Max=array[i];

sum=sum+array[i];}

ave=sum/n;

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

if(array[i]==Max)J++;

return(ave);

题目:编写函数fun求l!+2!+3!+……+n!

的和,在main函数中由键盘输入n值,

并输出运算结果。请编写fun函数。

例如:若n值为20,则结果为

268040729o

#include<stdio.h>

floatfun(intn)

{/**********Prograni**********/

/**********End**********/}main()

{inti,n;

longintresult;

scanf(〃%d〃,&n);

result=fun(n);

printf(〃%ld\n〃,result);

yzj0;}

yzj0

{FILE*IN,*0UT;

inti;

intilN;

longintiOUT;

IN=fopen("l.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(z,l.out","w");

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

)

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

{fscanf(IN,"%d”,&iIN);

iOUT=fun(iIN);

fprintf(OUT,“瓶d\n”,iOUT);

)

fclose(IN);

fclose(OUT);}

答案:inti;

floatf=l,s=0;

for(i=l;i<-n;i++)

{f=f*i;

s=s+f;}

returns;题目:编写函数fun,函数的功能是:从字符串s中删除指定的字符

ttinclude"stdio.h〃

fun(chars[],charc)

{/**********Prograni**********/

/**********End**********/

)

main()

(

staticcharstr口二〃turbocandborlandc++〃;charc='a';

fun(str,c);

printf(z/str=%s\n,z,str);

yzj();

yzj0

FILE*IN,*OUT;

charsIN[80],cIN;

inti;

IN二fopen(〃13・in”,〃r〃);

if(IN=NULL)

{printf(z,PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(/z13.out”,〃w〃);

if(OUT二二NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

)

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

fscanf(IN,/z%sz/,sIN);

cIN=getc(IN);cIN=getc(IN);

fun(sIN,cIN);

fprintf(OUT,"%s\n",sIN);

)

fclose(IN);

fclose(OUT);

)

答案:inti,k=0;

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

if(s[i]!=c)s[k++]=s[i];

s[k]='\0';

题目:请编写一个函数fun,函数的功能是:求出NXM整型数组的最大元素及

其所在的行坐标及列坐标(如果最大

元素不唯一,选择位置在最前面的一

个)。

例如:输入的数组为:

123

41

56

12189

10112

求出的最大数为18,行坐标为2,列坐标为lottdefineN4

ttdefineM3

#include<stdio.h>

intRow,Col;

main()

(

inta[N][M],i,j,max,row,col;

printf("inputaarray/');

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

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

scanf(〃/d〃,&a[i][j]);

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

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

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

printf('\n");

)

max=fun(a);

printf(/,max=%d,row=%d,col=%d//,max,Row,Col);

yzj0;

)

intfun(intarray[N][M])

{

/**********Prograni**********/

/**********End**********/

)

yzj0

(

FILE*IN,*0UT;

intiIN[N][M],iOUT,i,j;

IN=fopen("9.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(/z9.out","w");

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

)

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

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

fscanf(IN,[j]);

iOUT=fun(iIN);

fprintf(OUT,,z%d%d%d\n",iOUT,Row,Col);

fclose(IN);

fclose(OUT);

答案:

intmax,i,j;

max=array[0][0];

Row=0;

Col=0;

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

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

if(max<array[i][j])

{max=array[i][j];

Row二i;

Col=j;}

}

return(max);

题目:从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,

并在main函数中输出。请编写fun

函数。

ttinclude"stdio.h〃

intfun(intx[],intn)

/**********Prograiii**********/

/**********End**********/

)

main()

(

inta[10],i,min;

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

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

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

printf(〃%3d”,a[i]);

printf(〃\n〃);

min=fun(a,10);

printf(〃/d\n〃,min);

yzj0;

yzj()

FILE*IN,*OUT;

intiIN[10],i;

intiOUT,iCOUNT;

IN=fopen(z/4.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(//4.out","w");

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

)

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

{for(iC0UNT=0;iC0UNT<10;iC0UNT++)

fscanf(IN,&iIN[iCOUNT]);

iOUT=fun(iIN,10);

fprintf(OUT,"%d\n”,iOUT);

fclose(IN);

fclose(OUT);

)

答案:

intmin,i;

min=x[0];

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

{if(x[i]<min)min=x[i];}

returnmin;

题目:从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在

main函数中输出相应的结论信息。例

如:7是素数,8不是素数。请编写

fun函数。素数是仅能被1和自身整

除的数

ttinclude"stdio.h"

main()

{intm,flag;

printf(z/inputaninteger:z,);

scanf(〃/d〃,&m);

flag=fun(m);

if(flag)

printf(〃%disaprime.\n〃,m);

else

printf(^%disnotaprime.\nz/,m);

yzj();

)

intfun(intn)

{/**********Prograni**********/

/**********End**********/}

yzj0

(

FILE*IN,*OUT;

intilN,iOUT,i;

IN=fopen("5.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(/z5.out",“『);

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

)

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

{fscanf(IN,;

iOUT=fun(iIN);

fprintf(OUT,"%d\n",iOUT);

)

fclose(IN);

fclose(OUT);

)答案:

inti;

intj;

j=1;

for(i=2;i〈n;i++){if(n%i==O)j=0;}

returnj;

题目:编写函数fun其功能是在键盘上输入一个3行3列矩阵的各个元素的值

(值为整数),然后输出主对角线元素的积,并在fun()函数中输出。

ttinclude"stdio.h〃

main()

{inti,j,s,a[3][3];;

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

(

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

scanf(如d",&a[i][j]);}

s=fun(a);

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

yzj0;

getchO;}

intfun(inta[3][3])

/**********Prc)grani**********/

/**********End**********/

i

yzj0

(

FILE*IN,*OUT;

intm;

intn;

inti[3][3];

into;

IN=fopenCin.dat〃,〃r〃);

if(IN==NULL)

{printf(z,ReadFileError");

OUT=fopen("out.dat〃,〃w〃);

if(OUT==NULL)

{printf("WriteFileError");

)

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

{for(n=0;n<3;n++)

fscanf(IN,"%d”,&i[m][n]);

)

o=fun(i);

(

fprintf(OUT,z/%d\n/z,o);getchO;

)

fclose(IN);

fclose(OUT);

)

答案:

intsum;

inti,j;

sum=l;

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

sum=sum*a[i]Li];

returnsum;

题目:请编写一个函数fun,函数的功能是:将主函数中输入的字符串反序存

放。

例如:输入字符串〃abcdefg〃,则应输

出〃gfedcba”。

#include<stdio.h>

ttinclude<conio.h>

ttdefineN81

charfun(char*str,intn)

(

/**********Program**********/

/**********End**********/

main()

chars[N];

int1;

clrscr();

printf("inputastring:,/);gets(s);

l=strlen(s);

fun(s,1);

printf(Z/Thenewstringis:");puts(s);

yzj0;

)

yzj0

(

FILE*IN,*OUT;

charsIN[20],*s0UT;

intiLENGTH;

IN=fopen("7.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

0UT=fopen("7.out","w");

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

}

fscanf(IN,"%s",sIN);

iLENGTH=strlen(sIN);

sOUT=sIN;

fun(sIN,iLENGTH);

fprintf(OUT,"%s\n”,sOUT);

fclose(IN);

fclose(OUT):

)

答案:

inti,j;

charc;

for(i=0,j=n-l;i<j;i++,j—)

/*或者for(i=0,j=n-l;i<n/2;i++,j--)*/{c=*(str+i);

*(str+i)=*(str+j);

*(str+j)=c;}

题目:请编写一个函数fun,函数的功能是:输入一个字符串,过滤此串,只保留

串中的字母字符,并统计新生成串中

包含的字母个数。例如:输入的字符

串为ab234$df4,新生成的串为

abdfo

ttinclude<stdio.h>

ttinclude<conio.h>

ttdefineN80

main()

(

charstr[N];

ints;

clrscr();

printf("inputastring:zz);gets(str);

printf("Theoriginalstringis:〃);puts(str);

s=fun(str);

printf(z,Thenewstringis:〃);puts(str);

printf(''Thereare%dcharinthenewstring./z,s);

yzj();

fun(char*ptr)

{

/**********Progra田**********/

/**********End**********/

)

yzj0

{

FILE*IN,*OUT;

charsIN[N];

intiOUT;

IN=fopen("10.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(/z10.out","w");

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

)

fscanf(IN,"%s”,sIN);

iOUT=fun(sIN);

fprintf(OUT,/z%d%s\n”,iOUT,sIN);

fclose(IN);

fclose(OUT):

)

答案:

inti,j;

for(i=0,j=O;*(ptr+i)!='\O';i++)

if(*(ptr+i)<=,z'&&

*(ptr+i)>='a'*(ptr+i)<='Z'&&*(ptr+i)>='A'){*(ptr+j)=*(ptr+i);

j++;}

*(ptr+j)=\0J;

return(j);

题目:编写函数用选择排序法对数组中的数据进行从小到大的排序。

ttinclude<stdlib.h>

#include<stdio.h>

voidsort(inta[],intn)

(

/**********Prograni**********/

/**********End**********/

I

main()

{inta[13],i;

clrscr();

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

a[i]=random(20)-5;

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

printf(,z%3d/z,a[i]);

printf(〃\n-------------------\n〃);

sort(a,13);

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

printf(,z%3d,z,a[i]);

yzj0;

getchO;

}

yzjO

(

FILE*IN,*0UT;

intn;

inti[10];

into;

IN=fopen(,zin.dat〃,〃r〃);

if(IN=NULL)

{printf("ReadFileError");

}

OUT=fopen(〃out.dat〃,〃w〃);

if(OUT二二NULL)

(printf(z,WriteFileError");

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

{

fscanf(IN,〃%d〃,&i[n]);

}

sort(i,10);

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

fprintf(OUT,〃%d\n〃,i[n]);

fclose(IN);

fclose(OUT);

答案:

inti,j,k,t:

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

{k=i;

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

if(a[k]>a[j])k=j:

if(k!=i)

{t=a[i];

a[i]=a[k];

a[k]=t;

)

)

题目:编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,

21/13…的前n项之和。

每一分数的分母是前两项的分母之

每一分数的分子是前两项的分子之

例如:求前20项之和的值为32.660259。ftinclude"stdio.h

floatfun(intn)

(

/**********Program**********/

/**********End**********/

)

main()

{floaty;

y=fun(20);

printf(〃y二%f\n〃,y);

yzj();

I

yzj0

(

FILE*IN,*0UT;

intilN,i;

floatfOUT;

IN=fopen("30.in","r");

if(IN==NULL)

{printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");

)

0UT=fopen(z/30.out","w");

if(OUT==NULL)

{printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");

)

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

{fscanf(IN,"%d”,&iIN);

fOUT=fun(iIN);

fprintf(OUT,fOUT);

)

fclose(IN);

fclose(OUT);

}答案:inti;

floatf1=1,f2=l,f3,s=0;

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

{f3=fl+f2;

fl=f2;

f2=f3;

s=s+f2/fl;

)

returns;

题目:调用函数fun判断一个三位数是否"

水仙花数”。在main函数中从键盘输

入一个三位数,并输出判断结果。

请编写fun函数。所谓“水仙花数〃是

指一个3位数,其各位数字立方和等

于该数本身。例如,153是一个水仙

花数,因为153=13+53+33。

ttinclude"stdio.h〃

intfun(intn)

/**********Prograiii**********/

/**********End**********/

)

main()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论