哈工大PapersbWord格式文档下载.docx
- 文档编号:22005332
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:31
- 大小:30.21KB
哈工大PapersbWord格式文档下载.docx
《哈工大PapersbWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《哈工大PapersbWord格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
inta[50],n;
……
fun(n,&
a[9]);
A)voidfun(intm,intx[]);
B)voidfun(ints,inth[41]);
C)voidfun(intp,int*s);
D)voidfun(intn,inta);
4.
#defineMAX10
inta[MAX];
voidsub2()
inta[MAX],i,max=5;
for(i=0;
i<
max;
i++)
{
a[i]=i;
}
voidsub1()
inti;
for(i=0;
MAX;
a[i]=i+i;
voidsub3(inta[])
i++)
printf("
%d"
a[i]);
\n"
);
main()
sub1();
sub3(a);
sub2();
上面程序片段的执行结果是。
A)024681012141618
012341012141618
B)01234
024681012141618
C)0123456789
01234
D)024681012141618
5.下列程序执行后的输出结果是。
#include<
stdio.h>
inta[3][3],*p,i;
p=&
a[0][0];
for(i=1;
9;
p[i]=i+1;
%d\n"
a[1][2]);
A)3
B)6
C)9
D)随机数
二、写出下列程序的运行结果。
1.
inti,j,x=0;
for(i=0;
2;
x++;
for(j=0;
j<
3;
j++)
{
if(j%2)continue;
x++;
}
printf("
x=%d\n"
x);
程序运行结果是:
2.
structSTU
charnum[10];
floatscore[3];
};
structSTUs[3]={{"
20021"
90,95,85},{"
20022"
95,80,75},{"
20023"
100,95,90}},*p=s;
floatsum=0;
sum=sum+p->
score[i];
%6.2f\n"
sum);
3.
chars[100];
charc,i;
scanf("
%c"
&
c);
i);
%s"
s);
%d,%c,%s\n"
c,i,s);
已知字符’a’的ASCII码值为97,那么当程序输入:
a<
空格>
97<
123<
回车>
,程序运行结果是:
4.
inta=13,b=8;
intmax(inta,intb)
intc;
c=a>
b?
a:
b;
return(c);
inta=5;
Max=%d\n"
max(a,b));
程序运行结果是:
5.位式运算符是C语言作为中级语言的体现,可以实现以二进制比特位为单位的操作,其中“&
”是“位式与运算符”,有如下程序:
#include<
intfunc(unsignedintx)
inti,mask=1,total=0;
=16;
{
if((x&
mask)==mask)
total++;
mask=mask*2;
}
returntotal;
main()
unsignedintinput;
pleaseinputannumber:
"
scanf("
%u"
&
input);
Theresultis:
func(input));
当用户输入为15时,程序运行结果是:
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(8分,每空1分)
1.由键盘输入一个班的某课程的学生成绩,计算其平均分然后输出。
stdlib.h>
int*p=NULL,n,i,sum;
pleaseenterarraysize:
);
p=(int*)malloc(n*sizeof(int));
if(p==NULL)
noenoughmemory!
;
pleaseenterthescore:
n;
p+i);
;
aver=%d\n"
sum/n);
free(p);
2.输入一个字符数小于100的字符串string,然后将string所保存字符串中的每个字符之间加一个空格。
#include<
#defineMAX100
voidInsert(chars[]);
charstring[MAX];
string);
Insert(string);
voidCopyString(charc[],chars[])
s[i]!
='
\0'
;
c[i]=s[i];
voidInsert(charsrcStr[])
charstrTemp[MAX];
inti=0,j=0;
CopyString(strTemp,srcStr);
while()
srcStr[i]=strTemp[j];
i++;
srcStr[i]='
'
i++;
srcStr[i]='
四、在下面给出的4个程序中,共有16处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
(30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。
只要找对15个即可,多找不加分。
)
1.设计一个函数MaxCommonFactor(),利用欧几里德算法(也称辗转相除法)计算两个正整数的最大公约数。
该算法的基本思想是:
假设有两个整数m和n,通过连续运用求余运算,直到余数为0为止,最后非0的余数就是最大公约数。
intMaxCommonFactor(inta,intb)
inta,b,x;
Inputa,b:
"
%d,%d"
a,b);
x=MaxCommonFactor(a,b);
MaxCommonFactor=%d\n"
x);
intMaxCommonFactor(inta,intb);
intr;
do{
r=a%b;
a=b;
b=r;
}while(r!
=0)
returna;
2.从键盘输入10个整型数据,放入数组a中,求其最大值、最小值及其所在元素的下标位置并输出。
inta[10],n,max,min,maxPos,minPos;
for(n=0,n<
10,n++)
a[n]);
max=min=a;
maxPos=minPos=0;
for(n=1;
n<
10;
n++)
if(a[n]>
max)
max=a[n];
maxPos=n;
elseif(a[n]<
min)
min=a[n];
minPos=n;
max=%d,pos=%d\n"
max,maxPos);
min=%d,pos=%d\n"
min,minPos);
3.下面的函数MyStrcmp()用于实现函数strcmp()的功能,将两个字符串s和t进行比较,要求将两个字符串中第一个不相同字符的ASCII码值之差作为MyStrcmp()函数的返回值。
intMyStrcmp(chars[],chart[]);
charstr1[20],str2[20];
Inputstring:
gets(str1);
Inputanotherstring:
gets(str2);
if(MyStrcmp(str1[],str2[])>
0)
str1>
str2\n"
elseif(MyStrcmp(str1[],str2[])<
str1<
else
str1=str2\n"
intMyStrcmp(chars[],chart[])
s[i]==t[i];
i++);
if(s[i]='
)return0;
return(s[i]-t[i]);
}
4.从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。
#defineARRSIZE10;
voidMaxMinExchang(inta[],intn)
intmaxValue=a[0],minValue=a[0],maxPos,minPos;
inti,temp;
for(i=1;
if(a[i]>
maxValue)
maxValue=a[i];
maxPos=i;
elseif(a[i]<
minValue)
minValue=a[i];
minPos=i;
temp=a[maxPos];
a[maxPos]=a[minPos];
a[minPos]=temp;
inta[n],i,n;
Inputn(n<
=10):
n);
Input%dNumbers:
n);
for(i=0;
a[i]);
MaxMinExchang(a[],n);
AfterMaxMinExchange:
%4d"
a[i]);
五、编程(42分)
1.规定一个工人工作时间每个月160小时,每小时工资为5元,如果加班的话,每小时增加4元,请编程计算并打印此工人一个月的工资,要求由键盘输入工作时间(14分)。
2.编程计算并打印一元二次方程ax2+bx+c=0的根,a、b、c由键盘输入,其中a不等于0。
要求考虑一元二次方程根的所有情况(无根,有两个相等实数根,有两个不等实数根,有两个虚数根)。
(14分)
已知一元二次方程的求根公式为:
3.不用函数strcat(),编程实现字符串连接函数MyStrcat(char*dstStr,char*srcStr)将字符串srcStr连接到字符串dstStr的尾部,并编写主函数调用MyStrcat将用户输入的两个字符串相连接。
参考答案与评分标准
(10分,每题2分,评分标准:
正确得2分,错误扣2分)
1.以下不能对二维数组a进行正确初始化的语句是
A)inta[2][3]={0};
B)inta[][3]={{1,2},{0}};
√C)inta[2][3]={{1,2},{3,4},{5,6}};
D)inta[][3]={1,2,3,4,5,6};
floatfun(intx,inty)
return(x+y);
main(){
inta=2,b=5,c=8;
fun((int)fun(a+c,b),a-c));
程序运行后的输出结果是:
A)编译出错√B)9
C)21D)9.0
3.若有以下调用语句,则不正确的fun函数的函数原型是
{…
…
A)voidfun(intm,intx[]);
√D)voidfun(intn,inta);
4.下面程序片段的执行结果是:
inta[MAX],i;
sub1();
sub3(a);
sub2();
sub2()
inta[MAX],i,max=5;
i++)a[i]=i;
sub1()
for(i=0;
i++)a[i]=i+i;
sub3(inta[])
inti;
i++)printf("
√D)024681012141618
5.下列程序执行后的输出结果是
p[i]=i+1;
√B)6
(10分,评分标准:
正确得2分,完全错误扣2分,如果部分错误,少一行或者多了一行,或者其他提示信息,则扣1分)
inti,j,x=0;
i<
i++)
X++;
for(j=0;
j<
j++)
if(j%2)continue;
X++;
x=8
程序的运行结果是:
270.00
97a123
c=a>
b?
a:
inta=5;
max(a,b));
Max=8
Theresultis:
4
(8分,评分标准:
每空1分,正确得1分,错误扣1分)
1.由键盘输入一个班的某课程的学生成绩,计算其平均分,然后输出。
(注:
使用动态数组实现)
int*p=NULL,n,i,sum;
n);
p=(int*)malloc(n*sizeof(int));
if(p==NULL)
exit(0);
//或者return;
p+i);
sum=0;
sum=sum+*(p+i);
sum/n);
2.输入一个字符数小于100的字符串string,然后在string所保存字符串中的每个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 Papersb