C语言程序简单例子讲解学习

合集下载

c语言顺序结构程序例题

c语言顺序结构程序例题

C语言顺序结构程序例题一、介绍顺序结构是C语言中最简单的程序结构,也是最基本的程序设计思路。

它按照代码的编写顺序,依次执行每一条语句,没有条件、分支或循环的判断。

本文将通过一些例题来帮助读者理解和掌握C语言顺序结构的使用方法。

二、示例代码1.题目一描述:编写一个程序,实现两个整数相加,并输出结果。

代码:#i nc lu de<s td io.h>i n tm ai n(){i n tn um1,nu m2,s um;p r in tf("请输入两个整数:\n");s c an f("%d%d",&num1,&nu m2);s u m=nu m1+n um2;p r in tf("它们的和为:%d\n",su m);r e tu rn0;}2.题目二描述:编写一个程序,计算圆的面积和周长。

代码:#i nc lu de<s td io.h>#d ef in eP I3.14159i n tm ai n(){f l oa tr ad iu s,ar ea,p er im et er;p r in tf("请输入圆的半径:\n");s c an f("%f",&ra diu s);a r ea=P I*ra di us*ra d iu s;p e ri me te r=2*PI*ra d iu s;p r in tf("圆的面积为:%.2f\n",ar ea);p r in tf("圆的周长为:%.2f\n",pe rim e te r); r e tu rn0;}3.题目三描述:编写一个程序,将华氏温度转换为摄氏温度。

代码:#i nc lu de<s td io.h>i n tm ai n(){f l oa tf ah re nh ei t,c e ls iu s;p r in tf("请输入华氏温度:\n");s c an f("%f",&fa hre n he it);c e ls iu s=(f ah re nhe i t-32)*5/9;p r in tf("摄氏温度为:%.2f\n",ce lsi u s);r e tu rn0;}三、运行结果1.题目一请输入两个整数:57它们的和为:122.题目二请输入圆的半径:2.5圆的面积为:19.63圆的周长为:15.713.题目三请输入华氏温度:75.5摄氏温度为:24.17四、总结通过以上例题可以看出,在C语言中,顺序结构是最简单、最基础的程序结构。

c语言递归算法简单例子

c语言递归算法简单例子

c语言递归算法简单例子嘿,聊聊C 语言的递归算法简单例子,老有意思啦!嘿,朋友们!今天咱来唠唠C 语言里那个神奇又有点让人摸不着头脑的递归算法,顺便看几个简单例子,保证让你大开眼界!递归算法就像是一只调皮的小猴子,在代码的树林里上蹿下跳,一会儿钻进这个函数,一会儿又从里面冒出来,还带回一些东西,可有意思啦!比如说计算一个整数的阶乘,这可是递归算法的经典例子呢。

我们来看看代码怎么写:```cinclude <>int factorial(int n) {if (n == 0 n == 1) {return 1;} else {return n factorial(n - 1);}}int main() {int num = 5;int result = factorial(num);printf("%d 的阶乘是:%d\n", num, result);return 0;}```你看哈,在这个factorial 函数里,它自己会不断地叫自己,就好像一直在问:“嘿,我下一个数的阶乘是多少啊?”然后就一层一层地往里钻。

直到遇到n 等于0 或者1 这个底部,才开心地说:“哦,我知道啦,是1 呀!”然后又一层一层地跑回来,把每层得到的结果相乘,最后得出最终答案。

感觉就像是小猴子在树洞里找到了宝贝,然后欢天喜地地跑出来。

还有一个有趣的例子,就是计算斐波那契数列。

这斐波那契数列啊,前面两个数是0 和1,后面的每个数都是前两个数的和。

我们也可以用递归算法来算算。

```cinclude <>int fibonacci(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;} else {return fibonacci(n - 1) + fibonacci(n - 2);}}int main() {int n = 10;for (int i = 0; i < n; i++) {printf("斐波那契数列第。

c语言数组小案例

c语言数组小案例

c语言数组小案例C语言是一种广泛应用的编程语言,数组是C语言中常用的数据结构之一。

它可以存储多个相同类型的数据,并通过索引访问和操作这些数据。

下面列举了10个关于C语言数组的小案例,以帮助读者更好地理解和掌握数组的使用。

1. 计算数组元素的总和编写一个程序,从用户输入一组整数,并计算它们的总和。

使用数组来存储输入的整数,并通过循环遍历数组来计算总和。

2. 查找数组中的最大值和最小值编写一个程序,从用户输入一组整数,并找到其中的最大值和最小值。

使用数组来存储输入的整数,并通过循环遍历数组来找到最大值和最小值。

3. 数组的逆序排列编写一个程序,从用户输入一组整数,并将它们按逆序排列。

使用数组来存储输入的整数,并通过循环遍历数组来实现逆序排列。

4. 数组的去重编写一个程序,从用户输入一组整数,并去除其中的重复元素。

使用数组来存储输入的整数,并通过循环遍历数组来去除重复元素。

5. 数组的排序编写一个程序,从用户输入一组整数,并将它们按升序或降序排序。

使用数组来存储输入的整数,并通过循环遍历数组来实现排序。

6. 数组的拷贝编写一个程序,从用户输入一组整数,并将它们拷贝到另一个数组中。

使用两个数组分别存储输入的整数,并通过循环遍历数组来实现拷贝。

7. 数组的搜索编写一个程序,从用户输入一组整数,并在数组中搜索指定的值。

使用数组来存储输入的整数,并通过循环遍历数组来搜索指定的值。

8. 数组的合并编写一个程序,从用户输入两组整数,并将它们合并为一个数组。

使用两个数组分别存储输入的整数,并通过循环遍历数组来实现合并。

9. 数组的平均值和方差编写一个程序,从用户输入一组整数,并计算它们的平均值和方差。

使用数组来存储输入的整数,并通过循环遍历数组来计算平均值和方差。

10. 数组的矩阵操作编写一个程序,从用户输入一个矩阵,并实现矩阵的转置、矩阵的相加和矩阵的乘法等操作。

使用二维数组来存储输入的矩阵,并通过循环遍历数组来实现矩阵操作。

C语言简单的23 个例子

C语言简单的23 个例子

例1.1:输入两个数,输出其中的最大者方法一:#include "stdio.h"int main(){int a,b,max;scanf("%d %d",&a,&b);if (a>b) max=a;else max=b;printf("%d\n",max);return 0;}方法二:#include"stdio.h"int main(){int m,n;scanf("%d %d",&m,&n);printf("%d\n",(m>n)?m:n);return 0;}例1.2:输入三个数,输出其最大者#include "stdio.h"int main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);printf("%d\n",a>b?(a>c?a:c):(b>c?b:c));return 0;}例2:求一个数的绝对值方法一:#include "stdio.h"int main(){int a,absa;printf("enter one number:\n");scanf("%d",&a);if (a<0)absa=-a;elseabsa=a;printf("|%d|=%d\n",a,absa);return 0;}方法二:#include"stdio.h"#include"math.h"int main(){int a;scanf("%d",&a);printf("%d\n",abs(a));return 0;}例3:两个数的四则运算#include "stdio.h"int main(){double x,y;char op;printf("输入运算式:\n");scanf("%lf%c%lf",&x,&op,&y);switch (op){case '+':printf("%.2f%c%.2f=%.2f\n",x,op,y,x+y);break;case '-':printf("%.2f%c%.2f=%.2f\n",x,op,y,x-y);break;case '*':printf("%.2f%c%.2f=%.2f\n",x,op,y,x*y);break;case '/':if (y==0)printf("error!\n");elseprintf("%.2f%c%.2f=%.2f\n",x,op,y,x/y);break;default :printf("expression is error!\n");}return 0;}例4:求N个数的平均数,以-1结束输入,且-1不纳入计算#include "stdio.h"int main(){int n=0;double a,sum=0;while(1){scanf("%lf",&a);if(a==-1) break;sum+=a;n++;}printf("%.2f\n",sum/n);return 0;}例5:打印出九九乘法口诀#include "stdio.h"int main(){int i,j;for (i=1;i<10;i++){ for(j=i;j<10;j++){printf("%dx%d=%-4d",i,j,i*j);}printf("\n");}return 0;}例6:大小写转换,以数字0结束输入#include "stdio.h"int main(){char ch;while(1){scanf("%c",&ch);if(ch=='0') break;if(ch>='A'&&ch<='Z')printf("%c\n",ch+32);if(ch>='a'&&ch<='z')printf("%c\n",ch-32);}return 0;}例7:打印菱形图案#include "stdio.h"int main(){int i,j,k;for (i=0;i<10;i++){for (j=0;j<=9-i;j++)printf(" ");for (k=0;k<=2*i;k++)printf("%c",3);printf("\n");}for (i=0;i<=9;i++){for (j=0;j<=i+1;j++)printf(" ");for (k=0;k<=16-2*i;k++)printf("%c",3);printf("\n");}return 0;}例8:求100以内所有的素数#include "stdio.h"#include "math.h"main(){int m,i,k,t=0,j=1,n=0;printf("%3d:",j);for (m=2;m<=300;m=m+1){k=(int)sqrt(m);for (i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){printf("%5d",m);t++;if(t%4==0) printf("\n%3d:",++j);}}printf("\n");return 0;}例9:输出Fibonacci数列的前20项及其和(Fibonacci数列:1,1,2,3,5,8,13,21···)#include "stdio.h"int main(){int i,sum=0,f[20]={1,1};for (i=2;i<20;i=i+1)f[i]=f[i-1]+f[i-2];for (i=0;i<20;i=i+1){printf("%6d",f[i]);sum=sum+f[i];if ((i+1)%4==0) printf("\n");}printf("sum=%d\n",sum);return 0;}例10:输出各位数均不相同的三位数,及其个数#include "stdio.h"int main(){int n,i,j,k;n=0;for (i=1;i<=9;i++)for (k=1;k<=9;k++)if (k!=i)for (j=0;j<=9;j++)if(j!=i&&j!=k){n++;printf("%d ",100*i+10*j+k);if (n%10==0) printf("\n");}printf("\n");printf("共%d个数\n",n);return 0;}例11:输入一个数,求其阶乘#include "stdio.h"int main(){int i,s,n;printf("n=");scanf("%d",&n);i=1;s=2;while (i<=n){s=s*i;i=i+1;}printf("%d!=%d\n",n,s);return 0;}例12:将一个数分解质因数#include"stdio.h"int main(){int i,n;printf("please input numbers:\n");for(;;){scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++){while(n!=1){if(n%i==0){ printf("%d*",i);n=n/i;}else break;}}if(n==1) printf("\b \n");else printf("%d\n",n);}return 0;}例13:汉诺塔游戏#include<stdio.h>void move(char a,char b){static int i=0;printf("%c-->%c %d\n",a,b,++i);}void hanoi(int m,char a,char b,char c){if(m==1) move(a,c);else{hanoi(m-1,a,c,b);move(a,c);hanoi(m-1,b,a,c);}}int main(){int m;printf("请输入方块数:");scanf("%d",&m);hanoi(m,'A','B','C');return 0;}例14:求一句话中单词的个数#include<stdio.h>int main(){char s[100],c;int i,temp=0,num=0;gets(s);for(i=0;(c=s[i])!='\0';i++){if (c==' ') temp=0;else if (temp==0){num=num+1;temp=1;}}printf("%d\n",num);return 0;}例15:水仙花数(三位数,各位数字的三次方之和等于该数)方法一:#include "stdio.h"int main(){int i,j,z,n;for (n=100;n<1000;n++){i=n/100;j=n/10-10*i;z=n%10;if(n==i*i*i+j*j*j+z*z*z)printf("%5d",n);}printf("\n");return 0;}方法二:#include"stdio.h"int main(){int i,j,k;for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)printf("%4d",100*i+10*j+k);printf("\n");return 0;}例16:字符串b在字符串a中出现的次数,b中可以用“?”代替未知字母#include<stdio.h>#define N 1000int main(){int i,j,m,n,k,x=0;char a[N],b[N];gets(a);gets(b);for(i=0;a[i]!='\0';i++);for(j=0;b[j]!='\0';j++);m=i--;n=j--;for(i=0;i<=m-n+1;i++){k=0;for(j=0;j<n;j++)if(b[j]=='?') {k=1;continue;}else if(a[i+j]==b[j]) k=1;else k=0;if (k) x++;}printf("%d\n",x);return 0;}例17:冒泡排序#include "stdio.h"#define N 10int main(){int i,j,t,max,a[N]={1,1,2,3,15,28,133,21,34,777};int x;printf("初始数组元素为:");for (i=0;i<N;i++)printf("%d ",a[i]);printf("\n");for (i=0;i<N-1;i++)for (j=0;j<N-i-1;j++)if (a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("从小到大排序后的数组为:");for (i=0;i<N;i++);printf("%3d",a[i]);return 0;}例18:选择排序#include "stdio.h"#define N 10int main(){int i,t,j,max,a[N]={1,1,2,3,15,28,133,21,34,777};int x;printf("初始数组元素为:");for (i=0;i<N;i++)printf("%d ",a[i]);printf("\n");for (i=0;i<N-1;i++){t=i;for (j=i+1;i<N;j++)if (a[j]<a[t]) t=j;if (t!=i) {x=a[t];a[t]=a[i];a[i]=x;}}printf("从小到大排序的数组为:");for (i=0;i<N;i++)printf ("%d",a[i]);printf("\n");return 0;}例19:数组元素的插入#include "stdio.h"#define N 10int main(){int i,j,a[N]={1,1,2,3,15,28,133,21,34};int x;printf("初始数组元素为:");for (i=0;i<N;i++)printf("%d ",a[i]);printf("\n");printf("请输入要插入的下标位置(0-%d):",N-1);scanf("%d",&i);printf("请输入要插入的数:");scanf("%d\n",x);for (j=N-1;j>i;j--)a[j]=a[j-1];a[i]=x;printf("插入元素之后的数组为:");for (i=0;i<N;i++)printf("%4d",a[i]);printf("\n");return 0;}例20:数组元素的删除#include "stdio.h"#define N 10int main(){int i,j,a[N]={1,1,2,3,15,28,133,21,34,88};int x;printf("初始数组元素为:");for (i=0;i<N;i++)printf("%d ",a[i]);printf("\n");printf("请输入要删除的下标位置(0-%d)",N-1);scanf("%d",&i);for (j=i+1;j<N;j++)a[j-1]=a[j];printf("删除后的数组为:");for (i=0;i<N;i++)printf("%4d",a[i]);printf("\n");return 0;}例21:数组中的最大值#include "stdio.h"#define N 10int main(){int i,max,a[N]={1,1,2,3,15,28,133,21,34,777};int x;printf("初始数组元素为:");for (i=0;i<N;i++)printf("%d ",a[i]);printf("\n");max=a[0];for (i=1;i<N;i++)if (a[i]>=max) max=a[i];printf("数组的最大值是%d\n",max);return 0;}例22:数组中最大值的下标#include "stdio.h"#define N 10int main(){int i,max,a[N]={1,1,2,3,15,28,133,21,34,777};int x;printf("初始数组元素为:");for (i=0;i<N;i++)printf("%d ",a[i]);printf("\n");max=0;for (i=1;i<N;i++)if (a[i]>=a[max]) max=i;printf("数组的最大值的下标是%d\n",max);return 0;}例23:查找数组中特定的元素#include "stdio.h"#define N 10int main(){int i,j,t,a[N]={1,1,2,3,15,28,133,21,34,88};int x;printf("初始数组元素为:");for (i=0;i<N;i++)printf("%d ",a[i]);printf("\n");printf("请输入要查找的元素:");scanf("%d",&x);t=-1;for (i=0;i<N;i++)if (a[i]==x) t=i;if (t==-1) printf("数组中没有该数!\n");else printf("该数位于数组的第%d个下标\n",t);return 0;}。

C语言入门基础代码(20条案例)

C语言入门基础代码(20条案例)

C语言入门基础代码(20条案例)下面是20条基础案例:1. 输出Hello, World!#include <stdio.h> // 使用标准输入输出库int main() {printf("Hello, World!\n"); // 输出字符串return 0; // 返回程序执行成功}2. 判断一个数是否为偶数#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数if(num % 2 == 0) { // 如果余数为0说明是偶数printf("%d 是偶数\n", num);} else {printf("%d 是奇数\n", num);}return 0;}3. 计算两个数的和#include <stdio.h> // 使用标准输入输出库int main() {int a, b; // 定义变量int sum; // 定义变量printf("请输入两个整数:");scanf("%d%d", &a, &b); // 从控制台输入两个整数sum = a + b; // 求和printf("%d + %d = %d\n", a, b, sum); // 输出结果return 0;}4. 求一个数的平方#include <stdio.h> // 使用标准输入输出库int main() {int num; // 定义变量int square; // 定义变量printf("请输入一个整数:");scanf("%d", &num); // 从控制台输入一个整数square = num * num; // 求平方printf("%d 的平方是%d\n", num, square); // 输出结果return 0;}5. 判断一个字符是否为数字#include <stdio.h> // 使用标准输入输出库#include <ctype.h> // 使用字符函数库int main() {char ch; // 定义变量printf("请输入一个字符:");scanf("%c", &ch); // 从控制台输入一个字符if(isdigit(ch)) { // 判断是否为数字printf("%c 是数字\n", ch);} else {printf("%c 不是数字\n", ch);}return 0;}6. 计算数组元素的平均值#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int sum = 0; // 定义变量int avg; // 定义变量for(int i = 0; i < len; i++) { // 遍历数组sum += arr[i]; // 累加求和}avg = sum / len; // 求平均值printf("数组的平均值是%d\n", avg); // 输出结果return 0;}7. 按照下标访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, arr[i]); // 输出每个元素}return 0;}8. 使用指针访问数组元素#include <stdio.h> // 使用标准输入输出库int main() {int arr[] = {1, 2, 3, 4, 5}; // 定义数组int len = sizeof(arr) / sizeof(int); // 数组长度int *p = arr; // 把数组首地址赋给指针变量for(int i = 0; i < len; i++) { // 遍历数组printf("arr[%d] = %d\n", i, *(p + i)); // 输出每个元素}return 0;}9. 求Fibonacci 数列的第n 项#include <stdio.h> // 使用标准输入输出库int main() {int n; // 定义变量int a = 0, b = 1, c; // 定义变量printf("请输入一个正整数:");scanf("%d", &n); // 从控制台输入一个整数for(int i = 1; i <= n; i++) { // 求Fibonacci 数列的第n 项c = a + b;a = b;b = c;}printf("Fibonacci 数列的第%d 项是%d\n", n, a); // 输出结果return 0;}10. 使用递归计算阶乘#include <stdio.h> // 使用标准输入输出库int factorial(int n) { // 定义递归函数if(n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}}int main() {int n; // 定义变量printf("请输入一个非负整数:");scanf("%d", &n); // 从控制台输入一个整数int result = factorial(n); // 调用递归函数计算阶乘printf("%d 的阶乘是%d\n", n, result); // 输出结果return 0;}11. 判断一个数是否是质数#include <stdio.h>#include <stdbool.h>bool isPrime(int num) {if(num <= 1) {return false; // 小于等于1的数都不是质数}for(int i = 2; i * i <= num; i++) { // 只要从2到根号num遍历就可以了if(num % i == 0) {return false; // 如果存在因子,则不是质数}}return true;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPrime(num); // 调用isPrime函数if(result) {printf("%d 是质数\n", num);} else {printf("%d 不是质数\n", num);}return 0;}12. 计算圆的面积和周长#include <stdio.h>const double PI = 3.1415926;int main() {double r, area, perimeter;printf("请输入圆的半径:");scanf("%lf", &r);area = PI * r * r; // 计算面积perimeter = 2 * PI * r; // 计算周长printf("圆的面积是%.2f,周长是%.2f\n", area, perimeter);return 0;}13. 计算斐波那契数列的前n 项#include <stdio.h>int main() {int n;printf("请输入要输出的斐波那契数列项数:");scanf("%d", &n);int a = 0, b = 1, c; // 定义三个变量for(int i = 1; i <= n; i++) { // 输出前n项斐波那契数列printf("%d ", a);c = a + b;a = b;b = c;}printf("\n"); // 换行return 0;}14. 嵌套循环输出九九乘法表#include <stdio.h>int main() {for(int i = 1; i <= 9; i++) { // 控制行数for(int j = 1; j <= i; j++) { // 控制列数printf("%d*%d=%-2d ", j, i, i * j); // 左对齐输出}printf("\n"); // 换行}return 0;}15. 获得数组的最大值和最小值#include <stdio.h>int main() {int arr[] = {3, 5, 8, 1, 4, 9, 6, 2, 7};int len = sizeof(arr) / sizeof(int);int max = arr[0], min = arr[0]; // 假设第一个元素既是最大值也是最小值for(int i = 1; i < len; i++) {if(arr[i] > max) { // 更新最大值max = arr[i];}if(arr[i] < min) { // 更新最小值min = arr[i];}}printf("数组的最大值是%d,最小值是%d\n", max, min);return 0;}16. 判断一个数是否为回文数```c#include <stdio.h>#include <stdbool.h>bool isPalindrome(int num) {if(num < 0) { // 负数不是回文数return false;}int temp = num, reversed = 0; // 定义需要用到的变量while(temp != 0) { // 反转整数reversed = reversed * 10 + temp % 10;temp /= 10;}return (num == reversed); // 如果反转后等于原来的数,则为回文数}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);bool result = isPalindrome(num);if(result) {printf("%d 是回文数\n", num);} else {printf("%d 不是回文数\n", num);}return 0;}17. 将字符串反转输出#include <stdio.h>#include <string.h>int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);int len = strlen(str);for(int i = len - 1; i >= 0; i--) { // 倒序输出printf("%c", str[i]);}printf("\n"); // 换行return 0;}18. 将一个二维数组按列排序#include <stdio.h>void sortCols(int arr[][3], int rows) {for(int j = 0; j < 3; j++) { // 按列排序for(int i = 0; i < rows - 1; i++) {for(int k = i + 1; k < rows; k++) {if(arr[i][j] > arr[k][j]) { // 比较大小并交换int temp = arr[i][j];arr[i][j] = arr[k][j];arr[k][j] = temp;}}}}}int main() {int arr[][3] = {{2, 5, 9}, {7, 6, 1}, {4, 3, 8}};int rows = sizeof(arr) / sizeof(arr[0]); // 计算数组的行数sortCols(arr, rows); // 调用函数排序for(int i = 0; i < rows; i++) { // 输出排序后的数组for(int j = 0; j < 3; j++) {printf("%d ", arr[i][j]);}printf("\n"); // 换行}return 0;}19. 判断一个字符串是否为回文串#include <stdio.h>#include <string.h>#include <stdbool.h>bool isPalindrome(char str[]) {int len = strlen(str);for(int i = 0; i < len / 2; i++) { // 判断左右字符是否一样if(str[i] != str[len - i - 1]) {return false;}}return true;}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);bool result = isPalindrome(str); // 调用函数判断是否为回文串if(result) {printf("%s 是回文串\n", str);} else {printf("%s 不是回文串\n", str);}return 0;}20. 将一个整数转换成二进制数并输出#include <stdio.h>void decToBin(int num) {if(num > 1) { // 递归调用decToBin(num / 2);}printf("%d", num % 2); // 每次输出余数}int main() {int num;printf("请输入一个十进制数:");scanf("%d", &num);printf("%d 的二进制数为", num);decToBin(num); // 调用函数输出二进制数printf("\n"); // 换行return 0;}。

C语言学习教程-最简单的C程序设计

C语言学习教程-最简单的C程序设计
输入数据时,以空格、tab键或回车键分隔
1. 格式说明
输入 格式 字符
格式字符 说明 d 输入十进制整数 o 输入八进制整数 x 输入十六进制整数 f 输入实数(指数形式和小数形式均可) e 与 f 格式作用相同,可以互换 c 输入单个字符 s 输入字符串
附加 格式 字符
说 明 输入长整型或双精度型数,可用%ld、%lo、 %lx、%lf、%le 字母 h 输入短整型数,可用%hd、%ho、%hx m(代表一正整数 ) 指定输入数据的宽度 * 表示本输入项在读入后不给相应数据式均 可)
格式字符 字母 l
可以指定输入数据所占列数,系统自动按它截取所
需数据。 如: scanf(―%3d%3d‖,&a,&b); 当输入 123456 时,系统会自动将123给a,456给b
在scanf( )中不能规定输入数据的精度
则 scanf(―%7.2f‖,&a); 是不符合C语言语法的
“*”附加符用来表示跳过相应的数据
#include ―stdio.h‖ main( ) char a=‘1’,c; wrong { char c; c=getchar( ); c=getchar(a); c=getchar( ); putchar(c); putchar(‗\007‘); }
getchar( )还经常可用在表达式中如: 我们希望输入并打印一串字符以‘?’结束: while ((c=getchar( ))!=‗?‘) printf(―%c―,c);
;
else a=-a; 这是求的 什么?
a的绝对值ຫໍສະໝຸດ (5) 复合语句复合语句就是将若干条C语句用花括号“{‖和“}‖ 括起来 其一般形式为: { 语句1;

【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!

【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!

【C语⾔C++编程学习笔记】基础语法,第⼀个简单的实例编程⼊门教程!C语⾔/C++编程学习:⼀个简单的实例如果你能知道该程序将会在显⽰器上显⽰⼀些内容,那说明你还是知道⼀些的!确实如此,但所要显⽰的确切内容不是显⽽易见的,所以请运⾏程序来观看结果。

⾸先,⽤你熟悉的编辑器建⽴⼀个上⾯这个样的程序,然后给这个程序取⼀个名字,并以 .c 作为结尾以满⾜所在系统对⽂件名格式的要求。

例如,你可以把它命名为 helloworld.c。

现在编译并运⾏该程序。

如果⼀切运⾏正常,其显⽰结果为:实例简单说明◆ #include ←包含另⼀个⽂件这是程序的第⼀⾏。

它的作⽤相当于你在⽂件中的这⾏所在的位置键⼊了⽂件 stdio.h 的完整内容。

实际上,它是⼀种剪切和粘贴操作,这样可以⽅便地在多个程序间共享公⽤的信息。

#include 语句是 C预处理指令的⼀个例⼦。

通常,C 编译器在编译前要对源代码做⼀些准备⼯作;这称为预处理。

stdio.h ⽂件作为所有 C编译包的⼀部分提供,它包含了有关输出输⼊函数的信息以供编译器使⽤。

这个名字代表标准输⼊输出头⽂件。

我们称之为头⽂件,C语⾔中通常都带有许多头⽂件。

◆ int main () ←函数名接下来的这⾏代码声明了⼀个 main函数。

⼀个 C语⾔程序总是从称为 main()的函数开始执⾏的。

你可以对你所⽤的其他函数任意命名,但是 main()必须是开始的函数,所以说,main()函数在程序中是唯⼀的。

那么圆括号的功能呢?它们表明 main()是⼀个函数。

以后你将了解到更多的函数。

但现在,请你记住这个函数是 C程序的基本模块。

int 指明了 main()函数的返回类型。

这意味着 main()函数返回值的类型是整数。

返回到哪⾥呢?返回给操作系统。

如果浏览⽼版本的 C代码,你将发现程序常常以:main()这种形式开始。

C90标准勉强允许这种形式,但是 C99标准不允许。

因此即使你当前的编译器允许,也不要这么做,请注意规范。

C语言第3章简单程序

C语言第3章简单程序

这种如同乱麻一样的算法称为BS型算 法,意为一碗面条(A Bowl of Spaghetti),乱无头绪。
• 三种基本结构
Bohra和Jacopini提出了以下三种基本 结构: 顺序结构、选择结构、循环结构
用这三种基本结构作为表示一个良好算 法的基本单元。
三种基本结构的图示:
顺序结构
选择结构
循环结构的图示:
主要内容
3.1 算法概述 3.2 程序的三种基本结构 3.3 C语句综述 3.4 赋值表达式和赋值语句 3.5 数据输入输出的概念 3.6 字符数据的输入输出 3.7 简单的格式输入与输出 3.8 顺序结构程序设计举例
3.1 算法概述
一个程序应包括两个方面的内容: • 对数据的描述:数据结构(data structure) • 对操作的描述:算法(algorithm) 著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序
includestdiohincludestdiohvoidmainvoidmain定义字符变量定义字符变量abc从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量a从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量b从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量c将变量将变量aa的值输出的值输出将变量将变量aa的值输出的值输出将变量将变量aa的值输出的值输出pu• 传统流程图的弊端 传统流程图用流程线指出各框的执行 顺序,对流程线的使用没有严格限制。因 此,使用者可以毫不受限制地使流程随意 地转向,使流程图变得毫无规律,阅读者 要花很大精力去追踪流程,使人难以理解 算法的逻辑。如图:
缺点:难以阅读、修改,使算法的 传统流程图的流程可以是: 可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用, 即不允许无规律地使流程随意转向, 只能顺序地进行下去。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二参考答案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.求方程02=++c bx ax 的根(设042≥-ac b )(其中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 (10≤x)1<|3x-11| (10x)#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 项之和。

!/...!4/!3/!2/1432n x x x x x s u m 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)11 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 11 2 3 4 3 2 11 2 3 2 11 2 11#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项。

其数列通项公式为F n=F n-1+F n-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 20void 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 10void 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 10void 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.将从键盘输入的字符串进行逆序输出,逆序后的字符串仍然保留在原来字符数组中。

相关文档
最新文档