C语言上机模拟题Word文件下载.docx

上传人:b****5 文档编号:19252248 上传时间:2023-01-04 格式:DOCX 页数:19 大小:19.69KB
下载 相关 举报
C语言上机模拟题Word文件下载.docx_第1页
第1页 / 共19页
C语言上机模拟题Word文件下载.docx_第2页
第2页 / 共19页
C语言上机模拟题Word文件下载.docx_第3页
第3页 / 共19页
C语言上机模拟题Word文件下载.docx_第4页
第4页 / 共19页
C语言上机模拟题Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言上机模拟题Word文件下载.docx

《C语言上机模拟题Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言上机模拟题Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

C语言上机模拟题Word文件下载.docx

scanf("

%d"

&

a[i]);

t=mymax(a[10],10);

/*$ERROR3$*/t=mymax(a,10)

MAX=%d\n"

t);

3、从键盘输入5个学生记录信息(姓名中不能包含空格字符),统计其中不及格的人数并输出不及格学生的信息。

string.h>

structstudent

{

intnum;

charname[20];

intscore;

};

structstudentstud[5];

inti,n=0;

5;

{

printf("

InputNO.%dnum:

"

i+1);

stud[i].num);

InputNO.%dname:

%s"

stud[i].name);

InputNO.%dscore:

stud[i].score);

num\tname\t\tscore\n"

);

i=1;

/*$ERROR1$*/i=0

while(i<

5)

if(score<

60)/*$ERROR2$*/stud[i].score

{

printf("

%d\t%-15s\t%d\n"

stud[i].num,stud[i].name,stud[i].score);

n--;

/*$ERROR3$*/n++

i++;

n=%d\n"

n);

4、以下程序的功能为:

第一个数是1,从第二个数起没个数都是它前一项的2倍再加5,求第n个数是多少(n从键盘输入且在20以内,用递归实现)。

longfunction(intn)

longm;

if(n==1)

m=0;

/*$ERROR1$*/m=1;

else

m=2*m+5;

/*$ERROR2$*/m=2*function(m-1)+5

return(m);

intn;

scanf("

/*$ERROR3$*/&

n

m=function(n);

%ld\n"

m);

5、从键盘输入一字符串并删除该字符串中所有大写字母字符。

intn=0,i;

chars[81];

gets(s);

/*$ERROR1$*/i=0;

while(s[i]='

\0'

)/*$ERROR2$*/s[i]!

='

if(!

(s[i]>

A'

&

s[i]<

Z'

))

s[n++]=s[i];

s[i]='

;

/*$ERROR3$*/s[n]='

puts(s);

6、把字符串中所有大写字母改写成该字母的前一个字母,如果是字母‘A’,则改写成字母‘Z’,小写字母和其它字符保持不变。

chars[80];

inti;

getc(s);

/*$ERROR1$*/gets(s);

s[i]!

i++)

if(s[i]='

)/*$ERROR2$*/s[i]=='

s[i]='

elseif(s[i]>

B'

s[i]=s[i]-1;

%c\n"

s);

/*$ERROR3$*/"

%s\n"

7、在屏幕上输出如下图形:

*****

****

***

**

*

chara[5];

inti,j;

for(j=0;

a[j]="

*"

/*$ERROR1$*/a[j]=’*’;

j=0;

while(j<

i)/*$ERROR2$*/j<

5-i

%c"

a[j]);

j++;

/n"

/*$ERROR3$*/printf("

\n"

8、在屏幕上输出如下图形:

1

23

345

4567

56789

6)

j=1;

/*$ERROR1$*/j=i

2*i)

j);

/*$ERROR2$*/printf("

i--;

/*$ERROR3$*/i++

9、将输入的数字字符串(长度小于10)转换成对应的整数,如将输入的字符串“2010”转换为整数2010.

chars[10];

longk=0;

getchar(s);

j=strlen(s);

/*$ERROR2$*/i=0;

j)

if(s[i]>

0'

9'

k=k*10+s[i];

/*$ERROR3$*/k=k*10+s[i]-‘0’;

k=%ld\n"

k);

二、填空题:

1、输出以下图形(数字之间没有空格,每行第一个数字前也没有空格)

0001000

0011100

0111110

1111111

math.h>

for(i=-3;

=___;

i++)/*$BLANK1$*/3

j=1;

while(j<

=abs(i))

0"

j++;

while(j___7-2*abs(i))/*$BLANK2$*/<

=

1"

___;

/*$BLANK3$*/j++

2、有数列1,1,2,4,7,13,24,……,该数列的规律是,从第四项起,每项是它前三项之和。

下列程序功能是:

将该数列的前30项存放在一维数组中并全部输出。

输出时要求每行输出5个数。

longf[30];

f[0]=f[1]=1;

f[2]=___;

/*$BLANK1$*/2

%10ld%10ld%10ld"

f[0],f[1],f[2]);

for(i=3;

___;

i++)/*$BLANK2$*/30

f[i]=f[i-1]+f[i-2]+f[i-3];

if(i%5==___)/*$BLANK3$*/0

%10ld"

f[i]);

3、定义求n!

的递归函数f(),并调用函数f()求1!

+2!

+3!

+4!

+5!

的值。

longf(intn)

if(n==1||n==0)

return

(1);

else

return(n*f(___));

/*$BLANK1$*/return(n*f(n-1));

longs;

s=___;

/*$BLANK2$*/s=0;

for(i=1;

=5;

s+=f(i);

1!

+5!

=%ld\n"

___);

/*$BLANK3$*/s

4、从键盘输入两个正整数,并输出他们的最大公约数。

intgcd(intm,intn)

intr,t;

if(m<

n)

t=m;

m=n;

/*$BLANK1$*/n=t;

while(n>

0)

r=m%n;

n=r;

}

return(___);

/*$BLANK2$*/return(m);

}

intm,n,result;

Peaseinputtwonumber:

%d%d"

/*$BLANK3$*/&

m,&

result=gcd(m,n);

result=%d\n"

result);

5、以下程序的功能是将指定字符插入到字符串s指定位置。

程序输出结果是:

1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ请填空。

voidInsert(chars[],intposition,charch);

chars[80]={"

1234567890ABCEFGHIJKLMNOPQRSTUVWXYZ"

Insert(s,13,'

D'

voidInsert(chars[],intposition,charch)

inti=0;

while(s[i]!

='

)i++;

while(i>

_____)/*$BLANK1$*/position

s[i+1]=_____;

/*$BLANK2$*/s[i+1]=s[i];

--i;

s[i]=____;

/*$BLANK3$*/s[i]=ch;

6、根据给定的数组a,求出其中最大的那个元素(假设只有唯一一个),以及它所在数组的行标和列标。

inti,j,row,col;

inta[3][4]={{3,5,1,8},{6,4,11,7},{9,3,10,2}};

row=col=0;

i++)/*$BLANK1$*/i<

3

4;

if(a[row][col]<

______)/*$BLANK2$*/a[i][j]

row=i;

col=j;

max=%d,row=%d,col=%d\n"

______,row,col);

/*$BLANK3$*/a[row][col]

7、统计用0~9之间不同的3个数字构成一个三位数(百位不能为0)有多少种方法,如:

123,345,182等。

{inti,j,k,count;

count=__;

/*$BLANK1$*/0

for(i=1;

=9;

if(___)/*$BLANK2$*/i!

=j

for(k=0;

k<

k++)

if(k!

=i__k!

=j)/*$BLANK3$*/k!

=i&

k!

count++;

printf("

8、计算并输出给定整数n的所有因子之和(不包括1和它自身)。

规定n的值不大于1000.

intn,i,s;

Pleaseinputn:

/*$BLANK1$*/&

s___;

/*$BLANK2$*/s=0;

for(i=2;

i<

=n-1;

if(n%i==0)

s=s+___;

/*$BLANK3$*/s=s+i

s=%d\n"

9、根据输入的打车里程数计算应付车费(取1位小数)。

(1)出租车起步价8元;

(2)超出3公里,每公里加1.5元;

(3)超出50公里(包括50)费用加倍。

doublex,y;

Pleaseinputx:

%lf"

____);

x

if(x____3)/*$BLANK2$*/x<

=3

y=8;

if(x____50)/*$BLANK3$*/x>

=50

y=2*(8+(x-3)*1.5);

else

y=8+(x-3)*1.5;

y=%.1f\n"

y);

三、程序设计题:

1、求所有的水仙花数之和。

如:

153=1*1*1+5*5*5+3*3*3

voidPRINT(ints)

FILE*out;

sum=%d\n"

if((out=fopen("

C:

\\24000101\\RESULT.DAT"

"

w+"

))!

=NULL)

fprintf(out,"

sum=%d"

fclose(out);

{ints=0,a,b,c;

Inti;

for(i=100;

1000;

{a=i/100;

b=i/10%10;

c=i%10;

If(a*a*a+b*b*b+c*c*c)==i

s=s+i;

PRINT(s);

2、根据下式求s的值(要求使用循环实现):

s=1+1/2+1/3+1/4+……+1/n,直到最后一项小于0.0001.

voidPRINT(doubles)

s=%.5f\n"

\\24000102\\RESULT.DAT"

s=%.5f"

{longi=1;

floatt;

doubles=0;

do

{t=1.0/i;

i++;

s+=t;

}while(t>

=0.0001);

3、根据下式求s的值(要求使用循环实现):

s=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4)+……+1/(1+2+3+……+10)

s=.%.5f"

{inti;

doublet=0,s=0;

=10;

{t=t+i;

s=s+1.0/t;

4、根据下式求s的值(要求使用循环实现):

s=(1-1/2)+(1/3-1/4)+……+(1/99-1/100)

\\24000107\\RESULT.DAT"

=50;

s+=1.0/(2*i-1)-1.0/(2*i);

5、韩信有一队兵,他想知道有多少人,便让士兵排队报数。

按从1至5报数,最末一个士兵报的数为1;

按从1至6报数,最末一个士兵报的数为5;

按从1至7报数,最末一个士兵报的数为4,最后再按从1至11报数,最末一个士兵报的数为10。

请编程计算韩信至少有多少兵。

voidPRINT(intn)

num=%d\n"

\\24000106\\RESULT.DAT"

num=%dg"

{intn;

for(n=1;

n++)

if((n%5==1)&

(n%6==5)&

(n%7==4)&

(n%11==10))break;

PRINT(n);

6、有男人、女人和小孩共十人,在一家饭馆吃饭共花了50元,每个男人各花7元,每个女人各花6元,每个小孩各花4元,问男人、女人和小孩各有几个人?

注意:

(1)男人、女人和小孩都必须有;

(2)问题的解只有一种;

(3)要求用循环实现。

voidPRINT(inta,intb,intc)

men=%d,women=%d,children=%d\n"

a,b,c);

\\24000105\\RESULT.DAT"

men=%d,women=%d,children=%d."

{inta,b,c;

for(a=1;

a<

a++)

for(b=1;

b<

b++)

{c=10-a-b;

if(a*7+b*6+c*4==50&

c>

0)PRINT(a,b,c);

7、计算800到2010之间满足下列条件的所有自然数之和。

(1)能被7整除;

(2)减1之后能被3整除。

voidPRINT(longs)

s=%ld\n"

\\24000103\\RESULT.DAT"

s=%ld"

longs=0;

for(n=800;

n<

=2010;

if(n%7==0&

(n-1)%3==0)s+=n;

8、求2010到9999之间个位数不是1的所有素数之和。

{inti,j;

for(i=2011;

=9999;

i+=2)

{for(j=2;

=i/2;

if(i%j==0)break;

if(j>

i/2&

i%10!

=1)s+=i;

9、设有正整数a和b,其中:

(1)a<

50,b<

50;

(2)2*a+b*b等于2010;

(3)a*a+b*b等于3305。

求满足条件的a和b的值。

voidPRINT(inta,intb)

a=%d,b=%d\n"

a,b);

=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1