C语言上机题库三Word下载.docx
《C语言上机题库三Word下载.docx》由会员分享,可在线阅读,更多相关《C语言上机题库三Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
![C语言上机题库三Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/23/4eee9249-2043-44ac-bf06-8b1dd067a3d8/4eee9249-2043-44ac-bf06-8b1dd067a3d81.gif)
num[i]=temp;
}
i++)printf("
%4d"
num[i]);
}
3-2.编程,任意输入10个人的成绩,按从大到小的顺序排列。
运行程序时,只要输入名次,计算机就能输出该名次对应的成绩。
if(num[i]<
puts("
MingCi:
"
);
scanf("
j);
printf("
num[j-1]);
3-3.编程,输入10个人的序号和成绩,对成绩从小到大排序,输出排序后的序号和成绩。
main()
intnum[2][10],i,j,temp;
i++)
{
printf("
InputNum%d:
i+1);
scanf("
num[1][i]);
num[0][i]=i+1;
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;
\n%4d(No=%2d)"
num[1][i],num[0][i]);
3-4.编程,输入10个人的序号和成绩,对成绩从从大到小进行排序,输出排序后的序号和成绩。
if(num[1][i]<
3-5.编程,输入10个整数及其序号,求出10个整数的最大值、次大值、最小值和次小值,并输出它们原来输入时的序号。
\nMax:
%4d(No=%2d)"
num[1][9],num[0][9]);
\nSecondMax:
num[1][8],num[0][8]);
\nMin:
num[1][0],num[0][0]);
\nSecondMin:
num[1][1],num[0][1]);
3-6.编程,输入10个整数,然后进行查找。
输入要查找的整数,若找到,则输出该数在数组中的下标位置,否则输出“cannotfound!
”。
\nFind:
temp);
for(i=0,j=0;
if(num[1][i]==temp)
\nFound%4d(No=%2d)"
num[1][i],num[0][i]),j=1;
}
if(j==0)printf("
\nCannotfound!
3-7.编程,输入一个字符串并删除其中的指定字符。
例如,对于字符串abcdcf,指定删除c,则结果为:
abdf。
#include<
string.h>
charstrA[80]="
ch;
inti,j;
Inputstring:
gets(strA);
Inputchar:
ch=getch();
strlen(strA);
if(strA[i]==ch)
for(j=i;
j++)strA[j]=strA[j+1];
Output:
puts(strA);
3-8.编程,输入一行字符,将其反序后再输出。
charstrA[80],strB[80],temp;
gets(strA);
i++)strB[strlen(strA)-1-i]=strA[i];
strB[strlen(strA)]='
\0'
;
puts(strB);
3-9.编程,输入一行字符,将其中的每个字符从小到大排列后输出。
charstr[80],temp;
gets(str);
strlen(str);
for(j=0;
i;
{
if(str[i]<
str[j])
{temp=str[i];
str[i]=str[j];
str[j]=temp;
puts(str);
3-10.编程,输入一行字符,将其中的每个字符从大到小排列后输出。
if(str[i]>
3-11.编程,找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。
二维数组也可能没有鞍点。
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;
m;
i++)for(j=0;
n;
for(k=0;
k<
k++)if(a[k][j]<
a[i][j])break;
for(l=0;
l<
l++)if(a[i][l]>
if(k==m&
&
l==n)
re++;
printf("
\na[%d][%d]=%disAnDian"
i,j,a[i][j]);
if(re==0)puts("
NoAnDian!
3-12.编程,按学生的序号输入10名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩,要求成绩相同的学生具有相同的名次。
intnum[10],i,j,k,temp;
k=i+1;
if(num[i]==num[i-1])k=temp;
\n%2d:
%4d"
k,num[i]);
temp=k;
3-13.编程,输出所有不超过n(取n<
256)的、其平方具有对称性质的正整数(也称为回文数)。
inti,j,n,k;
for(i=1;
256;
j=i*i;
if(j>
10000)k=10000;
elseif(j>
1000)k=1000;
100)k=100;
10)k=10;
elsek=1;
n=0;
do
n+=k*(j%10);
j/=10;
k/=10;
}while(k>
0);
if(n==i*i)printf("
\n%3d:
%5d"
i,i*i);
3-14.编程,输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的从小到大排列字符串并输出。
inti,j,k;
gets(strB);
strcat(strA,strB);
if(strA[i]<
strA[j])
{temp=strA[i];
strA[i]=strA[j];
strA[j]=temp;
3-15.编程,输入两个已经按从小到大顺序排列好的字符串,合并两个字符串,使合并后的字符串中字符从大到小排列并输出。
if(strA[i]>
3-16.编程,输入两个字符串s1和s2,在s1中删除任何s2中有的字符。
例如,s1:
“abc123ad”,s2:
“a1”,则输出“bc23d”。
charstrA[80],strB[80];
strlen(strB);
if(strA[j]==strB[i])
for(k=j;
k++)strA[k]=strA[k+1];
3-17.编程,输入一行文字,判断该行文字是否是回文。
例如,读入:
MADAMIMADAM输出:
YES
读入:
ABCDBA.输出:
NO
if(!
strcmp(strA,strB))printf("
Yes"
elseprintf("
No"
3-18.编程,输入若干个字符串,当输入字符串的长度为0时停止输入。
输出最长的字符串。
strB[80]="
inti;
do
gets(strA);
if(strlen(strA)>
strlen(strB))strcpy(strB,strA);
}while(strlen(strA)!
=0);
Longestword:
3-19.编程,输入若干个字符串,当输入字符串的长度为0时停止输入,输出最大字符串。
if(strcmp(strA,strB)>
0)strcpy(strB,strA);
Biggestword:
3-20.“1898─要发就发”。
将不超过2004的所有素数从小到大排成第一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。
编程,输出第二行数中满足下列条件的整数:
第二行数中若干个连续整数的和恰好是1898。
第一行:
2357111317.....197919871993
第二行:
122424.....86
暂无答案
3-21.用空格分开的字符串称为单词。
输入多行字符串,直到遇到了单词"
stop"
时才停止。
最后输出单词的数量。
inti,n=0;
n++;
}while(strcmp(strA,"
));
Total:
%2dwords"
n);
3-22.编程,输入两个字符串s1、s2和s1中任意字符k,在s1中的指定字符k的位置处插入字符串s2并输出。
charstrA[80],strB[80],ch;
inti,j,lenA,lenB;
Inputs1"
Inputs2"
gets(strB);
Inputk"
lenA=strlen(strA);
lenB=strlen(strB);
lenA;
if(strA[i]==ch)
for(j=lenA;
j>
=i;
j--)strA[j+lenB]=strA[j];
for(j=0;
lenB;
j++)strA[i+j]=strB[j];
lenA+=lenB;
i+=lenB;
3-23.任意输入一个4位自然数,输出该自然数的各位数字组成的最大数。
例如,输入1593,则输出为9531。
inta[4],n,m,i,j;
Inputn:
n);
4;
i++){a[i]=n%10;
n/=10;
if(a[i]<
a[j]){n=a[i];
a[i]=a[j];
a[j]=n;
m=a[0]*1000+a[1]*100+a[2]*10+a[3]);
3-24.编程,输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的从小到大排列字符串,并删除重复的字符,然后输出该字符串。
for(j=i+1,k=0;
if(strA[i]!
=strA[j]){k=j-i-1;
break;
if(k!
=0)for(j=i;
j++)strA[j]=strA[j+k];
3-25.编程,输入五个字符串,请将它们按从小到大的顺序排列后输出。
chara[6][80];
5;
i++){printf("
string%d:
gets(a[i]);
if(strcmp(a[i],a[j])>
0)
{strcpy(a[5],a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],a[5]);
i++)puts(a[i]);
3-26.编程,输入五个字符串,请将它们按从大到小的顺序排列后输出。
if(strcmp(a[i],a[j])<
3-27.编程,将输入的两行字符串连接后,将新串中全部空格移到串首后输出。
if(strA[i]=='
'
)
for(j=i;
for(j=strlen(strA)-1;
=0;
j--)strA[j+1]=strA[j];
strA[0]='
3-28.编程,输入两个字符串s1、s2,将s1复制到s2并输出s1和s2。
复制时,若字符串