中山大学《高级语言程序设计一》实践试题.docx

上传人:b****5 文档编号:7655299 上传时间:2023-01-25 格式:DOCX 页数:12 大小:17.84KB
下载 相关 举报
中山大学《高级语言程序设计一》实践试题.docx_第1页
第1页 / 共12页
中山大学《高级语言程序设计一》实践试题.docx_第2页
第2页 / 共12页
中山大学《高级语言程序设计一》实践试题.docx_第3页
第3页 / 共12页
中山大学《高级语言程序设计一》实践试题.docx_第4页
第4页 / 共12页
中山大学《高级语言程序设计一》实践试题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

中山大学《高级语言程序设计一》实践试题.docx

《中山大学《高级语言程序设计一》实践试题.docx》由会员分享,可在线阅读,更多相关《中山大学《高级语言程序设计一》实践试题.docx(12页珍藏版)》请在冰豆网上搜索。

中山大学《高级语言程序设计一》实践试题.docx

中山大学《高级语言程序设计一》实践试题

中大计算机及应用实践考试高级语言程序设计一实践考核试题及答案

试题1.有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少?

编写程序,在屏幕上打印输出这些三位数.

解答:

main()

{

inta[4]={1,2,3,4};

inti,j,k;

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

for(k=0;k<4;k++)

{

if((i!

=j)&&(j!

=k)&&(i!

=k))

{

printf("%8d",a*100+a[j]*10+a[k]);

}

}

printf("n");

}

}

}

试题2.有一个整数,加上100后是一个完全平方数,再加上168又是一个完全平方数,编写程序求出该数是多少?

解答:

#include

main()

{

inti=10,j;

longm=268,n=100;

charflag='n';

while(flag=='n')

{

for(j=i+1;j<=sqrt(m);j++)

{

if(m==(long)(j*j))

{

printf("%dn",n-100);

flag='y';

break;

}

}

i++;

n=(long)i*i;

m=n+168;

}

}

试题3.编写C程序,要求能读入一正整数n,(n<10),并输出如下图形:

1

222

33333

.

.

.

nnnnn...nnnnn(共2n-1个n)

.

.

.

33333

222

1

解答:

main()

{

inti,j,n;

printf("Pleaseinputn(1~9):

n");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

for(j=0;j

printf("");

for(j=0;j<2*i-1;j++)

printf("%d",i);

printf("n");

}

for(i=n-1;i>=1;i--)

{

for(j=0;j

printf("");

for(j=0;j<2*i-1;j++)

printf("%d",i);

printf("n");

}

}

试题4.编写C程序,要求能读入两个整数m与n,计算并读出m与n的绝对值的最大公约数及最小公倍数.

解答:

main()

{

intm,n,a,b,t,div,mul;

printf("Pleaseinputm,n:

n");

scanf("%d,%d",&m,&n);

if(m<0)m=-m;

if(n<0)n=-n;

if((m==0)||(n==0))

{

div=0;

mul=0;

}

else

{

if(m

{

a=n;

b=m;

}

else

{

a=m;

b=n;

}

do

{

t=a%b;

a=b;

b=t;

}

while(t!

=0);

div=a;

mul=m*n/a;

}

printf("themaximumcommondivisorof%d,%dis:

%dn",m,n,div);

printf("theminimumcommonmultipleof%d,%dis:

%dn",m,n,mul);

}

试题5.已知e=1+1/1!

+1/2!

+1/3!

+...+1/n!

试用上述公式求e的近似值.要求累加所有不小于10-6的项值,部分程序给出如下,请完成程序,实现以上功能.

#include

main()

{

inti=1;

floate,n;

e=1.0;i=1;

n=1.0;

******在此编写代码******

}

fun(inti)

{

intj,k;

k=1;

for(j=1;j<=i;++j)

k=k*j;

return(k);

}

解答:

#include

main()

{

inti=1;

floate=1.0,n=1.0;

do

{n=fun(i);

e+=1.0/n;

i++;

}

while(1.0/n>=1e-6);

printf("e=%fn",e);

}

fun(inti)

{

intj,k;

k=1;

for(j=1;j<=i;++j)

k=k*j;

return(k);

}

试题6.请编写程序求出100~200之间的所有素数,并将结果在屏幕上显示出来.(素数是只能被1和它本身整除的自然数)

解答:

main()

{

inti,j;

for(i=100;i<=200;i++)

{

for(j=2;j

{

if(i%j==0)break;

}

if(i==j)

printf("%4d",i);

}

}

试题7.编写一个函数fun(str),它的功能是:

统计由实参传来的一个字符中的字母,数字,空格和其它字符的个数.部分源程序给出如下,请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句.

#include

intalph,digit,space,others;

main()

{

chartext[80];

printf("n请输入一个字符串:

n");

gets(text);

printf("字符串是:

n");

puts(text);

alph=digit=space=others=0;

fun(text);

printf("n%d个字母,%d个数字,%d个空格,%d个其它字符.n",

alph,digit,space,others);

}

fun(str)

charstr[];

{............}

 

解答:

#include

intalph,digit,space,others;

main()

{

chartext[80];

printf("pleaseinputacharacterstring:

n");

gets(text);

printf("thecharacterstringis:

n");

puts(text);

alph=digit=space=others=0;

fun(text);

printf("alphnumber:

%d,digitnumber:

%d,spacenumber:

%d,othersnumber:

%dn",alph,digit,space,others);

}

fun(str)

charstr[];

{

inti=0;

while(str!

='')

{

if((('a'<=str)&&(str<='z'))||

(('A'<=str)&&(str<='Z')))

alph++;

elseif(('0'<=str)&&(str<='9'))

digit++;

elseif(str=='')space++;

elseothers++;

i++;

}

return;

}

试题8.编写一个程序,它的功能是:

将一个3x3的矩阵转置,例如:

运行程序时,按行输入以下3x3的矩阵:

123

456

789

转置后的矩阵为:

147

258

369

解答:

main()

{

inta[3][3],b[3][3],i,j;

printf("Pleaseinputamatrix:

n");

for(i=0;i<3;i++)

for(j=0;j<3;j++)

{

scanf("%d",&a[j]);

b[j]=a[j];

}

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%8d",b[j]);

printf("n");

}

}

 

试题9.编写程序打印如下的逆蛇形数字方阵.(用循环语句,行数可变,至少8行)

1121110

213169

314158

4567

 

解答:

main()

{

inti,j,m=1,n,a[80][80];

printf("pleaseinputn:

n");

scanf("%d",&n);

for(i=0;i<(n+1)/2;i++)

{

for(j=i;j

{

a[j]=m++;

}

for(j=i+1;j

{

a[n-i-1][j]=m++;

}

for(j=n-i-2;j>=i;j--)

{

a[j][n-i-1]=m++;

}

for(j=n-i-2;j>i;j--)

{

a[j]=m++;

}

}

for(i=0;i

{

for(j=0;j

{

printf("%4d",a[j]);

}

printf("n");

}

}

 

试题10.正读和反读都一样的字符串称为回文字符串,在键盘上输入一个字符串,判别它是否回文字符串(字符串中字符的个数不得少于10).

解答:

#include

main()

{

charstr[80],flag='y';

inti=0,j;

printf("pleaseinputastring:

n");

gets(str);

j=strlen(str);

j--;

while(i<=j)

{

if(str!

=str[j])

{

flag='n';

break;

}

else

{

i++;

j--;

}

}

if(flag=='n')

printf("thestringisnotpalindrome!

n");

else

printf("thestringispalindrome!

n");

}

 

1n<=1

试题11.y(n){,编写程序计算y(n),要求能

y(n-2)+2*y(n-1)n>1

对读入的任意n(n>=0且n<50),能计算并输出y(n)的值.

解答:

inty(intn)

{

if(n<=1)return

(1);

elsereturny(n-2)+2*y(n-1);

}

main()

{

intn,f;

printf("pleaseinputn:

n");

scanf("%d",&n);

f=y(n);

printf("y(n)=%dn",f);

}

试题12.编写C程序,要求能读入一个字符串(100以内个字符,其中有空格),计算并输出该字符串中所有大写英文字母的个数.

解答:

#include

main()

{

inti=0,n=0;

charstr[100];

printf("pleaseinputastring:

n");

gets(str);

while(str!

='')

{

if(('A'<=str)&&(str<='Z'))n++;

i++;

}

printf("thenumberis:

%dn",n);

}

 

试题13.一个整数,加上100后是一个完全平方数,再加上168又是一个完全平方数,编写程序,要求在100000以内的整数中找出所有满足上述性质的整数.

解答:

#include

main()

{

inti=10,j;

longm=268,n=100;

while(n<100000)

{

for(j=i+1;j<=sqrt(m);j++)

{

if(m==(long)(j*j))

{

printf("%8d",n-100);

break;

}

}

i++;

n=(long)i*i;

m=n+168;

}

printf("n");

}

 

试题14.编写程序,求1到100之间的奇数之和及偶数之和,并将二者输出.

解答:

main()

{

inti;

intoddSum=0,evenSum=0;

for(i=1;i<=100;i++)

{

if(i%2==1)oddSum+=i;

elseevenSum+=i;

}

printf("theoddnumbersumis:

%dn",oddSum);

printf("theevenunmbersumis:

%dn",evenSum);

}

试题15.编写程序,计算PI的近似值,公式如下:

PI/4=(1-1/3+1/5-1/7+...),直到累加项的绝对值小于0.0001为止.(即公式右边的各项的绝对值均大于0.0001).

解答:

#include"math.h"

main()

{

floatpi=0.0,n=1.0,s=1.0,t;

do

{

t=s/n;

pi+=t;

s*=-1.0;

n+=2;

}

while(fabs(t)>=1e-4);

printf("PI=%fn",4*pi);

}

 

试题17.编写程序,生成Fibonacci数列f(i)的前20项(即i=20)并输出,其中:

0i=1

f(i){1i=2

f(i-2)+f(i-1)i>2

解答:

main()

{

intn;

staticintf[20]={0,1};

for(n=2;n<20;n++)

f[n]=f[n-1]+f[n-2];

for(n=0;n<20;n++)

{

if(n%5==0)printf("n");

printf("%8d",f[n]);

}

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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