版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年安徽省淮南市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________
一、2.填空题(10题)1.设Y是int型变量,请写出判断Y为奇数的关系表达【】。
2.若有定义:intx=1,y=2;floata=3.7,b=2.1;则(x+y)%2+(int)a/(int)b表达式的值为()。
3.funl函数的调用语句为funl(&a,&b,&c);。它将3个整数按由大到小的JI匣序调整后依次放入a,b,c三个变量中,a中放最大数,请填空。
voidfun2(int*x,int*y)
{intt;
t=*x;*x;*y;*y=t;
}
voidfunl(int*pa,int*pb,int*pc)
{if(*pc>*pb)fun2(【】);
if(*pa<*pc)fun2(【】);
if(*pa<*pb)fun2(【】);
}
4.在E-R图中,矩形表示【】。
5.在数据库的概念结构设计中,常用的描述工具是【】。
6.下列程序的运行结果是【】。
#include<stdio.h>
main()
{unionEXAMPLE
{struct
{intx;inty;}in;
inta;
intb;
}e;
e.a=1;e.b=2;
e.in.x=e.a*e.b;
e.in.y=e.a+e.b;
printf("%d,%d\n",e.in.x,e.in.y);
}
7.下面程序的运行结果是()。
#defineEXCH(a,B){intt;t=a;a=b;b=t;}
main()
{intx=1,y=2;
EXCH(x,y);
printf("x=%d,y=%d\n",x,y);
}
8.以下程序的输出结果是【】。
floatfun(intx,inty)
{return(x+y);}
main()
{inta=2,b=5,c=8;
printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}
9.下面程序执行后输出的结果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
10.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是【】。
二、单选题(10题)11.有下列二叉树.对此二叉树前序遍历的结果为()。
A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ
12.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序运行后的输出结果是()。
A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3
13.若有以下说明和定义:则对函数fun的正确调用语句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);
14.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序运行后的输出结果是()。
A.IB.JC.KD.H
15.微型计算机的运算器、控制器及内存储器组合在一起,称之为()
A.ALUB.CPUC.MPUD.主机
16.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是A.A.1267B.1256C.1278D.1245
17.下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构
B.逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
18.表达式“a+=a-=a=9”的值是()。
A.18B.-9C.0D.9
19.下面程序输出的是()。main{intt=l;fun(fun(t));}fun(inth){staticinta[3]={1.2.3};intk;for(k=0;k<3;k++)a[k]+=a[k]-h;for(k=0;k<3;k++)printf("%d",a[k]);printf("\n");return(a[h]);}A.1,2,3,1,5,9,B.1,3,5,1,3,7,C.1,3,5,0,4,8,D.1,3,5,-1,3,7,
20.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构
三、程序设计题(10题)21.请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值为4。移动后,一维数组中的内容应为5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
22.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是找出成绩最低的学生记录,通过形参将其返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<stdio.h>2#include<string.h>3#include<conio.h>4#include<stdlib.h>5#defineN106typedefstructss7{charnum[10];8ints;9}STU;10fun(STUa[],STU*s)11{1213}14voidmain()15{16FILE*wf;17STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m18inti;19system("CLS");20printf("*****Theoriginaldata*****\n");21for(i=0;i<N;i++)22printf("No=%sMark=%d\n",a[i],num,a[i].s);23fun(a,&m);24printf("****TheResult****\n");25printf("Thelowest:%s,%d\n",m.num,m.s);26/*************************/27wf=fopen("out.dat'*,"w");28fprintf(wf,"%s,%d",m.num,m.s);29fclose(wf);30/*************************/
23.使用VC++2010打开考生文件析下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),tt指向一个M行N列的二维数组,求出二维数组每列中值最大的元素,并依次放入pp所指的一维数组中。二维数组中的元素已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){}voidmain(){ intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}}; intp[N],i,j,k; ystem(“CLS”); printf(“Theoriginaldatais:\n”); for(i=0;i<=""p=""> { for(j=0;j<=""p=""> printf(“%6d”,t[i][j]); printf(“\n”n); } fun(t,p); printf(“\nTheresultis:\n”); for(k=0;k<n;k++)<p=""></n;k++)<> printf(“%4d”,p[k]); printf(“\n”);}
24.请编写函数proc(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N).按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:ABCDBCDEFGCDEFGHI则合并后的字符串内容应该是:ABCDBCDEFGCDEFGH1。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
25.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fmi()的功能是将a、b中的两个正整数合并成一个新的整数存放在c中。合并的方式是将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,a=45,b=12,调用该函数后,c=5241。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:26.假定输人的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g****。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>voidproc(char*str){}voidmain{charstr[81];printf("Enterastring:kn");gets(str);proc(str);printf("Thestringafterdeleted:kn");puts(str);}
27.请编一个函数intfun(inta),它的功能是:判断a是否是素数,若a是素数,返回1;若不是素数,返回0。A的值由主函数从键盘读入。
28.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是将a中的十位数和个位数依次放在变量c的百位和个位上,b中的十位数和个位数依次放在变量c的千位和十位上。例如,当a=45,b=12,调用该函数后c=1425。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}
29.请编写一个函数proc(),它的功能是:求出一个4×N整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:
30.编写函数fun(),其功能是:求SS所指字符串中指定字符的个数,并返回此值。例如,若输入字符串“123412132”,输入字符为“1”,则输出3。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入编写的若干语句。试题程序:
四、2.程序修改题(10题)31.给定程序MODll.C中函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。
例如,若输入2|若输入4
则输出:|则输出:
12|1234
24|2468
|36912
|481216
请改正程序函数中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
32.给定程序中,函数fun()的功能是:使数组中的元素的值增加10倍。
改正其中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
试题程序:
#include<stdio.h>
#include<conio.h>
ihtm[10];
voidfun(void)
{
intj;
printf("Insubfuncaftercalling\n");
for(j=0;j<l0;j++)
{
/************found**********************/
printf("%3d",m[j]*l0);
}
}
main()
{inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
{
m[i]=i;
printf("%3d",m[i]);
}
fun();
printf("\nInmainaftercalling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
getch();
}
33.下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。K的值由主函数传入,若k的值为500,则函数的值为2925。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<conio.h>
intfun(intk)
{
intm=0,mc=0,j;
/*************found*************/
while(k>=2)&&(mc<6)
{
/*************found*************/
if((k%7=0)||(k%ll=0))
{
/*************found**************/
m=k;
mc++;
}
k--;
}
returnm;
}
main()
{
clrscr();
printf("%d\n",fun(500));
}
34.给定程序MODll.C中fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。
例如,给字符串s输入:AAaaBBb123CCccccd,则应输出结果:upper=6,lower=8。
请改正程序中的错误,使它能计算出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
35.下列给定程序中,函数fun()的功能是:在字符串str中找出ASCII码值最小的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun()函数之前给字符串输入fagAgBDh,调用后宁符串中的内容为AfaggBDh。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
/*************found************/
voidfun(charp)
{
charmin,*q;
inti=0;
min=p[i];
while(p[i]!=0)
{
if(min>p[i])
{
/*************found*************/
p=q+i;
min=p[i];
}
i++;
}
while(q>p)
{*q=*(q-1);
q--;
}
p[0]=min;
}
main()
{
charstr[80];
printf("Enterastring:");
gets(str);
printf("\nTheoriginalstring:");
puts(str);
fun(str);
printf("\nThestringaftermoving:");
puts(str);
printf("\n\n");
}
36.下列给定程序中,函数fun()的功能是:判断一个整数m是否是素数,若是返回l,否则返回0。在main()函数中,若fun()返回1则输出YES,若fun()返回0则输出NO!
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
试题程序:
#include<conio.h>
#include<stdio.h>
intfun(intm)
{intk=2;
while(k<=m&&(m%k))
/*************found*********************/
k++
/*************found*********************/
if(m=k)
return1;
elsereturnO;
}
main()
{ihtn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
if(fun(n))printf("YES\n");
elseprintf("NO!\n");
}
37.给定程序MODll.C中函数。fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。
组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
38.给定程序MODll.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
例如,当s所指字符串为:“ABCD”时,则t所指字符串中的内容应为:“ABCDDCBA”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
39.下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
请改正函数fun()中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#defineSIZE20
fun(double*s,double*w)
{intk,i;doublesum;
for(k=2,i=0;i<SIZE;i++)
{s[i]=k;k+=2;}
sum=0.0;
for(k=0,i=0;i<SIZE;i++)
{sum+=s[i];
/*************found**************/
if(i+1%5==0)
{w[k]=sum/5;Sum=0;k++;}
}
returnk;
}
main()
{doublea[SIZE],b[SIZE/5];
inti,k;
k=fun(a/b);
printf("Theoriginaldata:\n");
for(i=0;i<SIZE;i++)
{
if(i%5==0)printf("\n");
printf("%4.0f"/a[i]);
}
printf{"\n\nTheresult:\n");
for(i=0;i<k;i++)printf("%6.2f",b[i]);
printf("\n\n");
}
40.给定程序MODll.C中函数fun的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
五、程序改错题(2题)41.下列给定程序中,函数proc()的功能是:在字符串的最前端加入m个*号,形成新串,并且覆盖原串。例如,用户输入字符串abcd(以Enter键结束),然后输入m值为3,则结果为***abcd。注意:字符串的长度最长允许为79。请修改函数proc()中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
42.下列给定程序中,函数proc的功能是:根据输入的3个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回1;若不能,则返回0。例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#include<math.h>intproc(inta,intb,intc){if(a+b>c&&b+c>aa+c>b){if(a==b&&b==c)//****found****return1;elseif(a==b||b==c||a==c)return2;//****found****elsereturn3;}elsereturn0;}voidmain{inta,b,C,shape;printf("\nlnputa,b,C:");scanf("%d%d%d",&a,&b,&c);printf("\na=%d,b=%d,c=%d\n",a,b,c);shape=proc(a,b,c);printf("\n\nTheshape:%d\n",shape);}六、操作题(2题)43.使用VC++打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是求出s所指字符串中最后一次出现的t所指字符串的地址,并将此地址通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为“abcdabfabcdx”,t中内容为“ab”时,输出结果应是“abcdx”。当字符串中的内容为“abcdabfabcdx”,t中内容为“abd”时,则程序输出未找到信息“Notfound!”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a;/*********found*********/ a=Null; while(*s) { p=s;r=t; while(*r)/*********found*********/ if(r==p) {r++;p++;} elsebreak; if(*r=='\0')a=s; s++;} returna;}voidmain(){ chars[l00],t[100],*p; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); printf(“\nPleaseentersubstringt:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nTheresultis:%s\n”,p); else printf(“\nNotfound!\n”);}
44.请补充main()函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的绝对值,并显示出来。例如,输入:-123456,结果为:123456。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。试题程序:
参考答案
1.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或不为0。本题具体做法如下:Y%2=1或Y%2!=0。
2.22解析:本题考查表达式的运算。因为x=1,y=2,所以表达式(x+y)%2=3%2=1,(int)a/(int)b=(int)}(3/2)=1,因此整个表达式的结果为(x+y)%2+(int)a/(int)b=1+1=2。
3.pcpb或pbpcpcpa或papcpbpa或papbpc,pb或pb,pc\r\npc,pa或pa,pc\r\npb,pa或pa,pb解析:本题主要考查形参为指针变量时,形参和实参间的数据传递。系统为fun2的两个形参开辟了对应的基类为int型的临时指针变量,并通过空格处的实参把地址传递给形参x,y。
4.实体实体解析:E-R模型中,有3个基本的抽象概念:实体、联系和属性。在E-R图中,用矩形框表示实体,菱形框表示联系,椭圆形框表示属性。
5.E-R图E-R图解析:E-R图是设计概念模型的有力工具。
6.484,8解析:C语言规定,共用体中各个成员变量在内存中占用同一段内存单元,即e.in.x、e.a、e.b占用同一段内存单元。执行语句e.b=2;后,e.in.x=e.a=e.b=2;执行语句e.in.x=e.a*e.b;时,e.a的值为2,e.b的值为2,所以运算得出e.in.x的值为4;执行语句e.in.y=e.a+e.b时,由于e.in.x和e.a、e.b占用的是同一段内存单元,所以此时的e.a、e.b的值为4,因此运算得出e.in.y的值为4+4=8。程序最后的输出结果为4,8。
7.x=2y=1
8.99解析:本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符,将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。
本题可按部就班地逐步运算:
fun((int)fun(a+c,b),a-c)
fun((int)fun(10,5),2-8)
fun((int)15.000000,-6)
fun(15,-6)
9
9.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。
10.x>5||x<-5或abs(x)>5x>5||x<-5或abs(x)>5解析:要使整数x的绝对值大于5,则x大于5或x小于-5,用C语言表示即为:x>5||x<-5或者abs(x)>5。
11.D
\n所谓二叉树的前序遍历是指先访问根结点,访问左子树,最后访问右子树,本题中序为DYBEAFCZX,后序为YDEBFZXCA。
\n
12.Dmain函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap函数。swap函数接收两个整型指针变量a、b,然后使用整型变量t交换a、b所指向的值并输出。通过指针变量的交换改变了实参i、j的值,使得i=7,j=3。指针变量tp交换a和b的值,由于a、b的值是p、q值的复制,因此这次交换只改变了形参a、b的值,对实参p、q的值没有改变,此时指针变量a指向j,指针变量b指向i。函数最后输出*a和*b,所以输出3,7。由于swap函数改变了p和q指向的值,因此main函数输出i的值为7,j的值为3,*P的值为i,*q的值为j。最终程序输出:3,7,7,3,7,3。故本题答案为D选项。
13.A题干中,函数fun接收一个整型指针参数,返回值为int类型。main函数首先定义一个函数指针a,将函数fun的地址赋给a,所以a是指向函数fun的指针,可以通过a调用函数fun。选项A中,通过a调用函数fun,可以使用(*a),接收的参数是整型变量c的地址,正确;选项B中,参数x是一个数组,错误;选项C中,调用b函数,由于程序没有给出函数b的定义,因此这里调用b是错误的,而且函数b是没有参数的,这里调用b的时候传入了参数,所以C错误;选项D中,由于b是一个函数,不能作为整型指针变量传给fun函数,因此D错误。本题答案为A选项。
14.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六进制数,转为十进制数x=9。“printf(“%C\\n”,‘A’+9);”,输出格式要求是“%c”,因此将字符‘A’按字母顺序向后偏移9个位置,可得结果为“J”。故本题答案为B选项。
15.D
16.D解析:putchar(c1)输出1,putchar(c2)输出2,printf(“%c%c\\n”,c5,c6)输出45。
17.DD)【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。
18.C首先计算表达式“a=9”;再计算表达式“a-=9”;即“a=a-9”,结果为0;最后计算表达式“a+=0”,即“a=a+0”,所以最终结果为0。故本题答案为C选项。
19.D本题考查双重函数调用及for循环使用,fun函数中第一个for循环语句的作用是给数组a赋值。当第一次调用fun函数时,把实参1传给形参,输出a数组的元素为1,3,5;第二次调用fun函数时,由于数组a为静态局部变量,故输出a数组的元素为一1,3,7。
20.C
21.
【解析】题目中要求把下标从p到n-1的数组元素平移到数组的前面,可以通过每一次循环将最后一个元素放在第一个位置上,使其成为第一个元素,其余元素后移一个位置。通过n-1-p次循环实现将从p到n-1的数组元素平移到数组的前面。
22.1fun(STUa[],STU*s)2{3inti;4*s=a[0];/*假设第1个元素值最小*/5for(i=0;i<N;i++)/*如果在循环的过程中再发现比第1个元素值更小的元素则赋给*s*/6if(s->s>a[i].s)7*s=a[i];8}题目要求找出结构体数组元素中的最小值。假设数组中第1个元素值最小,即*s=a[0];,如果在循环的过程中发现比第1个元素值更小的,就将指针s指向该元素,直到找到值最小的元素。另外,本题还涉及结构体中的指向运算符。23.voidfun(inttt[M][N],intpp[N]){ inti,j,max; for(j=0;j<=""p=""> { max=tt[0][j]; /*假设各列中的第1个元素值最大*/ for(i=0;i<=""p=""> if(tt[i][1]>max)/*如果各列中的其他元素值比最大值大,则将这个值更大的元素看作当前该列中值最大的元素*/ max=tt[i][j]; pp[j]=max; /*将各列的最大值依次放入pp数组中*/ }}本题函数fun()的功能是求出二维数组中每列值最大的元素。首先,假设各列中的第1个元素值最大,然后利用行下标的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个值更大的元素看作当前该列中值最大的元素,继续与该列中的其他元素进行比较。
24.
【解析】字符串数组中每一行都是一个完整的字符串,其结束标志为ˊ\0ˊ。因此,通过字符串的结束标志来判断每一个字符串是否结束,将字符串数组中的所有字符串均赋值给新的一维数组b来完成字符串的合并。
25.1voidfun(inta,intb,long*c)2{3*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);4}本题给出两个两位数的正整数。分别取出两个数各位上的数字,再按条件组成一个新数。取整数a十位数的方法为a/10,取整数a个位数的方法为a%10。同理可取出整数b的个位数和十位数。26.voidproc(char*str){char*p=str;while(*p==*)p++;//通过p的移动来达到使p指向第一个不是*号的字符for(;*p!=\0;p++,str++)//把从第一个不是*号的字符放到a中*str=*P:*str=\0;//最后用\0作为字符串结束标志}【解析】题目中要求将字符串中的前导*号全部删除,首先将指针P移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。
27.\n#include”stdio.h”
\nintfun(inta)
\n{intI;
\nif(a==2)return1;I=2;
\nwhile((a%I)!=0I<=sqrt((float)a))
\nI++;
\nif(a%I==0)
\n{printf(“%disnotaprime!”,a);
\nreturn0;}
\nprintf(“%disaprime!”,a);
\nreturn1;}
\nmain
\n{intx;
\nprintf(“\\npleaseenteranumber:”);
\nscanf(“%d”,&x);
\nprintf(“%d\\n”,fun(x));}
\n28.voidfun(inta,intb,long*c){/*b%10获取b的个位数,a/10获取a的十位数,a%10获取a的个位数,b/10获取b的十位数*/ *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;}本题主要考核如何取出变量a和b的个位数和十位数,取出后如何将其表示成c中相应的位数。由于变量a和b都是只有两位的整数,因此分别对它们除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。将得到的数对应乘以1000、100、10、1,即可得到c的千位数、百位数、十位数、个位数。注意使用变量c时要进行指针运算。
29.
【解析】要求出二维数组中最大元素的值,需要比较二维数组中每一个元素的值。首先,定义变量max用来存放最大元素的值,将其初始化为二维数组中第一个元素的值。然后将其与后面的每一个元素进行比较,将二维数组中最大元素的值放到变量max当中,并将其返回给主函数。
30.
【解析】此题考查用for循环遍历字符串和通过条件表达式*ss!=ˊ\0ˊ来判断字符串是否结束。给字符串加上结束标识ˊ\0ˊ,通过for循环遍历字符串中每一个字符,在遇到结束标识前,如果遇到指定(即用户输入)字符,变量i加1,最后将变量i返回,即用户输入字符在字符串中出现的次数。
31.(1)voidfun(inta[][M]intm)(2)a[j][k]=(k+1)*(j+1);(1)voidfun(inta[][M],intm)(2)a[j][k]=(k+1)*(j+1);解析:本题中函数的功能是根据形参m的值(2≤m≤9),在m行m列的二维数组中存放有规律的数据,规律就是,i和j代表二维数组的行和列,则a啪[k]=(k+1)*(j+1)。
32.错误:printf("%3d"m[j]*10);正确:printf("%3d"m[j]=m[j]*10错误:printf('%3d'm[j]*10);正确:printf('%3d'm[j]=m[j]*10解析:本题考查全局变量相关知识。该题程序中的fun()没有参数输入,但数组m[10]为全局变量,故可在fun()函数中使用,fun()函数对数组m的操作可以反映到主函数的输出结果中。
33.(1)错误:while(k>=2)&&(mc<6)正确:while((k>=2)&&(mc<6))(2)错误:if((k%7=0)||(k%11=0))正确:if((k%7==0)||(k%11=0))(3)错误:m=k正确:m=m+k;(1)错误:while(k>=2)&&(mc<6)正确:while((k>=2)&&(mc<6))\r\n(2)错误:if((k%7=0)||(k%11=0))正确:if((k%7==0)||(k%11=0))\r\n(3)错误:m=k正确:m=m+k;解析:错误1:C语言规定while语句后的表达式两侧必须要有圆括号。错误2:if语句的判断条件应用关系运算符,而不是赋值运算符。错误3:根据题意,将满足条件的数求累加和。
34.(1)voidfun(char*sint*aint*b)(2)*a=*a+1;(3)*b=*b+1;(1)voidfun(char*s,int*a,int*b)\r\n(2)*a=*a+1;\r\n(3)*b=*b+1;解析:该程序功能是统计字符串中的大小写字母的个数。从已给定源程序的main主函数开始入手,调用函数“fun(s,&uper,&lower);”,传参数uper,lower的地址,对字符串s中的字符进行判断,求得该字符串中大小写字母的个数。
35.(1)错误:voidfun(charp)正确:voidfun(char*p)(2)错误:p=q+i;正确:q=p+i;(1)错误:voidfun(charp)\u3000\u3000正确:voidfun(char*p)\r\n(2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖南财经工业职业技术学院高职单招职业适应性测试备考试题带答案解析
- 2026年惠州卫生职业技术学院单招职业技能考试备考题库带答案解析
- 2026年山东胜利职业学院单招综合素质考试备考试题附答案详解
- 2026年四川司法警官职业学院单招职业技能笔试模拟试题带答案解析
- 2026年苏州工业园区服务外包职业学院单招职业技能笔试模拟试题带答案解析
- 2026年太原城市职业技术学院高职单招职业适应性测试参考题库带答案解析
- 2026年天津海运职业学院高职单招职业适应性测试备考试题带答案解析
- 智能客服系统改进
- 2026年延边职业技术学院单招职业技能笔试模拟试题带答案解析
- 2026年闽西职业技术学院单招职业技能笔试备考题库带答案解析
- (2025)医院医疗质量安全管控与不良事件防范专项总结(3篇)
- 2026年江西制造职业技术学院单招职业适应性考试模拟测试卷附答案
- GJB1406A-2021产品质量保证大纲要求
- 2025年消化内镜中心考试题及答案
- GB/T 8897.2-2021原电池第2部分:外形尺寸和电性能
- GB/T 1962.1-2001注射器、注射针及其他医疗器械6%(鲁尔)圆锥接头第1部分:通用要求
- GB/T 14525-2010波纹金属软管通用技术条件
- GB/T 1040.3-2006塑料拉伸性能的测定第3部分:薄膜和薄片的试验条件
- 第八讲-信息化战争概述课件
- 公文写作与处理 历年真题及答案
- 需求导向式销售研讨课程课件
评论
0/150
提交评论