上学期C语言作业1.docx
- 文档编号:4965495
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:9
- 大小:22.34KB
上学期C语言作业1.docx
《上学期C语言作业1.docx》由会员分享,可在线阅读,更多相关《上学期C语言作业1.docx(9页珍藏版)》请在冰豆网上搜索。
上学期C语言作业1
2011年上学期C语言作业
习题1
1.1请根据自己的认识,写出C语言的主要特点。
1.2C语言的主要用途是什么?
它和其他高级语言有什么异同?
1.3写出一个C程序的构成。
1.4C语言以函数为程序的基本单位,有什么好处?
习题2
2.1请将c语言的数据类型和其他高级语言的数据类型做比较。
c有哪些特点?
2.2C语言为什么要规定对所有用到的变量要“先定义,后使用”。
这样做有什么好处?
2.3请将下面各数用八进制和十六进制数(补码)表示:
(1)10
(2)32 (3)75 (4)-617
(5)-111(6)2483(7)-28654(8)21003
2.4将以下3个整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。
变量的类型
25-232769
int型(16位)
long型(32位)
short型(16位)
signedchar(8位)
unsignedint型
unsignedlong型
unsignedshort型
unsignedchar型
2.5字符常量与字符串常量有什么区别?
2.6写出以下程序运行的结果。
main()
{charc1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
2.7要将“china”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
例如,字母“a”后面第4个字母是“e”,用“e”代替“a”。
因此,“china”应译为“glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为‘c’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘g’、‘l’、‘m’、‘r’、‘e’,并输出。
2.8例2.6能否改成如下:
main()
{intc1,c2;(原为charc1,c2)
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
分析运行时会显示什么信息?
为什么?
2.9求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
2.10写出程序运行结果。
main()
{inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
2.11写出下面表达式运算后a的值,设原来a=12。
设a和n已定义为整型变量。
(1)a+=a
(2)a-=2
(3)a*=2+3
(4)a/=a+a
(5)a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
习题3
3.1C语言中的语句有哪几类?
C语句与其他语言中的语句有哪些异同?
3.2怎样区分表达式和表达式语句?
C语言为什么要设表达式语句?
什么时候用表达式,什么时候用表达式语句?
3.3C语言为什么要把输入输出的功能作为函数,而不作为语言的基本部分?
3.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=‘a’,c2=‘b’。
想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
要求输出的结果如下:
a=3b=4c=5
x=1.200000,y=2.400000,z=-3.600000
x+y=3.60y+z=-1.20z+x=-2.40
u=51274n=128765
c1='a'or97(ascii)
c2='b'or98(ascii)
3.5请写出下面程序的输出结果:
main()
{inta=5,b=7;
floatx=67.8564,y=-789.124;
charc='a';
longn=1234567;
unsignedu=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","coMputer","coMputer");
}
3.6用下面的scanf函数输入数据,使a=10,b=20,c1='a',c2='a',x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);3.7设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序。
3.7输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9(f-32)
输出要有文字说明,取2位小数。
习题4
4.1写出下面各逻辑表达式的值。
设a=3,b=4,c=5。
(1)a+b>c&&b==c
(2)a||b+c&&b-c
(3)!
(a>b)&&!
c||1
(4)!
(x=a)&&(y=b)&&0
(5)!
(a+b)+c-1&&b+c/2
4.2有3个整数a、b、c,由键盘输入,输出其中最大的数。
4.3有一函数:
x (x<1)
y=2x-1 (1≤x<10)
3x-11 (x≥10)
写一程序,输入x,输出y值。
4.4给一个不多于5位的正整数,要求:
①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数为321,应输出123。
4.5企业发放的奖金根据利润提成。
利润I低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元(100000<I≤200000)时,低于10万元的部分按10%提成,高于100000元的部分,可提成7.5%;200000<I≤400000时,低于20万的部分仍按上述办法提成(下同)。
高于20万元的部分5%提成;400000<I≤600000时,高于40万元的部分按3%提成;600000<I≤1000000时,高于60万的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。
从键盘输入当月利润I,求应发奖金总数。
要求:
(1)用if语句编程序;
(2)用Switch语句编程序。
4.6有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1。
见图5.16。
这4个塔的高度为10m,塔以外无建筑物。
今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
习题5
5.1输入两个正整数m和n,求其最大公约数和最小公倍数。
5.2输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
5.3求Sn=a+aa+aaa+…+aa…an个a之值,其中a是一个数字。
例如:
2+22+222+2222+22222(此时n=5),n由键盘输入。
5.4编写程序求1!
+2!
+3!
+4!
+…+20!
。
5.5打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一水仙花数,因为153=13+53+33。
5.6一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程序找出1000之内的所有完数,并按下面格式输出其因子:
6itSfactorSare1,2,3
5.7有一分数序列
2/1,3/2,5/3,8/5,13/8,21/13,…
求出这个数列的前20项之和。
5.8猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,就只剩一个桃子了。
求第一天共摘多少桃子。
5.9用迭代法求。
求平方根的迭代公式为
要求前后两次求出的x的差的绝对值小于10-5。
5.10打印出以下图案。
*
***
*****
*******
*****
***
*
习题6
6.1用筛法求100之内的素数。
6.2用选择法对10个整数排序。
6.3求一个3×3矩阵对角线元素之和。
6.4已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中
6.5将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1。
要求改为1,4,5,6,8。
6.6打印出以下的杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
………………
6.7找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
6.8有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
6.9有一行电文,已按下面规律译成密码:
a→Za→z
b→Yb→y
c→Xc→x
……
即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。
非字母字符不变。
要求编程序将密码译回原文,并打印出密码和原文。
6.10编一程序,将两个字符串连接起来,不要用Strcat函数。
6.11编一个程序,将两个字符串S1和S2比较,如果S1>S2,输出一个正数;S1=S2,输出0;S1 不要用Strcmp函数。 两个字符串用gets函数读入。 输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。 例如,“a”与“c”相比,由于“a”<“c”,应输出负数,由于“a”与“c”的ASCII码差值为2,因此应输出“-2”。 同理: “and”和“aid”比较,根据第2个字符比较结果,“n” 比“i”大5,因此应输出“5”。 6.12编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。 不用strcpy函数。 拷贝时,‘\0’也要拷贝过去。 ‘\0’后面的字符不拷贝 习题7 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 7.2求方程ax2+bx+c=0的根,用3个函数分别求当b2-4ac大于0、等于0和小于0时的根并输出结果。 从主函数输入a、b、c的值。 7.3写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。 7.4写一函数,使给定的一个二维数组(3×3)转置,即行列互换。 7.5写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。 7.6写一函数,将两个字符串连接。 7.7写一函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。 如输入1990,应输出“1990”。 7.8编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。 7.9写一函数,输入一行字符,将此字符串中最长的单词输出。 7.10写一函数,用“起泡法”对输入的10个字符按由小到大顺序排列。 7.11用弦截法求根。 方程为ax3+bx2+cx+d=0,系数a、b、c,d的值依次为1,2,3,4,的值依次为1,2,3,4,由主函数输入。 求x在1附近的一个实根。 求出根后由主函数输出。 7.12输入10个学生5门课的成绩,分别用函数求: ①每个学生平均分;②每门课的平均分;③找出最高的分数所对应的学生和课程;④求平均分方差: σ=1n∑x2i-(∑xi/n)2,xi为某一学生的平均分。 7.13写几个函数: ①输入10个职工的姓名和职工号: ②按职工号由小到大顺序排序,姓名顺序也随之 调整;③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。 7.14写一函数,输入一个十六进制数,输出相应的十进制数。 7.15给出年、月、日,计算该日是该年的第n天。 习题8 本章习题均要求用指针方法处理。 8.1输入3个整数,按由小到大的顺序输出。 8.2输入3个字符串,按由小到大的顺序输出。 8.3输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 写3个函数: ①输入10个数;②进行处理;③输出10个数。 8.4有一字符串,包含n个字符。 写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。 8.5输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少? 8.6写一函数,将一个3×3的矩阵转置。 8.7将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放),写一函数实现之。 用main函数调用。 8.8在主函数中输入10个等长的字符串。 用另一函数对它们排序。 然后在主函数输出这10个已排好序的字符串。 8.9用指针数组处理上一题目,字符串不等长。 8.10将n个数按输入时顺序的逆序排列,用函数实现。 8.11有一个班4个学生,5门课。 ①求第一门课的平均分;②找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。 分别编3个函数实现以上3个要求。 8.12输入一个字符串,内有数字和非数字字符,如a123x45617960? 302taB5876将其中连续的数字作为一个整数,依次存放到一数组a中。 例如,123放在a[0],456放在a[1]…统计共有多少个整数,并输出这些数。 8.13写一函数,实现两个字符串的比较。 即自己写一个strcmp函数,函数原型为int strcmp(char*p1,char*p2);设p1指向字符串S1,p2指向字符串S2。 要求当S1=S2时,返回值为0,若S1≠S2,返回它们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14)。 如果S1>S2,则输出正值,如S1<S2,则输出负值。 8.14编一程序,打入月份号,输出该月的英文月名。 例如,输入“3”,则输出“March”,要求用指针数组处理。 8.15用指向指针的指针的方法对5个字符串排序并输出。 8.16用指向指针的指针的方法对n个整数排序并输出。 要求将排序单独写成一个函数。 5个整数和n在主函数中输入。 最后在主函数中输出。 习题9 9.1定义一个结构体变量(包括年、月、日)。 计算该日在本年中是第几天? 注意闰年问题。 9.2写一个函数days,实现上面的计算。 由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。 9.3编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。 9.4在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。 9.5有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。 9.7写一函数free,将上题用new函数占的空间释放。 free(p)表示将p(地址)指向的单元以后的内存段释放。 9.8已有a、b两个链表,每个链表中的结点包括学号、成绩。 要求把两个链表合并,按学号升序排列。 9.9有两个链表a和b,设结点中包含学号、姓名。 从a链表中删去与b链表中有相同学号的那些结点。 9.10建立一个链表,每个结点包括: 学号、姓名、性别、年龄。 输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上学 语言 作业