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

上传人:b****5 文档编号:20723598 上传时间:2023-01-25 格式:DOCX 页数:17 大小:19.84KB
下载 相关 举报
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"

{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码值从小到大进行排序,相同的字符在新字符串中只出现一次。

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语言源程序文件"

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

FILE*fp;

{intc,d;

if((fp=fopen("

d:

\\tc\\"

"

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