东北大学c语言题库及答案Word格式文档下载.docx
《东北大学c语言题库及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《东北大学c语言题库及答案Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。

,a);
2
编写一个程序,对输入的一组整数,分别统计其中正整数和负整数的个数(0作为结束标志)。
intx=0,y=0,i;
请输入"
%d"
i);
while(i!
=0)
if(i>
0)x++;
elsey++;
正整数%d,负整数%d"
x,y);
3
统计100-500之间各个数字之和为9的三位数,输出这些三位数。
例如351的各个数字之和为9。
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"
4
编程求1-1000之间的所有完数(完数定义:
一个数恰好等于它的除自身外的所有因子之和)。
inta,b,c;
for(a=1;
=1000;
c=0;
for(b=1;
b<
a;
b++)
{
if(a%b==0)
c=c+b;
}
if(a==c)
5
已知银行整存整取存款不同期限的利率分别为:
3.30%期限半年;
3.50%期限一年;
4.40%期限二年;
5.00%期限三年;
5.50%期限五年;
到期利息税为5%。
要求输入存取的本金和期限,求到期能从银行得到的利息、本金及总和。
floata,b,c;
请输入存款年数"
a);
输入本金\n"
c);
if(a<
=0.5)b=0.033;
elseif(a>
=1&
&
2)b=0.035;
=2&
3)b=0.044;
=3&
5)b=0.05;
elseb=0.035;
利息为%f"
b*c*0.95);
总和%f"
c*(1+b*0.95));
6
输入三角形的三边长,判断这个三角形是否是直角三角形。
inta,b,c,temp;
输入三边"
);
%d%d%d"
a,&
b,&
if(a+b>
c&
a+c>
b&
b+c>
a)
temp=b;
b=a;
a=temp;
if(c>
temp=c;
c=a;
a=temp;
if(a*a==b*b+c*c)
直角三角形\n"
一般三角形\n"
不能组成三角形\n"
7
输入一串字符(以回车键结束),统计其中数字、大写字母、小写字母以及其他字符的个数。
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'
z'
b++;
0'
9'
c++;
d++;
p++;
大写字母%d\n,小写字母%d\n,数字个数%d\n,其它字符个数%d\n"
a,b,c,d);
8
编写程序:
找出不超过1000的十位数字为1,个位数字为3或7的所有数。
例如:
13、17、113、317等。
b=((a%1000)%100)/10;
c=a%10;
if((c==3||c==7)&
b==1)
9
某企业利润提成的规则如下:
1)利润低于或等于10万元的,可提成奖金%10;
2)利润高于10万元,低于20万元时,低于10万元的部分按%10提成,另外部分可以提成7.5%;
3)利润高于20万低于40万元的,其中20万元按前面的方法发放,另外的部分按5%提成;
4)利润高于40万元的,40万元按前面的方法提成,高于部分按3%提成。
从键盘输入利润,输出应发的提成。
floata;
输入利润"
if(a<
=100000)printf("
%.2f"
0.1*a);
elseif(a>
100000&
=200000)printf("
10000+(a-100000)*0.075);
200000&
=400000)printf("
10000+7500+(a-200000)*0.05);
else
10000+7500+1000+(a-400000)*0.03);
10
利用公式e=1/1!
+1/2!
+1/3!
+…+1/n!
计算e的值并输出(要求:
误差小于10-5)。
floate=1,d;
inta,b,c=1,n;
输入阶数"
n);
=n;
c=c*a;
e=e+1.0/c;
e);
11
从键盘输入一个字符串str,统计其中大写英文字母A,B,C,D出现的次数。
要求输出原始字符串,以及统计的结果。
charstr[10];
inti,a=0,b=0,c=0,d=0;
gets(str);
for(i=0;
str[i]!
=0;
i++)
if(str[i]=='
)a++;
elseif(str[i]=='
B'
)b++;
C'
)c++;
D'
)d++;
A=%dB=%dC=%dD=%d"
12
将字符串a中的每个字符用加3的方法加密并存入数组b中,再对b中的字符串解密存入数组c。
要求:
初始化字符串a,依次输出字符串a、b、c。
chara[100]={"
wangshenghao"
};
inti;
charb[100],c[100];
puts(a);
a[i]!
b[i]=a[i]+3;
b[i]=0;
puts(b);
b[i]!
c[i]=b[i]-3;
c[i]=0;
puts(c);
13
输入两个字符串str1和str2,计算并输出str2在str1中出现的位置(提示:
从位置0开始计算,例如输入str1为”howareyou”,str2为”are”,则位置结果为3),要求初始化字符串str1和str2,输出原始字符串str1和str2,以及位置结果值。
intmain()
chars1[100],s2[100];
inti,j,ans=-1;
//ans=-1意味着没有完成匹配
%s"
s1);
s2);
s1[i]!
\0'
;
ans=i;
//假设这次比较可以完成匹配
for(j=0;
s2[j]!
j++)
if(s1[i+j]=='
||s1[i+j]!
=s2[j])
ans=-1;
break;
if(ans!
=-1)
%s\n"
ans);
return0;
14
从键盘输入一个字符串str和一个字符ch,删除字符串str中和输入字符ch相同的所有字符,输出原始字符串str以及删除字符ch后的字符串str。
charch,str[100];
输入字符串"
输入字符"
%c"
ch);
{
if(str[i]==ch)
for(;
{
str[i]=str[i+1];
}
i=0;
str[i]=0;
puts(str);
15
从具有10个元素的一维整型数组中查找最小值的元素,然后与数组的第一个元素对调。
初始化一维数组,输出该数组以及对调元素的数组。
intstr[10]={1,2,3,4,5,6,7,8,9,0};
inti,j,min,k;
min=str[0];
i<
10;
%d"
str[i]);
\n"
if(str[i]<
min)
min=str[i];
j=i;
k=str[0];
str[0]=min;
str[j]=k;
16
在一个具有10元素的整型数组a中,删除数组元素值为奇数的所有数组元素。
初始化数组a,输出原始数组以及删除数据的数组。
inta[10],b[10],i=0,j=0;
scanf("
a[i]);
a[i]);
for(i=0;
if(a[i]%2==0)
b[j]=a[i];
j++;
=j;
b[i]);
17
将10个整数存入数组,删除数组中指定的第n个元素。
(要求:
数组初始化定义)
intstr[10],i,n;
\n请输入10个数字:
"
str[i]);
\n请输入要删除的数字:
for(i=n;
str[i-1]=str[i];
str[10]=0;
9;
18
初始化一个4x5的矩阵,求其中最大元素和最小元素所在的行号,对调最大最小元素,输出行号、列号、对调后的矩阵。
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];
4;
j<
5;
if(str[i][j]>
max)
max=str[i][j];
a=i;
b=j;
if(str[i][j]<
min=str[i][j];
c=i;
d=j;
temp=max;
str[a][b]=min;
str[c][d]=max;
最大元素行号列号%d%d\n"
a+1,b+1);
最小元素行号列号%d%d\n"
c+1,d+1);
printf("
str[i][j]);
19
编写函数intfun(intn),判定n是否为十位数字为1,个位数字为3或7的数。
若是,函数返回1,否则返回0。
(提示:
13、17、113、317都是这样的数。
在主函数中调用fun函数,并在主函数中输出1000之间的所有十位数字为1,个位数字为3或7的数。
intfun(intn)
inta,b;
a=(n%100)/10;
b=n%10;
if((b==3||b==7)&
a==1)
return1;
inti,j;
j=fun(i);
if(j==1)
{
%d\n"
i);
20
初始化数组为10个学生的某门课成绩,求出其中最高成绩、最低成绩及平均值,统计成绩低于60分的人数、高于平均值的人数和低于平均值的人数。
输出原始成绩、最高成绩、最低成绩、平均成绩、低于60分的人数、高于平均值的人数、低于平均值的人数。
inta[10]={30,40,50,60,70,80,85,90,95,100};
inti,max,min;
floataverage,sum=0;
max=a[0];
min=a[0];
sum=sum+a[i];
if(a[i]<
min=a[i];
if(a[i]>
max=a[i];
average=sum/10;
max=%d,min=%d,average=%.2f"
max,min,average);
低于60分"
60)
高于平均分"
average)
21
已知矩阵a[4][4],交换矩阵中最大元素所在的列与次大元素所在的列。
(1)编写函数voidchange(inta[4][4])交换最大元素所在的列与次大元素所在的列;
(2)在主函数中初始化原始矩阵,输出原始矩阵以及交换发生后的矩阵。
初始化矩阵为:
交换后矩阵为:
14581548
3267
voidchange(inta[4][4])
inti,j,m,n;
intmax1,max2,temp;
max1=a[0][0];
max2=a[0][0];
for(j=0;
if(max1<
a[i][j])
max1=a[i][j];
m=j;
if(max2<
a[i][j]&
a[i][j]<
max1)
max2=a[i][j];
n=j;
temp=a[i][m];
a[i][m]=a[i][n];
a[i][n]=temp;
intstr[4][4]={{1,3,5,6},{2,5,8,4},{3,5,9,7},{2,3,7,4}};
change(str);
22
编写函数voidfun(charstr[30],chara),删除字符串str中所有a代表的字符,被删除后的字符依次向前移动。
在主函数中初始化字符数组,并输入字符a,输出原字符数组及删除结果。
初始化字符数组str[30]=”ThisisatestofClanguage.”,输入字符a=‘t’,则删除之后的结果为”ThisisaesofClanguage.”。
voidfun(charstr[30],chara)
if(str[i]==a)
str[i]=str[i+1];
charstr[30]={"
ThisisatestofClanguage."
chara='
t'
fun(str,a);
23
编写函数intStrCount(char*str1,char*str2)。
Str1和str2为两个输入的字符串。
函数统计str2在str1中出现的次数,返回该数值。
在主函数main中初始化str1和str2,调用函数StrCount(str1,str2)后输出结果。
如输入str1为"
howareyouareGGGare"
,str2为"
are"
,那么调用函数StrCount后函数返回3。
string.h>
intstrcount(char*str1,char*str2)
inti,j,count=0;
str1[i]!
str2[j]!
if(str1[i]==str2[j])
count=count+1;
returncount;