c语言编程小题及解答.docx
《c语言编程小题及解答.docx》由会员分享,可在线阅读,更多相关《c语言编程小题及解答.docx(13页珍藏版)》请在冰豆网上搜索。
![c语言编程小题及解答.docx](https://file1.bdocx.com/fileroot1/2022-10/25/a6f7bafe-1735-4914-8ce6-ce93f3536855/a6f7bafe-1735-4914-8ce6-ce93f35368551.gif)
c语言编程小题及解答
【程序1】
题目:
八进制转换为十进制
程序源代码:
#include
intmain()
{
char*p,s[6];intn;
p=s;
gets(p);
n=0;
while(*(p)!
='\0')
{
n=n*8+*p-'0';
p++;
}
printf("%d",n);
return0;
}
【程序2】题目:
输入3个数a,b,c,按大小顺序输出。
1.程序分析:
利用指针方法。
2.程序源代码:
#include
intmain()
{
intn1,n2,n3;
int*pointer1,*pointer2,*pointer3;
voidswap(int*p1,int*p2);
printf("pleaseinput3number:
n1,n2,n3:
");
scanf("%d,%d,%d",&n1,&n2,&n3);
pointer1=&n1;
pointer2=&n2;
pointer3=&n3;
if(n1>n2)
swap(pointer1,pointer2);
if(n1>n3)
swap(pointer1,pointer3);
if(n2>n3)
swap(pointer2,pointer3);
printf("thesortednumbersare:
%d,%d,%d\n",n1,n2,n3);
return1;
}
voidswap(int*p1,int*p2)
{
intp;
p=*p1;*p1=*p2;*p2=p;
}
==============================================================
【程序3】题目:
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
写3个函数:
①输入10个数;②进行处理;③输出10个数。
程序源代码:
#include
voidmain()
{
intnumber[10];
voidinput(intnumber[10]);
voidmax_min(intarray[10]);
voidoutput(intarray[10]);
input(number);
max_min(number);
output(number);
}
voidinput(intnumber[10])
{
inti;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
voidmax_min(intarray[10])
{
int*max,*min,k,l;
int*p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p{
if(*p>*max)
max=p;
if(*p<*min)
min=p;
}
l=*min;*min=array[0];array[0]=l;
k=*max;*max=array[9];array[9]=k;
}
voidoutput(intarray[10])
{
int*p;
for(p=array;p<=array+9;p++)
printf("%d",*p);
printf("\n");
}
==============================================================
【程序4】
题目:
有n个人围成一圈,顺序排号。
从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
程序源代码:
#include
#definenmax50
voidmain()
{
inti,k,m,n,num[nmax],*p;
printf("pleaseinputthetotalofnumbers:
");
scanf("%d",&n);
p=num;
for(i=0;i*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m{
if(*(p+i)!
=0)k++;
if(k==3)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n)
i=0;
}
while(*p==0)p++;
printf("%disleft\n",*p);
}
==============================================================
【程序5】题目:
写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
程序源代码:
#include
#include
voidmain()
{
intlen;
charstr[20];
intlength(char*p);
printf("pleaseinputastring:
\n");
gets(str);
len=length(str);
printf("thestringhas%dcharacters.",len);
}
intlength(char*p)
{
intn;
n=0;
while(*p!
='\0')
{
n++;
p++;
}
returnn;
}
【程序6】有一字符串,包含n个字符。
写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
#include
voidfunc(char*str1,char*str2,intm)
{
char*s1=str1+m-1;
char*s2=str2;
while(*s1!
='\0')
{
*s2=*s1;
s1++;
s2++;
}
*s2='\0';
}
voidmain()
{
charstr1[100];
charstr2[100];
intm;
printf("请输入一个字符串\n");
gets(str1);
printf("请输入从第几个字符开始拷贝\n");
scanf("%d",&m);
func(str1,str2,m);
printf("拷贝的字符串为%s\n",str2);
}
【程序7】写一函数,将一个3×3的整形矩阵转置。
#include
voidfunc(inta[3][3])
{
int*pt,temp,i,j;
pt=a[0];
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{
temp=*(pt+3*i+j);
*(pt+3*i+j)=*(pt+3*j+i);
*(pt+3*j+i)=temp;
}
}
voidmain()
{
inta[3][3];
inti,j;
printf("请输入一个3*3的整型数\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("转置前的矩阵为\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
func(a);
printf("转置后的矩阵为\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
【程序8】在主函数中输入10个等长的字符串。
用另一函数对它们排序。
然后在主函数输出这10个已排好序的字符串。
#include
#include
#defineN10//字符串个数,可以任意更改
//交换字符串内容
voidchange(chara[],charb[])
{
chart[81];
char*p;
p=t;
strcpy(p,a);
strcpy(a,b);
strcpy(b,p);
}
//对多个(ln个,即ln行)字符串从小到大排序
voidstr_sort(charstr[][81],intln)
{
inti,j;
for(i=0;ifor(j=0;jif(strcmp(*(str+j),*(str+j+1))>0)change(*(str+j),*(str+j+1));
}
voidmain()
{
inti;
chars[N][81];
printf("请输入%d个字符串:
\n",N);
for(i=0;igets(s[i]);//输入字符串
str_sort(s,N);//调用函数str_sort()排序
printf("从小到大排序:
\n");
for(i=0;i{
printf("(%d)",i+1);//显示顺序号
puts(s[i]);//排序后输出
}
}
【程序9】用指针数组处理:
在主函数中输入10个不等长的字符串。
用另一个函数对它们排序。
然后在主函数输出已排好序的字符串。
#include
#include
#defineN10//字符串个数(可以任意更改)
//对指针数组char*str[]排序,即改变指针的值,使它们所指向的字符串(共有ln行)从小到大排序
voidstr_sort(char*str[],intln)
{
inti,j;
char*t;
for(i=0;ifor(j=0;jif(strcmp(*(str+j),*(str+j+1))>0)
{
t=*(str+j);
*(str+j)=*(str+j+1);
*(str+j+1)=t;
}
}
voidmain()
{
inti;
charc[N][81];
char*p[N];//字符型指针数组(即N个字符指针组成的数组)
printf("请输入%d个字符串:
\n",N);
for(i=0;i{
p[i]=c[i];//指针数组中每个元素指向二维字符数组的一个行
gets(p[i]);//输入字符串
}
str_sort(p,N);//调用函数str_sort()排序
printf("从小到大排序:
\n");
fo