第二次课教学资料与课后调研:集成开发环境IDE
第二次课后调研:集成开发环境IDE(分组完成)
1、集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具,集成了代码编写功能、分析功能、编译功能、调试功能。 C程序还能怎么开发?可以不用集成开发环境吗?使用集成开发环境开发C程序有什么好处?windows系统和linux系统下面C程序的开发方式一样吗? 请针对以上问题,对C程序的开发环境进行调研,也可以对集成开发环境简单介绍。
第四次课教学资料与实验:输入输出和选择结构的程序设计
第四次课实验:输入输出和选择结构的程序设计(分组完成)
1、请从以下列出的C语言处理系统中,选择任意两种分别安装,并通过录入、运行给出的C语言程序实例,观察系统各工具的界面,尝试使用系统给出的工具调试运行程序,分析各平台的功能特点,选择适合自己使用的语言言处理系统并熟悉它。C语言处理系统: Turbo C2.0 WinTC 2.0 Visual C 6.0 Dev C++ ----------------C语言程序实例-------------- #include "stdio.h" int main() { Int a=15; printf("%d\n",sizeof(a)); } -------------------------------------------------- 根据程序1完成表格1的内容,将各个工具运行程序后的输出填入表格中并提交。 表格 1 在以下工具中运行程序1 输出是 Turbo C2.0 WinTC 2.0 Visual C 6.0 Dev C++
2、
图1 C语言编译过程示意图 根据图1完成表格2并提交。 表格2 序号 内容 【1】 【2】 【3】 【4】 【5】 【6】 【7】 【8】
3、请根据程序上下文分析程序功能,将程序空缺的【1】、【2】、【3】部分补充完整,完成表格3的填写并提交。 #include "stdio.h" int main() { 【1】 a; scanf("%【2】",&a); printf("【3】\n",a);; } 表格 3 填空序号 填空内容 功能说明 【1】 从键盘上输入A 屏幕输出65 【2】 【3】 【1】 从键盘上输入3.1415926 屏幕输出3.14 【2】 【3】 【1】 从键盘上输入5 屏幕输出5.00 【2】 【3】 【1】 从键盘上输入5 屏幕输出:[空格][空格][空格][空格]5.00 【2】 【3】
4、请根据程序上下文分析程序功能,将程序空缺的【1】、【2】、【3】部分补充完整,完成表格4的填写并提交。 #include "stdio.h" int main(){ 【1】 a; 【2】 b; scanf("%【3】",&a,&b); printf("【4】\n",a【5】b); } 表格4 序号 内容 要求 【1】 从键盘上输入35 5 屏幕输出7 【2】 【3】 【4】 【5】 【1】 从键盘上输入35 5 屏幕输出7.00 【2】 【3】 【4】 【5】 【1】 从键盘上输入A,5 屏幕输出13.00 【2】 【3】 【4】 【5】 【1】 从键盘上输入A5 屏幕输出13.00 【2】 【3】 【4】 【5】 【1】 从键盘上输入A 5 屏幕输出13.00 【2】 【3】 【4】 【5】 【1】 从键盘上输入5 6 屏幕输出:[空格][空格][空格][空格]30.00 【2】 【3】 【4】 【5】
5、对一元二次方程ax2+bx+c=0的求解。如果考虑a、b、c取值分别如表格5,求一元二次方程ax2+bx+2=0的根。(提示:若b2-4ac>0,方程有两个不同的实根。若b2-4ac<0,方程有两个复根,其实部和虚部分开计算;若b2-4ac=0,方程有两个相等的实根;请分别考虑: a=0、b=0和a、b均为0时的情况。) 请按照表格5中“期待的输出”要求: 1、针对问题画出流程图(可手画拍照上传)或写出伪代码(伪代码无格式要求),并提交; 2、将程序空缺的①、②、③、④、⑤、⑥语句补充完整,并调试运行,填写表格6并提交。 C的源程序如下: #include "stdio.h" #include "math.h" int main(void) {int a,b,c; double d,e,f; scanf("%d %d %d",&a,&b,&c); d=a, e=b, f=c; if (a==0) if (b==0) 【1】; 【2】; else if ( 【3】 ) printf("x1=x2=%.6f\n",0-e/(2*d)); else if (b*b-4*a*c>0) printf("x1=%.6f\nx2=%.6f\n",(-e+sqrt(e*e-4*d*f))/(2*d),(-e-sqrt(e*e-4*d*f))/(2*d)); else 【4】 【5】; 【6】 printf("x1=%.6f+%.6fi\nx2=%.6f%.6fi\n",-e/(2*d),sqrt(4*d*f-e*e)/(2*d),-e/(2*d),-sqrt(4*d*f-e*e)/(2*d)); } 表格5 输入 期待的输出 说明 a b c X1 X2 3 5 2 X1= X2= b2-4ac>0 2 4 2 X1=X2=-1.000000 b2-4ac=0 3 4 2 X1=-0.666667+0.471405i X1=-0.666667-0.471405i b2-4ac<0 3 0 2 X1= X2= b=0 0 4 2 X=-0.500000 a=0 0 0 2 Input error! a=0,b=0 表格6 序号 C语句 【1】 【2】 【3】 【4】 【5】 【6】
6、输入某年某月某日,判断这一天是这一年的第几天? 算法分析提示:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天。 特殊情况:闰年且输入月份大于3时需考虑多加一天。 请按照表格7中“期待的输出”要求,将程序空缺的【1】、【2】、【3】、【4】、【5】语句补充完整,并调试运行,填写表格8并提交;针对表格7每一组输入,将程序对应的输出填写在表格7中并提交。 表格7 输入 期待的输出 说明 2013.3.27 It is the 86th 按照格式输出 1996.3.27 It is the 87th 2012.5.8 1990.10.1 2008.8.8 表格8 序号 C语句 【1】 【2】 【3】 【4】 【5】 C的源程序如下: /*题目:输入某年某月某日,判断这一天是这一年的第几天?*/ #include "stdio.h" int main() { int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch( 【1】 )/*先计算某月以前月份的总天数*/ { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; 【2】 ; 【3】 ; default:printf("data error"); 【4】 ; } sum=sum+day; /*再加上某天的天数*/ if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/ leap=1; else leap=0; if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ 【5】; printf("It is the %dth day.",sum); }
第五次课教学资料与课后调研:C语言标准
第五次课后调研:C语言标准(分组完成)
1、1989年,出现了C89标准 (known as ANSI C or Standard C);1990年,出现了C90( ANSI C adopted by ISO);1999年,出现了C99标准( mostly backward-compatible, not completely implemented in many compilers);2007年,出现了C1X。 请针对C语言的以上几个标准展开调研,简要分析一下它们之间的差异。
第七次课教学资料与实验:循环结构和数组的程序设计
第七次课实验:循环结构和数组的程序设计(分组完成)
1、将一个正整数分解质因数。 算法分析提示:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1) 如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2) 如果n不等于最小的质数k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 C的源程序如下: /*题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。*/ #include "stdio.h" int main() { int n,i; printf("\nplease input a number:\n"); scanf("%d",&n); printf("%d=",n); for(i=2; 【1】 ;i++) { while( 【2】 ) { if(n%i==0) { printf("%d*",i); n=n/i; } else 【3】; } } printf("%d",n); } 请按照表格1中“期待的输出”要求,将程序空缺的【1】、【2】、【3】语句补充完整,并调试运行,针对每一组输入,将对应的输出填写在答题框中,注意标记小组成员姓名。 表格1 输入 期待的输出 说明 90 90=2*3*3*5 按照格式输出 123 1234 200 2 0
2、数组的赋值与打印: 程序2是数组的输入和输出代码,请阅读该代码并完成表格2。 程序2: #include #include int main() { int a[5];/*数组没有初始化*/ int i; for(i=0;i<5;i++) printf(“%d\n”,a[i]);/*【1】访问数组的数据*/ for(i=0;i<5;i++) scanf(“%d”,&a[i]);/*【2】对数组元素赋值*/ for(i=0;i<5;i++) printf(“%d”,a[i]); /*【3】访问数组的数据*/ for(i=0;i<10;i++) printf(“%d”,a[i]); /*【4】访问数组的数据*/ system(“pause”); return 0; } 表格2 执行的语句 问题 【1】 语句【1】的执行结果是什么? 将你的运行结果与其他同学对比一下,大家的结果都一样吗? 为什么会打印出这样的数值? 【2】 请输入5个整数,“12 23 34 45 56”,运行语句【3】和【4】,将观察结果记录在【3】【4】后面的空格中 【3】 运行结果 【4】 运行结果 和其他同学对比一下,后五个数字一样吗? 你的数组越界了吗?你怎样知道数组越界了呢?
3、字符串的处理。 程序3是将字符串逆序排列的算法,请将空缺的语句填写完整,完成表格3。 程序3: #include #include int main() { char str[100], c; int i, j; printf (“Enter string:”); gets (str); for ( i=0; 【1】; i++ ); i--; for ( j=0; j
4、求一个字符串的子串。 程序4:求一个字符串的字串,输入m,n,求一个字符数组m和n之间的部分。 例如,字符串str为“123456789”,m=3,n=5,对应的子串sub为“4”。对程序填空,并完成表格4-1和4-2。 程序4 #include #include int main() { char str[100], sub[100]; int m, n, k, p; printf(”Enter string:”); gets(str); printf(”Enter m n:”); scanf(”%d%d”, &m, &n); for ( k=0; k
5、打印等腰三角形 程序5的功能是打印边长为h的等腰三角形,输入边长h,输出一个等腰三角形。请根据表5的要求完成程序填空。 程序5 #include int main( ) { int h, i, j; scanf("%d", &h); for ( i=1; i<=h; i++ ) /* 控制打印 h 行 */ { for ( j=1; j<=h-i; j++ ) /* 打印空格 */ printf(" "); /*【2-1】在本行添加代码,打印空心菱形的左侧边*/ for ( j=1; j<=2*i-1; j++ )/* 打印 * 号 *//*【2-2】修改本行代码,控制空心菱形中间的空格的个数*/ /*【2-3】在本行添加代码,打印空心菱形中间空格*/ printf("*"); printf("\n") ; } /* 【1】添加代码,使之成为边长为h的菱形*/ /*【3】把菱形的下三角形部分修改成为空心*/ return 0; } 表 5(务必按照序号先后顺序完成) 序号 功能 语句 1 添加代码,使三角形变成边长为h的菱形 2 在1的基础上修改代码,使其变为空心菱形 2-1 在本行添加代码,打印空心菱形的左侧边 2-2 修改本行代码,控制空心菱形中间空格的个数 2-3 在本行添加代码,打印空心菱形中间空格 3 把菱形的下三角形部分修改成为空心
6、打印梯形 程序6是打印一个数字梯形,输入为梯形的上底和高n,以及上底的数字ini,输出为一个由数字组成的空心梯形。如图所示:
请将程序完型填空,并完成表6。 程序6 #include int main() { int n,i,j,a,b,ini; /*i,j分别表示行号和列号,a、b分别表示上底和下底上的数字个数*/ scanf("%d%d",&n,&ini); a = n; b = 【1】a+2*n-2; for(i=1;i<=n;i++) { if(i==1) /*打印下底*/ { for(j=1;j<=b;j++) printf("%d",【2】); printf("\n"); } else if(i==n) /*打印上底*/ { for(j=1;【3】;j++) printf(" "); for(j=1;j<=a;j++) printf("%d",【4】); printf("\n"); } else /*打印梯形中间部分*/ { for(j=1;【5】;j++) printf(" "); /*打印每行开头的空格*/ printf("%d",【6】); /*打印梯形左侧边*/ for(j=1;j<=【7】;j++)/*打印梯形中间的空格*/ printf(" "); printf("%d\n",【8】); /*打印梯形右侧边*/ } } } 表 6 序号 语句 【1】 【2】 【3】 【4】 【5】 【6】 【7】 【8】
7、输入一行字符,将其中的每个字符从小到大排列后输出。请分别使用冒泡排序、选择排序、插入排序实现该功能,并根据表7将三种方法的完整代码给出,填写在答题框中。 程序7参考代码: #include int main ( ) { char string [100], t; int i, j, n; gets ( string ); n = strlen ( string ); /*请在下面区域填写你的代码*/ /* 1. 冒泡法排序 */ /* 2. 选择法排序 */ /* 3. 插入法排序 */ /*请在上方区域填写你的代码*/ puts ( string ); } 表 7 序号 完整代码 【1】冒泡法排序 【2】选择法排序 【3】插入法排序