C语言程序设计习题试题编程题Word下载.docx

上传人:b****3 文档编号:18507789 上传时间:2022-12-18 格式:DOCX 页数:17 大小:21.39KB
下载 相关 举报
C语言程序设计习题试题编程题Word下载.docx_第1页
第1页 / 共17页
C语言程序设计习题试题编程题Word下载.docx_第2页
第2页 / 共17页
C语言程序设计习题试题编程题Word下载.docx_第3页
第3页 / 共17页
C语言程序设计习题试题编程题Word下载.docx_第4页
第4页 / 共17页
C语言程序设计习题试题编程题Word下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言程序设计习题试题编程题Word下载.docx

《C语言程序设计习题试题编程题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题试题编程题Word下载.docx(17页珍藏版)》请在冰豆网上搜索。

C语言程序设计习题试题编程题Word下载.docx

);

/*字符'

在C程序中要使用转义符'

*/

printf("

class1=%d,class2=%d,class3=%d\n"

class1,class2,class3);

2、从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。

{inti,j,num,a[10];

for(i=0;

i<

10;

i++)

{printf("

EnterNo.%d:

"

i+1);

scanf("

%d"

&

num);

for(j=i-1;

j>

=0&

&

a[j]>

num;

j--)

a[j+1]=a[j];

a[j+1]=num;

printf("

No.%d=%d\n"

i+1,a[i]);

 

3、输入一个正整数,要求以相反的顺序输出该数。

例如输入12345,输出位54321。

voidmain()

{intn;

Pleaseentern:

n);

while(n>

0)

n%10);

n=n/10;

}

4、编写程序,读入一个整数N;

若N为非负数,则计算N到2×

N之间的整数和;

若N为一个负数,则求2×

N到N之间的整数和。

分别利用for和while写出两个程序。

{inti,n;

longs1=0,s2=0;

PleaseenterN:

if(n>

=0)

for(i=n;

=2*n;

s1=s1+i;

else

i>

i--)

i=n;

if(i>

while(i<

=2*n)

s2=s2+i++;

while(i>

s2=s2+i--;

Result1=%ldresult2=%ld\n"

s1,s2);

5、一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。

又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。

编写程序求这个自然数。

{inti,n,a;

{if(i%8==1)

{n=i/8;

if(n%8==1)

{n=n/8;

if(n%8==7)a=n/8;

if(i%17==4)

{n=i/17;

if(n%17==15)n=n/17;

if(2*a==n)

result=%d\n"

i);

break;

6、编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。

{intf1,f2,f5,count=0;

for(f5=0;

f5<

=20;

f5++)

for(f2=0;

f2<

=(100-f5*5)/2;

f2++)

{f1=100-f5*5-f2*2;

if(f5*5+f2*2+f1==100)

No.%2d>

>

5:

%4d2:

%2d1:

%2d\n"

++count,f5,f2,f1);

7、将一个数的数码倒过来所得到的新数叫原数的反序数。

如果一个数等于它的反序数,则称它为对称数。

求不超过1993的最大的二进制的对称数。

{inti,j,n,k,a[16]={0};

for(i=1;

=1993;

{n=i;

k=0;

0)/*将十进制数转变为二进制数*/

{a[k++]=n%2;

n=n/2;

for(j=0;

j<

k;

j++)

if(a[j]!

=a[k-j-1])break;

if(j>

=k)

%d:

"

%2d"

a[j]);

\n"

8、十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。

然后所有的小孩同时将自己手中的糖分一半给右边的小孩;

糖块数为奇数的人可向老师要一块。

问经过这样几次调整后大家手中的糖的块数都一样?

每人各有多少块糖?

{inti,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20};

while

(1)

{for(i=1;

=10;

a[i-1]=a[i-1]/2+a[i]/2;

a[10]=a[10]/2+a[0];

if(a[i]%2==1)a[i]++;

if(a[i]!

=a[i+1])break;

if(i==10)break;

{a[0]=0;

count++;

count=%dnumber=%d\n"

count,a[1]);

9、输入5×

5的数组,编写程序实现:

(1)求出对角线上各元素的和;

(2)求出对角线上行、列下标均为偶数的各元素的积;

(3)找出对角线上其值最大的元素和它在数组中的位置。

{inti,j,s1=0,s2=1,a[5][5];

5;

%d%d:

i,j);

a[i][j]);

{for(j=0;

%5d"

a[i][j]);

j=0;

{s1=s1+a[i][i];

if(i%2==0)s2=s2*a[i][i];

if(a[i][i]>

a[j][j])j=i;

SUN=%d\nACCOM=%d\na[%d]=%d\n"

s1,s2,j,a[j][j]);

10、编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。

#include"

stdio.h"

{inti,n=0,a[4]={0};

Pleaseenteradigit:

4&

(a[i]=getchar())!

\n'

i++);

4;

if(a[i]>

=48&

a[i]<

=57)a[i]=a[i]-48;

elseif(a[i]>

=65&

=69)a[i]=a[i]-55;

=97&

=102)a[i]=a[i]-87;

elseprintf("

inputError!

n=n*16+a[i];

n);

11、编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中。

{inti,n,k=16,a[16]={0};

{a[--k]=n%2;

16;

a[i]);

12、对数组A中的N(0<N<100=个整数从小到大进行连续编号,输出各个元素的编号。

要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。

例如数组是:

A=(5,3,4,7,3,5,6)则输出为:

 (3,1,2,5,1,3,4)

{inti,j,k,n,m=1,r=1,a[2][100]={0};

printf("

n;

a[%d]="

a[0][i]);

while(m<

=n)/*m记录已经登记过的数的个数*/

{for(i=0;

i++)/*记录未登记过的数的大小*/

{if(a[1][i]!

=0)/*已登记过的数空过*/

continue;

k=i;

for(j=i;

j++)/*在未登记过数中找最小数*/

if(a[1][j]==0&

a[0][j]<

a[0][k])k=j;

a[1][k]=r++;

/*记录名次,r为名次*/

m++;

/*登记过的数增1*/

j++)/*记录同名次*/

a[0][j]==a[0][k])

{a[1][j]=a[1][k];

a[%d]=%d,%d\n"

i,a[0][i],a[1][i]);

13、求这样一个三位数,该三位数等于其每位数字的阶乘之和。

        即:

 abc=a!

+b!

+c!

{inta[5],i,t,k;

for(i=100;

1000;

{for(t=0,k=1000;

k>

t++)

{a[t]=(i%k)/(k/10);

k/=10;

if(f(a[0])+f(a[1])+f(a[2])==i)

%d"

f(m)

intm;

{inti=0,t=1;

while(++i<

=m)t*=i;

return(t);

14、编写一个函数实现将字符串str1和字符串str2合并,合并后的字符串按其ASCII码值从小到大进行排序,相同的字符在新字符串中只出现一次。

string.h"

strcmbn(a,b,c)/*数组合并函数:

将数组a、b合并到*/

chara[],b[],c[];

{chartmp;

inti,j,k,m,n;

m=strlen(a);

n=strlen(b);

m-1;

i++)/*对数组a排序*/

{for(j=i+1,k=i;

m;

if(a[j]<

a[k])k=j;

tmp=a[i];

a[i]=a[k];

a[k]=tmp;

n-1;

i++)/*对数组b排序*/

if(b[j]<

b[k])k=j;

tmp=b[i];

b[i]=b[k];

b[k]=tmp;

i=0;

m&

n)/*合并*/

b[j])

c[k++]=b[j++];

/*将a[i]、b[j]中的小者存入c[k]*/

{c[k++]=a[i++];

if(a[i-1]==b[j])j++;

/*如果a、b当前元素相等,删掉一个*/

m)c[k++]=a[i++];

/*将a或b中剩余的数存入c*/

while(j<

n)c[k++]=b[j++];

c[k]='

\0'

15、编写函数,采用递归方法实现将输入的字符串按反序输出。

strout(s)

char*s;

{if(*s!

{strout(s+1);

/*递归调用strout函数,字符串首地址前移一个字符*/

putch(*s);

/*输出字符串首地址所指向的字符*/

elsereturn;

/*遇到字符串结束标志结束递归调用*/

16、编写函数,采用递归方法将任一整数转换为二进制形式。

turn(n,a,k)

intn,a[],k;

{if(n>

{a[k]=n%2;

turn(n/2,a,k-1);

{inti,n,a[16]={0};

\nPleaseentern:

turn(n,a,15);

17、将一个数的数码倒过来所得到的新数,叫作原数的反序数,如果一个数等于它的反序数,则称它为对称数。

编写程序,采用递归算法求不超过1993的最大的二进制的对称数。

smmt(chars[])/*指针s指向字符串的第一个字符*/

{char*p;

p=s;

while(*p!

)p++;

p--;

/*指针p指向字符串的最后一个字符*/

if(p==s)return

(1);

/*两个指针指向同一个字符表示字符串对称*/

=*p)

return(0);

/*两个指针指向字符不等表示字符串不对称*/

{*p='

smmt(s+1);

/*取掉首尾比较过的字符继续比较*/

18、编写程序,读入一个以符号"

."

结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。

例如:

读入句子:

MADAMI'

MADAM.它是回文,所以输出:

YES

ABCDBA).它不是回文,所以输出:

NO

{chars[21],*p,*q;

gets(s);

q=s;

while(*q!

)q++;

q-=2;

while(p<

q)/*指针p指向字符串首,指针q指向串未*/

if(*p++!

=*q--)/*指针p、q同时向中间移动,比较对称的两个字符*/

NO\n"

if(p>

=q)

YES\n"

19、编写程序,其中包括一个函数,此函数的功能是:

对一个长度为N的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M<

=80,K<

=N)。

例如输入字符串"

Wearepoorstudents."

,利用此函数进行删除"

poor"

的处理,输出处理后的字符串是"

Wearestudents."

strcut(s,m,k)

chars[];

intm,k;

inti;

p=s+m;

/*指针p指向要被删除的字符*/

while((*p=*(p+k))!

)/*p+k指向要前移的字符*/

p++;

20、编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。

insert(s1,s2,ch)

chars1[],s2[],ch;

{char*p,*q;

p=s1;

while(*p++!

=ch);

while(*s2!

{q=p;

while(q>

=p)

*(q+1)=*q--;

*++q=*s2++;

21、编写程序将输入的两行字符串连接后,将串中全部空格移到串首后输出。

strcnb(s1,s2)

chars1[],s2[];

inti=1;

while((*p++=*s2++)!

);

/*将s2接于s1后面*/

)/*扫描整个字符串*/

{if(*p=='

'

)/*当前字符是空格进行移位*/

{while(*(p+i)=='

)i++;

/*寻找当前字符后面的第一个非空格*/

if(*(p+i)!

{*p=*(p+i);

/*将非空格移于当前字符处*/

*(p+i)='

/*被移字符处换为空格*/

elsebreak;

/*寻找非空格时到字符串尾,移位过程结束*/

22、编写程序,输入字符串,分别统计字符串中所包含的各个不同的字符及其各自字符的数量。

如:

输入字符串:

abcedabcdcd

则输出:

a=2b=2c=3d=3e=1。

structstrnum

{inti;

{charc;

inti=0,k=0;

structstrnums[100]={0,NULL};

while((c=getchar())!

s[i].i!

=0;

{if(c==s[i].ch)

{s[i].i++;

if(s[i].i==0)

{s[k].ch=c;

s[k++].i=1;

while(s[i].i>

%c=%d"

s[i].ch,s[i].i);

i++;

23、编写程序,读入磁盘上C语言源程序文件"

test8.c"

,删去程序中的注释后显示。

FILE*fp;

{intc,d;

if((fp=fopen("

d:

\\tc\\test8.c"

"

r"

))==NULL)

exit(0);

while((c=fgetc(fp))!

=EOF)

if(c=='

)/*如果是字符注释的起始字符'

if((d=fgetc(fp))=='

)/*则判断下一个字符是否为'

in_comment();

/*调用函数处理(删除)注释*/

else/*否则原样输出读入的两个字符*/

{putchar(c);

putchar(d);

'

||c=='

\"

)/*判断是否是字符'

或"

*/echo_quote(c);

/*调用函数处理字符'

包含的字符*/elseputchar(c);

}in_comment()

c=fgetc(fp);

d=fgetc(fp);

while(c!

||d!

{/*连续的两个字符不是*和/则继续处理注释*/

c=d;

d=fgetc(fp);

echo_quote(c)

intc;

/*c中存放的是定界符'

{intd;

putchar(c);

while((d=fgetc(fp))!

=c)/*读入下一个字符判断是否是定界符c*/

/*当不是定界符c时继续循环*/

if(d=='

)/*若出现转义字符\*/

putchar(fgetc(fp));

/*则下一个字符不论是何均原样输出*/

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

当前位置:首页 > 经管营销

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

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