C语言常见、经典的上机实验题目_第1页
C语言常见、经典的上机实验题目_第2页
C语言常见、经典的上机实验题目_第3页
C语言常见、经典的上机实验题目_第4页
C语言常见、经典的上机实验题目_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.3常见、经典的上机实验题目1、/*功能:数组x有十个元素,编程将其元素首尾颠倒。(即第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换…)。*/main(){inta[10]={5,65,654,5,5,56,588,77,58,5},j,x;for(j=0;j<5;j++){x=a[j];a[j]=a[9-j];a[9-j]=x;}for(j=0;j<10;j++)printf("%d\t",a[j]);}2、/*功能:统计输入的一串字符(假设以‘\n’结束)中,大写字母A,B,...,Z各出现的次数。

(提示,用一个数组count[26]计数各个字母出现的次数,count[0]表示A出现的次数,count[1]表示B出现的次数,...,count[25]表示字母Z出现的次数。初始时count的各元素值为0。以后,每读入一个字符ch,若它是一个大写字母,就让相应计数单元count[ch-'A']加1。*/main(){intcount[26],i;charch[80];for(i=0;i<26;i++)count[i]=0;gets(ch);for(i=0;i<strlen(ch);i++)if(ch[i]>='A'&&ch[i]<='Z')count[ch[i]-'A']++;for(i=0;i<26;i++)printf("%c%d\t",'A'+i,count[i]);}3、/*功能:键盘输入若干数,输出它们的平均值,输入值为-1时,结束输入*/main(){intx,i=1,s;scanf("%d",&x);while(x!=-1){s=s+x;i++;scanf("%d",&x);}printf("%d\n",s/i);}4、/*功能:在字符串str中查找字符ch首次出现的位置,若str字符串中不包含字符ch,则输出0。(例如:若str为"china",ch为'a',则输出5*/#include<stdio.h>main(){charstr[20],ch;inti,m=0;ch=getchar();gets(str);for(i=0;str[i]!='\0';i++)if(str[i]==ch){m=1;break;}if(m==1)printf("%d\n",i+1);elseprintf("%d\n",0);}5、/*程序功能:求Fibonacci数列的前40个数。*/main(){longintf1=1,f2=1; /*定义并初始化数列的头2个数*/inti=1; /*定义并初始化循环控制变量i*/for(;i<=20;i++) /*1组2个,20组40个数*/{printf("%15ld%15ld",f1,f2); /*输出当前的2个数*/if(i%2==0)printf("\n"); /*输出2次(4个数),换行*/f1+=f2;f2+=f1; /*计算下2个数*/}}6、/*程序功能:输出10~100之间的全部素数。*/main(){inti=11,j,counter=0;for(;i<=100;i+=2) /*外循环:为内循环提供一个整数i*/{for(j=2;j<=i-1;j++) /*内循环:判断整数i是否是素数*/if(i%j==0) /*i不是素数:因为能被2~(i-1)之间的某个数整除*/break; /*强行结束内循环,执行下面的if语句*/if(counter%10==0) /*每输出10个数换一行*/printf("\n");if(j>=i) /*整数i是素数:输出,计数器加1*/{printf("%6d",i);counter++; }}}7、/*程序功能:有一个整型的二维数组,大小为6×3,要求找出最大值所在的行和列,并输出。*/main(){intx[6][3],i,,j,a=0,b=0,max;for(i=0;i<6;i++)for(j=0;j<3;j++)scanf("%d",&x[i][j]);max=x[0][0];for(i=0;i<6;i++)for(j=0;j<3;j++)if(x[i][j]>max){a=i;b=j;max=x[i][j];}printf("%d%d%d\n",max,a,b);}8、/*功能:从键盘上任意输入n个整数,用冒泡法按从小到大地排序,并在屏幕上显示出来。*/#include"stdio.h"#defineNUM10 /*定义符号常量(数据个数N)*/main() {intdata[NUM]; /*定义1个1维整型数组data*/ inti,j,temp; /*定义循环变量和临时变量*/ clrscr(); /*库函数clrscr():清屏*/ printf("Pleaseinput10numbers:\n"); for(i=0;i<NUM;i++) scanf("%d",&data[i]); /*冒泡法排序*/ for(i=0;i<NUM-1;i++) /*外循环:控制比较趟数*/ for(j=NUM-1;j>i;j--) /*内循环:进行每趟比较*/ if(data[j]<data[j-1]) /*如果data[j]大于data[j-1],交换两者的位置*/ {temp=data[j]; data[j]=data[j-1]; data[j-1]=temp; }; /*输出排序后的数据*/ printf("\ntheresultofsort:\n"); for(i=0;i<NUM;i++) printf("%d",data[i]); getch(); /*库函数getch():等待键盘输入任一字符,目的使程序暂停*/ }9、/*功能:从键盘上循环输入某课程的平时、实习、测验和期末成绩,*//*按10%,20%,20%,50%的比例计算总评成绩,并在屏幕*//*上显示出来。按空格键继续循环,其他键终止循环。*/#include"stdio.h"main() {inti=1,j; charcon_key='\x20'; /*'\x20'空格键的ASCII码*/ floatscore[5],ratio[4]={0.1,0.2,0.2,0.5};/*定义成绩、比例系数数组*/ while(con_key=='\x20') {clrscr(); printf("输入第%2d个学生的成绩\n",i++); printf("平时实习测验期末成绩\n"); score[4]=0; /*score[4]:存储总评成绩*/ for(j=0;j<4;j++) {scanf("%f",&score[j]); score[4]+=score[j]*ratio[j]; } printf("总评成绩为:%6.1f\n",score[4]); printf("\n按空格键继续,其它键退出"); con_key=getch(); /*getch()函数等待从键盘上输入一个字符*/ } }10、/*功能:计算个人平均成绩与各科平均成绩,并在屏幕上显示出来。*/#defineNUM_std5 /*定义符号常量人数为5*/#defineNUM_course4 /*定义符号常量课程为4*/#include"stdio.h"main() {inti,j; staticfloatscore[NUM_std+1][NUM_course+1]={{78,85,83,65},{88,91,89,93},{72,65,54,75}, {86,88,75,60},{69,60,50,72}}; /*以上定义一个(NUM_std+1)*(NUM_course+1)的2维数组,并初始化,留下最后一列score[i][NUM_course]存放个人平均成绩,最后一行score[NUM_std][i]存放学科平均成绩*/ for(i=0;i<NUM_std;i++) {for(j=0;j<NUM_course;j++) {score[i][NUM_course]+=score[i][j]; /*求第i个人的总成绩*/ score[NUM_std][j]+=score[i][j]; /*求第j门课的总成绩*/ } score[i][NUM_course]/=NUM_course; /*求第i个人的平均成绩*/ } for(j=0;j<NUM_course;j++) score[NUM_std][j]/=NUM_std; /*求第j门课的平均成绩*/ clrscr(); /*输出表头*/ printf("学生编号课程1课程2课程3课程4个人平均\n"); /*输出每个学生的各科成绩和平均成绩*/ for(i=0;i<NUM_std;i++) {printf("学生%d\t",i+1); for(j=0;j<NUM_course+1;j++) printf("%6.1f\t",score[i][j]); printf("\n"); } /*输出1条短划线*/ for(j=0;j<8*(NUM_course+2);j++) printf("-"); printf("\n课程平均"); /*输出每门课程的平均成绩*/ for(j=0;j<NUM_course;j++) printf("%6.1f\t",score[NUM_std][j]); printf("\n"); getch(); }11、/*功能:简单密码检测程序*/#include"stdio.h"main() {charpass_str[80];/*定义字符数组passstr*/ inti=0; /*检验密码*/ while(1) {clrscr(); printf("请输入密码\n"); gets(pass_str);/*输入密码*/ if(strcmp(pass_str,"password")!=0) /*输入的字符串不等于"password"*/ printf("口令错误,按任意键继续"); else break;/*输入正确的密码,中止循环*/ getch(); i++; if(i==3)exit(0);/*输入三次错误的密码,退出程序*/ } /*其他语句……*//*输入正确密码所进入的程序段*/ }12、/*功能:通过函数的递归调用计算阶乘*/longpower(intn){longf; if(n>1)f=power(n-1)*n; elsef=1; return(f);}main() {intn; longy; printf("inputainteagernumber:\n"); scanf("%d",&n); y=power(n); printf("%d!=%ld\n",n,y); getch(); }13、/*功能:计算个人与各科平均成绩及全班平均成绩,并在屏幕上显示出来。*/#defineM5/*定义符号常量人数为5*/#defineN4/*定义符号常量课程为4*/#include"stdio.h"main() {inti,j; voidaver(floatsco[M+1][N+1]); staticfloatscore[M+1][N+1]={{78,85,83,65},{88,91,89,93},{72,65,54,75}, {86,88,75,60},{69,60,50,72}}; /*以上定义一个(M+1)*(N+1)的二维数组,并进行初始化, */ /*留下最后一列score[i][N]存放个人平均成绩,*/ /*最后一行score[M][i]存放学科平均成绩,*/ /*最后一个元素score[M][N]存放全班总平均 */ aver(score); /*调用函数,2维数组名作为实参*/ clrscr(); printf("学生编号课程1课程2课程3课程4个人平均\n"); for(i=0;i<M;i++) {printf("学生%d\t",i+1); for(j=0;j<N+1;j++) printf("%6.1f\t",score[i][j]); printf("\n"); } for(j=0;j<8*(N+2);j++)printf("-"); /*画一条短划线*/ printf("\n课程平均"); for(j=0;j<N+1;j++)printf("%6.1f\t",score[i][j]); printf("\n"); getch(); }voidaver(floatsco[][N+1]) /*定义函数,2维数组名作为形参*/ {inti,j;for(i=0;i<M;i++) {for(j=0;j<N;j++) {sco[i][N]+=sco[i][j];/*求第i个人的总成绩*/ sco[M][j]+=sco[i][j]; /*求第j门课的总成绩*/ sco[M][N]+=sco[i][j]; /*求全班总成绩*/ } sco[i][N]/=N; /*求第i个人的平均成绩*/} for(j=0;j<N;j++)sco[M][j]/=M; /*求第j门课的平均成绩*/ sco[M][N]=sco[M][N]/M/N; /*求全班总平均成绩*/}/*案例代码文件名:C程序7_7.C*//*功能:利用全局变量计算长方体的体积及三个面的面积*/ints1,s2,s3;intvs(inta,intb,intc) {intv; v=a*b*c;s1=a*b;s2=b*c;s3=a*c; returnv; }main() {intv,l,w,h; clrscr(); printf("\ninputlength,widthandheight:"); scanf("%d%d%d",&l,&w,&h); v=vs(l,w,h); printf("v=%ds1=%ds2=%ds3=%d\n",v,s1,s2,s3); getch(); }14、/*程序功能:使用指针变量求解2个整数的升序输出*/main(){intnum1,num2;int*num1_p=&num1,*num2_p=&num2,pointer;/*定义并初始化指针变量num1_p和num2_p*/printf("Inputthefirstnumber:");scanf("%d",num1_p);printf("Inputthesecondnumber:");scanf("%d",num2_p);printf("num1=%d,num2=%d\n",num1,num2); /*输出2个变量的初值*/if(*num1_p>*num2_p) /*如果num1>num2,则交换指针*/pointer=num1_p,num1_p=num2_p,num2_p=pointer;printf("min=%d,max=%d\n",*num1_p,*num2_p);}15、/*程序功能:实现动态数组*/#include"alloc.h"#include"stdlib.h"main(){int*array=NULL,num,i;printf("Inputthenumberofelement:");scanf("%d",&num);array=(int*)malloc(sizeof(int)*num); /*申请动态数组使用的内存块*/if(array==NULL) /*内存申请失败:提示,退出*/{printf("outofmemory,pressanykeytoquit……"); exit(0); /*exit()库函数:终止程序运行,返回操作系统*/}/*提示输入num个数据*/printf("Input%delements:",num);for(i=0;i<num;i++)scanf("%d",&array[i]);/*输出刚输入的num个数据*/printf("%delementsare:",num);for(i=0;i<num;i++)printf("%d,",array[i]);printf("\b"); /*删除最后一个数据后的分隔符“,”*/free(array); /*释放由malloc()函数申请的内存块*/}16、/*程序功能:用函数调用方式,实现字符串的复制*//************************************************************//*string_copy()函数:复制一个字符串*//*形参:字符指针str_from接收源串,字符指针str_to存储目标串*//*返回值:无*//************************************************************/voidstring_copy(char*str_from,char*str_to){inti=0;for(;(*(str_to+i)=*(str_from+i))!='\0';i++); /*循环体为空语句*/}main(){staticchararray_str1[20]="Iamateacher.";chararray_str2[20];string_copy(array_str1,array_str2); /*数组名作实参*/printf("array_str2=%s\n",array_str2);}17、/*功能:先定义一个反映学生基本情况的结构类型,然后使用指向结构数组的指针来访问结构数组*/structdate /*日期结构类型:由年、月、日三项组成*/{intyear;intmonth;intday;};structstd_info /*学生信息结构类型:由学号、姓名、性别和生日共4项组成*/{charno[7];charname[9];charsex[3]; structdatebirthday;};structscore /*成绩结构类型:由学号和三门成绩共4项组成*/{charno[7]; intscore1; intscore2; intscore3;};#include"struct.h"/*定义并初始化一个外部结构数组student*/structstd_infostudent[3]={{"000102","张三","男",{1980,5,20}}, {"000105","李四","男",{1980,8,15}}, {"000112","王五","女",{1980,3,10}}};main(){structstd_info*p_std=student; /*使指针变量p_std指向结构数组student*/inti=0;/*打印表头*/printf("No.NameSexBirthday\n");/*输出结构数组内容*/for(;i<3;i++,p_std++){printf("%-7s%-9s%-4s",p_std->no,p_std->name,p_std->sex); printf("%4d-%2d-%2d\n",p_std->birthday.year,p_std->birthday.month,p_std->birthday.day);}}18、/*功能:使用指向结构变量的指针来访问结构变量的各个成员*/#include"struct.h"/*定义并初始化一个外部结构变量student*/structstd_infostudent={"000102","张三","男",{1980,9,20}};main(){structstd_info*p_std=&student; /*定义指针变量p_std,并使其指向结构变量student*/printf("No:%s\n",p_std->no);printf("Name:%s\n",p_std->name);printf("Sex:%s\n",p_std->sex);printf("Birthday:%d-%d-%d\n",p_std->birthday.year,p_std->birthday.month,p_std->birthday.day);}19、/*功能:利用结构类型,存储和显示三个学生的基本情况*/#include"struct.h"/*定义并初始化一个外部结构数组student[3]*/structstd_infostudent[3]={{"000102","张三","男",{1980,9,20}}, {"000105","李四","男",{1980,8,15}}, {"000112","王五","女",{1980,3,10}} };main(){inti;/*打印表头*/printf("No.NameSexBirthday\n");/*输出三个学生的基本情况*/for(i=0;i<3;i++){printf("%-7s",student[i].no);printf("%-9s",student[i].name);printf("%-4s",student[i].sex);printf("%d-%d-%d\n",student[i].birthday.year,student[i].birthday.month,student[i].birthday.day);}}20、/*程序功能:按二进制位输出一个整数*/#include"stdio.h"main(){intnum,mask,i;printf("Inputaintegernumber:");scanf("%d",&num);mask=1<<15; /*构造1个最高位为1、其余各位为0的整数(屏蔽字)*/printf("%d=",num);for(i=1;i<=16;i++){putchar(num&mask?'1':'0');/*输出最高位的值(1/0)*/ num<<=1; /*将次高位移到最高位上*/ if(i%4==0)putchar(','); /*四位一组,用逗号分开*/}printf("\bB\n");}21/*程序功能:从键盘上任意输入若干字符,存储到一个磁盘文件中*//*参数:带参主函数,使用格式:<可执行文件名><要创建的磁盘文件名>*/#include"stdio.h"main(intargc,char*argv[]){FILE*fp; /*文件类型名“FILE”,必须大写*/charch;if(argc!=2) /*参数个数不对*/{printf("thenumberofargumentsnotcorrect\n\n");printf("Usage:<可执行文件名><filename>\n");exit(0);}if((fp=fopen(argv[1],"w"))==NULL) /*打开文件失败*/{printf("cannotopenthisfile\n"); exit(0);}/*输入字符,并存储到指定文件中*/for(;(ch=getchar())!='@';)fputc(ch,fp); /*输入字符并存储到文件中*/fclose(fp); /*关闭文件*/}22、/*程序功能:制作ASCII码文件的副本*//*参数:带参主函数,使用格式:<可执行文件名><源文件名><目标文件名>*/#include"stdio.h"main(intargc,char*argv[]){FILE*input,*output; /*input:源文件指针,output:目标文件指针*/charch;if(argc!=3) /*参数个数不对*/{printf("thenumberofargumentsnotcorrect\n"); printf("\nUsage:<可执行文件名><sourcefile><destfile>"); exit(0);}if((input=fopen(argv[1],"r"))==NULL) /*打开源文件失败*/{printf("cannotopensourcefile\n"); exit(0);}if((output=fopen(argv[2],"w"))==NULL) /*创建目标文件失败*/{pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论