收藏 分销(赏)

c语言实验.doc

上传人:精*** 文档编号:2493242 上传时间:2024-05-30 格式:DOC 页数:20 大小:140.50KB
下载 相关 举报
c语言实验.doc_第1页
第1页 / 共20页
c语言实验.doc_第2页
第2页 / 共20页
c语言实验.doc_第3页
第3页 / 共20页
c语言实验.doc_第4页
第4页 / 共20页
c语言实验.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、/已知下面的程序是输入一个整数,判断该整数的位数,并依次输出各位数字。请将程序补充完整。#include main() long num; int a10,i=0; scanf(%ld,&num); while(num!=0) ai=num%10; num=num/10;i+; printf(this number is %d wei shu.n,i); for(i-;i=0;i-)printf(%d,ai); /2输入10名学生的C语言成绩,并将成绩排序。#include main()int grade10=78,89,56,98,74,68,23,56,68,75;int i,j;int

2、temp;/for(i=0;i10;i+)/scanf(%d,&gradei);for(i=0;i10-1;i+)for(j=i+1;j10;j+)if(gradeigradej)temp=gradei;gradei=gradej;gradej=temp;for(i=0;i10;i+)printf(%6d,gradei);printf(n);/3从键盘上输入10个整数,并放入一个一维数组中,/然后将其逆序重新存放。/即:第1个元素和第10个元素互换,第2个元素和第9个元素互换分别输出数组原来的值和兑换后各元素的值。#include #define N 10main()int number10=

3、78,89,56,98,74,66,23,58,68,75;int temp;int i;for(i=0;iN/2;i+)temp=numberi;numberi=numberN-i-1;numberN-i-1=temp;for(i=0;iN;i+)printf(%6d,numberi);printf(n);/4计算一个44矩阵两个对角线之和#include #define M 4#define N 4main()int aMN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;int i,j;int sum=0;for(i=0;iM;i+)for(j=0;jN;j

4、+)if (i=j|i+j=M-1)sum=sum+aij;printf(sum=%dn,sum);/随机产生20个45,210范围内的正整数,实现以下功能:/a)求最大值、最小值和平均值。/b)求小于平均值的数据的个数。#include#include#include#define N 20main()int aN;int i;int max,min,sum=0;float avg;int count=0;srand(time(NULL); /*初始化随机因子*/ for(i=0;iN;i+) ai=rand()%(210-45+1)+45; /*生成45210之间的整数*/max=a0;m

5、in=a0;for(i=0;imax) max=ai;if(aimin)min=ai;sum=sum+ai;avg=(float)sum/N;printf(生成的20个随机数为:n);for(i=0;iN;i+)printf(%5d,ai);if(i+1)%10=0)printf(n);printf(最大值为:%d;最小值为:%d;平均值为:%f;n,max,min,avg);for(i=0;iN;i+)if(aiavg)count+;printf(小于平均值的数据个数为:%dn,count);/下面程序的功能是对两个字符串进行比较,/然后输出两个字符串中第一个不相同字符的ASCII码之差。/

6、例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。#include main() char str1100,str2100;int i,s;printf(Enter string 1: ); gets(str1);printf(Enter string 2: ); gets(str2);i=0;while(str1i=str2i & str1i!=0) i+;s=str1i-str2i;printf(%dn, s);/编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。/不用strcpy函数。复制时0也要复制过去,0后面的字符不复制。#include main(

7、) char s1100,s2100;int i;printf(Enter string 1: ); gets(s1);i=0;while(s1i!=0) s2i=s1i;i+;s2i=s1i;printf(s2=%sn, s2);/输入若干个字符串(最多10个),/求出每个字符串的长度,并打印最长字符串的内容。/以stop作为输入的最后一个字符串。/输入若干个字符串(最多10个),/求出每个字符串的长度,并打印最长字符串的内容。/以stop作为输入的最后一个字符串。#include #include main()char str10100;int i=0,k;int max_len,max_

8、pos;gets(stri);max_len=strlen(stri);max_pos=0;while(i10&strcmp(stri,stop)!=0)i+;gets(stri);for(k=0;kmax_len)max_len=strlen(strk);max_pos=k;printf(最长字符串的内容为:%sn,strmax_pos);/输入若干个字符串(最多10个),/求出每个字符串的长度,并打印最长字符串的内容。/以stop作为输入的最后一个字符串。#include #include main()char str10100;int i=0;int max_len,max_pos;ge

9、ts(stri);max_len=strlen(stri);max_pos=0;while(imax_len)max_len=strlen(stri);max_pos=i;i+;gets(stri);printf(最长字符串的内容为:%s,strmax_pos);实验64#include main()char str=AbcDEfg;int k=0;printf(转换前的字符串为:%sn,str);while(strk!=0)if(strk=a&strk=A&strk=Z)strk=strk+32;k+;printf(转换前的字符串为:%sn,str);实验712#include int su

10、b(int n) return (n/10+n%10); main() int x,y;scanf(%d,&x);y=sub(sub(sub(x);printf(%dn,y);实验711#include fun (int x) int p ; if (x=0 | x=1 ) return (3) ; p=x-fun (x-2) ; return p ;main() printf(%d n,fun(9);/2写一个判素数的函数int isprime(int a),/在主函数输入一个整数,并调用isprime函数,输出是否为素数的信息。#include #include int isprime(i

11、nt a);main()int n;scanf(%d,&n);if(isprime(n)=1)printf(%d是一个素数!n,n);elseprintf(%d不是一个素数n!,n);int isprime(int a)int k;for(k=2;k=sqrt(a);k+)if(a%k=0) return 0;return 1;/3.用递归方法求n阶勒让德多项式的值,递归公式为:#include float p(float x,int n);main()float x;int n;printf(请输入x,n:n);scanf(%f%d,&x,&n);printf(p(%f,%d)=%fn,x,

12、n,p(x,n);float p(float x,int n)if (n=0)return 1;else if(n=1)return x;elsereturn (2*n-1)*x-p(x,n-1)-(n-1)*p(x,n-1)/n;/4编写一函数,计算任一输入的整数的各位数字之和。/主函数包括输入输出和调用该函数。#include int sum_digit(int n);main()int num;printf(请输入一个整数:n);scanf(%d,&num);printf(%d的各位数字之和为%dn,num,sum_digit(num);int sum_digit(int n)int t

13、emp_sum;temp_sum=n%10;while(n/10!=0)n=n/10;temp_sum=temp_sum+n%10;return temp_sum;/1.编写将n个数从小到大排序的函数,/要求该函数返回排序过程中交换的次数,并设计main函数,验证算法正确与否。/int sort( int arr, int n) .#include int sort(int arr,int n);main()int a10=10,9,8,7,6,5,4,3,2,1;int k;printf(初始序列为:n);for(k=0;k10;k+)printf(%5d,ak);printf(n);pri

14、ntf(将序列按从小到大顺序排序,经过%d次变换后,序列为:n,sort(a,10);for(k=0;k10;k+)printf(%5d,ak);printf(n);int sort(int arr,int n)int i,j;int temp;int count=0;for(i=0;in-1;i+)for(j=i+1;jarrj)temp=arri;arri=arrj;arrj=temp;count+;return count; /2.写一函数 void strcat_stu(char s141,char s220).,/将两个字符串连接,并设计main函数,验证算法正确与否。#includ

15、e #include void strcat_stu(char s141,char s220)int k=0,m=0;while(s1k!=0)k+;while(s2m!=0)s1k=s2m;m+;k+;s1k=0;main()char str141,str220;strcpy(str1,abcdefg);strcpy(str2,123456);strcat_stu(str1,str2);printf(%sn,str1);#include f( int a) int b=0;static int c = 3;b+;c+;return(a+b+c);实验83main() int a = 1, i

16、; for(i=0;i3;i+) printf(%dn,f(a);/4.输入10个学生5门课的成绩,分别用函数实现下列功能:/(1)计算每个学生的平均分。/(2)计算每门课的平均分。/(3)找出所有50个分数中最高的分数所对应的学生和课程;/(4)计算平均分方差#include main()float grade105=78,89,76,98,87,79,83,79,92,85,72,81,79,91,86,75,84,71,95,81,71,84,71,92,84,78,86,72,93,82,75,86,73,93,88,76,87,73,95,83,79,84,75,94,89,72,8

17、9,74,98,84,;float average10,total10;float average_course5,total_course5;int i,j;float max_grade;int max_course,max_stu;float f1=0,f2=0,variance;printf(-计算每个学生的平均分-n);for(i=0;i10;i+)totali=0;for(j=0;j5;j+)totali=totali+gradeij;averagei=totali/5;for(i=0;i10;i+)printf(第%d个学生的平均分为%5.2fn,i+1,averagei);pr

18、intf(n-计算每门课的平均分-n);for(i=0;i5;i+)total_coursei=0;for(j=0;j10;j+)total_coursei+=gradeji;average_coursei=total_coursei/10;for(i=0;i5;i+)printf(第%d门课程的平均分为%5.2fn,i+1,average_coursei);printf(n-找出所有50个分数中最高的分数所对应的学生和课程-n);max_grade=grade00;max_stu=0;max_course=0;for(i=0;i10;i+)for(j=0;j5;j+)if(max_grade

19、gradeij)max_grade=gradeij;max_stu=i;max_course=j;printf(50个分数中第%d个学生的第%d门课程分数最高,最高分为%5.2fn,max_stu+1,max_course+1,max_grade);printf(n-计算平均分方差-n);for(i=0;i10;i+)f1=f1+averagei*averagei;f2=f2+averagei;variance=f1/10-(f2/10)*(f2/10);printf(平均分方差为:%8.4fn,variance);实验911#include stdio.hvoid sub(int x, in

20、t y,int *z) *z=y-x;main() int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(%d,%d,%dn,a,b,c);实验912#include stdio.hmain() int a=2,4,6,8,10, y=1,x,*p; p=&a1;for(x=0;x3;x+) y+=*(p+x); printf(%dn,y);/定义函数void f(float x,int *y,float *z),/将x的整数部分存于y所指存储单元,/将x的小数部分存于z所指存储单元。/并设计main函数,验证算法正确与否。#include

21、 void f(float x,int *y,float *z)*y=(int)x;*z=x-*y;main()float x;int y;float z;scanf(%f,&x);f(x,&y,&z);printf(%f的整数部分为:%d,小数部分为:%fn,x,y,z);/下面程序实现从10个数中找出最大值和最小值。/请补充程序完整。#include int max, min;find_max_min(int *p, int n)int *q;max=min=*p;for(q=p;qmax ) max=*q;else if ( *qmin) min=*q;void main( )int i

22、,num10=12,45,78,485,78,25,-78,69,45,-789;/for(i=0; i10; i+)/scanf(%d,&numi);find_max_min(num,10);printf(max=%d,min=%dn,max,min);/4. 输入10个整数,将其中最小的数与第一个数对换,/把最大的数与最后一个数对换。模仿第2题使用指针实现。/写3个函数:输入10个数。进行处理。输出10个数。#include #define N 10void input_data(int a,int n);void printf_data(int a,int n);void deal_da

23、ta(int a,int n);void swap(int *m,int *n);main()int aN;input_data(a,N);deal_data(a,N);printf_data(a,N);void input_data(int a,int n)int i;for(i=0;in;i+)scanf(%d,&ai);void printf_data(int a,int n)int i;for (i=0;in;i+)printf(%6d,ai);void deal_data(int a,int n)int i;int min_pos=0,max_pos=0;for(i=0;iamax_

24、pos)max_pos=i;if(aiamin_pos)min_pos=i;swap(&amin_pos,&a0);swap(&amax_pos,&aN-1);void swap(int *m,int *n)int temp;temp=*m;*m=*n;*n=temp;/以下dele()函数的功能是删除字符串s中的所有数字字符。/请补充完整dele()函数。/编写main(),在主函数中输入一个字符串,/通过调用dele函数,删除其中的数字字符,并输出结果。#include void dele(char *s)int n=0,i;for(i=0;si;i+)if(!(si=0&si=9) /或

25、者 if(si9) sn+=si;sn=0;main()char s100;gets(s);dele(s);printf(%sn,s);/写一函数,求一个字符串的长度,/并编写main()函数。即自己写一个strlen()函数,/函数原型为:int strlen_stu(char *s);#include int strlen_stu(char *s)int len=0;while(*s!=0)s+;len+;return len;main()char s100;gets(s);printf(lengths of %s is %dn,s,strlen_stu(s);/输入一行文字,找出其中大写

26、字母、小写字母、空格、数字及其他字符的个数。/提示:将这5个表示统计个数的变量定义为全局变量,/定义一个进行统计的函数:void Statistics(char *str).,/在Statistics函数中对这5个全局变量进行计算赋值,在main函数中输出结果。#include int upper_char=0;int lower_char=0;int space_char=0;int digital_char=0;int other_char=0;void Statistics(char *str)while(*str!=0)if(*str=A&*str=a&*str=0&*str=9)di

27、gital_char+;elseother_char+;str+;main()char s100;gets(s);Statistics(s);printf(upper_char=%dn,upper_char);printf(lower_char=%dn,lower_char);printf(space_char=%dn,space_char);printf(digital_char=%dn,digital_char);printf(other_char=%dn,other_char);实验104#include cut(char *s,int m,int n) int i;for(i=0;in

28、;i+) si=si+m;si=0;void main() char str320,*p3; int i; printf(请您输入三个长度超过5个字符的字符串:n);for(i=0;i3;i+) pi=stri; gets(pi); for(i=0;i3;i+) cut(pi,i,5); for(i=0;i3;i+) puts(stri); /用结构体存放如下表中的数据,/然后输出每个人的姓名和实发工资(实发工资=基本工资+浮动工资-支出)/姓名基本工资浮动工资支出/Tom1240.00800.0075.00/Lucy1360.00900.0050.00/Jack1560.001000.008

29、0.00#include #define N 3struct salarychar name10;float base_salary;float float_salary;float expenditure;struct salary WorkersN=Tom,1240,800,75,Lucy,1360,900,50,Jack,1560,1000,80;main()int i;printf(t姓名tt基本工资t浮动工资t支 出n);for(i=0;i3;i+)printf(t%stt%8.2ft%8.2ft%6.2fn,Workersi.name,Workersi.base_salary,Wo

30、rkersi.float_salary,Workersi.expenditure);printf(-n);printf(t姓名tt实发工资n);for(i=0;i3;i+)printf(t%stt%8.2fn,Workersi.name,Workersi.base_salary+Workersi.float_salary-Workersi.expenditure);/定义一个结构体变量(包括年、月、日),/计算该日在本年中是第几天,注意闰年的问题。#include struct dateint year;int month;int day;int month_days13=0,31,28,31

31、,30,31,30,31,31,30,31,30,31;main()struct date date_value;int i;int day_count=0;printf(请输入年月日(year,month,day)n);scanf(%d,%d,%d,&date_value.year,&date_value.month,&date_value.day);for(i=1;i2)day_count+;printf(%d年%d月%d日是该年的第%d天n,date_value.year,date_value.month,date_value.day,day_count);/编写程序,输入10个学生的学

32、号、姓名、性别、年龄,/统计其中女生有多少,男生有多少,/并根据年龄从小到大对这10个学生重新排序。#include #include #define N 10struct studentchar stuNo10;char name10;char xb3;int age;struct student stuN=20100080,关桂凯,男,20,20100081,曾刚,男,19,20100082,李新亮,男,21,20100083,李妍,女,21,20100084,段艳娇,女,20,20100085,寇鹏,男,21,20100086,孙鑫广,男,19,20100087,张志强,男,18,201

33、00088,王健,男,20,20100089,孙广辉,男,21;main()int i,j;int Schoolboy=0;int Schoolgril=0;struct student temp;/输入10个学生的学号、姓名、性别、年龄,/for (i=0;i10;i+)/scanf(%s%s%s%d,stui.stuNo,stui.name,stui.xb,&stui.age);/统计其中女生有多少,男生有多少,for(i=0;i10;i+)if(strcmp(stui.xb,男)=0)Schoolboy+;elseSchoolgril+;/根据年龄从小到大对这10个学生重新排序。for(i=0;i9;i+)for(j=i+1;jstuj.age)temp=stui;stui=stuj;stuj=temp;/输出排序结果printf(t学号tt姓名tt性别tt年龄n);printf(-n);for (i=0;i10;i+)printf(t%st%stt%stt%dn,stui.stuNo,stui.name,stui.xb,stui.age);/建立一个mydata.txt文本文件,向其中写入this is a test字符串,/然后显示该文件的内容。 #include

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服