实验2 数据类型和标准输入与输出
(1)编写程序,输入摄氏温度,转换为华氏温度。转换公式如下: 华氏度 = 32 + 摄氏度 × 1.8 #include \"stdio.h\" void main() { int s;
double h; printf(\"请输入摄氏度\"); scanf(\"%d\",&s); h=32+s*1.8; printf(\"%lf\",h); }
(2)编写一个程序,输入大写字符,转换成对应的小写后输出。
#include \"stdio.h\" void main() { char a,b; printf(\"请输入一个大写字母\"); scanf(\"%c\",&b); a=b+32; printf(\"%c\",a); }
升级版:
#include \"stdio.h\" void main() { char a,b; printf(\"请输入一个大写字母\"); scanf(\"%c\",&b); if(b>\'Z\') printf(\"请重新输入\"); else a=b+32; printf(\"%c\",a);} 升级版:
#include \"stdio.h\" void main() {
char a,b1;
printf(\"请输入一个字母\"); scanf(\"%c\",&b1); if(\'a\'
printf(\"%c\",a);
}
(3)输入一元二次方程的三个系数,计算该方程的根。
/* Note:Your choice is C IDE */ #include \"stdio.h\" #include void main() { double a,b,x1,x2,d,c; printf(\"请输入一元二次方程的三个系数a,b,c\"); scanf(\"%lf,%lf,%lf\",&a,&b,&c); d=b*b-4*a*c; x1=(-b+sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); printf(\"第一个根是%lf,第二个根是%lf\",x1,x2); }
加强版:
#include \"stdio.h\" #include void main() { double a,b,x1,x2,d,c; printf(\"请输入一元二次方程的三个系数a,b,c\\n\"); scanf(\"%lf,%lf,%lf\",&a,&b,&c);
d=b*b-4*a*c; if(d
else { x1=(-b+sqrt(d))/(2*a); x2=(-b+sqrt(d))/(2*a); printf(\"第一个根是%lf,第二个根是%lf\",x1,x2) ;} }
(4)请编一程序,用赋初值的方法使c
1、c
2、c
3、c
4、c5 五个变量的值分别 为’c’、’h’、’i’、’n’、’a’,经过运算,使c
1、c
2、c
3、c
4、c5 分别变为’G’、’l’、’m’、’r’、’e’,并输出,分析是否符合要求。
源代码:
/* Note:Your choice is C IDE */ #include \"stdio.h\" void main() { char c1,c2,c3,c4,c5; c1=\'c\'; c2=\'h\'; c3=\'i\'; c4=\'n\'; c5=\'a\'; printf(\"%c%c%c%c%c\" ,c1,c2,c3,c4,c5); c1=c1-28; c2=c2-28; c3=c3+4; c4=c4+4; c5=c5+4; printf(\"%c\\n\",c1); printf(\"%c\\n\",c2); printf(\"%c\\n\",c3); printf(\"%c\\n\",c4); printf(\"%c\\n\",c5);
实验3-5 选择结构程序设计
}
3、编程判断从键盘上输入的正整数是否既是5又是7的倍数,若是,则输出yes,否则输出no
#include \"stdio.h\" void main() {
} int a,b; printf(\"请输入一个正整数\"); scanf(\"%d\",&a); if(a%5==0&&a%7==0) printf(\"yes\"); else printf(\"no\");
4、输入一个年份,判断是否是闰年?
闰年的条件
能被4整除,但不能被100整除。 能被4整除,又能被400整除 #include void main() {
int a;
printf(\"请输入一个年份\");
scanf(\"%d\",&a);
if((a%4==0&&a%100!=0)||(a%4==0&&a%400==0))
printf(\"是闰年\");
else
printf(\"不是闰年\"); }
5、编写一个程序,从键盘输入三个数a,b,c,编程输出最大的数和最小的数。
#include void main() { int a,b,c,max; printf(\"请输入三个数字\"); scanf(\"%d%d%d\",&a,&b,&c); max=(a>b?a:b); max=(max>c?max:c); printf(\"%d\",max);
用?表达式计算四级成绩是否通过,大于425分则输出通过,否则输出不通过。 源代码:
#include void main() { int a; printf(\"请输入四级成绩\"); scanf(\"%d\",&a); printf(\"%s\",a>425?\"通过\":\"不通过\"); }
2、用?表达式对输入的一个字母进行判断,如果是大写则转换为小写,如果是小写则转换为大写输出。
#include \"stdio.h\" void main() { char a,b; printf(\"请输入一个字母\"); scanf(\"%c\",&a); if(64
{b=(a
else printf(\"请重新输入\"); }
3、从键盘上输入x的值,按下式计算y的值。(要求用两种if结构实现,一种是串行if结构,无论什么数都必须比较三次;一种是多分枝if结构,可以减少比较次数)
x x
#include \"stdio.h\" void main() { double x,y; printf(\"请输入一个x\"); scanf(\"%lf\",&x); if(x=10) y=3*x-11; printf(\"%lf\",y); }
第二种结构
#include \"stdio.h\" void main() { double x,y; printf(\"请输入一个x\"); scanf(\"%lf\",&x); if(x=10) y=3*x-11; printf(\"%lf\",y); }
4、编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。90分以上为\'A\',80~89分为\'B\',70~79分为\'C\',60~69分为\'D\',60分以下为\'E\'。(要求用多分枝if结构实现)
#include \"stdio.h\" void main() { int x; char y; printf(\"请输入你的成绩\"); scanf(\"%d\",&x); if(x>90) y=\'A\';
if(x>80&&x
if(x>70&&x60&&x
5、输入三个数,如果能构成三角形,则输出三角形的类型(钝角、锐角、直角),否则输出不能构成三角形。
#include \"stdio.h\" void main() { double a,b,c; printf(\"请输入三角形的三个边\"); scanf(\"%lf%lf%lf\",&a,&b,&c); if(a>b+c||b>a+c||c>a+c) printf(\"不是三角形\"); else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a) printf(\"是直角三角形\"); else if(a*a>b*b+c*c||b*b>a*a+c*c||c*c>b*b+c*c) printf(\"是钝角三角形\"); else if(a*a
printf(\"是锐角三角形\"); }
6、输入三个数a,b,c,要求按由小到大的顺序输出。
#include \"stdio.h\" void main() {
int a,b,c,t; printf(\"请输入三个数\"); scanf(\"%d%d%d\",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
} if(a>c) {t=a; a=c; c=t;} if(b>c) {t=b; b=c; c=t;} printf(\"%d %d %d\",a,b,c);
1、运输公司对用户计算运费。
路程(s)越远,每公里运费越低。标准如下:
s<250km
没有折扣
250≤s<500
2%折扣
500≤s<1000
5%折扣
1000≤s<2000
8%折扣
2000≤s<3000
10%折扣
3000≤s
15%折扣 设每公里每吨货物的基本运费为p,货物重为w,距离为s, 折扣为d,则总运费f的计算公式为: f=p*w*s*(1-d)
要求分别用if else if多分支选择结构和switch多分支结构实现。
#include \"stdio.h\" void main() { int p,w,s; double f; printf(\"请由此输入基本运费为p,货物重为w,距离为s\"); scanf(\"%d %d %d\", &p,&w,&s); if(s3000) f=p*w*s*(1-0.15);
printf(\"%f\",f); } 方法2
#include \"stdio.h\" void main() { double p,w,d,f; int s; scanf(\"%lf%lf%d\",&p,&w,&s); switch(s/250) { case 0:d=0;break; case 1:d=0.02;break; case 2: case 3:d=0.05;break; case 4: case 5: case 6: case 7:d=0.08;break; case 8: case 9: case 10: case 11:d=0.1;break; default:d=0.15; } f=p*w*s*(1-d); printf(\"总运费=%f\",f); }
2、编写程序,判断一个学生成绩的R 优、良、中、差R : 假如从键盘输入的字母是‟ A‟ , 输出评语”You are Excellent!”; 如果输入 „B‟ ,输出评语”You are well!” ; 如 果输入‟ C‟ ,输出评语”You are paing!” ; 如果输入‘ D’ ,输出评语“You are notpaing!“ 。 如果输入的不是这四个字母,则出现提示“Input error!” 请编写一个程序,实现该判断功能。要求必须使用switch-case 结构实现。
#include \"stdio.h\" void main() { char a; int b; printf(\"请输入你成绩的等级\"); scanf(\"%c\",&a);
switch(a) { case \'A\': printf(\"You are Excellent!\");
break; case \'B\': printf(\"You are well!\"); break; case \'C\': printf(\"You are paing!\");
break; case \'D\': printf(\"You are notpaing!\"); break; default: printf(\"Input error!\"); break;
} }
3、编写一个简单计算器程序,输入格式为:data1 op data2。其中data1 和data2 是参加运算的两个数,op 为运算符,它的取值只能是+、-、*、/。要求必须使用switch-case 语句实现。
4、用while 完成计算自然数1-N之间的和。要求N从键盘输入,并输出结果。
#include \"stdio.h\" void main() { double s=0; int n,i=0; printf(\"请输入一个整数\"); scanf(\"%d\",&n); while(i
{s=i+s; i++;} printf(\"%f\",s); }
实验6-7 循环结构程序设计
1、分别用while,do while 和for完成计算n!。要求N从键盘输入,并输出结果。
#include \"stdio.h\" void main() { double s=1; int n,i=1; printf(\"请输入一个整数\"); scanf(\"%d\",&n); while(i
{s=i*s; i++;} printf(\"%f\",s); }
2、输入一个正整数n,统计不大于n值的所有偶数的和。(要求必须用do while实现)
#include \"stdio.h\" void main() { int n,i=1; double s=0; printf(\"请输入一个正整数\"); scanf(\"%d\",&n); do { s=2*i+s; i=i+2; }
while(2*i
3、计算 s=1-1/3 + 1/5- 1/7+„1/(2n-1) 的值并输出,(必须使用do while实现)
#include \"stdio.h\" void main() { int n,i=1,t=1; double s=0; printf(\"请输入一个正整数\"); scanf(\"%d\",&n); do { s=t*(1.0/i)+s; t=-1; i=i+2;
}
while(i
4、从键盘输入10个实型数,求其倒数的和并输出。
#include \"stdio.h\" void main() { int i; double s=0,a; printf(\"请输入10个正整数\"); for(i=0;i
printf(\"和为%lf\",s); }
5、编写程序,求S=1/(1*2)+1/(2*3)+1/(3*4)+„前50 项之和。要求必须 使用for 语句实现。
#include \"stdio.h\" void main() { int i; double s=0;
for(i=1;i
6、输入10 个整数,统计同时能被3 和7 整除的个数,结果存放在变量nCount 中,将nCount 输出。要求必须使用do-while 语句实现。 do While源码:
#include \"stdio.h\" void main() {
int i=1,nCount=0,n; printf(\"请输入10个整数\"); do { scanf(\"%d\",&n); if(n%3==0&&n%7==0) nCount=nCount+1; i++; } while(i
1、打印出所有的“水仙花数”,所谓“水仙花数”是指一个3 位数,其各位数字立方和等于该数本身。例如:153 是一水仙花数,因为153=1^3+5^3+3^3.#include \"stdio.h\" void main() {
int i,g,s,b,n=0; for(i=100;i
2、从键盘任意输入一个整数,判断它是否为素数。
#include \"stdio.h\" void main() {
int i,n,k=0; printf(\"请输入一个整数\"); scanf(\"%d\",&n); for(i=2;i
printf(\"%d是素数\",n);}
}
方法2;
#include \"stdio.h\" void main() { int i,m; scanf(\"%d\",&m); for(i=2;i
3、用循环结构程序设计方法,输出一个九九乘法表.
源码:#include \"stdio.h\" void main() { int i,j,s; for(i=1;i
4、从键盘输入10 个整数,统计其中正数、负数和零的个数,并在屏幕上依次输出。要求必须使用while 语句。 #include \"stdio.h\" void main() { int i=1,j=0,s=0,n=0,m; while(i0) j=j+1; else if(m
5、编程求1+(1+2)+..+(1+2+..+n),n 的值由键盘输入。要求使用for 语句实现
源码:
#include \"stdio.h\" void main() { int i,s,t,n; s=0;t=0; scanf(\"%d\",&n); for(i=1;i
实验8-9 数组的应用
(一)
1、从键盘输入10 学生的成绩至数组中,将最低分和最高分的成绩输出,并输出所有成绩。
源码:
#include \"stdio.h\" void main() { int i,n[10],max,min; printf(\"请输入10个整数\"); for(i=0;in[i]) min=n[i]; for(i=0;i
2、定义含有300 个元素的数组x,x[i]=10* tan ((3.0+I*I)/ 5) (i=0,1,2..299),计算该一维数组的平均值,并求出此数组中大于平均值的数据之和,最后输出此数组的平均值及大于平均值的数据之和。
#include \"stdio.h\" #include \"math.h\" void main() { int i; double s,n,a,x[300]; for(i=0;ia) n=n+x[i]; } printf(\"a=%f,n=%f\",a,n); }
3、定义含有300 个元素的数组y,y[i]=10* cos ((3.0+i*i) / 5) (i=0,1,2,…,299),计算一维数组的最大值及其所在位置(即下标),并输出此数组的最大值及其所在位置。
#include \"stdio.h\" #include \"math.h\" void main() { int i,max_i; double y[300],max; for(i=0;i
4、编写程序求出555555 的约数中最大的三位数是多少。要求必须使用do-while 语句实现。
源码:
#include \"stdio.h\" #include \"math.h\" void main() { int n=555555,i=999; do { if(n%i==0)break; else i--; } while(i>=100); printf(\"555555的最大三位数的公约数是i=%d\",i); }}
5、输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出54321。注:1 不得使用数组;2 必须使用while 语句实现。
#include \"stdio.h\" void main() { int n,k; printf(\"请输入整数\"); scanf(\"%d\",&n); while(n) { k=n%10; printf(\"%d\",k); n=n/10; } }
1、从键盘输入10个整数,用起泡法进行排序。
源码:
#include \"stdio.h\" void main() { int a[10],i,j,t; for(i=0;ia[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } for(i=0;i
2、有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 二维数组如下:
4 4 34 5 37 3 12 6 5 6 5 7 源码:
#include \"stdio.h\" void main() { int max,i,j,im,jm; int a[3][4]={{4,4,34,5},{37,3,12,6},{5,6,5,7}}; max=a[0][0]; im=0; jm=0; for(i=0;i
3、将一个二维数组行和列元素互换,存到另一个二维数组中并输出这两个矩阵。
原始矩阵如下:
0
3 源码:
#include \"stdio.h\" void main() { int a[3][4]={{1,4,5,6},{3,2,7,8},{7,9,0,3}}; int i,j,b[4][3]; for(i=0;i
for(i=0;i
printf(\"\\n\");} }
4、从键盘输入一个整数,把转换得到的二进制位存放在一维数组中并输出。
源码:
#include \"stdio.h\" void main() { int n,i,j,a[100],t; scanf(\"%d\",&n); t=n; i=0; while(t) { a[i]=t%2; t=t/2; i++; } for(j=i-1;j>=0;j--) { printf(\"%d\",a[j]); } }
5、把200以内的所有素数存放到一维数组中并输出。
源码:
#include \"stdio.h\" void main() { int i,m,j,k; int a[200]; k=0; for(m=199;m>1;m--) { for(i=2;i
if(m%i==0) break; } if(i>=m)
a[k++]=m; } for(j=k-1;j>=0;j--)
printf(\"%d \",a[j]); }
1、从键盘输入长方形的长和宽,计算长方形的面积并输出用*表示的长方形图形。要求面积计算和图形输出分别用函数实现。
源码:
/* Note:Your choice is C IDE */ #include \"stdio.h\" int mianji(int w,int l) //此处的int与return有关,需要携带一个整数返回 { //形参的作用相当于定制式客户提供的尺寸等信息 int area; //函数体内部可以自由使用形参 area=w*l; return area; }
//函数的定义只是一个静态功能,此时不会做任何工作,具体使用要看调用者的函数调用
void printstar(int w,int l) { //void表示函数执行完毕不需要带任何结果回来,不能出现在等号后面,只能单独一条调用语句
int i,j; for(i=1;i
void main() {int len,wid,area; scanf(\"%d%d\",&wid,&len); //mianji(wid,len); //函数名(实参1,实参2)的方式使用函数,就叫函数调用,此时形参分配空间;
//实参的值拷贝给形参;执行函数体语句;最后用return携带结果返回。 area=mianji(wid,len); //把return返回的结果赋值给area变量。只要函数有返回结果,它可以当作表达式来使用, //可以出现在等号后面任何相容的表达式中。 printf(\"area=%d\",area); printf(\"\\n\"); printstar(wid,len);//单独一条调用语句,void函数的标准使用格式 }
2、从键盘输入长方体的长和宽和高,计算长方体的表面积和体积,并在main函数中输出。要求面积计算和体积计算分别用函数实现。
源码:
#include \"stdio.h\" int bmj(int w,int l,int h) //此处的int与return有关,需要携带一个整数返回
{
//形参的作用相当于定制式客户提供的尺寸等信息 int area; //函数体内部可以自由使用形参 area=(w*l+w*h+l*h)*2; return area; }
int tj(int w,int l,int h)
{//形参中的每个变量要分别进行类型定义
int tj=w*l*h; return tj; }
void main() {int len,wid,high,area,vol; scanf(\"%d%d%d\",&wid,&len,&high); area=bmj(wid,len,high); vol=tj(wid,len,high); printf(\"area=%d,vol=%d\",area,vol); }
3、编写一个具有两个整形形参的函数max,返回较大值。在main函数中接受从键盘输入的两个整数,输出较大者。
源码:
#include \"stdio.h\" int maxli(int x,int y) { int max; if(x>y) max=x; else max=y; return max;
} void main() { int max=1,a,b; printf(\"请输入两个整数\"); scanf(\"%d%d\",&a,&b); max=maxli(a,b); printf(\"最大数为%d\",max); }
4、编写一个无参且无返回值的函数,用来打印出所有的“水仙花数”,在、main函数中调用该函数。
所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=1^3+5^3+3^3.源码:#include \"stdio.h\" void shuixian() {
int i,g,s,b,n=0; for(i=100;i
}
5、通过调用自定义函数来完成求圆柱体的体积(v=3.14*r2*h),要求圆柱体的高和底半径在主函数中做输入,圆柱体的体积在主函数中做输出。
源码:
#include \"stdio.h\" double yuanzhutiji(int r,int h) { double v;
v=3.14*r*r*h; return v;
} void main() { int r,h; double v; printf(\"请输入圆柱体的半径和高\"); scanf(\"%d%d\",&r,&h); v=yuanzhutiji(r,h); printf(\"圆柱的体积是%f\",v);
}
6、通过函数调用求华氏温度,要求在主函数中输入摄氏温度,在主函数中输出华氏温度。(公式f=5/9*c+32)
源码:
#include \"stdio.h\" double huashidu(int c)
{
double h; h=32+c*1.8; return h; } void main() { int c; double h; printf(\"请输入摄氏度\"); scanf(\"%d\",&c); h=huashidu(c); printf(\"%d摄氏度变成华氏度是%f\",c,h); }
4、有两个数组a和b,各有10个元素,将它们对应地逐个相比(即a[0]与b[0]比,a[1]与b[1]比……)。如果a数组中的元素大于b数组中的相应元素的数目多于b数组中元素大于a数组中相应元素的数目(例如,a[i]>b[i]6次,b[i]>a[i]3次,其中i每次为不同的值),则认为a数组大于b数组,并分别统计出两个数组相应元素大于、等于、小于的次数。 要求用函数实现比较并返回结果。 源码:
#include \"stdio.h\" int great(int a,int b) { int f; if(a>b) f=1; else if(a==b) f=0; else f=-1; return f; } void main() { int a[10],b[10],i,j=0,k=0,m=0; printf(\"请输入第一个数组10个元素\\n\"); for(i=0;im) printf(\"数组a大于数组b\"); else printf(\"数组b大于数组a\"); }
界面截图:
5、用选择法对数组中10个整数按由小到大排序。要求主函数输入10个元素存入数组,调用排序函数实现数组元素的排序。
源码:
#include void main() { int s[10]; for (i=0;i
printf(\"%d,s[i]\"); sort(s); printf(\"函数调用后数组元素值\"); for (i=0;i
void sort(int a[10] )
{int i,j,t,b;
for(i=0;i
{if(a[n]>a[j])b=j;}} t=a[i]; a[i]=a[b]; a[b]=t;
}
1、编一函数,统计一维整数组小于数组元素平均值的元素的个数;主函数定义x[50],x[i]=600*cos(i*0.35), 调用函数,输出小于数组元素平均值的元素的个数。 (注:此程序不允许使用全局变量,不允许在avernum函数中输出)
源码:
#include \"stdio.h\" #include \"math.h\" void main() {int avernum(double a[],int n); double x[50]; int i,num; for(i=0;i
int avernum(double a[],int n) {int i,count; double sum,ave; sum=0; for(i=0;i
、求一维整型数组中的最小元素。 要求:主函数定义数组y[50],y[j]=600*sin(j*0.16) (j=0,1,2……49),调用自定义函数qmin求出最小元素,最后在主函数中输出结果。
源码:
#include \"stdio.h\" #include \"math.h\" void main() { double qmin(double a[],int n);
double y[50],min;
int j;
for(j=0;j
y[j]=600*sin(j*0.16);
min=qmin(y,50);
printf(\"最小值为%f\",min); }
double qmin(double a[],int n) {int i; double min; min=a[0]; for(i=0;ia[i]) min=a[i]; } return min;}
3、求一维整型数组中正数的和。 要求:主函数定义数组a[10],从键盘输入十个数,调用自定义函数求出正数的和,然后在主函数中输出结果
源码:
#include \"stdio.h\" #include \"math.h\" void main() { double qsum(double a[],int n);
double a[10],sum;
int j;
for(j=0;j
scanf(\"%lf\",&a[j]);
sum=qsum(a,10);
printf(\"正整数之和是%f\",sum); }
double qsum(double a[],int n) { int i;
double sum;
sum=0;
for(i=0;i
{ if(a[i]>0) sum+=a[i];
} return sum; }
4、编写程序求下式的值:S=2^1*1!+2^2*2!+……+2^n*n!(n 源码:
5、编程验证歌德巴赫猜想:一个大于等于4的偶数都是两个素数之和,要求用函数实现(选作)
源码:
界面截图:
6、用户从键盘输入一个1—99999之间的数,编写一个函数判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如121
21、3223都是回文数。。(选作)
源码:
1、编一通用函数avermax,计算含有n个数据的一维数组的平均值,并求出此数组中大于平均值的数据之和; 主函数中定义含有300个元素的数组x,x[I]=10* cos ((3.0+I*I) / 5) (I=0,1,2……299),调用上述函数,输出此数组的平均值及大于平均值的数据之和。
(注:此程序不允许使用全局变量,不允许在avermax函数中输出) 源码:
#include #include double avermax(double a[],int n,double *m) { int i; double s,aver; aver=0; for(i=0;iaver) s+=a[i]; } *m=s; return aver; } void main() { double x[300],s,a; int i; for(i=0;i
2、编一通用函数avernum,计算含有n个数据的一维数组的平均值,并统计此数组中大于平均值的数据的个数;
主函数中定义含有100个元素的数组x,x[I]=200*cos(I*0.875)(I=0,1,2……99),调用上述函数,输出此数组的平均值及大于平均值的数据的个数。
(注:此程序不允许使用全局变量,不允许在avernum函数中输出) 源码:
#include #include double avernum(double a[],int n,double *m) { int i; double s,aver; aver=0; for(i=0;iaver) s=s+1; } *m=s; return aver; } void main() { double x[100],s,a; int i; for(i=0;i
3、编一通用函数maxsub,求出含有n个数据的一维数组的最大值及其所在位置(即下标); 主函数中定义含有300个元素的数组x,x[I]=10* cos ((3.0+I*I) / 5) (I=0,1,2……299),调用上述函数,输出此数组的最大值及其所在位置。
(注:此程序不允许使用全局变量,不允许在avermax函数中输出) 源码:
#include #include double maxsub(double a[],int n,double *m) { int i,t,max=a[0]; for(i=0;imax) {max=a[i]; t=i;} } *m=t; return max; } void main() { double x[300],s,a; int i; for(i=0;i
4、编写函数,实现任何整形数组元素的逆置。在主函数调用该函数,完成10个数组元素的逆置。
源码:#include \"stdio.h\" void inverse(int a[],int n) { int i,j,m,t; j=n-1; m=(n-1)/2; for(i=0;i
界面截图:
5、编写程序求下式的值:S=2^1*1!+2^2*2!+……+2^n*n!(n 源码:
#include \"stdio.h\" int nj(int n) { int i=1,s=1; while(i
界面截图:
1、复制下面的程序并运行,观察程序运行的结果,并分析原因(注意程序第2行中有些单引号之间是空格)。
/*
c8-1.c
字符数组的输出*/ #include \"stdio.h\" void main( ) { char a[10]={ ’I’, ’ ’, ’a’, ’m’, ’ ’, ’a’, ’ ’, ’b’, ’o’, ’y’}; printf(\"%s\\n\",a); } 将字符数组a的大小改为11,再运行程序,并将结果与修改前的结果进行比较,分析原因。
界面截图:
结果不一致的原因:%s只针对字符串有效,以’\\0’结束的串或字符数组
2、用gets函数从键盘接收一行字符串,自定义函数strlength计算字符串的长度。 源码: #include #include int strlength(char t[]); void main() {
char s[80];
int len;
gets(s);
len=strlength(s);
printf(\"len=%d\",len); } int strlength(char t[]) { int i; i=0; while(t[i]!=\'\\0\') {i++;}
return i;
}
界面截图:
调用字符串库函数完成同样的功能。 源码:
#include #include void main() {
char s[80];
int len;
gets(s);
len=strleng(s);
printf(\"len=%d\",len); }
界面截图:
3、按照要求编写程序:有一行文字,不超过80个字符,分别统计出其中英文大写字母、小写字母、数字、空格、及其它字符的个数。 源码:
#include #include void count(char *t); void main() {
char s[80];
gets(s);
count(s); }
void count(char *t) {
int u,l,b,d,q ;
u=l=b=d=q=0;
while(*t!=\'\\0\')
{
if(*t>=\'A\'&&*t
else if(*t>=\'a\'&&*t
else if(*t>=\'0\'&&*t
else if(*t==\' \') b++;
else q++;
t++;
}
printf(\"大写字母个数是%d\\n\", u );
printf(\"小写字母个数是%d\\n\",l);
printf(\"数字个数是%d\\n\", d);
printf(\"空格个数是%d\\n\", b);
printf(\"其他个数是%d\\n\",q);}
4、自己定义一个函数strconnect,实现字符串的连接。在主函数中进行测试。
源码:
#include #include void stringcopy(char *s,char *t); void main() {
char s[80],t[40];
gets(s);
gets(t);
stringcopy(s,t);
printf(\"链接后的字符串为%s\",s); }
void stringcopy(char *s,char *t) {
while(*s++!=\'\\0\');
s--;
while(*t=\'/0\')
*s++=*t++;
*s=\'\\0\'; }
5、编写一个函数,把字符串的所有小写字符转换成大写字符。并在主函数中测试。 源码:
界面截图:
6、自己定义一个函数stringcopy,实现字符串的复制。在主函数中进行测试。 源码:
界面截图:
调用字符串库函数完成同样的功能。
源码:
界面截图:
1、用结构体数组建立一张班级成绩单,包括每个学生的姓名、英语、数学、语文三门课程的成绩。用函数编程实现下列功能:
(1) 输入每个学生的各项信息。
函数源码:
#include #include typedef struct grade {char name[20]; int yw; int sx; int yy; } student; void input(student s[],int n) { int i; for(i=0;i
}
void print(student s[],int n) { int i; printf(\"\\t姓名\\t语文\\t数学\\t英语\\n\"); for(i=0;i
printf(\"please input sx\");
printf(\"please input yy\"); printf(\"\\n\"); scanf(\"%d\",&s[i].yw); scanf(\"%d\",&s[i].sx); scanf(\"%d\",&s[i].yy); }
void main() {
界面截图:
(2) 输出每个学生的各项信息。 函数源码:
界面截图:
(3) 修改指定学生的指定数据项的内容。 函数源码:
界面截图:
(4) 统计每个同学的平均成绩(保留2位小数)。 函数源码:
界面截图:
(5) 输出各位同学的学号、姓名、三门课程的总成绩和平均成绩。 函数源码:
界面截图:
student stu[5]; int i; input (stu,5); print(stu,5);