c语言编程小题及解答.docx

上传人:b****2 文档编号:1905751 上传时间:2022-10-25 格式:DOCX 页数:13 大小:17.45KB
下载 相关 举报
c语言编程小题及解答.docx_第1页
第1页 / 共13页
c语言编程小题及解答.docx_第2页
第2页 / 共13页
c语言编程小题及解答.docx_第3页
第3页 / 共13页
c语言编程小题及解答.docx_第4页
第4页 / 共13页
c语言编程小题及解答.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

c语言编程小题及解答.docx

《c语言编程小题及解答.docx》由会员分享,可在线阅读,更多相关《c语言编程小题及解答.docx(13页珍藏版)》请在冰豆网上搜索。

c语言编程小题及解答.docx

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;i

for(j=0;j

if(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;i

gets(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;i

for(j=0;j

if(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

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

当前位置:首页 > 农林牧渔 > 林学

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

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