C语言程序设计第四次(2.8)实验报告范文

时间:2019-05-11 22:55:30下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言程序设计第四次(2.8)实验报告范文》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言程序设计第四次(2.8)实验报告范文》。

第一篇:C语言程序设计第四次(2.8)实验报告范文

C语言程序设计

实验报告

专业

班级

日期

11月26日

成绩

实验组别

第 3(2.7)次实验

指导教师

李开

学生姓名

学号

同组人姓名

实验名称 实验8 指针实验

一、实验目的

(1)熟练掌握指针的说明、赋值、使用。

(2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。

(3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。(4)掌握指针函数与函数指针的用法。(5)掌握带有参数的main函数的用法。

二、实验任务

8.2 实验内容及要求 1.源程序改错

2.源程序完善、修改、替换 3.跟踪调试 4.程序设计 5.选做题

8.3 指定main函数的参数

三、实验步骤及结果

(要求给出源程序和程序运行结果。另外,根据实验内容,记录编辑、编译、链接、调试程序的操作过程和实验现象)8.2 实验内容及要求 1.源程序改错

下面程序是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个例子程序进行调试修改,使之能够正确执行。#include void main(void){ float *p;scanf(“%f”,p);printf(“%fn”,*p);}

存在,错误为指针一开始没有初始化,而sacnf传入的是float型指针指向的地址,我们并不知道系统能给我们分配什么地址,所以说我们输入的地址很有可能使程序崩溃。修改后代码:

#include int main(void){ float *p;float a[10];//这里可以换成其他数字 p=&a[0];scanf(“%f”,p);printf(“%fn”,*p);return 0;}

2.源程序完善、修改、替换

(1)下面的程序通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数,请在下划线处填写合适的表达式、语句、或代码片段来完善该程序。#include #include void main(void){ char*(*p)(char a[],char b[]);char a[80],b[80],c[160],*result=c;int choice,i;do{

printf(“tt1 copy string.n”);

printf(“tt2 connect string.n”);

printf(“tt3 exit.n”);

printf(“ttinput a number(1-3)please!n”);

scanf(“%d”,&choice);}while(choice<1 || choice>5);switch(choice){ case 1:

p=strcpy;

break;

case 2:

p=strcat;

break;case 3:

goto down;} getchar();printf(“input the first string please!n”);i=0;gets(a);printf(“input the second string please!n”);i=0;gets(b);

result= p(a,b);printf(“the result is %sn”,result);down:;}(2)请上机运行第(1)题程序,使之能按要求输出下面结果:((输入)表示该数据是键盘输入数据)

copy string.2 connect string.3 exit.input a number(1-3)please!2(输入)

input the first string please!the more you learn,(输入)input the second string please!the more you get.(输入)

the result is the more you learn,the more you get.3.跟踪调试

#include char *strcpy(char *,char *);void main(void){ char a[20],b[60]=“there is a boat on the lake.”;printf(“%sn”,strcpy(a,b));} char *strcpy(char *s,char *t){ while(*s++=*t++);return(s);}(1)单步执行。进入strcpy时watch窗口中s为何值?返回main时, watch窗口中s为何值?

进入strcpy时:

返回main时:

(2)排除错误,使程序输出结果为: there is a boat on the lake.#include void *strcpy(char *,char *);int main(void){ char a[30],b[60]=“there is a boat on the lake.”;strcpy(a,b);printf(“%sn”,a);return 0;} void *strcpy(char *s,char *t){ while(*t!=''){ *s++=*t++;} *s='';//将函数类型设置为void型,然后不再返回直接打印a字符串即可 }

4.程序设计

(1)一个长整型变量占4个字节,其中每个字节又分成高4位和低4位。试从该长整型变量的高字节开始,依次取出每个字节的高4位和低4位并以数字字符的形式进行显示。#include int main(void){ int n,i;scanf(“%x”,&n);char *p=(char *)&n;int high_half,low_half;for(i=3;i>=0;i--){ low_half = p[i] & 0x0f;if(low_half < 10)low_half += '0';else low_half += 'A'10;printf(“%c %cn”,high_half,low_half);}

return 0;}

(2)利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。编写一个函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩空格后的各行,空行不予输出。

#include #define N 10 void reducespace(char *p,int n);int main(){ int i;char *p[N],arr[N][81];printf(“Input %d-line strings:n”,N);for(i = 0;i < N;i++){

*(p + i)= arr[i];

printf(“the %d line:”, i + 1);

gets(*(p + i));} printf(“nnafter compression:n”);for(i = 0;i < N;i++){

reducespace(*(p + i),i);} putchar(10);return 0;} void reducespace(char *p,int n)//削减空格的函数,将多行空格压缩成一个空格 { int flag = 1, i, j = 0, sum = 0;char temp[81];for(i = 0;*(p + i)!= '';i++){

if(*(p + i)!= ' '&&flag)

{

temp[j++] = *(p + i);

sum++;

}

if(*(p + i)== ' '&&flag)

flag = 0;

if(*(p + i)!= ' '&&!flag)

{

temp[j++] = ' ';

temp[j++] = *(p + i);

flag = 1;

sum++;

}

temp[j] = '';} if(sum)

printf(“The %d line:%sn”, n+1,temp);else

printf(“Of the %d line there are all spacesn”, n + 1);}

(3)输入n个整数,排序后输出。排序的原则由命令行可选参数-d决定,有参数-d时按递减顺序排序,否则按递增顺序排序。要求将排序算法定义成函数,利用指向函数的指针使该函数实现递增或递减排序。(main函数参数的处理见8.3节)

#include #include #include int main(int argc,char *argv[]){ void downsort(char* *p,int m);void upsort(char * *q,int k);int n=0;while(n*q[j+1])t=*q[j],*q[j]=*q[j+1],*q[j+1]=t;for(i=0;i

(4)设某个班有N个学生,每个学生修了M门课程(用#define定义N、M)。输入M门课程的名称,然后依次输入N个学生中每个学生所修的M门课程的成绩并且都存放到相应的数组中。编写下列函数:

a.计算每个学生各门课程平均成绩; b.计算全班每门课程的平均成绩;

c.分别统计低于全班各门课程平均成绩的人数;

d.分别统计全班各门课程不及格的人数和90分以上(含90分)的人数。

在调用函数中输出上面各函数的计算结果。(要求都用指针操作,不得使用下标操作。)#include #define M 2//course #define N 2//students int main(void){

char courses[M][30],students[N][20];

float tables[N][M];

int c,s;

char *co=&courses[0][0];//courses[2]

co+2*30

char *st=&students[0][0];

float *gr=&tables[0][0];

for(c=0;c

{

printf(“Please Input The %d Coursen”,c+1);

scanf(“%s”,courses[c]);

}//course names

for(s=0;s

{

printf(“Please Input The %d Studentn”,s+1);

scanf(“%s”,students[s]);

}//students names

for(s=0;s

{

printf(“For students : %sn”,students[s]);

printf(“Input his/her grades:n”);

for(c=0;c

{

printf(“Please Input The %s n”,courses[c]);

scanf(“%f”,&tables[s][c]);

}

}//tables

float sum=0;

for(s=0;s

{

sum=0;

printf(“the average grades of %s:n”,st+s*20);

for(c=0;c

{

sum+=*(gr+s*M+c);

}

printf(“%fn”,sum/M);

}//(1)

float sum_=0;

for(c=0;c

{

sum_=0;

printf(“the average grades of %s:n”,co+c*30);

for(s=0;s

{

sum_+=*(gr+s*M+c);

}

printf(“%fn”,sum_/N);

}//(2)

for(c=0;c

{

sum_=0;

printf(“the number whose grades under average of %sn”,co+c*30);

int cou=0;

for(s=0;s

{

sum_+=*(gr+s*M+c);

}

for(s=0;s

{

if(*(gr+s*M+c)

{cou++;}

}

printf(“%dn”,cou);

cou=0;

}//(3)

for(c=0;c

{

printf(“the number whose grades under 60 of %sn”,co+c*30);

int cou=0;

for(s=0;s

{

if(*(gr+s*M+c)<60)

cou++;

}

printf(“%dn”,cou);

cou=0;

}

for(c=0;c

printf(“the number whose grades higher than 90 of %sn”,co+c*30);

int cou=0;

for(s=0;s

{

if(*(gr+s*M+c)>=90)

cou++;

}

printf(“%dn”,cou);

cou=0;

}

return 0;}

5.选做题

(1)设有N位整数和M位小数(N=20,M=10)的数据a,b。编程计算a+b并输出结果。如:***78912.1234567891 + ***43210.0123456789 #include “stdio.h” #include “ctype.h” #define N 100 /* N表示参与运算数据最长的长度 */ void add_decimals(char *a,char *b,int *c,int n,char *d);void add_inte(char *a,char *b,int c,int n,char *d);int main(void){ char a1[N],b1[N],c1[N+1],a2[N],b2[N],c2[N+1];char c;int q,w,e,r;//to count q=0;while((c=getchar())!='.'){ if(isdigit(c))*(a1+q)=c;q++;} *(a1+q)='';w=0;while((c=getchar())!='n'){ if(isdigit(c))*(b1+w)=c;w++;} *(b1+w)='';e=0;char d;while((d=getchar())!='.'){ if(isdigit(d))*(a2+e)=d;e++;} *(a2+e)='';r=0;while((d=getchar())!='n'){ if(isdigit(d))*(b2+r)=d;r++;} *(b2+r)='';//input

int max,max_;if(w>r){ max=w;int t;for(t=r;te){ max_=q;int y;for(y=0;y

} else { max_=e;int y;for(y=0;y

return 0;} void add_decimals(char *a,char *b,int *c,int n,char *d){ int o,jin=0;for(o=n-1;o>-1;o--){ if(*(a+o)+*(b+o)-2*'0'+jin>=10){*(d+o)=*(a+o)+*(b+o)+jin-1*'0'-10;jin=1;} else { *(d+o)=*(a+o)+*(b+o)-'0';jin=0;}

} *(d+n)='';*c=jin;} void add_inte(char *a,char *b,int c,int n,char *d){ int o;for(o=n-1;o>0;o--){ if(*(a+o)+*(b+o)-2*'0'+c>=10){*(d+o+1)=*(a+o)+*(b+o)-1*'0'-10;c=1;} else { *(d+o+1)=*(a+o)+*(b+o)-1*'0';c=0;}

} if(*a+*b+c-2*'0'>=10){ *(d+1)=*a+*b+c-'0'-10;*d='1';} else {*(d+1)=*a+*b+c-'0';*d=' ';} }

(2)编写使用复杂声明char *(*p[2])(const char *,const char *);的程序。提示:p中元素可为strcmp、strstr等函数名。8.3 指定main函数的参数

选择“project/ set programs' arguments…”菜单命令,即可打开图2.12所示的对话框,在“Program arguments”文本框中输入main函数的参数。注意只输入命令行中文件名后的参

数,文件名不输人。

图2.12 输入main

函数的参数

四、实验体会

好好写代码,不该跟老师吵,星期三的晚上应该按课程来讲只是写代码,不能干其他事情,对此我深刻检讨。

第二篇:《C语言程序设计》实验报告

指导教师学院专业班级学号姓名实验室

实验题目:

实验要求:

实验内容及步骤:

运行结果

心得体会:

第三篇:Java语言程序设计实验报告1

《Java语言程序设计》实验报告一

学生姓名: 孙文琳

班级: 信息111

学号:201152275119 实验地点: 经管中心证券实验室

指导教师:赵利平实验日期:

2012.3.6

实验环境:Windows 2000+JDK1.6

1.实验目的(1)养成良好的编程风格;(2)掌握字符数据类型及其运算;

(3)熟悉从输入对话框获取输入和从控制台获取输入两种方法;(4)掌握布尔运算符;(5)掌握分支语句if和switch。

2.实验内容(1)在控制台下求两个实数的最大值:完成实验教材P22程序清单2-2;(2)

3.实验过程

报告撰写具体要求:上述实验内容要求写出源代码及运行结果。实验内容(1)://CompareTwoNumbersl.java

import java.util.Scanner;

public class CompareTwoNumbers1{

double number1,number2;

Scanner scanner;

public CompareTwoNumbers1(){

System.out.println(“请输入两个数字:”);

scanner=new Scanner(System.in);

number1=scanner.nextDouble();

number2=scanner.nextDouble();

System.out.println(“较大的数是:”+(number1>number2?number1:number2));

}

public static void main(String args[]){ CompareTwoNumbers1 ct=new CompareTwoNumbers1();System.exit(0);}

}

实验内容(2):

//DollarConvertor.java import java.util.Scanner;public class DollarConvertor{ public static void main(String args[]){ System.out.println(“请输入美元数:”);Scanner scanner=new Scanner(System.in);double i=scanner.nextDouble();double result=i*6.2875;System.out.println(“对应的人民币数:”+result);} }

实验内容(3): public class MultiplyList1{ public static void main(String args[]){ String output=“";for(int row=1;row<=9;row++){ for(int col=1;col<=row;col++)output+=col+”*“+row+”=“+(row*col)+” “;output+=”n";} System.out.println(output);System.exit(0);}}

4.实验总结

心得体会:做实验要小心翼翼,注意Java大小区分

第四篇:C语言程序设计 实验报告2.3

C语言程序设计

实验报告

专业

班级

日期

11月26日

成绩

实验组别

第 2(2.3)次实验

指导教师

李开

学生姓名

学号

同组人姓名

实验名称 流程控制实验

一、实验目的

(1)掌握复合语句、if语句、switch语句的使用,熟练掌握for、while、do-while三种基本的循环控制语句的使用,掌握重复循环技术,了解转移语句与标号语句。

(2)熟练运用for、while、do-while语句来编写程序。(3)练习转移语句和标号语句的使用。

(4)使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。

二、实验任务

3.2 实验内容及要求 1.源程序改错

下面是计算s=n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。例如,8!=40320。#include void main(){ int i,n,s=1;printf(“Please enter n:”);scanf(“%d”,n);for(i=1,i<=n,i++)s=s*i;printf(“%d!= %d”,n,s);}

2.源程序修改替换

(1)修改第1题,分别用while和do-while语句替换for语句。

(2)修改第1题,输入改为“整数S”,输出改为“满足n!≥S的最小整数n”。例如输入整数40310,输出结果为n=8。

3.程序设计

(1)假设工资税金按以下方法计算:x < 1000元,不收取税金;1000 ≤ x < 2000,收取5%的税金;2000 ≤ x < 3000,收取10%的税金;3000 ≤ x < 4000,收取15%的税金;4000 ≤ x < 5000,收取20%的税金;x>5000,收取25%的税金。输入工资金额,输出应收取税金额度,要求分别用if语句和switch语句来实现。

(2)将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替。

(3)打印如下杨辉三角形。

/*第0行 */ 1 1 /*第1行 */ 1 2 1 /*第2行 */ 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1

jjCCii每个数据值可以由组合计算(表示第i行第j列位置的值),而的计算如下:

Ci0(i=0,1,2,„)CijCij1*(i-j1)/ j(j=0,1,2,3,„,i)本程序中为了打印出金字塔效果,要注意空格的数目。一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。

(4)编写一个程序,将用户输入的任意正整数逆转,例如,输入1234,输出4321。

4.选做题

32f(x)3x4x5x130满足精度e=10-6 编写一个程序,用牛顿迭代法求方程的一个近似根,并在屏幕上输出所求近似根。

x0axxkf(xk)/f'(xk),其中f'(x)是牛顿迭代法:求方程近似根的迭代公式为k1函数f(x)的导函数。牛顿迭代法首先任意设定的一个实数a来作为近似根的迭代初值x0,然后用迭代公式计算下一个近似根x1。如此继续迭代计算x2, x3, „, xn, 直到xnxn1精度e

,此时值xn即为所求的近似根。

2.3:

1.源程序改错:(源程序)

#include void main(){ int i,n,s=1;printf(“Please enter n:”);scanf(“%d”,n);for(i=1,i<=n,i++)s=s*i;printf(“%d!= %d”,n,s);} 运行结果:

(修改后程序)#include int main(void){

int i,n,s=1;

printf(“Please enter n:”);

scanf(“%d”,&n);

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

s=s*i;

printf(“%d!= %d”,n,s);

return 0;}

2.源程序修改替换

(1)修改第1题,分别用while和do-while语句替换for语句。(while)

#include int main(void){ int i=1,n,s=1;printf(“Please enter n:”);scanf(“%d”,&n);while(i<=n){ s=s*i;i++;} printf(“%d!= %d”,n,s);return 0;}

(do-while)#include int main(void){ int i=1,n,s=1;printf(“Please enter n:”);scanf(“%d”,&n);do {s=s*i;i++;} while(i<=n);printf(“%d!= %d”,n,s);return 0;}

(2)修改第1题,输入改为“整数S”,输出改为“满足n!≥S的最小整数n”。例如输入整数40310,输出结果为n=8。

#include int main(void){ int i,n=1,s;printf(“Please enter s:”);scanf(“%d”,&s);for(i=1;n= %d”,i-1,s);return 0;}

3.程序设计

(1)假设工资税金按以下方法计算:x < 1000元,不收取税金;1000 ≤ x < 2000,收取5%的税金;2000 ≤ x < 3000,收取10%的税金;3000 ≤ x < 4000,收取15%的税金;4000 ≤ x < 5000,收取20%的税金;x>5000,收取25%的税金。输入工资金额,输出应收取税金额度,要求分别用if语句和switch语句来实现。

(switch语句)#include void main(){

printf(“输入你的工资 ”);

int t;

float x;

scanf(“%f”,&x);

t =(int)(x/1000.0);

switch(t){

case 0:

printf(“no tax!n”);

break;

case 1:

printf(“%fn”,0.05*x);

break;

case 2:

printf(“%fn”,0.10*x);

break;

case 3:

printf(“%fn”,0.15*x);

break;

case 4:

printf(“%fn”,0.20*x);

break;

case 5:

printf(“%fn”,0.25*x);

break;

default:

printf(“%fn”,0.25*x);

break;

}

return 0;}

(if语句)

#include “stdio.h” int main(int argc, char *argv[]){

float x, tax;

scanf(“%f”, &x);

if(x<0)

{

printf(“Wrong input.n”);

return 1;

}

if(x<1000)

{

tax = 0.00;

}

else if(x>=1000&&x<2000)

{

tax = 0.05 * x;

}

else if(x>=2000&&x<3000)

{

tax = 0.10 * x;

}

else if(x>=3000&&x<4000)

{

tax = 0.15 * x;

}

else if(x>=4000&&x<5000)

{

tax = 0.20 * x;

}

else

{

tax = 0.25 * x;

} printf(“Tax of salary %.2f YUAN is %.2f YUAN.n”, x, tax);}

(2)将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替。

#include int main(){ char c,flag;for(flag=0;(c=getchar())!='n';){

if(c==' '){

if(flag==0){

putchar(c);

flag=1;

}

}

else{

putchar(c);

flag=0;

}

}

return 0;}

(3)打印如下杨辉三角形。

/*第0行 */ 1 1 /*第1行 */ 1 2 1 /*第2行 */ 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1

jjCCii每个数据值可以由组合计算(表示第i行第j列位置的值),而的计算如下:

Ci01

(i=0,1,2,„)CijCij1*(i-j1)/ j(j=0,1,2,3,„,i)本程序中为了打印出金字塔效果,要注意空格的数目。一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。

#include int Combination(int a,int b);int Triangle(int n);int main(void){ printf(“input the number for triangle of Yanghuin”);Triangle(9);} int Combination(int a,int b){ int t,p,s=1,q=1;if(a==0||b==0){ printf(“%4d”,q);} else{ for(t=b-a+1;t<=b;t++){ s=s*t;} for(p=1;p<=a;p++){ q=q*p;} printf(“%4d”,s/q);} } int Triangle(int n){ int i,o,u;for(i=0;i<=n;i++){ for(u=1;u<41-i*2;u++){ printf(“ ”);} for(o=0;o<=i;o++){ Combination(o,i);} printf(“n”);} }

(4)编写一个程序,将用户输入的任意正整数逆转,例如,输入1234,输出4321。#include #include int main(void){ int a,i,c,n=0;char m;for(a=0;m=getchar(),m!='n';a++){ c=m-'0';n=n+c*pow(10,a);} printf(“%dn”,n);}

4.选做题

-6 编写一个程序,用牛顿迭代法求方程f(x)3x4x5x130满足精度e=10的一个近似根,并在屏幕上输出所求近似根。

32x0axxkf(xk)/f'(xk),其中f'(x)是牛顿迭代法:求方程近似根的迭代公式为k1函数f(x)的导函数。牛顿迭代法首先任意设定的一个实数a来作为近似根的迭代初值x0,然后用迭代公式计算下一个近似根x1。如此继续迭代计算x2, x3, „, xn, 直到xnxn1精度e,此时值xn即为所求的近似根。

#include #include double f(double x);double f_(double x);double root(double m);int main(){ double m=1;printf(“%lfn”,root(m));return 0;}

double f(double x){ return(3*x*x*x-4*x*x-5*x+13);} double f_(double x){ return(9*x*x-8*x-5);} double root(double m){ double n;n=m-f(m)/f_(m);if(fabs(m-n)<=0.000001){ return n;} else{ return root(n);} }

四、实验体会

了解更多有关C语言的语法知识和循环结构以及熟练了调试过程。

第五篇:C语言程序设计—函数—实验报告

实 验 报 告

专业

软 件 工 程

班级

X

学号_ XXXXXXXXXXX_

姓名

实验日期:201X年X月X日

报告退发(订正、重做)

课程

C程序设计实验

实验名称

一、实验目的

① 熟练掌握C程序中函数的定义; ② 掌握函数的调用,函数参数的传递; ③ 熟练掌握函数的嵌套调用和递归调用;

二、实验环境(描述实验的软件、硬件环境)

① 软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器; ② 硬件环境:PC机一台

三、实验内容、步骤和结果分析

题目一:编写一个用来判断质数(素数)的函数。

要求:

(1)在main函数中调用该函数对输入的数值进行判断,并输出判断结果;(2)当输入数值<=1时,停止输入和判断。

#include #include /*=======判断质数(素数)的函数=======*/ int judgePrime(int n){

} /*=======判断质数(素数)的函数=======*/ int main(){

printf(“n提示:输入一个数字来判断是否是质数(素数),当输入数值<=1时,停止输入和判断。nn”);for(int num=2,temp;num>1;){ printf(“Please enter a number:”);for(int i=2;i<=sqrt(n);i++)//一个数n如果是合数,那么它的所有的因子不超过n的开方 {

} return 1;if(n%i==0)return 0;else continue;

}

} scanf(“%d”,&num);if(num<=1)break;//当输入数值<=1时,停止输入和判断 temp=judgePrime(num);if(temp==0)printf(“%d is not a prime numner!nn”,num);else printf(“%d is a prime numner!nn”,num);return 0;

题目二:使用习题1中所编写的判断质数的函数验证哥德巴赫(Goldbach)的1+1猜想-----任何一个>=6的偶数都可以表示成两个素数之和

要求:

① 屏幕提示用户一个>=6的偶数;

② 输出这个偶数等于2个素数之和的表达式; ③ 当输入数据<6或者不是偶数时,停止输入和验证。

#include #include /*=======判断质数(素数)的函数=======*/ int judgePrime(int n){

for(int i=2;i<=sqrt(n);i++)//一个数n如果是合数,那么它的所有的因子不超过n的开方 {

if(n%i==0)return 0;else continue;

} } return 1;//true-->1,false-->0 /*=======验证哥德巴赫猜想的函数(调用judgePrime)=======*/ int proveGoldbach(int m){

} int main(){

}

printf(“n提示:输入一个偶数来验证哥德巴赫猜想,当输入数值<6时,停止输入和判断。nn”);for(int num=6;num>=6;){

} int temp;printf(“Please enter a number:”);scanf(“%d”,&num);temp=proveGoldbach(num);if(temp==0)//当输入小于6或者不是偶数时结束 return 0;printf(“==================================”);if(m<6||m%2!=0){

} if(judgePrime(j)==1&&judgePrime(m-j)==1)//判断两数是否都等于质数 { } printf(“t%d = %d + %dn”,m,j,m-j);return 0;//判断是否大于等于6或者不是偶数 for(int j=2;j<(m/2);j++)

题目三:编写一个求阶乘的函数,接着调用该函数实现组合的求解要求:

① 提示用户输入n和m的数值; ② 输出的 结果

#include /*=======阶乘函数=======*/ int fac(int n){

} /*=======组合函数=======*/ int combine(int m,int n){ } /*=======main函数=======*/ void main(){

int m,n;int res;printf(“n提示:这是求组合求和公式的函数,输入两个整数(分别为上标和下标)nn”);scanf(“%d%d”,&m,&n);if(m>n)//判断上标大于小标重新输入 goto loop;return fac(n)/(fac(n-m)*fac(m));int f;if(n<0)printf(“n<0,data error!”);f=1;else if(n==0||n==1)else f=fac(n-1)*n;return f;loop:printf(“Please enter two numbers:”);

}res=combine(m,n);printf(“tResult is %dn”,res);

题目四:编写一个求矩阵中最大元素以及最小元素的函数selectMaxAndMin(),在main函数中调用该函数

要求:

最大值和最小值的输出操作,可以放在selectMaxAndMin()函数中

#include #define ROW 4//矩阵的行 #define COLUMN 4//矩阵的列

/*=======在矩阵中选择最大最小数的函数=======*/ void selectMaxAndMin(int arry[ROW][COLUMN])//用指针更方便 {

int tempMax,tempMin;if(arry[0][0]>arry[0][1])//赋初始值 {

} else {

} for(int i=0;i

}

} for(int j=0;j

} if(arry[i][j]>tempMax){ } if(arry[i][j]

} int mat[ROW][COLUMN];printf(“Please enter a %d X %d matrix:n”,ROW,COLUMN);for(int i=0;i

} selectMaxAndMin(mat);return 0;for(int j=0;j

题目五:编写一个编码原文的函数,对于给定的内容,按照敌方的规律对其进行编码

要求:

某日,我军某部截获了一份敌方电报,经过仔细分析后发现:该电文中所有的字母字符都是经过某种运算后得到的,然那些非字母字符则没有经过任何处理。例如,原文中的字符A对应电文中的字符E,原文中的字符b对应电文中的字符f,原文中的字符W对应电文中的字符A,原文中的字符!在电文中仍为!

#include #define SIZE 20

//定义大小 /*=======密码翻译的函数=======*/ char trans(char a){

} //主函数 int main(void){

printf(“请输入原文:nnn”);char str[SIZE];gets(str);printf(“nnn”);if((a>='a'&&a<='v')||(a>='A'&&a<='V')){ } else {

} if(a>='w'||a>='W'){ } else { return a;} return a-22;return a+4;

}printf(“正在破解……nnn”);printf(“破译的原文是:”);for(int i=0;i<20;i++){

} printf(“n”);str[i]=trans(str[i]);if(str[i]=='')//判断是否结束 break;printf(“%c”,str[i]);

题目六:编写一个函数,求解输入矩阵的转置矩阵并输出

#include #define ROW 3//矩阵的行 #define COLUMN 4//矩阵的列 /*=======矩阵的输入函数=======*/ void matInput(int mat[][COLUMN]){

} /*=======原始矩阵的打印函数=======*/ for(int i=0;i

for(int j=0;j

} printf(“请输入矩阵元素 [%d][%d]=:”,i,j);scanf(“%d”,&mat[i][j]);

void matPrint(int mat[][COLUMN]){

} /*=======转置矩阵的打印函数=======*/ void matTrasPrint(int mat[][COLUMN]){

} /*=======main函数=======*/ int main(void){

} printf(“==================================”);printf(“请输入一个 %d X %d 的矩阵:n”,ROW,COLUMN);int mat[ROW][COLUMN];matInput(mat);printf(“==================================”);printf(“原始矩阵为:n”);matPrint(mat);printf(“==================================”);printf(“原始矩阵的转置矩阵为n”);matTrasPrint(mat);return 0;int arr[COLUMN][ROW];for(int i=0;i

} for(int j=0;j

} printf(“n”);arr[i][j]=mat[j][i];printf(“%3d”,arr[i][j]);for(int i=0;i

} for(int j=0;j

题目七:用户输入的字符串,以相反的顺序打印出来。

要求:利用递归函数调用形式

#include #define SIZE 20 /*=======相反输出字符串的函数=======*/ void reverse(char a[]){

int i=0;if(a[i]!=''){

} int main(void){

}printf(“t提示:输入一串字符以相反的顺序打印n”);char str[SIZE];gets(str);reverse(str);printf(“n”);return 0;

} else return;reverse(&a[i+1]);//递归调用 printf(“%c”,a[i]);

四、讨论

下载C语言程序设计第四次(2.8)实验报告范文word格式文档
下载C语言程序设计第四次(2.8)实验报告范文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言程序设计(1,2)实验报告

    实验一 C程序的运行环境和方法 一、实验目的 1.了解所用的计算机系统。 2.了解在该系统上如何进行编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序了解C程序的特点。 二......

    C语言程序设计II实验报告

    第二部分 实验内容一、实验目的 1、掌握一维数组的定义和引用 2、掌握一维数组的初始化方法 3、了解与一维数组有关的应用编程方法 二、实验意义 数组的定义,元素引用特征和......

    C语言与程序设计实验报告六

    《C语言及程序设计》实验报告 实验六 选择、循环结构程序设计 实验目的: 进一步对选择结构和循环结构进行程序设计。 实验内容: 1、打印输出如下图所示的图形: ABBBCCCCC DDDDD......

    《c语言程序设计》上机实验报告要求

    《c语言程序设计》上机实验报告要求1. 实验环境: 软件系统:使用的软件环境 硬件系统:机型说明 2. 实验目的:掌握如何编辑、编译、链接调试运行c程序 3. 实验内容: (1) 掌握顺序结构......

    C语言程序设计上机实验报告(精选5篇)

    黔南民族师范学院 C语言程序设计上机实验报告系部:计算机科学系 年级:2013 级 班级: 姓名: 学号: 实验时间: 实验成绩:2013年月日 实验三顺序结构程序的设计 一 实验名称:顺序结构程......

    C语言程序设计扫雷游戏实验报告

    中南大学 程序设计基础实践报告 学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 完成时间 2014.1 题 目 设计一个和window系统类似的小游戏【挖地雷......

    简单的C语言程序设计实验报告完美版[精选合集]

    本科实验报告专用纸 课程名称C语言程序设计 成绩评定实验项目名称简单的C语言程序设计实验项目编号 实验项目类型 验证型实验地点 指导教师学生姓名 学号学院 专业一、......

    高级语言程序设计实验报告 C语言实验报告(5篇范例)

    C语言程序设计实验报告 实验二 循环结构程序设计 班级 2012196 学号 201219628 姓名 李明月 一、实验目的 掌握用while语句,do-while语句和for语句实现循环的方法; 掌握......