C语言程序设计编辑与调试环境初级(已更完)
C语言程序设计
- 写在前面的话——点 点赞,关注和收藏吧!!!
- 狂肝一个周终于结束了!
- 第1部分 熟悉C语言程序编辑与调试环境
- 第1关打印输出 Hello World
- 思路
- 第2关:打印输出图形
- 思路
- 第3关:求3个数的最大值
- 思路
- 第4关:熟悉C语言调试过程
- 思路
- 第2部分 顺序结构程序设计
- 第1关:加法运算
- 思路
- 第2关:不使用第3个变量,实现两个数的对调
- 思路
- 第3关:用宏定义常量
- 思路
- 第4关:数字分离
- 思路
- 第5关:计算总成绩和平均成绩
- 第6关:求三角形的面积
- 第7关:立体几何计算题
- 第8关:计算两个正整数的最大公约数
- 第3部分 选择结构程序设计
- 3-1选择结构程序设计
- 第1关:排序
- 第2关:选择结构-闰年判断
- 第3关:选择结构-分段函数问题
- 第4关:学生成绩等级换算
- 3-2选择结构程序设计进阶
- 第1关:快递费用计算
- 第2关:计算一元二次方程的根
- 第3关:产品信息格式化
- 第4部分 循环结构程序设计
- 4-1循环结构程序设计1
- 第1关小球自由落体运动
- 求解出n以内(包含n)所有能被5整除的正整数数的乘积s。
- 第3关:最大公约数和最小公倍数
- 第4关:字符串中各类字符数的统计
- 第5关:求sn=a+aa+aaa+aaaa+......的值
- 4-2循环结构程序设计2
- 第1关:C循环-求平均成绩
- 第2关:C循环-求各位数字之积
- 第3关:C循环-求阶乘之和
- 第4关:C循环-水仙花数
- 第5关:C循环-寻找完数
- 第6关:分数求和
- 第5部分 函数
- 5-1函数
- 第1关求和
- 第2关:回文数计算
- 第3关: 编写函数求表达式的值
- 第4关:阶乘数列
- 第5关:亲密数
- 第6关:公约公倍数
- 5-2递归函数、嵌套函数
- 第1关:递归求阶乘数列
- 第2关:递归实现输出一个整数的逆序
- 第3关:将整数递归转换成字符串
- 第4关:递归实现Ackman函数
- 第6部分 数组
- 6-1一维数组和二维数组
- 第1关:排序问题
- 第2关:查找整数
- 第三关:计算数组中元素的最大值
- 6-2字符数组
- 第1关:字符逆序
- 第2关:字符统计
- 第3关:字符插入
- 第4关:字符串处理
- 第5关:字符串统计
- 第6关:字符串排序
- 第7部分 指针
- 7-1指针
- 第1关:用指针法输入12个整数,然后按每行4个数输出
- 第2关:对输入的两个整数a,b,用指针变量作为函数参数,交换a和b的值。
- 第3关:报数
- 第4关:strcmp函数(后续跟进;代码不完整)
- 7-2指针进阶
- 第一关:读入n(1 <= n <= 1000)个学生的成绩,成绩都为整数,用指针函数求出若干个学生成绩的最高分。用数组名作为函数参数,指针作为函数返回值。
- 第2关:采用指针变量表示地址的方法输入输出数组中的个元素
- 第3关:用指针实现数组循环移动
- 第8部分 结构体
- 8-1结构体
- 第1关:结构体变量的初始化和引用
- 第2关:结构体排序
- 第3关:结构体存储数据
- 第4关:结构体存储学生信息
- 第9部分 文件
- 第1关:HelloWorld
- 第2关:文件读取和写入
- 第3关:统计文本字母数量
- 第4关:读取文件中指定学生信息
- 结尾
写在前面的话——点 点赞,关注和收藏吧!!!
狂肝一个周终于结束了!
点 点赞和关注吧!!!
博主在尽力的补代码和思路;
里面包含了自己学习C语言,通过网站的挑战来巩固自己对C的理解;
里面的代码仅供参考,若有错误之处,欢迎提出;
大家也可以跟我一样去通过闯关来理解C的不一样;
C语言挑战网站
第1部分 熟悉C语言程序编辑与调试环境
第1关打印输出 Hello World
思路
这个比较简单,直接打印输出即可。
#include<stdio.h>int main(void){ /********* Begin *********/printf("Hello World");/********* End *********/return 0;}
第2关:打印输出图形
思路
每一步打印就OK
#include<stdio.h>int main(void){ /********* Begin *********/printf(" *\n");printf(" ***\n");printf(" OK\n");printf(" Hello!\n");printf("*********\n");/********* End *********/return 0;}
第3关:求3个数的最大值
思路
直接定义a为最大值,然后通过a,b,c比较找到最大值。
#include<stdio.h>int main(void){ /********* Begin *********/int a,b,c; //输入三个整数 //每次输入以Enter键结束scanf("%d,%d,%d",&a,&b,&c); //输入变量int max=a;if(max<b) //比较大小max=b; //把数值大的那一个数if(max<c) //比较大小max=c; //把数值大的那一个数printf("max=%d\n",max); //输出结果/********* End *********/return 0;}
第4关:熟悉C语言调试过程
思路
判断值是否为5是的话直接输出需要的值,不需要就输出另外一个。
#include"stdio.h"
int main(void){/********* Begin *********/int x;int y=2,z=3;scanf("%d",&x); if(x==y+z)printf("*****");else printf("#####" );return 0;/********* End *********/}
第2部分 顺序结构程序设计
第1关:加法运算
思路
直接定义a+b=c,然后直接输出就c OK。
#include<stdio.h>int main(void){ int a,b,c; //Please input a,b:/*********Begin*********/scanf("%d,%d",&a,&b);c=a+b;printf("%d+%d=%d\n",a,b,c);/*********End**********/ return 0;}
第2关:不使用第3个变量,实现两个数的对调
思路
输出时直接输出就OK
#include<stdio.h>int main(void){ int a,b;//Enter a and b:scanf("%d%d",&a,&b); printf("a=%d b=%d\n",a,b);/*********Begin*********//*********End**********/printf("a=%d b=%d\n",b,a); return 0;}
第3关:用宏定义常量
思路
利用宏定义来定义P的值,然后直接用宏定义就OK
#include<stdio.h>
#define p 30int main(void){ /*********Begin*********/int x;scanf("%d",&x);printf("%d",x*p);/*********End**********/ return 0;}
第4关:数字分离
思路
第一次模输出个位,然后除以10 然后模输出十位,然后/100模输出百位。
#include<stdio.h>int main(void){ /*********Begin*********/int a,b,x,c;scanf("%d",&x);c=x%10;b=(x/10)%10;a=(x/100)%10;printf("%d %d %d",a,b,c);/*********End**********/ return 0;}
第5关:计算总成绩和平均成绩
直接将每个成绩加起来,然后除以同学数,计算平均值。
#include<stdio.h>int main(void){ /*********Begin*********/int a,b,c,d,e;scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);int sum=0;double ave=0;sum=(a+b+c+d+e);ave=(a+b+c+d+e)/5.00;printf("%d ",sum);printf("%.2f",ave);/*********End**********/ return 0;}
第6关:求三角形的面积
输入三角形的各个边长,然后用三角形的公式计算出面积。
#include<stdio.h>
#include <math.h>int main(void){ /*********Begin*********/double a,b,c,s,area;scanf("%lf %lf %lf",&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("%.3f",area);/*********End**********/ return 0;}
第7关:立体几何计算题
计算立体几何的面积,周长,表面积,利用所学的公式直接计算输出即可。
#include<stdio.h>
#define PI 3.14int main(void){ /*********Begin*********/double r,C1,Sb,Vb,h;scanf("%lf,%lf",&r,&h);C1=PI*r*2;Sb=4*PI*r*r;Vb=h*PI*r*r;printf("C1=%.2f\n",C1);printf("Sb=%.2f\n",Sb);printf("Vb=%.2f\n",Vb);/*********End**********/ return 0;}
第8关:计算两个正整数的最大公约数
#include<stdio.h>
int MaxCommonFactor( int a, int b)
{ int c; if(a<=0||b<=0) return -1; while(b!=0){ c=a%b; a=b;b=c;} return a;
}
int main(void){ /*********Begin*********/int a=0,b=0;int tmp=0;scanf("%d,%d",&a,&b);if(a<b){tmp=b;b=a;a=tmp;}while(b!=0){tmp=a%b;a=b;b=tmp;}printf("%d",a);/*********End**********/ return 0;
}
第3部分 选择结构程序设计
3-1选择结构程序设计
第1关:排序
#include<stdio.h>int main(void){ /*********Begin*********/int a,b,c;int tmp;printf("请输入三个整数:");scanf("%d%d%d",&a,&b,&c);if(a>b){tmp=a;a=b;b=tmp;}if(a>c){tmp=a;a=c;c=tmp;}if(b>c){tmp=b;b=c;c=tmp;}printf("从小到大排列为:%d,%d,%d",a,b,c);/*********End**********/ return 0;}
第2关:选择结构-闰年判断
#include<stdio.h>int main(void){ /*********Begin*********/int year;scanf("%d",&year);if(year % 4 == 0 && year % 100 != 0){printf("%d 是闰年!",year);}else if(year % 400 == 0){printf("%d 是闰年!",year);}else printf("%d 不是闰年! ",year);/*********End**********/ return 0;}
第3关:选择结构-分段函数问题
#include<stdio.h>int main(void){ /*********Begin*********/double x;double y;scanf("%lf",&x);if(x < 0 && x != -3){y=x*x+x-6;}else if(x >= 0 && x < 10 && x != 2 && x != 3){y=x*x - 5 * x +6;}else{y=x*x - x -1;}printf("%.3f",y);/*********End**********/ return 0;}
第4关:学生成绩等级换算
#include<stdio.h>int main(void){ /*********Begin*********/int Score;scanf("%d",&Score);if(Score>=90 && Score <= 100){printf("A");}else if(Score < 90 && Score >= 80){printf("B");}else if(Score < 80 && Score >= 70){printf("C");}else if(Score < 70 && Score >= 60){printf("D");}else if(Score < 60 && Score >= 0){printf("E");}else printf("Score is error!");/*********End**********/ return 0;}
3-2选择结构程序设计进阶
第1关:快递费用计算
#include<stdio.h>
#include <math.h>
int main(void)
{/*********Begin*********/int area = 0;float weight,start_weight,extra_weight,price = 0;int area_start_money[5] = {10,10,15,15,15}; // 每个区域的起重费用float area_extra_money[5] = {3,4,5,6.5,10}; // 每个区域的续重费用// printf("please input area number and weight(eg:0,10.5):\n");scanf("%d,%f",&area,&weight);//输入合法性检查if(area<0 || area>4){printf("Error in Area\n");price = 0;}else if(weight < 0){printf("Error in Weight!\n");price = 0;}else{start_weight = 1;extra_weight = ceil(weight - 1); //ceil表示向上去整,不足1公斤,按1公斤计算price = area_start_money[area] + extra_weight * area_extra_money[area];}printf("Price: %.2f\n",price);/*********End**********/return 0;
}
第2关:计算一元二次方程的根
#include<stdio.h>
#include<math.h>int main(void){ /*********Begin*********/printf("Please enter the coefficients a,b,c:\n");double a,b,c,tmp,y,x1,x2;scanf("%lf,%lf,%lf",&a,&b,&c);tmp=-(b/(2*a));y=(b*b - 4*a*c);if(y<0) printf("error!\n");else{x1=tmp+sqrt(y)/(2*a);x2=tmp-sqrt(y)/(2*a);printf("x1=%.4f, x2=%.4f\n",x1,x2);}/*********End**********/ return 0;}
第3关:产品信息格式化
#include<stdio.h>int main(void){ /*********Begin*********/int Item,Purchase,mm,dd,yy;double Unit;printf("Enter item number:\n");scanf("%d",&Item);printf("Enter unit price:\n");scanf("%lf",&Unit);printf("Enter purchase date (mm/dd/yy):\n");scanf("%d/%d/%d",&mm,&dd,&yy);printf("Item Unit Purchase\n");printf("%-9d$ %-9.2f",Item,Unit,Purchase);printf("%d%02d%d",mm,dd,yy);/*********End**********/ return 0;}
第4部分 循环结构程序设计
4-1循环结构程序设计1
第1关小球自由落体运动
#include<stdio.h>int main(void){ /*********Begin*********/int N;double M,sum;scanf("%lf%d",&M,&N);sum = M;for(int i=2;i<=N;i++){M /= 2.0;sum +=M;if(i>1){sum += M;}if(i == N){M /= 2.0;} }printf("%.2f %.2f",M,sum);/*********End**********/ return 0;}
求解出n以内(包含n)所有能被5整除的正整数数的乘积s。
#include<stdio.h>int main(void){ /*********Begin*********/int s=1,n;scanf("%d",&n);for(int i=1;i<=n;i++){if(i % 5 == 0){s *= i;}}printf("%d\n", s);/*********End**********/ return 0;}
第3关:最大公约数和最小公倍数
#include<stdio.h>int main(void){ /*********Begin*********/int x,y,t,z;scanf("%d%d",&x,&y);if(x>y){t=x;x=y;y=t;}for(int i=x;x<y;i--){if(y%i==0 && x%i==0){printf("最大公约数是:%d\n",i);break;}}for(int z=y;;z++){if(z % y ==0 && z % x == 0) {printf("最小公倍数是:%d",z);break;}}/*********End**********/ return 0;}
第4关:字符串中各类字符数的统计
#include<stdio.h>int main(void){ /*********Begin*********/int digit=0,letter=0,space=0,other=0;char c;while((c=getchar()) != '\n'){if((c >='a' && c <= 'z') || (c <= 'Z' && c >= 'A')){letter++;}else if(c >= '0' && c <= '9'){digit++;}else if(' ' == c){space++;}else other++;}printf("%d %d %d %d",letter,digit,space,other);/*********End**********/ return 0;}
第5关:求sn=a+aa+aaa+aaaa+…的值
#include<stdio.h>int main(void){ /*********Begin*********/int a,n,sum=0,Sum=0,add=0;scanf("%d%d",&a,&n);for(int i=0,t=1;i<n;i++){sum = a*t;Sum += sum;add += Sum;t =t*10;}printf("%d",add);/*********End**********/ return 0;}
4-2循环结构程序设计2
第1关:C循环-求平均成绩
#include<stdio.h>int main(void){ /*********Begin*********/double array,sum=0;int n;scanf("%d",&n);if(n <= 0) printf("the number of students:the scores:average=0.00");else{for(int i=0;i<n;i++){scanf(" %lf",&array);sum += array;} printf("the number of students:the scores:average=%.2f",sum/n);} /*********End**********/ return 0;}
第2关:C循环-求各位数字之积
#include<stdio.h>int main(void){ /*********Begin*********/int n,a,b=1,i;scanf("%d",&n);if(n % 10 == 0) printf("0\n");else {while(n){i=(int) n / 10;a= n % 10; n=i;b *= a;}printf("%d",b);} /*********End**********/ return 0;}
第3关:C循环-求阶乘之和
#include<stdio.h>int main(void){ /*********Begin*********/int n,sum=0,mul=1;scanf("%d",&n);if(n == 0) printf("1");else if(n < 0) printf("0");else{for(int i=1;i <= n;i++){mul *= i;sum += mul;}printf("%d",sum);}/*********End**********/ return 0;}
第4关:C循环-水仙花数
#include<stdio.h>int main(void){ /*********Begin*********/int a,b,c,n;for(int n=101;n<1000;n++){a = n%10;b = (n/10) % 10;c= (n/100) % 10;if((a*a*a + b*b*b + c*c*c) == n) printf("%d ",n);}/*********End**********/ return 0;}
第5关:C循环-寻找完数
#include<stdio.h>int main(void){ /*********Begin*********/int m,n,sum;for(int m=2;m<1000;m++){sum = 1;for(int n=2;n <= m/2;n++){if(m % n==0) sum += n; }if(sum == m) printf("%d\n",m);}/*********End**********/ return 0;}
第6关:分数求和
#include<stdio.h>int main(void){ /*********Begin*********/int flag = -1;double sum = 0;for(int i=1;i<= 100;i++){if(i%2 != 0) sum += (1.0/i); else sum += flag * (1.0/i); }printf("%.3f",sum);/*********End**********/ return 0;}
第5部分 函数
5-1函数
第1关求和
#include<stdio.h>
//编写函数
/*********Begin*********//*********End**********/
int main(void)
{ /*********Begin*********/int n,sum;scanf("%d",&n);for(int i=1;i<=n;i++){sum += i;}printf("%d",sum);/*********End**********/ return 0;
}
第2关:回文数计算
#include<stdio.h>
int solve(int n){ /*********Begin*********/ int i,j=0;i=n;while(i){j = j*10 + i%10;i /= 10;}if(j==n) return 1;else return 0;
}/*********End**********/
int main(void)
{ for(int i=200;i<=3000;i++){if(solve(i)) printf("%d\n",i);} return 0;
}
第3关: 编写函数求表达式的值
#include<stdio.h>
//编写题目要求的函数
/*********Begin*********/int main(void)
{ /*********Begin*********/int n;double sum=0,a=1,b=1;scanf("%d",&n);for(int i=0;i<=n;i++){if(i==0 || i==1) a = 1;else a *= i;b *= (2*i+1);sum += (double)a/b; }printf("%.10f",sum);/*********End**********/ return 0;
}
第4关:阶乘数列
#include<stdio.h>
//编写函数
/*********Begin*********//*********End**********/
int main(void)
{ /*********Begin*********/int n;long long sum,a=1;scanf("%d",&n);for(int i=1;i<=n;i++){a *= i;sum += a;}printf("%lld",sum);/*********End**********/ return 0;
}
第5关:亲密数
#include<stdio.h>
void solve(int a){/*********Begin*********/int b,n,i;for(b=0,i=1;i<=a/2;i++) if(!(a%i))b=b+i;for(n=0,i=1;i<=b/2;i++ ) if(!(b%i))n=n+i;if(n==a&&a<b) printf("(%d,%d)",a,b); /*********End**********/
}
int main(void)
{ for(int a=1;a<3000;a++) solve(a);return 0;
}
第6关:公约公倍数
#include<stdio.h>
//编写最大公约数GCD函数
/*********Begin*********/
long long sum;
long long GCD(long long x, long long y)
{long long i, k, m, n;sum = 1;k = x > y ? y : x;i = 2; while (i <= k){m = x % i;n = y % i;if (m == 0 && n == 0){sum *= i;x /= i;y /= i;i = 2;}elsei++;} return sum;
}
/*********End**********/ //编写最小公倍数LCM函数
/*********Begin*********/
long long LCM(long long p, long long q)
{long long lc;lc = p * q / sum;return lc;
}
/*********End**********/
int main(void)
{ /*********Begin*********/long long a, b,hcf, lcm;scanf("%lld %lld", &a, &b); if(a<0 || b<0 ) printf("Input Error");else{hcf = GCD(a, b); //调用最大公约数函数lcm = LCM(a, b); //调用最小公倍数函数printf("%lld %lld\n", hcf, lcm); //输出最大公约数和最小公倍数}/*********End**********/ return 0;
}
5-2递归函数、嵌套函数
第1关:递归求阶乘数列
#include<stdio.h>
long long solve(long long n){/*********Begin*********/long long alt = 1;for(int i=1;i<=n;i++){alt *= i;} return alt;/*********End**********/
}
int main(void)
{long long n,sum;scanf("%lld",&n);long long ans=0;for(long long i=1;i<=n;i++){ ans+=solve(i);} printf("%lld", ans);return 0;
}
第2关:递归实现输出一个整数的逆序
#include<stdio.h>
void solve(int n){printf("%d", n%10);/*********Begin*********/n /= 10; /*********End**********/if(n>0) solve(n);
}
int main(void)
{int n;scanf("%d",&n);solve(n);return 0;
}
第3关:将整数递归转换成字符串
#include<stdio.h>
void solve(int n){int temp=n%10;/*********Begin*********/n /= 10;if(n>0) solve(n);/*********End**********/if(n)printf(" %d", temp);elseprintf("%d", temp);
}
int main(void)
{int n;scanf("%d",&n);solve(n);return 0;
}
第4关:递归实现Ackman函数
#include<stdio.h>
int Acm(int m,int n){int a;if(m==0&&n>0)/*********Begin*********/a = n + 1;/*********End**********/else if(n==0&&m>0)/*********Begin*********/a=Acm(m-1,1);/*********End**********/else/*********Begin*********/a=Acm(m-1,Acm(m,n-1));/*********End**********/return a;
}
int main(void)
{int m,n;scanf("%d%d",&m,&n);printf("%d", Acm(m,n));return 0;
}
第6部分 数组
6-1一维数组和二维数组
第1关:排序问题
#include<stdio.h>
int main(void)
{/*********Begin*********/int array[10];for(int i=0;i<10;i++) scanf("%d",&array[i]);for(int i=0;i<10;i++){for(int j=0;j<10;j++){if(array[i] >array[j]){int tmp = array[j];array[j]=array[i];array[i]=tmp;}}}for(int i=0;i<10;i++){printf("%d ",array[i]);}/*********End**********/return 0;
}
第2关:查找整数
#include<stdio.h>
int main(void)
{/*********Begin*********/int m,n;scanf("%d\n",&n);int array[n];for(int i=0;i<n;i++){scanf("%d ",&array[i]);}scanf("%d\n",&m);for(int i=0;i<n;i++){if(m == array[i]){printf("%d",i+1);break;}if(i+1==n) printf("-1"); }/*********End**********/return 0;
}
第三关:计算数组中元素的最大值
#include<stdio.h>
int main(void)
{/*********Begin*********/int m=0,n=0;printf("Input m, n:");scanf("%d,%d",&m,&n);int array[m][n];printf("Input %d*%d array:\n",m,n);for(int i=0;i<m;i++){for(int j=0;j<n;j++){scanf("%d",&array[i][j]);}}int max = array[0][0],row=1,col=1;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(max <array[i][j]){max = array[i][j];row = i+1;col = j+1;}}}printf("max=%d, row=%d, col=%d",max,row,col);/*********End**********/return 0;
}
6-2字符数组
第1关:字符逆序
#include<stdio.h>
int main(void)
{/*********Begin*********/int n;char str[100],C;scanf("%s",&str);n = strlen(str);for(int i=0,j=n-1;i<n/2;i++,j--){C = str[i];str[i] = str[j];str[j] = C;}printf("%s",str);/*********End**********/return 0;
}
第2关:字符统计
#include<stdio.h>
int main(void)
{/*********Begin*********/char str[50][50]; int n;scanf("%d",&n);for(int i=0;i<n;i++) scanf("%s",&str[i]);for(int i=0;i<n;i++){int count=0; for(int j=0;str[i][j]!='\0';j++){if(str[i][j]>='0'&&str[i][j]<='9'){count++; }} printf("%d\n",count);}/*********End**********/return 0;
}
第3关:字符插入
#include <stdio.h>
#include <string.h>
int main(void)
{/*********Begin*********/int max,min,i,j;char a[100],b[100];gets(a); gets(b);int m=strlen(a);int n=strlen(b);for(i=0;i<m;i++)if(a[min] > a[i])min = i; for(i=0;i<n;i++) if(b[max] < b[i])max = i; for(j=m+1;j>min;j--) a[j] = a[j-1];a[j+1] = b[max]; puts(a);/*********End**********/return 0;
}
第4关:字符串处理
#include<stdio.h>
int main(void)
{/*********Begin*********/char s1[150],s2[150],s3[150];int f,m,n,i,j=0,k=0;gets(s1);gets(s2);scanf("%d",&f);m=strlen(s1);n=strlen(s2);for(i=f;i<m;i++){s3[k++]=s1[i];}for(i=f;i<n+f+1;i++){s1[i]=s2[j++];}strcat(s1,s3);s1[m+n]='\0';printf("%s",s1);/*********End**********/return 0;
}
第5关:字符串统计
#include<stdio.h>
#include <string.h>
#define N 1024
char s[N + 1], t[N + 1];
int main(void)
{/*********Begin*********/fgets(s, N, stdin);for(;;) {if(strncmp(s, "stop", 4) == 0 && s[4] == '\n')break;int sum = 0, maxlen = 0;char *p;p = strtok(s, " \t\n");while(p) {int len = strlen(p);if(len > maxlen) {maxlen = len;strcpy(t, p);}sum += len;p = strtok(NULL, " \t\n");}printf("%d %s\n", sum, t);fgets(s, N, stdin);}/*********End**********/return 0;
}
第6关:字符串排序
#include<stdio.h>
#include<string.h>
int main()
{char a[85],b[85],c[85],t[85]; while(gets(a)!=NULL){gets(b);gets(c);if(strcmp(a,b)>0){strcpy(t,a);strcpy(a,b);strcpy(b,t);}if(strcmp(a,c)>0){strcpy(t,a);strcpy(a,c);strcpy(c,t);}if(strcmp(b,c)>0){strcpy(t,b);strcpy(b,c);strcpy(c,t);}puts(a);puts(b);puts(c);}
return 0;
}
第7部分 指针
7-1指针
第1关:用指针法输入12个整数,然后按每行4个数输出
#include<stdio.h>
int main(void)
{/*********Begin*********/int a[12],n,i;int *p=a;for(n=0;n<12;n++){scanf("%d",p++);} p=a;i=1;for(n=0;n<12;n++){if((n+1)/4==i){printf("%d",*p);}else {printf("%d ", *p);}p++;if((n+1)/4==i){if (i==3){break;}printf("\n");i++;}}/*********End**********/return 0;
}
第2关:对输入的两个整数a,b,用指针变量作为函数参数,交换a和b的值。
#include<stdio.h>
/*********Begin*********/int main(void)
{int a,b;scanf("%d%d",&a,&b);/*********Begin*********/int *p1,*p2;p1 = &b;p2 = &a;printf("%d ",*p1);printf("%d",*p2);/*********End**********/return 0;
}
第3关:报数
#include<stdio.h>
int main(void)
{/*********Begin*********/int n;int a[1000];scanf("%d",&n);int b = n;int c = 0;for (int i = 1; i <= n; i++){a[i] = 1;}for (int i = 1;;i++){if (i == (n + 1))i = 1;if (a[i] == 1){c++;}elsecontinue;if (c % 3 == 0){a[i] = 0;b--;}if (b == 1)break;}for (int i = 1; i <= n; i++){if (a[i] == 1)printf("%d\n", i);}/*********End**********/return 0;
}
第4关:strcmp函数(后续跟进;代码不完整)
#include<stdio.h>
int main(void)
{char a[110],b[110];scanf("%s%s",a,b);if(strcmp(a,b)>0)printf("%s", a);elseprintf("%s", b);return 0;
}
7-2指针进阶
第一关:读入n(1 <= n <= 1000)个学生的成绩,成绩都为整数,用指针函数求出若干个学生成绩的最高分。用数组名作为函数参数,指针作为函数返回值。
#include<stdio.h>
/*********Begin*********/
int *Max(int array[], int n){int max=array[0];int *p;for(int i=0;i<n;i++){if(max<array[i])max = array[i];}p = &max;return p;
}/*********End**********/
int main(void)
{int n,s[110];scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",&s[i]);int ans;/*********Begin*********/int *p;p = Max(s,n);ans = *p;/*********End**********/printf("%d",ans );return 0;
}
第2关:采用指针变量表示地址的方法输入输出数组中的个元素
#include<stdio.h>
int main(void)
{/*********Begin*********/int n,*p;scanf("%d",&n);int array[n];for(int i=0;i<n;i++){scanf("%d",&array[i]);}p = &array[0];for(int i=0;i<n;i++){if(i+1 == n) printf("%d",*(p+i));else printf("%d ",*(p+i));}/*********End**********/return 0;
}
第3关:用指针实现数组循环移动
#include<stdio.h>
int *solve(int *s,int n,int m){/*********Begin*********//*********End**********/
}
int main(void)
{int n,m,s[110];scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&s[i]);int *ans;/*********Begin*********//*********End**********/for(int i=0;i<n;i++){if(i==0) printf("%d",*ans++ );else printf(" %d",*ans++ );}return 0;
}
第8部分 结构体
8-1结构体
第1关:结构体变量的初始化和引用
#include<stdio.h>
/*********Begin*********/
struct{long num;char name[10];int score;
}student[2];
int main()
{for(int i=0;i<2;i++){scanf("%ld %s %d",&student[i].num,&student[i].name,&student[i].score);}if(student[0].score>student[1].score)printf("%ld %s %d",student[0].num,student[0].name,student[0].score);else printf("%ld %s %d",student[1].num,student[1].name,student[1].score);return 0;
}
/*********End*********/
第2关:结构体排序
#include<stdio.h>
#include<stdlib.h>//头文件
#define N 200
struct student
{int num; char name[20]; int score;
};
int main()
{struct student stu[N];struct student t;int i,j,k,n;scanf("%d",&n); for(i=0;i<n;i++){scanf("%d%s%d\n",&stu[i].num,stu[i].name,&stu[i].score);}for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if(stu[j].score>stu[k].score){k=j;} } t=stu[k];stu[k]=stu[i];stu[i]=t;}for(i=0;i<n;i++){printf("%d %s %d\n",stu[i].num,stu[i].name,stu[i].score);} return 0;
}
第3关:结构体存储数据
#include <stdio.h>
#include <string.h>
struct Person //声明结构体
{char name[20];int count;
}leader[3]={"Li",0,"Zhang",0,"Sun",0}; //定义结构体数组并初值化
int main()
{int i,j,n;scanf("%d",&n);char leader_name[20];for(i=0;i<n;i++){scanf("%s",leader_name);for(j=0;j<3;j++){if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}}for(i=0;i<3;i++){printf("%s:%d\n",leader[i].name,leader[i].count);}return 0;
}
第4关:结构体存储学生信息
#include<stdio.h>
#include<string.h>
int Count;
struct student{char sno[20],name[20];int math,english,chinese,sum;
};void print(struct student stu){printf("%s %s %d %d %d %d\n",stu.sno,stu.name,stu.math,stu.english,stu.chinese,stu.sum);
}void query_stu(struct student s[],char *name){/*********Begin*********/int i;for(i = 0;i < Count;i++)if(strcmp(s[i].name, name) == 0){s[i].sum = s[i].math + s[i].english + s[i].chinese;print(s[i]);}/*********End**********/
}void delete_stu(struct student s[],char *sno){/*********Begin*********/for(int i = 0;i < Count - 1;i++)if(strlen(s[i].sno) >= strlen(sno))if(strcmp(s[i].sno, sno) >= 0)s[i] = s[i + 1];/*********End**********/
}
/*
或 void delete_stu(struct student s[],char *sno){for(int i = 0;i < Count - 1;i++)if(strcmp(s[i].sno, sno) == 0)while(i < Count){s[i] = s[i + 1];i++;} }
*/void update_stu(struct student s[],char *sno,int math,int english,int chinese){/*********Begin*********/for(int i = 0;i < Count;i++)if(strcmp(s[i].sno, sno) == 0){s[i].math = math;s[i].english = english;s[i].chinese = chinese;s[i].sum = s[i].math + s[i].english + s[i].chinese;}/*********End**********/
}int main(void)
{int n,q;struct student students[50];scanf("%d%d",&n,&q);Count=n;for(int i=0;i<n;i++){/*********Begin*********/scanf("%s%s%d%d%d",students[i].sno,students[i].name,&students[i].math,&students[i].english,&students[i].chinese);students[i].sum = students[i].math + students[i].english + students[i].chinese;/*********End**********/}while(q--){int op;scanf("%d",&op);char sno[20],name[20];if(op==1){scanf("%s",name);query_stu(students,name);}else if(op==2){int a,b,c;scanf("%s%d%d%d",sno,&a,&b,&c);update_stu(students,sno,a,b,c);for(int i=0;i<Count;i++)print(students[i]);}else{scanf("%s",sno);delete_stu(students,sno);for(int i=0;i<Count-1;i++)print(students[i]);}}return 0;
}
第9部分 文件
第1关:HelloWorld
#include<stdio.h>
void solve(){/********** Begin *********/FILE *fp = fopen("in.txt","w");fprintf(fp,"HelloWorld");fclose(fp);
/********** End **********/
}
第2关:文件读取和写入
#include<stdio.h>
void solve(){/********** Begin *********/int a,b,c;FILE * read = fopen("a.txt","r");FILE * write = fopen("b.txt","w");while(fscanf(read,"%d%d%d",&a,&b,&c) != EOF){fprintf(write,"%d %d %d",a,b,c);}fclose(read);fclose(write);/********** End **********/
}
第3关:统计文本字母数量
#include<stdio.h>
void solve(){/********** Begin *********/int count=0;char ch;FILE *fp = fopen("a.txt","r"); while(1){ch=fgetc(fp);if(ch == EOF) break;if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))count++;}fclose(fp);printf("%d",count);/********** End **********/
}
第4关:读取文件中指定学生信息
#include<stdio.h>
void solve(char s[]){/********** Begin *********/FILE *fp = fopen("a.txt", "r");int n;char line[20], a[100];for (n = 0; n < 9; n++) {fgets(line, 12, fp);fgets(a, 100, fp);if (strcmp(s, line) == 0) {printf("%s%s", line, a);fclose(fp);break;}if (n == 8) {printf("Not Found!");}}/********** End **********/
}
结尾
博主狂肝一个周,今天终于完成了,在这里,感谢各位遇见,大家有什么想法可以在下面评论或者私信博主,希望博主自己写的对大家有所帮助!!!
最后感谢你的观看,我是北聖,大家也可以去看看博主写的剑指offer题,里面是后期面试可能会问到的算法题,里面也有许多解析思路和归纳。相信大多数看博主的这篇文章都是刚接触C语言或者博主一样重新学习C的,博主也是学C的时候没有认真学习,到现在,慢慢的弥补自己C的漏洞。说一下博主对此的理解,博主之前看小甲鱼的视频理解最深的就是认为语言知识一门工具,重要的是理解其中的思想,所以,大家把C学好了其他语言学起来也是相当快的。
博主下一节准备复习的也是大二学习的数据结构,欢迎大家一起来监督学习。
祝各位小伙伴越来越优秀,越来越好!!!
C语言程序设计编辑与调试环境初级(已更完)相关推荐
- 第1部分 C语言程序设计编辑与调试环境
C语言程序设计编辑与调试环境 第1关:打印输出 Hello World 任务描述 本关任务:通过运行一个C语言程序,让你初步了解程序的运行方法. 相关知识(略) 编程要求 请补充Begin-End之间 ...
- c语言程序设计编辑与调试环境实验报告,01程序设计基础实验报告_C语言程序设计基础.doc...
01程序设计基础实验报告_C语言程序设计基础 程序设计基础 实验报告 题 目: C语言程序设计基础 院 (部): 管理工程学院 专 业: 信息管理与信息系统 班 级: 信管101 姓 名: 张三 学 ...
- java语言程序设计教程第三版答案,看完跪了
01 如何理解高并发? 高并发意味着大流量,需要运用技术手段抵抗流量的冲击,这些手段好比操作流量,能让流量更平稳地被系统所处理,带给用户更好的体验. 我们常见的高并发场景有:淘宝的双11.春运时的抢票 ...
- mysql查姓名中既有a也有e的姓_mysql查询初级练习题(已更完)
这些初级题应该算是入了sql查询的门了吧?但是很多性能问题还是不清楚,太多知识有欠缺,一点一点来吧. 第一题 create table student( Id int(10) not null aut ...
- 在c语言中调试作用是什么,调试技术在C语言程序设计教学中作用探讨.doc
调试技术在C语言程序设计教学中作用探讨 调试技术在C语言程序设计教学中作用探讨 摘要:C语言程序设计是计算机相关专业的一门重要课程,但是在实际教学中该课程的教学效果并不能令人满意.本文认为学生没有掌握 ...
- c语言考试成绩评价规则编程,上海市高等学校计算机二级C语言程序设计考试大纲.doc...
上海市高等学校计算机二级C语言程序设计考试大纲.doc 上海市高等学校计算机二级C语言程序设计考试大纲上海市高等学校计算机等级考试(二级)C 程序设计考试大纲上海市高等学校计算机等级考试(二级)C 程 ...
- java判断闰年通过多态方法_04748《Java语言程序设计》实验指导书.doc
04748<Java语言程序设计>实验指导书.doc Java语言程序设计 实验指导书 前言 一.上机实验目的 上机实验的目的是提高学生的分析问题.解决问题的能力和动手能力,通过实践环节理 ...
- c语言考试编程题万能公式,C语言程序设计历年统考试题集10套含答案(可编辑)
<C语言程序设计历年统考试题集10套含答案(可编辑)>由会员分享,可在线阅读,更多相关<C语言程序设计历年统考试题集10套含答案(可编辑)(39页珍藏版)>请在人人文库网上搜索 ...
- c语言程序竞赛,2015年江西理工大学C语言程序设计竞赛(初级组)
JankTao相亲记 解法:排序 #include #include #include #include #include #include #include #include using names ...
最新文章
- Python3中typing模块介绍
- 5、python学习之变量
- DB1:数据库的创建和文件的修改
- VisualBox中增大linux硬盘空间的方法
- ic5141运行出现cannot compile ahdlcmi module解决方案
- devexpress textedit调整文字何文本框的间距_手把手教学:用PPT做效果超赞的文字效果...
- bigdecimal保留4位小数_四年级数学小数的加减乘法知识点汇总,带练习!
- 一个优秀的程序员应该如何提高工作效率?
- RPC failed; curl 56 SSLRead() return error -9806
- stm32 SSI读编码器
- SQL Server2012安装教程
- ict中的it和ct_ICT.Social – IT专业人员的社交网络
- 纳米软件案例之陶瓷样品测试系统,原位观察力学测试纳米压痕仪-扫描电子显微镜SEM联用...
- windows无法访问 计算机打印机,windows无法打开添加打印机解决方法
- c语言1000万位圆周率,如何设计C语言程序输出圆周率小数点后的1000位?请大侠出手啊。...
- Google Earth Engine(GEE)——估计未来人口密度(越南2100年人口预测)
- WEBI上取月的整周
- 前端学习笔记之——使用边框和背景
- 鲁大师怎么查看cpu风扇转速|用鲁大师查看cpu风扇转速的方法
- Android之ListView展示多类型的条目