自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 郝斌--数据结构--动态分配基础复习

#include<stdio.h>#include<malloc.h>int main(){ //静态数组 int a[5] = {4,10,2,8,6}; //动态数组(动态内存分配) int len; printf("请输入你需要分配的数组的长度:len = "); scanf("%d",&len); int * pArr = (int *)malloc(sizeof(int)*len); //上面的操作造成的结果是分配了20个字节,逻辑上的结果为

2021-07-17 22:14:32 177 2

原创 郝斌-数据结构-结构体基础复习

结构体的构造,赋值,函数参数引用一、#include<stdio.h>#include<string.h=>struct Student{ int sid; char name[200]; int age;};int main(){ struct Student st = {1000,"zhangsan",20}; //st.sid = 99; //第一种方式 struct Student * pst; pst = &st;//将st的地

2021-07-17 18:21:45 128

原创 n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来的第几号的那位

解本题在于答题者否能将以上游戏规则用C程序进行操作新手这类题多多模仿操作就会熟练了//n个人围成一圈,顺序排号。从第一个人开始报数(1-3)#include<stdio.h>void num_off(int * q,int n);int main(){ //第一步:构造一个数组,根据用户提供的n人数对数组进行编号 int num[50]; int n,i=1; int * p; p = num; printf("How many people?\n"); scanf("

2021-05-05 14:53:42 720 3

原创 用两种不同类型的指针分别输出——3x4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值

#include<stdio.h>int main(){ int a[3][4]={{1,3,5,7}, {9,11,13,15}, {17,19,21,23}}; /* 方法一:定义一个与二维数组a类型(即int (*)[4])相同!!的指针变量p int (*p)[4]; int i; for(p=a+0;p<a+3;p++)//控制行 { puts("\n"); for(i=0;i<4;i++) printf("%d ",*(*p

2021-05-02 14:22:32 447

原创 指针常错点(野指针,类型不同,未赋初始值)-将数组a中的n个整数按相反顺序存放。

#include<stdio.h>void inv(int * a,int n);int main(){ int i; int a[10]={1,2,3,4,5,6,7,8,9,10}; inv(a,10); for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0;}void inv(int * a,int n){ int * i,* j,* m; int temp; i=a; j=a+n-

2021-05-01 20:16:33 242

原创 给出年、月、日,计算该日是该年的第几天?

//给出年月日,计算这一天是这一年的第几天//考虑对于年:闰年(首先用100来取余,能取余为零,则再用400取余;若不能,则用4取余);对于月:大小月;就这几个要考虑的,日子就十分明显#include<stdio.h>int Feb_days;int month_days;int all_days;void leap_year(int year_n);void month(int month_n);int main(){ //第一步,输入年月日 int year_n,m

2021-04-23 22:06:33 4387

原创 二维数组的定义出错-待调试-输入10个学生的5门课的成绩,分别用函数实现下列功能(计算每个学生的平均数;计算每门课的平均数;计算50个分数中最高的分数对应的学生和课程;计算平均分方差))

vc++显示的错误为:c(19) : error C2059: syntax error : ‘{’思路是还可以的备注:第三个函数的主函数参操作还没有写,到时候要补一下#include<stdio.h>#include<math.h>#define N 10#define M 5//int p,q;//用来存放最高分数的i,j值;打算主函数用两个switch来输出对应的i,j所代表的的信息float var_num;//用来存放学生平均数的方差float a[N][

2021-04-22 22:21:16 612

原创 if语句条件设置错误(已改正)--有一篇文章,共有三行,每行80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格和其他字符。

写题的时候怕是缺氧咯,这种错误也能犯,自省100遍#include<stdio.h>int main(){ int num_A=num_a=num_1=num_blank=num_other=0;//①既然相等就一起作0啊, //分开作真的是,我开始写num_A=0,num_a=0等等,不嫌费劲啊 int i,j; char a[3][80]; //给字符串数组赋值 for(i=0;i&l

2021-04-10 10:59:21 205

原创 出错待调试-找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点

#include<stdio.h>int main(){ int max,min,point=0; int n,m,i,j; int a[4][5]={{2,4,6,8,10},{1,2,3,4,5},{3,6,9,12,15},{4,8,12,16,20}}; for(i=0;i<4;i++) { for(j=0;j<5;j++) { max=a[i][0]; n=i; m=0; if(max<a[i][j])

2021-04-09 16:11:50 113

原创 输出杨辉三角形(要求输出10行)

要输出杨辉三角形肯定要明白怎么定义和赋值,要定义和赋值肯定要先找到其中的规律。 主要发现三个规律:①杨辉三角形可以用数组表示,发现第一行只有一列,第二行有两列,第三行有三列,类推第十行有十列。可以用a[9][9]表示。②分别用i,j来表示数组的下标,a[i][j]。当j=0时,a[i][0]=1;当j=i时,a[i][j]=1,即对角线均为1.③从第三行开始,即a[2]开始,中间的元素等于其上一行上一列与其上一行同一列的元素之和。即a[i][j]=a[i-1][j-1]+a[i-1][j]。数组构建

2021-04-09 09:28:42 14291 3

原创 有一个已经排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中

方法一:傻的很直接的算法(当然是我脑子最直接想到的,反复用if语句,毫无美感【dog】)假设数组a[11](数组中含有10个元素,待会插入一个为防止溢出,故设11个内存空间)已按升序排好,则很容易知道a[0]为最小值,a[9]为最大值,那么插入的数num无非就是三种情况:①比最小值小或等于最小值。则num的值赋给a[0],数组原来的元素全部后退一位。很容易想到先把原来数组的值放到一个空数组中(b[11]),num给a[0]赋值完毕后,a[i+1]=b[i]。②比最大值大。直接放入数组末尾即可。③在最

2021-04-08 23:19:46 5441

原创 用筛选法求1-100的素数

筛选法的求素数本质就是把某个数的倍数先全部剔除,例如1-100,我们只要考虑1-10(100根号)的倍数,1既不是素数也不是质数,先把2的倍数全部剔除,再把3的倍数全部剔除,4及4的倍数已经被2剔除了,接着把5的倍数全部剔除,以此类推。原本考虑是每剔除某个整数的倍数后获得的数组覆盖原数组,但不知到如何操作。直到答案中对凡是倍数将其赋值为零的这个操作让我觉得很灵活。因为题目只要求输出素数,并没有说要有一个全是素数的数组。输出时也十分方便,凡是元素的值为零便跳过。作为新手,要尤其关注这些条件的设定,,有些

2021-04-08 17:25:39 749

原创 用选择法对10个整数进行排序

选择法将同一单个元素与还未比较的元素进行比较:a[0]分别与a[1]-a[9]进行比较,a[0]值确定后,a[1]分别与a[2]-a[9]比较,a[1]值也确定了,接着a[2]分别与a[3]-a[4]比较,依次类推。冒泡法排序,将相邻的元素之间两两比较:a[0]与a[1]比较,假如是要由小往大排,若a[0]>a[1],a[0]与a[1]值互换。a[1]再与a[2]比较,若a[1]<a[2],则值不变,a[2]继续与a[3]比较,依次类推,a[9]的值最终敲定。接着继续a[0]与a[8]之间两两

2021-04-08 17:15:57 2417

原创 C语言初学者常见算法思想(解题思路)---谭浩强C语言第四版

目的新手容易忘记,此篇便于日后复习时集中练习。内容在本篇文章中,我将在评论区写下我在初学C语言中碰到的一些算法(解题思路),主要出自谭浩强C语言第四版,并给出这些算法解决常见问题的程序代码(文章链接),如筛选法求素数,选择法给整数排序等。也会总结一些对初学者而言,不禁赞叹妙啊的代码(简称妙妙码)。...

2021-03-24 19:35:04 622 2

原创 有3个字符串,要求找出其中“最大”者(gets,puts,strcmp函数-字符串的比较,strcpy函数-字符串之间的赋值)

#include<stdio.h>#include<string.h>void main(){ char s[3][20]; char max[20]; int i; for(i=0;i<3;i++) { printf("请输入字符串s[%d]的内容,在20个字节内\n",i); gets[s[i]];//利用get函数可对单个的字符数组进行赋值,内写数组名 } if((strcmp(s[0],s[1]))>0)//strcm

2021-03-24 19:11:42 847 1

原创 将一个二维数组行和列的元素互换,存到另一个二维数组中

#include<stdio.h>void main(){ int a[2][3]={{1,2,3},{4,5,6}}; int i,j; //输出a数组 printf("a[2][3]:\n"); for(i=0;i<2;i++) { if(i==1) { puts("\n"); } for(j=0;j<3;j++) { printf("%d ",a[i][j]); } } puts("\n"); //将a数组的值赋给

2021-03-24 13:14:57 1859

原创 冒泡排序的解释

#include<stdio.h>void sort(int *p,int n);int main(){ int a[6]={12,2,5,7,-1,0}; int i; for(i=0;i<6;i++) printf("%d ",a[i]);//输出原排序 puts("\n"); sort(a,6);//调用函数 for(i=0;i<6;i++) printf("%d ",a[i]);//输出调用函数后的结果 puts("\n"); return 0

2021-03-11 17:05:37 143

原创 将数组a中n个整数按相反顺序存放(出错:野指针)

#include<stdio.h>int main(){ void inve(int * p,int len); int i; int a[10]={3,7,9,11,0,6,7,5,4,2}; printf("此数组的原始排序:\n"); for(i=0;i<10;i++) { printf("%d ",a[i]); }//输出原数组 inve(a,10); printf("输出颠倒后的排序:\n"); for(i=0;i<10;i++) {

2021-03-07 20:30:02 1879

原创 用数组来处理Fibonacci数列问题

#include<stdio.h>int main(){ int a[20]={1,1}; int i; for(i=2;i<20;i++) { a[i]=a[i-1]+a[i-2]; } for(i=0;i<20;i++) { if(i%5==0) { puts("\n"); } printf("%6d",a[i]); } return 0;}思路:1、找到该数列各元素之间的关系并用数组表示(即从第三个元

2021-02-23 18:25:39 1139

原创 有10个地区的面积,要求对它们按从小到大排列。

#include<stdio.h>int main(){ int a[10]={34,67,90,43,124,87,65,99,132,26};//初始化数组 int i,j,min; puts("原数组为:"); for(i=0;i<10;i++)//输出原数组 { printf("%5d",a[i]); } puts("\n"); for(i=0;i<10;i++)//元素大小比较并由小到大排序,逻辑上有混乱 for(j=0;j<10;j

2021-02-09 12:41:18 2036

原创 用C语言二维数组输出一个菱形

#include<stdio.h>int main(){ char diamond[5][5]={{'\0','\0','*'},{'\0','*','\0','*'},{'*','\0','\0','\0','*'},{'\0','*','\0','*'},{'\0','\0','*'}}; //'\0'代表空格 int i,j; for(i=0;i<5;i++) { for(j=0;j<5;j++) { printf("%c",diamond[i][j]

2020-07-31 14:21:42 5638

原创 猜想pow函数原理并编程

#include<stdio.h>void main(){ float pow(float x,int y); float a,c; int b; scanf("%f,%d",&a,&b); c=pow(a,b); printf("sum is %f\n",c);}float pow(float x,int y){ int n; float sum=1; for(n=1;n<=y;n++) { sum=sum*x; } return

2020-07-13 20:43:50 506

原创 输入两个整数,要求输出其中值较大者。要求用函数求出最大值

#include<stdio.h>void main(){ int max(int x,int y);//形参 int a,b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("Max is %d\n",c);}int max(int x,int y)//实参{ int z; z=x>y?x:y;//三步运算符,x是否大于y,是则赋值给z,否则将y值赋值给z return(z);}我犯了一个教科书错

2020-07-13 12:30:11 4901

原创 用函数调用实现上下两行星星符号,中间文字

非常简单,学习函数调用的很好的例子自己随意选句子#include<stdio.h>int main(){ void print_star(); void print_message(); print_star(); print_message(); print_star(); return 0;}void print_star(){ printf("*********************************************\n");}void p

2020-07-13 10:47:24 1186 1

原创 Fibonacci数列公式:已知:a1=a1=1,an=an-1 + an-2。即:1,1,2,3,5,8,13.......

此题较简单,主要考察对一维数组的赋值,数组下标的注意事项,即从a0开始对应1,第20个值的数组应该为a[19].#include<stdio.h>int main(){ int i,a[20]={1,1};//为前两个值赋值,其他值为0 printf("%d\n%d\n",a[0],a[1]); for(i=2;i<20;i++)//重点是确定i的初始值 { a[i]=a[i-1]+a[i-2]; printf("%d\n",a[i]); } ret

2020-07-05 10:27:54 1394

原创 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个, 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上一样。到第10天早上想再吃时,见只剩下1个桃

倒推法即可#include<stdio.h>int main(){ int i; int n=1;//由题可知day10,1个桃,day9,(1+1)x2个桃,类推得下面的公式。 for(i=2;i<=10;i++)//逆推,设day10为day1,原题减少,逆推则增加,day1,1个 n=(n+1)*2; //当n=1,公式推出的是day9=day2(假设),即i从2开始往后推 printf("%d",n); return 0;}...

2020-07-03 21:02:01 4320

原创 一个球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下。求它在第10次落地时

在简单的题上·跌倒过程第一次落地前是自由落体,之后是弹起又落下,高度乘二。答案循环赋值为2,看错为1,为此纠结了将近1小时(o(╥﹏╥)o)#include<stdio.h>int main(){ int n; float sum,i; i=100; i=i/2; sum=100;//第一次的自由落体,100米 for(n=2;n<=10;n++)//从第二次着地开始,每次着地前都有弹起和落下的过程。 { sum=sum+2*i;//第10次着地后前面经过

2020-07-03 20:40:35 24227 5

原创 求一个分数数列,2/1,3/2,5/3,8/5,13/8,21/13,...等这个数列前20项之和

这个比较简单,各个项的和,找到规律就好了。#include<stdio.h>int main(){ int n; float i,j,t,sum=0;//根据题意判断需要哪些变量,以及变量的类型 i=2; j=1;//阅读题目仔细,赋对值 for(n=1;n<=20;n++) { sum = sum+i/j; t = i; i = i+j; j = t; } printf("The sum is %f.\n",sum);/*书本上的参考答案都对浮

2020-07-03 17:09:11 649

原创 C语言求完全数(注意不需要输出因子只需使用前面两个循环)

思路:求某范围内每个数的因子,循环语句,公式-%-==0求因子。故一个循环控制范围,还需一个循环求因子。求偶数n的因子,其最大因子等于n/2,奇数的最大因子小于n/2.故可缩小求因子的范围。#include<stdio.h>int main(){ int n,i,j,s; printf("请输入n的取值范围:\n"); scanf("%d",&n); for(i=2;i<=n;i++)//大循环控制次数 { s=0;//保证和初始值为0,放for循环下面

2020-07-03 16:03:48 508

原创 求水仙花数(博主犯错日常)

正确代码(果然题做多了,类似的分分钟)#include<stdio.h>int main(){ int a,x,y,z; for(a=100;a<1000;a++) { x=(int)(a/100); y=(int)((a-x*100)/10); z=a-x*100-y*10; if(a==x*x*x+y*y*y+z*z*z) printf("%d\t",a); } printf("\n")

2020-07-02 21:20:12 76

原创 求∑(k=1~100)k+∑(k=1~50)k2+∑(k=1~10)

这个算很简单的题,就是有规律的累加。如果要考虑输出小数的话,将int换成float或double,输出也需要修改我犯了特傻的两个错,一个是以为n只能一个循环用一个,其实只要修改对它的限制,没有特定需求的话可多用。另一个是修改了n以后,相应的某些字符未修改。所以还是要细心吧,不能因为简单就感觉很high,会掉入简单的陷阱中,比如字符拼错等#include<stdio.h>int main(){ int n,s1=0,s2=0,s3=0; int sum;

2020-07-02 20:46:01 3729

原创 用C语言/*求1+2!+3!+...+20!的和

①最开始的想法#include<stdio.h>int main(){ int n,j; long tem,sum=0;//最开始想到的是循环套嵌。 for(n=1;n<=20;n++)//第一个循环,控制项次(20),控制每一项的乘积 { tem=1;//前面没有想到把它每次小循环前初始化,参考了一个博主的恍然大悟。 for(j=1;j<=n;j++)//第二个循环,在第一个循环的约束下将每一项分别累积。 { tem=tem

2020-07-02 19:56:35 11746 7

原创 求Sn=a+aa+aaa+...+n个a之间的值,其中a是一个数字,n代表a的位数,n由键盘输入

#include<stdio.h>int main(){int i,n,a;//a代表数字,n代表数位,i用来控制循环次数int sum=0,tem=2;//代表总和printf(“输入a,n的值:\n”);scanf("%d,%d",&a,&n);for(i=1;i<=n;i++)//循环,根据数位控制项数{sum=sum+tem;//和累加tem=tem*10+2;//求每一项(a相同可用,重点就是知道如何表达每一项)}printf(“sum值为

2020-07-02 10:04:39 1147

原创 求一行字符中有多少字母,数字,空格以及其他字符。(我在else if 与语法句之间的空格上总是犯错,怪不得用不好))

#include<stdio.h>int main(){char ch;int letters=0,space=0,number=0,other=0;printf(“请输入一行字符:\n”);while((ch=getchar())!=’\n’){if((ch>=‘a’&&ch<=‘z’)||(ch>=‘A’&&ch<=‘Z’))letters++;else if(ch==’ ')space++;else if(ch

2020-07-01 14:43:30 143

原创 计算两个正整数的最大公约数、最小公倍数

#include<stdio.h>#include<math.h>int main(){int n,m,temp,p,r;printf(“请输入正整数n,m:”);scanf("%d,%d",&n,&m);if(n<m){temp = n;n = m;m = temp;}p=n*m;while(m!=0){r=n%m;n=m;m=r;}printf(“最大公约数是%d,最小公倍数是%d”,n,p/n);return 0;

2020-07-01 14:00:20 553

原创 纪念踏入CSDN的一次写作(FOR 积分)

写文章的界面看起来就十分的高大上。在此,我将记录作为小白学习C语言程序设计(数据结构),及GIS 汤国安版的学习路程,做到一章跟新一次,GIS添加每章涉及到的专业名词解释及相关前言论文,扩展专业知识。C语言则分享学习代码,总结每张重点,分享所练习题,帮助自己理解记忆。开头到此结束,望水博客到此为止。...

2020-03-06 12:45:46 75 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除