C语言实验指导书习题

更新时间:2023-12-08 16:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验2 C预言的三种程序结构

2.1 顺序结构

1)已知a=1.5,b=5.3,c=2.9,计算??=??(??)???????的结果并输出。 #include void main () {

float a,b,c,s; a=1.5; b=5.3; c=2.9;

s=b*b-4*a*c;

printf(\的值是%f\\n\}

2)输入某学生三个科目的期末考试成绩,计算出该学生的成绩总分和平均分。 #include void main() { int a,b,c; float sum,avg; scanf(\ sum=a+b+c; avg=sum/3; printf(\}

3)输入圆的半径,计算圆的面积,圆周率3.1416。 #include void main() { float r,area; scanf(\ area=3.1416*r*r; printf(\ }

4)输入一个两位数,将其个位数和十位数互换后变成的一个新数输出。 #include void main() { int x,y; scanf(\

y=x*10+x/10; printf(\}

5)输入两个数a和b,将两数的值互换后输出新值。 #include void main() { int x,y,t; scanf(\ t=x; x=y; y=t; printf(\ }

2.2 简单分支结构

1)输入两个整数,求出其中较小值并输出。 #include void main() { int x,y; scanf(\ if(x>y) printf(\ else

printf(\ }

2)输入x的值计算分段函数。 Y=f(x)=x(2)+2x x<2 2x-1 x>=2 #include void main() { float x,y; scanf(\ if(x<2) y=x*x+2*x; else

y=2*x-1;

printf(\ }

3)输入两个整数并判断两数是否相等,输出相应结论。 #include void main() {

float x,y;

printf(\请输入两个整数(用回车隔开):\scanf(\if(x==y)

printf(\else

printf(\}

4)输入一个整数,若为负数,求出它的平方;若为正数,输出它的立方。 #include void main() {

int a,y;

printf(\请输入一个整数:\scanf(\if(a<=0) y=a*a; else y=a*a*a;

printf(\}

5)输入一个整数,用if-else结构求出最大值。 #include void main() {

int a,b,c,max;

printf(\请输入三个整数(用回车隔开):\scanf(\if(a>b) max=a; else max=b; if(max>c) max=max; else max=c;

printf(\最大值是:%d\\n\}

2.3 简单的顺序结构 1)计算1+4+7+…+301 #include void main() { int i,sum; sum=0; for(i=1;i<=301;i=i+3) sum=sum+i;

printf(\}

2)循环输入某同学的八个科目,计算成绩总分和平均分。 #include void main() { int i,x,sum; sum=0; printf(\请输入学生八个科目的成绩:\\n\ for(i=1;i<=8;i++) { scanf(\ sum=sum+x; }

printf(\}

3)计算n!

#include void main() { int i,x,sum; sum=1; printf(\请输入x的值:\\n\ scanf(\ for(i=1;i<=x;i++) { sum=sum*i; }

printf(\}

4)显示1~10的平方,输出1*1=1,2*2=4,。。。10*10=100. #include

void main() { int i; for(i=1;i<=10;i++)

printf(\}

5)计算1—3/4+5/7-7/10….前n项之和。 #include void main() { int i,n;

float item,flag,sum; sum=0; flag=1; scanf(\ for(i=1;i<=n;i++) { item=flag*(2*i-1)/(3*i-2); sum=sum+item; flag=-flag; }

printf(\}

实验3 分支程序结构

3.1 简单分支结构

1)输入一个整数X,判断是否为5的倍数。 #include void main() { int x; scanf(\ if(x%5==0) printf(\能整除5\\n\ else printf(\不能整除5\\n\}

2)输入X,计算 Y=-5 x<0 X(2)+2 0<=x<=1 x/2 x>1 #include void main() { double x,y; scanf(\ if(x<0) y=-5; else if(x>=0 && x<=1) y=x*x+2; else y=x/2; printf(\}

3)某商场打折如下: 购物金额<300元 不打折 300<=购物金额<=500 9折 500<=购物金额 7折 要求输入一个购物金额(x),输出打折率(rate),以及购物的实际付款金额。#include void main() { int x,y;scanf(\ if(x<300) printf(\不打折,付款%d元\ else if(x>=300 && x<500) { y=x*0.9; printf(\折,付款%d元\ }else

{ y=x*0.7; printf(\折,付款%d元\ } }

5)从键盘输入10个字符,将所有的英文字母转换为大写后输出。 #include void main() { int i; char ch; for(i=1;i<=10;i++) { scanf(\ if(ch>='a' &&ch<='z') ch=ch-32; printf(\ } }

6)从键盘输入10个字符,统计其中的英文字母,空格,数字字符和其他字符的个数。

#include void main() { int i,l,s,d,o;char ch;l=s=d=o=0; for(i=1;i<=10;i++) { scanf(\ if((ch>='a' &&ch<='z')||(ch>='A' &&ch<='Z')) l++; else if (ch==' ') s++; else if (ch>='0' && ch<='9') d++; else o++; } printf(\

3.2 复杂分支结构

1)输入一个四位整数的年份,判断是否是闰年。

能被4整除但不能被100整除,或者能被400整除的年份为闰年。 #include void main() { int x; scanf(\ if((x%4==0 && x0!=0)||x@0==0)

printf(\是闰年\\n\ else printf(\不是闰年\\n\}

2)售货机出售4种商品,薯片3.0元,爆米花2.5元,巧克力4.0元,可乐3.5元,在屏幕上显示以下菜单,用户可以连续查询商品价格,当次数超过5次时,自动跳出查询。不到5次,用户可以选择退出,1~4查询,显示价格;输入0,退出;输入其他编号,显示价格为0。 #include void main() { int x; int i; for(i=1;i<=5;i++) { scanf(\ switch(x){ case 1:printf(\ case 2:printf(\ case 3:printf(\ case 4:printf(\ case 0:i=6;printf(\退出查询\\n\ default:printf(\ } } }

3)某人的身高和体重,按下式确定其体重是否标准。标准体重=身高-110;超过标准体重5kg为过胖;低于标准体重5kg为过瘦。 #include void main() { int x,y,t; printf(\请输入身高和体重,用回车分隔:\\n\ scanf(\ t=x-110; if(y-t>5) printf(\过胖\\n\ else if (y-t<-5) printf(\过瘦\\n\ else printf(\标准\\n\}

4)计算购买某商品的总金额,该商品的单价5元/公斤,购买5公斤以上打9折,10公斤以上8折,20公斤以上7折,50公斤以上6折,100公斤以上5折(多分支if)。

#include void main() { int x,y; scanf(\ if(x<5) y=x*5; else if(x>=5 && x<10) y=x*5*0.9; else if(x>=10 && x<20) y=x*5*0.8; else if(x>=20 && x<50) y=x*5*0.7; else if(x>=50 && x<100) y=x*5*0.6; else y=x*5*0.5; printf(\ }

5)输出给定的某年某月的天数。 #include void main() { int y,m; printf(\请输入年和月:\\n\ scanf(\ if (m==2) { if((y%4==0 && y0!=0)||y@0==0) printf(\年%d月的天数为29天\\n\ else printf(\年%d月的天数为28天\\n\ } else if(m==4 || m==6 || m==9 || m==11) printf(\年%d月的天数为30天\\n\ else printf(\年%d月的天数为31天\\n\}

实验4 循环结构程序设计

4.1 基本循环语句的使用

1)读入一批正整数(以0或负数为结束标志),求其中的奇数和。 #include void main() { int x,sum; sum=0; scanf(\ while(x>0) { if(x%2==1) sum=sum+x; scanf(\ } printf(\奇数和=%d\\n\}

2)输入2个整数a和n,求a+aa+aaa+…..(n个a)之和,例如输入2和3 2+22+222=246 #include void main() { int a,n,i,item,sum; printf(\请输入a和n的值:\\n\ scanf(\ sum=0;item=0; for(i=1;i<=n;i++) { item=item*10+a; sum=sum+item; } printf(\}

3)计算2/1+3/2+5/3+8/5….的近似值。 #include void main() { int n,i,c; float sum,a,b; scanf(\ sum=0;a=2;b=1; for(i=1;i<=n;i++)

{ sum=sum+(a/b); c=a; a=a+b; b=c; } printf(\}

4)编写一个程序,找出被2,3,5整除时余数均为1的最小的10个自然数 提示:不表示循环10次,故不用for,用while #include void main() { int x,count; count=0;x=1; while(count<10) { if(x%2==1 && x%3==1 && x%5==1) { printf(\ count++; } x++; } }

5)输入一个正整数,求出它的位数以及各位数之和,例如123的位数是3,和为6。

#include void main() { int x,y,digit,sum; digit=0;sum=0; scanf(\ y=x; while(x>0) { sum=sum+x; digit++; x=x/10; } printf(\共有%d位数,各位数字之和是%d\\n\}

6)猴子吃桃,猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天又将剩下的桃子吃了一半,又多吃了一个;以后每天都吃了前一天剩下的一半零一个。到了第10天想再吃,只剩下一个桃子了。求第一天总摘了多少桃子。 #include void main() {

int i,a; a=1; for(i=1;i<10;i++) a=2*(a+1); printf(\第一天共摘了%d个桃子\\n\}

4.2 嵌套循环

1)求出100以内的全部素数,每行输出10个。素数只能被1 和自身整除,1不是素数,2是素数。 #include void main()

{ int i,x,count=0; for(x=2;x<=100;x++) { for(i=2;i<=x-1;i++) if(x%i==0) break; if(i>=x) { printf(\ count++; if(count==0) printf(\ } }

2)有一个4位数,千位上的数字和百位上的数字都被擦掉了,已知十位上的数字是1,个位上的数字是2,又知道这个数如果减去7就能被7整除,减去8就能被8整除,减去9就能被9整除,求出这个4位数。 #include void main() { int x,a,b; for(x=1000;x<=9999;x++) { a=x; b=x/10; if(a==2 && b==1 && (x-7)%7==0 && (x-8)%8==0 && (x-9)%9==0) printf(\ } }

3)取1元,2元,5元的纸币共10张,现要15元,编写程序输出的所有付法。 #include void main() { int i,j,k,count=0; for(i=0;i<=10;i++) for(j=0;j<=10;j++) for(k=0;k<=10;k++)

if(i*1+j*2+k*5==15 && i+k+j==10) { printf(\ %d %d\\n\ count++; } printf(\}

4)找出200以内的所有完数,并输出其因子。一个数的因子之和为该数本身,称其为完数。1=1,6=1+2+3,28=1+2+4+7+14 #include int main(void) { int i,j,s; for(i=1;i<=200;i++) { s=1; for(j=2;j<=i/2;j++){ if(i%j==0) s=s+j; } if(s==i) { printf(\ for(j=2;j<=i/2;j++) if(i%j==0) printf(\ printf(\ } } return 0; }

5)编写显示下面的输出 0 01 012 0123 01234 0123 012 01 0

#include int main(void) { int i,j; for(i=0;i<=4;i++) { for(j=0;j<=i;j++) printf(\ printf(\

} for(i=0;i<=4;i++) { for(j=0;j<4-i;j++) printf(\ printf(\ } return 0; }

6)打印出如下图案

*

* * *

* * * * *

* * * * * * *

* * * * * * * *

*

#include void main() { int i,j;

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

{ for(j=1;j<=8-(2*i-1);j++) printf(\ for(j=1;j<=2*i-1;j++) printf(\ printf(\ } for(i=2;i<=4;i++) { for(j=1;j<=2*i-1;j++) printf(\ for(j=1;j<=8-(2*i-1);j++) printf(\ printf(\ } }

实验5 程序结构的综合练习

1)输入两个整形变量a,b的值,输出a+b,a_b,a*b,a/b,(float)a/b,a%b的结果。 要求算术的结果连同算式一起输出,每个算式占一行。 #include void main() { int a,b; scanf(\ printf(\ printf(\ printf(\ printf(\ printf(\ printf(\} 2)求前驱字符和后继字符。输入一个英文字符,找出它的前驱字符和后继字符,并按字符的ASCII码值从大到小的顺序输出这三个字符及其对应的ASCII码值。 #include void main()

{ char ch,before,after; ch=getchar(); while(!((ch>='a' &&ch<='z')||(ch>='A' && ch<='Z'))) { printf(\请重新输入!\\n\ ch=getchar(); } before=ch-1; after=ch+1; if(before<'A'||(before<'a' && before>'Z')) { before=before+26; printf(\ } else if(after>'z'|| (after>'Z' && after<'a')) { after=after-26; printf(\ } else printf(\;}

3)输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内,圆外,圆周上,其中心坐标(2,2),半径为1. #include void main() { float x,y; scanf(\

break; } for(i=5-1;i>=t;i--) a[i+1]=a[i]; a[t]=x; for(i=0;i<5+1;i++) printf(\ }

如果没有数据,需要自己输入并排序,的程序如下: #include void main()

{ int a[10],i,n,j,temp,x,t; printf(\请输入整数的个数:\ scanf(\ printf(\请输入%d个正整数:\\n\ for(i=0;ia[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } printf(\请输入要插入的整数x:\ scanf(\ for(i=0;ix) { t=i; break; } for(i=n-1;i>=t;i--) a[i+1]=a[i]; a[t]=x; for(i=0;i

6.2 字符串和二维数组

1)输入一个以回车结束的字符串(少于80个字符),统计其中的大写字母的个数。

#include void main() {int j,count=0; char str[80],ch; printf(\请输入字符串,以回车结束:\\n\ gets(str);

for(j=0;str[j]!='\\0';j++) if (str[j]>='A' && str[j]<='Z')

count++; printf(\ }

2)先输入一个以回车结束的字符串(少于80个字符),再输入一个字符,在字符串中查找该字符。如果找到,则输出该字符中所对应的最大下标(下标从0开始);否则,NOT FOUND. #include void main()

{ int i,j,index=-1; char str[80],ch; printf(\请输入字符串,以回车结束:\\n\ i=0; while ((str[i]=getchar())!='\\n') i++; str[i]='\\0'; printf(\请输入要查找的字符:\\n\ ch=getchar(); for(j=0;j

3)输入一个字符串,直到读到句号为止,记录下这串字符是字母或者是数字的所有字符,然后把这些字符按俞输入次序相反输出。 1+2=3abc/ABC ~CBAcba321 #include void main() { int i,j; char str[80],ch; printf(\请输入字符串,以句号结束:\\n\ i=0; while ((str[i]=getchar())!='.') { if((str[i]>='A' && str[i]<='Z')||(str[i]>='a' && str[i]<='z') ||(str[i]>='0' && str[i]<='9')) i++; } str[i]='\\0'; for(j=i-1;j>=0;j--) printf(\ }

4)输入一个以回车结束的字符串(少于80个字符),将其中的大写字母加密 A~Z,B~Y,C~X,D~W

#include void main() {char s[80]; int i;

printf(\gets(s); i=0;

while (s[i]!='\\0')

{if(s[i]>='A'&& s[i]<='Z') s[i]='Z'-(s[i]-'A'); i++; }

printf(\ }

5)读入一个正整数n(1<=n<=6),再读入n阶矩阵a,计算该矩阵的主对角线和副对角线的所以元素之和。 #include void main ()

{ int i,j,n,sum=0; int a[6][6];

printf(\ scanf(\printf(\阶:\for(i=0;i

{ for(j=0;j

printf(\ printf(\ for(i=0;i

6)读入一个正整数n(1<=n<=6),再读入n阶矩阵a,如果a是上三角矩阵输出YES,否则输出NO(主对角线一下所有元素都为0) #include void main()

{ int a[6][6],n,i,j,f=0; printf(\请输入n:\\n\ scanf(\ printf(\请输入%d阶矩阵:\\n\ for(i=0;i

for(i=0;i0) { f=1; break; } if(f==0) printf(\ else printf(\ } 7)设a是二维整型数组,n(1<=n<=6)和x都是整数,数组a中各元素的值互异。在数组a中的元素中查找与x相同的元素,找到,输出x在数组中的位置;没有,no found .

#include void main()

{ int a[6][6],n,x,i,j,row=-1,col=-1; printf(\请输入n:\\n\ scanf(\ printf(\请输入%d阶矩阵:\\n\ for(i=0;i

实验7 函数

1)设计一个函数,用来计算阶乘。 #include int jie(int n) { int y,i; y=1; for(i=1;i<=n;i++) y=y*i; return y; } int main(void) { int x,s; scanf(\ s=jie(x); printf(\ return 0; }

3)写一个用来判别正整数是否为素数,若为素数函数值为1,否则0,在主函数中调用这个函数来判别一个整数是不是素数。 #include int isprime(int x) { int i; for(i=2;i=x) return 1; else return 0; } int main(void) { int x; scanf(\ if( isprime(x)==1) printf(\ else printf(\ return 0; }

4)输入一批正整数(以负数或0结束),求其中的奇数和。Even(n)判别奇偶性,偶数返回1,否则0 。 #include int even(int a) { if(a%2==0) return 0; else return 1; } int main(void) { int x,s; s=0; scanf(\ while(x>0)

本文来源:https://www.bwwdw.com/article/nsut.html

Top