C语言实验6(附参考答案)
c语言实验报告(附答案版)
1、熟练掌握while,do—while,for语句实现循环的方法,包括如何正确地设定循环条件,如何控制循环的次数。
2、掌握break语句与continue语句的使用方法。
3、熟悉循环的嵌套以及从循环体内退出循环的处理。
4、理解什么是循环程序结构。
三、实验指导
为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
实验1简单判定性问题求解
一、实验学时
完成本实验需4学时。
二、实验目的
1、阅读程序题
(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;
(2)掌握不同的类型数据之间赋值的规律;
(3)掌握数据在内存中的存储方式;
(4)学会输入、输出函数的基本格式和使用方法;
(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。
1)解题分析:解决问题的关键算法为求圆的面积并按要求输出。循环求圆的面积area,若area<40,则用continue语句提前结束本次循环并开始新一轮循环,若area>90,则用break语句跳出循环。
2)算法流程图如图2-1:
3)综合分析
需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break和continue语句。
(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应关系如下表:
百分制
90-100
80-89
70-79
60-69
<60
等级制
优
良
中
差
劣
具体要求如下:
1)用switch语句实现该功能;
数据结构(c语言)第6章二叉树课练答案(含完整实验程序刘玉保留
第6章树和二叉树自测卷解答姓名班级一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)(√)1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
(×)2.二叉树中每个结点的两棵子树的高度差等于1。
(√)3.二叉树中每个结点的两棵子树是有序的。
(×)4.二叉树中每个结点有两棵非空子树或有两棵空子树。
(×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
(应当是二叉排序树的特点)(×)6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。
(应2i-1)(×)7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
(×)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
(应2i-1)(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(正确。
用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。
由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。
)即有后继链接的指针仅n-1个。
(√)10. 〖01年计算机系研题〗具有12个结点的完全二叉树有5个度为2的结点。
最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5二、填空(每空1分,共15分)1.由3个结点所构成的二叉树有5种形态。
2. 【计算机研2000】一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。
注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。
3.一棵具有257个结点的完全二叉树,它的深度为9。
(注:用⎣ log2(n) ⎦+1= ⎣ 8.xx ⎦+1=94.【全国专升本统考题】设一棵完全二叉树有700个结点,则共有350个叶子结点。
C语言实验册完整答案
实验2答案五.程序改错#include<stdi o.h>int main(void){int x=3,y;y = x*x;printf("%d = %d * %d\n",y,x,x); /* 输出*/printf("%d * %d = %d\n",x,x,y);return 0;}六、一般编程题6.1#include<stdio.h>int main(void){int x,y;printf("Input x: ");scanf("%d",&x);printf("Input y: ");scanf("%d",&y);printf("%d + %d = %d\n",x,y,x+y);printf("%d - %d = %d\n",x,y,x-y);printf("%d * %d = %d\n",x,y,x*y);printf("%d / %d = %d\n",x,y,x/y);printf("%d %% %d = %d\n",x,y,x%y);return 0;}6.2#include<stdio.h>int main(void){ float x; double y;printf("Input x: ");scanf("%f",&x);printf("Input y: ");scanf("%lf",&y);printf("%f + %f = %f\n",x,y,x+y);printf("%f - %f = %f\n",x,y,x-y);printf("%f * %f = %f\n",x,y,x*y);printf("%f / %f = %f\n",x,y,x/y);return 0;}6.3#include<stdio.h>int main(void){ char c;printf("Input c: ");scanf("%c",&c);printf("%c\n",c+32);return 0;}6.4#include<stdio.h>int main(void){int celsius,fahr;fahr = 150;celsius = 5*fahr/9 - 5*32/9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 如果使用公式9)32(5-⨯=f c 计算结果不一样,celsius = 65。
C语言实验6(附参考答案)
实验6:运算符与表达式(5)实验目的:1、熟悉字符的输入输出和格式化的输出,了解基本规则。
2、进一步熟悉C语言程序的编辑、编译、连接和运行的方法。
实验内容:1、 getchar函数的作用是从终端输入____1______个字符。
2、如果从键盘输入字符’a’并按回车键,请写出以下程序运行效果_____a_____。
main(){putchar(getchar());}3、以下程序的输出结果为main(){char c=‘x’;printf(“c:dec=%d,oct=%o,ASCII=%c\n”,c,c,c);}4、以下程序的输出结果为。
main(){int x=1,y=2;printf(“x=%d y=%d *sum*=%d\n”,x,y,x+y);printf(“10 Squared is:%d\n”,10*10);}5、以下程序的输出结果为____________________。
#include <stdio.h>main(){float a=123.456; double b=8765.4567;printf(“(1) %f\n”,a);printf(“(2) %14.3f\n”,a);printf(“(3) %6.4f\n”,a);printf(“(4) %lf\n”,b);printf(“(5) %14.3lf\n”,b);printf(“(6) %8.4lf\n”,b);printf(“(7) %.4f\n”,b);}二、程序设计题1、若a=3,b=4,c=5,x=1.2,y=2.4,u=51274,n=128765,c1=’a’,c2=’b’。
想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
要求输出的结果如下:□表示空格a=□3□□b=□4□□c=□5x=1.200000,y=2.400000,z=-3.600000x+y=□3.60□□y+z=-1.20□□z+x=-2.40u=□51274□□n=□□□128765c1=’a’□or□97(ASCII)c2=’B’□or□98(ASCII)2、假定有:int a=1,b=2,设计一个程序,将变量a和b的值互换并且输出来。
C语言实训题及参考答案
printf("\t\t *** choose function ************\n\n"); printf("\t\t *** 1 Enter new data ************\n\n"); printf("\t\t *** 2 Modify data ************\n\n"); printf("\t\t *** 3 Search by people.xueli and num*****\n\n");
# include <stdio.h>
enter() { int i,n; printf("How many people(0-%d)?:",N-1); scanf("%d",&n); printf("\n Enter data now\n\n"); for(i=0;i<n;i++) { printf("\n Input %dth people record.\n",i+1); input(i); } if(i!=0)save(n); printf_back(); }
C语言上机实验
实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。
2.熟悉编译环境。
3.初步熟悉C语言程序的语法规定。
4.了解简单函数的使用方法。
实验内容:1.编程且上机运行:求3个整数的和。
2.编程且上机运行:求2个数的和、差、积和商。
3.编程且上机运行:输入3个数,求最大值。
4.编程且上机运行:输入圆的半径,求圆的面积和周长。
5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。
实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。
实验过程:实验结果:参见各种类型的存储实现描述。
2.实验目的:了解混合类型计算中类型的转换规则。
实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。
注意unsigned int和int数据运算时类型转换的方向。
实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。
C实验报告6参考答案
《高级语言程序设计》实验报告班级: 学号: 姓名: 成绩:实验6 数组程序设计一、实验目的1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2. 掌握字符数组和字符串函数的使用。
3. 掌握与数组有关的算法。
二、实验内容1(1)下列程序的功能为:为指定的数组输入10个数据,并求这些数据之和。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>void main(){int n=10,i,sum=0;int a[n]; int a[10];for(i=0;i<10;i++){scanf("%d",a[i]); scanf("%d",&a[i]);sum=sum+a[i];}printf("sum=%d\n",sum);}(2)下列程序的功能为:将字符串b 连接到字符串a 。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>void main( ){ char a[]="wel",b[]="come"; char a[20]="wel",b[]="come";int i,n=0;while(!a[n]) n++; while(a[n] != '\0') n++;for(i=0;b[i]!='\0';i++)a[n+i]=b[i];a[n+i]=’\0’;printf("%s\n",a);}(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
纠正程序中存在的错误,以实现其功能。
程序以文件名保存。
#include<>#define N 4#define M 4main(){for (i=0;i<N;i++)for (j=0;j<M;j++)scanf("%d",&a[i][j]);flag2=0;for (i=0;i<N;i++){max=a[j][0]; max=a[i][0];for (j=0;j<M;j++)if (a[i][j]>max) if (a[i][j]>=max){max=a[i][j];maxj=j;}for (k=0,flag1=1;k<N&&flag1;k++)if (max>a[k][maxj])flag1=0;if (flag1){printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if ( flag2) if (! flag2)printf("\nThere is no saddle point in the Matrix\n");}2.程序填空题(1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。
C语言实验答案(2-6)
x=10,y=10,z=10 x=8,y=10,z=16 c1=M,c2=4d,c3=115,c4=77 c1=M,c2=M,c3=M,c4=M c1=77,c2=77,c3=77,c4=77 c=m,c=109
(2)程序运行结果
输入:
1,2 3,4 5,6 7,6 a,b
运行一: 1 0,1,0,0
运行二: 2 0,0,1,1
运行三: 3 0,0,0,1
运行四: 4 1,0,0,0
运行五: 5 1,0,0,0
输入不同数据以后,a,b,c,d 的结果不一样,分析其原因主要在于:输入值不同, switch 语句进入的 case 分支不同;当分支语句中未出现 break 时 switch 语句会继 续继续进入下一 case 分支分支执行,直到遇到 break 或最后。
实验三
一、验证性试验 15M5.55
b=25,y=2.6,c2=N a= 15,b=25 x=5.550000,y=2.600000 c1=M,c2=N 在 scanf("%d%c%f",&a,&c1,&x);的输入中,由于输入字符型数据时空格会作为 有效输入字符处理,所以空格不能作为数据输入的分隔符,在输入 a 的值后,接 下来输入的应是一个字符型,若之间用空格则此空格将被视为一个字符,但若是 先输字符再输一个数,其间就可以用空格。 二、程序填空: ①a/b ②a%b ③quot,resi 三、程序改错: scanf("%f %f ",&x,&y) 改为 scanf("%d%d",&x,&y); printf("%d+%d=%d",x+y) 改为 printf("%d+%d=%d",x,y,x+y) ; (2) getchar(x) 改为 x=getchar() y=x-32 改为 y=x+32 四、设计性试:
《C语言程序设计》实验报告实验六
《C语言程序设计》实验报告实验六使用指针的程序设计学号姓名一、实验目的1、掌握指针的概念,会定义和使用指针变量;2、能正确使用数组的指针和指向数组的指针变量;3、熟悉指针作为函数参数的定义和调用方法;4、能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容1.分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
#include <stdio.h>void main(){int *p1,*p2,*p;int a,b;printf("Input a b please");scanf("%d%d",&a,&b);p1=&a;p2=&b;if(a>b){ p=p1;p1=p2;p2=p;}printf("*p1=%d, *p2=%d\n",*p1,*p2);printf("a=%d, b=%d\n",a,b);}『运行结果:』输入1,2得:*p1=1,*p2=2a=1,b=2输入2,1得:*p1=1,*p2=2a=2,b=1输入56,123得:*p1=56,*p2=123a=56,b=1232.下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even 返回偶数之和。
请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。
#include <stdio.h>#define N 10void fun(int *a,int n,int *odd,int *even){int m;*odd=0; *even=0;for(m=0;m<n;m++)if(*(a+m)%2==0)*even+=*(a+m);else*odd+=*(a+m);}void main(){int a[N]={1,10,2,3,19,6},i,n=6,odd,even;printf("The original data is:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));printf("\n\n");fun(a,n,&odd,&even);printf("The sum of odd numbers:%d\n",odd);printf("The sum of even number:%d\n",even);}『运行结果:』3.编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字符串str中和字符ch相等所有字符,然后输出字符串str。
C语言实验题及参考答案
实验一1、计算整数各位数字之和(10 分)输入一个3位正整数,将其每一位的数字相加,输出和。
输入格式:输入一个3位正整数。
变量数据类型为unsigned。
输出格式:输出整数每一位相加后的整数和。
输入样例:输出样例:【参考答案】#include ""int main(){ unsigned int a,ge,shi,bai,sum;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;sum=ge+shi+bai;printf("%d\n",sum);return 0;}2、计算代数表达式(10 分)求:输入格式:输入角度x。
变量数据类型为double。
π为。
输出格式:输出y的值,精确到小数点后2位。
输入样例:输出样例:【参考答案】#include <>#include <>#define PIint main(){double x,y;scanf("%lf",&x);y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));printf("%.2lf",y);return 0;}3、逆序的三位数(10 分)程序每次读入一个正3位数,然后输出按位逆序的数字。
注意:当输入的数字含有结尾的0时,输出不应带有前导的0。
比如输入700,输出应该是7。
输入格式:每个测试是一个3位的正整数。
输出格式:输出按位逆序的数。
输入样例:输出样例:【参考答案】#include ""int main(){ int a,ge,shi,bai,b;scanf("%d",&a);ge=a%10;shi=a/10%10;bai=a/100;b=ge*100+10*shi+bai;printf("%d\n",b);return 0;}4、求整数均值(10 分)本题要求编写程序,计算4个整数的和与平均值。
C语言程序设计实验六函数答案《西北民大电气学院》
实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。
实验6+答案
华北水院高级语言程序设计(C语言)实验报告2011—2012学年第二学期 2011级专业班级:学号:姓名:一、实验题目:指针二、实验目的:1. 理解指针的概念及指针的运算及用法。
2. 掌握指针作为函数参数的作用。
3. 掌握指针和数组的关系及通过指针引用数组元素的方法。
4. 掌握字符指针和字符串之间的关系。
三、实验内容1 编写程序,从键盘读入3个int型数到变量i、j、k中,然后通过函数调用将它们的值依次交换,即i赋给j、j赋给k、k赋给i。
程序代码:void fun(int *x,int *y,int *z){int t;t=*x;*x=*y;*y=*z;*z=t;return;}#include"stdio.h"void main(){int i,j,k;printf("i j k");scanf("%d%d%d",&i,&j,&k);fun(&i,&j,&k);printf("i=%d,j=%d,k=%d",i,j,k);}『运行结果:』2 读入两个字符串S1、S2,输出两者按如下方式合并成的字符串S(要求用字符指针)。
设S1=a 1a 2…a n ,S2=b 1b 2…b m ,则1122n n 1122m m m+1n 1122n n n+1ma b a b a b (n=m)S=a b a b a b a a (n>m)a b a b a b b b (n<m)ìïïïïïíïïïïïîL L L L L 程序代码:#include"stdio.h"#include"string.h"void strinsert(char *s,char *s1,char *s2){char *t;t=s;while(*s1&&*s2){*s++=*s1++;*s++=*s2++;}if(*s1==0)while(*s++=*s2++);else if(*s2==0)while(*s++=*s1++);return ;}void main(){char a1[10],a2[20],a[30];gets(a1);gets(a2);strinsert(a,a1,a2);puts(a);}『运行结果:』。
C语言实验报告第6章答案
C语⾔实验报告第6章答案6.2基础实验⼀、程序分析分析以下程序段完成的功能,填写在序号后的空⽩处,并运⾏验证结果。
1. ⊙以下程序的运⾏结果是:_______s=12345↙____________________。
#includeint main( ){ inta[]={1,2,3,4,5},i,j=1,s=0;for(i=4;i>=0;i--){ s=s+a[i]*j;j=j*10;}printf(“ s= %d \n” , s );return 0;}2. 以下程序的运⾏结果是:_____7 5 3______________________。
#includeint main( ){ int k ;int a[3][3]={9,8,7,6,5,4,3,2,1};for(k=0;k<3;k++)printf(“%d ”,a[k][2-k]);return 0;}3. 以下程序的功能是:____查找最⼤值元素及下标_________________。
#includeint main( ){ int i, j ,x =0 ,y = 0 , m ;int a[3][3] = { 1, -2 , 0 , 4 , -5 , 6 , 2 , 4 };m = a [0][0] ;for (i=0 ;i < 3 ;i++)for (j = 0 ; j<3 ; j++ )if ( a[ i] [ j ] >m ){ m = a[ i ][ j ] ;x = i ;printf(“ ( % d , % d ) = % d \n”, x , y,m );return 0;} 运⾏结果:___(1 , 2 ) = 6↙_________________4. 以下程序的的运⾏结果是:__8,I am student!___________________。
#include int main( ){ char s1[50]= “I am ”;char s2[ ]=“student!” ;printf(“%d,”, strlen(s2) );strcat(s1,s2);printf(“%s\n”,s1);return 0;}5.以下程序的运⾏结果是:_______6_____________________。
C语言程序与设计 第6章 实验与习题答案
第6章指针及其应用6.3 实验实验任务1 指针的应用1(P194)1.验证性实验(1)输入并运行下面程序,回答题后问题。
# include <stdio.h>main (){ int a = 12 , b = 34 , s , *pa , *pb ;pa = &a ; pb = &b ; s = *pa + *pb ;printf ( " s = %d \n " , s ) ;}①程序的输出结果是s = 46。
②变量pa、pb与变量a、b的区别是pa、pb是指针变量。
③变量a的值是整数12,变量pa 的值是变量a的内存地址。
(2)输入并运行下面程序,回答题后问题。
# include <stdio.h>main (){ int a = 10 , b = 20 , *p = &a , *pa = &a , *pb = &b ;pa = pb ;printf ( " %d %d %d \n " , *p , *pa , *pb ) ;}①程序的输出结果是10 20 20。
②若把“pa = pb ;”改为“*pa = *pb ;”后,程序的输出结果是20 20 20。
(3)输入并运行下面程序,回答题后问题。
# include <stdio.h>main (){ int a[4] = {1 , 2 , 3 , 4 } , *p , i ; p = a ;for ( i = 0 ; i < 4 ; i ++ ){ * ( p + i ) = * ( p + i ) +1 ;printf ( " %d , " , a[i] ) ;}}①程序的输出结果是 2 ,3 ,4 ,5 ,。
②本例对数组的引用方法采用了指针变量指针法和数组名下标法。
(4)输入并运行下面程序,回答题后问题。
C语言程序设计实验六_答案
C语言程序设计实验六_答案1.编程实现:该程序的功能是:计算并输出S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5)例如,若从键盘给n输入20后,则输出为s=534.188884。
文件名:myf61.c【参考源程序】#includevoid main(){float t=1.0,s=1.;int i,n;scanf("%d",&n);for(i=2;i<=n;i++){t=t+sqrt(i);s=s+t;}printf("%f",s);}2.编程实现:将a数组中的n个数和b数组中逆序的n个数一一对应相加、求平方,其结果存放在c数组中。
文件名:myf62.c例如: 若a数组中的值是:1、3、5、7、8b数组中的值是:2、3、4、5、8输出结果c中存放的数据是81、64、81、100、100【参考源程序】:#define N 5void main(){ int a[N],b[N],c[N];int i;for(i=0;i<n;i++)< p="">scanf("%d",&a[i]);for(i=0;i<n;i++)< p="">scanf("%d",&b[i]);for(i=0;i<n;i++)< p="">{c[i]=a[i]+b[4-i];c[i]=c[i]*c[i];}for(i=0;i<n;i++)< p="">printf("%d ",c[i]);}3.用以下的递归公式求数列a0,a1,……,a19,递归公式为:a0=0;a1= l;a2=1;a i=a i-3十2a i-2+a i-1当i大于2时。
C语言实验报告 实验六 参考答案
实验六二维数值数组(参考答案)(1) 设计程序sy6-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。
算法分析:方阵主对角线上的元素,行下标和列下标相同;辅对角线元素,如果行下标为i,列下标就为2-i;参考答案:# include <stdio.h># include <stdlib.h># include <math.h># include <time.h>void main(){int a[3][3];int i,j,sum=0;srand( time( NULL ) );printf("矩阵:\n");for(i=0;i<3;i++) //用随机函数生成3行3列的二维数组并按矩阵格式输出{for(j=0;j<3;j++){a[i][j]=rand()%20;printf("%4d",a[i][j]);}printf("\n");}for(i=0;i<3;i++)sum=sum+a[i][i]+a[i][2-i];printf("该矩阵的正、反对角线元素之和为:%d\n",sum);}运行结果:(2) 设计程序sy6-2.c,找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于b数组中。
算法分析:按列序遍历二维数组,每列用打擂台的方法求最大数,N列则有N个最大值,分别存于b数组的对应元素中。
# include <stdio.h># include <stdlib.h># include <math.h># include <time.h># define N 4void main(){int a[N][N],b[N];int i,j;srand( time( NULL ) );printf("矩阵:\n");for(i=0;i<N;i++) //用随机函数生成N行N列的二维数组并按矩阵格式输出{for(j=0;j<N;j++){a[i][j]=rand()%20;printf("%4d",a[i][j]);}printf("\n");}for(j=0;j<N;j++) //外循环控制列下标{b[j]=a[0][j]; //假设每列的0行元素是最大数for(i=1;i<N;i++)if(b[j]<a[i][j])b[j]=a[i][j];}printf("该矩阵每列元素的最大值是:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");}运行结果:(3) 设计程序sy6-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。
2014湖南大学c语言实验题目及其答案 (6)
第六章位操作一.目的和要求1、C语言是一种系统描述语言,它支持通常需要用汇编语言才能完成的一些功能。
而位运算体现了C语言的这一特点。
2、了解位运算的特点,掌握它的使用方法。
二.相关知识1、位运算的概念所谓位运算是指二进制位的运算,它的运算对象只能是整型或字符型数据,不能是浮点型数据。
2、位运算及位操作赋值操作①按位与运算 &、 &=②按位或运算 |、 |=③按位异或运算 ^、^=④取反运算 ~⑤左移运算 <<、 <<=⑥右移运算 >>、 >>=3、位段可以用位运算符进行位操作,也可以用位段的方法来访问字节中的某些位。
所谓位段,是指以二进制位为单位定义长度的结构体类型中的成员。
位于同一结构体中的若干位段的集合,构成了具有某种意义的位结构体数据类型。
其一般定义形式为:struct 位结构体类型名{ 位段类型位段成员名1:位段长度;位段类型位段成员名2:位段长度;…位段类型位段成员名n:位段长度;}位结构体变量;其中,“位结构体类型名”是该结构体的名字;“位段类型”表示其后位段成员的数据类型,一个位段只能被说明为int、unsigned或signed中的一种,由于单个位不可能有符号,所以长度为1的位段只能为unsigned类型;“位段长度”表示位段所占二进制位数。
三.实验练习实验练习 1:编写程序实现,将无符号整数x向左环移n位。
即将x中原来右面的32-n位左移n位,而原来左端n位移到最右面n位。
假设用4个字节存放一个无符号整数。
本练习要求在封闭式实验课中在助教或者讲师的指导下完成。
本练习分成6个部分:1.实验目的2.问题描述3.事例输出4.程序模板5.问题解答提示6.后续问题和任务程序模板是完整的、可实际运行的C程序,其中关键的一行或者多行代码已经替换为注释。
请先阅读问题描述,分析事例输出;然后研究模板的代码。
参考问题解答提示,用C代码替换/* */注释。
C语言test6答案
1.阅读、调试、运行程序,比较阅读的结果和运行的结果(1)运行结果:(2)运行结果:(3)运行结果:(4)运行结果:(5)运行结果:2. 完善程序,并调试运行1) (1) s[i]!= (2) || (3) s[j]=s[i];2)(1)i=0 (2)'\0' (3)str1[i]-str2[i] 3)(1)j+=2 (2)a[i]>a[j]4)(1)i=1(2)a[i-1](3)a[i]5)(1)&a[i] (2)a[0](3)a[i]6)(1)a[N] (2)a[i]!=k (3)i<N3. 修正程序,并调试运行(1)修正的程序:/**********found**********/else if('0'<=s[i]&&s[i]<='9') /**********found**********/printf("%4d",b[k]);}(2)修正的程序/**********found**********/char a[10];/**********found**********/put (s[i]);(3)修正的程序/**********found**********/(1)s1=0,s2=0,s3=0,s4=0/**********found**********/(2)s2=s2+a[m-1][j] /**********found**********/ (3)for(i=1;i<m-1;i++)/**********found**********/ s=s1+s2+s3+s4(4)修正的程序/**********found**********/ for(i=j+1;i<4;i++)/**********found**********/ break;4.编写程序,并调试运行(1)参考程序#include <stdio.h>#define M 4#define N 3void main(){int a[M][N],b[N][M],c[M][M]; int i,j,k,s;printf("input array a:\n"); for(i=0;i<M;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]); printf("input array b:\n"); for(i=0;i<N;i++)for(j=0;j<M;j++)scanf("%d",&b[i][j]); for(i=0;i<M;i++)for(j=0;j<M;j++){s=0;for(k=0;k<N;k++)s=s+a[i][k]*b[k][j];c[i][j]=s;}for(i=0;i<M;i++){for(j=0;j<M;j++)printf("%4d",c[i][j]); printf("\n");}}(2)参考程序#include "stdio.h"void main(){char str[100];puts("请输入字符串:\n"); gets(str);int i=0;while(str[i]!='\0'){if('A'<=str[i]&&str[i]<='Z') str[i]=str[i]+32;i++;}puts(str);}(3)参考程序#include "stdio.h"void main(){char str[100];int t=0;puts("请输入字符串:\n"); gets(str);int i=0;while(str[i]!='\0'){if(str[i]=='c')t++;i++;}printf("%d",t);}(4)参考程序#include <stdio.h>void main(){int a[20];int i=0,j,m;scanf("%d",&m);if(m>=1&&m<=65535){while(m!=0){a[i]=m%2;m=m/2;i++;}for(j=i-1;j>=0;j--)printf("%d",a[j]);} }(5)参考程序#include <stdio.h>void main(){char m[5][5];int i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)m[i][j]='*';for(i=0;i<5;i++){for(j=0;j<5;j++)if(i>j)printf(" ");else printf("%c",m[i][j]); printf("\n");}}。
《C语言程序设计实验》指导书(实验1~6)
《C语言程序设计实验》指导书(简明版)**大学软件学院**年**月实验一顺序结构程序设计(2学时)一、实验目的1、熟悉C编译环境、简单C程序结构及书写方式、以及C程序的编辑、编译、连接、运行、调试的步骤;2、掌握C语言的基本数据类型及其输入输出格式,以及输入输出函数的使用方法;3、掌握C语言的算术运算符(特别是自增、自减运算符)、赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符的使用;4、掌握C语言顺序结构程序的执行流程、设计方法,能够根据实际问题灵活使用顺序结构,画出程序的算法流程图,设计出逻辑合理、思路清晰、结果正确的顺序结构程序。
二、实验内容及要求1、实验内容包括8道题目,分为基本内容和选做内容两部分。
要求:(1)基本内容中的实验题目是必须要完成的,选做内容中的实验题目可以根据自己的情况选做或全做(越多越好,适当加分);(2)在实验之前编写出基本内容、选做内容中的所有程序,实验前检查(视未完成情况适当扣分);(3)对于设计型题目,要求画出程序流程图(传统流程图和N-S图);(4)在上机实验过程中,注意总结和体会上机步骤(编辑、编译、连接、运行、调试、结果分析),注意培养观察、分析和排除编译错误、连接错误和程序逻辑错误的初步能力;(5)上机结束后,应按要求认真书写实验报告(格式见附件)。
2、基本内容(1)[验证型]编辑下列程序,然后进行编译、连接和运行,观察结果,并简要总结简单C程序的结构、书写格式以及上机过程;#include <stdio.h>int main( ){printf("Hello, world!\n");return 0;}(2)[验证型]通过运行下列程序,分析各种格式符的使用方法。
#include <stdio.h>int main( ){int a = 9, b = 2;float x = 32.8459, y = -792.451;char d = 'R';long n = 5461237;unsigned u = 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.2\n", x, y);printf("%.4f,%.4f\n", x, y);printf("%3f,%3f\n", x, y);printf("%e,%10.2e\n", x, y);putchar(d);putchar('\n');printf("%c,%d,%o,%x\n", d, d, d, d);printf("%ld,%lo,%x\n", n, n, n);printf("%u,%o,%x,%d\n", u, u, u, u);return 0;}(3)[验证型]编辑下列程序,进行编译、连接和运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验6:运算符与表达式(5)实验目的:
1、熟悉字符的输入输出和格式化的输出,了解基本规则。
2、进一步熟悉C语言程序的编辑、编译、连接和运行的方法。
实验内容:
1、 getchar函数的作用是从终端输入____1______个字符。
2、如果从键盘输入字符’a’并按回车键,请写出以下程序运
行效果_____a_____。
main()
{
putchar(getchar());
}
3、以下程序的输出结果为
main()
{
char c=‘x’;
printf(“c:dec=%d,oct=%o,ASCII=%c\n”,c,c,c);
}
4、以下程序的输出结果为。
main()
{
int x=1,y=2;
printf(“x=%d y=%d *sum*=%d\n”,x,y,x+y);
printf(“10 Squared is:%d\n”,10*10);
}
5、以下程序的输出结果为____________________。
#include <stdio.h>
main()
{
float a=123.456; double b=8765.4567;
printf(“(1) %f\n”,a);
printf(“(2) %14.3f\n”,a);
printf(“(3) %6.4f\n”,a);
printf(“(4) %lf\n”,b);
printf(“(5) %14.3lf\n”,b);
printf(“(6) %8.4lf\n”,b);
printf(“(7) %.4f\n”,b);
}
二、程序设计题
1、若a=3,b=4,c=5,x=1.2,y=2.4,u=51274,n=128765,c1=’a’,c2=’b’。
想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
要求输出的结果如下:□表示空格
a=□3□□b=□4□□c=□5
x=1.200000,y=2.400000,z=-3.600000
x+y=□3.60□□y+z=-1.20□□z+x=-2.40
u=□51274□□n=□□□128765
c1=’a’□or□97(ASCII)
c2=’B’□or□98(ASCII)
2、假定有:int a=1,b=2,设计一个程序,将变量a和b的值互换并且输出来。
3、已知变量a=23.
4、b=54.33、c=434.33,求它们的平均值。
并按如下形式输出: average of **、** and ** is **.** 。
其中,三个**依次表示a、b、c的值,**.**表示a,b,c的平均值。
平均值请保留2位小数。