C语言程序设计课后习题编程答案_第1页
C语言程序设计课后习题编程答案_第2页
C语言程序设计课后习题编程答案_第3页
C语言程序设计课后习题编程答案_第4页
C语言程序设计课后习题编程答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章简单程序设计

1.编程求方程2*x"2-3*x-5=0的根。

源代码

#include<stdio.h>

intmain()

(

floatxl,x2;

xl=(3+7)A.0;

x2=(3-7)A.O;

printf("xl=%f/x2=%f\n",xl/x2);

return0;

}

2,已知正方体的棱长为4.3,求正方体的体积和表面积。(保留2位小数)

源代码

#include<stdio.h>

intmain()

(

floata;

floats,v;

a=4.3;

s=a*a*6;

v=a*a*a;

printf("V=%.2f,S=%.2f\n",v,s);

return0;

}

3.输入3个整数啊a,b,c,编程交换它们的值,即把a的值给b,把b中的值给c,把c的

值给a。

源代码

#include<stdio.h>

intmain()

(

inta,b,c;

inttemp;

scanf("%d%d%d"/&az&b,&c);

temp=a;

a=b;

b=c;

c=temp;

printf("a=%d,b=%d/c=%d\n",a,b,c);

return0;

}

4.编程将任意输入的小写字母转化成大写字母并输出

源代码

#include<stdio.h>

intmain()

(

charch;

,,

scanf(%c",&ch);

ch=ch-32;

printf("%c\n”,ch);

return0;

}

第四章选择结构

L设计一个简单的计算器程序,用户输入运算数和四则运算符(+、-、*、/),输出计算结果,

除法为整除。

源代码

#include<stdio.h>

voidmain()

(

inta,b,c;

charchi;

scanf("%d%c%d"/&a,&chlz&b);

switch(chl)

(

case43:c=a+b;printf(,,c=%d\n,,,c);break;

case45:c=a-b;printf("c=%d\n",c);break;

case42:c=a*b;printf("c=%d\n",c);break;

case47:c=a/b;printf("c=%d\n",c);break;

default:printf("wrong!");

)

)

2•根据输入的x的值求y的值,当x>0且x!=2时,y=(x+1)/(x-2);当x=0或x=2时,y=0;

当x<0时,y=(x-l)/(x-2).

源代码

#include<stdio.h>

voidmain()

(

floatx,y;

scanf("%f",&x);

if(x>0&&x!=2)

y=(x+l)*(x-2);

else

(

if(x==O||x==2)

y=o;

else

y=(x-l)*(x-2);

}

printf("y=%f\n",y);

)

3.编写程序,从键盘输入学生成绩输出对的的等级(100分为A,99-90为B,80-89为C,

70-79为D,60-69为E,小于60为F)。

源代码

#include<stdio.h>

intmain()

(

floatnum;

scanf("%f",&num);

if(num==100)

printf("A\n");

else

{

if(num>=90)

printf("B\n");

else

(

if(num>=80)

printf("C\n");

else

{

if(num>=70)

printf("D\n");

else

(

if(num>=60)

printf("E\n");

else

printf("F\n");

)

)

}

)

return0;

)

4.编写程序,输入不多余4位的正整数,判断它是几位数。

源代码

#include<stdio.h>

voidmain()

(

inta;

scanf("%d",&a);

if(a>=1000)

printf("4\n");

else

(

if(a>=100)

printf("3\n");

else

(

if(a>=10)

printf(n2\n");

else

printf("l\n");

)

)

)

第五章循环结构

1.求1-2+3-4+5-6+7+........+99-100.

源代码

#include<stdio.h>

voidmain()

(

inti,s;

for(i=l/s=0;i<=100;i++)

(

if(i%2!=0)

s=s+i;

else

s=s-i;

)

printf("s=%d\n"/s);

)

2.任意输入10个数的和,分别计算输出其中正数和负数的和

源代码

#include<stdio.h>

voidmain()

(

floatsl,s2,xzi;

for(sl=0/s2=0J=l;i<=10;i=i++)

(

scanf("%f"/&x);

if(x<0)

sl=sl+x;

else

s2=s2+x;

}

printf("%f,%f\n",sl,s2);

)

3.计算100里面所有含6的数字之和。

源代码

#include<stdio.h>

voidmain()

(

inti,a,b,s;

for(i=l,s=0;i<100;i++)

(

a=i/10;

b=i%10;

if(6==a116==b)

s=s+i;

)

printf("%d\n",s);

)

4.输出所有的3位水仙花数。

源代码

#indude<stdio.h>

voidmain()

(

inti,a,b,c,d;

for(i=100;i<1000;i=i+l)

(

a=i/100;〃求的百位数字

c=i%10;〃求的个位数字

b=(i%100-c)/10;〃求的十位数字

d=a*a*a+b*b*b+c*c*c;

if(d==i)

printf("%d\n",i);

)

)

5,编写程序输出下面图形:

1

23

456

7890

源代码

#include<stdio.h>

voidmain()

intaJJ;

a=l;

for(i=l;i<=4;i++)

(

for(j=l;j<=i;j++,a++)

printf("%d",a);

printf("%\n");

)

)

6.编写程序输出下面图形:

*

***

*****

*******

♦****

***

*

源代码

#include<stdio.h>

voidmain()

(

inti,j,k;

k=6;

for(i=0;i<=3;i++,k-=2)

{

for(j=0;j<k;j++)

printf("");

for(j=0;j<(2*i+l);j++)

printf("*");

printf("\n");

)

k=2;

i=2;

for(i=2;i>=0;k+=2,i-)

(

for(j=0;j<k;j++)

printf("");

for(j=0;j<(2*i+l);j++)

printf("*");

printf("\n");

)

第六章数组

1.编程求一个4*4矩阵两条对角线所有元素之和。

源代码

#include<stdio.h>

voidmain()

(

inta⑷⑷;〃定义一个4*4矩阵

ints,i,k;〃定义相关变量

s=0;〃令和为0

printf("pleaseinput16numbers:");

for(i=0;i<=3;i++)〃输入这个矩阵的相关数值

(

for(k=0;k<=3;k++)

scanf("%d",&a[i][k]);

)

for(i=0,k=3;i<=3;i++)〃对矩阵对角线进行求和

(

s=s+a[i][i];

s=s+a[i][k-i];

}

printf("%d\n",s);

)

2.输入一个字符串,将指定位置的字符删除。

源代码

#include<stdio.h>

#include<string.h>

voidmain()

{

inti;

intn;

intlongth;

charch[100];

printf(HpleaseinputCharacters:\n");

gets(ch);

longth=strlen(ch);

printf("pleaseinputthenumberwhichcharacteryouwanttodelete:");

scanf("%d",&n);

if(n>longth||n<l)

printf("ERROR!\n");

else

(

for(i=0;i<longth-l;i++)

(

if(i>=n-l)

ch[i]=ch[i+l];

ch[longth-l]='\0';

puts(ch);

)

)

3.输入一个字符串,在指定位置插如一个字符

源代码

#include<stdio.h>

#include<string.h>

voidmain()

(

intizn;

charch[100];

intlongth;

printf("pleaseinputcharacters:\n");

gets(ch);

longth=strlen(ch);

printf("pleaseinputthecharachterwhichyouwanttoinsert:");

charsh;

scanf("%c",&sh);

printf("pleaseinputthenumber:");

scanf("%d”,&n);

for(i=longth;i>n-l;i-)

ch[i]=ch[i-l];

ch[n-l]=sh;

ch[longth+l]='\0';

puts(ch);

)

4.编写程序,求下列矩阵各行元素之和,各列元素之和

13579

246810

35876

源代码

#include<stdio.h>

voidmain()

(

inti,k;〃定义相关变量

introw;

intcol;

inta[3][5];

row=0;

col=0;

printf("求下面矩阵各行各列的和:\n");

for(i=l;i<=3;i++)〃输出这个矩阵

for(k=l;k<=5;k++)

(

a[i-l][k-l]=i+2*(k-l);

printf("%3d",a[i-l][k-l]);

)

printf("\n");

}

for(i=0;i<=2;i++)〃控制行数

{

for(k=0;k<=4;k++)〃对各行进行求和

(

row=row+a[i][k];

)

printf("row%d=%d\n",i+Lrow);〃输出各行之和

}

for(k=0;k<=4;k++)〃控制列数

(

for(i=l;i<=2;i++)〃对各列进行求和

(

col=col+a[i][k];

)

printf("col%d=%d\n'',k+Lcol);〃输出各歹ij之和

}

)

5有一篇文章,共有3行文字,每行最多80个字符。要求分别统计其中英文大写字母,小

写字母,数字,空格,以及其他字符的数目。

源代码

#include<stdio.h>

voidmain()

(

inti,k;〃定义相关变量

charch[80];

intbig,som,emp,num,oth;

big=O;

som=0;

emp=0;

num=0;

oth=0;

for(i=l;i<=3;i++)〃控制行数

{gets(ch);

for(k=0;k<=79;k++)

if(ch[k)>=K&&ch[kk=Z)〃对大写字母进行统计

big=big++;

else

(

讦(ch[k]>=T&&ch[k]<=9)〃对数字进行统计

num=num++;

else

(

if(ch[k]>='a'&&ch[k]<=?)〃对小写字母进行统计

som=som++;

else

(

if(ch[k]=1)〃对空格键进行统计

emp=emp++;

else

oth=oth++;〃对其他字符进行统计

)

)

)

)

)

printf("big=%d,som=%d,emp=%cl,num=%cl,oth=%d\n",big/som,emp,num,oth);//$fl}Hj^iiT+^n7R:

)

第七章函数

1.编写求两个数的和、差、平均数的三个函数,在主函数中调用它们并输出结果

源代码

#include<stdio.h>

intsum(inta,intb)

(

intc;

c=a+b;

return(c);

)

intchafinta,intb)

(

intc;

c=a-b;

return(c);

)

floatpingjun(inta,intb)

(

floatc;

c=(a+b)/2.0;

return(c);

)

voidmain()

(

intm,n;

intx,y;

floatz;

scanf("%d%d"z&m,&n);

x=sum(mzn);

y=cha(m/n);

z=pingjun(m,n);

pnntf("a+b=%d\n",x);

printf("a-b=%d\n"/y);

printf("(a+b)/2=%f\n"/z);

)

2.从键盘输入3个整数,求他们中的最大者,用函数调用实现

源代码

#include<stdio.h>

intmax(inta,intb,intc)

(

if(a<b)

a=b;

if(a<c)

a=c;

return(a);

)

voidmain()

(

intx,y,z,m;

scanf("%d%d%d”,&x,&y,&z);

m=max(x,y,z);

printf("%d\n"zm);

)

3.按下列递归定义编写一个计算事级函数

1,n=0

XAn={

X*XA(n-l)n>0

源代码

#include<stdio.h>

longmiji(intnjntx)

(

longy;

if(n>0)

y=x*miji(n-lzx);

else

y=i;

return(y);

voidmain()

(

intazb;

longf;

printf("pleaseinputnandx:");

scanf("%d%d",&a,&b);

f=miji(a,b);

A

printf("Xn=%\ld\n"/f);

)

4.斐波那契数:Xn=X(n-l)+X(n-2)n>2;Xn=ln=l或者n=2;

#include<stdio.h>

intfeibo(intn)

(

inty;

if(n>2)

y=feibo(n-l)+feibo(n-2);

else

y=i;

return(y);

)

voidmain()

(

intx;

inti;

inta[47];

scanf(H%d",&x);

for(i=0;i<x;i++)

a[i]=feibo(i+l);

for(i=0;i<x;i++)

printf("%4d",a[i]);

printf("\n");

5.编写一个函数使输入的一个字符串反序存放,并在函数中输入输出o

源代码

#include<stdio.h>

#include<string.h>

voidopc(charch[100],intn)

inti;

chart;

for(i=0;i<(n/2);i++)

t=ch[i];

ch[i]=ch[n-i-l];

ch[n-i-l]=t;

}

voidmain()

(

intk,f;

charsh[100];

gets(sh);

k=strlen(sh);

opc(sh,k);

for(f=0;f<k;f++)

printf("%c”,sh[f]);

printf("\n");

}

6.编写一个函数将输入的十六进制数转化为十进制数,并输出

源代码

#include<stdio.h>

#include<string.h>

#include<math.h>

intchanger(charch[10]Jntm)

(

intk;

inti;

for(i=0,k=0;i<m;i++)

(

if(ch[i]>='0,&&ch[i]<='9')

(

ch[i]=ch[i]+O;

}

else

(

jf(ch[i]=='A')

(int)(ch[i]=10);

if(ch[i]=='B')

(int)(ch[i]=ll);

if(ch[i]=='C)

(int)(ch[i]=12);

if(ch[i]=='D,)

(int)(ch[i]=13);

if(ch[i]==,E,)

(int)(ch[i]=14);

if(ch[i]=='F')

(int)(ch[i]=15);

)

k=ch[i]*pow(10zm-l-i)+k;

}

return(k);

voidmain()

{

ints,n;

charsh[10];

gets(sh);

n=strlen(sh);

s=changer(sh,n);

printf("s=%d\n"/s);

}

第八章指针

1.编写一个程序,输入10个整数存入一维数组中,再按逆序重新存放后输出

源代码

#include<stdio.h>

voidchange(int*p)〃定义函数

(

inti,t;

for(i=0;iv5;i++)〃循环进行逆序交换

(

t=*(p+i);〃将第i+1个数用T备份

*(p+i)=*(p+9-i);〃将第10-i个数赋值给第i+1个数

*(p+9-i)=t;〃将T赋值给第10-i个数

}

)

voidmain()

(

inta[10J;〃定义一个有10个元素的数组

intk;

for(k=0;k<10;k++)

scanf("%d",&a[k]);〃输入数

change⑶;〃调用函数

for(k=0;k<10;k++)

printf("%4d",a伙]);〃输出函数处理后的数

printf("\n");

}

2.输入一个字符串并将其逆序输出

源代码

#include<stdio.h>

#include<string.h>

voidchange(char*p,intn)〃定义函数,用指针来当字符串的形参

(

for(;n>=0;n-)

printf("%c",*(p+n-l));〃从最后一个起逆序输出

printf("\n");

)

voidmain()

(

charch[100];

intk;

gets(ch);〃输入字符串

k=strlen(ch);〃测量字符串的长度

change(ch,k);〃调用函数

)

3.输入10个数,将其中最大的数与最后一个一个数交换,最小的与第一个数交换

源代码

#indude<stdio.h>

voidchange(int*pi)〃定义函数,用指针来当数组的形参

(

int*p,*q;〃定义两个指针

p=pi;〃将两个指针初始化为数组的首地址

q=pi;

inti,t;

for(i=0;i<10;i++)〃循环找最大值及最小值

(

if(*p<*(pi+i))〃找出数组中的最大数的地址

P=pi+i;

if(*q>*(pi+i))〃找出数组111的最小数的地址

q=pi+i;

}

printf("max=%d,min=%d\n",*p,*q);〃输出最大数与最小数看看上面程序是否正确

if(p==pi&&q==(pi+9))

(

t=*p;〃将最大数备份

*p=*(pi+9);〃将最后一个数放在曾经的最大数的地址内

*(pi+9)=t;〃将最后•个数放在曾经的最大数的地址内

/*if语句防止当上面条件成立时下面的语句会先将两数交换后面有将两数换回

有兴趣可以将上面语句屏蔽掉输入满足上面条件的数试试看*/

else

(

t=*p;〃将最大数备份

*p=*(pi+9);〃将最后一个数放在曾经的最大数的地址内

*(pi+9)=t;〃将最后•个数放在曾经的最大数的地址内

t=*q;/*下面按照上面思路对最小数与最前面的数进行交换*/

*q=*pi;

*pi=t;

)

voidmain()

(

inta[10];〃定义数组

intk;

for(k=0;k<10;k++)

scanf("%d",&a[k]);〃循环输入10个数

change(a);〃调用函数

for(k=0;k<10;k++)

printf("%4d",a[k]);〃对调用函数后的结果进行输出

printf("\n");

)

4.将一个3*3的数组转置

源代码

#include<stdio.h>

voidchange(inta[3]⑶)

(

int*p=a[0];〃定义指针变量并将它指向数组列指针的首地址

inti,j;

printff'Thenthenumberare:\n");

〃运用循环直接将输出的数组的行列坐标转换

for(i=0;i<3;i++)

(

for(j=0;j<3;j++)

printf("%4d”,*(p+3*j+i));〃将原本应该输出变为输出即实现了数组的转

printf("\n");

)

)

voidmain()

intb⑶⑶;〃定义数组

intk,f;

for(k=0;k<3;k++)

for(f=0;f<3;f++)

scanf(”%d,&b[k][f]);〃输入数

printf("Thenumberare:\n");

for(k=0;k<3;k++)〃这段代码是将你输入的数组打出来看看方便与后面函数执行后数组

的变化进行对比

(

for(f=0;f<3;f++)

printf("%4d",b[k][f]);

printf("\n");

}

change(b);〃调用函数

)

5.计算字符串的长度

源代码

#include<stdio.h>

intlon(char*p)〃定义函数,将指针P指向字符串的首地址

(

intk;

for(k=l;*p!=W;p++)〃在P没有指向结束符前对K累加

k++;

return(k);〃返回K值

)

voidmain()

(

intt;

charch[100];〃定义一个字符串

gets(ch);〃输入字符

t=lon(ch);

printf("ltis%d\n",t);

)

6.输入•行字符将其中的字符从小到大输出

源代码

#include<stdio.h>

#include<string.h>

voidchange(char*p,intk)〃定义函数,使指针指向字符串数组的首地址

inti,j;

chart;

〃运用简单冒泡排序法排序

for(i=l;i<k;i++)

for(j=0;j<k-i;j++)

if(*(p+j)>*(p+j+l))

(

t=*(p+j);

*(p+j)=*(p+j+l);

*(p+j+l)=t;

)

)

)

voidmain()

(

charch[100);〃定义一个字符串

intn;

gets(ch);

n二strlen(ch);〃测量字符串的长度

change(ch,n);〃调用函数

puts(ch);〃输出调用函数后的结果

第九章结构体

1.定义一个结构体通过指针输入和输出

源代码

#include<stdio.h>

voidmain()

(

structstu

(

intnum;

charname[20];

intage;

}st⑶,*p;

p=st;

inti;

for(i=0;i<3;i++)

(

scanf("%d"z&st[i].num);

getchar();

gets(st[i].name);

scanf(”%cT,&st[i].age);

)

printf("No.\t\tName\tAge\n");

for(;p<st+3;p++)

printf("%d\t%s\t%d\n",p->num/p->name,p->age);

)

2•建立一个包括学生姓名,性别,年龄,一门课成绩的结构体,输出考分最高的学生个人信

息。

源代码

#include<stdio.h>

voidmain()

(

structstu

(

charname[20];

intnum;

charsex;

intage;

intscore;

}st[45],*p,*q;

P=st;

inti;

intn;

printf("pleaseinputthenumberofstudent:\n");

scanf(”%d,&n);

getchar();

for(i=0;i<n;i++)

(

printf("pleaseinputname:");

gets(st[i].name);

printf("pleaseinputnumber:");

scanf("%d”,&st[i].num);

getchar();

printf("pleaseinputsex:");

scanf(“%c”,&st[i].sex);

printf("pleaseinputage:");

scanf("%d"z&st[i].age);

printf("pleaseinputscore:");

scanf("%d",&st[i].score);

getchar();

}

printf("\t\tName\t\tNo.\t\tSex\tAge\tscore\nH);

for(i=0,p=st,q=st;i<n;i++)

if(q->score<(p+i)->score)

q=P+i;

printf("Thebeststudentis

%s\t%d\t\t%c\t%d\t%d\n",q->namezq->num,q->sex/q->age/q->score);

)

3.•个45人班级有两门课,求所有成绩中的最高成绩,及对应的姓名,学号课程编号,分

别求两门课的平均成绩,并找出两门课都低于平均分的学生信息,按1课程成绩从高到低排

序。(45人太多,本人改成了5人,只需将里面的5全部改成45即可)

源代码:

#include<stdio.h>

structstu_type

(

charname[20];

intnum;

floatscore[2];

};

voidmaxnum(structstu_typestu[5])

(

intij,maxi,maxj;

floatmax;

max=stu[0].score[0];

for(i=0;i<5;i++)

(

for(i=0;i<5;i++)

(

for(j=0;j<2;j++)

if(stu[i].score[j]>max)

maxi=i;

maxj=j;

)

}

printf("Thebeststudentsis:\n");

printf("Name\tnum\tclass\n");

printf("%s\t%d\t%d\n"/stu[maxi].name,stu[maxi].num/maxj+l);

)

voidave(structstu_typestu[5])

(

floatkl=0,k2=0,k=0;

inti;

for(i=0;i<5;i++)

{

kl+=stu[i].score[0];

k2+=stu[i].score[l];

)

kl=kV5;

k2=kg

printf("pingjunl:%f\n",kl);

printf("pingjun2:%f\n”,k2);

printf("Thefailedstudientis

for(i=0;i<5;i++)

if(stu[i].score[0]<kl&&stu[i].score[l]<k2)

printf("%7s\t%d\n"/stu[i].name/stu[i].num);

else

k++;

)

if(k==O)

printf("Noone!\n");

}

voidpaixu(structstu_typestu[5])

(

inti,j;

structstu_typet;

for(i=0;i<4;i++)

for(j=0;j<5-i;j++)

if(stu[j].score[0]<stu[j+1].score[0])

(

t=stu[j];

stu[j]=stu[j+l];

stuO+l]=t;

}

printf("Name\tnum\tscorel\tscore2\n");

for(i=0;i<5;i++)

',

printf(%s\t%d\t%f\t%f\n"/stu[i].name/stu[i].num/stu[i].score[0]zstu[i].score[l]);

)

voidmain()

(

structstu_typestu[5];

intij;

for(i=0;i<5;i++)

{

scanf("%s",&stu[i].name);

scanf("%d",&stu[i].num);

for(j=0;j<2;j++)

scanf(”%f”,&stu[i].score[j]);

getchar();

}

paixu(stu);

maxnum(stu);

ave(stu);

4.输入一个字符串用链表的形式储存,没个结点的数据域放一个字符,最后输出链表中的全

部字符。

源代码

#include<stdio.h>

#include<stdlib.h>

structnode

(

charch;

structnode*next;

);

intmain()

(

charsh;

structnode*head/*p,*r;

head=(structnode*)malloc(sizeof(structnode));

p=head;

while(scanf("%c"/&sh)&&sh!='\n')

{

r=(structnode*)malloc(sizeof(structnode));

r->ch=sh;

p->next=r;

P=r;

}

p->next=NULL;

p=head;

while(l)

(

if(p->next==NULL)

break;

p=p->next;

printf(”%c”,p・>ch);

)

printf("\n");

return0;

}

5,设有一个单项链表,现欲将其倒置,试编写一函数实现此功能。

源代码

#include<stdio.h>

#include<stdlib.h>

structnode

(

intdata;

structnode*next;

);

structnode*nizhi(structnode*h,intn)

printf("????\n");

inti,j,k,a;

structnode*s,*r,*q,*f;

k=n/2;

r=h;

for(i=l;i<=k;i++)

(

s=r->next;

for(j=l,f=h;j<=n+l-i;j++)

(

q=f->next;

f=q;

)

a=s->data;

s->data=q->data;

q->data=a;

r=s;

)

return(h);

)

intmain()

(

intnJ;

intnum;

structnode*head/*p,*r;

head=(structnode*)malloc(sizeof(structnode));

p=head;

scanf("%d",&n);

for(i=l;i<=n;i++)

{

scanf("%d",&num);

r=(structnode*)malloc(sizeof(structnode));

r->data=num;

p->next=r;

P=r;

)

p->next=NULL;

p=head;

while(l)

(

if(p->next==NULL)

break;

p=p->next;

printf("%d"zp->data);

)

printf(H\n");

head=nizhi(head,n);

while(l)

(

if(head->next==NULL)

break;

head=head->next;

printf("%d",head->data);

)

return0;

}

6.已知一个无符号的整数占4个字节内存,现欲从低位存储地址开始,将其每个字节作为单

独的一个ASCII码字符输出,使用共用体实现上述转换

源代码

#include<stdio.h>

voidmain()

(

unionchan

(

longa;

charch[4];

}zi;

scanf("%xn,&zi.a);

,,

printf(%c%c%c%c"/zi.ch[0]/zi.ch[l]/zi.ch[2]/zi.ch[3]);

)

7,已知一个长度为2字节的整数,欲将其高位字节与•低位字节交换后输出,使用共用体实现。

源代码

#include<stdio.h>

voidmain()

(

unionchan

{

inta;

charch[2];

}u;

scanf("%x",&u.a);

charsh;

sh=u.ch[0];

u.ch[0]=u.ch[l];

u.ch[l]=sh;

printf("%x\n",u.a);

}

8.用枚举类型Score,用枚举元素代表成绩等级,通过键入•个学生的成绩然后输出等级

源代码

#include<stdio.h>

voidmain()

(

inta,k;

enumscore{excellent=l,good/general/fail};

scanf("%d”,&a);

if(a>=90)

k=l;

if(a>=80&&a<=89)

k=2;

if(a>=60&&a<=79)

k=3;

if(a<60)

k=4;

switch(k)

(

caseexcellent:printf("excellent\n");break;

casegood:printf("good\n");break;

casegeneral:printf("general\n");break;

casefail:printf("fali\n");break;

)

)

第十章位运算

1.编写一函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0)。

函数太用形式为为该位(两个字节)中的数据值,

getbits(value,nl,n2)oValue16nl

为欲取出的起始位,n2为欲取出的结束位。如:getbits(0101675,5,8)表示取出8进制

数101675从左面起第5-8位。

源代码

程序运行结果图10-1

2.写一函数,对一个16二进制数取出奇数位

源代码

/include<stdio.h>

voidextracter(intnumber)

(

for(inti=0;i<16;i+=2)

(

//0x8000:1000,0000,0000,0000

if((0x8000»i)&number)

printf("l");

else

printf("O");

)

printf("\n");

)

intmain()

(

intn;

scanf("%d"z&n);

extracter(n);

return0;

)

3,设计一个函数,使给出一个数的源码,能够得到这个数的补码。

源代码

#include<stdio.h>

#include<string.h>

intmain()

(

chara[20],b[20];

intlenj;

scanf("%s",a);

len=strlen(a);

if(a[O]=='O')

strcpy(b,a);

else

(

b[0]=a[0];

for(i=l;i<len;i++)

b[i]=(char)('l'+'O,-a[i]);

b[len]='\0';

b[len-l]+=l;

for(i=len-l;i>0;i-)

(

b[i]=(char)((b[i]-'0')%2+'0,);

b[i-l]+=(b[i]-'0')/2;

)

)

printf("%s\n",b);

return0;

第十一章文件

1.设计程序将26个英文大写字母顺序写入文件result.txt中。

源代码

#include<stdio.h>

#include<process.h>

intmain()

(

charch[27];〃字符串变量

chartemp;〃排序时备份变量

inti,j;

FILE*fp;

for(i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论