东北大学C语言题库及答案二.docx

上传人:b****5 文档编号:29174857 上传时间:2023-07-21 格式:DOCX 页数:28 大小:46.40KB
下载 相关 举报
东北大学C语言题库及答案二.docx_第1页
第1页 / 共28页
东北大学C语言题库及答案二.docx_第2页
第2页 / 共28页
东北大学C语言题库及答案二.docx_第3页
第3页 / 共28页
东北大学C语言题库及答案二.docx_第4页
第4页 / 共28页
东北大学C语言题库及答案二.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

东北大学C语言题库及答案二.docx

《东北大学C语言题库及答案二.docx》由会员分享,可在线阅读,更多相关《东北大学C语言题库及答案二.docx(28页珍藏版)》请在冰豆网上搜索。

东北大学C语言题库及答案二.docx

东北大学C语言题库及答案二

1、从键盘输入一个数据(1~12),表示2014年的某个月份,输出该月份对应的天数。

#include

main()

{

intmonth,day;

printf("请输入月份:

\n");

scanf("%d",&month);

switch(month)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

day=31;break;

case4:

case6:

case9:

case11:

day=30;break;

case2:

day=28;break;

default:

day=0;

}

if(day==0)

printf("月份输入错误\n");

else

printf("2014年%d月份天数=%d\n",month,day);

}

 

4、从键盘输入一个四位整数,计算其上下边界,例如2345,其下边界为2000,上边界为3000,依此类推

#include

main()

{

inta,min,max;

printf("请输入一个四位整数:

\n");

scanf("%d",&a);

min=(a/1000)*1000;

max=((a/1000)+1)*1000;

printf("上边界为:

%d,下边界为:

%d\n",max,min);

}

6、从键盘输入一个字母表示的成绩,将其转换为分数。

规则是'A'对应95、'B'对应85、'C'对应75、'D'对应65、'E'对应55。

要求输入字母后,输出对应的成绩

#include

main()

{

chargrade;

intscore;

printf("请输入一个字母:

\n");

scanf("%c",&grade);

switch(grade)

{

case'A':

score=95;break;

case'B':

score=85;break;

case'C':

score=75;break;

case'D':

score=65;break;

case'E':

score=55;break;

default:

score=0;

}

if(score==0)

printf("输入字母有误\n");

else

printf("对应成绩为:

%d\n",score);

}

 

7、从键盘输入一个百分制分数,将其转换为等级'A'、'B'、'C'、'D'、'E'后输出成绩。

转换规则为:

90分以上为'A';80~89分为'B';70~79分为'C';60~69分为'D';60分以下为'E'

#include

main()

{

intscore;

chargrade;

printf("请输入学生成绩:

\n");

scanf("%d",&score);

if(score>=90)

grade='A';

elseif(score>=80)

grade='B';

elseif(score>=70)

grade='C';

elseif(grade>=60)

grade='D';

elsegrade='F';

printf("Thegradeis%c\n",grade);

}

 

8、从键盘输入任意一个字母,如果其为大写字母,则转为小写字母;如果其为小写字母,请转换为大写字母;其他情况保持不变,计算并输出。

#include

main()

{

charch;

printf("请输入一个字母\n");

scanf("%c",&ch);

if(ch>='A'&&ch<='Z')

{

ch=ch+32;

printf("%c\n",ch);

}

elseif(ch>='a'&&ch<='z')

{

ch=ch-32;

printf("%c\n",ch);

}

else

printf("%c\n",ch);

}

 

9、从键盘输入任意一个字母或者是数字,如果其为字母,则输出“Aletter”;如果其为数字,则输出“Anumber”。

#include

main()

{

charch;

printf("请输入数字或字母:

\n");

scanf("%c",&ch);

if(ch>='0'&&ch<='9')

printf("Anumber\n");

if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')

printf("Aletter\n");

}

10、从键盘输入任意一个字母,如果其为大写字母,则输出“capitalletter”;如果其为小写字母,则输出“lowercaseletter”;其他情况,则输出“othercase”。

#include

main()

{

charch;

printf("请输入一个字母:

\n");

scanf("%c",&ch);

if(ch>='A'&&ch<='Z')

printf("capitalletter\n");

elseif(ch>='a'&&ch<='z')

printf("lowercaseletter\n");

else

printf("othercase\n");

}

 

11、15、初始化一个5X5的二维矩阵,计算主对角线上的元素之和,次对角线元素之积。

要求输出此矩阵,并输出主对角线之和,次对角线元素之积。

提示a[0][0],a[1][1]之类的元素为主对角线元素,a[0][4],a[1][3]之类的元素为次对角线元素。

#include

main()

{

inta[5][5]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5},i,j,sum=0,pro=1;

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

{

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

{

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

}

printf("\n");

}

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

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

printf("主对角线元素之和=%d\n",sum);

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

pro=pro*a[i][4-i];

printf("次对角线元素之积=%d\n",pro);

}

 

14、找出矩阵(5×5)的最大值和最小值,然后把最大值加99,把最小值减99。

要求初始化一个原始矩阵,输出原始矩阵以及转换后的矩阵。

#include

main()

{

inta[5][5]={1,2,3,4,5,6,7,8,9,0,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};

inti,j,max=a[0][0],min=a[0][0],m=0,n=0,p=0,q=0;

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

{

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

{

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

}

printf("\n");

}

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

{

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

{

if(max

{

max=a[i][j];

m=i,n=j;

}

if(min>a[i][j])

{

min=a[i][j];

p=i,q=j;

}

}

}

a[m][n]=a[m][n]+99;

a[p][q]=a[p][q]-99;

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

{

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

{

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

}

printf("\n");

}

}

 

16、初始化一矩阵a[5][5],计算每行的最大元素之和,要求输出原始矩阵以及每行的最大元素值之和

#include

main()

{

inta[5][5]={1,2,3,4,10,6,7,8,9,0,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};

inti,j,max,sum=0;

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

{

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

{

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

}

printf("\n");

}

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

{

max=a[i][0];

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

{

if(max<=a[i][j])

max=a[i][j];

}

printf("第%d行最大元素为:

%d\n",i+1,max);

sum=sum+max;

}

printf("每行最大元素之和为%d\n",sum);

}

12、利用公式π/4≈1-1/3+1/5-1/7+1/9-…计算π的近似值,当最后一项的绝对值小于0.000001为止。

#include

main()

{

intt=1;

floati,sum=0.0,s;

i=1.0;

while(1.0/i>=0.000001)

{

sum=sum+(1.0/i)*t;

i=i+2;

t=t*(-1);

}

s=4*sum;

printf("π的值=%.6f\n",s);

}

 

13、计算并输出多项式1-1/3+1/5-1/7+…+1/99-1/101的结果值。

#include

main()

{

intt=1;

floati,sum=0.0;

i=1.0;

while(i<=101)

{

sum=sum+(1.0/i)*t;

i=i+2;

t=t*(-1);

}

printf("%.6f\n",sum);

}

 

17、计算分数序列:

2/1,-3/2,5/3,-8/5,13/8,-21/13,…,的前20项之和并输出。

#include

main()

{

inti,t=1;

floatn,a=1.0,b=1.0,sum=0.0;

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

{

n=a+b;

sum=sum+t*n/b;

t=t*(-1);

a=b;

b=n;

}

printf("前二十项和为:

%f\n",sum);

}

 

18、计算1/1+1/(1+2)+1/(1+2+3)+…+1/(1+2+…n)的值,n的值由键盘输入,要求小数点后保留6位。

#include

main()

{

intn,i;

floats=0.0,sum=0.0;

printf("请输入n值:

\n");

scanf("%d",&n);

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

{

sum=sum+i;

s=s+1.0/sum;

}

printf("值为:

%.6f\n",s);

}

19、计算1-1/2+1/3-1/4+…+1/n的和,在主函数输入n,计算输出结果。

#include

main()

{

intn,i,t=1;

floats=0.0;

printf("请输入n值:

\n");

scanf("%d",&n);

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

{

s=s+t*1.0/i;

t=t*(-1);

}

printf("值为:

%.6f\n",s);

}

 

21、已知一有序序列1,3,4,8,15,17,要求从键盘输入一个整数,将此整数插入到此有序序列中。

要求输出原始数组和插入之后的数组。

要求编制函数insert(int*p,intd)实现此功能,在主函数调用此函数。

提示:

例如输入整数位7,首先要找到7在整个序列中的位置,然后将7插入到当前位置。

#include

voidinsert(int*p,intd)

{

inti=0,temp,len=7;

while(p[i]

i++;

if(i==6)

p[i]=d;

for(;i

{

temp=p[i];

p[i]=d;

d=temp;

}

}

intmain(void)

{

intnum[7]={1,3,4,8,15,17};

int*p=num;

intdata,i;

printf("输入一个整数:

");

scanf("%d",&data);

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

printf("%2d",num[i]);

printf("\n");

insert(p,data);

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

printf("%2d",num[i]);

printf("\n");

return0;

}

 

22、编写函数mstrcat(char*t,char*s)将字符串s1中的全部英文字符连接到字符串s2的尾部。

#include"stdio.h"

voidmstrcat(char*t,char*s)

{

inti,j;

i=0;

while(t[i]!

='\0')

i++;

j=0;

while(s[j]!

='\0')

{

if((s[j]>='A'&&s[j]<='Z')||(s[j]>='a'&&s[j]<='z'))

{

t[i]=s[j];

i++;

j++;

}

else

j++;

}

t[i]='\0';

}

main()

{

while

(1)

{

chars1[100],s2[100];

printf("请输入字符串s1,长度小于10:

\n");

gets(s1);

printf("请输入字符串s2,长度小于10:

\n");

gets(s2);

mstrcat(s1,s2);

printf("%s\n",s1);

printf("########################################################\n");

}

}

#include

voidmstrcat(char*t,char*s)

{

inti=0,j=0;

while(s[i])i++;//先找到第二个串的结尾

while(t[j])

{

if((t[j]>='a'&&t[j]<='z')||(t[j]>='A'&&t[j]<='Z'))

{

s[i++]=t[j];

}

j++;

}//把第一个串里的英文接到第二个串

s[i]='\0';//给第二个串加结束标记

}

intmain()

{

chars1[100],s2[100];

scanf("%s%s",s1,s2);//读入

mstrcat(s1,s2);

puts(s2);//输出

return0;

}

 

23、从键盘读入一字符c,判断其在字符串"English"中是否存在,假设此数组中不存在重复的字符。

若存在,则删除此数据;否则,提示此数据不存在。

要求:

编制函数del(char*p,charc)实现数据的清理工作,并输出原始字符串和删除后的字符串。

#include

#defineN6

#defineremoveremovee

voidremove(double*p,doubled)

{

inti,j;

for(i=0;i

if(p[i]==d)break;

if(i>=N)printf("%5.0f不在数组中",d);

else

for(j=i;j

p[j]=p[j+1];

}

main()

{

doublea[N]={3,23,-7,8,9,10};

doublenum;

inti;

printf("删除前数组:

\n");

for(i=0;i

printf("%5.0f",a[i]);

printf("\n");

printf("请输入要删除的数:

");

scanf("%lf",&num);

printf("");

remove(a,num);

printf("删除后数组:

\n");

for(i=0;i

printf("%5.0f",a[i]);

printf("\n");

}

#include

voidstrdel(char*p,charc)

{

inti,j;

intflag=1;

for(i=0;*(p+i)!

='\0';i++)

{

if(*(p+i)==c)

{

flag=0;

j=i;

for(i=j;*(p+i)!

='\0';i++)

{

*(p+i)=*(p+i+1);

}

}

}

if(flag==0)

puts(p);

elseif(flag==1)

printf("NO");

}

intmain()

{

charstr[]="English",c;

char*p;

intflag=1;

p=str;

puts(str);

scanf("%c",&c);

strdel(str,c);

}

 

24、编写函数fun(char*p)判断一个字符串是否是回文字符串(提示:

回文字符串是指正读和反读都一样的字符串),要求:

从键盘上读入一个字符串,字符长度可以自己定义。

如果是回文字符串,输出该串,否则输出no。

(本题不允许使用字符串处理库函数)

#include

voidfun(char*p)

{

inti,m=0;

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

{

if(p[i]==p[11-i])

m++;}

if(m==12)

puts(p);

else

printf("NO");

}

intmain()

{

intm;

char*p;

chars[12];

p=s;

scanf("%s",s);

fun(p);

return0;

}

#include

voidstrfun(char*str)

{

inti,j=0;

intflag=1;

for(i=0;*(str+i)!

='\0';i++)

{

j++;

if(*(str+i)==*(str+j-i-1))

{

flag=0;

}

else

{

flag=1;

}

}

if(flag==0)

printf("Y");

if(flag==1)

printf("N");

}

intmain()

{

charstr[100];

gets(str);

strfun(str);

}

25、在物理实验中,获得5个数据{0.89,0.78,1.09,0.67,0.56},其中有一个数据大于1,此数据无效,将此无效数据删除。

要求编制函数cleandata(double*p)实现数据的清理工作,并在主函数输出删除之前的数组和删除之后的数组。

#include

voidcleandata(double*p)

{

inti,j;

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

{

if(p[i]<1.0000)

{

p[j]=p[i];

j++;

}

}

}

voidmain()

{

inti;

doublea[]={0.89,0.78,1.09,0.67,0.56};

printf("原数组为:

\n");

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

{

printf("%10.4f",a[i]);

}

printf("\n");

cleandata(a);

printf("删除后数组为:

\n");

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

{

printf("%10.4f",a[i]);

}

printf("\n");

}

26、编写函数clear(char*p)将字符串s1中的非英文字母删除,要求:

在主函数中对字符串进行初始化,调用函数实现链接后,在主函数中输出删除前和删除后的字符串。

#include"stdio.h"

voidclear(char*p)

{

inti,j;

for(j=i=0;p[i];i++)

if(p[i]>='a'&&p[i]<='z'||p[i]>='A'&&p[i]<='Z')

p[j++]=p[i];

p[j]='\0';

}

voidmain()

{

charstr[100]="jfkDsla83F890lnjKfZ./jdi/.,z$5jfkd$#^%jfkMdl;jkds;";

printf("%s\n",str);

clear(str);

printf("\n%s\n\n",str);

}

27、编写函数clear(char*p)将字符串s1中的阿拉伯数字字符删除,要求:

在主函数中对字符串进行初始化,调用函数实现链接后,在主函数中输出删除前和删除后的字符串。

#include"stdio.h"

char*clear(char*p)

{

inti,j;

for(j=i=0;p[i];i++)

if(p[i]<'0'||p[i]>'9')

p[j++]=p[i];

p[j]='\0';

returnp;

}

intmain(void)

{

charstr[100]="jfkDsla83F890lnjKfZ./jdi/.,z$5jfkd$#^%jfk

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

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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