收藏 分销(赏)

C语言程序简单例子.doc

上传人:精**** 文档编号:4138242 上传时间:2024-07-31 格式:DOC 页数:21 大小:159KB
下载 相关 举报
C语言程序简单例子.doc_第1页
第1页 / 共21页
C语言程序简单例子.doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述
实验二参考答案 1.输入两个整型数字,输出他们的和。 #include<stdio.h> main() { int a, b, sum; scanf(“%d%d”, &a, &b); sum=a+b; printf(“a+b=%d”, sum); } 2.输入两个实型数,输出他们的和与乘积。 #include<stdio.h> main() { float a, b, sum, product; scanf(“%f%f”, &a, &b); sum=a+b; product=a*b; printf(“a+b=%5.2f, a*b =%5.2f”, sum, product); } 3.求方程的根(设)(其中a,b,c的值由键盘输入)。 #include<stdio.h> #include<math.h> main() { float a, b, c, dt, x1, x2; scanf(“%f%f%f”, &a, &b, &c); dt=sqrt(b*b-4*a*c); x1=(-b+dt)/(2*a); x2=(-b-dt)/(2*a); printf(“x1=%5.2f, x2 =%5.2f”, x1, x2); } 4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?(h和f的值由键盘输入,输出鸡和兔的头数) #include<stdio.h> main() { int h, f, x,y; scanf(“%d%d”, &h, &f); x=2*h-f/2; y=f/2-h; printf(“x=%d, y =%d”, x, y); } 实验三参考答案 1.输入三个数a、b、c,要求按由小到大的顺序输出。 #include<stdio.h> main() { float a,b,c,t; scanf(“%f,%f,%f”,&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(“%f,%f,%f”,a,b,c); } 2.编写程序,输入三角形三边 a、b、c,判断a、b、c能否构成三角形,若不 能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。 (1) #include<stdio.h> main() { float a,b,c,t; scanf(“%f,%f,%f”,&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;} if(a+b>c) { if(a==b||b==c) { if(a==c) printf(“等边三角型”); else if(c*c==a*a+b*b) printf(“等腰直角三角形”); else printf(“一般等腰三角形”); } else if(c*c==a*a+b*b) printf(“一般直角三角形”); else printf(“一般三角形”); } else printf(“不构成三角形”); } (2) #include<stdio.h> main() { float a,b,c,t; scanf(“%f,%f,%f”,&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;} if(a+b<=c) printf(“不构成三角形”); else if(a==b && b==c && a==c) printf(“等边三角型”); else if(a==b && c*c==a*a+b*b) printf(“等腰直角三角形”); else if (a==b) printf(“一般等腰三角形”); else if(c*c==a*a+b*b) printf(“一般直角三角形”); else printf(“一般三角形”); } 3.编程实现下列函数 x (x<1) y= 2x-1 () |3x-11| () #include<stdio.h> #include<math.h> main() { int x,y; printf("input x=:"); scanf("%d",&x); if(x<1) y=x; else if(x<10) y=2*x-1; else y=abs(3*x-11); printf("x=%d y=%d\n",x,y); } 4.编写程序,输入一百分制成绩,对应输出等级A、B、C、D、E,90分以上为A,80分—89分为B,70分—79分为C,60分—69分为D,60分以下为E。 方法一:用if语句 #include<stdio.h> main() { float score; char grade; scanf("%f", &score); if(score>100||score<0) printf("\ninput error!"); else { if(score>=90) grade='A'; else if(score>=80) grade='B'; else if(score>=70) grade='C'; else if(score>=60) grade='D'; else grade='E'; } printf("the student grade=%c \n", grade); } 方法二:用switch语句。 注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。则由此可得把score除十取整,化为相应的常数。 #include<stdio.h> main() { float score, int s; char grade; scanf("%f", &score); s=score/10; if(s<0||s>10) printf("\ninput error!"); else { switch (s) { case 10: case 9: grade ='A'; break; case 8: grade ='B'; break; case 7: grade ='C'; break; case 6: grade ='D'; break; default: grade ='E'; } printf("the student grade =%c \n ", ch); } } 实验四参考答案 1.编写程序,计算以下级数前n项之和。 #include<stdio.h> void main() { int i, n; float s=1.0, sum=1.0, x; scanf(“%d, %f”, &n, &x); for(i=1; i<=n; i++) { s=s*x/i; sum=sum+s; } printf(“sum=%5.2f”, sum); } 2.编程打印如下图案(书后习题第3题): ** **** ****** ******** ********** ************ ************** #include <stdio.h> main( ) { int i, j, n; for(i=1; i<=7; i++) { for(j=0; j<14-2*i; j++) printf(" "); for(j=0; j<2*i; j++) printf("*"); printf("\n"); } } 3.编写程序实现输入整数n,输出如下所示由数字组成的菱形。(图中n=5) 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 3 2 1 1 2 3 2 1 1 2 1 1 #include <stdio.h> main( ) { int i, j,n; scanf("%d", &n); for(i=1; i<n; i++) { for(j=1; j<i; j++) printf(" %d", j); for(j=i; j>0; j--) printf(" %d", j); printf("\n"); } for(i=n; i>0; i--) { for(j=1; j<i; j++) printf(" %d", j); for(j=i; j>0; j--) printf(" %d", j); printf("\n"); } } 4.输出Fibonacci数列第n项。其数列通项公式为Fn=Fn-1+Fn-2,F1=1,F2=1。 方法一: #include<stdio.h> main() { float f, f1=1, f2=1; int i, n; scanf("%d", &n); for(i=3; i<=n; i++) { f=f1+f2; f1=f2; f2=f; } printf("%10.0f \n", f ); } 方法二: #include <stdio.h> #define NUM 20 void main() { int i; float f[NUM]={1,1}; for(i = 2; i < NUM; i++) f[i] = f[i-2]+f[i-1]; for(i = 0; i < NUM; i++) printf("%10.0f \n", f[i]); } 实验五参考答案 1.编写程序,将1,2,3这三个数赋给数组a,将5,6,7赋给数组b,将两数组对应元素相加的和赋给数组c,输出数组c #include <stdio.h> void main() { int a[3]={1,2,3}, b[3]={4,5,6}, c[3]; int i; for(i=0;i<3;i++) { c[i]=a[i]+b[i]; printf("%d",c[i]); } } 2.输入任意10个数,按从大到小或从小到大的顺序输出(“冒泡”排序) #include <stdio.h> #define NUM 10 void main () { int a[NUM], i, j, temp, flag; printf ("input %d numbers: \n", NUM); for (i=0; i<NUM; i++) scanf ("%d", &a[i]); for (i=1; i<NUM; i++) for (j=0; j<NUM-i; j++) { flag = 0; if (a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag = 1; } if (flag == 0) break; } printf ("the sorted numbers:\n"); for (i=0; i<NUM; i++) printf ("%d ", a[i]); } 3.输入10个整数并存放在一维数组中,找出其中最大值和此元素的下标 #include <stdio.h> #define NUM 10 void main() { int a[NUM]; int i,max, index; for(i=0; i<NUM;i++) scanf("%d",&a[i]); max=a[0]; for(i=0; i<NUM;i++) { if(max<a[i]) { max=a[i]; index=i; } } printf("max=%d, index=%d", max, index); } 4.将从键盘输入的字符串进行逆序输出,逆序后的字符串仍然保留在原来字符数组中。(不得调用任何字符串处理函数包括strlen) #include <stdio.h> #define NUM 80 void main() { char a[NUM], temp; int i, j, index; for(i=0; i<NUM;i++) { scanf("%c",&a[i]); if(a[i]=='\n') break; } a[i]='\0'; index=i; for(i=0, j=index-1; i<=index/2; i++, j--) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0; i<NUM; i++) { if(a[i]=='\0') break; printf("%c", a[i]); } printf("\n"); } 实验五参考答案 1.编写函数,求表达式的值,x有由主函数输入。(请同学们用有返回值和无返回值两种方式去做,练习简单的函定义、声明、及调用方法) 有返回值 #include <stdio.h> float fun(float x) { float m ; m=x*x-5*x+4; return m ; } void main() { float a, f; scanf("%f", &a); f=fun(a); printf("%f \n", f); } 无返回值 #include <stdio.h> void fun(float x) { float m ; m=x*x-5*x+4; printf("%f \n", m); } void main() { float a; scanf("%f", &a); fun(a); } 2.编写函数,按如下递归公式求函数值。 1 (n=0) fun(n)= (n>0) #include <stdio.h> int fun(int n) { int m; if(n==0) m=1; else m=2*fun(n-1)+1; return m; } void main() { int a, f; scanf("%d", &a); f=fun(a); printf("%d \n", m); } 3. 编写函数求数n所有质因子(所有为素数的因子)并输出,n由主函数输入。 #include <stdio.h> #include <math.h> int prime(int m) { int j; if (m == 1) return 0; else if (m == 2) return 1; else if (m%2==0) return 0; else for(j=3; j<=sqrt(m); j+=2) if(m%j==0) return 0; return 1; } void main() { int i,n,flag; scanf("%d",&n); for (i=1;i<=n; i++) { if(n%i==0) flag=prime(i); else flag=0; if(flag==1) printf("%d \n",i); } } 4.哥德巴赫猜想之一是,任何一个大于5的偶数都可以表示为两个素数之和。编写程序验证这一论断。 #include <stdio.h> int prime(int m) { int j; if (m == 1) return 0; else if (m == 2) return 1; else if (m%2==0) return 0; else for(j=3; j<=sqrt(m); j+=2) if(m%j==0) return 0; return 1; } main( ) { int a,b,c,n; scanf("%d", &n); for (a=6; a<=n; a+=2) for (b=3; b<=a/2; b+=2) if (prime(b)==1) { c=a-b; if (prime(c)==1) { printf("%d=%d+%d\n",a,b,c); break; } } } 5. 二维数组score中存放5个学生的3门课成绩,由主函数输入一个数,将所有总成绩大于该数的学生输出。 #include <stdio.h> void max(float a[5][3], float score) { int i,j; float s; for(i=0;i<5;i++) { s=0; for(j=0; j<3; j++) s=s+a[i][j]; if(s>score) printf("stu%d: %.2f\n", i+1, s); } } void main() { int i,j; float a[5][3]; float score; printf("please input number:\n"); for(i=0; i<5; i++) { printf("stu%d:", i+1); for(j=0; j<3; j++) scanf("%f",&a[i][j]); printf("\n"); } printf("please input score:"); scanf("%f", &score); max(a,score); } 实验七参考答案 1.用指针变量输出任意4*4矩阵各元素的值 (1) #include "stdio.h" void main() { int i,a[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}}; int *p=a; for(i=0;i<4*4;i++) { printf("%3d",*(p+i)); if((i+1)%4==0) printf("\n"); } } (2) #include "stdio.h" void main() { int a[4][4]={{1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4}}; int (*p)[4]=a; int i,j; for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%3d",*(*(p+i)+j)); printf("\n"); } printf("\n"); } 2.有一个整型二维数组a[m][n],找出最大值所在的行和列,以及该最大值 #include "stdio.h" void main() { int a[4][4]={{1,34,35,26},{7,12,92,24},{55,33,53,6},{7,41,34,64}}; int (*p)[4]=a; int i,j,x,y,max; max=a[0][0]; for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf("%3d",*(*(p+i)+j)); if(max<*(*(p+i)+j)) { max=*(*(p+i)+j); x=i; y=j; } } printf("\n"); } printf("\nmax=%d\nx=%d\ny=%d\n",max,x,y); } 3.从键盘输入一字符串,求此字符串的长度并输出 #include<stdio.h> int str_len(char *p) { int n=0; while(*p!='\0') { n++; p++; } return n; } int main() { char a[100]; int n; printf("Input a string:\n"); gets(a); n=str_len(a); printf("The lenth:%d\n",n); } 4.将字符串str中的小写字母全部改为大写字母,并输出该字符串 #include "stdio.h" void fun(char *p) { int i; for(i=0;*(p+i)!='\0';i++) if(*(p+i)>='a'&&*(p+i)<='z') *(p+i)=*(p+i)-32; } void main() { char str[50]; char *p=NULL; printf("Please input string:\n"); gets(str); p=str; fun(p); puts(str); } 实验八参考答案 1. 编写程序:定义一个职工结构体类型,定义职工结构体变量,从键盘输入一名职工信息,然后输出。(假设职工信息包括:姓名、身份证号、工龄、工资) #include<stdio.h> struct employee { char name[20]; char id[20]; int gl; int salary; }; int main() { struct employee em; printf("Name:\n"); scanf("%s",em.name); printf("HM:\n"); scanf("%s",em.id); printf("GL:\n"); scanf("%d",&em.gl); printf("GZ:\n"); scanf("%d",&em.salary); printf("Name:%s HM:%s GL:%d GZ:%d\n",em.name,em.id,em.gl,em.salary); return 0; } 2. 设计一个保存学生情况的结构体,学生情况包括姓名、学号、年龄。输入5个学生的情况,输出学生的平均年龄和年龄最小的学生的情况 #include <stdio.h> struct Student { char name[100]; // 姓名 char stdNo[10]; // 学号 int age; // 年龄 }; // 输入学生信息 void input (Student *stu, int n) { printf("输入%d个学生信息:", n); for (int i = 0; i < n; i++) { printf("\n第%d个学生:\n", i + 1); printf("姓名:"); gets(stu[i].name); printf("学号:"); gets(stu[i].stdNo); printf("年龄:"); scanf("%d", &stu[i].age); fflush(stdin); } } 3. 使用结构体数组输入10本书的名称和单价,调用函数按照书名的字母顺序序进行排序,在主函数输出排序结果 #include <stdio.h> #include <string.h> struct Book { char name[100]; // 书名 float price; // 价格 }; // 按书名排序 void sort (Book **pBook, int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n - 1 - i; j ++) { if (strcmp((*pBook[j]).name, (*pBook[j + 1]).name) == 1) { Book *temp = pBook[j]; pBook[j] = pBook[j + 1]; pBook[j + 1] = temp; } } } } main () { Book book[10]; Book *prtBook[10]; printf("输入10本书的信息:\n"); for (int i = 0; i < 10; i++) { printf("\n第%d本书:\n", i + 1); printf("书名:"); gets(book[i].name); printf("价格:"); scanf("%f", &book[i].price); prtBook[i] = &book[i]; fflush(stdin); } sort(prtBook, 10); for (int n = 0; n < 10; n++) { printf("%s\t\t%0.2f\n", (*prtBook[n]).name, (*prtBook[n]).price); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服