C语言上机题库三.docx
《C语言上机题库三.docx》由会员分享,可在线阅读,更多相关《C语言上机题库三.docx(20页珍藏版)》请在冰豆网上搜索。
![C语言上机题库三.docx](https://file1.bdocx.com/fileroot1/2022-10/20/a20e911c-a9b5-490b-985e-842d5dda24e6/a20e911c-a9b5-490b-985e-842d5dda24e61.gif)
C语言上机题库三
软件学院/信息学院C语言上机试题
大家学习C语言是为了使用,不是为了考试,所以我希望你们能先自己动手做做,然后再参考一下答案。
我知道有些同学喜欢死记硬背,也许可以把这些题目的答案都背下来,但是那样做一点好处都没有。
大学里,别把分数看得那么重要。
找工作没人在乎你到底考了多少分。
能诚实的对待考试,正确的看待分数,真才实学才是最应该得到的。
大家可以到,一般我晚上开)
特别声明:
出题老师请您注意!
去年C语言笔试卷子时,有些题目是只有软件学院/信息学院的同学需要做的,但是卷头写的是“此题只有信息学院的同学做”,小心呀,今年别才出现这样的错误了!
别忘了软件学院!
!
!
第三部分-复杂的数组/字符串处理:
3-1.编程,任意输入10个整数,按从小到大的顺序输出。
————
main()
{
intnum[10],i,j,temp;
for(i=0;i<10;i++)scanf("%d",&num[i]);
for(i=0;i<10;i++)for(j=i+1;j<10;j++)
if(num[i]>num[j]){temp=num[j];num[j]=num[i];num[i]=temp;}
for(i=0;i<10;i++)printf("%4d",num[i]);
}
3-2.编程,任意输入10个人的成绩,按从大到小的顺序排列。
运行程序时,只要输入名次,计算机就能输出该名次对应的成绩。
————
main()
{
intnum[10],i,j,temp;
for(i=0;i<10;i++)scanf("%d",&num[i]);
for(i=0;i<10;i++)for(j=i+1;j<10;j++)
if(num[i]puts("MingCi:
");
scanf("%d",&j);
printf("%4d",num[j-1]);
}
3-3.编程,输入10个人的序号和成绩,对成绩从小到大排序,输出排序后的序号和成绩。
————
main()
{
intnum[2][10],i,j,temp;
for(i=0;i<10;i++)
{
printf("InputNum%d:
",i+1);
scanf("%d",&num[1][i]);
num[0][i]=i+1;
}
for(i=0;i<10;i++)for(j=i+1;j<10;j++)
if(num[1][i]>num[1][j])
{
temp=num[0][j];num[0][j]=num[0][i];num[0][i]=temp;
temp=num[1][j];num[1][j]=num[1][i];num[1][i]=temp;
}
for(i=0;i<10;i++)printf("\n%4d(No=%2d)",num[1][i],num[0][i]);
}
3-4.编程,输入10个人的序号和成绩,对成绩从从大到小进行排序,输出排序后的序号和成绩。
————
main()
{
intnum[2][10],i,j,temp;
for(i=0;i<10;i++)
{
printf("InputNum%d:
",i+1);
scanf("%d",&num[1][i]);
num[0][i]=i+1;
}
for(i=0;i<10;i++)for(j=i+1;j<10;j++)
if(num[1][i]{
temp=num[0][j];num[0][j]=num[0][i];num[0][i]=temp;
temp=num[1][j];num[1][j]=num[1][i];num[1][i]=temp;
}
for(i=0;i<10;i++)printf("\n%4d(No=%2d)",num[1][i],num[0][i]);
}
3-5.编程,输入10个整数及其序号,求出10个整数的最大值、次大值、最小值和次小值,并输出它们原来输入时的序号。
————
main()
{
intnum[2][10],i,j,temp;
for(i=0;i<10;i++)
{
printf("InputNum%d:
",i+1);
scanf("%d",&num[1][i]);
num[0][i]=i+1;
}
for(i=0;i<10;i++)for(j=i+1;j<10;j++)
if(num[1][i]>num[1][j])
{
temp=num[0][j];num[0][j]=num[0][i];num[0][i]=temp;
temp=num[1][j];num[1][j]=num[1][i];num[1][i]=temp;
}
printf("\nMax:
%4d(No=%2d)",num[1][9],num[0][9]);
printf("\nSecondMax:
%4d(No=%2d)",num[1][8],num[0][8]);
printf("\nMin:
%4d(No=%2d)",num[1][0],num[0][0]);
printf("\nSecondMin:
%4d(No=%2d)",num[1][1],num[0][1]);
}
3-6.编程,输入10个整数,然后进行查找。
输入要查找的整数,若找到,则输出该数在数组中的下标位置,否则输出“cannotfound!
”。
————
main()
{
intnum[2][10],i,j,temp;
for(i=0;i<10;i++)
{
printf("InputNum%d:
",i+1);
scanf("%d",&num[1][i]);
num[0][i]=i+1;
}
for(i=0;i<10;i++)for(j=i+1;j<10;j++)
if(num[1][i]>num[1][j])
{
temp=num[0][j];num[0][j]=num[0][i];num[0][i]=temp;
temp=num[1][j];num[1][j]=num[1][i];num[1][i]=temp;
}
printf("\nFind:
");
scanf("%d",&temp);
for(i=0,j=0;i<10;i++)
{
if(num[1][i]==temp)
printf("\nFound%4d(No=%2d)",num[1][i],num[0][i]),j=1;
}
if(j==0)printf("\nCannotfound!
");
}
3-7.编程,输入一个字符串并删除其中的指定字符。
例如,对于字符串abcdcf,指定删除c,则结果为:
abdf。
————
#include
main()
{
charstrA[80]="",ch;
inti,j;
printf("Inputstring:
");gets(strA);
printf("Inputchar:
");ch=getch();
for(i=0;i{
if(strA[i]==ch)
for(j=i;j}
printf("Output:
");
puts(strA);
}
3-8.编程,输入一行字符,将其反序后再输出。
————
#include
main()
{
charstrA[80],strB[80],temp;
inti,j;
gets(strA);
for(i=0;istrB[strlen(strA)]='\0';
puts(strB);
}
3-9.编程,输入一行字符,将其中的每个字符从小到大排列后输出。
————
#include
main()
{
charstr[80],temp;
inti,j;
gets(str);
for(i=0;i{
for(j=0;j
{
if(str[i]{temp=str[i];str[i]=str[j];str[j]=temp;}
}
}
puts(str);
}
3-10.编程,输入一行字符,将其中的每个字符从大到小排列后输出。
————
#include
main()
{
charstr[80],temp;
inti,j;
gets(str);
for(i=0;i{
for(j=0;j
{
if(str[i]>str[j])
{temp=str[i];str[i]=str[j];str[j]=temp;}
}
}
puts(str);
}
3-11.编程,找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。
二维数组也可能没有鞍点。
————
main()
{
inta[10][10]={{1,2,3,14},{4,3,2,11},{2,0,5,7},{8,4,2,11}},m=4,n=4;
inti,j,k,l,re=0;
for(i=0;i{
for(k=0;kfor(l=0;la[i][j])break;
if(k==m&&l==n)
{
re++;
printf("\na[%d][%d]=%disAnDian",i,j,a[i][j]);
}
}
if(re==0)puts("NoAnDian!
");
}
3-12.编程,按学生的序号输入10名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩,要求成绩相同的学生具有相同的名次。
————
main()
{
intnum[10],i,j,k,temp;
for(i=0;i<10;i++)scanf("%d",&num[i]);
for(i=0;i<10;i++)for(j=i+1;j<10;j++)
if(num[i]for(i=0;i<10;i++)
{
k=i+1;
if(num[i]==num[i-1])k=temp;
printf("\n%2d:
%4d",k,num[i]);
temp=k;
}
}
3-13.编程,输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文数)。
————
main