青海大学题库c语言程序设计.docx
《青海大学题库c语言程序设计.docx》由会员分享,可在线阅读,更多相关《青海大学题库c语言程序设计.docx(230页珍藏版)》请在冰豆网上搜索。
![青海大学题库c语言程序设计.docx](https://file1.bdocx.com/fileroot1/2022-12/12/f3d87975-6bd1-4194-b4cf-e51e960c2971/f3d87975-6bd1-4194-b4cf-e51e960c29711.gif)
青海大学题库c语言程序设计
试卷编号:
9478
所属语言:
C语言
试卷总分:
1260分
共有题型:
1种
一、程序设计共126题(共计1260分)
第1题(10.0分)题号:
507难度:
易第1章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun求一个字符串的长度,在main函数中
输入字符串,并输出其长度。
------------------------------------------------*/
#include
voidwwjt();
intfun(char*p1)
{
/**********Program**********/
/**********End**********/
}
main()
{
char*p,a[20];
intlen;
p=a;
printf("pleaseinputastring:
\n");
gets(p);
len=fun(p);
printf("Thestring'slengthis:
%d\n",len);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
char*pIN,sin[20];
intiOUT,i;
pIN=sin;
IN=fopen("3.IN","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("3.out","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..itMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%s",pIN);
iOUT=fun(pIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
char*p;
intn=0;
p=p1;
while(*p++)
n++;
returnn;
----------------------
第2题(10.0分)题号:
386难度:
中第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用函数求N个[10,60]上的整数中能被5整除的最大
的数,如存在则返回这个最大值,如果不存在则
返回0。
------------------------------------------------*/
#defineN30
#include"stdlib.h"
#include
voidwwjt();
intfind(intarr[],intn)
{
intm=0;
/**********Program**********/
/**********End**********/
return(m);
}
main()
{
inta[N],i,k;
for(i=0;ia[i]=random(51)+10;
for(i=0;i{
printf("%5d",a[i]);
if((i+1)%5==0)printf("\n");
}
k=find(a,N);
if(k==0)
printf("NOFOUND\n");
else
printf("themaxis:
%d\n",k);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intn;
inti[5];
into;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFILEError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFILEError");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%d",&i[n]);
}
o=find(i,5);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);
}
答案:
----------------------
inti;
for(i=0;iif(arr[i]%5==0&&arr[i]>m)
m=arr[i];
----------------------
第3题(10.0分)题号:
321难度:
中第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
编写函数fun其功能是:
根据整型形参m,计算如下
公式的值:
y=1/2!
+1/4!
+…+1/m!
(m是偶数)
------------------------------------------------*/
#include
voidwwjt();
doublefun(intm)
{
/**********Program**********/
/**********End**********/
}
main()
{
intn;
printf("Entern:
");
scanf("%d",&n);
printf("\nTheresultis%1f\n",fun(n));
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intt;
doubleo;
intc;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFILEError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFILEError");
}
for(c=1;c<=5;c++)
{
fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%f\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:
doubley=0.0;
inti,j;
doubles=1;
for(i=2;i<=m;i+=2)
{
for(j=i-1;j<=i;j++)
s=s*j;
y=y+1.0/s;
}
returny;
第4题(10.0分)题号:
54难度:
易第1章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求1到100之间的偶数之积。
------------------------------------------------*/
#include
voidwwjt();
doublefun(intm)
{
/**********Program**********/
/**********End**********/
}
main()
{
printf("ji=%f\n",fun(100));
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intiIN,i;
doubledOUT;
IN=fopen("23.IN","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("23.out","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..itMayBeChanged");
}
for(i=0;i<10;i++)
{
fscanf(IN,"%d",&iIN);
dOUT=fun(iIN);
fprintf(OUT,"%f\n",dOUT);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
doubley=1;
inti;
for(i=1;i<=m;i++)
if(i%2==0)y*=i;
returny;
----------------------
第5题(10.0分)题号:
62难度:
难第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
求5行5列矩阵的主、副对角线上元素之和。
注意,
两条对角线相交的元素只加一次。
例如:
主函数中给出的矩阵的两条对角线的和为45。
------------------------------------------------*/
#include
#defineM5
voidwwjt();
intfun(inta[M][M])
{
/**********Program**********/
/**********End**********/
}
main()
{
inta[M][M]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8},{1,3,4,5,6}};
inty;
y=fun(a);
printf("s=%d\n",y);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intiIN[M][M],iOUT;
inti,j;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..itMayBeChanged");
}
{for(i=0;ifor(j=0;jfscanf(IN,"%d",&iIN[i][j]);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
ints=0;
inti,j;
for(i=0;is=s+a[i][i]+a[i][M-1-i];
s=s-a[(M-1)/2][(M-1)/2];
returns;
----------------------
第6题(10.0分)题号:
37难度:
较难第6章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
输入2个学生3门课的成绩,计算学生成绩平均分,
课程平均分和最高分.
例如:
输入2名学生3门课的成绩分别为92,87,68,56,
92,84则
学生1平均分:
82.33
学生2平均分:
77.33
课程1平均分:
74.00
课程2平均分:
89.50
课程3平均分:
76.00
最高分为:
92
------------------------------------------------*/
#include
voidwwjt();
/*定义全局变量*/
/*学生成绩平均分*/
floatStuAgv[2];
/*课程平均分*/
floatCouAgv[3];
/*所有学生的所有课程最高分*/
floatMax=0;
/*说明:
需要在下面函数中把题干要求中的结果赋值到上面定义一变量中*/
voidfun(floatscore[2][3])
{
/**********Program**********/
/**********End**********/
}
voidmain()
{
inti,j;
floatscore[2][3];
printf("输入学生的成绩:
");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
printf("\n输出学生的成绩:
");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%.2f",score[i][j]);
printf("\n");
}
fun(score);
for(i=0;i<2;i++)
printf("第%d个学生的平均成绩是:
%0.2f\n",i+1,StuAgv[i]);
for(j=0;j<3;j++)
printf("第%d门课的平均成绩是:
%0.2f\n",j+1,CouAgv[j]);
printf("所有分数中的最高分为:
%.2f\n",Max);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
floatiIN[2][3];
inti,j;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..itMayBeChanged");
}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
fscanf(IN,"%f",&iIN[i][j]);
fun(iIN);
for(i=0;i<2;i++)
fprintf(OUT,"%.2f\n",StuAgv[i]);
for(j=0;j<3;j++)
fprintf(OUT,"%.2f\n",CouAgv[j]);
fprintf(OUT,"%.2f\n",Max);
fclose(IN);
fclose(OUT);
return;
}
答案:
inti,j;
floatsum;
for(i=0;i<2;i++)/*计算第i个学生平均分*/
{
sum=0;
for(j=0;j<3;j++)
sum=sum+score[i][j];
StuAgv[i]=sum/3;
}
for(j=0;j<3;j++)/*计算第j门课的平均分*/
{
sum=0;
for(i=0;i<2;i++)
sum=sum+score[i][j];
CouAgv[j]=sum/2;
}
Max=score[0][0];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(Max<=score[i][j])
{
Max=score[i][j];
}
return;
第7题(10.0分)题号:
322难度:
中第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
判断一个整数w的各位数字平方之和能否被5整除,
可以被5整除则返回1,否则返回0。
------------------------------------------------*/
#include
#include"conio.h"
voidwwjt();
intfun(intw)
{
/**********Program**********/
/**********End**********/
}
main()
{
intm;
printf("Enterm:
");
scanf("%d",&m);
printf("\nTheresultis%d\n",fun(m));
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intc;
intt;
into;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFILEError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFILEError");
}for(c=1;c<=5;c++)
{
fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%d\n",o);
}
fclose(IN);
fclose(OUT);
}
答案:
----------------------
intk,s=0;
do
{s=s+(w%10)*(w%10);
w=w/10;
}while(w!
=0);
if(s%5==0)k=1;
elsek=0;
return(k);
----------------------
第8题(10.0分)题号:
513难度:
中第95章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
题目:
编程序,输入两个字符串a,b(<40个字符),将两者连接后输出c(不能用strcat库函数)。
-------------------------------------------------------*/
#include
#include
voidmain()
{
/**********Program**********/
/**********End**********/
}
答案:
chara[40],b[40],c[80];
inti,j;
printf("分二行输入两个字符串:
\n");
gets(a);gets(b);
for(i=0;a[i]!
='\0';i++)c[i]=a[i];
for(j=0;b[j]!
='\0';j++)c[i+j]=b[j];
c[i+j]='\0';
puts(c);
第9题(10.0分)题号:
594难度:
中第1章
/*-------------------------------------------------------
【程序设计】
---------------------------------------------------------
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向
一个M行N列的二维数组,求出二维数组每列中最大元素,并依次
放入pp所指的一维数组中。
二维数组中的数已在主函数中给出。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数
fun的花括号中填入所编写的若干语句。
试题程序:
-------------------------------------------------------*/
#include
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
inti,j,max;
/**********Program**********/
/**********End**********/
}
voidmain()
{
FILE*wf;
intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};
intp[N],i,j,k;
system("CLS");
printf("Theriginaldatais:
\n");
for(i=0;i{
for(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("%4d",p[k]);
printf("\n");
wf=fopen("out.txt","w");
for(k=0;kfprintf(wf,"%4d",p[k]);
fclose(wf);
}
答案:
for(j=0;j{
max=tt[0][j];
for(i=0;iif(tt[i][j]>max)
max=tt[i][j];
pp[j]=max;
}
第10题(10.0分)题号:
319难度:
中第2章
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
判断m是否为素数。
------------------------------------------------*/
#include"stdio.h"
voidwwjt();
intfun(intm)
{
/**********Program**********/
/**********End**********/
}
main()
{
intm,k=0;
for(m=100;m<200;m++)
if(fun(m))
{
printf("%4d",m);
k++;
if(k%5==0)
printf("\n");
}
printf("k=%d\n",k);
wwjt();
}
voidwwjt()
{
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("Pl