东北大学c语言题库及答案.docx
- 文档编号:4292430
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:38
- 大小:21.81KB
东北大学c语言题库及答案.docx
《东北大学c语言题库及答案.docx》由会员分享,可在线阅读,更多相关《东北大学c语言题库及答案.docx(38页珍藏版)》请在冰豆网上搜索。
东北大学c语言题库及答案
题号
题目
第几题
0
编写一个售货机(POS)计算程序,用于水果店售货员算账。
苹果每千克3.2元,梨每千克1.96元,香蕉每千克3元,樱桃每千克24元。
某顾客购买1.5斤苹果,2斤梨,3斤香蕉,1.5斤樱桃,付给售货员100元。
要求规范输出这位顾客购买各类水果的名称,对应的重量和应付价钱,显示顾客所付款项,输出应找回的款项。
#include
main()
{
floata=3.2,b=1.96,c=3.0,d=24.0;
floate,h,i,j,sum,x;
printf("分别输入苹果梨子香蕉樱桃的斤数");
scanf("%f%f%f%f",&e,&h,&i,&j);
sum=a*e+b*h+c*i+d*j;
printf("应付金额%.2f",sum);
printf("顾客支付\n");
scanf("%f",&x);
printf("找额%.2f",x-sum);
}
1
1
四舍五入
#include
main()
{
floata=12.36567;
intb;
b=(int)(a*1000)%10;
if(b>=5)
{
a=(int)((a+0.01)*100)/100.0;
}
else
{
a=(int)(a*100)/100.0;
}
printf("a=%.2f",a);
}
1
2
编写一个程序,对输入的一组整数,分别统计其中正整数和负整数的个数(0作为结束标志)。
#include
main()
{
intx=0,y=0,i;
printf("请输入");
scanf("%d",&i);
while(i!
=0)
{
if(i>0)x++;
elsey++;
scanf("%d",&i);
}
printf("正整数%d,负整数%d",x,y);
}
1
3
统计100-500之间各个数字之和为9的三位数,输出这些三位数。
例如351的各个数字之和为9。
#include
main()
{
inta,b,c,d;
for(a=100;a<500;a++)
{
b=a/100;
c=(a%100)/10;
d=a%10;
if(b+c+d==9)
printf("%d\n",a);
}
}
1
4
编程求1-1000之间的所有完数(完数定义:
一个数恰好等于它的除自身外的所有因子之和)。
#include
main()
{
inta,b,c;
for(a=1;a<=1000;a++)
{
c=0;
for(b=1;b { if(a%b==0) c=c+b; } if(a==c) printf("%d\n",a); } } 1 5 已知银行整存整取存款不同期限的利率分别为: 3.30%期限半年;3.50%期限一年;4.40%期限二年;5.00%期限三年;5.50%期限五年;到期利息税为5%。 要求输入存取的本金和期限,求到期能从银行得到的利息、本金及总和。 #include main() { floata,b,c; printf("请输入存款年数"); scanf("%f",&a); printf("输入本金\n"); scanf("%f",&c); if(a<=0.5)b=0.033; elseif(a>=1&&a<2)b=0.035; elseif(a>=2&&a<3)b=0.044; elseif(a>=3&&a<5)b=0.05; elseb=0.035; printf("利息为%f",b*c*0.95); printf("总和%f",c*(1+b*0.95)); } 1 6 输入三角形的三边长,判断这个三角形是否是直角三角形。 #include main() { inta,b,c,temp; printf("输入三边"); scanf("%d%d%d",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { if(b>a) { temp=b; b=a; a=temp; } if(c>a) { temp=c; c=a; a=temp; } if(a*a==b*b+c*c) printf("直角三角形\n"); else printf("一般三角形\n"); } else printf("不能组成三角形\n"); } 1 7 输入一串字符(以回车键结束),统计其中数字、大写字母、小写字母以及其他字符的个数。 #include main() { charstr[200]; char*p; inta=0,b=0,c=0,d=0; p=str; gets(p); while(*p) { if(*p>='A'&&*p<='Z') { a++; } elseif(*p>='a'&&*p<='z') { b++; } elseif(*p>='0'&&*p<='9') { c++; } else { d++; } p++; } printf("大写字母%d\n,小写字母%d\n,数字个数%d\n,其它字符个数%d\n",a,b,c,d); } 1 8 编写程序: 找出不超过1000的十位数字为1,个位数字为3或7的所有数。 例如: 13、17、113、317等。 #include main() { inta,b,c; for(a=1;a<=1000;a++) { b=((a%1000)%100)/10; c=a%10; if((c==3||c==7)&&b==1) printf("%d\n",a); } } 1 9 某企业利润提成的规则如下: 1)利润低于或等于10万元的,可提成奖金%10;2)利润高于10万元,低于20万元时,低于10万元的部分按%10提成,另外部分可以提成7.5%;3)利润高于20万低于40万元的,其中20万元按前面的方法发放,另外的部分按5%提成;4)利润高于40万元的,40万元按前面的方法提成,高于部分按3%提成。 从键盘输入利润,输出应发的提成。 #include main() { floata; printf("输入利润"); scanf("%f",&a); if(a<=100000)printf("%.2f",0.1*a); elseif(a>100000&&a<=200000)printf("%.2f",10000+(a-100000)*0.075); elseif(a>200000&&a<=400000)printf("%.2f",10000+7500+(a-200000)*0.05); else printf("%.2f",10000+7500+1000+(a-400000)*0.03); } 1 10 利用公式e=1/1! +1/2! +1/3! +…+1/n! 计算e的值并输出(要求: 误差小于10-5)。 #include main() { floate=1,d; inta,b,c=1,n; printf("输入阶数"); scanf("%d",&n); for(a=1;a<=n;a++) { c=c*a; e=e+1.0/c; } printf("%f",e); } 1 11 从键盘输入一个字符串str,统计其中大写英文字母A,B,C,D出现的次数。 要求输出原始字符串,以及统计的结果。 #include main() { charstr[10]; inti,a=0,b=0,c=0,d=0; gets(str); for(i=0;str[i]! =0;i++) { if(str[i]=='A')a++; elseif(str[i]=='B')b++; elseif(str[i]=='C')c++; elseif(str[i]=='D')d++; } printf("A=%dB=%dC=%dD=%d",a,b,c,d); } 2 12 将字符串a中的每个字符用加3的方法加密并存入数组b中,再对b中的字符串解密存入数组c。 要求: 初始化字符串a,依次输出字符串a、b、c。 #include main() { chara[100]={"wangshenghao"}; inti; charb[100],c[100]; puts(a); for(i=0;a[i]! =0;i++) { b[i]=a[i]+3; } b[i]=0; puts(b); for(i=0;b[i]! =0;i++) { c[i]=b[i]-3; } c[i]=0; puts(c); } 2 13 输入两个字符串str1和str2,计算并输出str2在str1中出现的位置(提示: 从位置0开始计算,例如输入str1为”howareyou”,str2为”are”,则位置结果为3),要求初始化字符串str1和str2,输出原始字符串str1和str2,以及位置结果值。 #include intmain() { chars1[100],s2[100]; inti,j,ans=-1;//ans=-1意味着没有完成匹配 scanf("%s",s1); scanf("%s",s2); for(i=0;s1[i]! ='\0';i++) { ans=i;//假设这次比较可以完成匹配 for(j=0;s2[j]! ='\0';j++) { if(s1[i+j]=='\0'||s1[i+j]! =s2[j]) { ans=-1; break; } } if(ans! =-1) { break; } } printf("%s\n",s1); printf("%s\n",s2); printf("%d\n",ans); return0; } 2 14 从键盘输入一个字符串str和一个字符ch,删除字符串str中和输入字符ch相同的所有字符,输出原始字符串str以及删除字符ch后的字符串str。 #include main() { charch,str[100]; inti; printf("输入字符串"); gets(str); printf("输入字符"); scanf("%c",&ch); for(i=0;str[i]! =0;i++) { if(str[i]==ch) { for(;str[i]! =0;i++) { str[i]=str[i+1]; } i=0; } } str[i]=0; puts(str); } 2 15 从具有10个元素的一维整型数组中查找最小值的元素,然后与数组的第一个元素对调。 要求: 初始化一维数组,输出该数组以及对调元素的数组。 #include main() { intstr[10]={1,2,3,4,5,6,7,8,9,0}; inti,j,min,k; min=str[0]; for(i=0;i<10;i++) { printf("%d",str[i]); } printf("\n"); for(i=0;i<10;i++) { if(str[i] { min=str[i]; j=i; } } k=str[0]; str[0]=min; str[j]=k; for(i=0;i<10;i++) { printf("%d",str[i]); } } 2 16 在一个具有10元素的整型数组a中,删除数组元素值为奇数的所有数组元素。 要求: 初始化数组a,输出原始数组以及删除数据的数组。 #include main() { inta[10],b[10],i=0,j=0; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); for(i=0;i<10;i++) { if(a[i]%2==0) { b[j]=a[i]; j++; } } for(i=0;i<=j;i++) printf("%d",b[i]); printf("\n"); } 2 17 将10个整数存入数组,删除数组中指定的第n个元素。 (要求: 数组初始化定义) #include main() { intstr[10],i,n; printf("\n请输入10个数字: "); for(i=0;i<10;i++) scanf("%d",&str[i]); printf("\n请输入要删除的数字: "); scanf("%d",&n); for(i=n;i<10;i++) str[i-1]=str[i]; str[10]=0; for(i=0;i<9;i++) printf("%d",str[i]); } 2 18 初始化一个4x5的矩阵,求其中最大元素和最小元素所在的行号,对调最大最小元素,输出行号、列号、对调后的矩阵。 #include main() { intstr[4][5]={{2,1,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}}; inti,j,max,min,a,b,c,d,temp; max=str[0][0]; min=str[0][0]; for(i=0;i<4;i++) { for(j=0;j<5;j++) { if(str[i][j]>max) { max=str[i][j]; a=i; b=j; } } for(j=0;j<5;j++) { if(str[i][j] { min=str[i][j]; c=i; d=j; } } } temp=max; str[a][b]=min; str[c][d]=max; printf("最大元素行号列号%d%d\n",a+1,b+1); printf("最小元素行号列号%d%d\n",c+1,d+1); printf("\n"); for(i=0;i<4;i++) { for(j=0;j<5;j++) { printf("%d",str[i][j]); } printf("\n"); } } 2 19 编写函数intfun(intn),判定n是否为十位数字为1,个位数字为3或7的数。 若是,函数返回1,否则返回0。 (提示: 例如: 13、17、113、317都是这样的数。 ) 要求: 在主函数中调用fun函数,并在主函数中输出1000之间的所有十位数字为1,个位数字为3或7的数。 #include intfun(intn) { inta,b; a=(n%100)/10; b=n%10; if((b==3||b==7)&&a==1) { return1; } else return0; } main() { inti,j; for(i=0;i<=1000;i++) { j=fun(i); if(j==1) { printf("%d\n",i); } } } 2 20 初始化数组为10个学生的某门课成绩,求出其中最高成绩、最低成绩及平均值,统计成绩低于60分的人数、高于平均值的人数和低于平均值的人数。 要求: 输出原始成绩、最高成绩、最低成绩、平均成绩、低于60分的人数、高于平均值的人数、低于平均值的人数。 #include main() { inta[10]={30,40,50,60,70,80,85,90,95,100}; inti,max,min; floataverage,sum=0; max=a[0]; min=a[0]; for(i=0;i<10;i++) { sum=sum+a[i]; if(a[i] { min=a[i]; } if(a[i]>max) { max=a[i]; } } average=sum/10; for(i=0;i<10;i++) { printf("%d",a[i]); } printf("\n"); printf("max=%d,min=%d,average=%.2f",max,min,average); printf("\n"); printf("低于60分"); for(i=0;i<10;i++) { if(a[i]<60) { printf("%d",a[i]); } } printf("\n"); printf("高于平均分"); for(i=0;i<10;i++) { if(a[i]>average) { printf("%d",a[i]); } } } 2 21 已知矩阵a[4][4],交换矩阵中最大元素所在的列与次大元素所在的列。 要求: (1)编写函数voidchange(inta[4][4])交换最大元素所在的列与次大元素所在的列; (2)在主函数中初始化原始矩阵,输出原始矩阵以及交换发生后的矩阵。 例如: 初始化矩阵为: 交换后矩阵为: 14581548 3267 #include voidchange(inta[4][4]) { inti,j,m,n; intmax1,max2,temp; max1=a[0][0]; max2=a[0][0]; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(max1 { max1=a[i][j]; m=j; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东北大学 语言 题库 答案