大学c语言机期未试考题_大学c语言试题及答案
大学c语言机期未试考题由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“大学c语言试题及答案”。
1#####
在考生文件夹下的给定程序modi53.c中,函数fun的功能是:将从键盘上输入的每个单词的第一个字母写为大写字母,输入时各单词必须用空格隔开,用'.'结束输入。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include
int fun(char *c,int status){ /************found************/
if(c==' ')return 1;
else
{
if(status && *c='a')/************found************/
c+='A'-'a';
return 0;
} }
main(){
int flag=1;
char ch;
printf(“请输入一字符串,用点号结束输入!n”);
do
{
ch=getchar();
flag=fun(&ch,flag);
putchar(ch);
}while(ch!='.');
printf(“n”);} 第1 处内容填写有误
第[1]处操作错误
题面要求操作:内容为[if(*c==' ')return 1;]
实际操作结果:内容为[if(c=='')return1;] 第2 处内容填写有误
第[2]处操作错误
题面要求操作:内容为[*c+='A'-'a';]
实际操作结果:内容为[c+='A'-'a';]
2##### 请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。
例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。
注意:要求n的值大于2但不大于100。
部分源程序在考生文件夹下的文件prog192.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句
#include #include double fun(int n){
} main(){ int n;
double sum;
printf(“nnInput n: ”);scanf(“%d”,&n);
sum=fun(n);
printf(“nnsum=%fnn”,sum);
NONO();} NONO(){/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/
FILE *rf, *wf;int n, i;double s;
rf = fopen(“bc192.in”, “r”);
wf = fopen(“bc192.out”, “w”);
for(i = 0;i
fscanf(rf, “%d”, &n);
s = fun(n);
fprintf(wf, “%lfn”, s);
}
fclose(rf);fclose(wf);}
本题的考核点是查找素数的算法以及开根函数的应用。
解题思路:从3到指定数n,找出所有的素数,素数的判断方法是:只能被1和其自身整除,而不能被其它任何数整除的数;sqrt(x)函数是计算x的平方根。
#include #include double fun(int n){ int i,j=0;/*定义两个整型变量*/ double s=0;/*定义变量s为双精度型*/
for(i=3;i
{ for(j=2;j
if(i%j==0)break;
/*如果i能被j整除就说明i不是素数,继而退出循环体*/
if(j==i)s=s+sqrt(i);/*sqrt(i)函数是计算i的平方根*/
}
return s;/*返回结果*/
3#
给定程序的功能是求k!(k
例如:若k = 10,则应输出:3628800。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的blank20.c中。
不得增行或删行,也不得更改程序的结构!#include long fun(int
k){ /************found************/
if(k>0)/************found************/
return(k*fun(___2___));/************found************/
else if(k==0)
return 1L;}
main(){ int k = 10;
printf(“%d!=%ldn”, k, fun(k));}
本题主要考查的是函数的递归调用。
题中第一个空填“>”:此处为递归调用结束的条件。
题中第二个空填“k-1”:此处为递归调用时返回给调用函数的实参值。
题中第三个空填“==”:此处判断k是否为0,若是则将值返回给主函数。
本评析仅供参考。
4在考生文件夹下的给定程序modi31.c中,函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include #define N 5 #define M 81 /************found************/ fun(char(*sq)[N]){int i;char *sp;sp=sq[0];for(i=0;i
if(strlen(sp)
sp=sq[i];/************found************/ return sq;} main(){char str[N][M],*longest;int i;printf(“Enter %d lines :n”,N);for(i=0;i
程序中的重要思想如下:
1、建立了一个二维字符串数组,用于存放用户输入的6个字符串;
2、建立了一个指针数组,目的是用6个指针分别指向6个字符串;
3、函数fun()的形参只有一个,即指针数组pstr[],这表明要想在函数fun()中对6个字符串进行操作,只能通过pstr[]中的6个指针。
题中第一个空填“*(pstr+j)”:观察源程序可以发现,在程序中使用strcmp()函数是为了判断字符串str[i]与str[i+1]两者的大小,在fun()函数中只能通过指针来表达各个字符串,所以应当填“*(pstr+j)”。
题中第二个空填“pstr[j]”:对两个字符进行比较后,若pstr[i]中的字符比pstr[j]中的字符大,则将pstr[j]中的字符赋给pstr[i]。
题中第三个空填“p”:对两个字符进行比较后,若pstr[i]中的字符比pstr[j]中的字符大,则将pstr[j]和pstr[i]的内容进行交换。
5请编写函数fun,其功能是:计算并输出下列多项式的值:
S=(1─)+…+(──1]);"。