C语言基础题.docx
《C语言基础题.docx》由会员分享,可在线阅读,更多相关《C语言基础题.docx(92页珍藏版)》请在冰豆网上搜索。
C语言基础题
四十一.在N个学生姓名中查找输入的姓名。
#include
#include
intmain(void)
{
charname[100][20],find[20];
intN,count=0,i;
printf("PleaseinputintN:
");
scanf("%d",&N);
printf("PleaseinputNnames:
\n");
for(i=0;i<=N;i++)
gets(name[i]);
printf("Pleaseinputthenamewhitchyouwanttofind:
\n");
gets(find);
for(i=0;i<=N;i++)
if(strcmp(find,name[i])==0)
{
printf("Findit!
\nThenumberis%d\n",i);
count++;
}
if(count==0)
{
printf("Notfound!
Pleasecheckyourinput!
\n");
return-1;
}
return0;
}
四十二、使用选择排序对数组inta[N]进行排序并输出。
#include
voidbubble_sort(int*a,intN);
intmain(void)
{
inta[100];
intN,i;
printf("PleaseinputthevalueofN:
\n");
scanf("%d",&N);
printf("pleaseinputinta[N]:
\n");
for(i=0;iscanf("%d",&a[i]);
bubble_sort(a,N);
printf("Theresultis\n");
for(i=0;iprintf("%d",a[i]);
printf("\n");
return0;
}
voidbubble_sort(int*a,intN)
{
inti,j,box;
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{
box=a[j+1];
a[j+1]=a[j];
a[j]=box;
}
}
四十三、使用冒泡排序对数组inta[N]进行排序并输出。
#include
voidselect_sort(int*a,intn);
intmain(void)
{
intN,i;
inta[100];
printf("PleaseinputthevalueofN:
\n");
scanf("%d",&N);
printf("Pleaseinputyournumber:
\n");
for(i=0;iscanf("%d",&a[i]);
select_sort(a,N);
printf("Theresultis\n");
for(i=0;iprintf("%d",a[i]);
printf("\n");
return0;
}
voidselect_sort(int*a,intn)
{
inti,m,x;
intmin,min_m;
for(m=0;m{
min=a[m];
min_m=m;
for(i=m;iif(a[i]{
min=a[i];
min_m=i;
x=a[min_m];
a[min_m]=a[m];
a[m]=x;
}
}
}
44、使用插入排序对数组inta[N]进行排序并输出。
#include
voidinsert_sort(int*a,intn);
intmain(void)
{
inta[100],i,N;
printf("PleaseinputthevalueofN:
\n");
scanf("%d",&N);
printf("Pleaseinputyournumber:
\n");
for(i=0;iscanf("%d",&a[i]);
insert_sort(a,N);
printf("Theresultis\n");
for(i=0;iprintf("%d",a[i]);
printf("\n");
return0;
}
voidinsert_sort(int*a,intn)
{
inti,j;
intt;
for(i=1;i{
t=*(a+i);
for(j=i;j>0&&*(a+j-1)>t;j--)
*(a+j)=*(a+j-1);
*(a+j)=t;
}
}
45、将N个国家的英文名字,按字典顺序输出。
#include
#include
voidsort(char*a[],intn);
intmain(void)
{
inti,N;
charname[100][30],*p[100];
printf("PleaseinputintN:
");
scanf("%d",&N);
printf("PleaseinputNnames:
\n");
for(i=0;i<=N;i++)
{
gets(name[i]);
p[i]=name[i];
}
sort(p,N);
printf("Theresultofsortis");
for(i=0;i<=N;i++)
printf("%s\n",p[i]);
return0;
}
voidsort(char*a[],intn)
{
inti,j,k;
char*t;
for(i=0;i<=n-1;i++)
for(j=0;j<=n-i-1;j++)
if(strcmp(a[j],a[j+1])>0)
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
46、在有序(升序)数组inta[N]插入一个输入的整数num,使数组仍有序。
#include
voidinsert_sort(int*a,intN);
voidinsert(int*a,intN,intx);
intmain(void)
{
inta[100];
intN,i,num;
printf("PleaseinputthevalueofN:
\n");
scanf("%d",&N);
printf("pleaseinputinta[N]:
\n");
for(i=0;iscanf("%d",&a[i]);
insert_sort(a,N);
printf("Theresultis\n");
for(i=0;iprintf("%d",a[i]);
printf("\n");
printf("Pleaseinputtheintnumberwhitchyouwanttoinsert\n");
scanf("%d",&num);
insert(a,N,num);
printf("Theresultis\n");
for(i=0;i<=N;i++)
printf("%d",a[i]);
return0;
}
voidinsert_sort(int*a,intn)
{
inti,j;
intt;
for(i=1;i{
t=*(a+i);
for(j=i;j>0&&*(a+j-1)>t;j--)
*(a+j)=*(a+j-1);
*(a+j)=t;
}
}
voidinsert(int*a,intN,intx)
{
a[N]=x;
insert_sort(a,N+1);
}
47、删除字符串中指定的字符。
#include
#include
intmain(void)
{
intcount=0,i,j,k,l1,l2;
charc[20],s[200];
puts("Inputstring");
gets(s);
puts("Inputthecharacterswhichyouwanttodelete");
gets(c);
l1=strlen(s);
l2=strlen(c);
for(i=0;ifor(j=0;jif(c[j]==s[i])
{
for(k=i+1;ks[i]=s[k];
count++;
i=0;
}
s[l1-count]=0;
printf("Theresultis\n%s\n",s);
return0;
}
48、在有序数组inta[N]中折半查找输入的整数num。
#include
intmain(void)
{
inta[100],N,x,i,top,end,count=0;
printf("InputintN\n");
scanf("%d",&N);
printf("PleaseinputNnumbers\n");
for(i=0;iscanf("%d",&a[i]);
printf("pleaseenterthenumberwhichyouwanttofind\n");
scanf("%d",&x);
for(top=0,end=N-1;top<=end;)
{
i=top+(end-top)/2;
if(x==a[i])
{
printf("Findit!
Thepositionis%d",i+1);
count++;
break;
}
else
if(x>a[i])
end=i-1;
else
top=i+1;
}
if(count==0)
{
printf("Notfound!
\n");
return-1;
}
return0;
}
49、编写函数计算字符串长度。
#include
intslen(char*s);
intmain(void)
{
chars[20];
printf("Inputstring:
\n");
scanf("%s",s);
printf("Lengthis%d\n",slen(s));
return0;
}
intslen(char*s)
{
inti=0,n=0;
while(s[i++]!
=0)
n++;
returnn;
}
50、编写函数实现两个字符串连接。
#include
voidcats(char*s1,char*s2);
intmain(void)
{
chars1[100],s2[100];
printf("Inputstring1\n");
scanf("%s",s1);
printf("Inputstring2\n");
scanf("%s",s2);
cats(s1,s2);
printf("Theresultis\n%s\n",s1);
return0;
}
voidcats(char*s1,char*s2)
{
while(*s1)
*s1++;
while(*s1++=*s2++);
}
51、编写函数实现字符串复制。
#include
voidscopy(char*s1,char*s2);
intmain(void)
{
chars1[100],s2[100];
printf("Inputstring\n");
scanf("%s",s2);
scopy(s1,s2);
printf("Theresultis\n%s\n",s1);
return0;
}
voidscopy(char*s1,char*s2)
{
while(*s1++=*s2++);
52、编写函数两个字符串比较。
#include
intscmp(char*s1,char*s2);
intmain(void)
{
chars1[100],s2[100],c;
intr;
printf("Inputstring1\n");
scanf("%s",s1);
printf("Inputstring2\n");
scanf("%s",s2);
r=scmp(s1,s2);
switch(r)
{
case-1:
c='<';break;
case0:
c='=';break;
case1:
c='>';break;
}
printf("Theresultis\nstring1%cstring2\n",c);
return0;
}
intscmp(char*s1,char*s2)
{
inti;
while(*s1&&*s2)
{
if(*s1>*s1)
return1;
else
if(*s1<*s2)
return-1;
else
{
*s1++;
*s2++;
}
}
if(*s1==*s2)
return0;
else
if(*s1>*s1)
return1;
else
if(*s1<*s2)
return-1;
}
53、删除字符串中指定的一个字符。
#include
#include
intmain(void)
{
intcount=0,i,j,l;
charc,s[20];
puts("Inputstring");
gets(s);
puts("Inputthecharacterwhichyouwanttodelete");
scanf("%c",&c);
l=strlen(s);
for(i=0;i{
if(c==s[i])
{
for(j=i+1;js[i]=s[j];
count++;
i=0;
}
}
s[l-count]=0;
printf("Theresultis\n%s\n",s);
return0;
}
54、判断一个字符串是否为回文(顺读和倒读相同)。
#include
#include
intmain(void)
{
chars1[20],s2[20];
inti,j=0,l;
puts("Inputastring:
");
gets(s1);
l=strlen(s1);
for(i=l-1,j=0;i>=0&&js2[j]=s1[i];
s2[j]=0;
if(strcmp(s1,s2)==0)
puts("Thestringisapalindrome");
else
puts("Thestringisnotapalindrome");
return0;
}
55、编写一个函数,将第一个字符串中有而第二个字符串中无的字串返回。
#include
#include
char*delret(char*s1,char*s2);
intmain(void)
{
chars1[20],s2[20],*s;
puts("Inputstring1");
gets(s1);
puts("Inputstring2");
gets(s2);
s=delret(s1,s2);
printf("Theresultis\n%s\n",s);
return0;
}
char*delret(char*s1,char*s2)
{
intcount=0,i,j,k,l1,l2;
l1=strlen(s1);
l2=strlen(s2);
for(i=0;ifor(j=0;jif(s2[j]==s1[i])
{
for(k=i+1;ks1[i]=s1[k];
count++;
i=0;
}
s1[l1-count]=0;
returns1;
}
56、编写一个函数,将两个字符串的字符排序后输出
#include
#include
voidstrcat_sort(char*s1,char*s2);
intmain(void)
{
chars1[20],s2[20];
puts("Inputstring1");
gets(s1);
puts("Inputstring2");
gets(s2);
strcat_sort(s1,s2);
return0;
}
voidstrcat_sort(char*s1,char*s2)
{
inti,j,N;
charbox;
strcat(s1,s2);
N=strlen(s1);
for(i=0;ifor(j=0;jif(s1[j]>s1[j+1])
{
box=s1[j+1];
s1[j+1]=s1[j];
s1[j]=box;
}
puts("Theresultis:
");
puts(s1);
}
57、统计字符串中的单词(单词之间用一个或多个空格分隔)。
#include
#include
intcnt_wrd(char*s);
intmain(void)
{
chars[100];
puts("Inputastring:
");
gets(s);
printf("Thequantityofwordsis%d",cnt_wrd(s));
return0;
}
intcnt_wrd(char*s)
{
inti=1,c=1;
while(s[i])
{
if(s[i]==''&&s[i-1]!
='')
c++;
i++;
}
returnc;
}
58、找出二维数组的鞍点(鞍点是指行上最大,在列上最小的元素),如果有输出鞍点数据和位置。
#include
structsaddle_point
{
intflag;
inti;
intj;
intvalue;
};
intmain(void)
{
structsaddle_pointsp;
inta[100][100];
inti,j,m,n,k;
printf("请输入行数和列数:
");
scanf("%d%*c%d",&m,&n);
printf("请输入%d×%d二维数组:
\n",m,n);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;i{
sp.value=a[i][0];
sp.j=0;
for(j=0;jif(a[i][j]>sp.value)
{
sp.value=a[i][j];
sp.j=j;
}
sp.flag=1;
for(k=0;kif(sp.value>a[k][sp.j])
{
sp.flag=0;
break;
}
if(sp.flag==1)
{
sp.i=i;
printf("鞍点为a[%d][%d]=%d\n",sp.i+1,sp.j+1,sp.value);
break;
}
}
if(sp.flag!
=1)
printf("没有鞍点\n");
return0;
}
59、实现inta[M][N]矩阵的转置。
#include
intmain(void)
{
inta[100][100];
intM,N;
inti,j,t;
printf("PleaseinputintMN:
\n");
scanf("%d%*c%d",&M,&N);
printf("Pleaseinput%d*%dMatrix:
\n",M,N);
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;ifor(j=i+1;j{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
printf("Theresultis:
\n");
for(i=0;i{
for(j=0;jprintf("%d\t",a[i][j]);
printf("\n");
}
return0