10-11学年第二学期程序设计实验教案new

2025-08-14

1. 输入并运行下面最简单的C程序。 (1)输出Hello World字符串。

#include

mian(){printf(\

(3) 2.5+2*7%2/4 #include int main()

{printf(\return 0;

}

(4) 3*(int)sqrt(34)-sin(6)*5+0x2AF #include #include

int main()

{ printf(\- sin(6) * 5 + 0x2AF); return 0; }

(5) 4.5+8%5*(int)(2.7+4.5)/2%4 #include #include int main()

{printf(\result is %f\\n\+ 8 % 5 * (int)(2.7 + 4.5) / 2 % 4); return 0; }

3 编程计算5x2?2x?6的两个根。

提示:对这个具体问题,可以先人工计算出判别式的值,以此作为已知信息就可以编程程序了。

? ? ?

将输入的文件存盘。

通过build菜单或相应的工具按钮对程序进行编译和连接。 执行连接后的程序。

#include int main()

{printf(\ }

return 0;

(2)输入并运行求三个数之和的程序。 #include

mian()

{ printf(\}

? ? ?

输入该程序并存盘,然后进行编译和连

接,如果出错,进行调试,直到无错为止。 运行程序,并查看运行结果,判断结果正确与否。

修改输出格式和三个数据,重新编译、连接和运行程序,分析运行结果。

#include int main()

{ printf(\ }

return 0;

#include #include int main()

{double diat = 2 * 2 -4 * 5 * 6; printf(\-2/2.0/5,sqrt(-diat)/2.0/5,-2/2.0/5,-sqrt(-diat)/2.0/5);

return 0;} 1 定义求圆球的体积、表面积,求圆柱体的体积、表面积的函数。 #include #define PI 3.141593 #define square(r) r*r

#define cubic(r) r*r*r

double circle_volume(double r) {return 4/3.0*PI*cubic(r); }

double surfacearea(double r) {return 4.0*PI*square(r);

1

2. 编程计算表达式的值。 (1)

120024?4?5

include

int main()

{ printf(\ return 0; }

(2)#include #include int main()

{ printf(\result is %f\\n\* 3.141593 * sqrt(13 + pow(2.718282,2.0)))); return 0; }

}

double cylinder_volume(double r,double h) {return PI*square(r)*h; }

double cylinder_sfarea(double r,double h) {return 2.0*PI*r*(r+h); }

1. 定义函数:double tmax(double, double,

double),它返回三个参数中最大的一个。写一个主函数试验各种参数情况。 include

double tmax(double a,double b,double c) {double max; } int main() {double x,y,z;

printf(\scanf(\

printf(\,z)); return 0;

max = a;

if(b > max) max = b; if(c > max) max = c; return max;

printf(\}

int main() {print6or7(); print();

return 0; }

3. scanf函数输入一个百分制成绩,输出成绩

等级A、B、C、D、E,其中90~100分为

A,80~89分为B,70~79分为C,60~69分为D ,60分以下分为E。

要求百分制成绩用整数输入,在输入前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。输出结果中应包括百分制和等级成绩,并要有文字说明。使用if语句和switch语句分别实现。

#include /*int ifelse_stru() {

int score; printf(\scanf(\printf(\

while((score<0)||(score>100))

{printf(\error!please input one

input

one

score(0-100):\

}

2. 请写一个程序,它打印出1到100之间被

6或者7整除的所有的数;修改这个程序,使它打印出1到100之间只被6或者7之

一整除的数(不包括同时被两者整除的那些数)。 #include void print6or7() {int i; }

void print() {int i;

score(0-100):\

scanf(\ } if(score>=90)

printf(\ else if(score>=80)

printf(\ else if(score>=70)

printf(\

else if(score>=60)

printf(\ else

printf(\

2

for(i=1;i<=100;++i) if((i%6==0)||(i%7==0)) printf(\printf(\

for(i=1;i<=100;++i)

if(((i%6==0)||(i%7==0))&&(iB!=0)) printf(\

return 0;

}*/

int switch_stru() {int score; printf(\score(0-100):\

input

one

return sum; }

int main()

{long k,i; double sum=0.0;

printf(\ scanf(\ printf(\

while(k<1)

{printf(\value error!please input k value(k>=1)again:\

}

scanf(\printf(\

scanf(\printf(\

while((score<0)||(score>100)) {printf(\error!please input one

score(0-100):\

scanf(\

}

switch(score/10) {case

10:case

9:printf(\

case 8:printf(\ case 7:printf(\

case

6:printf(\

default:printf(\

for(i=1;i<=k;++i) {sum += jiecheng(i);

}

printf(\

printf(\

}

5. 考虑不用函数(例如isprime)直接写出对

6~200的偶数验证哥德巴赫猜想的程序(利用循环、条件、break语句等,不使用goto语句)。将这样写出的程序与用定义函数的方式写出的程序比较。例如考察两个函数的行数、字节数,其中各种控制结构的嵌套深度,控制结构使用的个数等。

#include

int main()

{int n,m,k,misprime,nmisprime;/*misprime=0,m不是素数,否则m是素数;nmisprime=0,(n-m)不是素数,否则(n-m)是素数*/

for(n = 6;n <= 200;n += 2) for(m = 3;m <= n / 2;m += 2) {for(k = 2; k * k <= m;++k)/*判断m是否素数*/

{if(m % k == 0)

{misprime = 0; break; }

misprime = 1;

E');break;

}

return 0; }

int main() {

ifelse_stru();

switch_stru(); return 0; }

4. 写函数计算 1! + 2! + ... + k!。用主函数试

验函数对一系列k值计算出的结果。你写出的函数对1到10计算结果都正确吗?如果出现错误,弄清楚是什么原因。这个程序能对k = 30得到正确结果吗?(另外,你能只用一重循环完成函数的定义吗?) #include

double jiecheng(long k) {double sum=1.0; long i;

for(i=1;i<=k;++i) sum *= i;

3

}

for(k = 2;k * k <=(n-m);++k)/*判

断(n-m)是否素数*/

{

if((n-m) % k == 0)

{nmisprime = 0; break;

Cmn?n!(n?m)!m!

要求:

(1)编写一个函数计算n!

(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。

(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。

(4)运行程序并计算C8、C7、C8、C7、

5217 }

nmisprime = 1;

}if(misprime && nmisprime) {printf(\

=

%d

+ %d\\n\ break;

} }return 0; }

1.编写程序,设计一个判别素数的函数,在主函数中输入一个整数,调用这个判别函数,并输出是否为素数的信息。

#include

int isprime(int n) /*判断一个数是否为素数*/ {int m;

for(m = 2;m * m <= n;++m) if(n % m == 0) return 0; /*发现因子,不是素数*/ return 1; /*所有可能性均考虑过,没有因子,是素数*/ }

int main() {int n;

printf(\ while(scanf(\ {while(getchar() != '\\n') ; printf(\incorrect.An again.\ }

if(isprime(n))

printf(\else

printf(\

is

not

a

prime

C08。

#include

long fact(int n) /*计算阶乘*/ {return n == 0 ? 1 : n * fact(n-1); } int main() {int n,m;

printf(\ while(scanf(\!= 2 || ((n < 0 ) || (m < 0) || (n < m)))

{while(getchar() != '\\n') ; printf(\incorrect.Two integer

again(n>m>=0):\ } printf(\= %d,m = %d,cnm = %d\\n\return 0;

}

3.将一个正整数n以相反的顺序输出的递归算法可以如下描述:

如果 要输出的整数只有一位 则 输出该整数 否则 输出整数的个位数字 结束

反向输出除个位以外的全部数字

integer

据此算法设计的递归算法如下: void printn(int n)

{ if ((n>=0)&&(n<=9)) printf(\ else

{ printf(\ printn(n/10);

number.\\n\ return 0;

}

2.编写程序,计算下面公式并输出结果。

4

} }

请编写主程序,调用上述算法,反向输出正整数n。如输入123,则输出321。 #include

int printn(int n)

if((n >= 0) && (n <= 9))

printf(\else

{printf(\

return 0; }

int main() {

isdaffodil();

}

1.设计程序按步骤完成下列任务:

(1)编写函数sort,实现对整数数组排序的

功能,具体排序方法自己选择。 (2)主函数中,定义数组并使用初始化方

法给出数组初值。测试数据为{16,5,8,12,1,17,3,6,10,2}。

(3)主函数中调用sort函数实现对测试数

据排序的功能。要求分别打印出排序前后数组元素的值。 #include int sort(int length,int arr[]) {int i,j,t;

for(j = 0;j < length - 1;++j)

interger

for(i = 0;i < length - 1 - j;++i)

if(arr[i] > arr[i+1]) {t = arr[i]; arr[i] = arr[i+1]; }

arr[i+1] = t;

printn(n/10); } return 0; }

int main() {int n;

printf(\

while(scanf(\{while(getchar() != '\\n') ;

incorrect.An

printf(\again:\

}

printf(\ printf(\ printn(n); printf(\return 0;

}

5. 编程打印所有“水仙花数”。(一个三位的

十进制数,其三个数位的数字之立方和等于这个数,称其为水仙花数) #include int isdaffodil() {int i,a,b,c;

for(i = 100;i < 1000;++i) {a = i / 100; i)

printf(\ for(i = 0;i < length;++i) printf(\ printf(\

return 0; }

int main()

{int i,n,array[] = {16,5,8,12,1,17,3,6,10,2}; n = sizeof(array) / sizeof(array[0]); printf(\

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

printf(\printf(\

b = (i - 100 * a) / 10;

c = i % 10;

if((a * a * a + b * b * b + c * c * c) ==

printf(\

sort(n,array); return 0;

5

}

putchar('\\n');

2.

下面程序实现将一个字符串倒置的功能,编写程序,从键

strcpy(arr1,arr);

daozhi(arr);

盘接受一个字符串,利用给出的函数daozhi判定输入的字符串是否为回文。

倒置是指将字符串中的字符按相反顺序排列,如abcde倒置后变为edcba。所谓回文是指正序和反序字符排列方式相同的字符串,如abcDcba是回文。

字符串倒置的函数如下:

printf(\ if(strcmp(arr,arr1) == 0)

else

printf(\ }

return 0;

printf(\

void daozhi(char str[])

{int i,k,n;

char c,*s=str;

for (n=0;s[n]!='\\0';n++); /*

统计串长*/

n--; /* 最后一个字符位置*/

printf(\ for (i=0;i<=n/2;i++) { c=str[i];

str[i]=str[n-i]; str[n-i]=c; } }

提示:使用字符串函数strcpy和strcmp。

#include #include enum {NUM = 1024}; void daozhi(char str[])

{

int i,n;

char c,*s = str;

for(n = 0;s[n] != '\\0';++n) ; // n = strlen(str); --n; //

printf(\

4.设有下列矩阵:

1261014371115481216 A =

5913

编写程序,用二维数组存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。

#include

enum {rows = 4,columns = 4}; int main()

{

int

i,j,arr[rows][columns],arr1[rows][columns];

for(i = 0;i < rows;++i) for(j = 0;j < columns;++j) scanf(\ putchar('\\n');

printf(\ for(i = 0;i < rows;++i) { }

for(j = 0;j < columns;++j) printf(\putchar('\\n');

for(i = 0;i <= n / 2;++i) { } } int main()

{

char arr[NUM],arr1[NUM]; int i = 0;

printf(\

c = s[i]; s[i] = s[n-i]; s[n-i] = c;

for(i = 0;i < rows;++i) for(j = 0;j < columns;++j) arr1[j][i] = arr[i][j]; printf(\ for(i = 0;i < rows;++i)

{for(j = 0;j < columns;++j) printf(\ }

putchar('\\n');

scanf(\

6

return 0;

}


10-11学年第二学期程序设计实验教案new.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新时期如何弘扬沂蒙精神

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219