✅ 操作成功!

计算机编程基础

发布时间:2023-06-06 作者:admin 来源:文学

计算机编程基础

计算机编程基础

-

2023年2月16日发(作者:)

计算机程序设计基础(c语言)习题编程题

1

计算机程序设计基础(C语言)

编程练习题及参考答案

1.输入2个整数,求两数的平方和并输出。

#include

main()

{intta,b,s;

printf(\"pleaseinputa,b:n\");

scanf(\"%d%d”,&a,&b);

s=a*a+b*b;

printf(\"theresultis%dn\",s);

}

2.输入一个圆半径(r)当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。

#include

#definePI3.14

main()

{floatr,s,l;

printf(\"pleaseinputr:n\");

scanf(\"%f”,&r);

if(r>=0)

{s=pi*r*r;

l=2*i*r;

printf(\"theareais%fn\",s);

printf(\"thecircumferenceis%fn\",l);}

else

printf(\"inputerror!n\");

}

3、函数y=f(x)可表示为:

2x+1(x<0)

y=0(x=0)

2x-1(x>0)

编程实现输入一个x值,输出y值。

main()

{intx,y;

scanf(“%d”,&x);

If(x<0)y=2*x+1;

If(x>0)y=2*x-1;

If(x==0)y=0;

printf(“%d”,y);}

计算机程序设计基础(c语言)习题编程题

2

4、编写一个程序,从4个整数中找出最小的数,并显示此数。

main()

{inta,b,c,d,t;

scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(a>d)

{t=a;a=d;d=t;}

printf(“min=%dn”,a);

}

5.有一函数当x0时,y=3,当x=0时y=5,编程,从键盘输入一个x值,

输出y值。

main()

{intx,y;

scanf(\"%d\",&x);

if(x<0)y=1;

elseif(x==0)y=5;

elsey=3;

printf(\"x=%d,y=%dn\",x,y);}

6.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数)

main()

{floatmax(floatx,floaty);

floata,b,m;

scanf(\"%f,%f\",&a,&b);

m=max(a,b);

printf(\"Maxis%fn\",m);

}

floatmax(floatx,floaty)

{

floattemp;

if(x

{temp=x;

x=y;

y=temp;

}

return(x);

}

计算机程序设计基础(c语言)习题编程题

3

7、从键盘输入你和你朋友的年龄,编成判断谁的年龄最大,并打印最大者的年龄。

#include

main()

{intyourAge,hisAge;

printf(\"Pleaseenteryourage:\");

scanf(\"%d\",&yourAge);/*输入你的年龄yourAge*/

printf(\"Pleaseenteryourfriend\'sage:\");

scanf(\"%d\",&hisAge);/*输入你朋友的年龄hisAge*/

if(yourAge>=hisAge)

{

printf(\"Youareolder!Yourageis=%dn\",yourAge);

}

if(hisAge>yourAge)

{

printf(\"Yourfriendisolder!HisAgeageis=%dn\",hisAge);

}}

8、键盘输入2个加数,再输入答案,如果正确,显示“right”,否则显示“error”

#include“stdio.h”

main()

{inta,b,c;

printf(“pleaseinputaandbn”);

scanf(%d,%d”,&a,&b);

printf(“pleaseinputtheanswerfora+bn”);

scanf(%d”,&c);

if(c==a+b)

printf(“rightn”);

else

printf(“errorn”);

}

9.编一程序每个月根据每个月上网时间计算上网费用,计算方法如下:

小时

小时

小时

元每小时

元每小时

费用

50

5010

10

5.2

3

30

要求当输入每月上网小时数,显示该月总的上网费用(6分)

main()

{inthour;

floatfee;

printf(“pleaseinputhour:n”);

计算机程序设计基础(c语言)习题编程题

4

scanf(“%d”,&hour);

if(hour<=10)

fee=30;

elseif(hour>=10&&hour<=50)

fee=3*hour;

elsefee=hour*2.5;

printf(“Thetotalfeeis%f”,fee);

}

10.神州行用户无月租费,话费每分钟0.6元,全球通用户月租费50元,话费每分钟0.4元。

输入一个月的通话时间,分别计算出两种方式的费用,判断哪一种合适。

main()

{floata,x,y;

printf(“n请输入您的话费:”);

scanf(“%f,”,&a);

x=0.6*a;

y=50+0.4*a;

printf(“神州行话费为:%fn”,x);

printf(“全球通话费为:%fn”,y);

if(x>=y)

printf(“建议使用全球通”);

elseprintf(“建议使用神州行);

}

11.个人所得税计算,应纳税款的计算公式如下:

收入税率

收入<=1000元部分0%

2000元>=收入>1000元的部分5%

3000元>=收入>2000元的部分10%

6000元>=收入>3000元的部分15%

收入>6000元的部分20%

输入某人的收入,计算出应纳税额及实际得到的报酬。(7分)

(如需连续计算多个人的纳税情况,直到输入负数为止,程序应如何改进?试写出程序)

#include“stdio.h”

main()

{

intgrade;

floatincome,tax,money;

printf(“pleaseinputyourincomen”);

scanf(“%f”,&income);

计算机程序设计基础(c语言)习题编程题

5

if(income<0)

printf(“theinputiserror”);

else

{grade=(int)income/1000;

switch(grade)

{case0:tax=0;break;

case1:tax=(income-1000)*0.05;break;

case2:tax=50+(income-2000)*0.1;break;

case3:

case4:

case5:tax=150+(income-3000)*0.15;break;

default:tax=600+(income-6000)*0.2;

}

money=income-tax;

printf(“ntax=%f,money=%f”,tax,money);

}

}

12.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;

80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,

等级为E。

#include

main()

{

intdata;

chargrade;

printf(\"Pleaseenterthescore:\");

scanf(\"%d”,&data);

switch(data/10)

{case10:

case9:grade=’A’;break;

case8:grade=’B’;break;

case7:grade=’C’;break;

case6:grade=’D’;break;

default:grade=’E’;

}

printf(\"thegradeis%c”,grade);

}

*13.编程设计一个简单的计算器程序。从键盘输入2个操作数,1个运算符,当运算符为加(+)、

减(-)、乘(*)、除(/)时,输出计算结果

计算机程序设计基础(c语言)习题编程题

6

#include

main()

{intdata1,data2;/*定义两个操作符*/

charop;/*定义运算符*/

printf(\"Pleaseentertheexpression:\");

scanf(\"%d%c%d\",&data1,&op,&data2);/*输入运算表达式*/

switch(op)/*根据输入的运算符确定要执行的运算*/

{case\'+\':/*处理加法*/

printf(\"%d+%d=%dn\",data1,data2,data1+data2);

break;

case\'-\':/*处理减法*/

printf(\"%d-%d=%dn\",data1,data2,data1-data2);

break;

case\'*\':/*处理乘法*/

printf(\"%d*%d=%dn\",data1,data2,data1*data2);

break;

case\'/\':/*处理除法*/

if(0==data2)/*为避免出现溢出错误,检验除数是否为0*/

printf(\"Divisionbyzero!n\");

else

printf(\"%d/%d=%dn\",data1,data2,data1/data2);

break;

default:

printf(\"Unknownoperator!n\");

}

}

14.从键盘输入10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。

main()

{inta[10],i,p=0,n=0,z=0;

printf(“pleaseinputnumber”);

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

{scanf(“%d,”,&a[i]);

if(a[i]>0)

p++;

elseif(a[i]<0)

n++;

elsez++}

printf(“正数:%5d,负数:%5d,零:%5dn”,p,n,z);

}

}

计算机程序设计基础(c语言)习题编程题

7

15、编程序实现求1-200之间的所有数的乘积并输出。

#include

main()

{inti,sum=1

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

sum=sum*i;

printf(“thesumofoddis:%d”,sum);

}

16.从键盘上输入10个数,求其平均值。

main()

{

inta[10],i,s=0;

floatave;;

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

scanf(“%d”,&a[i]);

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

sum+=a[i];

ave=(float)sum/10;

printf(\"ave=%fn\",ave);

}

17、编程序实现求1-1000之间的所有奇数的和并输出。

#include

main()

{inti,sum=0;

for(i=1;i<1000;i=i+2)

sum=sum+i;

printf(“thesumofoddis:%d”,sum);

}

18.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13……

编程求这个序列的前20项之和。

main()

{

inti,t,n=20;

floata=2,b=1,s=0;

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

{s=s+a/b;

t=a;

a=a+b;

计算机程序设计基础(c语言)习题编程题

8

b=t;

}

printf(\"sum=%9.6f\",s);

}

19.用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。

main()

{floata[5],i;

floats=0;

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

scanf(“%f”,&a[i]);

for(i=0;i<5;I++)

s=s+a[i];

printf(“result=%f”,s/5);

}

*20、用循环的方法构造一个5行5列的二维数组,使主对角线上的变量为1,其它为0,并将

数组中所有项按行按列显示出来。

main()

{inta[5][5],i,j,s=0;

for(i=0;I<5;i++)

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

if(i==j)a[i][j]=1;

elsea[i][j]=0;

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

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

{if(j==0)printf(“n”);

printf(“%d”,a[i][j]);

}

}

21.求一个3×3矩阵对角线元素之和。从键盘输入矩阵元素的值并输出和的值.

main()

{inta[3][3],sum=0;

inti,j;

printf(\"Enterdata:n\");

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

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

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

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

sum=sum+a[i][i];

printf(\"sum=%d\",sum);

}

计算机程序设计基础(c语言)习题编程题

9

22.输入n的值,n代表行数,输出如图所示的图形。(6分)

*

***

*****

*******(此图为n=4时的输出结果)

#include

main()

{inti,j,k;

for(i=1;i<=4;i++)/*控制行数*/

{for(k=1;k<=(2*i-1);k++)/*控制每行输出的*号个数*/

{printf(\"*\");}

printf(\"n\");}}/*输出一行后换行*/

23、从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。

(提示:用数组存放成绩数据)

#include

#defineM30

main()

{floatscore[M],max,min,aver;

inti;

printf(“pleaseinputscore:n”);

for(i=0;i

scanf(“%f”,&score[i]);

max=score[0];

min=score[0];

aver=score[0];

for(i=1;i

{if(max

if(min>score[i])min=score[i];

aver+=score[i];

}

printf(“max=%f,min=%f,aver=%f”,max,min,aver/M);

}

24.从键盘输入某班学生某门课的成绩及其学号(班级人数最多40人,具体人数由键盘输入),

输出该班最高分和最低分及其学生学号;并输出该班该课程的总分和平均分。请编写程序。

#include

#defineARR_SIZE40

main()

{floatscore[ARR_SIZE],maxScore,minScore,sum;

计算机程序设计基础(c语言)习题编程题

10

intn,i;

longmaxNum,minNum,num[ARR_SIZE];

printf(\"Pleaseentertotalnumber:\");

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

printf(\"Pleaseenterthenumberandscore:n\");

for(i=0;i

scanf(\"%ld%f\",&num[i],&score[i]);

maxScore=score[0];minScore=score[0];

maxNum=num[0];minNum=num[0];

sum=score[0];

for(i=1;i

{if(score[i]>maxScore)

{maxScore=score[i];

maxNum=num[i];

}

elseif(score[i]

{minScore=score[i];

minNum=num[i];

}

sum=sum+score[i];

}

printf(\"maxScore=%.0f,maxNum=%ldn\",maxScore,maxNum);

printf(\"minScore=%.0f,minNum=%ldn\",minScore,minNum);

printf(\"sum=%.1f,average=%.1fn\",sum,sum/n);

}

*25.将一个有5个元素的数组中的值(整数)按逆序重新存放。

例:原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8

defineN5

main()

{inta[N],I,temp;

printf(“enterarraya:n”);

for(I=0;I

scanf(“%d”,$a[i]);

for(I=0;I

计算机程序设计基础(c语言)习题编程题

11

{temp=a[i];

a[i]=a[N-I-1];

a[N-I-1]=temp;

}

printf(“nNow,arraya:n”);

for(I=0;I

printf(“%4d”,a[i]);

printf(“n”);

}

*26.从键盘上输入一个2*3的矩阵,将其转置后形成3*2的矩阵输出。

main()

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

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

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

scanf(“%d”,&a[i][j]);

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

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

b[i][j]=a[j][i];

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

{for(j=0;j<2;j++)

printf(\"%5d\",b[i][j]);

printf(\"n”);

}

}

*27.编写两个函数分别求两个整数的最小公倍数和最大公约数,用主函数调用这两个函数并输

出结果。两个整数由键盘输入。

#include\"stdio.h\"

mingb(x,y)

intx,y;

{intz,i,t;

z=1;

i=1;

if(x>y)

{t=x;x=y;y=t;}

while(z<=x*y)

{

z=i*y;

if((z%x==0)&&(z%y==0))break;

i++;

计算机程序设计基础(c语言)习题编程题

12

}

return(z);

}

maxgy(x,y)

intx,y;

{intz,t;

if(x>y)

{t=x;x=y;y=t;}

z=x;

while(z>1)

{if((x%z==0)&&(y%z==0))break;

z--;

}

return(z);

}

main()

{

inta,b,c;

charch;

printf(\"nmingb(1)/maxgy(2)?\");

ch=getchar();

printf(\"ninput:\");

scanf(\"%d,%d\",&a,&b);

if(ch==\'1\')c=mingb(a,b);

elseif(ch=\'2\')c=maxgy(a,b);

printf(\"theresultis%d\",c);

getch();

}

*28.输入一个3*3矩阵,求出其转置矩阵,并求出两个矩阵的和.

main()

{

inta[3][3];

intb[3][3];

intc[3][3]

inti,j;

printf(“pleaseinput6numbers!”)

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

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

{

scanf(“%d”,&a[i][j]);

计算机程序设计基础(c语言)习题编程题

13

b[j][i]=a[i][j];

}

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

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

{

c[i][j]=a[i][j]+b[i][j];

}

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

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

{

printf(“%d”,a[i][j]);

}

}

29、从键盘输入10名学生的成绩数据,按成绩从高到低的顺序排列并输出。(提示:用数组存

放成绩数据)

main()

{inta[10];

inti,j,temp;

printf(\"inputscore:n\");

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

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

printf(\"n\");

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

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

if(a[j]

{temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

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

printf(\"%d,\",a[i]);

}

30.定义一个5行3列的数组,从键盘输入各数组元素的值,计算各数组元素之和。

#include

main()

{inti,j,a[5][3];

printf(“Enterdata:n”);

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

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

scanf(“%d”,&a[i][j]);

计算机程序设计基础(c语言)习题编程题

14

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

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

sum=sum+a[i][j];

printf(“sum=%5dn”,sum);

}

31、编写程序,交换两个数组中的对应元素。

#include

#defineN20

main()

{inta[N],b[N],i,j,temp;

printf(“pleaseinputa:n”);

for(i=0;i

scanf(“%d”,&a[i]);

printf(“pleaseinputb:n”);

for(j=0;j

scanf(“%d”,&b[i]);

for(i=0;i

{temp=a[i];

a[i]=b[i];

b[i]=temp;

}

for(j=0;j

printf(“%d,”,a[j]);

printf(“n”);

for(j=0;j

printf(“%d,”,b[j]);

}

*32、从键盘上输入一个4*3的整型数组,找出数组中的最小值及其在数组中的下标。

#include

main()

{inta[4][3],i,j,min,m,n;

printf(\"Pleaseenterdata:\");

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

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

scanf(“%d”,&a[i][j]);

min=a[0][0];

m=0;n=0;

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

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

if(a[i][j]

计算机程序设计基础(c语言)习题编程题

15

{min=a[i][j];

m=i;

n=j;

}

printf(\"theminis%dn,min);

printf(\"posionis%d%dn,m,n);

}

33.编程实现如下功能:从键盘输入一行字符,统计其中大写英文字符,小写英文字符和其他

字符的个数。

#include

#include

#defineARR_SIZE80

main()

{

charstr[ARR_SIZE];

intlen,i,letter=0,digit=0,space=0,others=0;

printf(\"Pleaseinputastring:\");

gets(str);

len=strlen(str);

for(i=0;i

{if(str[i]>=\'a\'&&str[i]=\'A\'&&str[i]<=\'Z\')

letter++;/*统计英文字符*/

elseif(str[i]>=\'0\'&&str[i]<=\'9\')

digit++;/*统计数字字符*/

else

others++;/*统计其它字符的个数*/

}

printf(\"Englishcharacter:%dn\",letter);

printf(\"digitcharacter:%dn\",digit);

printf(\"othercharacter:%dn\",others);

}

*34.编程实现如下功能:

1)在主函数中,实现从键盘输入10名学生某门课的成绩,保存在一维数组中;调用排序函

数;对排序后的数组中的元素按从高到低打印输出。

2)编写排序函数,使用数组名做函数参数,实现对该成绩的排序。

#include

#defineARR_SIZE40

voidSort(floatscore[],longnum[],intn);

计算机程序设计基础(c语言)习题编程题

16

main()

{floatscore[ARR_SIZE];

intn,i;

longnum[ARR_SIZE];

printf(\"Pleaseentertotalnumber:\");

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

printf(\"Pleaseenterthenumberandscore:n\");

for(i=0;i

{

scanf(\"%ld%f\",&num[i],&score[i]);

}

Sort(score,num,n);

printf(\"Sortedresults:n\");

for(i=0;i

{printf(\"%ldt%4.0fn\",num[i],score[i]);

}

}

voidSort(floatscore[],longnum[],intn)

{inti,j;

floattemp1;

longtemp2;

for(i=0;i

{for(j=i+1;j

{if(score[j]>score[i])

{temp1=score[j];

score[j]=score[i];

score[i]=temp1;

/*交换学号*/

temp2=num[j];

num[j]=num[i];

num[i]=temp2;

}

}

}

}

*35.编程实现如下功能:

实现从键盘输入两个字符串,分别存入两个不同的字符数组中;将两个字符串连接为一个

字符串,并打印输出连接后的整个字符。

#include

#include

计算机程序设计基础(c语言)习题编程题

17

#defineARR_SIZE80

voidMyStrcat(chardstStr[],charsrcStr[]);

main()

{chars[ARR_SIZE],t[ARR_SIZE];

printf(\"Pleaseentersourcestring:\");

gets(s);

printf(\"Pleaseenterdestinationstring:\");

gets(t);

MyStrcat(s,t);

printf(\"Theconcatenatestringis:\");

puts(s);

}

voidMyStrcat(chardstStr[],charsrcStr[])

{inti=0,j;

while(dstStr[i]!=\'0\'){

i++;

}

for(j=0;srcStr[j]!=\'0\';j++,i++)

{

dstStr[i]=srcStr[j];

}

dstStr[i]=\'0\';

}

*36、猜数游戏。系统随机产生一个整数,通过键盘输入数据猜数,猜对为止,并要求统计猜的

次数。

注:rand()函数可以产生0~32767间的正整数,程序中需包含stdlib.h。

#include

#include

main()

{

intmagic;

intguess;

intcounter;

magic=rand()%100+1;

counter=0;

do{

printf(\"Pleaseguessamagicnumber:\");

scanf(\"%d\",&guess);

counter++;

计算机程序设计基础(c语言)习题编程题

18

if(guess>magic)

printf(\"Wrong!Toohigh!n\");

elseif(guess

printf(\"Wrong!Toolow!n\");

}while(guess!=magic);

printf(\"Right!n\");

printf(\"counter=%dn\",counter);

}

37.输入两个整数,利用指针变量作为函数参数,编程实现两数互换功能,并将交换后的数据

重新输出。

#include

voidSwap(int*x,int*y);

main()

{inta,b;

printf(\"Pleaseentera,b:\");

scanf(\"%d,%d\",&a,&b);

printf(\"Beforeswap:a=%d,b=%dn\",a,b);

Swap(&a,&b);

printf(\"Afterswap:a=%d,b=%dn\",a,b);

}

voidSwap(int*x,int*y)

{

inttemp;

temp=*x;

*x=*y;

*y=temp;}

38.随机输入若干个学生的体重,以输入负数或零结束,分别求最重和最轻的体重,并计算平

均体重。

#include

main()

{intn=0;

floatweight,max=0,min=10,sum=0,ave;

printf(“pleaseinputtheweight:”);

scanf(“%f”,&weight);

while(weight>0)

{sum=weight+sum;

n++;

if(weight

min=weight;

计算机程序设计基础(c语言)习题编程题

19

elseif(weight>max)

max=weight;

scanf(“%f”,&weight);}

if(n>0)

{ave=sum/n;

printf(\"maxweight=%fn\",max);

printf(\"minweight=%fn\",min);

printf(\"ave=%fn\",ave);

elseprintf(\"NOVALIDDATA”);

}

39.输入m,k的值,编程求下面表达式的值:(要求编写一个求阶乘的函数,调用函数实现本

题)

)!(

!

km

k

p

#include

unsignedlongFactorial(unsignedintnumber);

main()

{unsignedintm,k;

doublep;

printf(\"Pleaseinputm,k:\");

scanf(\"%u,%u\",&m,&k);

p=(double)Factorial(k)/Factorial(m-k);

printf(\"p=%fn\",p);

}

unsignedlongFactorial(unsignedintnumber)

{unsignedlongi,result=1;

for(i=2;i<=number;i++)

result*=i;

returnresult;

}

*40.编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输

出是否为素数。

#include

intIsPrimeNumber(intnumber)

{inti;

if(number<=1)

return0;

for(i=2;i

计算机程序设计基础(c语言)习题编程题

20

{if((number%i)==0)

return0;}

return1;}

main()

{intn;

printf(“Pleaseinputn:”);

scanf(“%d”,&n);

if(IsPrimeNumber(n))

printf(“n%disaPrimeNumber”,n);

elseprintf(“n%disnotaPrimeNumber”,n);}

👁️ 阅读量:0