文档库 最新最全的文档下载
当前位置:文档库 › 程序设计基础实验报告dxw

程序设计基础实验报告dxw

程序设计基础实验报告dxw
程序设计基础实验报告dxw

《程序设计基础课程设计》实验报告

班级:1403021

姓名:宋之鑫

学号:14030210038

所选题目:1_1 , 1_2 , 2_1 , 3_1 , 3_2 , 3_3 , 3_4 , 4-1 , 5_1 , 5_2

第1_1题

算法描述:首先定义两个二维字符数组,两个维数分别代表行数和文本中每行的字符的个数,用for循环和fgets函数把两个文本中的数据一行一行地复制到数组中,完毕后用for 循环和strcmp函数比较两个数组中的不同的行,遇到不同行输出不同行,若没有不相等的行则输出:这两个文本文件相同!完毕

源程序:

no1_1.c

#include

#include

#include

int main()

{

int i。

char a[6][80],b[6][80]。//用于存储文件中的字符串

FILE * fp1。

FILE * fp2。

if((fp1=fopen("1.txt","r"))==NULL)//打开文件

{

printf("can't open file!\n")。

exit(0)。

}

if((fp2=fopen("2.txt","r"))==NULL)///打开文件

{

printf("can't open file!\n")。

exit(0)。

}

for(i=0。i<6。i++)//把文件中的数据录入到字符串数组中

{

fgets(b[i],81,fp2)。

fgets(a[i],81,fp1)。

}

for(i=0。i<6。i++)

if(strcmp(a[i],b[i])!=0) break。//比较此行数据是否相同

if(i==6) printf("这两个文件相同!\n")。

else

{

printf("不同行是第%d行\n1.txt的第%d行是%s\nb.txt的第%d行是%s\n",i+1,i+1,a[i],i+1,b[i])。

}

}

测试数据(输入、输出):两个不同的文本文件1.txt和2.txt

第1_2题

算法描述:

有三个文件,前两个里面有一串数字,把前面两个文件中的数字格式化输入到一个整型数组中,写一个冒泡排序函数把这个整型数组从大到小排序,最后平用fprint输入到第三个文件中,完毕

源程序:

no1_2.c

#include

#include

#include

int paixu(int *arr, int jishu) //冒泡排序,把数组中的数组排序

{

int i=0,j=0,tmp。

for (i=0。i

{

for(j=i+1。j

{

if(arr[i]>arr[j])

{

tmp=arr[i]。

arr[i]=arr[j]。

arr[j]=tmp。

}

}

}

return 0。

}

int main()

{

int a[300]={0}。//初始化

int jishu=0。//初始化

int i=0。

FILE *fp1=fopen("1.txt","r")。

FILE *fp2=fopen("2.txt","r")。

FILE *fp3=fopen("3.txt", "w+")。

if (fp1==NULL||fp2==NULL) //判断打开是否成功

{

printf("文件打开失败\n")。

return 0。

}

while (!feof(fp1))

{

fscanf(fp1, "%d", &a[jishu++])。//把文件1中各数字输入到数组中

}

fclose(fp1)。

while (!feof(fp2)) //把文件二中各数字输入到数组中

{

fscanf(fp2, "%d", &a[jishu++])。

}

fclose(fp2)。

paixu(a, jishu)。

for (i=0。i

{

fprintf(fp3, "%d\ ", a[i])。//把排完序的数字输入到文件3中}

fclose(fp3)。

printf("操作成功...")。

return 0。

}

测试数据(输入、输出):

输入:

输出:

第2-1题

算法描述:有一个带有注释的c源程序,首先把它按行录入到二维数组中,有两种情况//型和/**/型,第一//分两种情况,处理方法,找到//所在数组行,把这行//削去,//之后赋值为\0,/**/情况,找出/*所在行一直削去,直到遇到*/,把处理后的数组重新放入c源程序中,(放之前c的打开方式是wb+:为了把之前的数据删除)完毕

源程序:

No2_1.c

//1. 将合法C 源程序每行前加上行号并删除其所有注释。

#include

#include

int main()

{

printf("这是一个将c源程序每行加行号且删除其所有注释的程序")。

int i=0,j,k。

char duqu[100][1000],ch。//用这个来储存c程序,这个程序不大于100行,且每行不大于1000个字符

FILE *fp=fopen("1.cpp","r+")。

if(fp==NULL)

{

printf("打开文件失败\n")。

return 0。

}

while(!feof(fp))

{

fgets(duqu[i],1000,fp)。

i++。//读取的行数

}

for(k=i-1。k>=0。k--) //把注释消掉

{

for(j=0。j<1000。j++)

{

if(duqu[k][j]=='/' && duqu[k][j-1]!='*' && (duqu[k][j+1]=='/' || duqu[k][j+1]=='*' ) ) //这是/*情况和// 情况

{

if(k!=0 && j!=0) duqu[k][j]='\n'。//防止下面的第一行是注释,消除完后,第一行变空

else duqu[k][j]='\0'。

duqu[k][j+1]='\0'。

}

else if(duqu[k][j]=='/' && duqu[k][j-1]=='*') duqu[k][0]='\0'。//*/的这种情况}

}

fclose(fp)。//把原来的c内容删掉

fp=fopen("1.cpp","wb+")。//同上

if(fp==NULL)

{

printf("打开文件失败\n")。

return 0。

}

for(j=0,k=1。j

{

if(strlen(duqu[j])==0)

{

k--。//如果第一行为空,则跳过这次,并且不能使第一行行号变成2;所以要减去1

continue。

}

fputs("/*",fp)。

fprintf(fp, "%d",k)。

fputs("*/",fp)。

fputs(duqu[j],fp)。

}

fclose(fp)。

return 0。

}

测试数据(输入、输出):

1:没操作之前

2:操作之后

第3_1题

算法描述:

输入的是一个字符串,首先把这个字符串转化为整型数组中的数,再根据二进制转化为十进制的方法求出,具体实现过程用for循环完成,其中定义一个数学关于几的几次方的函数方便计算

源程序:

No3_1.c

#include

#include

#include

int pow(int a,int b)//次数函数

{

int sum=1。

for(b。b>0。b--) sum*=a。

return sum。

}

int main()

{

int a[100]。char b[10]。

printf("这是一个将一个二进制的字符串转化十进制的数的程序\n请输入二进制字符串:\n")。

gets(b)。

int n=strlen(b)。

int i,j,k,m,sum=0。

for(i=0。i

for(i=n-1,j=0。i>=0。i--,j++)//把二进制的数转化为十进制的数

{

sum+=pow(2,j)*a[i]。

}

printf("转化的结果为:%d",sum)。

}

测试数据(输入、输出):

第3_2题

算法描述:

首先定义一个复数的结构体,内部分别为复数的实部和虚部,有三个分支,分别为三种运算,加减乘,根据运算法则,做出c中的运算规则,如果输入错误则从新输入,最后输出结果

源程序:

No3_2.c

#include

#include

#include

int main()

{

int m,n,p,q。

struct fushu

{

int i。//实部

int j。//虚部

}a,b,c。//c是昨晚运算的结构体

char start='y'。//标志,,,当start==n时退出

for(。1。)

{

printf("请分别输入两个复数的实部,虚部(用空格间隔)\n")。

printf("请输入第一个复数:\n")。

scanf("%d%d",&a.i,&a.j)。//第一个复数

fflush(stdin)。//释放数据

printf("请输入第二个复数:\n")。

scanf("%d%d",&b.i,&b.j)。

fflush(stdin)。

xing:printf("你希望这两个复数做什么运算?\n求和运算请输入1.\n求差运算请输入2.\n求乘积运算请输入3.\n")。

scanf("%d",&m)。//选择运算方式

fflush(stdin)。

if(m==1)//求和

{

c.i=a.i+b.i。

c.j=a.j+b.j。

}

else if(m==2)//求差

{

c.i=a.i-b.i。

c.j=a.j-b.j。

}

else if(m==3)//求积

{

c.i=a.i*b.i-a.j*b.j。

c.j=a.i*b.j+a.j*b.i。

}

else {printf("输入错误,请重新输入\n")。goto xing。}//如果输入错误的话则重新输入数据

printf("运算结果是:%d+%di\n\n",c.i,c.j)。

printf("你是否要继续使用?(y/n)\n")。

scanf("%c",&start)。

fflush(stdin)。

if(start=='n') exit(0)。

}

}

测试数据(输入、输出):

1.加法运算,减法运算,乘法运算

第3_3题

算法描述:

按本程序要求,首先把十进制的数放到字符串中,为了要把十进制转化为二进制必须把这个字符串转化到整型数组,所以定义一个转化函数,再根据,十进制转化为二进制的数学方法,编出相应法则(本程序定义了,x乘以10的n次方的函数方便计算)完毕

源程序:

No3_3.c

#include

#include

int pow(int a,int b)//计算a乘以10的b次方的值

{

int sum=1。

for(b。b>0。b--)

{

sum*=10。

}

return a*sum。

}

int zhuanhua(int sum)//将十进制转化为二进制

{

int y,c=1,b[100]。//y是余数

int i。

for(i=0,y=0。sum!=0。i++)

{

b[i]=sum%2。

sum=(sum-b[i])/2。

y++。//计数

}

printf("结果是:")。

for(i=0。i

}

int main()

{

int a[100],i,j,k,sum=0。char b[100]。

printf("这是一个将一个十进制数转化为二进制的数的程序\n请输入一个十进制的数:\n")。

gets(b)。//先把是十进制的数放到一个字符串数组里面

int n=strlen(b)。//b是十进制数的位数

for(i=0。i

a[i]=b[i]-48。//把十进制数放到整型数组里面

for(i=0。i

{

sum+=pow(a[i],n-1-i)。

}

//printf("sum=%d",sum)。

zhuanhua(sum)。

}

测试数据(输入、输出):

第3_4题

算法描述:先判断输入的数的位数(这是一个子程序),再写一个子程序,按是判断一个数是否为链运算后是否为为一,如果为一,返回1给主函数,主函数中有一个变量记录链运算为1的数的个数ps:(按照题目给的链运算规则写第一个子程序)完毕

源程序:

No3_4.c

#include

#include

int weishu(int n)//判断输入的N的位数

{

int i。

for(i=1。1。i++)

{

n=n/10。

if(n==0)return i。//返回位数

}

}

int xunhuan(int n)//判断链运算后是否某为1

{

int a[100],i,k。

int j=weishu(n)。

for(。n>=10。)//44->32->13->10->1

{

for(i=0。i

{

a[i]=n%10。

n=(n-a[i])/10。

}

for(i=0。i

{

n+=a[i]*a[i]。

}

}

if(n==1) return 1。//如果符合规则返回1

else return 0。//如果不符合规则返回0

}

int main()

{

int n,m=0,a[100]。

printf("这个是计算N 、以内(包括N)数据链末尾数字是1的数据个数的程序\n请输入N:\n")。

scanf("%d",&n)。

for(n。n>0。n--)

{

if(xunhuan(n)==1) m++。//记录数据用的

}

printf("结果是:%d",m)。

}

测试数据(输入、输出):

第4_1题

算法描述:

Ktv点歌系统主要的是把主体框架搭建起来,这里实现多种功能要用到switch语句,各种case连接着一个有功能的子程序,每个功能结束返回主菜单,歌曲信息的读取还需要结构体

的定义,歌曲的信息(歌曲名,歌手,风格)放到一个文本文件中,歌曲的删除添加需要加一个密码功能,结构体有一个标记变量,这个变量用于删除歌曲时把删除的歌曲做标记

源程序:

No4_1.c

#include

#include

#include

#define SIZE 1000 //最多有1000首歌曲

struct musicdate//定义歌曲信息的结构体变量

{

char name[15]。

char singer[15]。

char style[10]。

int flag=1。//用于删除时标记的

}music[SIZE]。

void mimaServe1()//这是密码服务1,开启密码服务的

{

FILE *fp=fopen("mima.txt","ab+")。

if(fp==NULL)

{

printf("con't open this file!")。

exit(0)。

}

char mima[6]={"\0"}。//给密码初始化

fgets(mima,7,fp)。//把密码读到mima数组中

// if(strlen(mima)==0) printf("您还没有设置密码\n")。

// printf("**%s**",mima)。

if(strlen(mima)!=0) //如果开启就不用再开启,直接结束就okay

{

printf("密码服务已开启,无需再次开启\n\n")。

return。

}

else

{

restar:

printf("请输入密码,按回车键结束(密码共六位,可以是字母或数字)")。//密码由六位字符组成

gets(mima)。

if(strlen(mima)!=6)//如果不是六位则密码是设置错误

{

printf("\n格式错误,请重新输入!(密码共六位,可以是字母或数字)\n\n")。

goto restar。

}

fflush(stdin)。

printf("\n请再次出入密码")。

char check[6]={"\0"}。//防止第一次密码出入错误,第二次验证

gets(check)。

if(strcmp(check,mima)==0) fputs(mima,fp)。

else

{

printf("\n\n两次输入的不一致,请重新设置密码\n\n")。

goto restar。

}

printf("\n\n密码设置成功!\n\n")。

fclose(fp)。

}

}

void mimaServe2() //密码服务的2,用于关闭密码服务

{

FILE *fp=fopen("mima.txt","ab+")。

if(fp==NULL)

{

printf("con't open this file!")。

exit(0)。

}

char mima[6]={"\0"}。

fgets(mima,7,fp)。

// if(strlen(mima)==0) printf("您还没有设置密码\n")。

// printf("**%s**",mima)。

if(strlen(mima)==0)//如果之前没有开启密码服务,则没有必要关闭

{

printf("密码服务已关闭,请勿重新关闭\n\n")。

return。

}

if(strlen(mima)!=0)//需要输入原密码才能关闭!

{

char formerMima[6]。

for(int i=0。i<3。i++)

{

printf( "请输入原密码:")。

gets(formerMima)。

if(strcmp(formerMima,mima)==0)//如果原密码与输入密码相同,则关闭

{

printf("\n密码关闭成功!\n\n")。

fclose(fp)。

fp=fopen("mima.txt","wb+")。//打开文件时初始化

fclose(fp)。

return。

}

printf("输入错误请重新输入!\n\n")。

}

printf("您已出入错误三次;再见!")。//如果密码输入错误超过三次,则结束程序

exit(0)。

}

}

void mimaServe3()//密码服务第三种功能,修改密码

{

FILE *fp=fopen("mima.txt","ab+")。

if(fp==NULL)

{

printf("con't open this file!")。

exit(0)。

}

char mima[6]={"\0"}。

fgets(mima,7,fp)。

// if(strlen(mima)==0) printf("您还没有设置密码\n")。

// printf("**%s**",mima)。

if(strlen(mima)==0) //之前已经录入密码

{

printf("未开启密码服务!请开启!\n")。

return。

}

for(int i=0。i<3。i++)//如果跳出去则密码输入错误超过三次

{

printf("\n请输入原来的密码:")。

char formerMima[6]。

gets(formerMima)。

fflush(stdin)。

if(strcmp(formerMima,mima)==0)//如果输入正确则整个if都在改密码

{

printf("\n输入正确!\n")。

restar1:

printf("\n请输入新密码:")。

char new1[6]。

gets(new1)。

if(strlen(new1)!=6)//判断新密码位数

{

printf("\n格式错误,请重新输入!(密码共六位,可以是字母或数字)\n\n")。

goto restar1。

}

fflush(stdin)。

printf("\n请再次输入新密码:")。

char check[6]。

gets(check)。

if(strcmp(check,new1)!=0)

{

printf("\n前后输入不一致,请重新输入:\n")。

goto restar1。

}

else//进行录入

{

fclose(fp)。

fp=fopen("mima.txt","wb+")。

if(fp==NULL)

{

printf("con't open this file!")。

exit(0)。

}

fputs(new1,fp)。//录入

fclose(fp)。

printf("\n密码修改成功!\n\n\n")。

return。

}

}

printf("\n密码输入错入,请重新输入\n") 。

}

printf("\n密码输入错误三次!再见!")。

fclose(fp)。

exit(0)。

}

// 添加和删除经管员模式

/*删除歌曲或添加歌曲是,只能由经管员进行操作,这个是添加密码服务,只有经管员知道密码*/

int guanli()

{

FILE *fp=fopen("mima.txt","ab+")。

if(fp==NULL)

{

printf("con't open this file!")。

exit(0)。

}

char mima[6],mima1[6]。

fgets(mima,7,fp)。

if(strlen(mima)==0) return 1。

printf("此项功能只允许经管员使用,请输入经管员密码:")。//m没有放到最前面是因为,如果没有设置密码则不需要输入密码

for(int i=0。i<3。i++)

{

gets(mima1)。

fflush(stdin)。

if(strcmp(mima1,mima)==0)

{

printf("\n输入正确,请继续操作。\n")。

fclose(fp)。

return 1。

}

else printf("输入错误,请重新输入!\n此项功能只允许经管员使用,请输入经管员密码:")。

}

printf("您已输入三次错误!再见!")。

fclose(fp)。

exit(0)。

}

/*在点歌时,如果用户输入歌曲,系统就要检查这首歌是否存于music.txt文件中,如果不存在则系统没有该歌曲。所以就不可以点歌,之后返回主菜单*/

int jiancha(char name[15])//点歌时检查是否存在该歌曲,如果存在则返回1;并且输出歌曲信息

{

FILE *fp=fopen("music.txt","ab+")。

if(fp==NULL)

{

printf("con't open this file.")。

exit(0)。

}

int i,j。

for(i=0。!feof(fp)。i++)

fread(&music[i],sizeof(struct musicdate),1,fp)。把歌曲信息读取到结构体数组中for(j=0。j

if(strcmp(music[j].name ,name)==0)//和dete相同,如果有则输出了歌曲信息

{

printf("歌手:%s 风格:%s\n",music[j].singer ,music[j].style )。

return 1。//有该歌曲返回1,如果没有则引用该函数的函数输出,不存在该歌曲请添加

}

return 0。

fclose(fp)。

}

/*本子函数功能是添加歌曲,并把歌曲信息填入到music.txt文件中,核心是用fwrite函数*/ void add()

{

FILE *fp=(fopen("music.txt","ab+"))。

if(fp==NULL)

{

printf("con't open this file.")。

exit(0)。

}

printf("请输入要添加歌曲的数量:\n")。//添加多个歌曲

int i,j。

scanf("%d",&i)。

for(j=0。j

{

printf("请输入第%d首歌曲信息(格式:歌曲名称歌手流派)\n",j+1)。

scanf("%s%s%s",music[j].name ,music[j].singer ,music[j].style )。

fflush(stdin)。

if((fwrite(&music[j],sizeof(struct musicdate),1,fp))!=1) printf("录入失败\n")。//如果录入成功就等于1

else

{

system("cls")。

printf("录入成功\n\n\n")。

}

}fclose(fp)。

}

/*本子程序是删除歌曲功能(把歌曲信息从music.txt中删除),删除后该歌曲歌词就不能再被打开,这里用到的一个flag,该标志定义在结构体中,flag初始是1;如果删除歌曲与歌曲信息相同则flag变成0;有了这个标志,可以选择的把歌曲信息重新录入music.txt文件中*/

void dete()

{

FILE *fp=fopen("music.txt","ab+")。//录出,再选择录进,flag是删除标志

if(fp==NULL)

{

printf("con't open this file.")。

exit(0)。

}

int i,j。

char name[15]。

for(i=0。!feof(fp)。i++)

fread(&music[i],sizeof(struct musicdate),1,fp)。//读出歌曲信息

// for(i=i-2。i>=0。i--)printf("name:%s singer:%s style:%s\n",music[i].name,music[i].singer ,music[i].style )。

printf("请输入要删除的歌曲名称:\n")。

gets(name)。

int a=jiancha(name)。//检查歌曲是否存在

if(a==0)

{

system("cls")。

printf("不存在该歌曲,操作失败!\n\n\n")。

return。

}//检查是否存在此歌曲

for(j=0。j

if(strcmp(music[j].name ,name)==0) music[j].flag=0。

fclose(fp)。

fp=fopen("music.txt","wb")。//把原来的歌曲信息从music.txt中删除

if(fp==NULL)

{

printf("con't open this file.")。

exit(0)。

}

for(j=0。j

if(music[j].flag!=0) fwrite(&music[j],sizeof(struct musicdate),1,fp)。//选择性重新录入歌曲信息

system("cls")。

printf("删除成功\n")。

fclose(fp)。

}

/*这个子函数功能是点歌,(只有在music.txt里面存了该歌曲才可以打开该歌词,否则就算歌词存在也没有用),输入歌曲名字,如果music.txt中有与之相对应的歌曲名则打开该歌曲歌词*/

void choose1(){

printf("请输入要点的歌曲名称:\n")。

char name[15]。//用于储存用户输入的歌曲名称

char geci[50][50]。//储存读取歌词

int i,j。

gets(name)。

int a=jiancha(name)。//检查该歌曲是否存在,如果存在则函数返回1

if(a==0)

{

printf("不存在该歌曲,请添加!\n\n\n")。

程序设计基础实验指导书

说明 每个实验做完以后,按照实验报告模板格式完成相应的实验报告,存储为word 文档,最终提交的实验文档数量种类和命名原则如下例:(不按要求 者拒收) 目录结构图目录实验 1 内的文件种类和命名原则实验报告成绩将作为平时成绩的一部分计算到期末总成绩中。 实验报告严禁相互抄袭,一经发现抄袭和被抄袭者本次实验按零分计算!

实验1 C 的实验环境和C 语言的数据类型 1. 实验目的 ⑴ 了解在具体的语言环境下如何编辑、编译、连接和运行一个C 程序。 ⑵ 通过运行简单的C 程序,初步了解C 源程序的特点。 ⑶ 掌握C 语言数据类型, 熟悉如何定义一个整型、字符型和实型的变量,以及对它 们赋值的方法。 ⑷ 掌握不同的类型数据之间赋值的规律。 ⑸ 学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+ +)和自减(--)运算符的使用。 2. 实验内容和步骤 检查所用的计算机系统是否已安装了C 编译系统并确定他所在的子目录。 进入所用的集成环境。 熟悉集成环境的界面和有关菜单的使用方法。 输入并运行一个简单的、正确的程序。 3. 实验题目 输入下面的程序 # include "stdio.h" void main() { printf( "This is a c program.\n" ); } 程序无误,其运行的结果为:(请填写) ⑵ 输入并编辑一个有错误的 C 程序。 # include “ stdio.h ” void main() { int a,b,sum a=123; b=456; sum=a+b print( “ suism%d n” ,sum); } 运行后程序出现几处错误,请分别指出,并逐一更改: ⑶ 若k,g 均为int 型变量, 则下列语句的输出为, : # include "stdio.h" void main() { int k, g; k=017; g=111;

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

《程序设计基础》试卷B及答案

黄淮学院计算机科学系2007-2008学年度第一学期 期末考试《程序设计基础》B 卷 注意事项:本试卷适用于计科系06级本科计算机科学与技术专业学生。 1.__ ____函数是程序启动时惟一的入口。 2.算法的复杂性包含两方面: 和 。 3.已知 char c= 'a' ; int x=2,k; 执行语句k=c&&x++ ; 则x 为 ,k 为 。 4.数值0x34对应的十进制为 。 5.已知int a ; 则表达式”(a=2*3 , 3*8), a*10”的结果为_ _ ____,变量a 的值为___ ___。 6.面向对象程序开发步骤为: 、 和面向对象实现。 1.下列程序设计语言中( )是面向对象语言。 A. FORTRAN B. C 语言 C. C++ D. 汇编语言 2.下列关于注释的说法哪个是错误的( )。 A. 注释不是程序中的可执行语句 B. 注释对于程序的执行有很重要的意义 C. 注释将在程序的编译阶段被编译器剔除 D. 编程时在程序中添加适当的注释是一个良好的编程风格 3.算法设计应该遵守( )的设计原则。 A. 自底向上,逐步求精 B. 自顶向下,逐步求精 C. 自底向上,同步扩展 D. 自顶向下,同步扩展 4.下列语句执行后a 的值为( )。 int a=4, &z=a, k=3; a=k; z+=2; k++; A. 0 B. 4 C. 1 D. 5 5.以下程序执行后,屏幕输出为( )。 #include “iostream.h ” void fun(int d) {d++;} void main() { int d=3; fun(d); d++; cout<=’a ’)&&(d<=’z ’) B. ‘a ’<=d<=’z ’ C. (d>=’a ’)||(d<=’z ’) D. ‘A ’<=d<=’Z ’ 8.已知:int k=7, x=12; 则执行语句( )后x 的值为0。 A. x+=k-x%5; B. x+=(x-k%5); C. x%=(k-=5); D. (x-=k)-(k+=5); 9.运行下列程序,其输出结果为( )。 #include “iostream.h ” void main() { int x(5),y(5),z(5); y--&&++x&&z--||y++; cout<

程序设计基础实验报告

《程序设计基础》 实验报告 专业班级: 姓名: 学号:

实验一 面向过程的简单程序设计 1.实验目的要求 (1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程, 初步了解C++程序的特点。 (2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运 算符和表达式的使用。 (3) 掌握赋值语句的使用。 (4) 掌握数据的输入输出方法。 2.实验内容 (1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 <1> d c b a x -++ <2> 11 11+++x x <3> sinX+cosX+tan -1 X <4> e x+y +e x-y <5> log 10(1+21x +) <6> 22b a -+??b a - (其中??a 表示取不大于a 的最大整数)。 <1> #include using namespace std; int main() { float x,a,b,c,d,e; cin>>x>>a>>b>>c>>d; e=x+(a+b)/(c-d); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sqrt(1+1/(x+1/(x+1)));

cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< #include #include using namespace std; int main() { double x,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< #include #include using namespace std; int main()

程序设计基础实验内容

实验指导 实验一 Visual C++开发环境使用 1.实验目的 (1)熟悉Visual C++集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include ; int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容 (1)整数相除 #include<> int main() {

int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include<> int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include<> int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的 (1)掌握格式字符使用的方法。 (2)掌握printf()进行格式化输出的方法。 (3)掌握scanf()进行格式化输入的方法。 2.实验内容 (1)输入如下程序,观察运行结果 #include<>

程序设计基础课程设计

设计题目:学生成绩管理系统班级:计0902 姓名:付乐颖 学号:20091221067 完成日期:2010.10.15

1. 课程设计目的和要求 随着科学的发展和社会的进步,许多过去有人工处理的繁杂事务开始交付计算机来完成。学生成绩管理系统可以说是一个得力助手,它利用计算机对学生成绩进行统一管理,实现学生成绩信息管理工作流程的系统化、规范化和自动化,提高了广大教师的工作效率。 本程序旨在训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件等的各种基本操作,使学生能对C语言的文件操作有一个更深的理解。为进一步开发出高质量的信息管理系统打下坚实的基础。 2. 课程设计任务内容 学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。

程序设计基础试题和答案解析二

《程序设计基础》考试试卷二 1.1966年,Bohra和Jacopini提出的三种基本程序设计结构是:________ A.if、while和for; B. switch、do-while和for; C.while、do-while和for; D.顺序结构、分支结构和循环结构。 2.算法的特征不包括:______。 A.有穷性 B.可行性 C.确定性 D.有1个或者多个输入。 3.C语言源程序的基本组成单位是______。 A.函数 B. 语句 C. 声明和语句 D. 文件 4.下列标识符中,只有______是合法的。 A.if B. 3ab C. Int D. A-4 5.下列常量中,只有______是合法的。 A.3e-0.3 B. ‘abc’ C. 02a1 D. ‘\377’ 6.下列说法中正确的是:______。 A.C语言中的for语句的三个表达式都可以省略,而且分号也可以省略。 B.宏替换比函数调用的执行速度慢。 C.实质上,C语言中的指针就是一个变量的地址。 D.C语言中的任何函数都可以由程序员命名。 7.C语言中,运算对象必须是整型的运算符是_______。 A./ B. % C. + D. - 8.以下叙述中错误的是_______。 A.C语句必须以分号结束 B.复合语句在语法上被看作一条语句 C.空语句出现在任何位置都不会影响程序运行 D.赋值表达式末尾加分号就构成赋值语句 9.以下叙述中正确的是_______。 A.调用printf函数时,必须要有输出项 B.使用putchar函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码10.以下关于函数的叙述中正确的是_______。 A.每个函数都可以被其它函数调用(包括main函数) B.每个函数都可以被单独编译 C.每个函数都可以单独运行 D.在一个函数内部可以定义另一个函数 11.有以下程序段typedef struct NODE{ int num; struct NODE *next;

大学程序设计基础实验报告 (2)

**大学程序设计基础实验报告 实验名称:实验三分支结构 实验目的: 1、掌握IF-ELSE语句使用。 2、掌握ELSE-IF语句使用。 3、熟悉SWITCH语句使用。 实验内容: 在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。启动C-Free,完成如下各题。 1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a 和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac<0)。 2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。tax=rate * (salary –850),rate的计算方式如下: 当salary <= 850,则rate = 0; 当850 < salary <= 1350,则rate = 5%; 当1350 < salary <= 2850,则rate = 10%; 当2850 < salary <= 5850,则rate = 15%; 当salary > 5850,则rate = 20%;。 3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三 角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。等腰直角算作等腰)。 4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进行乘、 除或求余运算。【请分别用if语句和switch语句实现此题功能】 上交作业的方法: 1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这 次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。 2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学 号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上 交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件 夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。 特别提醒:每次上传的文件名一定要是“学号姓名-实验序号. doc”(如1720115555张

C语言程序设计基础实验报告3【VIP专享】

实验3 逻辑结构程序设计一、实验目的 1、了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真” )。 2、学会正确使用逻辑运算符和逻辑表达式。 3、熟练掌握if 语句和switch 语句。 4、结合程序掌握一些简单的算法。 5、学习调试程序。 二、实验内容和步骤 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 1、改错题。给定程序MODI1.C 的功能是:对于如下函数: 用scanf 函数输入x 的值,求y 值。/* MODI1.C */#include void main() { int x, y; /***********found***********/ scanf ("%d", &x);if ( x < 1 )y = x; /***********found***********/else if ( 1 <=x&& x < 10 ) y = 2*x -1 ; else y = 3*x -11; printf("y = %d\n", y ); } 程序中有两处错误,错误都在提示行: /***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! 修改程序后,运行程序,输入x 的值(分别为x<1、1≤x<10、x ≥10三种情况,如0.5、8、15),检查输 出的y 值是否正确。 ?? ? ??≥-<≤-<=)10(113) 101(12)1(x x x x x x y

2、从键盘输入某学生的考试成绩,要求输出成绩等级A 、B 、C 、D 、E 。学生的成绩可分成5个等级,90- 100分为A 级,80-89分为B 级,70-79分为C 级,60-69分为D 级,0-59分为E 级。要求在输入负数时, 给出错误提示。 ① 事先编好程序,要求分别用if 语句和switch 语句实现。运行程序,并检查结果是否正确。 ② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之 能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。 3、给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位 数字,例如:原数据为321,应输出123。(BX4.6) 分别用1位正整数、2位正整数、3位正整数、4位正整数、5位正整数作为测试数据进行测试。 除此之外,程序还应当对不合法的输入作必要的处理。例如:当输入负数时或输入的数超过5位(如123 456)数时。4、输入3 个整数,要求按由小到大的顺序输出。

程序设计基础课程设计报告 内容样例

第一章目的与要求 书上有。 第二章需求分析 软件设计的一个重要的环节就是需求分析。本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是ATM取款机管理系统所需要的需求分析。 ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。 ①登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面 ②挂失功能: 确认是否对银行卡进行挂失,挂失后账户无法操作 ③修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码 ④取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内 ⑤转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账

号 ⑥查询功能: 用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额 模拟ATM取款机的操作: 首先录入账户信息,格式如下 ㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 ㈡、查询功能:查询账户余额。 ㈢、取款功能:取款,更新余额。 ㈣、挂失功能:挂失后,该账户不能进行任何操作。 ㈤、修改密码:输入原密码和新设置密码。 ㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析 3.1、ATM系统管理 3.1.1系统基本功能 首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并与ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。 基本功能: 登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 查询功能---------查询账户余额。 取款功能---------取款,更新余额。 挂失功能---------挂失后,该账户不能进行任何操作。 修改密码---------输入原密码和新设置密码。 转账功能---------输入转账的转出账户以及转账金额,进行转账。、

程序设计基础试题_03_答案.doc

学院领导 审批并签名 A / B卷 广州大学 学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查)学院系专业班级学号姓名 分数 评分 一:选择题(每题3分,共60分) (1)若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为(A)

A) double B) float C) int D) char (2)设a=1,b=2,c=3,d=4,则表达式:a=10 or a<=0 B)a>=10│a<=0 C)a>=10││a<=0 D)a>=10 ││ a<=0 (7)下列可 作为C语言赋值语句的是(C) A) x=3,y=5 B) a=b=6 C) i--; D) y=int(x); (8)设i是int型变量,f是float型变量,用下面的语句给这两个变量输 入值: scanf(i=%d,f=%f,&i,&f); 为了把100和765.12分别赋给i和f,则正确的输入为(A) A) 100765.12 B) i=100,f=765.12 C) 100765.12 D) x=100y=765.12 (9)给出以下定义: char x[ ]=abcdefg;

程序设计基础课程设计

1 矩阵的操作(6人) 设有两个矩阵A=(a ij)m×n,B=(b ij)p×q 实现要求: ⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。(不能使用全局变量) ⑵编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出。 ⑶求矩阵的转置,矩阵的转置A’=(a ji)n×m,转置前输出原矩阵,转置后输出转置矩阵。 ⑷求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C。 C=A+B=(c ij)m×n,其中c ij=a ij+b ij ⑸求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B 如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D。 D=A×B=(d ij)m×q,其中d ij=∑a ik×b kj,k=1,2,……,n ⑹设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。

2 数据汇总 (6人) 问题描述: 在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。 假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。实现要求: ⑴编写实现将数据记录插入到数据文件的最后的函数; ⑵编写以收款机为单位的数据分类处理函数。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表; ⑶统计每台收款机的销售总额; ⑷编写以商品为单位的数据分类处理函数。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表; ⑸以商品为单位,统计每种商品的销售总额。 ⑹设计一个菜单,具有插入数据记录、按收款机统计销售总额、按商品统计销售总额、退出系统等最基本的功能。

C语言程序设计基础实验报告6【VIP专享】

实验6 数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组和字符串函数的使用; 3、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、以下给定程序MODI1.C的功能是: 求一维数组a中所有元素的平均值, 结果保留两位小数。例如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9时,程序的输出应为:The aver is: 9.10 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9}, i; /************found************/ /************found************/ s = a[0]; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、以下给定程序MODI1.C的功能是:求二维数组a中的最小值。 例如,当二维数组a中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5}, i, j, min; clrscr();

程序设计基础实验内容

实验指导 实验一 Visual C++6.0开发环境使用 1.实验目的 (1)熟悉Visual C++6.0集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include (stdio.h); int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容

(1)整数相除 #include int main() { int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&& a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的

《测量程序设计课程设计》指导书-2015

测量数据处理程序设计指导书 设计名称:测量数据处理程序设计 计划周数:2周 适用对象:测绘工程专业本科 先修课程:测量学,测量平差基础,大地控制测量,测量程序设计 一、设计目的 测量数据处理程序设计是学生在系统学习完大地控制测量学、测量平差基础、测量程序设计等相关课程之后,为了系统理解控制网平差的整体过程及综合运用科学工具而安排的。通过课程设计主要达到以下几个目的:掌握控制网平差课程设计具体内容、方法和步骤;通过理论联系实际,进一步巩固已学到的专业理论知识,并加深对理论的认识;培养学生对编写代码,上机调试和编写说明书等基本技能;锻炼学生阅读各类编程参考书籍及加以编程运用的能力。 二、设计内容及日程 在VB、 VC软件或matlab科学计算软件的平台上,选择的具体课程设计题目,进行程序设计与实现,共计10个工作日,工作程序如下: 三、设计的组织: 1.设计领导 (1)指导教师:由教研室指派教师、实验员兼任。

职责:全面组织设计大纲的实施,完成分管工作及相关技术指导。 (2)设计队长:学生班长兼任。 职责:协助教师做好本班学生的人员组织工作。 (3)设计组长:每组一人。 职责:组织执行下达的设计任务,安排组内各成员的工作分工。 2.设计分组 学生实习作业组由3~4人组成(含组长一人)。 四、设计内容 在VB、VC或MATLAB 软件平台上,按选择的设计题目进行相关程序开发 1、闭合导线简易平差、附合导线简易平差支导线计算 2、闭合水准网计算、附合水准网简易平差 3、地形图编号(新、旧两种方法) 4、误差椭圆的参数的计算与绘制误差椭圆 5、水准网严密平差 6、高斯正反算计算 7、高斯投影换带计算 8、七参数大地坐标转换(WGS84-bj54坐标转换、WGS84-CGCS2000坐标转换) 9、四参数坐标转换(西安80-bj54坐标转换、CGCS2000-bj54坐标转换、CGCS2000-西安80坐 标转换(平面) 10、大地高转换为正常高的计算 11、工程投影变形超限的处理 12、遥感图像数据处理 13、曲线(曲面)拟合 14、摄影测量空间后方交会 15、****管理信息系统设计与开发 五、上交成果 1) 小组利用vb、vc或matlab编写的软件包一个及测试数据一份 2)小组关于所开发程序设计说明书一份 3) 个人课程设计的心得一份 4)小组答辩PPT一份

西交大《程序设计基础》试题及答案

西交大《程序设计基础》试题及答案 一、单项选择题(本大题共20小题,每小题2分,共40分) 1.int a[10];合法的数组元素的最小下标值为()。A:10 B:9 C:1 D:0 答案:D 2.以下运算符中优先级最低的是()。A:&& B:& C:|| D:| 答案:C 3.若使用一维数组名作函数实参,则以下正确的说法是()。A:必须在主调函数中说明此数组的大小B:实参数组类型与形参数组类型可以不匹配C:在被调用函数中,不需要考虑形参数组的大小D:实参数组名与形参数组名必须一致答案:A 4.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer 代表的是()。 A:一个整数,代表要读入的数据项总数B:一个文件指针,指向要读的文件C:一个指针,指向要读入数据的存放地址D:一个存储区,存放要读的数据项答案:C 5.对以下说明语句int a[10]={6,7,8,9,10}; 的正确理解是()。A:将5个初值依次赋给a[1]至a[5] B:将5个初值依次赋给a[0]至a[4] C:将5个初值依次赋给a[6]至a[10] D:因为数组长度与初值的个数不相同,所以此语句不正确答案:B 6.下列程序的输出结果是()。main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case case } case 2:a++;b++;break; case 3:a++;b++;break; } printf(\} A:a=1,b=0 B:a=2,b=1 C:a=1,b=1 D:a=2,b=2 答案:B 7.下列程序的输出结果为()。main() {int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(\ 0:a++;break; 1:b++;break; } A:27.000000 B:27.500000 C:28.000000 D:28.500000 答案:A 8.若k为int型变量,则以下程序段的执行结果是()。k=-8567; printf(\A:格式描述符不合

计算机程序设计基础实验12个实验

《计算机程序设计基础》实验教学 大纲 课程编号:1303072 实验学时:24课程学分:3.5 课程类型:必修教学对象:全校各非计算机专业先修课程: ㈠实验目的与要求  本实验课程面向文法学院学生,通过本课程的学习与实验,使学生了解程序设计的一些基本概念,掌握计算机程序设计的一般方法,具备使用计算机解决实际问题的初步能力。 在实验教学中提倡“实验前要准备,实验中要认真,实验后要总结”;突出上机实践操作环节,强调在教师指导下的以学生为中心完成每次上机的具体内容和要求;对于普遍问题采用领练、辅导有机

结合的方法;尽量采用 CAI 辅助教学软件。 通过实验教学使学生能够建立计算机程序设计的基本概念;在简单的程序设计过程中掌握Visual Basic可视化设计的步骤,逐步搞清什么是对象、对象的属性以及事件和方法等重要概念。在此基础上,掌握程序设计的3种基本结构。 ㈡实验考核方式与成绩评定方法考核方式: 1.考核学生每次实验完成情况; 2.考核学生的计算机基本操作能力; 3.上机考试 成绩评定:学生应按照每次实验的要求,完成指定的实验任务,并按要求提交实验报告和实验文件,成绩评定由实验指导教师根据学生实验完成情况按照优秀、良好、中等、合格、不合格五个等级给出,实验成绩占20%计入学生课程成绩。  本学期需上交实验报告为三次,实验报告实验要求用本校实验报告册书写。要求填写学号、班级、姓名、实验指导老师、实验日期,报告内容包括实验名称、实验目的、实验内容、详细操作步骤及结果,最好写出自己的上机体会和总结。

㈢ 实验项目设置 根据教学内容和实验教学目的,共设4个实验项目: 项目一,认识Visual Basic,包括2个实验; 项目二,程序设计基础,,包括6个实验; 项目三,常用控件及界面设计,包括2个实验;项目四,文件管理,包括1个实验; 总的实验数为12个实验。 实验项目名称实验内容与学时分配总学时 数 认识Visual Basic 1.Visual Basic 程序设计环 境 2.窗体和最基 本控件 4 程序设计基础1.数据类型及函数 2.顺序程序设计 3.分支结构程序设计4.循环结构程序设计5.数组 6.过程 12 常用控件及界面设计1.常用标准控件 2.界面设计 4 文件管理1.文件管理2

C++面向对象程序设计课程设计报告

. 课程设计 课程名称C++面向对象程序设计题目名称公司人员管理系统 专业班级13级计算机科学与技术一班学生林涛、甑德胜、梁增辉 吴志伟、齐、江靖 学号51302011015、51302011016、51302011001 51302011037、51302011006、51302011009指导教师郭有强 二○一四年六月二十日

目录 一、引言 (2) 二、课程设计报告 (4) 1、问题描述 (4) 2、系统总体方案 (4) 3、设计思路和主要步骤 (5) 4、各功能模块和流程图 (5) (1)各功能模块 (5) (2)流程图 (6) 三、系统测试 (9) 四、心得体会 (15) 五、参考文献 (17) 附:程序设计代码 (18)

一、引言 1985年,管理信息系统的创始人,高登?戴维斯给出的管理信息系统的定义是:“它是一个利用计算机硬件和软件,手工作业,分析、计划、控制和决策模型,以及数据库的用户一机器系统。它能提供信息,支持企业或组织的运行、管理和决策。”这个定义说明了管理信息系统的组成要素:计算机硬件、软件、数据库、模型库和用户。 随着我国社会的不断进步,人们对管理信息系统越来越重视,再加之管理信息系统在管理方面所产生的巨大影响,也使得人们越来越关注管理信息系统的发展趋势。由于管理信息系统的发展受到以上各种变革因素的制约,传统的管理信息系统必然向现代管理信息系统发展,在这个发展过程中,管理信息系统的发展将会呈现出以下趋势: 管理信息系统将会越来越注重以人为本。管理科学的发展有科学管理理论、行为管理理论和现代管理理论三个发展阶段,正在向着越来越人性化的方向发展,即以人为本。基于管理学的这一研究视角,管理信息系统也将向着更加人性化的方向发展。在今后的管理信息系统中将会越来越注重人的因素,以人为出发点和中心,围绕着激发和调动人的主动性、积极性、创造性展开的,以实现人与社会共同发展的一系列管理活动。而且这种人性化还会贯穿于管理信息系统的开发设计与研究中,具体表现为今后的管理信息系统将具有更加友好的人机界面,易于人们操作,也会考虑到不同用户的不同需求,更加个性化。 管理信息系统向智能化方向发展。随着人工智能技术的发展,数据仓库、数据挖掘技术在管理信息系统中的应用,管理信息系统必将向着智能化方向发展,如产生了很多的决策支持系统、专家系统等等。智能化的管理信息系统具有思维模拟活动,它具有很高的自学习、自组织和进化性,并具有知识创新功能,可以解决非结构化事务,在决策中处于主导地位,是人的向导,在体系上将是大规模分布式计算模式,以基于网络神经元构件的智能网为主。 管理信息系统向集成化方向发展。随着当前系统集成技术的提高,集成技术和方法也逐步地运用到管理信息系统中。由于管理信息系统将包含多个子系统,因此将这些功能集合在一起以便更好地发挥它的作用,这就是集成化的管理信息系统。集成化的管理信息系统将管理信息系统的各个子系统有机地结合起来,达到互通信息、共享数据资源的目的,其支撑技术是数据库和计算机网络。集成管

相关文档
相关文档 最新文档